<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-3766174345251248841</id><updated>2012-01-25T10:08:27.201+01:00</updated><category term='SPoshMod'/><category term='Personal'/><category term='Social Media'/><category term='DLR'/><category term='Twitter'/><category term='Microsoft'/><category term='BCS'/><category term='Disposing'/><category term='SharePoint Online'/><category term='Search; FAST; Social'/><category term='AJAX'/><category term='BarCamp'/><category term='Infopath'/><category term='popularsocialtags'/><category term='SharePint'/><category term='Azure'/><category term='Interview'/><category term='Web'/><category term='ASP.NET'/><category term='Data One'/><category term='Reporting'/><category term='MVP11'/><category term='SPServices'/><category term='WF'/><category term='Community'/><category term='PowerShell'/><category term='Social Computing'/><category term='Beta'/><category term='SQL Azure'/><category term='MVP Summit; MVP11'/><category term='IronPython'/><category term='Contoso'/><category term='Automation'/><category term='Office 365'/><category term='Mobile'/><category term='LINQ'/><category term='Providers'/><category term='MVP Summit'/><category term='Metadata'/><category term='jQuery'/><category term='SPAC'/><category term='Lookup Field with Picker'/><category term='SPD Actions 2010'/><category term='Cloud Computing'/><category term='Office'/><category term='Exams'/><category term='Web Services'/><category term='SharePoint'/><category term='PowerActivity'/><category term='MVP'/><category term='ilsp'/><category term='ShareCamp'/><category term='Swiss'/><category term='Workflow'/><category term='PowerPoint'/><category term='Search'/><category term='FAST'/><category term='Nintex'/><category term='Web 2.0'/><category term='TechEd'/><category term='Theory'/><category term='Open Source'/><category term='Business'/><category term='C#'/><category term='Development'/><category term='Myths'/><category term='SP2010'/><category term='SOD'/><category term='PowerWebPart'/><category term='Features'/><category term='Agile'/><category term='SharePoint Designer Actions'/><category term='WCF'/><category term='Evolution'/><category term='CollabDays'/><category term='SharePoint Designer'/><category term='Dynamic'/><category term='Tools'/><category term='IronRuby'/><category term='Object Model'/><category term='Crawler'/><category term='Steve Ballmer'/><category term='Wiki'/><category term='JavaScript'/><category term='Europe'/><category term='Event'/><category term='.NET'/><category term='CodePlex'/><title type='text'>iLove SharePoint</title><subtitle type='html'>by Christian Glessner</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://www.ilovesharepoint.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3766174345251248841/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://www.ilovesharepoint.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><link rel='next' type='application/atom+xml' href='http://www.blogger.com/feeds/3766174345251248841/posts/default?start-index=101&amp;max-results=100'/><author><name>Christian</name><uri>http://www.blogger.com/profile/16986066591633364914</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='22' height='32' src='http://bp1.blogger.com/_J6SMSGCmItU/SGAIxRt-lLI/AAAAAAAAABo/EqgbBGe38FM/S220/DSC_0314_small.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>108</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-3766174345251248841.post-3614143231286497478</id><published>2011-11-19T13:13:00.003+01:00</published><updated>2011-11-19T13:18:35.689+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SP2010'/><category scheme='http://www.blogger.com/atom/ns#' term='SharePoint'/><category scheme='http://www.blogger.com/atom/ns#' term='Azure'/><title type='text'>Issue with Azure SDK on a SharePoint Server</title><content type='html'>Few weeks ago I and &lt;a href="http://www.themossshow.com/"&gt;Hilton Giesenow&lt;/a&gt; prepared togheter a SharePoint &amp;amp; Azure session for the TechEd Africa and the European SharePoint conference. During the preparation we discovered an issue running the Azure Compute Emulator on a SharePoint box (Azure SDK 1.5 and 1.6). First it seemed that the user profile service screwed up after you had started the emulator for the first time, but further investigations had shown that many service applications didn’t work properly anymore. The problem was, that the emulator sets the IIS anonymous user account to the application pool’s identity. Many thanks to &lt;a href="http://www.wictorwilen.se/"&gt;Wictor Wilen&lt;/a&gt; for telling us which IIS setting has been affected ( we owe you a pint=&amp;gt;summit 2011 :) &lt;br /&gt;&lt;h1&gt;The Error&lt;/h1&gt;The SharePoint error after you have started the Azure Compute Emulator for the first time:&amp;nbsp; “Object reference not set to an instance of an object”&lt;br /&gt;&lt;a href="http://lh6.ggpht.com/-FJRNS2FcGLA/TsedPFPyrXI/AAAAAAAABoI/yZbtbWGIfmk/s1600-h/image%25255B5%25255D.png"&gt;&lt;img alt="image" border="0" height="330" src="http://lh6.ggpht.com/-kQ9LlhXaPHU/TsedP4fDEcI/AAAAAAAABoQ/OravmnyLNpg/image_thumb%25255B3%25255D.png?imgmax=800" style="background-image: none; border: 0px currentColor; display: inline; margin: 5px 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;" title="image" width="595" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;strong&gt;SharePoint trace:&lt;/strong&gt; &lt;br /&gt;&lt;pre&gt;Unexpected System.NullReferenceException: Object reference not set to an instance of an object.    &lt;br /&gt;at Microsoft.Office.Server.Administration.UserProfileApplicationProxy.get_ApplicationProperties()     &lt;br /&gt;at Microsoft.Office.Server.Administration.UserProfileApplicationProxy.get_PartitionIDs()     &lt;br /&gt;at Microsoft.Office.Server.Administration.UserProfileApplicationProxy.IsAvailable(SPServiceContext serviceContext)     &lt;br /&gt;at Microsoft.Office.Server.WebControls.MyLinksRibbon.get_PortalAvailable()     at Microsoft.Office.Server.WebControls.MyLinksRibbon.EnsureMySiteUrls()     &lt;br /&gt;at Microsoft.Office.Server.WebControls.MyLinksRibbon.get_PortalMySiteUrlAvailable()  &lt;/pre&gt;&lt;br /&gt;&lt;h1&gt;Fix it&lt;/h1&gt;To fix this you have just to set the IIS anonymous user back to IUSR. But unfortunately you have to do this every time after you have run the emulator.&amp;nbsp; &lt;br /&gt;&lt;br /&gt;Open IIS Manager (inetmgr) and do the following steps.&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&lt;a href="http://lh3.ggpht.com/-4YZK7NZ6s80/TsedQovNWNI/AAAAAAAABoU/dJNaW8Y-wGs/s1600-h/image%25255B10%25255D.png"&gt;&lt;img alt="image" border="0" height="372" src="http://lh5.ggpht.com/-zev6tlEeVWU/TsedRUfg_JI/AAAAAAAABog/Dywtr_p-HAw/image_thumb%25255B6%25255D.png?imgmax=800" style="background-image: none; border: 0px currentColor; display: inline; margin: 5px 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;" title="image" width="566" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href="http://lh4.ggpht.com/-ek-9QPl1lQ0/TsedR45dPkI/AAAAAAAABoo/7ATckgNosRc/s1600-h/image%25255B15%25255D.png"&gt;&lt;img alt="image" border="0" height="352" src="http://lh5.ggpht.com/-ouvum1x8lgk/TsedS3mu_zI/AAAAAAAABow/9PtVVtAt808/image_thumb%25255B9%25255D.png?imgmax=800" style="background-image: none; border: 0px currentColor; display: inline; margin: 5px 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;" title="image" width="573" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://lh4.ggpht.com/-u5bsygh27PU/TsedTj1eMII/AAAAAAAABo4/ua3ucV_eodw/s1600-h/image%25255B21%25255D.png"&gt;&lt;img alt="image" border="0" height="529" src="http://lh6.ggpht.com/-7aKv9gCAwME/TsedU2nTFdI/AAAAAAAABpA/1tlrXUJOgeE/image_thumb%25255B13%25255D.png?imgmax=800" style="background-image: none; border: 0px currentColor; display: inline; margin: 5px 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;" title="image" width="570" /&gt;&lt;/a&gt;&lt;br /&gt;Done.&lt;br /&gt;&lt;br /&gt;&lt;h1&gt;Fix it with PowerShell&lt;/h1&gt;If you don’t like clicking like a monkey, you can fix it with PowerShell &lt;img alt="Smile" class="wlEmoticon wlEmoticon-smile" src="http://lh4.ggpht.com/-8u-RMqiNu0k/TsedVoq6wfI/AAAAAAAABpE/yhOi4PCEB8k/wlEmoticon-smile%25255B2%25255D.png?imgmax=800" /&gt;&lt;br /&gt;PS&amp;gt; import-module webadministration&lt;br /&gt;&lt;br /&gt;PS&amp;gt; set-webconfigurationproperty /system.webServer/security/authentication/anonymousAuthentication -name userName -value "IUSR"&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Hope this will save you time.&lt;/strong&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3766174345251248841-3614143231286497478?l=www.ilovesharepoint.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.ilovesharepoint.com/feeds/3614143231286497478/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3766174345251248841&amp;postID=3614143231286497478' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3766174345251248841/posts/default/3614143231286497478'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3766174345251248841/posts/default/3614143231286497478'/><link rel='alternate' type='text/html' href='http://www.ilovesharepoint.com/2011/11/few-weeks-ago-i-and-hilton-giesenow.html' title='Issue with Azure SDK on a SharePoint Server'/><author><name>Christian</name><uri>http://www.blogger.com/profile/16986066591633364914</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='22' height='32' src='http://bp1.blogger.com/_J6SMSGCmItU/SGAIxRt-lLI/AAAAAAAAABo/EqgbBGe38FM/S220/DSC_0314_small.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh6.ggpht.com/-kQ9LlhXaPHU/TsedP4fDEcI/AAAAAAAABoQ/OravmnyLNpg/s72-c/image_thumb%25255B3%25255D.png?imgmax=800' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3766174345251248841.post-638089086344682810</id><published>2011-11-09T09:41:00.007+01:00</published><updated>2011-12-04T12:50:37.983+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Office 365'/><category scheme='http://www.blogger.com/atom/ns#' term='SP2010'/><category scheme='http://www.blogger.com/atom/ns#' term='SharePoint'/><category scheme='http://www.blogger.com/atom/ns#' term='BCS'/><category scheme='http://www.blogger.com/atom/ns#' term='SharePoint Online'/><title type='text'>Programming with External Lists In SharePoint Online (Office 365)</title><content type='html'>In my previous post I announced that SharePoint Online (SPO) in Office 365 now supports Business Connectivity Services (BCS) and shown an &lt;a href="http://www.ilovesharepoint.com/2011/11/connecting-sql-azure-with-sharepoint.html"&gt;example&lt;/a&gt; how to connect SPO via BCS to SQL Azure. In this post we’re going to have a look at what you can do programmatically with external lists in SPO. In general we’ve three options: Sanboxed Solutions, Client Object Model and SharePoint Web Services.   &lt;br /&gt;&lt;h2&gt;Sandboxed Solutions &lt;/h2&gt;Especially using the sanboxed object model to program against&amp;nbsp; external lists in SPO&amp;nbsp; sounds promising. Just imagine, event receivers and workflow actions that can access external systems through an external list. I was really excited! But the disillusionment followed soon. It seems you can’t connect external systems in SPO via BCS from within sandboxed solutions!   &lt;br /&gt;If I try to programmatically access an external list within a sandboxed web part, I get an “The shim execution failed unexpectedly - Access is denied….” exception.  &lt;br /&gt;&lt;pre class="brush:csharp"&gt;SPList externalList = SPContext.Current.Web.Lists["Customers"];&lt;br /&gt;&lt;br /&gt;foreach (SPListItem externalItem in externalList.Items)&lt;br /&gt;{&lt;br /&gt;  writer.Write(externalList.Item["CustomerID"] + ", ");&lt;br /&gt;  writer.Write(externalItem["CompanyName"] + "&amp;lt;br/&amp;gt;");&lt;br /&gt;}&lt;/pre&gt;&lt;br /&gt;&lt;a href="http://lh5.ggpht.com/-_ztsoxMFygw/TrpAXCV-95I/AAAAAAAABnU/dlUj9bVZIdU/s1600-h/SNAGHTML8ab405%25255B6%25255D.png"&gt;&lt;img alt="SNAGHTML8ab405" border="0" height="173" src="http://lh5.ggpht.com/-pQ1EqhgPMyY/TrpAXi1YyNI/AAAAAAAABnc/-FRZOaF0Fak/SNAGHTML8ab405_thumb%25255B3%25255D.png?imgmax=800" style="background-image: none; border: 0px currentColor; display: inline; margin: 5px 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;" title="SNAGHTML8ab405" width="523" /&gt;&lt;/a&gt;&lt;br /&gt;The sandbox stripes out the user’s security token and this means that the credential mapping (e.g. All Users) defined in the Secure Store Service doesn’t work within in the sandbox. The behavior is described in following &lt;a href="http://msdn.microsoft.com/en-us/library/ff798353.aspx"&gt;MSDN article&lt;/a&gt;. The suggested work around is that the managed account that runs the user code proxy service (SPUCWorkerProcessProxy.exe) is mapped to the external credentials. But this is not possible in SPO &lt;img alt="Sad smile" class="wlEmoticon wlEmoticon-sadsmile" src="http://lh5.ggpht.com/-E_bYwbrSCzA/Tro8m2aXP7I/AAAAAAAABnM/Mo9SjkUjQrk/wlEmoticon-sadsmile2.png?imgmax=800" /&gt;  &lt;br /&gt;&lt;h2&gt;Client Object Model&lt;/h2&gt;What indeed does work is using external lists with Client Object Model. There is nice &lt;a href="http://blogs.msdn.com/b/steve_fox/archive/2011/10/05/using-windows-azure-to-connect-lob-data-to-sharepoint-online-using-business-connectivity-services.aspx"&gt;post&lt;/a&gt; about this from &lt;a href="http://blogs.msdn.com/b/steve_fox/"&gt;Steve Fox&lt;/a&gt;.&lt;br /&gt;You can use the SharePoint ECMA Client Object Model to access the external customer list from my previous &lt;a href="http://www.ilovesharepoint.com/2011/11/connecting-sql-azure-with-sharepoint.html"&gt;post&lt;/a&gt;.&lt;br /&gt;&lt;div class="wlWriterEditableSmartContent" id="scid:f32c3428-b7e9-4f15-a8ea-c502c7ff2e88:99c8b421-ea06-4e17-b088-db2be2b2af3b" style="display: inline; float: none; margin: 0px; padding: 0px;"&gt;&lt;pre class="brush: jscript;"&gt;&amp;lt;script type='text/javascript'&amp;gt;&lt;br /&gt;ExecuteOrDelayUntilScriptLoaded(function () {&lt;br /&gt;&lt;br /&gt;  var ctx = new SP.ClientContext.get_current();&lt;br /&gt;  var web = ctx.get_web();&lt;br /&gt;  var list = web.get_lists().getByTitle('Customers');&lt;br /&gt;  var query = new SP.CamlQuery();&lt;br /&gt;&lt;br /&gt;  query.set_viewXml('&amp;lt;View&amp;gt;&amp;lt;ViewFields&amp;gt;&amp;lt;FieldRef´Name="CustomerID" /&amp;gt;&amp;lt;FieldRef Name="CompanyName" /&amp;gt;&amp;lt;/ViewFields&amp;gt;&amp;lt;/View&amp;gt;');&lt;br /&gt;var items = list.getItems(query);&lt;br /&gt;&lt;br /&gt;//If you try to use a "default" ClientContext.Load of ListItem data from an external list, &lt;/pre&gt;&lt;pre class="brush: jscript;"&gt;//you will get the following error: "The given key was not present in the dictionary." Instead, you need to explicitly specify the fields you want in the CamlQuery, &lt;/pre&gt;&lt;pre class="brush: jscript;"&gt;//and also in the ClientContext.Load method.&lt;br /&gt;  ctx.load(items, 'Include(CustomerID, CompanyName)');&lt;br /&gt;&lt;br /&gt;  ctx.executeQueryAsync(&lt;br /&gt;    function (sender, args) {&lt;br /&gt;      var strHtml = "";&lt;br /&gt;      var listItemEnumerator = items.getEnumerator();&lt;br /&gt;      while (listItemEnumerator.moveNext()) {&lt;br /&gt;         var item= listItemEnumerator.get_current();&lt;br /&gt;         strHtml += "&amp;lt;p&amp;gt;" +  item.get_item('CustomerID');&lt;br /&gt;         strHtml += "," + item.get_item('CompanyName') + "&amp;lt;/p&amp;gt;";&lt;br /&gt;      }&lt;br /&gt;      $get('output').innerHTML = strHtml;&lt;br /&gt;&lt;br /&gt;    }, function (sender, args) { alert(args.get_message()); });&lt;br /&gt;&lt;br /&gt; }, "sp.js");&lt;br /&gt;&lt;br /&gt;&amp;lt;/script&amp;gt;&lt;br /&gt;&amp;lt;div id='output'&amp;gt;&amp;lt;/div&amp;gt;&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;&lt;h2&gt;&lt;img alt="SNAGHTML886a49" border="0" height="297" src="http://lh3.ggpht.com/-oGKo0Qyd05o/TrpAZDS4ZAI/AAAAAAAABns/oxFteahXPjc/SNAGHTML886a49_thumb%25255B5%25255D.png?imgmax=800" style="background-image: none; border: 0px currentColor; display: inline; margin: 5px 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;" title="SNAGHTML886a49" width="471" /&gt;&lt;/h2&gt;&lt;h2&gt;Web Services&lt;/h2&gt;Another way to program against the external list in SPO is using the SharePoint built-in &lt;a href="http://msdn.microsoft.com/en-us/library/lists%28v=office.12%29.aspx"&gt;Lists.asmx&lt;/a&gt; web service.&lt;br /&gt;&lt;h2&gt;Summary&lt;/h2&gt;Although it's nice that SharePoint Online in Office 365 now supports BCS, but as developer I really miss the support for the sandboxed object model. I hope Microsoft will add it with the next service update.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3766174345251248841-638089086344682810?l=www.ilovesharepoint.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.ilovesharepoint.com/feeds/638089086344682810/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3766174345251248841&amp;postID=638089086344682810' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3766174345251248841/posts/default/638089086344682810'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3766174345251248841/posts/default/638089086344682810'/><link rel='alternate' type='text/html' href='http://www.ilovesharepoint.com/2011/11/programming-with-external-lists-in.html' title='Programming with External Lists In SharePoint Online (Office 365)'/><author><name>Christian</name><uri>http://www.blogger.com/profile/16986066591633364914</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='22' height='32' src='http://bp1.blogger.com/_J6SMSGCmItU/SGAIxRt-lLI/AAAAAAAAABo/EqgbBGe38FM/S220/DSC_0314_small.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh5.ggpht.com/-pQ1EqhgPMyY/TrpAXi1YyNI/AAAAAAAABnc/-FRZOaF0Fak/s72-c/SNAGHTML8ab405_thumb%25255B3%25255D.png?imgmax=800' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3766174345251248841.post-6192310090131807384</id><published>2011-11-05T13:35:00.005+01:00</published><updated>2011-12-06T09:10:54.678+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Office 365'/><category scheme='http://www.blogger.com/atom/ns#' term='SharePoint'/><category scheme='http://www.blogger.com/atom/ns#' term='SQL Azure'/><category scheme='http://www.blogger.com/atom/ns#' term='Azure'/><category scheme='http://www.blogger.com/atom/ns#' term='BCS'/><category scheme='http://www.blogger.com/atom/ns#' term='SharePoint Online'/><title type='text'>Connecting SQL Azure To SharePoint Online with BCS</title><content type='html'>&lt;span style="color: red;"&gt;&lt;em&gt;&lt;strong&gt;*Diret connections to SQL Azure aren't supported by SharePoint Online.&amp;nbsp;You need&amp;nbsp;a Azure WCF Service as a wrapper around SQL Azure.&amp;nbsp;Steve Fox has written a blog post about this:&amp;nbsp;&lt;span style="color: black;"&gt;&lt;a href="http://blogs.msdn.com/b/steve_fox/archive/2011/11/12/leveraging-wcf-services-to-connect-bcs-with-sharepoint-online.aspx" target="_blank"&gt;Leveraging Windows Azure WCF Services to Connect BCS with SharePoint Online&lt;/a&gt;&lt;/span&gt;.&amp;nbsp;Seems that it had worked was a bug ;-)*&lt;/strong&gt;&lt;/em&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Exciting news SharePoint Online now supports Business Connectivity Services (BCS)! What many people really missed in SharePoint online was the ability to connect to external systems. With the last update Microsoft has enabled the eagerly awaited &lt;var&gt;&lt;/var&gt;BCS support in SharePoint Online. BCS within SharePoint Online supports SQL and WCF connections which you can easily setup with SharePoint Designer. What is not supported are custom .NET connectors build in Visual Studio. The reason for this restriction is the fact that custom .NET assemblies have to be deployed to the global assembly cache on the server and this sort of deployments aren’t allowed in SharePoint Online. &lt;br /&gt;In this post I’m going to show you how to connect SharePoint Online to SQL Azure. &lt;br /&gt;&lt;h2&gt;Setup Northwind Sample DB in SQL Azure&lt;/h2&gt;If you haven’t an Azure account yet, you can request a free trial &lt;a href="http://www.microsoft.com/windowsazure/free-trial/"&gt;here&lt;/a&gt;. Go to the Azure Management Portal and select database on the left pane. Choose your subscription and create a new database server. Enter your admin credentials for the server and add a firewall rule to enable connections from outside (IP Range 0.0.0.0 – 255.255.255.255). Create a new database called Northwind. In the ribbon click on manage to open the SQL Azure Management tool. Login, go to database schema and data and click open query and upload and run the following &lt;a href="http://cglessner.blob.core.windows.net/public/Northwind.sql"&gt;SQL script&lt;/a&gt; (the script has been adapted from the following CodePlex project &lt;a href="http://nwindazure.codeplex.com/"&gt;http://nwindazure.codeplex.com&lt;/a&gt;). &lt;br /&gt;&lt;h2&gt;Configure SharePoint Secure Store&lt;/h2&gt;In order to be able to connect BCS to SQL Azure we must add the SQL credentials to the Secure Store in SharePoint Online. Go to the SharePoint Online Admin Console within the Office 365 Management Portal. You will find two new menu items (Manage Business Data Connectivity and Manage Secure Store Service). &lt;br /&gt;&lt;a href="http://lh6.ggpht.com/-8vyLulS1TU4/TrUtMlPujSI/AAAAAAAABjM/XML1NaM9Q_8/s1600-h/image%25255B3%25255D.png"&gt;&lt;img alt="image" border="0" height="476" src="http://lh5.ggpht.com/-VpPIvoiYqjI/TrUtNbIWZGI/AAAAAAAABjU/5smHvuWfJnE/image_thumb%25255B1%25255D.png?imgmax=800" style="background-image: none; border: 0px currentColor; display: inline; margin: 5px 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;" title="image" width="536" /&gt;&lt;/a&gt;&lt;br /&gt;Go to “Manage Secure Store Service” and create a new Secure Store Application called “Northwind” as shown bellow.&lt;br /&gt;&lt;a href="http://lh4.ggpht.com/-u7IY5jwrR2o/TrUtONO-U_I/AAAAAAAABjY/0nvqCdHDsWw/s1600-h/image%25255B7%25255D.png"&gt;&lt;img alt="image" border="0" height="148" src="http://lh4.ggpht.com/-7FvVwzYbtRk/TrUtOiMMiyI/AAAAAAAABjg/JgAbpWtTPfI/image_thumb%25255B3%25255D.png?imgmax=800" style="background-image: none; border: 0px currentColor; display: inline; margin: 5px 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;" title="image" width="344" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href="http://lh6.ggpht.com/---jMfCp-fYY/TrUtPlWmBCI/AAAAAAAABjs/XaUCm_wqAFY/s1600-h/image%25255B78%25255D.png"&gt;&lt;img alt="image" border="0" height="683" src="http://lh5.ggpht.com/-H-3kmxqvWhA/TrUtQYL2FaI/AAAAAAAABj0/G2EqxfU0xoc/image_thumb%25255B48%25255D.png?imgmax=800" style="background-image: none; border: 0px currentColor; display: inline; margin: 5px 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;" title="image" width="579" /&gt;&lt;/a&gt;&lt;br /&gt;After the application has been created you need to set the credentials. You could create a new user in SQL Azure or you can use the admin user that you have specified when you’ve created the database (not recommended for production).&lt;br /&gt;&lt;a href="http://lh5.ggpht.com/-XK1pSKQ0eFU/TrUtRJkvgrI/AAAAAAAABj4/_uJRlKZzfoI/s1600-h/image%25255B21%25255D.png"&gt;&lt;img alt="image" border="0" height="319" src="http://lh3.ggpht.com/-W4mMcdDxkVA/TrUtRofTzeI/AAAAAAAABkA/IgqzUqIilQ8/image_thumb%25255B13%25255D.png?imgmax=800" style="background-image: none; border: 0px currentColor; display: inline; margin: 5px 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;" title="image" width="531" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href="http://lh5.ggpht.com/-w9AfuqZlTIA/TrUtSAlvcbI/AAAAAAAABkM/yHm3-qAwJcI/s1600-h/image%25255B26%25255D.png"&gt;&lt;img alt="image" border="0" height="217" src="http://lh4.ggpht.com/-Duw_Hwbj4pQ/TrUtS-27FtI/AAAAAAAABkU/tN_Z_mzbvic/image_thumb%25255B16%25255D.png?imgmax=800" style="background-image: none; border: 0px currentColor; display: inline; margin: 5px 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;" title="image" width="533" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;h2&gt;Configure Business Data Connectivity Services&lt;/h2&gt;Before you can create a new external content type you have to give your user admin rights in BCS. Go to “Manage Business Data Connectivity” and&amp;nbsp; select “Set Metadata Store Permissions”.&lt;br /&gt;&lt;a href="http://lh5.ggpht.com/-6ucACDKULfU/TrUtTiG9z9I/AAAAAAAABkY/W-dPmwJQkD0/s1600-h/image%25255B67%25255D.png"&gt;&lt;img alt="image" border="0" height="216" src="http://lh4.ggpht.com/-ER9jCpHbuYQ/TrUtUcwhpSI/AAAAAAAABkk/0lN2DIsFdH8/image_thumb%25255B41%25255D.png?imgmax=800" style="background-image: none; border: 0px currentColor; display: inline; margin: 5px 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;" title="image" width="436" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href="http://lh5.ggpht.com/-36EeZ7WdypM/TrUtU840bwI/AAAAAAAABks/-XotXAalCgE/s1600-h/image%25255B71%25255D.png"&gt;&lt;img alt="image" border="0" height="485" src="http://lh4.ggpht.com/-5VHtC450GYg/TrUtVpnIdwI/AAAAAAAABkw/y6En_4i020A/image_thumb%25255B43%25255D.png?imgmax=800" style="background-image: none; border: 0px currentColor; display: inline; margin: 5px 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;" title="image" width="443" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;h2&gt;Create the External Content Type in SharePoint Designer&lt;/h2&gt;Now we can create a new external content type in SharePoint Designer. Start SharePoint Designer and open a site in SharePoint Online. &lt;br /&gt;&lt;a href="http://lh6.ggpht.com/-gI4Dbpg-SEI/TrUtWH_ALUI/AAAAAAAABk8/QalMV9ECvLk/s1600-h/image%25255B31%25255D.png"&gt;&lt;img alt="image" border="0" height="301" src="http://lh4.ggpht.com/-3z7jhhTh2cw/TrUtXKJG7-I/AAAAAAAABlE/7Tkp-b2eO2c/image_thumb%25255B19%25255D.png?imgmax=800" style="background-image: none; border: 0px currentColor; display: inline; margin: 5px 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;" title="image" width="291" /&gt;&lt;/a&gt;&lt;br /&gt;Name the external content type “Customer” and choose the external system to connect to.   &lt;br /&gt;&lt;a href="http://lh6.ggpht.com/-9IrvguXLRcI/TrUtX8S9ryI/AAAAAAAABlM/J8nZzRs3pvA/s1600-h/image%25255B36%25255D.png"&gt;&lt;img alt="image" border="0" height="220" src="http://lh6.ggpht.com/-TDtVQych_k8/TrUtYgL2S9I/AAAAAAAABlU/4Smj4Nt977w/image_thumb%25255B22%25255D.png?imgmax=800" style="background-image: none; border: 0px currentColor; display: inline; margin: 5px 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;" title="image" width="621" /&gt;&lt;/a&gt;&lt;br /&gt;Choose “SQL Server” for data source type.   &lt;br /&gt;&lt;a href="http://lh4.ggpht.com/-0syFb1kQOR4/TrUtZanJgdI/AAAAAAAABlY/N4q33ve3Ge4/s1600-h/image%25255B40%25255D.png"&gt;&lt;img alt="image" border="0" height="227" src="http://lh6.ggpht.com/-27nJDNhnvJ0/TrUtZ-0t7YI/AAAAAAAABlk/7R1B1YRPfFs/image_thumb%25255B24%25255D.png?imgmax=800" style="background-image: none; border: 0px currentColor; display: inline; margin: 5px 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;" title="image" width="419" /&gt;&lt;/a&gt;&lt;br /&gt;Copy and paste the full qualified name of your Azure SQL Server to the “Database Server” field (you can find the name in the Azure Management Portal). Choose “Connect with Impersonated Custom Identity” and enter “Northwind” (the name that we have defined for our Secure Store Application).&lt;br /&gt;&lt;a href="http://lh6.ggpht.com/-1MqC22G5pwY/TrUtas7aslI/AAAAAAAABls/_1QwgEywKZc/s1600-h/SNAGHTML4499d00%25255B5%25255D.png"&gt;&lt;img alt="SNAGHTML4499d00" border="0" height="299" src="http://lh4.ggpht.com/-shAAQrXcWI0/TrUtbSVheYI/AAAAAAAABl0/rOg6Y1zrjEQ/SNAGHTML4499d00_thumb%25255B2%25255D.png?imgmax=800" style="background-image: none; border: 0px currentColor; display: inline; margin: 5px 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;" title="SNAGHTML4499d00" width="439" /&gt;&lt;/a&gt;    &lt;br /&gt;Create all operations for the Customer table (read list, read, edit, new, delete)&lt;br /&gt;&lt;a href="http://lh4.ggpht.com/-rXBmJmk9zhM/TrUtblK0mTI/AAAAAAAABl4/B2dhrD_Ht94/s1600-h/image%25255B45%25255D.png"&gt;&lt;img alt="image" border="0" height="370" src="http://lh5.ggpht.com/-F2jDGktVtVc/TrUtcUDGNrI/AAAAAAAABmA/qsmXXtnb_UU/image_thumb%25255B27%25255D.png?imgmax=800" style="background-image: none; border: 0px currentColor; display: inline; margin: 5px 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;" title="image" width="429" /&gt;&lt;/a&gt;&lt;br /&gt;Go to the following dialogs with next, next, next and save the external content type. To create a list based on on our new external content type select “Create Lists &amp;amp; Form” (optionally you can decide to generate infopath forms instead of usual SharePoint list forms ).&lt;br /&gt;&lt;a href="http://lh6.ggpht.com/-VOjDaemNaCA/TrUtczPh5BI/AAAAAAAABmI/l5lNMR-jdFM/s1600-h/image%25255B50%25255D.png"&gt;&lt;img alt="image" border="0" height="350" src="http://lh4.ggpht.com/-1lW5mBkXRTk/TrUtdYdF6RI/AAAAAAAABmM/OEUhJevmD_U/image_thumb%25255B30%25255D.png?imgmax=800" style="background-image: none; border: 0px currentColor; display: inline; margin: 5px 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;" title="image" width="430" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;h2&gt;Set Permissions for The External Content Type&lt;/h2&gt;To define who has access to our new external content type go back to the SharePoint Online Admin Console and navigate to “Manage Business Data Connectivity” and choose set permissions.&lt;br /&gt;&lt;a href="http://lh4.ggpht.com/-YLfy3uHPGYA/TrUtd9oXXzI/AAAAAAAABmY/7jXpbDlnf14/s1600-h/image%25255B79%25255D.png"&gt;&lt;img alt="image" border="0" height="399" src="http://lh5.ggpht.com/-h4afhn_MCUk/TrUtelnJx7I/AAAAAAAABmk/Ofa-47AjW3k/image_thumb%25255B49%25255D.png?imgmax=800" style="background-image: none; border: 0px currentColor; display: inline; margin: 5px 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;" title="image" width="750" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href="http://lh4.ggpht.com/-5OyTcMfImmI/TrUtfYKpDOI/AAAAAAAABmo/A5adS-5MqeM/s1600-h/image%25255B77%25255D.png"&gt;&lt;img alt="image" border="0" height="461" src="http://lh6.ggpht.com/-ldAt-8iQtEM/TrUtfwR9B2I/AAAAAAAABmw/PAzW_MAETSo/image_thumb%25255B47%25255D.png?imgmax=800" style="background-image: none; border: 0px currentColor; display: inline; margin: 5px 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;" title="image" width="487" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;h2&gt;Test It&lt;/h2&gt;Now check that everything works as expected. Open your team site and navigate to your new external list.&lt;br /&gt;&lt;a href="http://lh5.ggpht.com/-005gbvRNz3Q/TrUtgoVZ_vI/AAAAAAAABm8/NGD_YqXL_Mw/s1600-h/image%25255B76%25255D.png"&gt;&lt;img alt="image" border="0" height="350" src="http://lh3.ggpht.com/-lKw2avGh-38/TrUthb4wdoI/AAAAAAAABnE/mvLUe9csb7w/image_thumb%25255B46%25255D.png?imgmax=800" style="background-image: none; border: 0px currentColor; display: inline; margin: 5px 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;" title="image" width="788" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;h2&gt;The End&lt;/h2&gt;In my next post I’ll show you how to connect an Azure WCF Service to SharePoint Online.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3766174345251248841-6192310090131807384?l=www.ilovesharepoint.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.ilovesharepoint.com/feeds/6192310090131807384/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3766174345251248841&amp;postID=6192310090131807384' title='12 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3766174345251248841/posts/default/6192310090131807384'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3766174345251248841/posts/default/6192310090131807384'/><link rel='alternate' type='text/html' href='http://www.ilovesharepoint.com/2011/11/connecting-sql-azure-with-sharepoint.html' title='Connecting SQL Azure To SharePoint Online with BCS'/><author><name>Christian</name><uri>http://www.blogger.com/profile/16986066591633364914</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='22' height='32' src='http://bp1.blogger.com/_J6SMSGCmItU/SGAIxRt-lLI/AAAAAAAAABo/EqgbBGe38FM/S220/DSC_0314_small.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh5.ggpht.com/-VpPIvoiYqjI/TrUtNbIWZGI/AAAAAAAABjU/5smHvuWfJnE/s72-c/image_thumb%25255B1%25255D.png?imgmax=800' height='72' width='72'/><thr:total>12</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3766174345251248841.post-1733713796874684387</id><published>2011-07-05T15:20:00.003+02:00</published><updated>2011-07-06T11:23:56.016+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SP2010'/><category scheme='http://www.blogger.com/atom/ns#' term='SharePoint'/><category scheme='http://www.blogger.com/atom/ns#' term='Disposing'/><category scheme='http://www.blogger.com/atom/ns#' term='C#'/><title type='text'>The Perfect Loop - Looping Through All Webs in A Site Collection</title><content type='html'>Adequate memory management and disposing are still hot topics in SharePoint 2010. That’s why I would like to share some insights about iterating through a SPWebCollection.&lt;br /&gt;Take a look at the following snippets:&lt;br /&gt;using(SPSite site = new SPSite(“http://myserver/mysitecol”)    &lt;br /&gt;{     &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; foreach(SPWeb web in site.AllWebs)     &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {     &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Console.WriteLine(web.ServerRelativeUrl + “: ” + web.Title);     &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; web.Dispose();     &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }     &lt;br /&gt;}    &lt;br /&gt;&lt;em&gt;-or in SP context -&lt;/em&gt;&lt;br /&gt;foreach(SPWeb web in SPContext.Current.Site.AllWebs)    &lt;br /&gt;{&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; writer.Write(web.ServerRelativeUrl + “: ” + web.Title +”,”);    &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; web.Dispose();&amp;nbsp; &lt;br /&gt;}     &lt;br /&gt;&lt;br /&gt;&lt;h2&gt;what happens in the background&lt;/h2&gt;The call to the AllWebs property will instantiate a new instance of SPWebCollection (if there is not all ready an instance). &lt;br /&gt;When the iterator moves to the first item in the SPWebCollection and the collection has not already been initialized it will executes a single unmanaged API call to fetch the most important meta data for all the webs within the site collection. You could say it loads the “Header” data of the SPWeb objects. The unmanaged COM API is wrapped within an internal class called SPRequest. You could say SPRequest is kind of a data access layer for SharePoint. SPRequest will then call the stored procedure “proc_ListAllWebsOfSite” to load the required data from the content database.&lt;br /&gt;After the above operation has finished you can access the following properties of each web without any further database round-trip:&amp;nbsp; &lt;br /&gt;&lt;ol&gt;&lt;ul&gt;&lt;li&gt;ID &lt;/li&gt;&lt;li&gt;Title &lt;/li&gt;&lt;li&gt;Name &lt;/li&gt;&lt;li&gt;ServerRelativeUrl &lt;/li&gt;&lt;li&gt;Description &lt;/li&gt;&lt;li&gt;Language &lt;/li&gt;&lt;li&gt;Created &lt;/li&gt;&lt;li&gt;Modified &lt;/li&gt;&lt;li&gt;Template &lt;/li&gt;&lt;li&gt;Configuration &lt;/li&gt;&lt;li&gt;UserIsWebAdmin &lt;/li&gt;&lt;li&gt;UIVersion &lt;/li&gt;&lt;li&gt;MasterUrl &lt;/li&gt;&lt;li&gt;CustomMasterUrl &lt;/li&gt;&lt;li&gt;MeetingCount (in case of an SPMeeting web)        &lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/ol&gt;As long as you only access this properties the loop will be fast. &lt;br /&gt;&lt;strong&gt;Output from the developer dashboard when I run the above snippet in a web part.&lt;/strong&gt; &lt;strong&gt;My test site collection contains 1000 websites.      &lt;br /&gt;&lt;/strong&gt;&lt;a href="http://lh6.ggpht.com/-ArJTVSGpW0I/ThMPi2xHhHI/AAAAAAAABic/r7PYBHF3SYY/s1600-h/image10.png"&gt;&lt;img alt="image" border="0" height="251" src="http://lh3.ggpht.com/-CMuEwk3enWQ/ThMPjhQl2qI/AAAAAAAABig/1nmt7iHpuAg/image_thumb6.png?imgmax=800" style="background-image: none; border-width: 0px; display: inline; margin: 5px 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;" title="image" width="584" /&gt;&lt;/a&gt;&amp;nbsp; &lt;br /&gt;&lt;br /&gt;&lt;h2&gt;BUT What happens when I access a property that has not been loaded YET?&lt;/h2&gt;When you access a property of the SPWeb that has not already been loaded (maybe by accident or through lack of knowledge)&amp;nbsp;by “proc_ListAllWebsOfSite”, SharePoint&amp;nbsp; will reload them (lazy loading). You could say the “body” of the SPWeb gets loaded.&lt;br /&gt;using(SPSite site = new SPSite(“http://myserver/mysitecol”)    &lt;br /&gt;{     &lt;br /&gt;&amp;nbsp;&amp;nbsp; foreach(SPWeb web in site.AllWebs)     &lt;br /&gt;&amp;nbsp;&amp;nbsp; {     &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Console.WriteLine(web.&lt;span style="background-color: yellow;"&gt;AlternateCssUrl&lt;/span&gt; + “: ” + web.Title);    &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; web.Dispose();&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp; }     &lt;br /&gt;}&lt;br /&gt;&lt;strong&gt;Output from the developer dashboard when I run the above snippet in a web part. &lt;/strong&gt;    &lt;br /&gt;&lt;a href="http://lh6.ggpht.com/-c_L9-Dc12pY/ThMPkGhiBWI/AAAAAAAABik/j3eBFRuRDt8/s1600-h/SNAGHTML17ae3ff8.png"&gt;&lt;img alt="SNAGHTML17ae3ff" border="0" height="664" src="http://lh6.ggpht.com/-DQd7uDUinW0/ThMPlBked7I/AAAAAAAABio/ey-wrhgFsDk/SNAGHTML17ae3ff_thumb5.png?imgmax=800" style="background-image: none; border-width: 0px; display: inline; margin: 5px 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;" title="SNAGHTML17ae3ff" width="545" /&gt;&lt;/a&gt;&amp;nbsp; &lt;br /&gt;&lt;span style="background-color: yellow;"&gt;The first thing that we notice is that SharePoint now does a database request for every SPWeb in the loop! Very expensive regards resource usage and performance!&lt;/span&gt;    &lt;br /&gt;&lt;a href="http://lh4.ggpht.com/-DBfQv0ZvroI/ThMPl46VnfI/AAAAAAAABis/lyP4r6Bx0bI/s1600-h/SNAGHTML17edca06.png"&gt;&lt;img alt="SNAGHTML17edca0" border="0" height="501" src="http://lh3.ggpht.com/-OuR8ml3GSkA/ThMPmnwl7KI/AAAAAAAABiw/NPscqAzenHs/SNAGHTML17edca0_thumb3.png?imgmax=800" style="background-image: none; border-width: 0px; display: inline; margin: 5px 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;" title="SNAGHTML17edca0" width="548" /&gt;&lt;/a&gt;&amp;nbsp; &lt;br /&gt;Secondly we notice that that there are now many SPRequest allocations. Internally each SPWeb gets it’s own instance of SPRequest assigned when its “body” will be loaded. The call of web.Dispose() helps to get rid of them as fast as possible.&lt;br /&gt;&lt;h2&gt;New in SharePoint 2010 – SPWebInfo&lt;/h2&gt;As you could see it is really bad for the performance when you access an unloaded (body) property of SPWeb.&amp;nbsp; That’s one of the reasons why the SharePoint team adds a new property called &lt;a href="http://msdn.microsoft.com/en-us/library/microsoft.sharepoint.spwebcollection.websinfo.aspx" target="_blank"&gt;WebsInfo&lt;/a&gt; to SPWebCollection. WebsInfo is a collection of &lt;a href="http://msdn.microsoft.com/en-us/library/microsoft.sharepoint.spwebinfo_members.aspx" target="_blank"&gt;SPWebInfo&lt;/a&gt; and each SPWebInfo object is a wrapper for the SPWeb header that will be loaded in the background when you access the AllWebs collection of the SPSite. Internally SPWebInfo will not allocate any SPRequest and must not be disposed. &lt;br /&gt;&lt;strong&gt;&lt;em&gt;The perfect loop:&lt;/em&gt;&lt;/strong&gt;&lt;br /&gt;&lt;span style="background-color: yellow;"&gt;&lt;span style="background-color: yellow;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;strong&gt;using(SPSite site = new SPSite(“http://myserver/mysitecol”)          &lt;br /&gt;{           &lt;br /&gt;&amp;nbsp;&amp;nbsp; foreach(SPWebInfo webInfo in site.AllWebs.WebsInfo)           &lt;br /&gt;&amp;nbsp;&amp;nbsp; {           &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Console.WriteLine(webInfo.ServerRelativeUrl + “: ” + web.Title);&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp; }           &lt;br /&gt;}&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;&lt;em&gt;-or in LINQ&lt;/em&gt;&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;using(SPSite site = new SPSite(“http://myserver/mysitecol”)      &lt;br /&gt;{       &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; site.AllWebs.WebsInfo.ForEach(wi=&amp;gt;Console.WriteLine(wi.ServerRelativeUrl));&lt;/strong&gt;&lt;strong&gt;     &lt;br /&gt;}&lt;/strong&gt;&lt;span style="background-color: yellow;"&gt;     &lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;a href="http://lh5.ggpht.com/-xKzUZ7N7X-w/ThMPnR5wvbI/AAAAAAAABi0/5eW4JO7KALE/s1600-h/image%25255B5%25255D.png"&gt;&lt;img alt="image" border="0" height="223" src="http://lh6.ggpht.com/-8fTb2sjlTBQ/ThMPoLeicuI/AAAAAAAABi4/x8xvRgmui4c/image_thumb%25255B2%25255D.png?imgmax=800" style="background-image: none; border: 0px currentColor; display: inline; margin: 5px 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;" title="image" width="564" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3766174345251248841-1733713796874684387?l=www.ilovesharepoint.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.ilovesharepoint.com/feeds/1733713796874684387/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3766174345251248841&amp;postID=1733713796874684387' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3766174345251248841/posts/default/1733713796874684387'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3766174345251248841/posts/default/1733713796874684387'/><link rel='alternate' type='text/html' href='http://www.ilovesharepoint.com/2011/07/perfect-loop-looping-through-all-webs.html' title='The Perfect Loop - Looping Through All Webs in A Site Collection'/><author><name>Christian</name><uri>http://www.blogger.com/profile/16986066591633364914</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='22' height='32' src='http://bp1.blogger.com/_J6SMSGCmItU/SGAIxRt-lLI/AAAAAAAAABo/EqgbBGe38FM/S220/DSC_0314_small.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh3.ggpht.com/-CMuEwk3enWQ/ThMPjhQl2qI/AAAAAAAABig/1nmt7iHpuAg/s72-c/image_thumb6.png?imgmax=800' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3766174345251248841.post-108387369660486465</id><published>2011-06-01T23:21:00.001+02:00</published><updated>2011-06-01T23:23:51.446+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SP2010'/><category scheme='http://www.blogger.com/atom/ns#' term='Lookup Field with Picker'/><category scheme='http://www.blogger.com/atom/ns#' term='SharePoint'/><category scheme='http://www.blogger.com/atom/ns#' term='CodePlex'/><category scheme='http://www.blogger.com/atom/ns#' term='Open Source'/><category scheme='http://www.blogger.com/atom/ns#' term='ilsp'/><title type='text'>Lookup Field With Picker 2010</title><content type='html'>&lt;p&gt;I’m glad to announce the new release of &lt;a href="http://ilovesharepoint.codeplex.com/releases/view/44989" target="_blank"&gt;Lookup Field with Picker&lt;/a&gt;. Lookup Field with Picker allows you to select list items from a lookup list via a searchable and configurable picker dialog.&lt;/p&gt;  &lt;h1&gt;Features&lt;/h1&gt;  &lt;ul&gt;   &lt;li&gt;&lt;strong&gt;NEW Cross site picking&lt;/strong&gt; &lt;/li&gt;    &lt;li&gt;Single- and multi-Selection Mode &lt;/li&gt;    &lt;li&gt;Search in picker dialog &lt;/li&gt;    &lt;li&gt;Search Operators: equals, not equal, contains, begins with, greater than, greater or equal than, less than, less or equal than. &lt;/li&gt;    &lt;li&gt;Select fields you would like to search for. &lt;/li&gt;    &lt;li&gt;Relationship behaviors &lt;/li&gt;    &lt;li&gt;Supports default values (constants, current user id and default values by url param, useful for 1-n scenarios) must be configured via PowerShell &lt;/li&gt;    &lt;li&gt;Languages: English, German &lt;/li&gt;    &lt;li&gt;Delivered as SharePoint Solution Package (WSP)      &lt;br /&gt;&lt;/li&gt; &lt;/ul&gt;  &lt;h2&gt;&lt;/h2&gt;  &lt;h4&gt;Not supported&lt;/h4&gt;  &lt;ul&gt;   &lt;li&gt;Document Information Panel &lt;/li&gt;    &lt;li&gt;Data Sheet Views &lt;/li&gt; &lt;/ul&gt;  &lt;h4&gt;Requirements&lt;/h4&gt;  &lt;ul&gt;   &lt;li&gt;SharePoint Foundation 2010 &lt;/li&gt; &lt;/ul&gt;  &lt;h4&gt;&lt;/h4&gt;  &lt;h1&gt;Installation&lt;/h1&gt;  &lt;p&gt;Install Lookup Field with Picker with the following commands within the SharePoint Management Shell:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;em&gt;&lt;strong&gt;Add-SPSolution &amp;quot;C:\Install\iLoveSharePoint.Fields.LookupFieldWithPicker.wsp&amp;quot;&lt;/strong&gt;&lt;/em&gt; &lt;/li&gt;    &lt;li&gt;&lt;em&gt;&lt;strong&gt;Install-SPSolution ilovesharepoint.fields.lookupfieldwithpicker.wsp -WebApplication http://myserver –GACDeployment&lt;/strong&gt;&lt;/em&gt; &lt;/li&gt; &lt;/ul&gt;  &lt;h1&gt;Usage&lt;/h1&gt;  &lt;h2&gt;Add Lookup Field with Picker&lt;/h2&gt;  &lt;p&gt;You can add a Lookup Field with Picker column either to a list or a content type.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh5.ggpht.com/-N1w-XSRh6nY/TeatP8v7ooI/AAAAAAAABhc/4rhpQzCZgzM/s1600-h/image%25255B4%25255D.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; margin: 5px 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://lh4.ggpht.com/-Tz6DK61UMts/TeatQTpUPxI/AAAAAAAABhg/-PwDAK0VApY/image_thumb%25255B2%25255D.png?imgmax=800" width="524" height="403" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;h2&gt;Configure Lookup Field with Picker&lt;/h2&gt;  &lt;p&gt;Select the source site, list and column of the lookup.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh3.ggpht.com/-Km7Qp1M0qkA/TeatQ1BJFaI/AAAAAAAABhk/89jJLxT9Kfc/s1600-h/image%25255B8%25255D.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; margin: 5px 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://lh4.ggpht.com/-mvQxlQ5c-Hc/TeatRR2gw_I/AAAAAAAABho/vRrVr_GPT6A/image_thumb%25255B4%25255D.png?imgmax=800" width="223" height="150" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Select the columns that you want to use for search in picker dialog.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh5.ggpht.com/-zMJuS0MROCA/TeatRkxcsHI/AAAAAAAABhs/pp8yMaHySmk/s1600-h/image%25255B13%25255D.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; margin: 5px 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://lh3.ggpht.com/-Zpigps_uUUE/TeatSXjLUMI/AAAAAAAABhw/VvmThvDOVmk/image_thumb%25255B7%25255D.png?imgmax=800" width="321" height="334" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Select the additional columns that you want to show in the target list.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh3.ggpht.com/-2G9IJee1vhk/TeatSmNiafI/AAAAAAAABh0/SjKU1McPuOQ/s1600-h/image%25255B17%25255D.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; margin: 5px 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://lh4.ggpht.com/-7weaEfqhls0/TeatTOypRqI/AAAAAAAABh4/VcJHSWYIXy4/image_thumb%25255B9%25255D.png?imgmax=800" width="324" height="165" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Choose whether multiple values are allowed or not and what should be happen when the picked item is being deleted. The relationship behaviors “restrict delete” and “cascade delete” are only supported for the single lookup mode &lt;em&gt;(Known Issue: When you choose multiple values and select any other relationship behavior than “none” an exception will be thrown). &lt;/em&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh4.ggpht.com/-UOIY0zgK1BU/TeatTXhQjMI/AAAAAAAABh8/IeRR3X92CI4/s1600-h/image%25255B24%25255D.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://lh5.ggpht.com/-p8r5O0XQPI8/TeatTpHUn0I/AAAAAAAABiA/06V_UXihSyo/image_thumb%25255B12%25255D.png?imgmax=800" width="205" height="134" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;h2&gt;&lt;/h2&gt;  &lt;h2&gt;Pick Items&lt;/h2&gt;  &lt;p&gt;Open the picker dialog (or enter a value and resolve the entity with the first button)&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh4.ggpht.com/--TtMRMFEAJM/TeatUDoRFtI/AAAAAAAABiE/B9Lxxz7rn2o/s1600-h/image%25255B35%25255D.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; margin: 5px 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://lh3.ggpht.com/-HjT4n7hDMBQ/TeatUvxaWPI/AAAAAAAABiI/Z9p5KrmRq4U/image_thumb%25255B19%25255D.png?imgmax=800" width="645" height="368" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Find a and select item(s) within the picker dialog.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh6.ggpht.com/-AtX8AoPGLhQ/TeatVCC3uRI/AAAAAAAABiM/0qGFE7GU4k0/s1600-h/image%25255B42%25255D.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; margin: 5px 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://lh5.ggpht.com/-RZqdocf2gDM/TeatVick5TI/AAAAAAAABiQ/sEJjY_Vwe14/image_thumb%25255B24%25255D.png?imgmax=800" width="643" height="579" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Done.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh6.ggpht.com/-QLuexG4PxiQ/TeatVxisMAI/AAAAAAAABiU/FOYsoXSQsGU/s1600-h/image%25255B47%25255D.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; margin: 5px 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://lh3.ggpht.com/-dLHKE-IBMOY/TeatWUWv4mI/AAAAAAAABiY/9slQP2xoiQg/image_thumb%25255B27%25255D.png?imgmax=800" width="647" height="365" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3766174345251248841-108387369660486465?l=www.ilovesharepoint.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.ilovesharepoint.com/feeds/108387369660486465/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3766174345251248841&amp;postID=108387369660486465' title='9 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3766174345251248841/posts/default/108387369660486465'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3766174345251248841/posts/default/108387369660486465'/><link rel='alternate' type='text/html' href='http://www.ilovesharepoint.com/2011/06/lookup-field-with-picker-2010.html' title='Lookup Field With Picker 2010'/><author><name>Christian</name><uri>http://www.blogger.com/profile/16986066591633364914</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='22' height='32' src='http://bp1.blogger.com/_J6SMSGCmItU/SGAIxRt-lLI/AAAAAAAAABo/EqgbBGe38FM/S220/DSC_0314_small.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh4.ggpht.com/-Tz6DK61UMts/TeatQTpUPxI/AAAAAAAABhg/-PwDAK0VApY/s72-c/image_thumb%25255B2%25255D.png?imgmax=800' height='72' width='72'/><thr:total>9</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3766174345251248841.post-5128271844289895052</id><published>2011-04-15T20:39:00.001+02:00</published><updated>2011-04-15T20:45:15.088+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='JavaScript'/><category scheme='http://www.blogger.com/atom/ns#' term='MVP'/><category scheme='http://www.blogger.com/atom/ns#' term='Interview'/><category scheme='http://www.blogger.com/atom/ns#' term='SPServices'/><category scheme='http://www.blogger.com/atom/ns#' term='Web Services'/><category scheme='http://www.blogger.com/atom/ns#' term='SharePoint'/><category scheme='http://www.blogger.com/atom/ns#' term='CodePlex'/><category scheme='http://www.blogger.com/atom/ns#' term='MVP Summit'/><category scheme='http://www.blogger.com/atom/ns#' term='MVP11'/><category scheme='http://www.blogger.com/atom/ns#' term='jQuery'/><title type='text'>Interview With Marc Anderson, Founder OF the SPServiceS Library on COdeplex</title><content type='html'>&lt;p&gt;To follow up on my previous post “&lt;a href="http://www.ilovesharepoint.com/2011/04/sharepoint-is-most-searched-term-on.html"&gt;SharePoint is the #1 Search Term On Codeplex&lt;/a&gt;”, I’ve published a short interview with SharePoint MVP Marc Anderson, founder of the &lt;a href="http://spservices.codeplex.com" target="_blank"&gt;jQuery Library for SharePoint Web Services (SPServices)&lt;/a&gt; library on &lt;a href="http://www.codeplex.com" target="_blank"&gt;CodePlex&lt;/a&gt;. Currently &lt;a href="http://spservices.codeplex.com" target="_blank"&gt;SPServices&lt;/a&gt; is the top SharePoint search result on CodePlex (sorted by relevance). Interested in what Marc has to say:&lt;/p&gt;  &lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:5737277B-5D6D-4f48-ABFC-DD9C333F4C5D:64eda9aa-7de5-4459-94b2-d7973e5666ec" class="wlWriterEditableSmartContent"&gt;&lt;div id="5d2d0409-7b7e-42cf-bf50-ada073e84b44" style="margin: 0px; padding: 0px; display: inline;"&gt;&lt;div&gt;&lt;a href="http://www.youtube.com/watch?v=qhap3fit424" target="_new"&gt;&lt;img src="http://lh4.ggpht.com/_J6SMSGCmItU/TaiQyhOBpaI/AAAAAAAABhE/5KGqJZPIgJ0/video8495b0a7ad20%5B12%5D.jpg?imgmax=800" style="border-style: none" galleryimg="no" onload="var downlevelDiv = document.getElementById('5d2d0409-7b7e-42cf-bf50-ada073e84b44'); downlevelDiv.innerHTML = &amp;quot;&amp;lt;div&amp;gt;&amp;lt;object width=\&amp;quot;745\&amp;quot; height=\&amp;quot;419\&amp;quot;&amp;gt;&amp;lt;param name=\&amp;quot;movie\&amp;quot; value=\&amp;quot;http://www.youtube.com/v/qhap3fit424?hl=en&amp;amp;hd=1\&amp;quot;&amp;gt;&amp;lt;\/param&amp;gt;&amp;lt;embed src=\&amp;quot;http://www.youtube.com/v/qhap3fit424?hl=en&amp;amp;hd=1\&amp;quot; type=\&amp;quot;application/x-shockwave-flash\&amp;quot; width=\&amp;quot;745\&amp;quot; height=\&amp;quot;419\&amp;quot;&amp;gt;&amp;lt;\/embed&amp;gt;&amp;lt;\/object&amp;gt;&amp;lt;\/div&amp;gt;&amp;quot;;" alt=""&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3766174345251248841-5128271844289895052?l=www.ilovesharepoint.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.ilovesharepoint.com/feeds/5128271844289895052/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3766174345251248841&amp;postID=5128271844289895052' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3766174345251248841/posts/default/5128271844289895052'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3766174345251248841/posts/default/5128271844289895052'/><link rel='alternate' type='text/html' href='http://www.ilovesharepoint.com/2011/04/interview-with-marc-anderson-founder-of.html' title='Interview With Marc Anderson, Founder OF the SPServiceS Library on COdeplex'/><author><name>Christian</name><uri>http://www.blogger.com/profile/16986066591633364914</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='22' height='32' src='http://bp1.blogger.com/_J6SMSGCmItU/SGAIxRt-lLI/AAAAAAAAABo/EqgbBGe38FM/S220/DSC_0314_small.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh4.ggpht.com/_J6SMSGCmItU/TaiQyhOBpaI/AAAAAAAABhE/5KGqJZPIgJ0/s72-c/video8495b0a7ad20%5B12%5D.jpg?imgmax=800' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3766174345251248841.post-3815913597806854633</id><published>2011-04-10T22:30:00.003+02:00</published><updated>2011-04-11T07:32:09.006+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='MVP'/><category scheme='http://www.blogger.com/atom/ns#' term='SharePoint'/><category scheme='http://www.blogger.com/atom/ns#' term='CodePlex'/><category scheme='http://www.blogger.com/atom/ns#' term='MVP Summit'/><category scheme='http://www.blogger.com/atom/ns#' term='MVP11'/><title type='text'>SharePoint is the #1 Search Term On Codeplex!</title><content type='html'>&lt;p&gt;Short interview with Matt Hawley one of the developers of Microsoft’s open source platform &lt;a href="http://www.codeplex.com" target="_blank"&gt;CodePlex&lt;/a&gt;. What’s the most searched term on CodePlex? &lt;/p&gt;&lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:5737277B-5D6D-4f48-ABFC-DD9C333F4C5D:8058e5a4-95d6-45ce-ab07-5ed2b6fbc82b" class="wlWriterEditableSmartContent"&gt;&lt;div id="5a430890-5b2d-4564-9337-154130a0d243" style="margin: 0px; padding: 0px; display: inline;"&gt;&lt;div&gt;&lt;a href="http://www.youtube.com/watch?v=mOm2f-F21wE" target="_new"&gt;&lt;img src="http://lh4.ggpht.com/_J6SMSGCmItU/TaIZGqEToHI/AAAAAAAABg4/5mKzlKGUpPY/video0c26dd24ac66%5B24%5D.jpg?imgmax=800" style="border-style: none" galleryimg="no" onload="var downlevelDiv = document.getElementById('5a430890-5b2d-4564-9337-154130a0d243'); downlevelDiv.innerHTML = &amp;quot;&amp;lt;div&amp;gt;&amp;lt;object width=\&amp;quot;640\&amp;quot; height=\&amp;quot;360\&amp;quot;&amp;gt;&amp;lt;param name=\&amp;quot;movie\&amp;quot; value=\&amp;quot;http://www.youtube.com/v/mOm2f-F21wE?hl=en&amp;amp;hd=1\&amp;quot;&amp;gt;&amp;lt;\/param&amp;gt;&amp;lt;embed src=\&amp;quot;http://www.youtube.com/v/mOm2f-F21wE?hl=en&amp;amp;hd=1\&amp;quot; type=\&amp;quot;application/x-shockwave-flash\&amp;quot; width=\&amp;quot;640\&amp;quot; height=\&amp;quot;360\&amp;quot;&amp;gt;&amp;lt;\/embed&amp;gt;&amp;lt;\/object&amp;gt;&amp;lt;\/div&amp;gt;&amp;quot;;" alt=""&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;h2&gt;The current top ten SharePoint projects on CodePlex (10.04.2011)   &lt;br /&gt;&lt;/h2&gt;&lt;table border="0" cellspacing="0" cellpadding="0"&gt;&lt;tbody&gt;&lt;tr&gt;       &lt;td&gt;         &lt;p&gt;&lt;strong&gt;1.&lt;/strong&gt; &lt;a href="http://spservices.codeplex.com/"&gt;&lt;b&gt;jQuery Library for SharePoint Web Services&lt;/b&gt;&lt;/a&gt;            &lt;br /&gt;&lt;br /&gt;This is a jQuery library which abstracts SharePoint's Web Services and makes them easier to use. It also includes functions which use the various Web Service operations to provide more useful (and cool) capabilities. It works entirely client side and requires no server install. &lt;/p&gt;&lt;p&gt;Page Views: 12544* | Downloads: 821* | Started: Aug 19 2009 | Contributors: &lt;a href="http://spservices.codeplex.com/team/view"&gt;2&lt;/a&gt; | License: &lt;a href="http://spservices.codeplex.com/license"&gt;MIT&lt;/a&gt;            &lt;br /&gt;Tags: &lt;a href="http://www.codeplex.com/site/search?query=SharePoint&amp;amp;sortBy=Relevance&amp;amp;licenses=|&amp;amp;ac=8"&gt;Sharepoint&lt;/a&gt;, &lt;a href="http://www.codeplex.com/site/search?query=SharePoint&amp;amp;sortBy=Relevance&amp;amp;licenses=|&amp;amp;ac=8"&gt;jQuery&lt;/a&gt;, &lt;a href="http://www.codeplex.com/site/search?query=SharePoint&amp;amp;sortBy=Relevance&amp;amp;licenses=|&amp;amp;ac=8"&gt;Ajax&lt;/a&gt;, &lt;a href="http://www.codeplex.com/site/search?query=SharePoint&amp;amp;sortBy=Relevance&amp;amp;licenses=|&amp;amp;ac=8"&gt;Cascading dropdown&lt;/a&gt;, &lt;a href="http://www.codeplex.com/site/search?query=SharePoint&amp;amp;sortBy=Relevance&amp;amp;licenses=|&amp;amp;ac=8"&gt;client-side&lt;/a&gt;, &lt;a href="http://www.codeplex.com/site/search?query=SharePoint&amp;amp;sortBy=Relevance&amp;amp;licenses=|&amp;amp;ac=8"&gt;SharePoint 2007&lt;/a&gt;, &lt;a href="http://www.codeplex.com/site/search?query=SharePoint&amp;amp;sortBy=Relevance&amp;amp;licenses=|&amp;amp;ac=8"&gt;Sharepoint Designer&lt;/a&gt;&lt;/p&gt;&lt;/td&gt;        &lt;td&gt;&lt;/td&gt;     &lt;/tr&gt;&lt;tr&gt;       &lt;td&gt;&lt;/td&gt;     &lt;/tr&gt;&lt;tr&gt;       &lt;td&gt;         &lt;p&gt;&lt;strong&gt;2.&lt;/strong&gt; &lt;a href="http://cks.codeplex.com/"&gt;&lt;b&gt;Community Kit for SharePoint&lt;/b&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;The Community Kit for SharePoint is a set of best practices, templates, Web Parts, tools, and source code that enables practically anyone to create a community website based on SharePoint technology for practically any group of people with a common interest. &lt;/p&gt;&lt;p&gt;Page Views: 6716* | Downloads: 1009* | Started: Feb 20 2007 | Contributors: &lt;a href="http://cks.codeplex.com/team/view"&gt;76&lt;/a&gt; | License: &lt;a href="http://cks.codeplex.com/license"&gt;Ms-PL&lt;/a&gt;&lt;/p&gt;&lt;p&gt;Tags: &lt;a href="http://www.codeplex.com/site/search?query=SharePoint&amp;amp;sortBy=Relevance&amp;amp;licenses=|&amp;amp;ac=8"&gt;Sharepoint&lt;/a&gt;, &lt;a href="http://www.codeplex.com/site/search?query=SharePoint&amp;amp;sortBy=Relevance&amp;amp;licenses=|&amp;amp;ac=8"&gt;CKS&lt;/a&gt;, &lt;a href="http://www.codeplex.com/site/search?query=SharePoint&amp;amp;sortBy=Relevance&amp;amp;licenses=|&amp;amp;ac=8"&gt;Community&lt;/a&gt;, &lt;a href="http://www.codeplex.com/site/search?query=SharePoint&amp;amp;sortBy=Relevance&amp;amp;licenses=|&amp;amp;ac=8"&gt;WSS&lt;/a&gt;, &lt;a href="http://www.codeplex.com/site/search?query=SharePoint&amp;amp;sortBy=Relevance&amp;amp;licenses=|&amp;amp;ac=8"&gt;community kit&lt;/a&gt;, &lt;a href="http://www.codeplex.com/site/search?query=SharePoint&amp;amp;sortBy=Relevance&amp;amp;licenses=|&amp;amp;ac=8"&gt;Community Kit for Sh&lt;/a&gt;, &lt;a href="http://www.codeplex.com/site/search?query=SharePoint&amp;amp;sortBy=Relevance&amp;amp;licenses=|&amp;amp;ac=8"&gt;SharePoint 2007&lt;/a&gt;&lt;/p&gt;&lt;/td&gt;        &lt;td&gt;&lt;/td&gt;     &lt;/tr&gt;&lt;tr&gt;       &lt;td&gt;&lt;/td&gt;     &lt;/tr&gt;&lt;tr&gt;       &lt;td&gt;         &lt;p&gt;&lt;strong&gt;3.&lt;/strong&gt; &lt;a href="http://spm.codeplex.com/"&gt;&lt;b&gt;SharePoint&lt;/b&gt;&lt;b&gt; Manager 2010&lt;/b&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;The SharePoint Manager 2010 is a SharePoint object model explorer. It enables you to browse every site on the local farm and view every property. It also enables you to change the properties. &lt;/p&gt;&lt;p&gt;Page Views: 6550* | Downloads: 1394* | Started: Dec 12 2007 | Contributors: &lt;a href="http://spm.codeplex.com/team/view"&gt;4&lt;/a&gt; | License: &lt;a href="http://spm.codeplex.com/license"&gt;GPLv2&lt;/a&gt;&lt;/p&gt;&lt;p&gt;Tags: &lt;a href="http://www.codeplex.com/site/search?query=SharePoint&amp;amp;sortBy=Relevance&amp;amp;licenses=|&amp;amp;ac=8"&gt;Sharepoint&lt;/a&gt;, &lt;a href="http://www.codeplex.com/site/search?query=SharePoint&amp;amp;sortBy=Relevance&amp;amp;licenses=|&amp;amp;ac=8"&gt;SharePoint 2010&lt;/a&gt;, &lt;a href="http://www.codeplex.com/site/search?query=SharePoint&amp;amp;sortBy=Relevance&amp;amp;licenses=|&amp;amp;ac=8"&gt;administration&lt;/a&gt;, &lt;a href="http://www.codeplex.com/site/search?query=SharePoint&amp;amp;sortBy=Relevance&amp;amp;licenses=|&amp;amp;ac=8"&gt;QTG&lt;/a&gt;, &lt;a href="http://www.codeplex.com/site/search?query=SharePoint&amp;amp;sortBy=Relevance&amp;amp;licenses=|&amp;amp;ac=8"&gt;QTG-SharePoint&lt;/a&gt;, &lt;a href="http://www.codeplex.com/site/search?query=SharePoint&amp;amp;sortBy=Relevance&amp;amp;licenses=|&amp;amp;ac=8"&gt;SharePoint 2007&lt;/a&gt;, &lt;a href="http://www.codeplex.com/site/search?query=SharePoint&amp;amp;sortBy=Relevance&amp;amp;licenses=|&amp;amp;ac=8"&gt;SharePoint Adm Tools&lt;/a&gt;&lt;/p&gt;&lt;/td&gt;        &lt;td&gt;&lt;/td&gt;     &lt;/tr&gt;&lt;tr&gt;       &lt;td&gt;&lt;/td&gt;     &lt;/tr&gt;&lt;tr&gt;       &lt;td&gt;         &lt;p&gt;&lt;strong&gt;4.&lt;/strong&gt; &lt;a href="http://wspbuilder.codeplex.com/"&gt;&lt;b&gt;WSPBuilder (SharePoint WSP tool)&lt;/b&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;A SharePoint Solution Package (WSP) creation tool for WSS 3.0 &amp;amp; MOSS 2007 No more manually creating the manifest.xml file. No more manually specifying the DDF file. No more using the makecab.exe application. &lt;/p&gt;&lt;p&gt;Page Views: 6237* | Downloads: 955* | Started: Jun 4 2007 | Contributors: &lt;a href="http://wspbuilder.codeplex.com/team/view"&gt;4&lt;/a&gt; | License: &lt;a href="http://wspbuilder.codeplex.com/license"&gt;GPLv2&lt;/a&gt;&lt;/p&gt;&lt;p&gt;Tags: &lt;a href="http://www.codeplex.com/site/search?query=SharePoint&amp;amp;sortBy=Relevance&amp;amp;licenses=|&amp;amp;ac=8"&gt;Sharepoint&lt;/a&gt;, &lt;a href="http://www.codeplex.com/site/search?query=SharePoint&amp;amp;sortBy=Relevance&amp;amp;licenses=|&amp;amp;ac=8"&gt;WSPBuilder&lt;/a&gt;, &lt;a href="http://www.codeplex.com/site/search?query=SharePoint&amp;amp;sortBy=Relevance&amp;amp;licenses=|&amp;amp;ac=8"&gt;Sharepoint Tools&lt;/a&gt;, &lt;a href="http://www.codeplex.com/site/search?query=SharePoint&amp;amp;sortBy=Relevance&amp;amp;licenses=|&amp;amp;ac=8"&gt;MOSS&lt;/a&gt;, &lt;a href="http://www.codeplex.com/site/search?query=SharePoint&amp;amp;sortBy=Relevance&amp;amp;licenses=|&amp;amp;ac=8"&gt;MOSS webparts&lt;/a&gt;, &lt;a href="http://www.codeplex.com/site/search?query=SharePoint&amp;amp;sortBy=Relevance&amp;amp;licenses=|&amp;amp;ac=8"&gt;myfav&lt;/a&gt;, &lt;a href="http://www.codeplex.com/site/search?query=SharePoint&amp;amp;sortBy=Relevance&amp;amp;licenses=|&amp;amp;ac=8"&gt;QTG&lt;/a&gt;&lt;/p&gt;&lt;/td&gt;        &lt;td&gt;&lt;/td&gt;     &lt;/tr&gt;&lt;tr&gt;       &lt;td&gt;&lt;/td&gt;     &lt;/tr&gt;&lt;tr&gt;       &lt;td&gt;         &lt;p&gt;&lt;strong&gt;5.&lt;/strong&gt; &lt;a href="http://spdactivities.codeplex.com/"&gt;&lt;b&gt;Useful Sharepoint Designer Custom Workflow Activities&lt;/b&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;This project takes aim at making it easier to create advanced workflows using Sharepoint Designer by providing a set of custom workflow activities. &lt;/p&gt;&lt;p&gt;Page Views: 5601* | Downloads: 322* | Started: Jul 4 2007 | Contributors: &lt;a href="http://spdactivities.codeplex.com/team/view"&gt;8&lt;/a&gt; | License: &lt;a href="http://spdactivities.codeplex.com/license"&gt;Ms-PL&lt;/a&gt;&lt;/p&gt;&lt;p&gt;Tags: &lt;a href="http://www.codeplex.com/site/search?query=SharePoint&amp;amp;sortBy=Relevance&amp;amp;licenses=|&amp;amp;ac=8"&gt;Sharepoint&lt;/a&gt;, &lt;a href="http://www.codeplex.com/site/search?query=SharePoint&amp;amp;sortBy=Relevance&amp;amp;licenses=|&amp;amp;ac=8"&gt;workflow&lt;/a&gt;, &lt;a href="http://www.codeplex.com/site/search?query=SharePoint&amp;amp;sortBy=Relevance&amp;amp;licenses=|&amp;amp;ac=8"&gt;MOSS&lt;/a&gt;, &lt;a href="http://www.codeplex.com/site/search?query=SharePoint&amp;amp;sortBy=Relevance&amp;amp;licenses=|&amp;amp;ac=8"&gt;Sharepoint Designer&lt;/a&gt;, &lt;a href="http://www.codeplex.com/site/search?query=SharePoint&amp;amp;sortBy=Relevance&amp;amp;licenses=|&amp;amp;ac=8"&gt;WSS&lt;/a&gt;, &lt;a href="http://www.codeplex.com/site/search?query=SharePoint&amp;amp;sortBy=Relevance&amp;amp;licenses=|&amp;amp;ac=8"&gt;SharePoint Workflow&lt;/a&gt;, &lt;a href="http://www.codeplex.com/site/search?query=SharePoint&amp;amp;sortBy=Relevance&amp;amp;licenses=|&amp;amp;ac=8"&gt;SPD&lt;/a&gt;&lt;/p&gt;&lt;/td&gt;        &lt;td&gt;&lt;/td&gt;     &lt;/tr&gt;&lt;tr&gt;       &lt;td&gt;&lt;/td&gt;     &lt;/tr&gt;&lt;tr&gt;       &lt;td&gt;         &lt;p&gt;&lt;strong&gt;6.&lt;/strong&gt; &lt;a href="http://slk.codeplex.com/"&gt;&lt;b&gt;SharePoint&lt;/b&gt;&lt;b&gt; Learning Kit&lt;/b&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;The SharePoint Learning Kit is a community-source eLearning tool that integrates with Learning Gateway. Rich content is supported with full SCORM 2004 compliance and basic functions are supported for any electronic document. &lt;/p&gt;&lt;p&gt;Page Views: 4297* | Downloads: 326* | Started: Jun 30 2006 | Contributors: &lt;a href="http://slk.codeplex.com/team/view"&gt;5&lt;/a&gt; | License: &lt;a href="http://slk.codeplex.com/license"&gt;Ms-PL&lt;/a&gt;&lt;/p&gt;&lt;p&gt;Tags: &lt;a href="http://www.codeplex.com/site/search?query=SharePoint&amp;amp;sortBy=Relevance&amp;amp;licenses=|&amp;amp;ac=8"&gt;Sharepoint&lt;/a&gt;, &lt;a href="http://www.codeplex.com/site/search?query=SharePoint&amp;amp;sortBy=Relevance&amp;amp;licenses=|&amp;amp;ac=8"&gt;SLK&lt;/a&gt;, &lt;a href="http://www.codeplex.com/site/search?query=SharePoint&amp;amp;sortBy=Relevance&amp;amp;licenses=|&amp;amp;ac=8"&gt;SharePoint Learning &lt;/a&gt;, &lt;a href="http://www.codeplex.com/site/search?query=SharePoint&amp;amp;sortBy=Relevance&amp;amp;licenses=|&amp;amp;ac=8"&gt;Education&lt;/a&gt;, &lt;a href="http://www.codeplex.com/site/search?query=SharePoint&amp;amp;sortBy=Relevance&amp;amp;licenses=|&amp;amp;ac=8"&gt;Learning&lt;/a&gt;, &lt;a href="http://www.codeplex.com/site/search?query=SharePoint&amp;amp;sortBy=Relevance&amp;amp;licenses=|&amp;amp;ac=8"&gt;scorm&lt;/a&gt;, &lt;a href="http://www.codeplex.com/site/search?query=SharePoint&amp;amp;sortBy=Relevance&amp;amp;licenses=|&amp;amp;ac=8"&gt;eLearning&lt;/a&gt;&lt;/p&gt;&lt;/td&gt;        &lt;td&gt;&lt;/td&gt;     &lt;/tr&gt;&lt;tr&gt;       &lt;td&gt;&lt;/td&gt;     &lt;/tr&gt;&lt;tr&gt;       &lt;td&gt;         &lt;p&gt;&lt;strong&gt;7.&lt;/strong&gt; &lt;a href="http://startermasterpages.codeplex.com/"&gt;&lt;b&gt;Starter Master Pages for SharePoint 2010&lt;/b&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;Starter Master Pages for SharePoint 2010 are a clean, commented starting point for creating your own SharePoint 2010 branding. Starter Master Pages were known previously as Minimal Master Pages in SharePoint 2007. &lt;/p&gt;&lt;p&gt;Page Views: 3025* | Downloads: 617* | Started: Nov 18 2009 | Contributors: &lt;a href="http://startermasterpages.codeplex.com/team/view"&gt;1&lt;/a&gt; | License: &lt;a href="http://startermasterpages.codeplex.com/license"&gt;Ms-RL&lt;/a&gt;&lt;/p&gt;&lt;p&gt;Tags: &lt;a href="http://www.codeplex.com/site/search?query=SharePoint&amp;amp;sortBy=Relevance&amp;amp;licenses=|&amp;amp;ac=8"&gt;SharePoint 2010&lt;/a&gt;, &lt;a href="http://www.codeplex.com/site/search?query=SharePoint&amp;amp;sortBy=Relevance&amp;amp;licenses=|&amp;amp;ac=8"&gt;masterpage&lt;/a&gt;, &lt;a href="http://www.codeplex.com/site/search?query=SharePoint&amp;amp;sortBy=Relevance&amp;amp;licenses=|&amp;amp;ac=8"&gt;Sharepoint&lt;/a&gt;, &lt;a href="http://www.codeplex.com/site/search?query=SharePoint&amp;amp;sortBy=Relevance&amp;amp;licenses=|&amp;amp;ac=8"&gt;2010&lt;/a&gt;, &lt;a href="http://www.codeplex.com/site/search?query=SharePoint&amp;amp;sortBy=Relevance&amp;amp;licenses=|&amp;amp;ac=8"&gt;Branding&lt;/a&gt;, &lt;a href="http://www.codeplex.com/site/search?query=SharePoint&amp;amp;sortBy=Relevance&amp;amp;licenses=|&amp;amp;ac=8"&gt;Master Page&lt;/a&gt;, &lt;a href="http://www.codeplex.com/site/search?query=SharePoint&amp;amp;sortBy=Relevance&amp;amp;licenses=|&amp;amp;ac=8"&gt;minimal master page&lt;/a&gt;&lt;/p&gt;&lt;/td&gt;        &lt;td&gt;&lt;/td&gt;     &lt;/tr&gt;&lt;tr&gt;       &lt;td&gt;&lt;/td&gt;     &lt;/tr&gt;&lt;tr&gt;       &lt;td&gt;         &lt;p&gt;&lt;strong&gt;8.&lt;/strong&gt; &lt;a href="http://sharepointpsscripts.codeplex.com/"&gt;&lt;b&gt;SharePoint&lt;/b&gt;&lt;b&gt; Management PowerShell scripts&lt;/b&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;This project site stores all the PowerShell scripts developed for SharePoint farms (WSS or MOSS) management. Each script is available independently and can be modified as desired &lt;/p&gt;&lt;p&gt;Page Views: 2170* | Downloads: 581* | Started: Jan 11 2009 | Contributors: &lt;a href="http://sharepointpsscripts.codeplex.com/team/view"&gt;9&lt;/a&gt; | License: &lt;a href="http://sharepointpsscripts.codeplex.com/license"&gt;Ms-PL&lt;/a&gt;&lt;/p&gt;&lt;p&gt;Tags: &lt;a href="http://www.codeplex.com/site/search?query=SharePoint&amp;amp;sortBy=Relevance&amp;amp;licenses=|&amp;amp;ac=8"&gt;Sharepoint&lt;/a&gt;, &lt;a href="http://www.codeplex.com/site/search?query=SharePoint&amp;amp;sortBy=Relevance&amp;amp;licenses=|&amp;amp;ac=8"&gt;powershell&lt;/a&gt;, &lt;a href="http://www.codeplex.com/site/search?query=SharePoint&amp;amp;sortBy=Relevance&amp;amp;licenses=|&amp;amp;ac=8"&gt;management&lt;/a&gt;, &lt;a href="http://www.codeplex.com/site/search?query=SharePoint&amp;amp;sortBy=Relevance&amp;amp;licenses=|&amp;amp;ac=8"&gt;MOSS&lt;/a&gt;, &lt;a href="http://www.codeplex.com/site/search?query=SharePoint&amp;amp;sortBy=Relevance&amp;amp;licenses=|&amp;amp;ac=8"&gt;PowerShell Scripts&lt;/a&gt;, &lt;a href="http://www.codeplex.com/site/search?query=SharePoint&amp;amp;sortBy=Relevance&amp;amp;licenses=|&amp;amp;ac=8"&gt;scripts&lt;/a&gt;, &lt;a href="http://www.codeplex.com/site/search?query=SharePoint&amp;amp;sortBy=Relevance&amp;amp;licenses=|&amp;amp;ac=8"&gt;Sharepoint Admin&lt;/a&gt;&lt;/p&gt;&lt;/td&gt;        &lt;td&gt;&lt;/td&gt;     &lt;/tr&gt;&lt;tr&gt;       &lt;td&gt;&lt;/td&gt;     &lt;/tr&gt;&lt;tr&gt;       &lt;td&gt;         &lt;p&gt;&lt;strong&gt;9.&lt;/strong&gt; &lt;a href="http://spg.codeplex.com/"&gt;&lt;b&gt;patterns &amp;amp; practices SharePoint Guidance&lt;/b&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;We develop guidance to help devs and architects build applications on SharePoint. &lt;/p&gt;&lt;p&gt;Page Views: 2688* | Downloads: 456* | Started: Jul 30 2008 | Contributors: &lt;a href="http://spg.codeplex.com/team/view"&gt;8&lt;/a&gt; | License: &lt;a href="http://spg.codeplex.com/license"&gt;Custom&lt;/a&gt;&lt;/p&gt;&lt;p&gt;Tags: &lt;a href="http://www.codeplex.com/site/search?query=SharePoint&amp;amp;sortBy=Relevance&amp;amp;licenses=|&amp;amp;ac=8"&gt;Sharepoint&lt;/a&gt;, &lt;a href="http://www.codeplex.com/site/search?query=SharePoint&amp;amp;sortBy=Relevance&amp;amp;licenses=|&amp;amp;ac=8"&gt;patterns &amp;amp; practices&lt;/a&gt;, &lt;a href="http://www.codeplex.com/site/search?query=SharePoint&amp;amp;sortBy=Relevance&amp;amp;licenses=|&amp;amp;ac=8"&gt;SharePoint 2007&lt;/a&gt;, &lt;a href="http://www.codeplex.com/site/search?query=SharePoint&amp;amp;sortBy=Relevance&amp;amp;licenses=|&amp;amp;ac=8"&gt;Guidance&lt;/a&gt;, &lt;a href="http://www.codeplex.com/site/search?query=SharePoint&amp;amp;sortBy=Relevance&amp;amp;licenses=|&amp;amp;ac=8"&gt;MOSS&lt;/a&gt;, &lt;a href="http://www.codeplex.com/site/search?query=SharePoint&amp;amp;sortBy=Relevance&amp;amp;licenses=|&amp;amp;ac=8"&gt;SharePoint Architect&lt;/a&gt;, &lt;a href="http://www.codeplex.com/site/search?query=SharePoint&amp;amp;sortBy=Relevance&amp;amp;licenses=|&amp;amp;ac=8"&gt;SharePoint Dev Tools&lt;/a&gt;&lt;/p&gt;&lt;/td&gt;        &lt;td&gt;&lt;/td&gt;     &lt;/tr&gt;&lt;tr&gt;       &lt;td&gt;&lt;/td&gt;     &lt;/tr&gt;&lt;tr&gt;       &lt;td&gt;         &lt;p&gt;&lt;strong&gt;10.&lt;/strong&gt; &lt;a href="http://ilovesharepoint.codeplex.com/"&gt;&lt;b&gt;iLove SharePoint&lt;/b&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;SharePoint Tools: Lookup Field with Picker, PowerShell Scripts, SharePoint Designer Actions, PowerActivity, PowerWebPart, PowerEventReceiver... ...you will love it too. &lt;/p&gt;&lt;p&gt;Page Views: 2526* | Downloads: 251* | Started: Jul 2 2008 | Contributors: &lt;a href="http://ilovesharepoint.codeplex.com/team/view"&gt;2&lt;/a&gt; | License: &lt;a href="http://ilovesharepoint.codeplex.com/license"&gt;GPLv2&lt;/a&gt;&lt;/p&gt;&lt;p&gt;Tags: &lt;a href="http://www.codeplex.com/site/search?query=SharePoint&amp;amp;sortBy=Relevance&amp;amp;licenses=|&amp;amp;ac=8"&gt;Sharepoint&lt;/a&gt;, &lt;a href="http://www.codeplex.com/site/search?query=SharePoint&amp;amp;sortBy=Relevance&amp;amp;licenses=|&amp;amp;ac=8"&gt;powershell&lt;/a&gt;, &lt;a href="http://www.codeplex.com/site/search?query=SharePoint&amp;amp;sortBy=Relevance&amp;amp;licenses=|&amp;amp;ac=8"&gt;.NET&lt;/a&gt;, &lt;a href="http://www.codeplex.com/site/search?query=SharePoint&amp;amp;sortBy=Relevance&amp;amp;licenses=|&amp;amp;ac=8"&gt;lookup&lt;/a&gt;, &lt;a href="http://www.codeplex.com/site/search?query=SharePoint&amp;amp;sortBy=Relevance&amp;amp;licenses=|&amp;amp;ac=8"&gt;MOSS&lt;/a&gt;, &lt;a href="http://www.codeplex.com/site/search?query=SharePoint&amp;amp;sortBy=Relevance&amp;amp;licenses=|&amp;amp;ac=8"&gt;Sharepoint Designer&lt;/a&gt;, &lt;a href="http://www.codeplex.com/site/search?query=SharePoint&amp;amp;sortBy=Relevance&amp;amp;licenses=|&amp;amp;ac=8"&gt;wcf&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;At least I’m in the top ten &lt;img style="border-bottom-style: none; border-left-style: none; border-top-style: none; border-right-style: none" class="wlEmoticon wlEmoticon-smile" alt="Smile" src="http://lh5.ggpht.com/_J6SMSGCmItU/TaITW21HEYI/AAAAAAAABgs/PhXUQwc_kuI/wlEmoticon-smile%5B2%5D.png?imgmax=800" /&gt;&lt;/strong&gt;&lt;/p&gt;&lt;/td&gt;        &lt;td&gt;&lt;/td&gt;     &lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3766174345251248841-3815913597806854633?l=www.ilovesharepoint.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.ilovesharepoint.com/feeds/3815913597806854633/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3766174345251248841&amp;postID=3815913597806854633' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3766174345251248841/posts/default/3815913597806854633'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3766174345251248841/posts/default/3815913597806854633'/><link rel='alternate' type='text/html' href='http://www.ilovesharepoint.com/2011/04/sharepoint-is-most-searched-term-on.html' title='SharePoint is the #1 Search Term On Codeplex!'/><author><name>Christian</name><uri>http://www.blogger.com/profile/16986066591633364914</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='22' height='32' src='http://bp1.blogger.com/_J6SMSGCmItU/SGAIxRt-lLI/AAAAAAAAABo/EqgbBGe38FM/S220/DSC_0314_small.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh4.ggpht.com/_J6SMSGCmItU/TaIZGqEToHI/AAAAAAAABg4/5mKzlKGUpPY/s72-c/video0c26dd24ac66%5B24%5D.jpg?imgmax=800' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3766174345251248841.post-6920924288279144901</id><published>2011-04-03T21:45:00.001+02:00</published><updated>2011-04-03T21:45:59.041+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='MVP'/><category scheme='http://www.blogger.com/atom/ns#' term='SharePoint'/><category scheme='http://www.blogger.com/atom/ns#' term='Community'/><title type='text'>MVP Award PART II</title><content type='html'>&lt;p&gt;I’m glad to announce that I have been awarded to a SharePoint &lt;a href="http://mvp.support.microsoft.com"&gt;MVP&lt;/a&gt; for the second time. &lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh5.ggpht.com/_J6SMSGCmItU/TZjOdG0s-iI/AAAAAAAABgg/zelbmzs0UGA/s1600-h/MVP_Horizontal_FullColor%5B2%5D.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; margin: 5px 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="MVP_Horizontal_FullColor" border="0" alt="MVP_Horizontal_FullColor" src="http://lh4.ggpht.com/_J6SMSGCmItU/TZjOdk9ZjHI/AAAAAAAABgk/8cpUbO8kIDw/MVP_Horizontal_FullColor_thumb.png?imgmax=800" width="244" height="101" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Thanks to &lt;a href="http://www.microsoft.com"&gt;Microsoft&lt;/a&gt; for the recognition of my effort and to the amazing SharePoint Community around the world for their support. &lt;/p&gt;  &lt;p&gt;See you…&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3766174345251248841-6920924288279144901?l=www.ilovesharepoint.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.ilovesharepoint.com/feeds/6920924288279144901/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3766174345251248841&amp;postID=6920924288279144901' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3766174345251248841/posts/default/6920924288279144901'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3766174345251248841/posts/default/6920924288279144901'/><link rel='alternate' type='text/html' href='http://www.ilovesharepoint.com/2011/04/mvp-award-part-ii.html' title='MVP Award PART II'/><author><name>Christian</name><uri>http://www.blogger.com/profile/16986066591633364914</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='22' height='32' src='http://bp1.blogger.com/_J6SMSGCmItU/SGAIxRt-lLI/AAAAAAAAABo/EqgbBGe38FM/S220/DSC_0314_small.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh4.ggpht.com/_J6SMSGCmItU/TZjOdk9ZjHI/AAAAAAAABgk/8cpUbO8kIDw/s72-c/MVP_Horizontal_FullColor_thumb.png?imgmax=800' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3766174345251248841.post-604595633855077004</id><published>2011-04-03T21:22:00.002+02:00</published><updated>2011-04-10T21:29:43.797+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='MVP'/><category scheme='http://www.blogger.com/atom/ns#' term='Interview'/><category scheme='http://www.blogger.com/atom/ns#' term='SP2010'/><category scheme='http://www.blogger.com/atom/ns#' term='SharePoint'/><category scheme='http://www.blogger.com/atom/ns#' term='MVP Summit; MVP11'/><category scheme='http://www.blogger.com/atom/ns#' term='Community'/><title type='text'>Why Andrew Connell loves sharepoint</title><content type='html'>&lt;p&gt;Short interview with &lt;a href="http://www.andrewconnell.com/index.aspx"&gt;Andrew Connell&lt;/a&gt; (SharePoint MVP) about SharePoint 2010 on the &lt;a href="http://www.2011mvpsummit.com/"&gt;MVP Summit 2011&lt;/a&gt; Product Group Evening at the &lt;a href="http://www.bowlluckystrike.com/locations/info/?id=19"&gt;Lucky Strike bar&lt;/a&gt;. &lt;/p&gt;&lt;p&gt;&lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:5737277B-5D6D-4f48-ABFC-DD9C333F4C5D:2ec2dd75-d05b-4b0d-b83e-984a230c6888" class="wlWriterEditableSmartContent"&gt;&lt;div id="e117419d-d777-455c-9981-894038181b8a" style="margin: 0px; padding: 0px; display: inline;"&gt;&lt;div&gt;&lt;a href="http://www.youtube.com/watch?v=4Z36bZXr2NE&amp;amp;feature=youtube_gdata_player" target="_new"&gt;&lt;img src="http://lh6.ggpht.com/_J6SMSGCmItU/TZjJC7y6f7I/AAAAAAAABgc/f54MD9jp09c/video23f841befab9%5B15%5D.jpg?imgmax=800" style="border-style: none" galleryimg="no" onload="var downlevelDiv = document.getElementById('e117419d-d777-455c-9981-894038181b8a'); downlevelDiv.innerHTML = &amp;quot;&amp;lt;div&amp;gt;&amp;lt;object width=\&amp;quot;620\&amp;quot; height=\&amp;quot;348\&amp;quot;&amp;gt;&amp;lt;param name=\&amp;quot;movie\&amp;quot; value=\&amp;quot;http://www.youtube.com/v/4Z36bZXr2NE?hl=en&amp;amp;hd=1\&amp;quot;&amp;gt;&amp;lt;\/param&amp;gt;&amp;lt;embed src=\&amp;quot;http://www.youtube.com/v/4Z36bZXr2NE?hl=en&amp;amp;hd=1\&amp;quot; type=\&amp;quot;application/x-shockwave-flash\&amp;quot; width=\&amp;quot;620\&amp;quot; height=\&amp;quot;348\&amp;quot;&amp;gt;&amp;lt;\/embed&amp;gt;&amp;lt;\/object&amp;gt;&amp;lt;\/div&amp;gt;&amp;quot;;" alt=""&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style="width:620px;clear:both;font-size:.8em"&gt;Interview with Andrew Connell about SharePoint 2010&lt;/div&gt;&lt;/div&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3766174345251248841-604595633855077004?l=www.ilovesharepoint.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.ilovesharepoint.com/feeds/604595633855077004/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3766174345251248841&amp;postID=604595633855077004' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3766174345251248841/posts/default/604595633855077004'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3766174345251248841/posts/default/604595633855077004'/><link rel='alternate' type='text/html' href='http://www.ilovesharepoint.com/2011/04/why-andrew-connell-loves-sharepoint.html' title='Why Andrew Connell loves sharepoint'/><author><name>Christian</name><uri>http://www.blogger.com/profile/16986066591633364914</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='22' height='32' src='http://bp1.blogger.com/_J6SMSGCmItU/SGAIxRt-lLI/AAAAAAAAABo/EqgbBGe38FM/S220/DSC_0314_small.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh6.ggpht.com/_J6SMSGCmItU/TZjJC7y6f7I/AAAAAAAABgc/f54MD9jp09c/s72-c/video23f841befab9%5B15%5D.jpg?imgmax=800' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3766174345251248841.post-4763272935310741008</id><published>2011-03-20T22:29:00.001+01:00</published><updated>2011-03-20T22:47:18.923+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Event'/><category scheme='http://www.blogger.com/atom/ns#' term='SharePoint'/><category scheme='http://www.blogger.com/atom/ns#' term='SharePint'/><category scheme='http://www.blogger.com/atom/ns#' term='Community'/><category scheme='http://www.blogger.com/atom/ns#' term='ShareCamp'/><title type='text'>Sharecamp 2011 - born2share.</title><content type='html'>&lt;p&gt;I’m happy to announce the &lt;a href="http://www.sharecamp.de" target="_blank"&gt;ShareCamp 2011&lt;/a&gt;. It will be at the weekend from 14th to 15th May at the &lt;a href="http://www.microsoft.com/germany/unternehmen/informationen/gmbh_profil/niederlassungen/muenchen.mspx" target="_blank"&gt;Microsoft Headquarter in Munich&lt;/a&gt;. The &lt;a href="http://www.sharecamp.de" target="_blank"&gt;ShareCamp&lt;/a&gt; is a &lt;a href="http://en.wikipedia.org/wiki/Barcamp" target="_blank"&gt;BarCamp&lt;/a&gt; about &lt;a href="http://sharepoint.microsoft.com/"&gt;SharePoint&lt;/a&gt;. Our slogan is born2share. (spoken born to SharePoint). We did it for for the first time last year in April and were very curious if it would be a success or not. And it was a great success! We got really amazing feedback and actually I would say it has become THE SharePoint &lt;a href="http://sharepointcommunity.de"&gt;community&lt;/a&gt; event in Germany! &lt;/p&gt;  &lt;p&gt;&lt;a href="http://sharecamp.de/"&gt;&lt;img style="background-image: none; border-right-width: 0px; margin: 5px auto; padding-left: 0px; padding-right: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" border="0" alt="ShareCamp 2011" src="http://sharecamp.de/PublishingImages/Logo_born2share2011.png" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;The idea for this kind of event arise from the insight that the commercial events often tend to be one-sided, uncreative and boring. Always the same sessions, same speakers and novice session levels. So the ShareCamp was born! As I mentioned earlier the ShareCamp is a special kind of an &lt;a href="http://en.wikipedia.org/wiki/Unconference" target="_blank"&gt;unconference&lt;/a&gt;, a such called &lt;a href="http://en.wikipedia.org/wiki/Barcamp" target="_blank"&gt;BarCamp&lt;/a&gt;. The base idea is that there are no predefined time schedules, sessions and speakers. Everyone should contribute! It doesn’t matter if you are an end user, admin, manager, developer, novice, expert, speaker, geek or MVP if you have something to say, say it! &lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Sounds crazy, doesn’t it? But it works! Be part of it and &lt;a href="http://sharecamp.de/Seiten/Register.aspx" target="_blank"&gt;register now&lt;/a&gt;!&lt;/strong&gt; &lt;em&gt;(The attendance is for free but the seats are limited!)&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh6.ggpht.com/_J6SMSGCmItU/TYZxrehmHRI/AAAAAAAABfc/UpwsBh3A7Vw/s1600-h/12324_112736402080637_106328299388114_195378_3341434_n%5B1%5D%5B2%5D.jpg"&gt;&lt;img style="background-image: none; border-right-width: 0px; margin: 5px 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="12324_112736402080637_106328299388114_195378_3341434_n[1]" border="0" alt="12324_112736402080637_106328299388114_195378_3341434_n[1]" src="http://lh4.ggpht.com/_J6SMSGCmItU/TYZxr0gq-fI/AAAAAAAABfg/iUEpYpkurcg/12324_112736402080637_106328299388114_195378_3341434_n%5B1%5D_thumb.jpg?imgmax=800" width="244" height="184" /&gt;&lt;/a&gt;&lt;a href="http://sharecamp.de/"&gt;&lt;img style="background-image: none; border-right-width: 0px; margin: 5px 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="12324_112650775422533_106328299388114_194872_8035884_n[1]" border="0" alt="12324_112650775422533_106328299388114_194872_8035884_n[1]" src="http://lh3.ggpht.com/_J6SMSGCmItU/TYZxsczbkoI/AAAAAAAABfk/Vl4M-ycCFn0/12324_112650775422533_106328299388114_194872_8035884_n%5B1%5D%5B2%5D.jpg?imgmax=800" width="244" height="184" /&gt;&lt;/a&gt;&lt;a href="http://lh5.ggpht.com/_J6SMSGCmItU/TYZxsvQMVII/AAAAAAAABfo/GnKi1xErsQg/s1600-h/12324_113178885369722_106328299388114_197446_8382896_n%5B1%5D%5B2%5D.jpg"&gt;&lt;img style="background-image: none; border-right-width: 0px; margin: 5px 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="12324_113178885369722_106328299388114_197446_8382896_n[1]" border="0" alt="12324_113178885369722_106328299388114_197446_8382896_n[1]" src="http://lh4.ggpht.com/_J6SMSGCmItU/TYZxtOVtgpI/AAAAAAAABfs/Nr6pp0vHlqI/12324_113178885369722_106328299388114_197446_8382896_n%5B1%5D_thumb.jpg?imgmax=800" width="244" height="184" /&gt;&lt;/a&gt;&lt;a href="http://lh6.ggpht.com/_J6SMSGCmItU/TYZxt1jAjMI/AAAAAAAABfw/2NWLEgThXgg/s1600-h/12324_112736405413970_106328299388114_195379_1647201_n%5B1%5D%5B2%5D.jpg"&gt;&lt;img style="background-image: none; border-right-width: 0px; margin: 5px 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="12324_112736405413970_106328299388114_195379_1647201_n[1]" border="0" alt="12324_112736405413970_106328299388114_195379_1647201_n[1]" src="http://lh4.ggpht.com/_J6SMSGCmItU/TYZxuCfR6oI/AAAAAAAABf0/3Hc6yAPeus0/12324_112736405413970_106328299388114_195379_1647201_n%5B1%5D_thumb.jpg?imgmax=800" width="244" height="184" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh4.ggpht.com/_J6SMSGCmItU/TYZxuvIXnHI/AAAAAAAABf4/e8uS54nAp44/s1600-h/12324_112736508747293_106328299388114_195386_6397476_n%5B1%5D%5B2%5D.jpg"&gt;&lt;img style="background-image: none; border-right-width: 0px; margin: 5px 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="12324_112736508747293_106328299388114_195386_6397476_n[1]" border="0" alt="12324_112736508747293_106328299388114_195386_6397476_n[1]" src="http://lh6.ggpht.com/_J6SMSGCmItU/TYZxu8wMsBI/AAAAAAAABf8/yjxVaJqXck8/12324_112736508747293_106328299388114_195386_6397476_n%5B1%5D_thumb.jpg?imgmax=800" width="244" height="184" /&gt;&lt;/a&gt;&lt;a href="http://lh6.ggpht.com/_J6SMSGCmItU/TYZxvQs6AmI/AAAAAAAABgA/N0fVmcgDlG4/s1600-h/12324_112650752089202_106328299388114_194867_5136680_n%5B1%5D%5B2%5D.jpg"&gt;&lt;img style="background-image: none; border-right-width: 0px; margin: 5px 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="12324_112650752089202_106328299388114_194867_5136680_n[1]" border="0" alt="12324_112650752089202_106328299388114_194867_5136680_n[1]" src="http://lh4.ggpht.com/_J6SMSGCmItU/TYZxvw1CqOI/AAAAAAAABgE/gumQRr_Vx3M/12324_112650752089202_106328299388114_194867_5136680_n%5B1%5D_thumb.jpg?imgmax=800" width="244" height="184" /&gt;&lt;/a&gt;&lt;a href="http://lh5.ggpht.com/_J6SMSGCmItU/TYZxwT_lo1I/AAAAAAAABgI/zE4UniN7bGo/s1600-h/12324_112736532080624_106328299388114_195388_1902471_n%5B3%5D%5B2%5D.jpg"&gt;&lt;img style="background-image: none; border-right-width: 0px; margin: 5px 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="12324_112736532080624_106328299388114_195388_1902471_n[3]" border="0" alt="12324_112736532080624_106328299388114_195388_1902471_n[3]" src="http://lh5.ggpht.com/_J6SMSGCmItU/TYZxwh_sikI/AAAAAAAABgM/6wkzVWTjj7o/12324_112736532080624_106328299388114_195388_1902471_n%5B3%5D_thumb.jpg?imgmax=800" width="244" height="184" /&gt;&lt;/a&gt;&lt;a href="http://lh5.ggpht.com/_J6SMSGCmItU/TYZxxOI25OI/AAAAAAAABgQ/3bMUTyOhlKw/s1600-h/12324_112736545413956_106328299388114_195390_1254104_n%5B1%5D%5B2%5D.jpg"&gt;&lt;img style="background-image: none; border-right-width: 0px; margin: 5px 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="12324_112736545413956_106328299388114_195390_1254104_n[1]" border="0" alt="12324_112736545413956_106328299388114_195390_1254104_n[1]" src="http://lh4.ggpht.com/_J6SMSGCmItU/TYZxxnYL4iI/AAAAAAAABgU/ZubDD4UDL30/12324_112736545413956_106328299388114_195390_1254104_n%5B1%5D_thumb.jpg?imgmax=800" width="244" height="184" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3766174345251248841-4763272935310741008?l=www.ilovesharepoint.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.ilovesharepoint.com/feeds/4763272935310741008/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3766174345251248841&amp;postID=4763272935310741008' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3766174345251248841/posts/default/4763272935310741008'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3766174345251248841/posts/default/4763272935310741008'/><link rel='alternate' type='text/html' href='http://www.ilovesharepoint.com/2011/03/sharecamp-2011-born2share.html' title='Sharecamp 2011 - born2share.'/><author><name>Christian</name><uri>http://www.blogger.com/profile/16986066591633364914</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='22' height='32' src='http://bp1.blogger.com/_J6SMSGCmItU/SGAIxRt-lLI/AAAAAAAAABo/EqgbBGe38FM/S220/DSC_0314_small.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh4.ggpht.com/_J6SMSGCmItU/TYZxr0gq-fI/AAAAAAAABfg/iUEpYpkurcg/s72-c/12324_112736402080637_106328299388114_195378_3341434_n%5B1%5D_thumb.jpg?imgmax=800' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3766174345251248841.post-4772894762647678446</id><published>2011-03-19T11:12:00.006+01:00</published><updated>2011-03-20T21:27:24.433+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SharePoint Designer Actions'/><category scheme='http://www.blogger.com/atom/ns#' term='SharePoint Designer'/><category scheme='http://www.blogger.com/atom/ns#' term='SharePoint'/><category scheme='http://www.blogger.com/atom/ns#' term='CodePlex'/><category scheme='http://www.blogger.com/atom/ns#' term='SPD Actions 2010'/><title type='text'>Call a Web Service Action (Advanced SharePoint Designer 2010 Workflow Actions)</title><content type='html'>&lt;p&gt;With this custom SharePoint Designer Action you are able to call web services from SPD workflows. The action is included in my &lt;a href="http://ilovesharepoint.codeplex.com/releases/view/60840" target="_blank"&gt;Advanced SharePoint Designer 2010 Workflow Actions&lt;/a&gt; release on &lt;a href="http://codeplex.com/" target="_blank"&gt;CodePlex&lt;/a&gt;. The source code is available too. Let’s go!  &lt;/p&gt;&lt;h3&gt;1. Add “Call a Web Service” Action to a SharePoint Designer 2010 Workflow&lt;/h3&gt;&lt;a href="http://lh5.ggpht.com/_J6SMSGCmItU/TYSBdm92r9I/AAAAAAAABes/VCsBhLeEkkM/s1600-h/image3.png"&gt;&lt;img alt="image" border="0" height="269" src="http://lh3.ggpht.com/_J6SMSGCmItU/TYSBeJjyBtI/AAAAAAAABew/TwBsoZ-faZY/image_thumb1.png?imgmax=800" style="border-width: 0px; display: inline;" title="image" width="363" /&gt;&lt;/a&gt;   &lt;br /&gt;&lt;h3&gt;2. Configure the Action&lt;/h3&gt;&lt;a href="http://lh3.ggpht.com/_J6SMSGCmItU/TYSBelUAATI/AAAAAAAABfM/vapSUBV4l-k/s1600-h/image4%5B1%5D.png"&gt;&lt;img alt="image" border="0" height="66" src="http://lh3.ggpht.com/_J6SMSGCmItU/TYSBe7vDQuI/AAAAAAAABfQ/hxvUIQkZKiA/image4_thumb.png?imgmax=800" style="background-image: none; border: 0px currentColor; display: inline; padding-left: 0px; padding-right: 0px; padding-top: 0px;" title="image" width="835" /&gt;&lt;/a&gt;   &lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;URL&lt;/strong&gt;: The URL of the Web Service&lt;/li&gt;&lt;li&gt;&lt;strong&gt;SOAP Version&lt;/strong&gt;: The SOAP Version of the request (1.1. or 1.2) &lt;/li&gt;&lt;li&gt;&lt;strong&gt;Action: &lt;/strong&gt;The SOAP Action for the request&lt;/li&gt;&lt;li&gt;&lt;strong&gt;SOAP Request Envelope&lt;/strong&gt;: The SOAP Envelope for the request (&lt;a href="http://schemas.xmlsoap.org/soap/envelope/" title="http://schemas.xmlsoap.org/soap/envelope/"&gt;http://schemas.xmlsoap.org/soap/envelope/&lt;/a&gt;). The request will be UTF8 encoded. &lt;em&gt;You can use two special tokens in the request that can not be inserted via the UI: &lt;strong&gt;[WebUrl]&lt;/strong&gt; and &lt;strong&gt;[WorkflowInstanceId]. &lt;/strong&gt;&lt;/em&gt;&lt;/li&gt;&lt;li&gt;&lt;strong&gt;User: &lt;/strong&gt;The user name for requests that needs authentication e.g. “Contoso\Administrator”. Instead of using user name and password you can use Secure Store Credentials.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Password: &lt;/strong&gt;The password for the user. Unfortunately there isn’t a masked text box :-( You could either specify the password&amp;nbsp; in clear text or encrypted like described here: &lt;a href="http://ilovesharepoint.codeplex.com/wikipage?title=Encrypt%20Passwords&amp;amp;referringTitle=Workflow%20Actions%20for%20SharePoint%20Designer%202010" target="_blank"&gt;Encrypt Passwords for SharePoint Designer Workflow Actions&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;strong&gt;AppId: &lt;/strong&gt;The The Secure Store Application ID. The Secure Store App have to define 2 Fields. One of type “User Name” and one of type “Password”. The Field Name doesn’t matter, important is the Field Type! You have to map the credentials of the SharePoint Service Accounts (AppPool/owstimer.exe). The secure store option will only works with SharePoint Server not with Foundation!&lt;/li&gt;&lt;/ul&gt;&lt;h3&gt;3. Example&lt;/h3&gt;Create a new List with the SharePoint Lists.asmx Web Service.   &lt;br /&gt;&lt;a href="http://lh3.ggpht.com/_J6SMSGCmItU/TYSBfTJVuDI/AAAAAAAABfU/Kd8kkP8i98k/s1600-h/image9%5B2%5D.png"&gt;&lt;img alt="image" border="0" height="112" src="http://lh5.ggpht.com/_J6SMSGCmItU/TYSBfjXSZBI/AAAAAAAABfY/3bZ5Tcy6WnE/image9_thumb%5B1%5D.png?imgmax=800" style="background-image: none; border: 0px currentColor; display: inline; padding-left: 0px; padding-right: 0px; padding-top: 0px;" title="image" width="1003" /&gt;&lt;/a&gt;   &lt;br /&gt;&lt;h3&gt;Configuration of “Call Web Service”&lt;/h3&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;URL&lt;/strong&gt;: http://[siteurl]/_vti_bin/Lists.asmx &lt;/li&gt;&lt;li&gt;&lt;strong&gt;SOAP Version:&lt;/strong&gt; SOAP 1.2 &lt;/li&gt;&lt;li&gt;&lt;strong&gt;SOAPAction:&lt;/strong&gt; &lt;em&gt;not needed for SOAP 1.2&lt;/em&gt; &lt;/li&gt;&lt;li&gt;&lt;strong&gt;Response:&lt;/strong&gt; The response will be stored in the variable “Response” &lt;/li&gt;&lt;li&gt;&lt;strong&gt;User:&lt;/strong&gt; empty &lt;/li&gt;&lt;li&gt;&lt;strong&gt;Password:&lt;/strong&gt; empty &lt;/li&gt;&lt;li&gt;&lt;strong&gt;Secure Store AppId: &lt;/strong&gt;Instead of using user name and password we use the secure store app with the ID test. The app defines “User Name” and Password. The format of the user name for windows user should be “Domain\username”. &lt;/li&gt;&lt;li&gt;&lt;strong&gt;SOAP Request Envelope: &lt;/strong&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div class="wlWriterEditableSmartContent" id="scid:9D7513F9-C04C-4721-824A-2B34F0212519:306b77eb-2564-4a58-bd27-d8f14303d163" style="display: inline; float: none; margin: 0px; padding: 0px;"&gt;&lt;pre class="brush: xml; gutter: false; first-line: 1; tab-size: 4;  toolbar: false;  width: 938px; height: 209px;" style="height: 187px; overflow: auto; width: 936px;"&gt;&amp;lt;soap12:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" &lt;br /&gt;xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap12="http://www.w3.org/2003/05/soap-envelope"&amp;gt;&lt;br /&gt;&amp;lt;soap12:Body&amp;gt;&lt;br /&gt;&amp;lt;AddList xmlns="http://schemas.microsoft.com/sharepoint/soap/"&amp;gt;&lt;br /&gt;&amp;lt;listName&amp;gt;[%MyList:Title%]&amp;lt;/listName&amp;gt;&lt;br /&gt;&amp;lt;description&amp;gt;Created by iLSP action&amp;lt;/description&amp;gt;&lt;br /&gt;&amp;lt;templateID&amp;gt;100&amp;lt;/templateID&amp;gt;&lt;br /&gt;&amp;lt;/AddList&amp;gt;&lt;br /&gt;&amp;lt;/soap12:Body&amp;gt;&lt;br /&gt;&amp;lt;/soap12:Envelope&amp;gt;&lt;/pre&gt;&lt;/div&gt;For the title of the list we use the title of the current list item that runs the workflow.&lt;strong&gt; &lt;/strong&gt;To figure out how the request should looks like you could inspect request with &lt;a href="http://www.fiddler2.com/" target="_blank"&gt;fiddler&lt;/a&gt;. I often create a WCF service proxy with Visual Studio, execute the call and inspect the request and result XML with &lt;a href="http://www.fiddler2.com/" target="_blank"&gt;fiddler&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Next we extract the ID of the new list.from the resulting XML. To do this you can use the “Query XML” action that is also included in the package.&lt;br /&gt;&lt;h3&gt;Configuration of “Query XML”&lt;/h3&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;XML&lt;/strong&gt;: The XML of the SOAP-Reponse that has been stored in the Variabe “Response” &lt;/li&gt;&lt;li&gt;&lt;strong&gt;XPath:&lt;/strong&gt; //*[local-name()='List']/@ID &lt;/li&gt;&lt;li&gt;&lt;strong&gt;Output&lt;/strong&gt;: The output (List Id) will be stored in the Variable “ListID” &lt;/li&gt;&lt;/ul&gt;&lt;h3&gt;Write the “ListID” to the history log&lt;/h3&gt;&lt;a href="http://lh3.ggpht.com/_J6SMSGCmItU/TYSBgANeMVI/AAAAAAAABfE/esNzlWir05c/s1600-h/image18.png"&gt;&lt;img alt="image" border="0" height="111" src="http://lh3.ggpht.com/_J6SMSGCmItU/TYSBgnj8LDI/AAAAAAAABfI/1ly-1nV75Z8/image_thumb10.png?imgmax=800" style="border-width: 0px; display: inline;" title="image" width="578" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href="http://ilovesharepoint.codeplex.com/releases/view/60840" target="_blank"&gt;download&lt;/a&gt; | &lt;a href="http://ilovesharepoint.codeplex.com/wikipage?title=Call%20a%20Web%20Service%20Action&amp;amp;referringTitle=Workflow%20Actions%20for%20SharePoint%20Designer%202010" target="_blank"&gt;documentation&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3766174345251248841-4772894762647678446?l=www.ilovesharepoint.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.ilovesharepoint.com/feeds/4772894762647678446/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3766174345251248841&amp;postID=4772894762647678446' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3766174345251248841/posts/default/4772894762647678446'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3766174345251248841/posts/default/4772894762647678446'/><link rel='alternate' type='text/html' href='http://www.ilovesharepoint.com/2011/03/call-web-service-action-advanced.html' title='Call a Web Service Action (Advanced SharePoint Designer 2010 Workflow Actions)'/><author><name>Christian</name><uri>http://www.blogger.com/profile/16986066591633364914</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='22' height='32' src='http://bp1.blogger.com/_J6SMSGCmItU/SGAIxRt-lLI/AAAAAAAAABo/EqgbBGe38FM/S220/DSC_0314_small.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh3.ggpht.com/_J6SMSGCmItU/TYSBeJjyBtI/AAAAAAAABew/TwBsoZ-faZY/s72-c/image_thumb1.png?imgmax=800' height='72' width='72'/><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3766174345251248841.post-7800183414164382659</id><published>2011-02-22T16:10:00.004+01:00</published><updated>2011-03-20T21:26:33.189+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SharePoint Designer Actions'/><category scheme='http://www.blogger.com/atom/ns#' term='SP2010'/><category scheme='http://www.blogger.com/atom/ns#' term='SharePoint Designer'/><category scheme='http://www.blogger.com/atom/ns#' term='SharePoint'/><category scheme='http://www.blogger.com/atom/ns#' term='PowerActivity'/><title type='text'>PowerActivity 2010 (Advanced SharePoint Designer 2010 Workflow Actions)</title><content type='html'>&lt;p&gt;I’m glad to announce that I’ve just added the “Execute PowerShell Script” action (aka PowerActivity 2010) to the latest build of &lt;a href="http://ilovesharepoint.codeplex.com/releases/view/60840" target="_blank"&gt;Advanced SharePoint Designer 2010 Workflow Actions&lt;/a&gt;. &lt;/p&gt;&lt;h3&gt;Add “Execute PowerShell Script” action to a SharePoint Designer Workflow&lt;/h3&gt;&lt;p&gt;&lt;a href="http://lh5.ggpht.com/_J6SMSGCmItU/TWPR2vufIcI/AAAAAAAABbc/bVCBQ6KA1iU/s1600-h/image%5B4%5D.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://lh4.ggpht.com/_J6SMSGCmItU/TWPR3WOXAWI/AAAAAAAABbg/QZjO4O4U-Fw/image_thumb%5B2%5D.png?imgmax=800" width="236" height="365" /&gt;&lt;/a&gt; &lt;/p&gt;&lt;h3&gt;Configuration&lt;/h3&gt;&lt;p&gt;&lt;a href="http://lh5.ggpht.com/_J6SMSGCmItU/TWPR34BO-KI/AAAAAAAABbk/jRYkMnSK_UE/s1600-h/image%5B9%5D.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://lh3.ggpht.com/_J6SMSGCmItU/TWPR4WguIrI/AAAAAAAABbo/wEDxjED_aRs/image_thumb%5B5%5D.png?imgmax=800" width="959" height="80" /&gt;&lt;/a&gt; &lt;/p&gt;&lt;h3&gt;Script&lt;/h3&gt;&lt;p&gt;The PowerShell script to execute. You can use the following predefined variables:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;$site&lt;/strong&gt; = the current Microft.SharePoint.SPSite &lt;/li&gt;&lt;li&gt;&lt;strong&gt;$web&lt;/strong&gt; = the current Microft.SharePoint.SPWeb &lt;/li&gt;&lt;li&gt;&lt;strong&gt;$list&lt;/strong&gt; = the current Microft.SharePoint.SPList (null in site workflows) &lt;/li&gt;&lt;li&gt;&lt;strong&gt;$item&lt;/strong&gt;= the current Microft.SharePoint.SPListItem (null in site workflows) &lt;/li&gt;&lt;li&gt;&lt;strong&gt;$ctx&lt;/strong&gt; = the current workflow context Microsoft.SharePoint.WorkflowActions.WorkflowContext &lt;/li&gt;&lt;li&gt;&lt;strong&gt;$sharePointService&lt;/strong&gt; = the current Microsoft.SharePoint.Workflow.ISharePointService service &lt;/li&gt;&lt;li&gt;&lt;strong&gt;$listItemService&lt;/strong&gt; = the curent Microsoft.SharePoint.Workflow.IListItemService service &lt;/li&gt;&lt;/ul&gt;&lt;p&gt;The process will run as system account. However, by default $site and $web will run as the current workflow initiator or author (impersonation step). When you want to impersonate the site to the system account create a site like this: $impersonatedSite = new-object Microsoft.SharePoint.SPSite($site.Id).&lt;/p&gt;&lt;p&gt;Avoid the usage of the SharePoint Designer Text Editor tokens in the script, because of the potential risk for script injection attacks. Instead use variable binding ($var1, $var2…) &lt;/p&gt;&lt;h3&gt;Signature&lt;/h3&gt;&lt;p&gt;By default every script you that want to execute must be digitally signed. However, you can change the setting to not require a digital signature (dev system). The corresponding PowerShell script is included in package. &lt;/p&gt;&lt;h5&gt;Disable Script Signing &lt;/h5&gt;&lt;p&gt;The script must run on a SharePoint machine&lt;/p&gt;&lt;p&gt;PS&amp;gt; &lt;strong&gt;&amp;amp; .\Set-PowerActivityScriptSigning.ps1 $false&lt;/strong&gt;&lt;/p&gt;&lt;h4&gt;Sign Scripts&lt;/h4&gt;&lt;p&gt;In order to sign scripts you need the private key that has been generated during the installation of solution.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;1. Export Private Key&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;The script must run on a SharePoint machine. Keep the private key secure.&lt;/p&gt;&lt;p&gt;PS&amp;gt; &lt;strong&gt;&amp;amp; .\Export-Key.ps1 –path “C:\private.key” –includePrivateKey $true&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;2. Sign the Script&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;After you have exported the private key you can sign the script. The signing must not be done on a SharePoint machine, you only need the private key and the script. To sign the script you have to save it temporarily to a file. &lt;/p&gt;&lt;p&gt;PS&amp;gt; &lt;strong&gt;&amp;amp; .\Sign-PowerActivityScript.ps1 –keyPath “C:\private.key” –scriptPath “C:\script.ps1”&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;The signature will look like this:&lt;/p&gt;&lt;p&gt;&lt;em&gt;&lt;br /&gt;YoVKP2lCKF1B8Q9ZIBvy98+T2haNayr81aGTfXEPyRmFxLNII3R6pagaHVZfZ7j5L2zTga53SqetVRLgTUebiOan2WUnCR2HualqvvdXYX1LhwAZ/Kda&lt;br /&gt;OibqpE5aGgZTesJJln8+81Qwy4wOqSxCv3iQjIgVbJz7+D3kIm9dP7Q=&lt;/em&gt;&lt;/p&gt;&lt;p&gt;Simply copy &amp;amp; paste the script and the signature to the script and signature field of the “Execute PowerShell Script” action. &lt;/p&gt;&lt;p&gt;&lt;em&gt;White spaces in the script will be ignored in the signing process.&lt;/em&gt;&lt;/p&gt;&lt;h3&gt;$var1, $var2, $var3, $var4, $var5&lt;/h3&gt;&lt;p&gt;You can bind PowerShell variables ($var1, $var2…) to workflow variables.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;em&gt;$web.Title = $var1&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;em&gt;$web.Update()&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;The binding is two way, this means you can change the workflow variables in the script.&lt;/p&gt;&lt;p&gt;&lt;em&gt;&lt;strong&gt;$var2 = “my value”&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;&lt;h3&gt;$secure&lt;/h3&gt;&lt;p&gt;$secure is a special variable that can contain an encrypted string that will be decrypted during runtime. You could use this variable to securely store a password. The binding ot this variable is one way, means you can not set the value in the script during runtime. For how to encrypt strings read &lt;a href="http://ilovesharepoint.codeplex.com/wikipage?title=Encrypt%20Passwords&amp;amp;referringTitle=Workflow%20Actions%20for%20SharePoint%20Designer%202010" target="_blank"&gt;this&lt;/a&gt;.&lt;/p&gt;&lt;h3&gt;Secure Store AppId&lt;/h3&gt;&lt;p&gt;The Secure Store App have to define 2 Fields. One of type “User Name” and one of type “Password”. The Field Name doesn’t matter, important is the Field Type! You have to map the credentials of the SharePoint Service Accounts (AppPool/owstimer.exe). The secure store option will only works with SharePoint Server, not with Foundation! You can access the credentials during runtime with the $credential variable (System.Net.NetworkCredentials).&lt;/p&gt;&lt;p&gt;&lt;a href="http://ilovesharepoint.codeplex.com/wikipage?title=Execute%20PowerShell%20Script%20Action&amp;amp;referringTitle=Workflow%20Actions%20for%20SharePoint%20Designer%202010" target="_blank"&gt;Wiki Documentation&lt;/a&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3766174345251248841-7800183414164382659?l=www.ilovesharepoint.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.ilovesharepoint.com/feeds/7800183414164382659/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3766174345251248841&amp;postID=7800183414164382659' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3766174345251248841/posts/default/7800183414164382659'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3766174345251248841/posts/default/7800183414164382659'/><link rel='alternate' type='text/html' href='http://www.ilovesharepoint.com/2011/02/poweractivity-2010-advanced-sharepoint.html' title='PowerActivity 2010 (Advanced SharePoint Designer 2010 Workflow Actions)'/><author><name>Christian</name><uri>http://www.blogger.com/profile/16986066591633364914</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='22' height='32' src='http://bp1.blogger.com/_J6SMSGCmItU/SGAIxRt-lLI/AAAAAAAAABo/EqgbBGe38FM/S220/DSC_0314_small.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh4.ggpht.com/_J6SMSGCmItU/TWPR3WOXAWI/AAAAAAAABbg/QZjO4O4U-Fw/s72-c/image_thumb%5B2%5D.png?imgmax=800' height='72' width='72'/><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3766174345251248841.post-791739777962536307</id><published>2011-02-21T18:42:00.003+01:00</published><updated>2011-03-20T21:26:33.191+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SP2010'/><category scheme='http://www.blogger.com/atom/ns#' term='SharePoint Designer'/><category scheme='http://www.blogger.com/atom/ns#' term='SPD Actions 2010'/><title type='text'>Execute SQL Action (Advanced SharePoint Designer 2010 Workflow Actions)</title><content type='html'>Execute a SQL statement from within a SharePoint Designer 2010 Workflow. The action and its source can be downloaded &lt;a href="http://ilovesharepoint.codeplex.com/releases/view/60840"&gt;here&lt;/a&gt;.&lt;br /&gt;&lt;h3&gt;Add “Execute SQL” Action to a SharePoint Designer 2010 Workflow&lt;/h3&gt;&lt;a href="http://lh3.ggpht.com/_J6SMSGCmItU/TWKkFaSHpRI/AAAAAAAABbE/iOrAtUKZth8/s1600-h/image3.png"&gt;&lt;img alt="image" border="0" height="293" src="http://lh4.ggpht.com/_J6SMSGCmItU/TWKkF5d-RrI/AAAAAAAABbI/U_HCi-IxHS4/image_thumb1.png?imgmax=800" style="border-width: 0px; display: inline;" title="image" width="342" /&gt;&lt;/a&gt; &lt;br /&gt;&lt;h3&gt;Configure the Action&lt;/h3&gt;&lt;a href="http://lh6.ggpht.com/_J6SMSGCmItU/TWKkGI9DhJI/AAAAAAAABbM/hyjKnIkp80I/s1600-h/image7.png"&gt;&lt;img alt="image" border="0" height="90" src="http://lh5.ggpht.com/_J6SMSGCmItU/TWKkGt6g6SI/AAAAAAAABbQ/d5ETymJLQFg/image_thumb3.png?imgmax=800" style="border-width: 0px; display: inline;" title="image" width="942" /&gt;&lt;/a&gt; &lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;SQL&lt;/strong&gt;: The SQL statement that you want to execute. You could also use stored procedures e.g. “EXEC [test_Proc] @var1=N’test’ ”-&lt;em&gt;You can use two special tokens in the statement that can not be inserted via the UI: &lt;strong&gt;[WebUrl]&lt;/strong&gt; and &lt;strong&gt;[WorkflowInstanceId]. &lt;/strong&gt;&lt;/em&gt;&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Provider&lt;/strong&gt;: The .NET ADO Provider. Default is MS SQL Server (System.Data.SqlClient). You can use other providers like ODBC, Oracle… &lt;/li&gt;&lt;li&gt;&lt;strong&gt;Connection&lt;/strong&gt;: The connection string e.g. “Server=localhost\SQLExpress;Database=test;User ID=sa;Password=P@ssw0rd”. Integrated Security is for security reasons not supported! You could either specify the password&amp;nbsp; in clear text or encrypted like described in [Encrypt Passwords for SharePoint Designer Workflow Actions].&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Result&lt;/strong&gt;: The first column of the first row in the result set returned by the query. Additional columns or rows are ignored.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;AppId: &lt;/strong&gt;The The Secure Store Application ID. The Secure Store App have to define 2 Fields. One of type “User Name” and one of type “Password”. The Field Name doesn’t matter, important is the Field Type! You have to map the credentials of the SharePoint Service Accounts (AppPool/owstimer.exe). The secure store option will only works with SharePoint Server not with Foundation! In order to use the credentials in the Connection String you can use the token {0} for the User Name and {1} for the password. E.g. “Server=localhost;Database=test;User ID={0};Password={1}”&lt;/li&gt;&lt;/ul&gt;&lt;h3&gt;Example&lt;/h3&gt;Simple insert statement.&lt;br /&gt;&lt;a href="http://lh5.ggpht.com/_J6SMSGCmItU/TWKkG9CTq2I/AAAAAAAABbU/3zDfBeBX_44/s1600-h/image13.png"&gt;&lt;img alt="image" border="0" height="68" src="http://lh3.ggpht.com/_J6SMSGCmItU/TWKkHX5zvLI/AAAAAAAABbY/P7NGsPboKSg/image_thumb7.png?imgmax=800" style="border-width: 0px; display: inline;" title="image" width="1088" /&gt;&lt;/a&gt; &lt;br /&gt;&lt;h5&gt;Configuration of “Execute SQL”&lt;/h5&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;SQL&lt;/strong&gt;: INSERT INTO MyTable (Column1, Column2) VALUES ([%Current Items:ID%],’[%Current Items:Title%]’) &lt;/li&gt;&lt;li&gt;&lt;strong&gt;Provider:&lt;/strong&gt; System.Data.SqlClient &lt;/li&gt;&lt;li&gt;&lt;strong&gt;Connection String:&lt;/strong&gt; Server=localhost; Database=MyDatabase;User ID={0}; Password={1} &lt;/li&gt;&lt;li&gt;&lt;strong&gt;Secure Store AppId:&lt;/strong&gt; DBCred ({0} in the connection string will be replaced with User Name and {1} with Password defined in the Secure Store App) &lt;/li&gt;&lt;li&gt;&lt;strong&gt;Output:&lt;/strong&gt; Workflow Variable “Result” (will return 0) &lt;/li&gt;&lt;/ul&gt;&lt;a href="http://ilovesharepoint.codeplex.com/wikipage?title=Execute%20SQL%20Action&amp;amp;referringTitle=Workflow%20Actions%20for%20SharePoint%20Designer%202010" target="_blank"&gt;Wiki Documentation&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3766174345251248841-791739777962536307?l=www.ilovesharepoint.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.ilovesharepoint.com/feeds/791739777962536307/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3766174345251248841&amp;postID=791739777962536307' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3766174345251248841/posts/default/791739777962536307'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3766174345251248841/posts/default/791739777962536307'/><link rel='alternate' type='text/html' href='http://www.ilovesharepoint.com/2011/02/execute-sql-action-advanced-sharepoint.html' title='Execute SQL Action (Advanced SharePoint Designer 2010 Workflow Actions)'/><author><name>Christian</name><uri>http://www.blogger.com/profile/16986066591633364914</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='22' height='32' src='http://bp1.blogger.com/_J6SMSGCmItU/SGAIxRt-lLI/AAAAAAAAABo/EqgbBGe38FM/S220/DSC_0314_small.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh4.ggpht.com/_J6SMSGCmItU/TWKkF5d-RrI/AAAAAAAABbI/U_HCi-IxHS4/s72-c/image_thumb1.png?imgmax=800' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3766174345251248841.post-221730816324202330</id><published>2011-02-19T19:05:00.006+01:00</published><updated>2011-03-20T21:26:33.194+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SP2010'/><category scheme='http://www.blogger.com/atom/ns#' term='SharePoint'/><category scheme='http://www.blogger.com/atom/ns#' term='SPD Actions 2010'/><category scheme='http://www.blogger.com/atom/ns#' term='Workflow'/><title type='text'>Create Site Action (Advanced SharePoint Designer 2010 Workflow Actions)</title><content type='html'>The first action I would like to introduce is the “Create a Site” workflow action. With this action you can create SharePoint sites via SharePoint Designer Workflows. The action and the source can be downloaded &lt;a href="http://ilovesharepoint.codeplex.com/releases/view/60840" target="_blank"&gt;here&lt;/a&gt;.&lt;br /&gt;&lt;h3&gt;Add the “Create a Site” action to a SharePoint 2010 Designer Workflow&lt;/h3&gt;&lt;a href="http://lh5.ggpht.com/_J6SMSGCmItU/TWAGYU0b0rI/AAAAAAAABak/Ug4katYpLwc/s1600-h/image4.png"&gt;&lt;img alt="image" border="0" height="215" src="http://lh3.ggpht.com/_J6SMSGCmItU/TWAGY7QfGEI/AAAAAAAABao/Fv0ElXfdaz4/image_thumb2.png?imgmax=800" style="border-bottom-width: 0px; border-left-width: 0px; border-right-width: 0px; border-top-width: 0px; display: inline;" title="image" width="491" /&gt;&lt;/a&gt; &lt;br /&gt;&lt;h3&gt;Configuration&lt;/h3&gt;&lt;a href="http://lh6.ggpht.com/_J6SMSGCmItU/TWAGZQHcVYI/AAAAAAAABas/7W6U1TB_IeM/s1600-h/image5%5B2%5D.png"&gt;&lt;img alt="image" border="0" height="61" src="http://lh6.ggpht.com/_J6SMSGCmItU/TWAGZrJj7TI/AAAAAAAABaw/LUp6RZ-D7Es/image5_thumb%5B1%5D.png?imgmax=800" style="border-bottom: 0px; border-left: 0px; border-right: 0px; border-top: 0px; display: inline;" title="image" width="803" /&gt;&lt;/a&gt; &lt;br /&gt;&lt;strong&gt;URL&lt;/strong&gt;: The url of the web site. You could either use an relative url to create the site direct under the current site or an absolute url to create the site under any site. The workflow initiator needs appropriate permissions. Or you can use an impersonation step to run the action under the permissions of the workflow author.&lt;br /&gt;&lt;strong&gt;Title&lt;/strong&gt;: Title of the site&lt;br /&gt;&lt;strong&gt;Description&lt;/strong&gt;: Description of the site&lt;br /&gt;&lt;strong&gt;Template&lt;/strong&gt;: Template name of the new site. Default is Team Site (STS#0). &lt;br /&gt;You can get a list of all farm templates with the PowerShell command “Get-SPWebTemplates”.&lt;br /&gt;To get a list of templates from a specific site’s template catalog use the following PowerShell command:&lt;br /&gt;Get-SPWeb &lt;a href="http://contoso/sites/spd"&gt;http://&lt;span style="color: #acb613;"&gt;contoso&lt;/span&gt;/sites/spd&lt;/a&gt; | %{$_.GetAvailableWebTemplates($_.Language)}&lt;br /&gt;&lt;a href="http://lh5.ggpht.com/_J6SMSGCmItU/TWAGaJMo1wI/AAAAAAAABa0/ssWPlJSlOkg/s1600-h/image14.png"&gt;&lt;img alt="image" border="0" height="247" src="http://lh3.ggpht.com/_J6SMSGCmItU/TWAGanvAAaI/AAAAAAAABa4/e4Mp-r0OqQ0/image_thumb8.png?imgmax=800" style="border-bottom-width: 0px; border-left-width: 0px; border-right-width: 0px; border-top-width: 0px; display: inline;" title="image" width="521" /&gt;&lt;/a&gt; &lt;br /&gt;Use the name of the template e.g. WIKI#0&lt;br /&gt;&lt;strong&gt;Language Code: &lt;/strong&gt;The language code for the new site e.g. 1033 for English or 1031 for German. 0 means inherit the language from the parent site.&lt;br /&gt;&lt;strong&gt;Inherit Permission:&lt;/strong&gt; Inherit permissions from the parent site.&lt;br /&gt;&lt;strong&gt;Inherit Top Navigation:&lt;/strong&gt; Use the&amp;nbsp; same top navigation as the parent site.&lt;br /&gt;&lt;strong&gt;Output:&lt;/strong&gt; Returns the absolute url of the new site&lt;br /&gt;&lt;br /&gt;&lt;a href="http://lh6.ggpht.com/_J6SMSGCmItU/TWAGa9r-CEI/AAAAAAAABa8/-FaVsMrR-yc/s1600-h/image15%5B1%5D.png"&gt;&lt;img alt="image" border="0" height="56" src="http://lh3.ggpht.com/_J6SMSGCmItU/TWAGbTrlyaI/AAAAAAAABbA/fiHoMx5hrOw/image15_thumb.png?imgmax=800" style="border-bottom: 0px; border-left: 0px; border-right: 0px; border-top: 0px; display: inline;" title="image" width="903" /&gt;&lt;/a&gt; &lt;br /&gt;&lt;h3&gt;Publish and run the workflow…&lt;/h3&gt;&lt;a href="http://ilovesharepoint.codeplex.com/wikipage?title=Create%20Site%20Action&amp;amp;referringTitle=Workflow%20Actions%20for%20SharePoint%20Designer%202010"&gt;Wiki Documentaion&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3766174345251248841-221730816324202330?l=www.ilovesharepoint.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.ilovesharepoint.com/feeds/221730816324202330/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3766174345251248841&amp;postID=221730816324202330' title='6 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3766174345251248841/posts/default/221730816324202330'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3766174345251248841/posts/default/221730816324202330'/><link rel='alternate' type='text/html' href='http://www.ilovesharepoint.com/2011/02/create-site-action-sharepoint-designer.html' title='Create Site Action (Advanced SharePoint Designer 2010 Workflow Actions)'/><author><name>Christian</name><uri>http://www.blogger.com/profile/16986066591633364914</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='22' height='32' src='http://bp1.blogger.com/_J6SMSGCmItU/SGAIxRt-lLI/AAAAAAAAABo/EqgbBGe38FM/S220/DSC_0314_small.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh3.ggpht.com/_J6SMSGCmItU/TWAGY7QfGEI/AAAAAAAABao/Fv0ElXfdaz4/s72-c/image_thumb2.png?imgmax=800' height='72' width='72'/><thr:total>6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3766174345251248841.post-7275145075005443992</id><published>2011-02-17T21:05:00.004+01:00</published><updated>2011-03-20T21:24:55.956+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SP2010'/><category scheme='http://www.blogger.com/atom/ns#' term='SharePoint Designer'/><category scheme='http://www.blogger.com/atom/ns#' term='SharePoint'/><category scheme='http://www.blogger.com/atom/ns#' term='SPD Actions 2010'/><category scheme='http://www.blogger.com/atom/ns#' term='Workflow'/><title type='text'>Just Released: Advanced Workflow Actions for SharePoint Designer 2010</title><content type='html'>I’m glad to announce that I’ve just published my Advanced Workflow Actions for SharePoint Designer 2010. The solution contains the following Workflow Actions:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Create Site Action&lt;/li&gt;&lt;li&gt;Get Parent Folder Action&lt;/li&gt;&lt;li&gt;Create XML File Action&lt;/li&gt;&lt;li&gt;HTTP-Request Action&lt;/li&gt;&lt;li&gt;Query XML Action&lt;/li&gt;&lt;li&gt;Query XML-File Action&lt;/li&gt;&lt;li&gt;Set XML Action&lt;/li&gt;&lt;li&gt;Update XML Document Action&lt;/li&gt;&lt;li&gt;Call a Web Service Action&lt;/li&gt;&lt;li&gt;Execute SQL Action&lt;/li&gt;&lt;li&gt;Wait for External Data&lt;/li&gt;&lt;li&gt;Regular Expression Actions&lt;/li&gt;&lt;/ul&gt;&lt;a href="http://ilovesharepoint.codeplex.com/releases/view/60840" target="_blank"&gt;download&lt;/a&gt; | &lt;a href="http://ilovesharepoint.codeplex.com/wikipage?title=Workflow%20Actions%20for%20SharePoint%20Designer%202010&amp;amp;referringTitle=Documentation" target="_blank"&gt;documentation&lt;/a&gt;&lt;br /&gt;The source code is available too :-)&lt;br /&gt;In further posts I will introduce each of the actions…&lt;br /&gt;PS: I’m not a fun of SharePoint Designer Workflows. In almost every customer project I use Nintex Workflow!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3766174345251248841-7275145075005443992?l=www.ilovesharepoint.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.ilovesharepoint.com/feeds/7275145075005443992/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3766174345251248841&amp;postID=7275145075005443992' title='14 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3766174345251248841/posts/default/7275145075005443992'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3766174345251248841/posts/default/7275145075005443992'/><link rel='alternate' type='text/html' href='http://www.ilovesharepoint.com/2011/02/just-released-advanced-workflow-actions.html' title='Just Released: Advanced Workflow Actions for SharePoint Designer 2010'/><author><name>Christian</name><uri>http://www.blogger.com/profile/16986066591633364914</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='22' height='32' src='http://bp1.blogger.com/_J6SMSGCmItU/SGAIxRt-lLI/AAAAAAAAABo/EqgbBGe38FM/S220/DSC_0314_small.jpg'/></author><thr:total>14</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3766174345251248841.post-1516974666028659704</id><published>2010-12-04T22:18:00.002+01:00</published><updated>2011-03-20T21:24:55.941+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Web'/><category scheme='http://www.blogger.com/atom/ns#' term='Search'/><category scheme='http://www.blogger.com/atom/ns#' term='Crawler'/><category scheme='http://www.blogger.com/atom/ns#' term='SP2010'/><category scheme='http://www.blogger.com/atom/ns#' term='SharePoint'/><category scheme='http://www.blogger.com/atom/ns#' term='FAST'/><title type='text'>FAST Search Web Crawler – Part I</title><content type='html'>Many people don’t know that FAST Search for SharePoint contains two Web Crawler (I was one of them ;). &lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;Web site indexing connector&lt;/strong&gt; &lt;ul&gt;&lt;li&gt;Use when you have a limited amount of Web sites to crawl, without dynamic content.&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt;&lt;strong&gt;FAST Search Web crawler&lt;/strong&gt; &lt;ul&gt;&lt;li&gt;Use when you have many Web sites to crawl.&lt;/li&gt;&lt;li&gt;Use when the Web site content contains dynamic data, including JavaScript.&lt;/li&gt;&lt;li&gt;Use when the organization needs access to advanced Web crawling, configuration and scheduling options.&lt;/li&gt;&lt;li&gt;Use when you want to crawl RSS Web content.&lt;/li&gt;&lt;li&gt;Use when the Web site content uses advanced logon options&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt;The &lt;strong&gt;Web site indexing connector&lt;/strong&gt; can simply be configured in the central administration and is kind of limited. I really was dissatisfied, because it was not able to met my requirements. What are my requirements? &lt;br /&gt;I want to crawl our enterprise wikis, team sites, profiles and especially the social bookmarks. This could easily be achieved with a SharePoint content source. BUT, I also want to crawl external (internet) pages that are referenced within wikis and social bookmarks. A big part of our company knowledge consist of hyperlinks to internet resources like articles and blog posts that has been collected and verified from our employees. I want that the crawler follows the external links and only crawl that page (1 hop, page depth 0). Additionally I want to crawl our internet blogs which are also an important part of our company knowledge (0 hops, page depth full). The SharePoint crawler is not able to follow external links at all. So I started to evaluate the simple web crawler, but unfortunately with no luck. The web crawler was only able to specify hops and page depth with no further constraints. For our blogs this would be okay, but not for the wikis and the social bookmarks. The configuration for the blogs and our homepage could easily be achieved through 0 hops and a full page depth. But for the wikis and the social bookmarks I need a more fine grained configuration. Crawl the intranet with 1 hop and full page depth and after the hop (the external site) just crawl this page (page depth 0). &lt;br /&gt;&lt;a href="http://lh6.ggpht.com/_J6SMSGCmItU/TPq2Y5W0dmI/AAAAAAAABaQ/Gwnyerax1xM/s1600-h/image%5B4%5D.png"&gt;&lt;img alt="image" border="0" height="619" src="http://lh3.ggpht.com/_J6SMSGCmItU/TPq2ZctDrPI/AAAAAAAABaU/nN8UOxW5LIg/image_thumb%5B2%5D.png?imgmax=800" style="border-bottom: 0px; border-left: 0px; border-right: 0px; border-top: 0px; display: inline;" title="image" width="604" /&gt;&lt;/a&gt; &lt;br /&gt;This was not possible with the simple web crawler. I couldn’t believe that FAST would not be able to satisfy this requirement…&lt;br /&gt;…and finally I found the &lt;strong&gt;FAST Search Web Crawler.&lt;/strong&gt;&lt;br /&gt;…but I also found a lack of documentation ;-) First of all forget the UI! This crawler can only be configured through command line tools and XML configs living on the FAST servers. The most important part is to create the &lt;a href="http://technet.microsoft.com/en-us/library/ff354932.aspx" target="_blank"&gt;Web Crawler Configuration&lt;/a&gt; as described &lt;a href="http://technet.microsoft.com/en-us/library/ff354932.aspx" target="_blank"&gt;here&lt;/a&gt;. &lt;br /&gt;&lt;h3&gt;Web Crawler Configuration&lt;/h3&gt;&lt;pre class="brush: xml;"&gt;&amp;lt;?xml version="1.0"?&amp;gt;&lt;br /&gt;&amp;lt;CrawlerConfig&amp;gt;&lt;br /&gt;&amp;lt;!-- Crawl collection name, must be unique for each collection.      --&amp;gt;&lt;br /&gt;&amp;lt;!-- Documents are indexed in the collection by the same name.       --&amp;gt;&lt;br /&gt;&amp;lt;DomainSpecification name="sp"&amp;gt;&lt;br /&gt;&amp;lt;SubDomain name="intranet"&amp;gt;&lt;br /&gt;&amp;lt;attrib name="start_uris" type="list-string"&amp;gt;&lt;br /&gt;&amp;lt;member&amp;gt;http://intranet&amp;lt;/member&amp;gt;&lt;br /&gt;&amp;lt;/attrib&amp;gt;&lt;br /&gt;&amp;lt;section name="include_uris"&amp;gt;&lt;br /&gt;&amp;lt;attrib name="prefix" type="list-string"&amp;gt;&lt;br /&gt;&amp;lt;member&amp;gt;http://intranet&amp;lt;/member&amp;gt;&lt;br /&gt;&amp;lt;member&amp;gt;http://mysite&amp;lt;/member&amp;gt;&lt;br /&gt;&amp;lt;/attrib&amp;gt;&lt;br /&gt;&amp;lt;/section&amp;gt;&lt;br /&gt;&amp;lt;section name="passwd"&amp;gt;&lt;br /&gt;&amp;lt;attrib name="http://intranet" type="string"&amp;gt;&lt;br /&gt;FastCrawl:pass@word1:contoso:auto&lt;br /&gt;&amp;lt;/attrib&amp;gt;&lt;br /&gt;&amp;lt;attrib name="http://mysite" type="string"&amp;gt;&lt;br /&gt;FastCrawl:pass@word1:contoso:auto&lt;br /&gt;&amp;lt;/attrib&amp;gt;&lt;br /&gt;&amp;lt;/section&amp;gt;&lt;br /&gt;&amp;lt;section name="crawlmode"&amp;gt;&lt;br /&gt;&amp;lt;!--Crawl depth (use DEPTH:n to do level crawling).--&amp;gt;&lt;br /&gt;&amp;lt;attrib name="mode" type="string"&amp;gt;FULL&amp;lt;/attrib&amp;gt;&lt;br /&gt;&amp;lt;!--Follow links from one hostname to another (interlinks).--&amp;gt;&lt;br /&gt;&amp;lt;attrib name="fwdlinks" type="boolean"&amp;gt;yes&amp;lt;/attrib&amp;gt;&lt;br /&gt;&amp;lt;!--Reset crawl level when following interlinks.--&amp;gt;&lt;br /&gt;&amp;lt;attrib name="reset_level" type="boolean"&amp;gt;no&amp;lt;/attrib&amp;gt;&lt;br /&gt;&amp;lt;attrib name="robots" type="boolean"&amp;gt;no&amp;lt;/attrib&amp;gt;&lt;br /&gt;&amp;lt;attrib name="max_uri_recursion" type="integer"&amp;gt;5&amp;lt;/attrib&amp;gt;&lt;br /&gt;&amp;lt;/section&amp;gt;&lt;br /&gt;&amp;lt;/SubDomain&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;SubDomain name="full_depth_no_hops"&amp;gt;&lt;br /&gt;&amp;lt;attrib name="start_uris" type="list-string"&amp;gt;&lt;br /&gt;&amp;lt;member&amp;gt;http://dataone.de&amp;lt;/member&amp;gt;&lt;br /&gt;&amp;lt;member&amp;gt;http://iLoveSharePoint.com&amp;lt;/member&amp;gt;&lt;br /&gt;&amp;lt;member&amp;gt;http://aknauer.blogspot.com&amp;lt;/member&amp;gt;&lt;br /&gt;&amp;lt;member&amp;gt;http://www.markus-alt.de&amp;lt;/member&amp;gt;&lt;br /&gt;&amp;lt;member&amp;gt;http://aknauer.blogspot.com&amp;lt;/member&amp;gt;&lt;br /&gt;&amp;lt;member&amp;gt;http://bydprojekt.blogspot.com&amp;lt;/member&amp;gt;&lt;br /&gt;&amp;lt;member&amp;gt;http://www.andreaseissmann.de&amp;lt;/member&amp;gt;&lt;br /&gt;&amp;lt;member&amp;gt;http://cglessner.blogspot.com&amp;lt;/member&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;/attrib&amp;gt;&lt;br /&gt;&amp;lt;section name="include_uris"&amp;gt;&lt;br /&gt;&amp;lt;attrib name="prefix" type="list-string"&amp;gt;&lt;br /&gt;&amp;lt;member&amp;gt;http://dataone.de&amp;lt;/member&amp;gt;&lt;br /&gt;&amp;lt;member&amp;gt;http://iLoveSharePoint.com&amp;lt;/member&amp;gt;&lt;br /&gt;&amp;lt;member&amp;gt;http://aknauer.blogspot.com&amp;lt;/member&amp;gt;&lt;br /&gt;&amp;lt;member&amp;gt;http://www.markus-alt.de&amp;lt;/member&amp;gt;&lt;br /&gt;&amp;lt;member&amp;gt;http://bydprojekt.blogspot.com&amp;lt;/member&amp;gt;&lt;br /&gt;&amp;lt;member&amp;gt;http://www.andreaseissmann.de&amp;lt;/member&amp;gt;&lt;br /&gt;&amp;lt;member&amp;gt;http://cglessner.blogspot.com&amp;lt;/member&amp;gt;&lt;br /&gt;&amp;lt;/attrib&amp;gt;&lt;br /&gt;&amp;lt;/section&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;section name="crawlmode"&amp;gt;&lt;br /&gt;&amp;lt;!--Crawl depth (use DEPTH:n to do level crawling).--&amp;gt;&lt;br /&gt;&amp;lt;attrib name="mode" type="string"&amp;gt;FULL&amp;lt;/attrib&amp;gt;&lt;br /&gt;&amp;lt;!--Follow links from one hostname to another (interlinks).--&amp;gt;&lt;br /&gt;&amp;lt;attrib name="fwdlinks" type="boolean"&amp;gt;no&amp;lt;/attrib&amp;gt;&lt;br /&gt;&amp;lt;!--Reset crawl level when following interlinks.--&amp;gt;&lt;br /&gt;&amp;lt;attrib name="reset_level" type="boolean"&amp;gt;no&amp;lt;/attrib&amp;gt;&lt;br /&gt;&amp;lt;/section&amp;gt;&lt;br /&gt;&amp;lt;attrib name="max_uri_recursion" type="integer"&amp;gt;5&amp;lt;/attrib&amp;gt;&lt;br /&gt;&amp;lt;/SubDomain&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;!-- List of start (seed) URIs. --&amp;gt;&lt;br /&gt;&amp;lt;attrib name="start_uris" type="list-string"&amp;gt;&lt;br /&gt;&amp;lt;member&amp;gt;http://intranet&amp;lt;/member&amp;gt;&lt;br /&gt;&amp;lt;member&amp;gt;http://dataone.de&amp;lt;/member&amp;gt;&lt;br /&gt;&amp;lt;member&amp;gt;http://iLoveSharePoint.com&amp;lt;/member&amp;gt;&lt;br /&gt;&amp;lt;member&amp;gt;http://www.markus-alt.de/blog&amp;lt;/member&amp;gt;&lt;br /&gt;&amp;lt;member&amp;gt;http://aknauer.blogspot.com&amp;lt;/member&amp;gt;&lt;br /&gt;&amp;lt;member&amp;gt;http://bydprojekt.blogspot.com&amp;lt;/member&amp;gt;&lt;br /&gt;&amp;lt;member&amp;gt;http://www.andreaseissmann.de&amp;lt;/member&amp;gt;&lt;br /&gt;&amp;lt;member&amp;gt;http://cglessner.blogspot.com&amp;lt;/member&amp;gt;&lt;br /&gt;&amp;lt;/attrib&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;!-- Include and exclude rules. Each type of rule may contain a   --&amp;gt;&lt;br /&gt;&amp;lt;!-- the following types: exact, prefix, suffix, regexp and file. --&amp;gt;&lt;br /&gt;&amp;lt;!-- See "include domains" for an example.                        --&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;!-- Include the following hostnames in the crawl. If no hostnames --&amp;gt;&lt;br /&gt;&amp;lt;!-- are specified, the crawler will crawl any hostname unless     --&amp;gt;&lt;br /&gt;&amp;lt;!-- "include_uris" are specified, in which case only URIs         --&amp;gt;&lt;br /&gt;&amp;lt;!-- those rules are crawled.                                      --&amp;gt;&lt;br /&gt;&amp;lt;section name="include_domains"&amp;gt;&lt;br /&gt;&amp;lt;attrib name="exact" type="list-string"&amp;gt;&amp;lt;/attrib&amp;gt;&lt;br /&gt;&amp;lt;attrib name="prefix" type="list-string"&amp;gt;&amp;lt;/attrib&amp;gt;&lt;br /&gt;&amp;lt;attrib name="suffix" type="list-string"&amp;gt;&amp;lt;/attrib&amp;gt;&lt;br /&gt;&amp;lt;attrib name="file" type="list-string"&amp;gt;&amp;lt;/attrib&amp;gt;&lt;br /&gt;&amp;lt;/section&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;!-- Include the following URIs in the crawl. --&amp;gt;&lt;br /&gt;&amp;lt;section name="include_uris"&amp;gt;&amp;lt;/section&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;!-- The following hostnames will be excluded from the crawl, --&amp;gt;&lt;br /&gt;&amp;lt;!-- even if they were included by include rules above.       --&amp;gt;&lt;br /&gt;&amp;lt;section name="exclude_domains"&amp;gt;&amp;lt;/section&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;!-- The following URIS will be excluded from the crawl, --&amp;gt;&lt;br /&gt;&amp;lt;!-- even if they were included by include rules above.  --&amp;gt;&lt;br /&gt;&amp;lt;section name="exclude_uris"&amp;gt;&amp;lt;/section&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;!-- Crawl Mode --&amp;gt;&lt;br /&gt;&amp;lt;section name="crawlmode"&amp;gt;&lt;br /&gt;&amp;lt;!-- Crawl depth (use DEPTH:n to do level crawling). --&amp;gt;&lt;br /&gt;&amp;lt;attrib name="mode" type="string"&amp;gt;DEPTH:0&amp;lt;/attrib&amp;gt;&lt;br /&gt;&amp;lt;!-- Follow links from one hostname to another (interlinks). --&amp;gt;&lt;br /&gt;&amp;lt;attrib name="fwdlinks" type="boolean"&amp;gt;no&amp;lt;/attrib&amp;gt;&lt;br /&gt;&amp;lt;!-- Reset crawl level when following interlinks. --&amp;gt;&lt;br /&gt;&amp;lt;attrib name="reset_level" type="boolean"&amp;gt;no&amp;lt;/attrib&amp;gt;&lt;br /&gt;&amp;lt;/section&amp;gt;&lt;br /&gt;&amp;lt;section name="passwd"&amp;gt;&lt;br /&gt;&amp;lt;attrib name="http://intranet" type="string"&amp;gt;&lt;br /&gt;FastCrawl:pass@word1:contoso:auto&lt;br /&gt;&amp;lt;/attrib&amp;gt;&lt;br /&gt;&amp;lt;/section&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;attrib name="robots" type="boolean"&amp;gt;no&amp;lt;/attrib&amp;gt;&lt;br /&gt;&amp;lt;attrib name="max_uri_recursion" type="integer"&amp;gt;5&amp;lt;/attrib&amp;gt;&lt;br /&gt;&amp;lt;!-- Delay in seconds between requests to a single site --&amp;gt;&lt;br /&gt;&amp;lt;attrib name="delay" type="real"&amp;gt;60&amp;lt;/attrib&amp;gt;&lt;br /&gt;&amp;lt;!-- Length of crawl cycle expressed in minutes --&amp;gt;&lt;br /&gt;&amp;lt;attrib name="refresh" type="real"&amp;gt;1440&amp;lt;/attrib&amp;gt;&lt;br /&gt;&amp;lt;!-- Maximum number of documents to retrieve from one site. --&amp;gt;&lt;br /&gt;&amp;lt;attrib name="max_doc" type="integer"&amp;gt;5000&amp;lt;/attrib&amp;gt;&lt;br /&gt;&amp;lt;!-- Let each Node Scheduler crawl this many sites simultaneously. --&amp;gt;&lt;br /&gt;&amp;lt;attrib name="max_sites" type="integer"&amp;gt;32&amp;lt;/attrib&amp;gt;&lt;br /&gt;&amp;lt;!-- Maximum size of a document (bytes). --&amp;gt;&lt;br /&gt;&amp;lt;attrib name="cut_off" type="integer"&amp;gt; 5000000 &amp;lt;/attrib&amp;gt;&lt;br /&gt;&amp;lt;!-- Toggle JavaScript support (using the Browser Engine). --&amp;gt;&lt;br /&gt;&amp;lt;attrib name="use_javascript" type="boolean"&amp;gt; no &amp;lt;/attrib&amp;gt;&lt;br /&gt;&amp;lt;!-- Toggle near duplicate detection. --&amp;gt;&lt;br /&gt;&amp;lt;attrib name="near_duplicate_detection" type="boolean"&amp;gt;no&amp;lt;/attrib&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;!-- Inclusion and exclusion.                                   --&amp;gt;&lt;br /&gt;&amp;lt;!--                                                            --&amp;gt;&lt;br /&gt;&amp;lt;!-- The following section sets up what content to crawl and    --&amp;gt;&lt;br /&gt;&amp;lt;!-- not to crawl.                                              --&amp;gt;&lt;br /&gt;&amp;lt;!-- Only crawl HTTP/HTTPS (e.g., don't crawl FTP). --&amp;gt;&lt;br /&gt;&amp;lt;attrib name="allowed_schemes" type="list-string"&amp;gt;&lt;br /&gt;&amp;lt;member&amp;gt; http &amp;lt;/member&amp;gt;&lt;br /&gt;&amp;lt;member&amp;gt; https &amp;lt;/member&amp;gt;&lt;br /&gt;&amp;lt;/attrib&amp;gt;&lt;br /&gt;&amp;lt;!-- Allow these MIME types to be retrieved. --&amp;gt;&lt;br /&gt;&amp;lt;attrib name="allowed_types" type="list-string"&amp;gt;&lt;br /&gt;&amp;lt;member&amp;gt; text/* &amp;lt;/member&amp;gt;&lt;br /&gt;&amp;lt;member&amp;gt; application/* &amp;lt;/member&amp;gt;&lt;br /&gt;&amp;lt;/attrib&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;/DomainSpecification&amp;gt;&lt;br /&gt;&amp;lt;/CrawlerConfig&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;The main domain specification for content collection sp (sp is the default collection for SharePoint) is configured to crawl a page depth of 0 (DEPTH:0) and to not forward to hyperlinks pointing to other domains (fwdlinks=false). The start uris contains the url to our intranet, homepage and blogs. At this level there isn’t any include uri or domain pattern specified. This means any url will match the rule. In the sub domain “intranet” I defined as start uri &lt;a href="http://intranet/"&gt;http://intranet/&lt;/a&gt; and very important to only include uris that start with &lt;a href="http://intranet/"&gt;http://intranet/&lt;/a&gt; or &lt;a href="http://mysite/"&gt;http://mysite/&lt;/a&gt; to this sub domain. I also defined a page depth of full and to follow external urls. Every url that start with the previous defined url prefixes will follow that crawl rule. This means that the &lt;a href="http://intranet/"&gt;http://intranet/&lt;/a&gt; will be crawled with full depth and also follows external links to other domains. But the followed domains (e.g. “http://microsoft.com”) will not match the intranet sub domain pattern and will fallback to the main domain specification which only allows to crawl the particular page. There is also a sub domain called “full_depth_no_hops” which includes our blogs and homepage in the include uri patterns with full page depth and no forwarding. Exactly what I want :-)&lt;br /&gt;&lt;br /&gt;&lt;h3&gt;Deploy the configuration&lt;/h3&gt;&lt;ul&gt;&lt;li&gt;Log on to the FAST Search Server &lt;/li&gt;&lt;li&gt;Copy your configuration to &lt;strong&gt;“%FASTSEARCH%\etc\”&lt;/strong&gt; (e.g. MyCollection.xml) &lt;/li&gt;&lt;li&gt;Start the FAST Search PowerShell Shell &lt;/li&gt;&lt;li&gt;Ensure that crawler is started: &lt;strong&gt;&lt;a href="http://technet.microsoft.com/en-us/library/ee943516.aspx" target="_blank"&gt;nctrl.exe&lt;/a&gt; start crawler&lt;/strong&gt; &lt;/li&gt;&lt;li&gt;Register the config: &lt;strong&gt;&lt;a href="http://technet.microsoft.com/en-us/library/ee943521.aspx" target="_blank"&gt;cawleradmin.exe&lt;/a&gt;&lt;/strong&gt; &lt;strong&gt;--addconfig “%FASTSEARCH%\etc\MyCollection.xml”&lt;/strong&gt; &lt;/li&gt;&lt;li&gt;(optional) Start a new crawl: &lt;strong&gt;cawleradmin.exe&lt;/strong&gt; –&lt;strong&gt;refetch&lt;/strong&gt; &lt;/li&gt;&lt;li&gt;Monitor the&lt;strong&gt; &lt;/strong&gt;fetch log: &lt;strong&gt;“%FASTSEARCH%\etc\var\log\crawler\node\fetch\sp”&lt;/strong&gt;&lt;/li&gt;&lt;/ul&gt;&lt;strong&gt;Fetch log will look like this:&lt;/strong&gt; &lt;br /&gt;2010-12-03-17:03:43 200 REDIRECT&amp;nbsp; &lt;a href="http://ilovesharepoint.com/"&gt;http://ilovesharepoint.com/&lt;/a&gt; Redirect URI=&lt;a href="http://cglessner.de/"&gt;http://cglessner.de/&lt;/a&gt; 2010-12-03-17:03:44 200 NEW&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;a href="http://bydprojekt.blogspot.com/"&gt;http://bydprojekt.blogspot.com/&lt;/a&gt; 2010-12-03-17:03:46 200 REDIRECT&amp;nbsp; &lt;a href="http://www.markus-alt.de/"&gt;http://www.markus-alt.de/&lt;/a&gt; Redirect URI=&lt;a href="http://www.markus-alt.de/blog"&gt;http://www.markus-alt.de/blog&lt;/a&gt; 2010-12-03-17:03:46 200 NEW&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;a href="http://aknauer.blogspot.com/"&gt;http://aknauer.blogspot.com/&lt;/a&gt; 2010-12-03-17:03:53 200 NEW&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;a href="http://www.andreaseissmann.de/"&gt;http://www.andreaseissmann.de/&lt;/a&gt; 2010-12-03-17:04:43 302 REDIRECT&amp;nbsp; &lt;a href="http://intranet/"&gt;http://intranet/&lt;/a&gt; Redirect URI=&lt;a href="http://intranet/Pages/Home.aspx"&gt;http://intranet/Pages/Home.aspx&lt;/a&gt; 2010-12-03-17:04:43 301 REDIRECT&amp;nbsp; &lt;a href="http://www.markus-alt.de/blog"&gt;http://www.markus-alt.de/blog&lt;/a&gt; Redirect URI=&lt;a href="http://www.markus-alt.de/blog/"&gt;http://www.markus-alt.de/blog/&lt;/a&gt; 2010-12-03-17:04:43 302 REDIRECT&amp;nbsp; &lt;a href="http://dataone.de/Seiten/VariationRoot.aspx"&gt;http://dataone.de/Seiten/VariationRoot.aspx&lt;/a&gt; Redirect URI=http://dataone.de/de &lt;br /&gt;….&lt;br /&gt;&lt;h4&gt;&lt;strong&gt;The FAST Search Web crawler&lt;/strong&gt; is a high end Web Crawler!&lt;/h4&gt;Keep in mind that you still need the SharePoint crawler because of the keywords, taxonomy and security. The web crawler will do an additional crawl. FAST can handle this duplicates. The second crawl is a drawback, but the result is worth it. &lt;br /&gt;&lt;strong&gt;I will post more details (hopefully) soon…&lt;/strong&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3766174345251248841-1516974666028659704?l=www.ilovesharepoint.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.ilovesharepoint.com/feeds/1516974666028659704/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3766174345251248841&amp;postID=1516974666028659704' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3766174345251248841/posts/default/1516974666028659704'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3766174345251248841/posts/default/1516974666028659704'/><link rel='alternate' type='text/html' href='http://www.ilovesharepoint.com/2010/12/fast-search-web-crawler-part-i.html' title='FAST Search Web Crawler – Part I'/><author><name>Christian</name><uri>http://www.blogger.com/profile/16986066591633364914</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='22' height='32' src='http://bp1.blogger.com/_J6SMSGCmItU/SGAIxRt-lLI/AAAAAAAAABo/EqgbBGe38FM/S220/DSC_0314_small.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh3.ggpht.com/_J6SMSGCmItU/TPq2ZctDrPI/AAAAAAAABaU/nN8UOxW5LIg/s72-c/image_thumb%5B2%5D.png?imgmax=800' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3766174345251248841.post-7614119533570091984</id><published>2010-12-04T16:39:00.001+01:00</published><updated>2011-03-20T21:24:55.926+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Event'/><category scheme='http://www.blogger.com/atom/ns#' term='SP2010'/><category scheme='http://www.blogger.com/atom/ns#' term='SharePoint'/><category scheme='http://www.blogger.com/atom/ns#' term='CollabDays'/><category scheme='http://www.blogger.com/atom/ns#' term='Swiss'/><category scheme='http://www.blogger.com/atom/ns#' term='Community'/><title type='text'>Review Collaboration Days 2010</title><content type='html'>&lt;p&gt;Last week has been the &lt;a href="http://collaborationdays.ch" target="_blank"&gt;Collaboration Days Swiss&lt;/a&gt;, with about 300 attendees it has been the biggest SharePoint event in Switzerland so far. I liked the fact that the event has been community driven. Especially many thanks to &lt;a href="http://twitter.com/sharepointszu" target="_blank"&gt;Samuel Zürcher&lt;/a&gt; and &lt;a href="http://twitter.com/stefanheinz" target="_blank"&gt;Stefan Heinz&lt;/a&gt; for their effort and commitment that has contributed significantly to the success of the event. I believe this was a big step forward for the SharePoint Community Swiss. What I personally regret, is that I had to cancel two session (and missed the #SharePint ;) because of hoarseness. Thanks to &lt;a href="http://dotnet-rocks.de" target="_blank"&gt;Thorsten Hans&lt;/a&gt; and Nicki Borell for the great backup. &lt;/p&gt; &lt;p&gt;&lt;strong&gt;Interview with Eric Swift (Microsoft SharePoint General Manager)&lt;/strong&gt;&lt;/p&gt; &lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:5737277B-5D6D-4f48-ABFC-DD9C333F4C5D:156f7a8b-11d3-417e-93b0-1d3532244579" class="wlWriterEditableSmartContent"&gt;&lt;div id="fa4b376d-3610-4a5d-9b6e-cf1c3a8fc532" style="margin: 0px; padding: 0px; display: inline;"&gt;&lt;div&gt;&lt;a href="http://www.youtube.com/watch?v=V74BUgCy3Eo" target="_new"&gt;&lt;img src="http://lh4.ggpht.com/_J6SMSGCmItU/TPpgkkKjAoI/AAAAAAAABaA/8rRJq7qEQhU/videoc117ce147549%5B9%5D.jpg?imgmax=800" style="border-style: none" galleryimg="no" onload="var downlevelDiv = document.getElementById('fa4b376d-3610-4a5d-9b6e-cf1c3a8fc532'); downlevelDiv.innerHTML = &amp;quot;&amp;lt;div&amp;gt;&amp;lt;object width=\&amp;quot;425\&amp;quot; height=\&amp;quot;355\&amp;quot;&amp;gt;&amp;lt;param name=\&amp;quot;movie\&amp;quot; value=\&amp;quot;http://www.youtube.com/v/V74BUgCy3Eo&amp;amp;hl=en\&amp;quot;&amp;gt;&amp;lt;\/param&amp;gt;&amp;lt;embed src=\&amp;quot;http://www.youtube.com/v/V74BUgCy3Eo&amp;amp;hl=en\&amp;quot; type=\&amp;quot;application/x-shockwave-flash\&amp;quot; width=\&amp;quot;425\&amp;quot; height=\&amp;quot;355\&amp;quot;&amp;gt;&amp;lt;\/embed&amp;gt;&amp;lt;\/object&amp;gt;&amp;lt;\/div&amp;gt;&amp;quot;;" alt=""&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt; &lt;p&gt;&lt;br&gt;&lt;strong&gt;Interview with Nicolette du Toit (Marketing Manager for Office at Microsoft Swiss)&lt;/strong&gt;&lt;/p&gt; &lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:5737277B-5D6D-4f48-ABFC-DD9C333F4C5D:3fbefdcf-4b9d-4653-a85e-379a7ec932bd" class="wlWriterEditableSmartContent"&gt;&lt;div id="eca2b4c8-19e0-473c-8a89-a587d2d511c1" style="margin: 0px; padding: 0px; display: inline;"&gt;&lt;div&gt;&lt;a href="http://www.youtube.com/watch?v=J5debslfrQw" target="_new"&gt;&lt;img src="http://lh6.ggpht.com/_J6SMSGCmItU/TPpglDqnrSI/AAAAAAAABaE/NctPLuYSfY8/videoedb1caba18ae%5B9%5D.jpg?imgmax=800" style="border-style: none" galleryimg="no" onload="var downlevelDiv = document.getElementById('eca2b4c8-19e0-473c-8a89-a587d2d511c1'); downlevelDiv.innerHTML = &amp;quot;&amp;lt;div&amp;gt;&amp;lt;object width=\&amp;quot;425\&amp;quot; height=\&amp;quot;355\&amp;quot;&amp;gt;&amp;lt;param name=\&amp;quot;movie\&amp;quot; value=\&amp;quot;http://www.youtube.com/v/J5debslfrQw&amp;amp;hl=en\&amp;quot;&amp;gt;&amp;lt;\/param&amp;gt;&amp;lt;embed src=\&amp;quot;http://www.youtube.com/v/J5debslfrQw&amp;amp;hl=en\&amp;quot; type=\&amp;quot;application/x-shockwave-flash\&amp;quot; width=\&amp;quot;425\&amp;quot; height=\&amp;quot;355\&amp;quot;&amp;gt;&amp;lt;\/embed&amp;gt;&amp;lt;\/object&amp;gt;&amp;lt;\/div&amp;gt;&amp;quot;;" alt=""&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt; &lt;h5&gt;&lt;br&gt;I’m looking forward for the Collaboration Days 2011…&lt;/h5&gt; &lt;p&gt;PS: Thanks to the &lt;a href="http://www.hlmc.de/" target="_blank"&gt;HLMC&lt;/a&gt; stuff for all the ginger tea. I’m almost fit :-)&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3766174345251248841-7614119533570091984?l=www.ilovesharepoint.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.ilovesharepoint.com/feeds/7614119533570091984/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3766174345251248841&amp;postID=7614119533570091984' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3766174345251248841/posts/default/7614119533570091984'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3766174345251248841/posts/default/7614119533570091984'/><link rel='alternate' type='text/html' href='http://www.ilovesharepoint.com/2010/12/review-collaboration-days-2010.html' title='Review Collaboration Days 2010'/><author><name>Christian</name><uri>http://www.blogger.com/profile/16986066591633364914</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='22' height='32' src='http://bp1.blogger.com/_J6SMSGCmItU/SGAIxRt-lLI/AAAAAAAAABo/EqgbBGe38FM/S220/DSC_0314_small.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh4.ggpht.com/_J6SMSGCmItU/TPpgkkKjAoI/AAAAAAAABaA/8rRJq7qEQhU/s72-c/videoc117ce147549%5B9%5D.jpg?imgmax=800' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3766174345251248841.post-3272078882640133540</id><published>2010-11-14T20:57:00.001+01:00</published><updated>2011-03-20T21:24:55.922+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='TechEd'/><category scheme='http://www.blogger.com/atom/ns#' term='MVP'/><category scheme='http://www.blogger.com/atom/ns#' term='SP2010'/><category scheme='http://www.blogger.com/atom/ns#' term='SharePoint'/><category scheme='http://www.blogger.com/atom/ns#' term='SharePint'/><category scheme='http://www.blogger.com/atom/ns#' term='Europe'/><category scheme='http://www.blogger.com/atom/ns#' term='Community'/><title type='text'>My Impressions from TechEd Europe 2010</title><content type='html'>&lt;p&gt;&lt;font size="2"&gt;Unfortunately I haven’t seen much sessions. On the one hand I’ve worked at the SharePoint TLC booth and on the other I’ve missed some sessions cause of interesting discussions with other geeks and partners. Some sessions I’ve seen was great, others wasn't. Especially I don’t like the boring, visionless TechEd keynotes. But the magic of the TechEd aren’t merely the sessions, but rather the all the people from different nations. It has been amazing to meet in person all the geeks from Europe – many soul mates :)&lt;/font&gt;&lt;/p&gt;&lt;object width="400" height="300"&gt; &lt;param name="flashvars" value="offsite=true&amp;lang;=de-de&amp;amp;page_show_url=%2Fphotos%2F40226644%40N04%2Fsets%2F72157625262119585%2Fshow%2F&amp;amp;page_show_back_url=%2Fphotos%2F40226644%40N04%2Fsets%2F72157625262119585%2F&amp;amp;set_id=72157625262119585&amp;amp;jump_to="&gt;&lt;/param&gt; &lt;param name="movie" value="http://www.flickr.com/apps/slideshow/show.swf?v=71649"&gt;&lt;/param&gt; &lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;embed type="application/x-shockwave-flash" src="http://www.flickr.com/apps/slideshow/show.swf?v=71649" allowFullScreen="true" flashvars="offsite=true&amp;lang=de-de&amp;page_show_url=%2Fphotos%2F40226644%40N04%2Fsets%2F72157625262119585%2Fshow%2F&amp;page_show_back_url=%2Fphotos%2F40226644%40N04%2Fsets%2F72157625262119585%2F&amp;set_id=72157625262119585&amp;jump_to=" width="400" height="300"&gt;&lt;/embed&gt;&lt;/object&gt; &lt;h4&gt;SharePinting at TechEd Europe 2010&lt;/h4&gt; &lt;p&gt;If you think there’s an typo in the title, read this first: &lt;a href="http://www.sharepointreviews.com/onpoint/571-sharepint-a-happy-hour-for-sharepoint-pros.html"&gt;SharePoint by day, SharePint at night&lt;/a&gt;.&lt;/p&gt; &lt;p&gt;For sure we’ve organized a SharePint and I was responsible for choosing the location. I had picked out the &lt;a href="http://www.puro-berlin.de/#thelounge"&gt;PURO&lt;/a&gt; - an amazing sky lounge. But unfortunately the PURO didn’t let all the techies in – #FAIL!&lt;br&gt;No problem for the agile SharePoint geeks. &lt;a href="http://twitter.com/andrewwoody"&gt;Andrew Woodword&lt;/a&gt; just opened a second SharePint – the underground SharePint - at the &lt;a href="http://www.irishpubberlin.de/"&gt;Irish Pub&lt;/a&gt;. So we have had two simultaneous SharePints at one building, one at the 20th floor and one at the basement. In addition the two SharePints had been very different. Seems different styles of SharePints are emerging…&lt;/p&gt; &lt;h5&gt;Top of the Roof SharePinting&lt;/h5&gt; &lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:5737277B-5D6D-4f48-ABFC-DD9C333F4C5D:9ced620c-43db-4b34-8493-0b412dff9047" class="wlWriterEditableSmartContent"&gt;&lt;div id="1bd14394-e68a-4f2d-876f-3013813db019" style="margin: 0px; padding: 0px; display: inline;"&gt;&lt;div&gt;&lt;a href="http://www.youtube.com/watch?v=ojempiyR2xo" target="_new"&gt;&lt;img src="http://lh6.ggpht.com/_J6SMSGCmItU/TOA_NqSTGeI/AAAAAAAABZY/YjYAsC9p7vc/video76e9bf5abf77%5B16%5D.jpg?imgmax=800" style="border-style: none" galleryimg="no" onload="var downlevelDiv = document.getElementById('1bd14394-e68a-4f2d-876f-3013813db019'); downlevelDiv.innerHTML = &amp;quot;&amp;lt;div&amp;gt;&amp;lt;object width=\&amp;quot;425\&amp;quot; height=\&amp;quot;355\&amp;quot;&amp;gt;&amp;lt;param name=\&amp;quot;movie\&amp;quot; value=\&amp;quot;http://www.youtube.com/v/ojempiyR2xo&amp;amp;hl=en\&amp;quot;&amp;gt;&amp;lt;\/param&amp;gt;&amp;lt;embed src=\&amp;quot;http://www.youtube.com/v/ojempiyR2xo&amp;amp;hl=en\&amp;quot; type=\&amp;quot;application/x-shockwave-flash\&amp;quot; width=\&amp;quot;425\&amp;quot; height=\&amp;quot;355\&amp;quot;&amp;gt;&amp;lt;\/embed&amp;gt;&amp;lt;\/object&amp;gt;&amp;lt;\/div&amp;gt;&amp;quot;;" alt=""&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt; &lt;h5&gt;Meanwhile at the basement - Underground SharePinting&lt;/h5&gt; &lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:5737277B-5D6D-4f48-ABFC-DD9C333F4C5D:ed0afd6a-fcbd-4d0d-89fa-1ecc8229d264" class="wlWriterEditableSmartContent"&gt;&lt;div id="a9afe608-8693-45e5-8553-ec4ab28c31bc" style="margin: 0px; padding: 0px; display: inline;"&gt;&lt;div&gt;&lt;a href="http://www.youtube.com/watch?v=ALQzJr3iPi8" target="_new"&gt;&lt;img src="http://lh3.ggpht.com/_J6SMSGCmItU/TOA_OcptQDI/AAAAAAAABZc/yEFKy2dWt3w/video16a5fc4fed2b%5B18%5D.jpg?imgmax=800" style="border-style: none" galleryimg="no" onload="var downlevelDiv = document.getElementById('a9afe608-8693-45e5-8553-ec4ab28c31bc'); downlevelDiv.innerHTML = &amp;quot;&amp;lt;div&amp;gt;&amp;lt;object width=\&amp;quot;425\&amp;quot; height=\&amp;quot;355\&amp;quot;&amp;gt;&amp;lt;param name=\&amp;quot;movie\&amp;quot; value=\&amp;quot;http://www.youtube.com/v/ALQzJr3iPi8&amp;amp;hl=en\&amp;quot;&amp;gt;&amp;lt;\/param&amp;gt;&amp;lt;embed src=\&amp;quot;http://www.youtube.com/v/ALQzJr3iPi8&amp;amp;hl=en\&amp;quot; type=\&amp;quot;application/x-shockwave-flash\&amp;quot; width=\&amp;quot;425\&amp;quot; height=\&amp;quot;355\&amp;quot;&amp;gt;&amp;lt;\/embed&amp;gt;&amp;lt;\/object&amp;gt;&amp;lt;\/div&amp;gt;&amp;quot;;" alt=""&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt; &lt;p&gt;&lt;/p&gt; &lt;p&gt;&lt;br&gt;Thanks for the great week to: &lt;a href="http://twitter.com/mysharepoint"&gt;@mysharepoint&lt;/a&gt;, &lt;a href="http://twitter.com/"&gt;@tlanni&lt;/a&gt;, &lt;a href="http://twitter.com/andrewwoody"&gt;@andrewwoody&lt;/a&gt;, &lt;a href="http://twitter.com/"&gt;@katko&lt;/a&gt;, &lt;a href="http://twitter.com/mosslive"&gt;@mosslive&lt;/a&gt;, &lt;a href="http://twitter.com/robinmeure"&gt;@robinmeure&lt;/a&gt;, &lt;a href="http://twitter.com/danmc"&gt;@danmc&lt;/a&gt;, &lt;a href="http://twitter.com/markvlunenburg"&gt;@markvlunenburg&lt;/a&gt;, &lt;a href="http://twitter.com/rubykon"&gt;@rubykon&lt;/a&gt;,&lt;a href="http://twitter.com/draken"&gt; @draken&lt;/a&gt;, &lt;a href="http://twitter.com/jefffried"&gt;@jefffried&lt;/a&gt;, &lt;a href="http://twitter.com/atwork"&gt;@atwork&lt;/a&gt;, &lt;a href="http://www.microsoft.com/germany/msdn/pingme/SvenMaier/default.aspx"&gt;Sven Maier&lt;/a&gt;, &lt;a href="http://blogs.technet.com/b/patrick_heyde/"&gt;Patrick Heyde&lt;/a&gt;, &lt;a href="http://avepoint.com"&gt;AvePoint&lt;/a&gt; …&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3766174345251248841-3272078882640133540?l=www.ilovesharepoint.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.ilovesharepoint.com/feeds/3272078882640133540/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3766174345251248841&amp;postID=3272078882640133540' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3766174345251248841/posts/default/3272078882640133540'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3766174345251248841/posts/default/3272078882640133540'/><link rel='alternate' type='text/html' href='http://www.ilovesharepoint.com/2010/11/my-impressions-from-teched-europe-2010.html' title='My Impressions from TechEd Europe 2010'/><author><name>Christian</name><uri>http://www.blogger.com/profile/16986066591633364914</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='22' height='32' src='http://bp1.blogger.com/_J6SMSGCmItU/SGAIxRt-lLI/AAAAAAAAABo/EqgbBGe38FM/S220/DSC_0314_small.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh6.ggpht.com/_J6SMSGCmItU/TOA_NqSTGeI/AAAAAAAABZY/YjYAsC9p7vc/s72-c/video76e9bf5abf77%5B16%5D.jpg?imgmax=800' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3766174345251248841.post-1414353891096188750</id><published>2010-10-28T10:12:00.001+02:00</published><updated>2011-03-20T21:24:55.960+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Event'/><category scheme='http://www.blogger.com/atom/ns#' term='.NET'/><category scheme='http://www.blogger.com/atom/ns#' term='SharePoint'/><category scheme='http://www.blogger.com/atom/ns#' term='Social Media'/><category scheme='http://www.blogger.com/atom/ns#' term='Social Computing'/><title type='text'>My Event Tips for End of 2010</title><content type='html'>&lt;h4&gt;TechEd Europe 2010 (Berlin, 08-12.11.2010) &lt;/h4&gt; &lt;p&gt;I will work at the Technical Learning Center (TLC) for Office/SharePoint. (Twitter: &lt;a href="http://twitter.com/#!/search/tee10"&gt;#tee10&lt;/a&gt;)&lt;/p&gt; &lt;p&gt;&lt;a href="http://europe.msteched.com/"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://lh4.ggpht.com/_J6SMSGCmItU/TMkwX3nj0tI/AAAAAAAABY0/aBjCX-kEzNA/image%5B3%5D.png?imgmax=800" width="244" height="118"&gt;&lt;/a&gt;&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;h4&gt;Social Software 2010 (Munich, 23-25.11.2010)&lt;/h4&gt; &lt;p&gt;Conference about Social Software for Enterprise. I’ will hold a session called “Cave Painting to Social Computing” and will show examples with SharePoint 2010. Save 100€ with the promo code: ChGl_550. (Twitter: &lt;a href="http://twitter.com/#!/search?q=%23soso"&gt;#soso&lt;/a&gt;)&lt;/p&gt; &lt;p&gt;&lt;a href="http://www.socialconf.de/"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://lh4.ggpht.com/_J6SMSGCmItU/TMkwYmuU83I/AAAAAAAABY4/Nsf4sG7ERug/image%5B8%5D.png?imgmax=800" width="244" height="84"&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;h4&gt;Collaboration Days (Luzern, 01-02.2010)&lt;/h4&gt; &lt;p&gt;&lt;/p&gt; &lt;p&gt;&lt;/p&gt; &lt;p&gt;The most important SharePoint Event in Switzerland. I will hold a 1 day SharePoint Development Workshop on 30.11.2010 and got two sessions: “Social Computing with SharePoint 2010”&amp;nbsp; and “Diving into the SharePoint 2010 Fluent User Interface”. Additionally I’m glad to support the content board from the &lt;a href="http://www.sharepointcommunity.ch/default.aspx"&gt;SharePoint Community Switzerland&lt;/a&gt;.&amp;nbsp; (Twitter: &lt;a href="http://twitter.com/#!/search/collabdays"&gt;#collabdays&lt;/a&gt;)&lt;/p&gt; &lt;p&gt;&lt;a href="http://www.collaborationdays.ch"&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://lh3.ggpht.com/_J6SMSGCmItU/TMkwaPKF5gI/AAAAAAAABY8/KRG-bXNhdZI/image%5B15%5D.png?imgmax=800" width="244" height="78"&gt;&lt;/a&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3766174345251248841-1414353891096188750?l=www.ilovesharepoint.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.ilovesharepoint.com/feeds/1414353891096188750/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3766174345251248841&amp;postID=1414353891096188750' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3766174345251248841/posts/default/1414353891096188750'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3766174345251248841/posts/default/1414353891096188750'/><link rel='alternate' type='text/html' href='http://www.ilovesharepoint.com/2010/10/my-event-tips-for-end-of-2010.html' title='My Event Tips for End of 2010'/><author><name>Christian</name><uri>http://www.blogger.com/profile/16986066591633364914</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='22' height='32' src='http://bp1.blogger.com/_J6SMSGCmItU/SGAIxRt-lLI/AAAAAAAAABo/EqgbBGe38FM/S220/DSC_0314_small.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh4.ggpht.com/_J6SMSGCmItU/TMkwX3nj0tI/AAAAAAAABY0/aBjCX-kEzNA/s72-c/image%5B3%5D.png?imgmax=800' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3766174345251248841.post-8195470910325096128</id><published>2010-08-20T16:33:00.003+02:00</published><updated>2011-03-20T21:24:55.919+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='JavaScript'/><category scheme='http://www.blogger.com/atom/ns#' term='AJAX'/><category scheme='http://www.blogger.com/atom/ns#' term='SP2010'/><category scheme='http://www.blogger.com/atom/ns#' term='SharePoint'/><category scheme='http://www.blogger.com/atom/ns#' term='SOD'/><title type='text'>SharePoint Scripts On Demand (SP.SOD)</title><content type='html'>When you are working with Ribbon UI extensions, Client OM or with complex SharePoint 2010 java scripts, you may noticed a Java Script class called &lt;a href="http://msdn.microsoft.com/en-us/library/ff410742.aspx" target="_blank"&gt;SP.SOD&lt;/a&gt;. Built-in SharePoint scripts use this class extensively. Unfortunately &lt;a href="http://msdn.microsoft.com/en-us/library/ff410742.aspx" target="_blank"&gt;SP.SOD&lt;/a&gt; (I guess it stands for &lt;strong&gt;S&lt;/strong&gt;hare&lt;strong&gt;P&lt;/strong&gt;oint &lt;strong&gt;S&lt;/strong&gt;cripts &lt;strong&gt;O&lt;/strong&gt;n &lt;strong&gt;D&lt;/strong&gt;emand) is very rarely documented – until yet :)&lt;br /&gt;&lt;br /&gt;SharePoint 2010 makes extensive use of java scripts. These scripts are located in several different files. And commonly these scripts have dependencies to functions and classes defined in other script files. Means the built-in SharePoint scripts and for sure your own scripts have to care about when which script will be loaded. And exactly this is the job of SP.SOD class! SP.SOD is defined in init.js&lt;strong&gt; &lt;/strong&gt;and will be load in the HTML head section automatically. &lt;br /&gt;&lt;h3&gt;ScriptLink&lt;/h3&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/ff410742.aspx" target="_blank"&gt;SP.SOD&lt;/a&gt; works tightly together with the &lt;a href="http://msdn.microsoft.com/en-us/library/microsoft.sharepoint.webcontrols.scriptlink.aspx" target="_blank"&gt;ScriptLink&lt;/a&gt; server control. &lt;a href="http://msdn.microsoft.com/en-us/library/microsoft.sharepoint.webcontrols.scriptlink.aspx" target="_blank"&gt;ScriptLink&lt;/a&gt; is a SharePoint server control for registering java script files. &lt;br /&gt;&amp;lt;SharePoint:ScriptLink ID="scriptLink1" runat="server" Name="My_Script.js" LoadAfterUI="true" OnDemand="false" /&amp;gt;&lt;br /&gt;&lt;br /&gt;In the “&lt;strong&gt;Name&lt;/strong&gt;” property you should enter the name of the script file. The control assumes that the script is located in the layout’s root folder. You could also use a relative URL instead of the script name, but cause problems with OnDemand=true. The intention is definitely to use the script name. &lt;strong&gt;Putting your scripts directly into the layouts folder without a solution/feature specific subfolder seems to be against the best practice, but is required! &lt;/strong&gt;I recommend using solution/feature prefix for the files instead of a folder.&lt;br /&gt;&lt;br /&gt;“&lt;strong&gt;Localizable&lt;/strong&gt;” true instructs the control to search the script in the language specific subfolders of the layout’s folder (e.g. _layouts/1033/MyScript.js). &lt;br /&gt;&lt;br /&gt;“&lt;strong&gt;LoadAfterUI&lt;/strong&gt;” determines where the script reference will be rendered in the HTML document. False inserts the reference into the HTML head. True inserts the reference at the end of the HTML body.&lt;br /&gt;&lt;br /&gt;“&lt;strong&gt;OnDemand&lt;/strong&gt;” true specifies that the script should be loaded on demand. &lt;strong&gt;False&lt;/strong&gt; will render the following script code:&lt;br /&gt;&lt;br /&gt;&lt;pre class="brush: xml;"&gt;&amp;lt;script type="text/javascript"&amp;gt;&lt;br /&gt;// &amp;lt;![CDATA[&lt;br /&gt;document.write('&amp;lt;script type="text/javascript" src="/_layouts/my_script.js"&amp;gt;&amp;lt;/' + 'script&amp;gt;');&lt;br /&gt;// ]]&amp;gt;&lt;br /&gt;&amp;lt;/script&amp;gt;&lt;/pre&gt;&lt;br /&gt;&lt;strong&gt;True&lt;/strong&gt; will render: &lt;br /&gt;&lt;pre class="brush: xml;"&gt;&amp;lt;script type="text/javascript"&amp;gt;RegisterSod("my_script.js", "\u002f_layouts\u002fmy_script.js");&amp;lt;/script&amp;gt;&lt;/pre&gt;&lt;br /&gt;As you see “true” doesn’t insert the script reference directly, instead it calls the function RegistedSod. RegisterSod is the same as &lt;a href="http://msdn.microsoft.com/en-us/library/ff411760.aspx" target="_blank"&gt;&lt;strong&gt;SP.SOD.registerSod(key, url)&lt;/strong&gt;&lt;/a&gt;&lt;strong&gt;.&lt;/strong&gt; &lt;strong&gt;The script will not be loaded until it get explicitly requested&lt;/strong&gt; (see SP.SOD.executeFunc)&lt;strong&gt;!&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;Instead of using SPScriptLink in a declarative way to register scripts you could also do this with some static methods of SPScriptLink in the code behind:&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/microsoft.sharepoint.webcontrols.scriptlink.registerscriptafterui.aspx" target="_blank"&gt;ScriptLink.RegisterScriptAfterUI&lt;/a&gt; (LoadAfterUI=true)&lt;/li&gt;&lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/microsoft.sharepoint.webcontrols.scriptlink.registerondemand.aspx" target="_blank"&gt;ScriptLink.RegisterOnDemand&lt;/a&gt; (OnDemand=true)&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;h3&gt;SP.SOD.executeOrDelayUntilScriptLoaded&lt;/h3&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/ff411788.aspx" target="_blank"&gt;SP.SOD.executeOrDelayUntilScriptLoaded(func, scriptName)&lt;/a&gt; schedules an asynchronous callback function (func) which will be called when the script has signaled finished loading. Signaled finished loading means that the script has called &lt;a href="http://msdn.microsoft.com/en-us/library/ff408340.aspx"&gt;notifyScriptLoadedAndExecuteWaitingJobs(scriptName)&lt;/a&gt;. All SharePoint built-in scripts will call &lt;a href="http://msdn.microsoft.com/en-us/library/ff408340.aspx"&gt;notifyScriptLoadedAndExecuteWaitingJobs&lt;/a&gt; when they have finished loading. &lt;strong&gt;ExcuteOrDelayUntilScriptLoaded does not trigger loading an on demand script (SOD)!&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;&lt;em&gt;There is a very similar function pair called &lt;/em&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/ff410354.aspx"&gt;&lt;em&gt;executeOrDelayUntilEventNotified&lt;/em&gt;&lt;/a&gt;&lt;em&gt;/&lt;/em&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/ff408441.aspx"&gt;&lt;em&gt;notifyEventAndExecuteWaitingJobs&lt;/em&gt;&lt;/a&gt;&lt;em&gt;. The only diffrence is that&amp;nbsp; the executeOrDelayUntilScriptLoaded/executeOrDelayUntilScriptLoaded function pair prefixes internally the scriptName with “sp.scriptloaded-“.&lt;/em&gt; &lt;br /&gt;&lt;br /&gt;&lt;h4&gt;Example 1:&lt;/h4&gt;&lt;strong&gt;My_ApplicationPage.aspx&lt;/strong&gt;&lt;br /&gt;&lt;pre class="brush: xml;"&gt;&amp;lt;asp:Content ID="PageHead" ContentPlaceHolderID="PlaceHolderAdditionalPageHead" runat="server"&amp;gt;&lt;br /&gt;&amp;lt;SharePoint:ScriptLink ID="sl" runat="server" Name="My_Script.js" LoadAfterUI="true" OnDemand="false" /&amp;gt;&lt;br /&gt;&amp;lt;script type="text/javascript" language="javascript"&amp;gt;&lt;br /&gt;&lt;br /&gt;function myCallback() {&lt;br /&gt;//sayHello is defined in MyScript.js&lt;br /&gt;sayHello();&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;alert('1');&lt;br /&gt;&lt;br /&gt;ExecuteOrDelayUntilScriptLoaded(myCallback, "my_script.js");&lt;br /&gt;&lt;br /&gt;alert('2');&lt;br /&gt;&lt;br /&gt;&amp;lt;/script&amp;gt;&lt;br /&gt;&amp;lt;/asp:Content&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;strong&gt;My_Script.js&lt;/strong&gt;&lt;br /&gt;&lt;pre class="brush: js;"&gt;alert('3');&lt;br /&gt;&lt;br /&gt;function sayHello() {&lt;br /&gt;alert('4');&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;SP.SOD.notifyScriptLoadedAndExecuteWaitingJobs("my_script.js");&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;We have defined a script link for My_Script.js which will be inserted at the end of the HTML body (LoadAfterUI=true). In the inline script in the head we have registered the function myCallback to get executed when MyScript.js has signaled finished loading. The alerts will popup in the sequence 1-2-3-4. You could also wait for any built-in script to have finished loading e.g. executeOrDelayUntilScriptLoaded(myCallback, “sp.ui.js”). &lt;br /&gt;&lt;br /&gt;You could also use the static method &lt;a href="http://msdn.microsoft.com/en-us/library/microsoft.sharepoint.webcontrols.scriptlink.registerdelayedexecutionscript.aspx" target="_blank"&gt;ScriptLink.RegisterDelayedExecutionScript&lt;/a&gt; of SPScriptLink to register a delayed script execution (instead of the line: ExecuteOrDelayUntilScriptLoaded(myCallback, "my_script.js");&lt;br /&gt;&lt;br /&gt;&lt;h3&gt;SP.SOD.registerSod&lt;/h3&gt;With &lt;a href="http://msdn.microsoft.com/en-us/library/ff411760.aspx" target="_blank"&gt;SP.SOD.registerSod(key, url)&lt;/a&gt; you can manual register an on demand script via JavaScript. &lt;br /&gt;&lt;pre class="brush: xml;"&gt;&amp;lt;script type='text/javascript'&amp;gt;RegisterSod('my_script.js', '/_layouts/my_script.js'); &amp;lt;/script&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;h3&gt;SP.SOD.executeFunc&lt;/h3&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/ff409592.aspx"&gt;SP.SOD.executeFunc(key, functionName, fn)&lt;/a&gt; is used to load on demand scripts (ScriptLink.OnDemand=true). &lt;br /&gt;The “&lt;strong&gt;key&lt;/strong&gt;” parameter must match to the ScriptLink’s Name property &lt;em&gt;(Use small letters for key, because an issue with string normalizing in RegisterSodDep)&lt;/em&gt;. &lt;br /&gt;&lt;br /&gt;“&lt;strong&gt;functionName&lt;/strong&gt;” awaits a type name of an ASP.NET AJAX JavaScript class. ExecuteFunc first checks if the AJAX class has already been registered, when not it checks additionally if a SOD with this key has already been loaded and finally it will load the SOD. Load means adding dynamically the corresponding script tag to the HTML head. The check for the type helps to ensure that the script has not been already loaded via an usual script tag before. When you don’t want to work with AJAX JavaScript classes you can use “null” value for the functionName.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;fn &lt;/strong&gt;defines a callback that will be executed when the SOD has signaled finished loading. &lt;br /&gt;&lt;br /&gt;&lt;h4&gt;Example 2:&lt;/h4&gt;&lt;strong&gt;My_ApplicationPage.aspx&lt;/strong&gt;&lt;br /&gt;&lt;pre class="brush: xml;"&gt;&amp;lt;asp:Content ID="PageHead" ContentPlaceHolderID="PlaceHolderAdditionalPageHead" runat="server"&amp;gt;&lt;br /&gt;&amp;lt;SharePoint:ScriptLink ID="sl" runat="server" Name="My_Script.js" LoadAfterUI="true" OnDemand="false" /&amp;gt;&lt;br /&gt;&amp;lt;!-- RegisterSod('my_script.js', '/_layouts/My_Script.js'); --&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;script type="text/javascript" language="javascript"&amp;gt;&lt;br /&gt;&lt;br /&gt;function myCallback() {&lt;br /&gt;sayHello();       &lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;alert('1');&lt;br /&gt;&lt;br /&gt;SP.SOD.executeFunc("my_script.js", null, myCallback);&lt;br /&gt;&lt;br /&gt;alert('2');&lt;br /&gt;&lt;br /&gt;&amp;lt;/script&amp;gt;&lt;br /&gt;&amp;lt;/asp:Content&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;strong&gt;My_Script.js &lt;/strong&gt;keeps unchanged.&lt;br /&gt;&lt;br /&gt;The example is similar to example 1. The difference is that ScriptLink registers a SOD (ScriptLink.OnDemand=true) script. MyScript.js will not be loaded until it will be explicitly demanded with “SP.SOD.executeFunc(‘my_script.js’);”. When the SOD has signaled finished loading with “SP.SOD.notifyScriptLoadedAndExecuteWaitingJobs(‘my_script.js’);”&amp;nbsp; myCallback will be executed. The alerts will popup in the sequence 1-2-3-4 again.&lt;br /&gt;&lt;h3&gt;SP.SOD.registerSodDep&lt;/h3&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/ff410388.aspx" target="_blank"&gt;SP.SOD.registerSodDep(key, dep)&lt;/a&gt; can register SOD dependency. &lt;strong&gt;Key&lt;/strong&gt; defines the SOD that depends on the SOD defined in &lt;strong&gt;dep. &lt;/strong&gt;When the SOD in key will be requested, the SOD dependency will ensure that the SOD defined in dep will loaded before the actual SOD defined in key. You can also define a chain of dependencyies. This means the SOD in dep can also have dependencies, and the dependencies can have dependencies too and so on. The SOD loading mechanism keeps care to resolve all the required dependencies.&lt;br /&gt;&lt;br /&gt;&lt;h4&gt;Example 3:&lt;/h4&gt;&lt;strong&gt;My_ApplicationPage.aspx&lt;/strong&gt;&lt;br /&gt;&lt;pre class="brush: xml;"&gt;&amp;lt;asp:Content ID="PageHead" ContentPlaceHolderID="PlaceHolderAdditionalPageHead" runat="server"&amp;gt;&lt;br /&gt;&amp;lt;script type="text/javascript" language="javascript"&amp;gt;&lt;br /&gt;function myCallback() {&lt;br /&gt;sayHello();       &lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;alert('1');&lt;br /&gt;&lt;br /&gt;function myInit(){&lt;br /&gt;SP.SOD.executeFunc("my_script.js", null, myCallback);&lt;br /&gt;alert('2');&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;_spBodyOnLoadFunctionNames.push("myInit");&lt;br /&gt;&lt;br /&gt;RegisterSod('my_script.js', '/_layouts/My_Script.js');&lt;br /&gt;RegisterSod('my_script2.js', '/_layouts/My_Script2.js');&lt;br /&gt;&lt;br /&gt;RegisterSodDep('my_script.js', 'my_script2.js');&lt;br /&gt;&lt;br /&gt;&amp;lt;/script&amp;gt;&lt;br /&gt;&amp;lt;/asp:Content&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;My_Script.js&lt;/strong&gt;&lt;br /&gt;&lt;pre class="brush: js;"&gt;alert('4');&lt;br /&gt;&lt;br /&gt;function sayHello() {&lt;br /&gt;alert('5');&lt;br /&gt;sayHello2();&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;SP.SOD.notifyScriptLoadedAndExecuteWaitingJobs("my_script.js");&lt;br /&gt;&lt;/pre&gt;&lt;strong&gt;My_Script2.js&lt;/strong&gt;&lt;br /&gt;&lt;pre class="brush: js;"&gt;alert('3');&lt;br /&gt;&lt;br /&gt;function sayHello2() {&lt;br /&gt;alert('6');&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;SP.SOD.notifyScriptLoadedAndExecuteWaitingJobs("my_script2.js");&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;The example registers two SODs via JavaScript (you could do this with the ScriptLink control as well) and defines that my_script.js depends on my_script2.js. When my_script.js will be requested via “SP.SOD.executeFunc(‘my_script.js’, null, myCallback);” SP.SOD will first load my_script2.js and then my_script.js. The alerts will popup in the sequence 1-2-3-4-5-6.&lt;br /&gt;&lt;h3&gt;Summary&lt;/h3&gt;The idea of on demand script loading make really sense. SharePoint 2010 loads really a lot of JavaScripts - this takes time! So the idea is: first load the HTML and let it render by the browser so that the user is able to read the requested information as fast as possible. And in the second step load the behavior (the JavaScripts).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3766174345251248841-8195470910325096128?l=www.ilovesharepoint.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.ilovesharepoint.com/feeds/8195470910325096128/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3766174345251248841&amp;postID=8195470910325096128' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3766174345251248841/posts/default/8195470910325096128'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3766174345251248841/posts/default/8195470910325096128'/><link rel='alternate' type='text/html' href='http://www.ilovesharepoint.com/2010/08/sharepoint-scripts-on-demand-spsod.html' title='SharePoint Scripts On Demand (SP.SOD)'/><author><name>Christian</name><uri>http://www.blogger.com/profile/16986066591633364914</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='22' height='32' src='http://bp1.blogger.com/_J6SMSGCmItU/SGAIxRt-lLI/AAAAAAAAABo/EqgbBGe38FM/S220/DSC_0314_small.jpg'/></author><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3766174345251248841.post-1793684448525738519</id><published>2010-07-28T09:13:00.001+02:00</published><updated>2011-03-20T21:24:55.928+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Tools'/><category scheme='http://www.blogger.com/atom/ns#' term='Development'/><category scheme='http://www.blogger.com/atom/ns#' term='.NET'/><category scheme='http://www.blogger.com/atom/ns#' term='SharePoint'/><category scheme='http://www.blogger.com/atom/ns#' term='Contoso'/><title type='text'>My Development Box</title><content type='html'>&lt;p&gt;&lt;/p&gt;  &lt;h1&gt;&lt;/h1&gt;  &lt;p&gt;Here is the actual configuration of my development box. SharePoint and for sure .NET development works like a charm :)&lt;/p&gt;  &lt;blockquote&gt;   &lt;h3&gt;Hardware&lt;/h3&gt; &lt;/blockquote&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://h10010.www1.hp.com/wwpc/us/en/sm/WF05a/321957-321957-64295-3740645-3955549-4096175.html?jumpid=reg_R1002_USEN" target="_blank"&gt;HP Elitebook 8540w&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;Processor: Intel Core i7 -820 Quad 1.73 GHz&lt;/li&gt;    &lt;li&gt;RAM: 16 GB DDR3-SDRAM 1333 MHz (4x 4GB)&lt;/li&gt;    &lt;li&gt;Display: 15.6” HD+ integrated 2 MP Webcam&lt;/li&gt;    &lt;li&gt;Graphic: nVidia Quadro FX880M&lt;/li&gt;    &lt;li&gt;HD: 500 GB SATA 7.200rpm &lt;/li&gt;    &lt;li&gt;Connect: Intel 802.11 a/b/g/n , Bluetooth, UMTS&lt;/li&gt; &lt;/ul&gt;  &lt;blockquote&gt;   &lt;h3&gt;Software&lt;/h3&gt; &lt;/blockquote&gt;  &lt;ul&gt;   &lt;li&gt;&lt;font color="#666666"&gt;OS: Windows Server 2008 R2 Enterprise&lt;/font&gt;&lt;/li&gt;    &lt;li&gt;&lt;font color="#666666"&gt;Hyper-V&lt;/font&gt;&lt;/li&gt;    &lt;li&gt;&lt;font color="#666666"&gt;Office 2010 Prof. Plus&lt;/font&gt;&lt;/li&gt;    &lt;li&gt;&lt;font color="#666666"&gt;Visual Studio 2010 Ultimate&lt;/font&gt;&lt;/li&gt;    &lt;li&gt;&lt;font color="#666666"&gt;Expression Studio 4&lt;/font&gt;&lt;/li&gt;    &lt;li&gt;&lt;font color="#666666"&gt;&lt;a href="http://www.red-gate.com/products/reflector/" target="_blank"&gt;.NET Reflector&lt;/a&gt;&lt;/font&gt;&lt;/li&gt;    &lt;li&gt;&lt;font color="#666666"&gt;&lt;a href="http://www.jetbrains.com/resharper/" target="_blank"&gt;ReSharper&lt;/a&gt;&lt;/font&gt;&lt;/li&gt;    &lt;li&gt;&lt;font color="#666666"&gt;&lt;a href="http://site.typemock.com/" target="_blank"&gt;Typemock Isolator 2010&lt;/a&gt;&lt;/font&gt;&lt;/li&gt;    &lt;li&gt;&lt;font color="#666666"&gt;&lt;a href="http://www.techsmith.de/snagit.asp" target="_blank"&gt;SnagIt&lt;/a&gt;&amp;#160;&lt;/font&gt;&lt;/li&gt;    &lt;li&gt;&lt;font color="#666666"&gt;&lt;a href="http://www.techsmith.de/camtasia.asp" target="_blank"&gt;Camtasia&lt;/a&gt; &lt;/font&gt;&lt;/li&gt;    &lt;li&gt;&lt;font color="#666666"&gt;&lt;a href="http://www.mindjet.com/" target="_blank"&gt;MindManager&lt;/a&gt;&lt;/font&gt;&lt;/li&gt;    &lt;li&gt;&lt;font color="#666666"&gt;&lt;a href="http://www.getpaint.net/" target="_blank"&gt;Paint.NET&lt;/a&gt;&lt;/font&gt;&lt;/li&gt;    &lt;li&gt;&lt;font color="#666666"&gt;&lt;a href="http://www.tweetdeck.com/" target="_blank"&gt;Tweetdeck&lt;/a&gt;&lt;/font&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://explore.live.com/windows-live-writer" target="_blank"&gt;Windows Live Writer&lt;/a&gt;&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;font color="#666666"&gt;For SharePoint demos and workshops I’m using the Contoso Hyper-V image. Because Contoso didn’t use setup best practices (e.g. admin service accounts) I use for development a from scratch installed SharePoint Hyper-V image.&lt;/font&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3766174345251248841-1793684448525738519?l=www.ilovesharepoint.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.ilovesharepoint.com/feeds/1793684448525738519/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3766174345251248841&amp;postID=1793684448525738519' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3766174345251248841/posts/default/1793684448525738519'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3766174345251248841/posts/default/1793684448525738519'/><link rel='alternate' type='text/html' href='http://www.ilovesharepoint.com/2010/07/my-development-box.html' title='My Development Box'/><author><name>Christian</name><uri>http://www.blogger.com/profile/16986066591633364914</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='22' height='32' src='http://bp1.blogger.com/_J6SMSGCmItU/SGAIxRt-lLI/AAAAAAAAABo/EqgbBGe38FM/S220/DSC_0314_small.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3766174345251248841.post-7622203839659197343</id><published>2010-07-18T23:40:00.001+02:00</published><updated>2011-03-20T21:24:55.944+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SP2010'/><category scheme='http://www.blogger.com/atom/ns#' term='SharePoint'/><category scheme='http://www.blogger.com/atom/ns#' term='Nintex'/><category scheme='http://www.blogger.com/atom/ns#' term='Workflow'/><category scheme='http://www.blogger.com/atom/ns#' term='Twitter'/><title type='text'>User Defined Actions in Nintex Workflow 2010 (Domain Actions)</title><content type='html'>&lt;p&gt;My favorite new feature in &lt;a href="http://www.nintex.com/en-US/Products/Pages/NintexWorkflow2010.aspx" target="_blank"&gt;Nintex Workflow 2010&lt;/a&gt; are User Defined Actions (UDA). An UDA is a kind of workflow template which can be used like any other Nintex action. More technically spoken it is an composite activity. Comfortable is that you can design them in the same easy way as an usual Nintex workflow. A technically minded workflow designer can create domain UDAs, maybe to encapsulate web service calls to a SAP system. And later on the business users can use them in their workflows without any technical background knowledge. Time for an example…&lt;/p&gt;  &lt;blockquote&gt;   &lt;h3&gt;The “Send Tweet” User Defined Action&lt;/h3&gt; &lt;/blockquote&gt;  &lt;p&gt;In this example we will create a UDA for posting Twitter status updates. Imagine we are an social marketing aware company and want to give our marketing team the ability to send tweets from Nintex workflows. They should be able to design the workflows themselves (usually approval workflows) and should not care about technical details. Perfect scenario for an UDA.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Site Actions &amp;gt; Nintex Workflow 2010 &amp;gt; Manage UDAs&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh4.ggpht.com/_J6SMSGCmItU/TEN0hcLngRI/AAAAAAAABWw/FLHCXALnkUw/s1600-h/image%5B3%5D.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://lh4.ggpht.com/_J6SMSGCmItU/TEN0h2-xKzI/AAAAAAAABW0/Gtzgn2VeFKY/image_thumb%5B1%5D.png?imgmax=800" width="404" height="209" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Click “Create”&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh5.ggpht.com/_J6SMSGCmItU/TEN0icNAf3I/AAAAAAAABW4/voWqvUJp_G0/s1600-h/image%5B7%5D.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://lh6.ggpht.com/_J6SMSGCmItU/TEN0imuM0UI/AAAAAAAABW8/J5TiosjZASQ/image_thumb%5B3%5D.png?imgmax=800" width="404" height="104" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Start designing the UDA in the familiar Nintex WF designer&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh6.ggpht.com/_J6SMSGCmItU/TEN0jHlmJjI/AAAAAAAABXA/ElUng-cM_B4/s1600-h/image%5B11%5D.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://lh3.ggpht.com/_J6SMSGCmItU/TEN0jpRZuqI/AAAAAAAABXE/AMwcaTMa1sY/image_thumb%5B5%5D.png?imgmax=800" width="404" height="322" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Define input and output parameters&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh6.ggpht.com/_J6SMSGCmItU/TEN0ko_4inI/AAAAAAAABXI/eVgcBH9Pmi8/s1600-h/image%5B14%5D.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://lh6.ggpht.com/_J6SMSGCmItU/TEN0lCuaI1I/AAAAAAAABXM/Dye_7O7Tcso/image_thumb%5B6%5D.png?imgmax=800" width="244" height="203" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Create an input parameter for the status update message (Message).&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh6.ggpht.com/_J6SMSGCmItU/TEN0laGB-LI/AAAAAAAABXQ/q3kSuHGXRrs/s1600-h/image%5B18%5D.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://lh6.ggpht.com/_J6SMSGCmItU/TEN0l0W_MxI/AAAAAAAABXU/G0FR0Ogb2OU/image_thumb%5B8%5D.png?imgmax=800" width="404" height="277" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Drag an “Build dynamic string” action for building the URL and a “Web request” action for posting the update to the designer.&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh3.ggpht.com/_J6SMSGCmItU/TEN0mU0C4SI/AAAAAAAABXY/RZePzBd6GVE/s1600-h/image%5B22%5D.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://lh5.ggpht.com/_J6SMSGCmItU/TEN0nVNsuWI/AAAAAAAABXc/v5ymBp_Z83M/image_thumb%5B10%5D.png?imgmax=800" width="404" height="512" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Configuration of the “Build Url…” action. &lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh6.ggpht.com/_J6SMSGCmItU/TEN0n7ozCLI/AAAAAAAABXg/J9dmMfG4XmM/s1600-h/image%5B26%5D.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://lh6.ggpht.com/_J6SMSGCmItU/TEN0oZ_RcOI/AAAAAAAABXk/lpUUbd4lD-U/image_thumb%5B12%5D.png?imgmax=800" width="404" height="281" /&gt;&lt;/a&gt;&amp;#160;&amp;#160; &lt;br /&gt;&lt;em&gt;http://api.twitter.com/1/statuses/update.xml?status={WorkflowVariable:Message}&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;The result variable “Url” can be created directly the config dialog via the “Variables” menu item in the ribbon. &lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Configuration of the “Post…” action. &lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh5.ggpht.com/_J6SMSGCmItU/TEN0o0SGBVI/AAAAAAAABXo/2mH9GBocwLg/s1600-h/image%5B30%5D.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://lh5.ggpht.com/_J6SMSGCmItU/TEN0pVwgQoI/AAAAAAAABXs/30V2Mn9T9f0/image_thumb%5B14%5D.png?imgmax=800" width="404" height="239" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;You only need to configure Url, Username &amp;amp; Password and that the POST verb should be used. &lt;/p&gt;  &lt;p&gt;&lt;em&gt;Tip: Instead of defining the user credentials inline you can use a Nintex workflow constant of type credentials. The advantage is that you can change the credentials without changing and republishing the UDA.&lt;/em&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Configure UDA settings&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh5.ggpht.com/_J6SMSGCmItU/TEN0p5E6gzI/AAAAAAAABXw/LcWsz09uJpQ/s1600-h/image%5B34%5D.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://lh5.ggpht.com/_J6SMSGCmItU/TEN0qZ3sFmI/AAAAAAAABX0/UgYMa0zV7b4/image_thumb%5B16%5D.png?imgmax=800" width="404" height="341" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;The “Title” defines the display name of the action and the “Category” defines in which group it will be shown in the designer. Also nice is that you can define you own icons.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Publish the UDA&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh6.ggpht.com/_J6SMSGCmItU/TEN0q-hPm3I/AAAAAAAABX4/mPYdlqEA_WA/s1600-h/image%5B38%5D.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://lh6.ggpht.com/_J6SMSGCmItU/TEN0rdyxG-I/AAAAAAAABX8/XOpGWt_0TSM/image_thumb%5B18%5D.png?imgmax=800" width="404" height="74" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh6.ggpht.com/_J6SMSGCmItU/TEN0rj30-OI/AAAAAAAABYA/yE3c2qxN3Xk/s1600-h/image%5B46%5D.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://lh6.ggpht.com/_J6SMSGCmItU/TEN0sGTWbCI/AAAAAAAABYE/okdKG4-ngqc/image_thumb%5B22%5D.png?imgmax=800" width="404" height="117" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;By default the UDA is scoped for the current team site, but you can promote it to the site collection or farm level. Additionally you can import and export UDAs.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Use the “Send tweet” action in a workflow&lt;/strong&gt;&amp;#160; &lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh4.ggpht.com/_J6SMSGCmItU/TEN0srtif5I/AAAAAAAABYI/QtnXL6ff1Q8/s1600-h/image%5B50%5D.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://lh3.ggpht.com/_J6SMSGCmItU/TEN0s61sefI/AAAAAAAABYM/5i-022f4FWs/image_thumb%5B24%5D.png?imgmax=800" width="404" height="179" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;The “Send tweet” action is now available in the “Twitter” group on the workflow actions menu on the left. Now the marketing team could easily use it within an approval action.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Configuration of “Send Tweet”&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh6.ggpht.com/_J6SMSGCmItU/TEN0tbQtRdI/AAAAAAAABYQ/OSkLwC9oBlQ/s1600-h/image%5B54%5D.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://lh4.ggpht.com/_J6SMSGCmItU/TEN0t67JhVI/AAAAAAAABYU/lV1RLFoS5Lg/image_thumb%5B26%5D.png?imgmax=800" width="404" height="194" /&gt;&lt;/a&gt;&amp;#160;&amp;#160; &lt;/p&gt;  &lt;p&gt;The marketing team only have to provide the message for the Twitter status update and don’t care about any technical detail.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Test it&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Start the workflow and approve the tweet.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh3.ggpht.com/_J6SMSGCmItU/TEN0uFpDu8I/AAAAAAAABYY/kYmAfcJRngg/s1600-h/image%5B61%5D.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://lh4.ggpht.com/_J6SMSGCmItU/TEN0u7Q19rI/AAAAAAAABYc/T7pW2SRKhbc/image_thumb%5B29%5D.png?imgmax=800" width="404" height="52" /&gt;&lt;/a&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh3.ggpht.com/_J6SMSGCmItU/TEN0vHV7N2I/AAAAAAAABYg/nu9qZHb8bkA/s1600-h/image%5B62%5D.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://lh4.ggpht.com/_J6SMSGCmItU/TEN0voT6xgI/AAAAAAAABYk/4zDTg2VxHAY/image_thumb%5B30%5D.png?imgmax=800" width="404" height="162" /&gt;&lt;/a&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;You can easily encapsulate more Twitter API calls like this and build kind of a domain language. More ideas about Twitter and Nintex you can find on &lt;a href="http://www.markus-alt.de/blog/" target="_blank"&gt;Markus Alt’s blog&lt;/a&gt;. Twitter is just a trivial example, you could also use this approach to design domain actions SAP or for any other system. &lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3766174345251248841-7622203839659197343?l=www.ilovesharepoint.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.ilovesharepoint.com/feeds/7622203839659197343/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3766174345251248841&amp;postID=7622203839659197343' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3766174345251248841/posts/default/7622203839659197343'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3766174345251248841/posts/default/7622203839659197343'/><link rel='alternate' type='text/html' href='http://www.ilovesharepoint.com/2010/07/user-defined-actions-in-nintex-workflow.html' title='User Defined Actions in Nintex Workflow 2010 (Domain Actions)'/><author><name>Christian</name><uri>http://www.blogger.com/profile/16986066591633364914</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='22' height='32' src='http://bp1.blogger.com/_J6SMSGCmItU/SGAIxRt-lLI/AAAAAAAAABo/EqgbBGe38FM/S220/DSC_0314_small.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh4.ggpht.com/_J6SMSGCmItU/TEN0h2-xKzI/AAAAAAAABW0/Gtzgn2VeFKY/s72-c/image_thumb%5B1%5D.png?imgmax=800' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3766174345251248841.post-863375440158794363</id><published>2010-07-16T09:07:00.001+02:00</published><updated>2011-03-20T21:24:55.935+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SP2010'/><category scheme='http://www.blogger.com/atom/ns#' term='SharePoint'/><category scheme='http://www.blogger.com/atom/ns#' term='Nintex'/><category scheme='http://www.blogger.com/atom/ns#' term='Workflow'/><title type='text'>Amazing Nintex Workflow 2010 Promotion Video</title><content type='html'>&lt;p&gt;Watch this amazing video from Mike Fitzmaurice about &lt;a href="http://www.nintex.com/en-US/Products/Pages/NintexWorkflow2010.aspx" target="_blank"&gt;Nintex Workflow 2010&lt;/a&gt;. One of the coolest and most creative promotion videos I’ve ever seen! &lt;/p&gt;  &lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:5737277B-5D6D-4f48-ABFC-DD9C333F4C5D:958446d0-93eb-4b7f-8923-987ddeb87dfa" class="wlWriterEditableSmartContent"&gt;&lt;div id="5811afee-9fba-4374-92a0-24659e6fe01e" style="margin: 0px; padding: 0px; display: inline;"&gt;&lt;div&gt;&lt;a href="http://www.youtube.com/watch?v=3x3Zf8OnUXs" target="_new"&gt;&lt;img src="http://lh6.ggpht.com/_J6SMSGCmItU/TEAFSPoR9FI/AAAAAAAABWs/SUvXlyuH2Jg/video9402954ee702%5B3%5D.jpg?imgmax=800" style="border-style: none" galleryimg="no" onload="var downlevelDiv = document.getElementById('5811afee-9fba-4374-92a0-24659e6fe01e'); downlevelDiv.innerHTML = &amp;quot;&amp;lt;div&amp;gt;&amp;lt;object width=\&amp;quot;425\&amp;quot; height=\&amp;quot;355\&amp;quot;&amp;gt;&amp;lt;param name=\&amp;quot;movie\&amp;quot; value=\&amp;quot;http://www.youtube.com/v/3x3Zf8OnUXs&amp;amp;hl=en\&amp;quot;&amp;gt;&amp;lt;\/param&amp;gt;&amp;lt;embed src=\&amp;quot;http://www.youtube.com/v/3x3Zf8OnUXs&amp;amp;hl=en\&amp;quot; type=\&amp;quot;application/x-shockwave-flash\&amp;quot; width=\&amp;quot;425\&amp;quot; height=\&amp;quot;355\&amp;quot;&amp;gt;&amp;lt;\/embed&amp;gt;&amp;lt;\/object&amp;gt;&amp;lt;\/div&amp;gt;&amp;quot;;" alt=""&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;  &lt;p&gt;Well done Mike :-)&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3766174345251248841-863375440158794363?l=www.ilovesharepoint.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.ilovesharepoint.com/feeds/863375440158794363/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3766174345251248841&amp;postID=863375440158794363' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3766174345251248841/posts/default/863375440158794363'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3766174345251248841/posts/default/863375440158794363'/><link rel='alternate' type='text/html' href='http://www.ilovesharepoint.com/2010/07/amazing-nintex-workflow-2010-promotion.html' title='Amazing Nintex Workflow 2010 Promotion Video'/><author><name>Christian</name><uri>http://www.blogger.com/profile/16986066591633364914</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='22' height='32' src='http://bp1.blogger.com/_J6SMSGCmItU/SGAIxRt-lLI/AAAAAAAAABo/EqgbBGe38FM/S220/DSC_0314_small.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh6.ggpht.com/_J6SMSGCmItU/TEAFSPoR9FI/AAAAAAAABWs/SUvXlyuH2Jg/s72-c/video9402954ee702%5B3%5D.jpg?imgmax=800' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3766174345251248841.post-9070684885385206738</id><published>2010-07-16T08:45:00.000+02:00</published><updated>2011-03-20T21:24:55.939+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SP2010'/><category scheme='http://www.blogger.com/atom/ns#' term='SharePoint'/><category scheme='http://www.blogger.com/atom/ns#' term='Exams'/><title type='text'>SharePoint 2010 Development Beta Exams Passed</title><content type='html'>Happy to have passed the SharePoint 2010 development beta exams: &lt;br /&gt;&lt;br /&gt;&lt;a class="linkBlock " href="http://www.microsoft.com/learning/en/us/exam.aspx?ID=70-573&amp;amp;locale=en-us" title="Exam 70-573"&gt;&lt;span&gt;Exam    70-573&lt;/span&gt;&lt;/a&gt;: MCTS: Microsoft SharePoint 2010, Application  Development&lt;br /&gt;&lt;a href="http://www.microsoft.com/learning/en/us/exam.aspx?ID=70-576&amp;amp;locale=en-us"&gt;Exam  70-576&lt;/a&gt;: PRO: Designing and Developing Microsoft SharePoint 2010  Applications&amp;nbsp;&lt;br /&gt;&lt;br /&gt;The the MCTS exam was mod&lt;a class="cssButton" href="javascript:void(0)" id="publishButton" onclick="if (this.className.indexOf(&amp;quot;ubtn-disabled&amp;quot;) == -1) {var e = document['postingForm'].publish;(e.length) ? e[0].click() : e.click(); if (window.event) window.event.cancelBubble = true; return false;}" target=""&gt;&lt;/a&gt;erate, but the PRO was hard.&lt;br /&gt;Good luck.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3766174345251248841-9070684885385206738?l=www.ilovesharepoint.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.ilovesharepoint.com/feeds/9070684885385206738/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3766174345251248841&amp;postID=9070684885385206738' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3766174345251248841/posts/default/9070684885385206738'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3766174345251248841/posts/default/9070684885385206738'/><link rel='alternate' type='text/html' href='http://www.ilovesharepoint.com/2010/07/sharepoint-2010-development-beta-exams.html' title='SharePoint 2010 Development Beta Exams Passed'/><author><name>Christian</name><uri>http://www.blogger.com/profile/16986066591633364914</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='22' height='32' src='http://bp1.blogger.com/_J6SMSGCmItU/SGAIxRt-lLI/AAAAAAAAABo/EqgbBGe38FM/S220/DSC_0314_small.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3766174345251248841.post-6357600004148714369</id><published>2010-06-15T10:43:00.003+02:00</published><updated>2011-03-20T21:24:55.953+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Search; FAST; Social'/><category scheme='http://www.blogger.com/atom/ns#' term='popularsocialtags'/><category scheme='http://www.blogger.com/atom/ns#' term='SP2010'/><category scheme='http://www.blogger.com/atom/ns#' term='SharePoint'/><title type='text'>“Unsocial” - FAST Search for SharePoint 2010</title><content type='html'>I’ve just noticed that FAST Search is not able to crawl social tags. Social tags are tags created with the Tags &amp;amp; Note board. Social tags are different from Enterprise Keywords (managed tags). Enterprise Keywords will be persisted with the list item itself in the Content DB and social tags will be persisted in the Profile DB. Though FAST Search is able to crawl&amp;nbsp;managed tags&amp;nbsp;pretty well,&amp;nbsp;it&amp;nbsp;doesn't support&amp;nbsp;social tags at the moment. In turn the SharePoint Server OOB Search supports both. This a feature restriction of FAST Search. Microsoft’s edition comparison &lt;a href="http://sharepoint.microsoft.com/en-us/buy/Pages/Editions-Comparison.aspx?Capability=Search" target="_blank"&gt;sheet&lt;/a&gt; suggests that there is only a plus, but this isn’t the truth&amp;nbsp;for any particular case. I&amp;nbsp;really&amp;nbsp;miss the&amp;nbsp;social tag crawling in FAST Search. Social tagging&amp;nbsp;in combination with a great search like FAST would be a huge benefit for companies. Now I’ve three options:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Use the OOB Search and miss all the&amp;nbsp;great FAST Search features&lt;/li&gt;&lt;li&gt;Use FAST and miss the social tag crawling and refinement&lt;/li&gt;&lt;li&gt;Wait for third party tools…&lt;/li&gt;&lt;/ol&gt;&lt;em&gt;FAST Search for “I like it”:&lt;/em&gt;&lt;br /&gt;&lt;a href="http://lh3.ggpht.com/_J6SMSGCmItU/TBc9E8GMJCI/AAAAAAAABWc/mEX_HlGIM-M/s1600-h/image%5B8%5D.png"&gt;&lt;img alt="image" border="0" height="293" src="http://lh6.ggpht.com/_J6SMSGCmItU/TBc9Fev599I/AAAAAAAABWg/o3ZuYyKhTkI/image_thumb%5B4%5D.png?imgmax=800" style="border-bottom: 0px; border-left: 0px; border-right: 0px; border-top: 0px; display: inline;" title="image" width="454" /&gt;&lt;/a&gt; &lt;br /&gt;&lt;em&gt;OOB Search for “I like it”:&lt;/em&gt;&lt;br /&gt;&lt;a href="http://lh4.ggpht.com/_J6SMSGCmItU/TBc9Gf-35_I/AAAAAAAABWk/RHkKWyhcvgE/s1600-h/image%5B4%5D.png"&gt;&lt;img alt="image" border="0" height="257" src="http://lh6.ggpht.com/_J6SMSGCmItU/TBc9HbdpdSI/AAAAAAAABWo/d_7VJJL1h-E/image_thumb%5B2%5D.png?imgmax=800" style="border-bottom: 0px; border-left: 0px; border-right: 0px; border-top: 0px; display: inline;" title="image" width="454" /&gt;&lt;/a&gt; &lt;br /&gt;&lt;blockquote&gt;&lt;h3&gt;There isn’t always a plus - that’s life!&lt;/h3&gt;&lt;/blockquote&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3766174345251248841-6357600004148714369?l=www.ilovesharepoint.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.ilovesharepoint.com/feeds/6357600004148714369/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3766174345251248841&amp;postID=6357600004148714369' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3766174345251248841/posts/default/6357600004148714369'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3766174345251248841/posts/default/6357600004148714369'/><link rel='alternate' type='text/html' href='http://www.ilovesharepoint.com/2010/06/unsocial-fast-search-for-sharepoint.html' title='“Unsocial” - FAST Search for SharePoint 2010'/><author><name>Christian</name><uri>http://www.blogger.com/profile/16986066591633364914</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='22' height='32' src='http://bp1.blogger.com/_J6SMSGCmItU/SGAIxRt-lLI/AAAAAAAAABo/EqgbBGe38FM/S220/DSC_0314_small.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh6.ggpht.com/_J6SMSGCmItU/TBc9Fev599I/AAAAAAAABWg/o3ZuYyKhTkI/s72-c/image_thumb%5B4%5D.png?imgmax=800' height='72' width='72'/><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3766174345251248841.post-368338109077635221</id><published>2010-04-21T13:01:00.001+02:00</published><updated>2011-03-20T21:24:55.948+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SharePoint'/><category scheme='http://www.blogger.com/atom/ns#' term='PowerShell'/><title type='text'>Selective Restore? Yes! But which Backup?</title><content type='html'>&lt;p&gt;Here a real user story and solution. One of our customers would be able to selective restore SharePoint content. Because he has already a great SQL backup strategy he decided for a third party tool from from Metalogix, &lt;a href="http://www.metalogix.net/products/selective-restore-manager-pro-for-sharepoint/" target="_blank"&gt;Selective Restore Manager&lt;/a&gt;, which gives him the ability to selective restore from SQL backups or databases. Not a very extra extraordinary scenario. But which backup should he use? Maybe a document or site has been deleted accidently some weeks or months ago. Searching in all backups for the missing item would be very cumbersome. How we can solve this in an agile manner? Sure, with our good old friend PowerShell! The approach is a scheduled PowerShell script querying the SharePoint audit logs for delete events in all site collection from a specific web app and write the log entries in a usual SharePoint list on another web app (central admin). Writing this script has taken less than an hour. Even lunch has taken longer ;) I really love the speed, power and flexibility you gain with PowerShell! &lt;/p&gt;  &lt;p&gt;The list looks like this (click to enlarge):&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh4.ggpht.com/_J6SMSGCmItU/S87a7GA18yI/AAAAAAAABQ4/U7Xjvawdnc0/s1600-h/image%5B3%5D.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://lh6.ggpht.com/_J6SMSGCmItU/S87a7_ckPbI/AAAAAAAABQ8/dodD4CWWbCY/image_thumb%5B1%5D.png?imgmax=800" width="404" height="72" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;The script:&lt;/p&gt; &lt;script type="text/javascript" src="http://PoshCode.org/embed/1799"&gt;&lt;/script&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3766174345251248841-368338109077635221?l=www.ilovesharepoint.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.ilovesharepoint.com/feeds/368338109077635221/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3766174345251248841&amp;postID=368338109077635221' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3766174345251248841/posts/default/368338109077635221'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3766174345251248841/posts/default/368338109077635221'/><link rel='alternate' type='text/html' href='http://www.ilovesharepoint.com/2010/04/selective-restore-yes-but-which-backup.html' title='Selective Restore? Yes! But which Backup?'/><author><name>Christian</name><uri>http://www.blogger.com/profile/16986066591633364914</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='22' height='32' src='http://bp1.blogger.com/_J6SMSGCmItU/SGAIxRt-lLI/AAAAAAAAABo/EqgbBGe38FM/S220/DSC_0314_small.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh6.ggpht.com/_J6SMSGCmItU/S87a7_ckPbI/AAAAAAAABQ8/dodD4CWWbCY/s72-c/image_thumb%5B1%5D.png?imgmax=800' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3766174345251248841.post-4737051369275619908</id><published>2010-04-13T22:49:00.001+02:00</published><updated>2011-03-20T21:24:55.917+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SharePoint'/><category scheme='http://www.blogger.com/atom/ns#' term='ShareCamp'/><title type='text'>Review ShareCamp 2010</title><content type='html'>&lt;p&gt;Last week end was the very first &lt;a href="http://sharecamp.de/"&gt;ShareCamp&lt;/a&gt; (BarCamp about SharePoint) at the Microsoft Headquarter Germany in Munich. We got about 200 participants, &lt;a href="http://www.timetabler.de/events/a4ceca8a66d5e4316f5b437ee287e69242945a34"&gt;45 session&lt;/a&gt; and the spirit was really amazing! I think we could fulfill our slogan born2share. &lt;/p&gt; &lt;img alt="ShareCamp" src="http://dotnet-forum.de/blogs/thorstenhans/ShareCamp_0D7D1540.jpg" width="424" height="326" /&gt;   &lt;p&gt;You can find many more pictures &lt;a href="http://sharecamp.de/Bilder/Forms/AllItems.aspx" target="_blank"&gt;here&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;Thanks to all participants and sponsors for making this great event possible. I’m convinced there will be a ShareCamp 2011!&lt;/p&gt; &lt;a href="http://sharecamp.de/" target="_blank"&gt;&lt;img style="display: inline; margin-left: 0px; margin-right: 0px" alt="born2share." align="left" src="http://sharecamp.de/PublishingImages/born2share.gif" /&gt;&lt;/a&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3766174345251248841-4737051369275619908?l=www.ilovesharepoint.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.ilovesharepoint.com/feeds/4737051369275619908/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3766174345251248841&amp;postID=4737051369275619908' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3766174345251248841/posts/default/4737051369275619908'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3766174345251248841/posts/default/4737051369275619908'/><link rel='alternate' type='text/html' href='http://www.ilovesharepoint.com/2010/04/review-sharecamp-2010.html' title='Review ShareCamp 2010'/><author><name>Christian</name><uri>http://www.blogger.com/profile/16986066591633364914</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='22' height='32' src='http://bp1.blogger.com/_J6SMSGCmItU/SGAIxRt-lLI/AAAAAAAAABo/EqgbBGe38FM/S220/DSC_0314_small.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3766174345251248841.post-192978376797939205</id><published>2010-04-05T22:22:00.000+02:00</published><updated>2011-03-20T21:24:55.932+01:00</updated><title type='text'>Freshly Graduated MVP</title><content type='html'>I'm glad to announce that I am since the 1th of Avril a Microsoft SharePoint MVP. What for the actor is a Oscar, is for a Microsoft tech geek the MVP Award. This is a big honor for me and I would like to thank Microsoft and the SharePoint community!&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_J6SMSGCmItU/S7pDbrjQ7nI/AAAAAAAABQw/zbENtCZC-Xc/S259/MVPLogo.gif" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/_J6SMSGCmItU/S7pDbrjQ7nI/AAAAAAAABQw/zbENtCZC-Xc/S259/MVPLogo.gif" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3766174345251248841-192978376797939205?l=www.ilovesharepoint.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.ilovesharepoint.com/feeds/192978376797939205/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3766174345251248841&amp;postID=192978376797939205' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3766174345251248841/posts/default/192978376797939205'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3766174345251248841/posts/default/192978376797939205'/><link rel='alternate' type='text/html' href='http://www.ilovesharepoint.com/2010/04/freshly-graduated-mvp.html' title='Freshly Graduated MVP'/><author><name>Christian</name><uri>http://www.blogger.com/profile/16986066591633364914</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='22' height='32' src='http://bp1.blogger.com/_J6SMSGCmItU/SGAIxRt-lLI/AAAAAAAAABo/EqgbBGe38FM/S220/DSC_0314_small.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_J6SMSGCmItU/S7pDbrjQ7nI/AAAAAAAABQw/zbENtCZC-Xc/s72-c/MVPLogo.gif' height='72' width='72'/><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3766174345251248841.post-5385017461775094276</id><published>2010-03-10T20:44:00.012+01:00</published><updated>2011-03-20T21:24:55.915+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SharePoint'/><category scheme='http://www.blogger.com/atom/ns#' term='Myths'/><category scheme='http://www.blogger.com/atom/ns#' term='Disposing'/><title type='text'>SharePoint Disposing Myth: You have to dispose SPWeb explicitly!?</title><content type='html'>It seems to me that every post, article and book tells you to explicitly dispose every SPWeb (excepts them coming from SPContext). But is that right?&lt;br /&gt;Not quite! Every SPSite tracks the SPWebs that it has emitted. A internal list named “m_openedWebs” holds these references. It doesn’t matter from which member of the SPSite you will get the SPWeb (RootWeb, OpenWeb, AllWebs, Add) the SPSite holds a reference on it. When you dispose the SPSite it loops through all SPWebs in “m_openedWebs” and calls the Close method on each. The dispose method of SPWeb does nothing else than calling it’s close method. Means when you dispose a SPSite, all SPWebs that it has emitted will be disposed implicitly! A construct like this&lt;br /&gt;&lt;pre class="brush:c-sharp"&gt;using(SPSite site = new SPSite("http://server/site"))&lt;br /&gt;{&lt;br /&gt;     using(SPWeb web = site.OpenWeb())&lt;br /&gt;     {&lt;br /&gt;       //...&lt;br /&gt;     }&lt;br /&gt;}&lt;/pre&gt;is not necessary, because the using for the SPSite will implicitly dispose all of it SPWebs. By the way if you call the dispose method of the SPWeb explicitly it will internally remove itself from the “m_openedWebs” list. Sure there are scenarios where explicitly disposing of SPWebs is important, for example when you loop through the AllWebs property of the SPSite with maybe hundreds of SPWebs. Because every&amp;nbsp;SPWeb consumes a lot of memory! On the other hand you don’t have to be afraid when you pass a SPWeb reference across your API. When you finally dispose the SPSite, all SPWebs it has emitted will be disposed too and you will not cause a memory leak.&amp;nbsp;I think the SharePoint team have implemented this pretty well. &lt;br /&gt;&lt;blockquote&gt;&lt;h3&gt;When you create an instance of SPSite you are responsible to dispose it. When to&amp;nbsp;dispose SPWeb that have been emitted by your SPSite depends on the scenario. &lt;/h3&gt;&lt;br /&gt;&lt;/blockquote&gt;What could cause problems indeed is when you still use a SPWeb that has already been disposed, doesn’t matter if it has been disposed implicitly or explicitly. The SPWeb will be reopened but will not be listed in the “m_openedWebs” of the SPSite. Means it can not be implicitly disposed by the SPSite anymore. A better and approach would have been to throw an ObjectDisposedException on all members after the SPWeb has been disposed. &lt;br /&gt;&lt;br /&gt;You don’t believe? Just take a look at the following snippet or even better let it run:&lt;br /&gt;&lt;pre class="brush:c-sharp" name="code"&gt;Console.WriteLine("Create a SPSite");&lt;br /&gt;SPSite site = new SPSite("http://localhost:101");&lt;br /&gt;&lt;br /&gt;Console.WriteLine("Open 5 SPWebs...");&lt;br /&gt;SPWeb web1 = site.RootWeb;&lt;br /&gt;SPWeb web2 = site.OpenWeb();&lt;br /&gt;SPWeb web3 = site.OpenWeb("my");&lt;br /&gt;SPWeb web4 = site.AllWebs[1];&lt;br /&gt;SPWeb web5 = site.AllWebs.Add(Guid.NewGuid().ToString());&lt;br /&gt;&lt;br /&gt;int openedWebs = (typeof(SPSite).InvokeMember("m_openedWebs",&lt;br /&gt;BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.GetField,&lt;br /&gt;null, site, null) as ICollection).Count;      &lt;br /&gt;&lt;br /&gt;Console.WriteLine("Acutally opened SPWebs: " + openedWebs.ToString());&lt;br /&gt;&lt;br /&gt;Console.WriteLine("Dispose web1 explicitly");&lt;br /&gt;web1.Dispose();&lt;br /&gt;&lt;br /&gt;openedWebs = (typeof(SPSite).InvokeMember("m_openedWebs",&lt;br /&gt;BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.GetField,&lt;br /&gt;null, site, null) as ICollection).Count;     &lt;br /&gt;&lt;br /&gt;Console.WriteLine("Dispose the SPSite");         &lt;br /&gt;site.Dispose();&lt;br /&gt;&lt;br /&gt;openedWebs = (typeof(SPSite).InvokeMember("m_openedWebs",&lt;br /&gt;BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.GetField,&lt;br /&gt;null, site, null) as ICollection).Count;&lt;br /&gt;&lt;br /&gt;Console.WriteLine("Acutally opened SPWebs: " + openedWebs.ToString());&lt;br /&gt;&lt;br /&gt;Console.ReadKey();   &lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Any feedback?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3766174345251248841-5385017461775094276?l=www.ilovesharepoint.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.ilovesharepoint.com/feeds/5385017461775094276/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3766174345251248841&amp;postID=5385017461775094276' title='6 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3766174345251248841/posts/default/5385017461775094276'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3766174345251248841/posts/default/5385017461775094276'/><link rel='alternate' type='text/html' href='http://www.ilovesharepoint.com/2010/03/sharepoint-disposing-myths.html' title='SharePoint Disposing Myth: You have to dispose SPWeb explicitly!?'/><author><name>Christian</name><uri>http://www.blogger.com/profile/16986066591633364914</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='22' height='32' src='http://bp1.blogger.com/_J6SMSGCmItU/SGAIxRt-lLI/AAAAAAAAABo/EqgbBGe38FM/S220/DSC_0314_small.jpg'/></author><thr:total>6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3766174345251248841.post-2437699067058580141</id><published>2010-03-01T21:39:00.001+01:00</published><updated>2011-03-20T21:24:55.950+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SharePoint'/><category scheme='http://www.blogger.com/atom/ns#' term='ASP.NET'/><category scheme='http://www.blogger.com/atom/ns#' term='PowerShell'/><category scheme='http://www.blogger.com/atom/ns#' term='Providers'/><title type='text'>Manage ASP.NET Providers with PowerShell</title><content type='html'>&lt;p&gt;I’ve written this script to manage SQL users on a SharePoint box with form based security (FBA). &lt;/p&gt;  &lt;h3&gt;Usage:&lt;/h3&gt;  &lt;p&gt;Load the script    &lt;br /&gt;&lt;strong&gt;PS&amp;gt;. .\Manage_ASP_NET_Providers.ps1&amp;#160; “C:\..\web.config”&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;You have to provide the path to the web.config which contains the membership provider configurations. &lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;em&gt;The script will change the current app domain’s config path and then loads the System.Web Assembly. The sequence is important. If you want to change app config path later, you have to restart PowerShell and load the script again with another path.&lt;/em&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;h5&gt;Examples:&lt;/h5&gt;  &lt;p&gt;Get Membership Provider “sqlMembers”   &lt;br /&gt;&lt;strong&gt;PS&amp;gt; $provider = Get-MembershipProvider&amp;#160; “sqlMembers” &lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Add a new user (login, mail, question, answer)   &lt;br /&gt;&lt;strong&gt;PS&amp;gt; $provider | Add-MembershipUser “cglessner” “cg@test.de” “Best Portal” “SharePoint”&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;List first 1000 users   &lt;br /&gt;&lt;strong&gt;PS&amp;gt; $provider | Get-MembershipUser –maxResult 1000&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;….&lt;/p&gt; &lt;script type="text/javascript" src="http://PoshCode.org/embed/1674"&gt;&lt;/script&gt;  &lt;h3&gt;&amp;#160;&lt;/h3&gt;  &lt;p&gt;Bye, Christian&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3766174345251248841-2437699067058580141?l=www.ilovesharepoint.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.ilovesharepoint.com/feeds/2437699067058580141/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3766174345251248841&amp;postID=2437699067058580141' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3766174345251248841/posts/default/2437699067058580141'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3766174345251248841/posts/default/2437699067058580141'/><link rel='alternate' type='text/html' href='http://www.ilovesharepoint.com/2010/03/manage-aspnet-providers-with-powershell.html' title='Manage ASP.NET Providers with PowerShell'/><author><name>Christian</name><uri>http://www.blogger.com/profile/16986066591633364914</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='22' height='32' src='http://bp1.blogger.com/_J6SMSGCmItU/SGAIxRt-lLI/AAAAAAAAABo/EqgbBGe38FM/S220/DSC_0314_small.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3766174345251248841.post-8457427211759562442</id><published>2010-02-10T09:42:00.008+01:00</published><updated>2011-03-20T21:24:55.924+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SharePoint'/><category scheme='http://www.blogger.com/atom/ns#' term='Social Media'/><category scheme='http://www.blogger.com/atom/ns#' term='Web 2.0'/><category scheme='http://www.blogger.com/atom/ns#' term='BarCamp'/><category scheme='http://www.blogger.com/atom/ns#' term='Social Computing'/><category scheme='http://www.blogger.com/atom/ns#' term='ShareCamp'/><title type='text'>ShareCamp – born2share.</title><content type='html'>the &lt;a href="http://sharepointcommunity.de/" target="_blank"&gt;SharePoint Community&lt;/a&gt; Germany is conducting a first-of-its-kind &lt;a href="http://en.wikipedia.org/wiki/BarCamp" target="_blank"&gt;BarCamp&lt;/a&gt; format on SharePoint, coined &lt;a href="http://sharecamp.de/" target="_blank"&gt;ShareCamp&lt;/a&gt;. &lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;h3&gt;Our slogan is “born2share.” (spoken born to share point ;)&lt;/h3&gt;&lt;/blockquote&gt;ShareCamp will be a two-day BarCamp event. BarCamps, also called non-conferences, that is looking for active contributors rather than passive consumers. There is no fixed, up-front agenda, but all participants are invited to present – contents will be decided upon among the participants. Spontaneous sessions replace the pre-prepared presentations found at traditional conferences. Developing ideas freely and mutual interaction are not only allowed, but explicitly encouraged.&lt;br /&gt;&lt;br /&gt;ShareCamp addresses technical issues (installation, administration, migration, …) as well as social aspects of collaboration and their effects on company cultures. Best practices, helpful tools and add-ons – all topics of interest to the participants are welcomed, in particular special interest topics.&lt;br /&gt;We expect a mixed audience of up to 200 SharePoint administrators, developers, end users, Microsoft staff and solution providers.&lt;br /&gt;&lt;br /&gt;ShareCamp takes place&lt;strong&gt; April 10/11&lt;/strong&gt; at the &lt;a href="http://www.microsoft.com/germany/unternehmen/informationen/gmbh_profil/niederlassungen/muenchen.mspx" target="_blank"&gt;Microsoft headquarters in Unterschleissheim (Munich)&lt;/a&gt;; Microsoft will also serve as a diamant sponsor of the event. &lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;h3&gt;Participation and catering is free of charge for all participants.&lt;/h3&gt;&lt;/blockquote&gt;ShareCamp is non-profit oriented, but an independent event organized by volunteers from within the SharePoint community. ShareCamps are only made possible by the kind contribution of sponsors that allow for a such an event to be free of charge and to cover expenses for event site, infrastructure, and catering.&lt;br /&gt;The idea a BarCamp about SharePoint was born at TechEd Europe by &lt;a href="http://sharepointcommunity.de/blogs/mgreth/" target="_blank"&gt;Michael Greth&lt;/a&gt; and myself. Here we go!&lt;br /&gt;&lt;br /&gt;&lt;a href="http://sharecamp.de/"&gt;&lt;img alt="born2share" border="0" height="51" src="http://lh4.ggpht.com/_J6SMSGCmItU/S3Jxdbl8SbI/AAAAAAAABQo/Ju3XRxeFa-U/born2share%5B4%5D.jpg?imgmax=800" style="border-bottom: 0px; border-left: 0px; border-right: 0px; border-top: 0px; display: block; float: none; margin-left: auto; margin-right: auto;" title="born2share" width="244" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3766174345251248841-8457427211759562442?l=www.ilovesharepoint.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.ilovesharepoint.com/feeds/8457427211759562442/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3766174345251248841&amp;postID=8457427211759562442' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3766174345251248841/posts/default/8457427211759562442'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3766174345251248841/posts/default/8457427211759562442'/><link rel='alternate' type='text/html' href='http://www.ilovesharepoint.com/2010/02/sharecamp-born2share.html' title='ShareCamp – born2share.'/><author><name>Christian</name><uri>http://www.blogger.com/profile/16986066591633364914</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='22' height='32' src='http://bp1.blogger.com/_J6SMSGCmItU/SGAIxRt-lLI/AAAAAAAAABo/EqgbBGe38FM/S220/DSC_0314_small.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh4.ggpht.com/_J6SMSGCmItU/S3Jxdbl8SbI/AAAAAAAABQo/Ju3XRxeFa-U/s72-c/born2share%5B4%5D.jpg?imgmax=800' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3766174345251248841.post-760464383943155199</id><published>2009-11-10T00:14:00.008+01:00</published><updated>2011-03-23T09:05:56.601+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SP2010'/><category scheme='http://www.blogger.com/atom/ns#' term='SharePoint'/><category scheme='http://www.blogger.com/atom/ns#' term='PowerShell'/><title type='text'>SharePoint 2010, PowerShell and Disposing</title><content type='html'>When you are already familiar with the SharePoint object model, you might know that SPSite and SPWeb allocate large amounts of memory and adequate memory management and disposing is essential. To make life easier the SharePoint team introduced two Cmdlets dealing with this in SharePoint 2010:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;Start-SPAssignment&lt;/strong&gt; &lt;/li&gt;&lt;li&gt;&lt;strong&gt;Stop-SPAssignment&lt;/strong&gt; &lt;/li&gt;&lt;/ul&gt;By default, all Get commands dispose of these objects immediately after the pipeline finishes, but using SPAssignment, you can assign the list of objects to a variable and dispose of the objects after they are no longer needed. You can also ensure that the objects will remain as long as you need them, even throughout multiple iterations of commands&lt;br /&gt;There are three levels of assignment:&lt;br /&gt;&lt;h4&gt;No Assignment&lt;/h4&gt;The object is not assigned to a variable and is disposed after each iteration of the command.&lt;br /&gt;&lt;pre class="brush:powershell"&gt;Get-SPWeb http://server/sites/* |&lt;br /&gt;     foreach { $_.Title | out-host } &lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;h4&gt;Simple Assignment&lt;/h4&gt;All objects are assigned to the global assignment store. This is done by using the Global parameter. When using this level, all objects are assigned to a global store and are disposed of when the Stop-SPAssignment command is called.&lt;br /&gt;&lt;br /&gt;&lt;pre class="brush:powershell"&gt;Start-SPAssignment -GlobalGlobal&lt;br /&gt;$web = Get-SPWeb "http://server/sites/web"&lt;br /&gt;$web.Title = "Greetings from PowerShell"&lt;br /&gt;$web.Update()&lt;br /&gt;Stop-SPAssignment -Global&lt;br /&gt;# $web will be disposed&lt;/pre&gt;&lt;br /&gt;&lt;blockquote&gt;Note: Use global assignment with caution! For example, if you use Start-SPAssignment – Global with and then call Get-SPSite –Limit ALL, every site collection object will be loaded, every site collection object will be loaded into memory. In a live server farm, this is likely to cause to cause serious performance issues&lt;br /&gt;&lt;br /&gt;&lt;/blockquote&gt;&lt;h4&gt;&lt;span style="font-family: inherit;"&gt;Advanced Assignment&lt;/span&gt;&lt;/h4&gt;Objects are assigned to named stores for disposal. You can dispose of objects by using the -Identity parameter with the Stop-SPAssignment command.&lt;br /&gt;&lt;br /&gt;&lt;pre class="brush:powershell"&gt;$siteScope = Start-SPAssignment&lt;br /&gt;foreach($site in ($siteScope | Get-SPSite "http://server/*"))&lt;br /&gt;{&lt;br /&gt;   $webScope = Start-SPAssignment&lt;br /&gt;   $web = $webScope | Get-SPWeb $site.RootWeb.Url&lt;br /&gt;   $web.Title = "Greetings from PowerShell"&lt;br /&gt;   $web.Update()&lt;br /&gt;   Stop-SPAssignment $webScope&lt;br /&gt;}&lt;br /&gt;Stop-SPAssignment $siteScope&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;strong&gt;Regardless of the level used, all objects are disposed of when the PowerShell runspace is closed.&lt;/strong&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3766174345251248841-760464383943155199?l=www.ilovesharepoint.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.ilovesharepoint.com/feeds/760464383943155199/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3766174345251248841&amp;postID=760464383943155199' title='7 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3766174345251248841/posts/default/760464383943155199'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3766174345251248841/posts/default/760464383943155199'/><link rel='alternate' type='text/html' href='http://www.ilovesharepoint.com/2009/11/sharepoint-2010-powershell-and.html' title='SharePoint 2010, PowerShell and Disposing'/><author><name>Christian</name><uri>http://www.blogger.com/profile/16986066591633364914</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='22' height='32' src='http://bp1.blogger.com/_J6SMSGCmItU/SGAIxRt-lLI/AAAAAAAAABo/EqgbBGe38FM/S220/DSC_0314_small.jpg'/></author><thr:total>7</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3766174345251248841.post-1421203658507145532</id><published>2009-10-26T23:14:00.002+01:00</published><updated>2011-03-20T21:24:55.958+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Wiki'/><category scheme='http://www.blogger.com/atom/ns#' term='SP2010'/><category scheme='http://www.blogger.com/atom/ns#' term='SharePoint'/><category scheme='http://www.blogger.com/atom/ns#' term='Beta'/><title type='text'>Preview - Wikis in SharePoint 2010</title><content type='html'>&lt;blockquote&gt;&lt;strong&gt;&lt;em&gt;&lt;span style="color: red;"&gt;Refers to build 14.0.4006.1010 (BETA 1)&lt;/span&gt;&lt;/em&gt;&lt;/strong&gt;&lt;/blockquote&gt;Wiki functionality in SharePoint 2007 was kind of spartan. In this post I’ll have a look what will come with SharePoint 2010.&lt;br /&gt;&lt;h4&gt;The Wiki Homepage Feature&lt;/h4&gt;When you create a blank site in SharePoint 2010 the homepage (default.aspx) will be a web part page as usual. But now there’s a new feature called “Wiki Page Home Page”.&lt;br /&gt;&lt;a href="http://lh5.ggpht.com/_J6SMSGCmItU/SuYfK5brgzI/AAAAAAAABOU/BO0wSRkfnIA/s1600-h/image3.png"&gt;&lt;img alt="image" border="0" height="56" src="http://lh3.ggpht.com/_J6SMSGCmItU/SuYfLSLLwmI/AAAAAAAABOY/0yZyYdKGozI/image_thumb1.png?imgmax=800" style="border-bottom-width: 0px; border-left-width: 0px; border-right-width: 0px; border-top-width: 0px; display: inline;" title="image" width="454" /&gt;&lt;/a&gt; &lt;br /&gt;When you activate the feature it creates a document library called “SitePages”, adds a wiki page named “default.aspx” and set it as the new homepage for the site. &lt;br /&gt;&lt;a href="http://lh4.ggpht.com/_J6SMSGCmItU/SuYfMJKJuzI/AAAAAAAABOc/XhVMbaUeoCE/s1600-h/image7.png"&gt;&lt;img alt="image" border="0" height="206" src="http://lh3.ggpht.com/_J6SMSGCmItU/SuYfMqVqu-I/AAAAAAAABOg/UHw8HDEqrx4/image_thumb3.png?imgmax=800" style="border-bottom-width: 0px; border-left-width: 0px; border-right-width: 0px; border-top-width: 0px; display: inline;" title="image" width="454" /&gt;&lt;/a&gt;&lt;br /&gt;The feature transforms your whole site to a wiki. Every time you create a new page it will create a new wiki page and store it in the “SitePages” lib (similar to the publishing features in 2007). &lt;br /&gt;&lt;a href="http://lh6.ggpht.com/_J6SMSGCmItU/SuYfM1P0qZI/AAAAAAAABOk/18rIOf_eM1c/s1600-h/image%5B3%5D.png"&gt;&lt;img alt="image" border="0" height="150" src="http://lh6.ggpht.com/_J6SMSGCmItU/SuYfNSg2A0I/AAAAAAAABOo/T2ugHFbvYkw/image_thumb.png?imgmax=800" style="border-bottom: 0px; border-left: 0px; border-right: 0px; border-top: 0px; display: inline;" title="image" width="244" /&gt;&lt;/a&gt; &lt;br /&gt;For sure you can tag Wiki pages as any other page as described in my previous post &lt;a href="http://cglessner.blogspot.com/2009/10/managing-metadata-in-sharepoint-2010.html" target="_blank"&gt;Managing Metadata in SharePoint 2010&lt;/a&gt;.&lt;br /&gt;&lt;h4&gt;Content&lt;/h4&gt;While in SharePoint you could only write some rich text, you now could upload files (will be stored as a separate file) and add Web Parts. &lt;br /&gt;&lt;blockquote&gt;&lt;h3&gt;No joke, you can now add Web Parts at any place within the wiki rich text!&lt;/h3&gt;&lt;/blockquote&gt;&lt;a href="http://lh3.ggpht.com/_J6SMSGCmItU/SuYfNnlCrzI/AAAAAAAABOs/BYuToSiHDyg/s1600-h/image%5B7%5D.png"&gt;&lt;img alt="image" border="0" height="356" src="http://lh4.ggpht.com/_J6SMSGCmItU/SuYfObW0fFI/AAAAAAAABOw/IJS0U8lsyQ4/image_thumb%5B2%5D.png?imgmax=800" style="border-bottom: 0px; border-left: 0px; border-right: 0px; border-top: 0px; display: inline;" title="image" width="454" /&gt;&lt;/a&gt; &lt;br /&gt;&lt;h4&gt;[[Wiki Linking]]&lt;/h4&gt;In SharePoint 2010 you will get an intellisense like linking experience. That’s kind of cool :-) Just an enter [[ and press ctrl+space&lt;br /&gt;&lt;a href="http://lh3.ggpht.com/_J6SMSGCmItU/SuYfOsYOHYI/AAAAAAAABO0/E3UNGCcIQpQ/s1600-h/image%5B10%5D.png"&gt;&lt;img alt="image" border="0" height="177" src="http://lh6.ggpht.com/_J6SMSGCmItU/SuYfPD2vdeI/AAAAAAAABO4/Qh2130pzVyM/image_thumb%5B3%5D.png?imgmax=800" style="border-bottom: 0px; border-left: 0px; border-right: 0px; border-top: 0px; display: inline;" title="image" width="244" /&gt;&lt;/a&gt; &lt;br /&gt;&lt;a href="http://lh4.ggpht.com/_J6SMSGCmItU/SuYfPow_8PI/AAAAAAAABO8/jPk25scF-KM/s1600-h/image%5B16%5D.png"&gt;&lt;img alt="image" border="0" height="72" src="http://lh5.ggpht.com/_J6SMSGCmItU/SuYfP5HfxKI/AAAAAAAABPA/pDlzdn6LCfo/image_thumb%5B5%5D.png?imgmax=800" style="border-bottom: 0px; border-left: 0px; border-right: 0px; border-top: 0px; display: inline;" title="image" width="244" /&gt;&lt;/a&gt; &lt;br /&gt;You can now link easily pages, lists, items, documents and views.&lt;br /&gt;&lt;h4&gt;Enterprise Wiki Layouts&lt;/h4&gt;Additionally there’s a new Site Collection feature called “Enterprise Wiki Layouts” for creating a large-scale wiki with categories and page layouts.&lt;br /&gt;&lt;a href="http://lh6.ggpht.com/_J6SMSGCmItU/SuYfQFObKuI/AAAAAAAABPE/bm1tBQ94Ogc/s1600-h/image%5B20%5D.png"&gt;&lt;img alt="image" border="0" height="60" src="http://lh6.ggpht.com/_J6SMSGCmItU/SuYfQistHLI/AAAAAAAABPI/CJky7mxzgWI/image_thumb%5B7%5D.png?imgmax=800" style="border-bottom: 0px; border-left: 0px; border-right: 0px; border-top: 0px; display: inline;" title="image" width="454" /&gt;&lt;/a&gt; &lt;br /&gt;Seems to be correlated with the publishing infrastructure, because the feature add a new page layout content type. This means you can create wiki page layouts with SharePoint Designer 2010.&lt;br /&gt;&lt;a href="http://lh6.ggpht.com/_J6SMSGCmItU/SuYfRQD6qNI/AAAAAAAABPM/8fdViKFzov4/s1600-h/image%5B24%5D.png"&gt;&lt;img alt="image" border="0" height="296" src="http://lh5.ggpht.com/_J6SMSGCmItU/SuYfR7_PmwI/AAAAAAAABPQ/usICpdGRVIs/image_thumb%5B9%5D.png?imgmax=800" style="border-bottom: 0px; border-left: 0px; border-right: 0px; border-top: 0px; display: inline;" title="image" width="454" /&gt;&lt;/a&gt;Click and see the beautiful new SharePoint 2010 error message. &lt;a href="http://lh3.ggpht.com/_J6SMSGCmItU/SuYfSZ1vp_I/AAAAAAAABPY/T_BvgVhYs5w/s1600-h/image%5B28%5D.png"&gt;&lt;img alt="image" border="0" height="214" src="http://lh3.ggpht.com/_J6SMSGCmItU/SuYfSyW56JI/AAAAAAAABPc/bsFhymdrang/image_thumb%5B11%5D.png?imgmax=800" style="border-bottom: 0px; border-left: 0px; border-right: 0px; border-top: 0px; display: inline;" title="image" width="454" /&gt;&lt;/a&gt; &lt;br /&gt;Never mind this a technical preview and lot of things already work great. Can’t await to continue with the beta in November…&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3766174345251248841-1421203658507145532?l=www.ilovesharepoint.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.ilovesharepoint.com/feeds/1421203658507145532/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3766174345251248841&amp;postID=1421203658507145532' title='7 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3766174345251248841/posts/default/1421203658507145532'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3766174345251248841/posts/default/1421203658507145532'/><link rel='alternate' type='text/html' href='http://www.ilovesharepoint.com/2009/10/preview-wikis-in-sharepoint-2010.html' title='Preview - Wikis in SharePoint 2010'/><author><name>Christian</name><uri>http://www.blogger.com/profile/16986066591633364914</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='22' height='32' src='http://bp1.blogger.com/_J6SMSGCmItU/SGAIxRt-lLI/AAAAAAAAABo/EqgbBGe38FM/S220/DSC_0314_small.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh3.ggpht.com/_J6SMSGCmItU/SuYfLSLLwmI/AAAAAAAABOY/0yZyYdKGozI/s72-c/image_thumb1.png?imgmax=800' height='72' width='72'/><thr:total>7</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3766174345251248841.post-6227726326001023739</id><published>2009-10-22T14:20:00.011+02:00</published><updated>2011-03-20T21:24:55.930+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Metadata'/><category scheme='http://www.blogger.com/atom/ns#' term='SP2010'/><category scheme='http://www.blogger.com/atom/ns#' term='SharePoint'/><category scheme='http://www.blogger.com/atom/ns#' term='Social Media'/><category scheme='http://www.blogger.com/atom/ns#' term='Beta'/><category scheme='http://www.blogger.com/atom/ns#' term='Web 2.0'/><title type='text'>Managing Metadata in SharePoint 2010</title><content type='html'>&lt;blockquote&gt;&lt;strong&gt;Obsolete&lt;/strong&gt;: Refers to build 14.0.4006.1010 (beta 1)&lt;/blockquote&gt;SharePoint 2010 comes with a bunch of web 2.0 features, tags, tag clouds, rating, social bookmarking and enhanced blogs and wikis. What I really missed in SharePoint 2007 was tags and tag clouds. On the other hand this was a free space for developers like me, see &lt;a href="http://cglessner.blogspot.com/2009/05/power-tag-cloud-sharepoint-tag-cloud.html"&gt;Power Tag Cloud&lt;/a&gt; ;-) My experience with SharePoint 2003 already showed that text, dropdowns and lookup columns are to inflexible and people tend to over categorize in the conception stage. &lt;br /&gt;&lt;blockquote&gt;&lt;h3&gt;Less is more!&lt;/h3&gt;&lt;/blockquote&gt;This could lead to a confusing meta taxonomy. What we have learned from the web 2.0 wave in the last years is that tags and tag clouds are a great, simple and flexible way to organize information. &lt;br /&gt;Now with SharePoint 2010 this and much, much more comes out of the box. Tagging becomes one of the most significant concepts for building enterprise taxonomies in SharePoint 2010.&lt;br /&gt;&lt;h4&gt;What can be tagged?&lt;/h4&gt;&lt;ul&gt;&lt;li&gt;List Items (Terms, Keywords, Social Tags) &lt;/li&gt;&lt;li&gt;Documents (Terms, Keywords, Social Tags)&lt;/li&gt;&lt;li&gt;Pages (Terms, Keywords, Social Tags) &lt;/li&gt;&lt;li&gt;External pages (Social Tags)&lt;/li&gt;&lt;/ul&gt;&lt;blockquote&gt;&lt;h3&gt;This means everything that has an URL can be social tagged. Do you know anything in the web that hasn’t one?&lt;/h3&gt;&lt;/blockquote&gt;Talked enough, let’s play around with this stuff…&lt;br /&gt;&lt;h4&gt;Tag a list item or a document:&lt;/h4&gt;&lt;a href="http://lh5.ggpht.com/_J6SMSGCmItU/SuBN4lnyrRI/AAAAAAAABM0/y6qAARJ1AUM/s1600-h/image%5B3%5D.png"&gt;&lt;img alt="image" border="0" height="352" src="http://lh3.ggpht.com/_J6SMSGCmItU/SuBN5BKaUPI/AAAAAAAABM4/7fSlzRpjWKM/image_thumb%5B1%5D.png?imgmax=800" style="border-bottom: 0px; border-left: 0px; border-right: 0px; border-top: 0px; display: inline;" title="image" width="404" /&gt;&lt;/a&gt; &lt;br /&gt;Almost any built-in list has per default a “Managed Keywords” column. When you start to write you get a filtered list of suggestions. When you enter a tag that not exist it will be automatically added to the managed keywords list. &lt;br /&gt;&lt;h4&gt;Tag and note a SharePoint page:&lt;/h4&gt;&lt;a href="http://lh6.ggpht.com/_J6SMSGCmItU/SuBN5pWb3OI/AAAAAAAABM8/ZzLX4y3dig4/s1600-h/image%5B18%5D.png"&gt;&lt;img alt="image" border="0" height="193" src="http://lh4.ggpht.com/_J6SMSGCmItU/SuBN5yI06YI/AAAAAAAABNA/7BQqz2jxdzI/image_thumb%5B10%5D.png?imgmax=800" style="border-bottom: 0px; border-left: 0px; border-right: 0px; border-top: 0px; display: inline;" title="image" width="454" /&gt;&lt;/a&gt; &lt;br /&gt;&lt;a href="http://lh6.ggpht.com/_J6SMSGCmItU/SuBN6bPI0jI/AAAAAAAABNE/G7sByM6KDGk/s1600-h/image%5B9%5D.png"&gt;&lt;img alt="image" border="0" height="333" src="http://lh3.ggpht.com/_J6SMSGCmItU/SuBN6_uz8eI/AAAAAAAABNI/ckyBb1WhyBg/image_thumb%5B5%5D.png?imgmax=800" style="border-bottom: 0px; border-left: 0px; border-right: 0px; border-top: 0px; display: inline;" title="image" width="312" /&gt;&lt;/a&gt; &lt;br /&gt;To tag a SharePoint page you can use the user’s context menu as shown above. Clicking “Tag or Note this Page” opens the following dialog.&lt;br /&gt;&lt;a href="http://lh3.ggpht.com/_J6SMSGCmItU/SuBN7Ue9z_I/AAAAAAAABNM/Yj2k8t4tZxE/s1600-h/image%5B22%5D.png"&gt;&lt;img alt="image" border="0" height="321" src="http://lh3.ggpht.com/_J6SMSGCmItU/SuBN75DHS7I/AAAAAAAABNQ/VHxcxJegC5w/image_thumb%5B12%5D.png?imgmax=800" style="border-bottom: 0px; border-left: 0px; border-right: 0px; border-top: 0px; display: inline;" title="image" width="454" /&gt;&lt;/a&gt;You can tag the page just like the list item before, but in addition you will get a list of suggested tags and you can mark them as private, so other user will not see them. At the bottom of the dialog you see a tag and note history. Furthermore you can add notes to the page (see in the second tab on the top).&lt;br /&gt;&lt;a href="http://lh5.ggpht.com/_J6SMSGCmItU/SuBN8JuE3AI/AAAAAAAABNU/tSXXoE46an4/s1600-h/image%5B26%5D.png"&gt;&lt;img alt="image" border="0" height="383" src="http://lh5.ggpht.com/_J6SMSGCmItU/SuBN8ic6uCI/AAAAAAAABNY/cFpn1trBRXY/image_thumb%5B14%5D.png?imgmax=800" style="border-bottom: 0px; border-left: 0px; border-right: 0px; border-top: 0px; display: inline;" title="image" width="454" /&gt;&lt;/a&gt; &lt;br /&gt;&lt;h4&gt;How to tag an external page?&lt;/h4&gt;Since years I miss a tool from Microsoft to centrally manage bookmarks and I believe I’m not alone. To tag external pages you have first to add a link to the SharePoint tagging dialog to your browser’s favorites:&lt;br /&gt;&lt;a href="http://lh5.ggpht.com/_J6SMSGCmItU/SuBN87XRRvI/AAAAAAAABNc/SWdO80hXx98/s1600-h/image%5B29%5D.png"&gt;&lt;img alt="image" border="0" height="244" src="http://lh4.ggpht.com/_J6SMSGCmItU/SuBN9QneGbI/AAAAAAAABNg/5xM42mlA0TY/image_thumb%5B15%5D.png?imgmax=800" style="border-bottom: 0px; border-left: 0px; border-right: 0px; border-top: 0px; display: inline;" title="image" width="229" /&gt;&lt;/a&gt; &lt;br /&gt;This adds the “Tags and Noteboard” bookmark (JavaScript) to your browsers favorites list. Now you tag an external page like this:&lt;br /&gt;&lt;a href="http://lh6.ggpht.com/_J6SMSGCmItU/SuBN9_XWoMI/AAAAAAAABNk/96S4QA65Ibw/s1600-h/image%5B33%5D.png"&gt;&lt;img alt="Tag external page" border="0" height="326" src="http://lh6.ggpht.com/_J6SMSGCmItU/SuBN-tOznLI/AAAAAAAABNo/IkWS-qhYM40/image_thumb%5B17%5D.png?imgmax=800" style="border-bottom: 0px; border-left: 0px; border-right: 0px; border-top: 0px; display: inline;" title="Tag external page" width="454" /&gt;&lt;/a&gt;Clicking to the “Tag and Noteboard” brings up the same dialog as in the previous example for a SharePoint page. You can tag and write notes as usual.&lt;br /&gt;&lt;blockquote&gt;This looks similar to social bookmark tools like &lt;a href="http://www.diigo.com/"&gt;Diigo&lt;/a&gt;. But I miss some features like highlighting text, sticky notes, share bookmarks with a group, and a good browser plug-in. But hope this will come in later builds…&lt;/blockquote&gt;&lt;h4&gt;Tag Cloud Web Part&lt;/h4&gt;For sure you want to use your tags to navigate and filter content. For this reason there is now a tag cloud web part included in SharePoint 2010. I’m really a tag cloud fun :-)&lt;br /&gt;&lt;a href="http://lh4.ggpht.com/_J6SMSGCmItU/SuBN-2_AXaI/AAAAAAAABNs/U0-cf52yseI/s1600-h/image%5B47%5D.png"&gt;&lt;img alt="image" border="0" height="249" src="http://lh5.ggpht.com/_J6SMSGCmItU/SuBN_lBa37I/AAAAAAAABNw/707InOzqbUw/image_thumb%5B23%5D.png?imgmax=800" style="border-bottom: 0px; border-left: 0px; border-right: 0px; border-top: 0px; display: inline;" title="image" width="354" /&gt;&lt;/a&gt; &lt;br /&gt;&lt;a href="http://lh4.ggpht.com/_J6SMSGCmItU/SuBOAFxDLiI/AAAAAAAABN0/hDINTY8B4hE/s1600-h/image%5B51%5D.png"&gt;&lt;img alt="image" border="0" height="268" src="http://lh4.ggpht.com/_J6SMSGCmItU/SuBOAYTGj4I/AAAAAAAABN4/DExKerYPH-c/image_thumb%5B25%5D.png?imgmax=800" style="border-bottom: 0px; border-left: 0px; border-right: 0px; border-top: 0px; display: inline;" title="image" width="454" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;h4&gt;My Tags and Notes&lt;/h4&gt;You can manage your tags globally as shown bellow.&lt;br /&gt;&lt;a href="http://lh3.ggpht.com/_J6SMSGCmItU/SuBOBZit4II/AAAAAAAABN8/dVEvmKVaHe4/s1600-h/image%5B36%5D.png"&gt;&lt;img alt="image" border="0" height="244" src="http://lh4.ggpht.com/_J6SMSGCmItU/SuBOB-oYkbI/AAAAAAAABOA/KHSPWZ8mM5o/image_thumb%5B18%5D.png?imgmax=800" style="border-bottom: 0px; border-left: 0px; border-right: 0px; border-top: 0px; display: inline;" title="image" width="203" /&gt;&lt;/a&gt; &lt;br /&gt;&lt;a href="http://lh4.ggpht.com/_J6SMSGCmItU/SuBOCemqTfI/AAAAAAAABOE/3LgZmPzieyg/s1600-h/image%5B40%5D.png"&gt;&lt;img alt="image" border="0" height="208" src="http://lh5.ggpht.com/_J6SMSGCmItU/SuBOC04F4-I/AAAAAAAABOI/9m_44euv3Cc/image_thumb%5B20%5D.png?imgmax=800" style="border-bottom: 0px; border-left: 0px; border-right: 0px; border-top: 0px; display: inline;" title="image" width="454" /&gt;&lt;/a&gt; &lt;br /&gt;&lt;h4&gt;Managing Enterprise Metadata&lt;/h4&gt;All you seen above is not enough for building an enterprise taxonomy. You don’t want let the users build your taxonomy on the fly with some tags, you want to predefine keywords and terms for your whole SharePoint farm. And what’s about multilingual terms and keywords? That’s why Microsoft added a something called “Term Store Management Tool”:&lt;br /&gt;&lt;a href="http://lh4.ggpht.com/_J6SMSGCmItU/SuBODWGiAWI/AAAAAAAABOM/fpJxVggnyY8/s1600-h/image%5B55%5D.png"&gt;&lt;img alt="image" border="0" height="402" src="http://lh5.ggpht.com/_J6SMSGCmItU/SuBODzAZV1I/AAAAAAAABOQ/2g986Uf8D2s/image_thumb%5B27%5D.png?imgmax=800" style="border-bottom: 0px; border-left: 0px; border-right: 0px; border-top: 0px; display: inline;" title="image" width="454" /&gt;&lt;/a&gt; &lt;br /&gt;Here you can delete or create new tags and terms centrally for the whole farm. There is also support for multilingual terms! In my current build I’ve got the feeling this isn’t feature completed yet (there is already some documentation on &lt;a href="http://msdn.microsoft.com/en-us/library/ee559337(office.14).aspx" target="_blank"&gt;MSDN&lt;/a&gt;), so I stop here and wait for further builds…&lt;br /&gt;&lt;blockquote&gt;&lt;h3&gt;Although all this cool new web 2.0 features in SharePoint 2010, don’t forget that the most significant part is&amp;nbsp;to get&amp;nbsp;all this rocking is your company’s culture! Are you ready for culture 2.0?&lt;/h3&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;strong&gt;UPDATE 26th Nov 09 (beta 2):&lt;/strong&gt;&lt;br /&gt;I've just seen in a &lt;a href="http://edge.technet.com/Media/SharePoint-Server-2010-Dokumente-Rating-Tagging-Taxonomien/"&gt;screencast&lt;/a&gt; from Steffen Kraus (Microsoft Germany) some enhancements in newer builds:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;support for hierachical tags (Taxonomy)&lt;/li&gt;&lt;li&gt;tag picker functionality&lt;/li&gt;&lt;li&gt;tag based hierachical&amp;nbsp;navigation in a list (Metadata navigation)&lt;/li&gt;&lt;/ul&gt;&lt;b&gt;&lt;br /&gt;There's a huge different between social tags (will be stored at the user profile) and Enterprise Keywords and Terms (will be stored in the item itself)&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;FAST Search can't use tag refinment for social tags - &lt;a href="http://cglessner.blogspot.com/2010/06/unsocial-fast-search-for-sharepoint.html"&gt;read more&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3766174345251248841-6227726326001023739?l=www.ilovesharepoint.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.ilovesharepoint.com/feeds/6227726326001023739/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3766174345251248841&amp;postID=6227726326001023739' title='10 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3766174345251248841/posts/default/6227726326001023739'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3766174345251248841/posts/default/6227726326001023739'/><link rel='alternate' type='text/html' href='http://www.ilovesharepoint.com/2009/10/managing-metadata-in-sharepoint-2010.html' title='Managing Metadata in SharePoint 2010'/><author><name>Christian</name><uri>http://www.blogger.com/profile/16986066591633364914</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='22' height='32' src='http://bp1.blogger.com/_J6SMSGCmItU/SGAIxRt-lLI/AAAAAAAAABo/EqgbBGe38FM/S220/DSC_0314_small.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh3.ggpht.com/_J6SMSGCmItU/SuBN5BKaUPI/AAAAAAAABM4/7fSlzRpjWKM/s72-c/image_thumb%5B1%5D.png?imgmax=800' height='72' width='72'/><thr:total>10</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3766174345251248841.post-2050461182583401091</id><published>2009-10-20T22:44:00.001+02:00</published><updated>2011-02-21T14:18:33.080+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SP2010'/><category scheme='http://www.blogger.com/atom/ns#' term='Features'/><category scheme='http://www.blogger.com/atom/ns#' term='SharePoint'/><category scheme='http://www.blogger.com/atom/ns#' term='Beta'/><title type='text'>Built-in Features Overview in SharePoint 2010</title><content type='html'>&lt;blockquote&gt;   &lt;p&gt;Refers to build 14.0.4006.1010&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;Just an overview, I haven’t had time to check them all out yet, but want to share them with you…&lt;/p&gt;  &lt;h3&gt;Site Collection Features:&lt;/h3&gt;  &lt;p&gt;&lt;strong&gt;Advanced Web Analytics      &lt;br /&gt;&lt;/strong&gt;This feature comprises advanced Web Analytics reports, data-driven workflows, workflow for scheduling reports, the What's Popular Web Part and customize reports functionality(for Enterprise SKU) at the site collection level.&amp;#160;&amp;#160;&amp;#160; &lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Collect Signatures Workflow      &lt;br /&gt;&lt;/strong&gt;Gathers signatures needed to complete a Microsoft Office document. &lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Collect Signatures Workflow - SharePoint 14&lt;/strong&gt;     &lt;br /&gt;Gathers signatures needed to complete a Microsoft Office document. This workflow can be edited in SharePoint Designer.&amp;#160; &lt;br /&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Disposition Approval Workflow&lt;/strong&gt;     &lt;br /&gt;Manages document expiration and retention by allowing participants to decide whether to retain or delete expired documents. &lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Document ID Service&lt;/strong&gt;     &lt;br /&gt;Assigns IDs to documents in the Site Collection, which can be used to retrieve items independent of their current location.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Document Sets&lt;/strong&gt;     &lt;br /&gt;Provides the content types required for creating and using document sets. Create a document set when you want to manage multiple documents as a single work product.&amp;#160; &lt;br /&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Enterprise Wiki Layouts&lt;/strong&gt;     &lt;br /&gt;Create a large-scale wiki with categories and page layouts.&amp;#160; &lt;br /&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;In Place Records Management&lt;/strong&gt;     &lt;br /&gt;Enable the definition and declaration of records in place.&amp;#160;&amp;#160; &lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Library and Folder Based Retention&lt;/strong&gt;     &lt;br /&gt;Allows list administrators to override content type retention schedules and set schedules on libraries and folders.&amp;#160; &lt;br /&gt;&amp;#160;&amp;#160; &lt;br /&gt;&lt;strong&gt;Microsoft Search Server Web Parts&lt;/strong&gt;     &lt;br /&gt;This feature uploads all web parts required for Search Center. &lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Office SharePoint Server Enterprise Site Collection features&lt;/strong&gt;     &lt;br /&gt;Features such as the business data catalog, forms services, and Excel Services, included in the Office SharePoint Server Enterprise License. &lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Office SharePoint Server Publishing Infrastructure      &lt;br /&gt;&lt;/strong&gt;Provides centralized libraries, content types, master pages and page layouts and enables page scheduling and other publishing functionality for a site collection. &lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Office SharePoint Server Standard Site Collection features&lt;/strong&gt;     &lt;br /&gt;Features such as user profiles and search, included in the Office SharePoint Server Standard License. &lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Reporting&lt;/strong&gt;     &lt;br /&gt;Creates reports about information in Windows SharePoint Services.&amp;#160; &lt;br /&gt;&amp;#160;&amp;#160; &lt;br /&gt;&lt;strong&gt;Routing Workflows&lt;/strong&gt;     &lt;br /&gt;Workflows that send a document for feedback or approval. &lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Routing Workflows - SharePoint 14      &lt;br /&gt;&lt;/strong&gt;Workflows that send a document for feedback or approval. These workflows can be edited in SharePoint Designer.&amp;#160; &lt;br /&gt;&lt;/p&gt; &lt;strong&gt;&lt;/strong&gt;  &lt;p&gt;&lt;strong&gt;Site Help&lt;/strong&gt;     &lt;br /&gt;Create Help content for this site collection. &lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Three-state workflow      &lt;br /&gt;&lt;/strong&gt;Use this workflow to track items in a list. &lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Translation Management Workflow&lt;/strong&gt;     &lt;br /&gt;Manages document translation by creating copies of the document to be translated and assigning translation tasks to translators. &lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Visio Web Access&lt;/strong&gt;     &lt;br /&gt;View Visio Drawing in Web Browser &lt;/p&gt;  &lt;h3&gt;Site Features:&lt;/h3&gt;  &lt;p&gt;&lt;strong&gt;Access Services System Tables&lt;/strong&gt;     &lt;br /&gt;Access Services System Tables &lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Content Organizer      &lt;br /&gt;&lt;/strong&gt;Create metadata based rules that move content submitted to this site to the correct library or folder. &lt;/p&gt;  &lt;p&gt;&lt;strong&gt;E-mail Router&lt;/strong&gt;     &lt;br /&gt;This enables a site's document router to accept and route email messages. This feature should be used only in a highly managed store, like a Records Center. &lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Entity Collaboration Configuration&lt;/strong&gt;     &lt;br /&gt;Creates the infrastructure necessary to enable users to create entity collaboration sites. &lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Entity Collaboration Instance Configuration      &lt;br /&gt;&lt;/strong&gt;Creates the infrastructure necessary to enable users to create entity collaboration instance sites. &lt;/p&gt;  &lt;p&gt;&lt;strong&gt;GroupBoard Lists&lt;/strong&gt;     &lt;br /&gt;Provides Calendar lists with added functionality for team and resource scheduling. &lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Hold and eDiscovery&lt;/strong&gt;     &lt;br /&gt;This feature is used to track external actions like litigations, investigations, or audits that require you to suspend the disposition of documents. &lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Metadata Navigation and Filtering&lt;/strong&gt;     &lt;br /&gt;Provides each list in the site with a settings pages for configuring that list to use metadata tree view hierarchies and filter controls to improve navigation and filtering of the contained items. &lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Office Business Application Design Tools&lt;/strong&gt;     &lt;br /&gt;Document libraries, lists, content types and pages required to build an Office Business Application solution.&amp;#160; &lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Office SharePoint Server Enterprise Site features&lt;/strong&gt;     &lt;br /&gt;Features such as the business data catalog, forms services, and Excel Services, included in the Office SharePoint Server Enterprise License. &lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Office SharePoint Server Publishing&lt;/strong&gt;     &lt;br /&gt;Create a Web page library as well as supporting libraries to create and publish pages based on page layouts. &lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Office SharePoint Server Standard Site features&lt;/strong&gt;     &lt;br /&gt;Features such as user profiles and search, included in the Office SharePoint Server Standard License.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Take list offline&lt;/strong&gt;     &lt;br /&gt;Take a virtual list offline into Outlook or Groove.&amp;#160; &lt;br /&gt;    &lt;br /&gt;&lt;strong&gt;Team Collaboration Lists&lt;/strong&gt;     &lt;br /&gt;Provides team collaboration capabilities for a site by making standard lists, such as document libraries and issues, available. &lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Translation Management Library&lt;/strong&gt;     &lt;br /&gt;Create a translation management library when you want to create documents in multiple languages and manage translation tasks. Translation management libraries include a workflow to manage the translation process and provide sub-folders, file versioning, and check-in/check-out. &lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Wiki Page Home Page      &lt;br /&gt;&lt;/strong&gt;This site feature will create a wiki page and set it as your site home page. &lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3766174345251248841-2050461182583401091?l=www.ilovesharepoint.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.ilovesharepoint.com/feeds/2050461182583401091/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3766174345251248841&amp;postID=2050461182583401091' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3766174345251248841/posts/default/2050461182583401091'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3766174345251248841/posts/default/2050461182583401091'/><link rel='alternate' type='text/html' href='http://www.ilovesharepoint.com/2009/10/built-in-features-overview-in.html' title='Built-in Features Overview in SharePoint 2010'/><author><name>Christian</name><uri>http://www.blogger.com/profile/16986066591633364914</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='22' height='32' src='http://bp1.blogger.com/_J6SMSGCmItU/SGAIxRt-lLI/AAAAAAAAABo/EqgbBGe38FM/S220/DSC_0314_small.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3766174345251248841.post-9091593028676388105</id><published>2009-10-19T18:00:00.012+02:00</published><updated>2011-02-21T14:18:33.082+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SP2010'/><category scheme='http://www.blogger.com/atom/ns#' term='SharePoint'/><category scheme='http://www.blogger.com/atom/ns#' term='Beta'/><category scheme='http://www.blogger.com/atom/ns#' term='LINQ'/><title type='text'>Early look at LINQ to SharePoint</title><content type='html'>&lt;blockquote&gt;This post is preliminary and is subject to change, but should give you at least an idea. It refers to build 14.0.4006.1010. &lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;In SharePoint 2007 you have to user CAML to query SharePoint lists. Anybody who have already written CAML queries knows that this can be tedious with complex queries. To make life easier the community had developed various helper tools like the &lt;a href="http://www.u2u.be/Res/Tools/CamlQueryBuilder.aspx"&gt;U2U CAML Query Builder&lt;/a&gt;, &lt;a href="http://yacamlqt.codeplex.com/"&gt;YACAMLQT (Yet Another CAML Query Tool)&lt;/a&gt;, &lt;a href="http://www.codeplex.com/camldotnet"&gt;CAML.NET&lt;/a&gt;… Meanwhile .NET 3.5 has been released with a cool new feature called LINQ (Language Integrated Queries). LINQ allows you to query in an object-oriented way, supports compile-time check, gives you intellisense support in Visual Studio and defines a unified, SQL like syntax to query any data source. &lt;br /&gt;&lt;pre class="C-Sharp"&gt;var result = from c in Contacts &lt;br /&gt;where c.FirstName == "Christian"&lt;br /&gt;select c&lt;br /&gt;&lt;/pre&gt;The abstraction to allow querying any data source has been implemented through an interface called &lt;a href="http://msdn.microsoft.com/en-us/library/bb351562.aspx"&gt;IQueryable(T)&lt;/a&gt;, but don’t want to go deep in LINQ. Since now Microsoft has been delivered four LINQ providers:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;LINQ to Object &lt;/li&gt;&lt;li&gt;LINQ to XML &lt;/li&gt;&lt;li&gt;LINQ to SQL &lt;/li&gt;&lt;li&gt;LINQ to Entity &lt;/li&gt;&lt;/ul&gt;With SharePoint 2010 the fifth LINQ Provider will be available:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;h3&gt;LINQ to SharePoint&lt;br /&gt;&lt;/h3&gt;&lt;/blockquote&gt;&lt;em&gt;To don’t overlook the community efforts, there is already a &lt;/em&gt;&lt;a href="http://linqtosharepoint.codeplex.com/"&gt;&lt;em&gt;LINQ provider for SharePoint on CodePlex&lt;/em&gt;&lt;/a&gt;&lt;em&gt;, but since now it is in an alpha stadium.&lt;/em&gt; &lt;br /&gt;LINQ to SharePoint works similar to LINQ to SQL or LINQ to Entity. You write business objects (or maybe a DAOs) and decorate them with mapping attributes. When the query will be executed the LINQ statements will be translated to CAML.&lt;a href="http://lh3.ggpht.com/_J6SMSGCmItU/Stwfz7DH36I/AAAAAAAABLs/Yiswpf20SKc/s1600-h/image%5B50%5D.png"&gt;&lt;img alt="image" border="0" height="188" src="http://lh5.ggpht.com/_J6SMSGCmItU/Stwf0_NJvPI/AAAAAAAABLw/vqIVICVaStI/image_thumb%5B31%5D.png?imgmax=800" style="border-bottom-width: 0px; border-left-width: 0px; border-right-width: 0px; border-top-width: 0px; display: inline;" title="image" width="450" /&gt;&lt;/a&gt;&lt;br /&gt;The example class Contact maps to a custom Content Type with the name MyContact and the columns ID and FirstName. Writing this manual is cumbersome, therefore there’s a command line tool called &lt;strong&gt;SPMetal,&lt;/strong&gt; which generates this classes for a whole site. E.g:&amp;nbsp; &lt;br /&gt;&lt;strong&gt;SPMetal /web:http://localhost/anysite /namespace:iLoveSharePoint /code:SPDataContext.cs&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://lh3.ggpht.com/_J6SMSGCmItU/Stwf1qug8sI/AAAAAAAABL0/EaJ7gi021Lc/s1600-h/image%5B15%5D.png"&gt;&lt;img alt="image" border="0" height="180" src="http://lh4.ggpht.com/_J6SMSGCmItU/Stwf3eDWO6I/AAAAAAAABL4/cIy6uZrwUNY/image_thumb%5B11%5D.png?imgmax=800" style="border-bottom-width: 0px; border-left-width: 0px; border-right-width: 0px; border-top-width: 0px; display: inline;" title="image" width="450" /&gt;&lt;/a&gt;&lt;br /&gt;Now we want to query our SharePoint list with LINQ. This is done by a class called Microsoft.SharePoint.Linq.&lt;strong&gt;DataContext. &lt;/strong&gt;The DataContext represents a whole web site. SPMetal additionally generates a derived DataContext containing all lists as Properties.&lt;br /&gt;&lt;div style="border-bottom: medium none; border-left: medium none; border-right: medium none; border-top: medium none;"&gt;&lt;a href="http://lh5.ggpht.com/_J6SMSGCmItU/Stwf37kZlnI/AAAAAAAABL8/-NEyjz05S7g/s1600-h/image%5B27%5D.png" style="clear: left; cssfloat: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img alt="image" border="0" height="227" src="http://lh4.ggpht.com/_J6SMSGCmItU/Stwf4cBetfI/AAAAAAAABMA/IofvYVEfap8/image_thumb%5B18%5D.png?imgmax=800" style="border-bottom-width: 0px; border-left-width: 0px; border-right-width: 0px; border-top-width: 0px; display: inline;" title="image" width="450" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;h3 style="border-bottom: medium none; border-left: medium none; border-right: medium none; border-top: medium none;"&gt;Adding, editing and deleting Items with LINQ to SharePoint&lt;br /&gt;&lt;/h3&gt;&lt;/blockquote&gt;Certainly you can add, edit and delete items with LINQ to SharePoint. To enable change tracking you must (not really all) implement some interfaces in your class:&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li style="border-bottom: medium none; border-left: medium none; border-right: medium none; border-top: medium none;"&gt;Microsoft.SharePoint.Linq.ITrackEntityState &lt;/li&gt;&lt;li style="border-bottom: medium none; border-left: medium none; border-right: medium none; border-top: medium none;"&gt;Microsoft.SharePoint.Linq.ITrackOriginalValues &lt;/li&gt;&lt;li style="border-bottom: medium none; border-left: medium none; border-right: medium none; border-top: medium none;"&gt;System.ComponentModel.INotifyPropertyChanged &lt;/li&gt;&lt;li style="border-bottom: medium none; border-left: medium none; border-right: medium none; border-top: medium none;"&gt;System.ComponentModel.INotifyPropertyChanging &lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div style="border-bottom: medium none; border-left: medium none; border-right: medium none; border-top: medium none;"&gt;Don’t panic, SPMetal does the job for you. I recommend to use SPMetal to generate the classes.&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="border-bottom: medium none; border-left: medium none; border-right: medium none; border-top: medium none;"&gt;Let’s add new contact:&lt;br /&gt;&lt;/div&gt;&lt;div style="border-bottom: medium none; border-left: medium none; border-right: medium none; border-top: medium none;"&gt;&lt;a href="http://lh4.ggpht.com/_J6SMSGCmItU/Stwf6E8zw3I/AAAAAAAABMM/ynasLJqOaho/s1600-h/image%5B63%5D.png" style="clear: left; cssfloat: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img alt="image" border="0" height="161" src="http://lh6.ggpht.com/_J6SMSGCmItU/Stwf6lyj7BI/AAAAAAAABMQ/Ohv3XB6iCLI/image_thumb%5B38%5D.png?imgmax=800" style="border-bottom-width: 0px; border-left-width: 0px; border-right-width: 0px; border-top-width: 0px; display: inline;" title="image" width="450" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;The method SumbitChanges of the DataContext persist all changes (add, edit, delete) to the SharePoint Content DB.&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;h3&gt;Relations in LINQ to SharePoint&amp;nbsp; &lt;/h3&gt;&lt;/blockquote&gt;Another hot topic in SharePoint are relations between lists. In SharePoint 2007 CAML hasn’t any support for joins! This have made it almost impossible to build data centric applications for SharePoint 2007 (among other restrictions). But many, many customer want do that! Now with LINQ to SharePoint comes support for relational queries – Yippee! &lt;br /&gt;Now we extend our sample Content Type with a lookup column to another Content Type called MyCountry and map the relation. &lt;br /&gt;&lt;br /&gt;&lt;a href="http://lh6.ggpht.com/_J6SMSGCmItU/Stwf4xUa1qI/AAAAAAAABME/3TKTeY6aJ6E/s1600-h/image%5B58%5D.png"&gt;&lt;img alt="image" border="0" height="502" src="http://lh3.ggpht.com/_J6SMSGCmItU/Stwf5vCMqwI/AAAAAAAABMI/yoLTL_U46ms/image_thumb%5B35%5D.png?imgmax=800" style="border-bottom-width: 0px; border-left-width: 0px; border-right-width: 0px; border-top-width: 0px; display: inline;" title="image" width="450" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;To map a multi Lookup you have to use EntitySet&amp;lt;T&amp;gt; instead of EntityRef&amp;lt;T&amp;gt; and set the MultivalueType property of the Association attribute to Multi. The loading of the relation is deferred. The Country object of the Contact will be loaded from the DB when the property will accessed and not before.&lt;br /&gt;Get all contacts from Germany:&lt;br /&gt;&lt;a href="http://lh3.ggpht.com/_J6SMSGCmItU/StxXF-HrnAI/AAAAAAAABMU/4KWa0bGdrVw/s1600-h/image%5B5%5D.png"&gt;&lt;img alt="image" border="0" height="116" src="http://lh6.ggpht.com/_J6SMSGCmItU/StxXGqF_DqI/AAAAAAAABMY/Ar98wzVz4Gg/image_thumb%5B2%5D.png?imgmax=800" style="border-bottom-width: 0px; border-left-width: 0px; border-right-width: 0px; border-top-width: 0px; display: inline;" title="image" width="450" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;span style="color: #333333;"&gt;&lt;em&gt;Yet I haven’t verified that this relational query really ends up in a SQL joins If not, this would really be bad.&lt;/em&gt; I will verify that as soon as possible…&lt;/span&gt;&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;I think I stop here, because things could change in further builds…&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3766174345251248841-9091593028676388105?l=www.ilovesharepoint.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.ilovesharepoint.com/feeds/9091593028676388105/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3766174345251248841&amp;postID=9091593028676388105' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3766174345251248841/posts/default/9091593028676388105'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3766174345251248841/posts/default/9091593028676388105'/><link rel='alternate' type='text/html' href='http://www.ilovesharepoint.com/2009/10/early-look-at-linq-to-sharepoint.html' title='Early look at LINQ to SharePoint'/><author><name>Christian</name><uri>http://www.blogger.com/profile/16986066591633364914</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='22' height='32' src='http://bp1.blogger.com/_J6SMSGCmItU/SGAIxRt-lLI/AAAAAAAAABo/EqgbBGe38FM/S220/DSC_0314_small.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh5.ggpht.com/_J6SMSGCmItU/Stwf0_NJvPI/AAAAAAAABLw/vqIVICVaStI/s72-c/image_thumb%5B31%5D.png?imgmax=800' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3766174345251248841.post-5075054944640436102</id><published>2009-10-19T18:00:00.000+02:00</published><updated>2011-02-21T14:18:33.084+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SP2010'/><category scheme='http://www.blogger.com/atom/ns#' term='SharePoint'/><category scheme='http://www.blogger.com/atom/ns#' term='PowerShell'/><category scheme='http://www.blogger.com/atom/ns#' term='Beta'/><title type='text'>Early look at SharePoint 2010 &amp; PowerShell</title><content type='html'>&lt;blockquote&gt;   &lt;p&gt;This post is preliminary and is subject to change. It refers to build 14.0.4006.1010.&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;In the community the combination of SharePoint and PowerShell is already a best practice for SharePoint 2007. Thanks to guys like &lt;a href="http://sharepoint.microsoft.com/blogs/zach/default.aspx"&gt;Zach Rosenfield&lt;/a&gt;, &lt;a href="http://blogs.msdn.com/ekraus/"&gt;Eric Kraus&lt;/a&gt; and hopefully myself.&lt;/p&gt;  &lt;blockquote&gt;   &lt;h3&gt;I’m glad to announce that SharePoint 2010 comes with built-in PowerShell support. What a surprise ;-) &lt;/h3&gt; &lt;/blockquote&gt;  &lt;p&gt;You have two options to use PowerShell with SharePoint 2010, either you can launch the built-in SharePoint 2010 Management Console &lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh3.ggpht.com/_J6SMSGCmItU/StmHsUIIJQI/AAAAAAAABLU/gePwL3P8dC0/s1600-h/image3.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://lh5.ggpht.com/_J6SMSGCmItU/StmHtPSvZvI/AAAAAAAABLY/TXANZ63oamg/image_thumb1.png?imgmax=800" width="454" height="174" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;or import the SharePoint PowerShell snap in manually (&lt;strong&gt;Add-PSSnapin Microsoft.SharePoint.PowerShell&lt;/strong&gt;).&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh5.ggpht.com/_J6SMSGCmItU/StmHtsR52TI/AAAAAAAABLc/gWp9WaK0ReY/s1600-h/image9.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://lh6.ggpht.com/_J6SMSGCmItU/StmHxrAufoI/AAAAAAAABLg/r0_pbckr4jI/image_thumb5.png?imgmax=800" width="454" height="72" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;blockquote&gt;   &lt;h3&gt;Out of the box there are 492 SharePoint PowerShell commands! &lt;/h3&gt; &lt;/blockquote&gt;  &lt;p&gt;You don’t believe, check it out yourself:    &lt;br /&gt;&lt;strong&gt;get-command -Noun SP* | measure-object&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;As expected the naming convention for the commands is &lt;/p&gt;  &lt;blockquote&gt;   &lt;h3&gt;[Verb]-SP[Noun]&lt;/h3&gt; &lt;/blockquote&gt;  &lt;p&gt;like &lt;a href="http://blogs.msdn.com/ekraus/"&gt;Eric&lt;/a&gt; and I have done before in &lt;a href="http://www.codeplex.com/SPoshMod"&gt;SPoshMod&lt;/a&gt; or myself in the &lt;a href="http://www.codeplex.com/iLoveSharePoint/Release/ProjectReleases.aspx?ReleaseId=14994"&gt;PowerShell profile script for SharePoint&lt;/a&gt;. This is great because you are already familiar with the usage and it minimizes script migration efforts. The example in my &lt;a href="http://cglessner.blogspot.com/2008/06/powershell-sharepoint.html"&gt;SharePoint &amp;amp; PowerShell Quick Start&lt;/a&gt; post works without any changes with the SharePoint 2010 PowerShell Snap In.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;$web = get-spweb “http://localhost”      &lt;br /&gt;$web.Title = &amp;quot;Hello PowerShell&amp;quot;       &lt;br /&gt;$web.Update()&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;You can also provide a wildcard (*) in the URL to return a collection of sub sites. See all options with “get-help get-spweb” &lt;/p&gt;  &lt;blockquote&gt;   &lt;h3&gt;Appendix - List of SharePoint 2010 PowerShell Commands&lt;/h3&gt; &lt;/blockquote&gt;  &lt;p&gt;Add-SPClaimMapping    &lt;br /&gt;Add-SPFeatureSetMember     &lt;br /&gt;Add-SPInfoPathUserAgent     &lt;br /&gt;Add-SPProfileServiceApplicationTenant     &lt;br /&gt;Add-SPServiceApplicationProxyGroupMember     &lt;br /&gt;Add-SPSolution     &lt;br /&gt;Add-SPUserSolution     &lt;br /&gt;Backup-SPConfigurationDatabase     &lt;br /&gt;Backup-SPFarm     &lt;br /&gt;Backup-SPSite     &lt;br /&gt;Check-SPContentDatabase     &lt;br /&gt;Clear-SPBusinessDataCatalogPartitionData     &lt;br /&gt;Clear-SPLogLevel     &lt;br /&gt;Clear-SPMetadataWebServicePartitionData     &lt;br /&gt;Clear-SPSecureStoreCredentialMapping     &lt;br /&gt;Connect-SPConfigurationDatabase     &lt;br /&gt;Copy-SPBusinessDataCatalogAclToChildren     &lt;br /&gt;Disable-SPBusinessDataCatalogEntity     &lt;br /&gt;Disable-SPFeature     &lt;br /&gt;Disable-SPInfoPathFormTemplate     &lt;br /&gt;Disable-SPSessionStateService     &lt;br /&gt;Disable-SPSingleSignOn     &lt;br /&gt;Disable-SPTimerJob     &lt;br /&gt;Disable-SPWebApplicationHttpThrottling     &lt;br /&gt;Disconnect-SPConfigurationDatabase     &lt;br /&gt;Dismount-SPContentDatabase     &lt;br /&gt;Dismount-SPStateServiceDatabase     &lt;br /&gt;Enable-SPBusinessDataCatalogEntity     &lt;br /&gt;Enable-SPFeature     &lt;br /&gt;Enable-SPInfoPathFormTemplate     &lt;br /&gt;Enable-SPSessionStateService     &lt;br /&gt;Enable-SPTimerJob     &lt;br /&gt;Enable-SPWebApplicationHttpThrottling     &lt;br /&gt;Export-SPBusinessDataCatalogModel     &lt;br /&gt;Export-SPBusinessDataCatalogPartitionData     &lt;br /&gt;Export-SPEnterpriseSearchTopology     &lt;br /&gt;Export-SPInfoPathAdministrationFiles     &lt;br /&gt;Export-SPMetadataWebServicePartitionData     &lt;br /&gt;Export-SPProfileServiceApplicationTenant     &lt;br /&gt;Export-SPSiteSubscriptionSettings     &lt;br /&gt;Export-SPWeb     &lt;br /&gt;Get-SPAccessServiceApplication     &lt;br /&gt;Get-SPAlternateURL     &lt;br /&gt;Get-SPBackupHistory     &lt;br /&gt;Get-SPBrowserCustomerExperienceImprovementProgram     &lt;br /&gt;Get-SPBusinessDataCatalogMetadataObject     &lt;br /&gt;Get-SPBusinessDataCatalogThrottleConfig     &lt;br /&gt;Get-SPCertificate     &lt;br /&gt;Get-SPCertificateStore     &lt;br /&gt;Get-SPClaimProviderManager     &lt;br /&gt;Get-SPContentDatabase     &lt;br /&gt;Get-SPContentDeploymentJob     &lt;br /&gt;Get-SPContentDeploymentPath     &lt;br /&gt;Get-SPCustomLayoutsPage     &lt;br /&gt;Get-SPDatabase     &lt;br /&gt;Get-SPDataConnectionFile     &lt;br /&gt;Get-SPDataConnectionFileDependent     &lt;br /&gt;Get-SPDesignerSettings     &lt;br /&gt;Get-SPDiagnosticConfig     &lt;br /&gt;Get-SPDiagnosticsProvider     &lt;br /&gt;Get-SPEdiscoveryHubSearchScope     &lt;br /&gt;Get-SPediscoveryHubSite     &lt;br /&gt;Get-SPEnterpriseSearchAdministrationComponent     &lt;br /&gt;Get-SPEnterpriseSearchCrawlComponent     &lt;br /&gt;Get-SPEnterpriseSearchCrawlContentSource     &lt;br /&gt;Get-SPEnterpriseSearchCrawlCustomConnector     &lt;br /&gt;Get-SPEnterpriseSearchCrawlDatabase     &lt;br /&gt;Get-SPEnterpriseSearchCrawlExtension     &lt;br /&gt;Get-SPEnterpriseSearchCrawlMapping     &lt;br /&gt;Get-SPEnterpriseSearchCrawlRule     &lt;br /&gt;Get-SPEnterpriseSearchCrawlTopology     &lt;br /&gt;Get-SPEnterpriseSearchExtendedClickThroughExtractorJobDefinition     &lt;br /&gt;Get-SPEnterpriseSearchExtendedConnectorProperty     &lt;br /&gt;Get-SPEnterpriseSearchExtendedQueryProperty     &lt;br /&gt;Get-SPEnterpriseSearchIndexPartition     &lt;br /&gt;Get-SPEnterpriseSearchLanguageResourcePhrase     &lt;br /&gt;Get-SPEnterpriseSearchManagerService     &lt;br /&gt;Get-SPEnterpriseSearchManagerServiceInstance     &lt;br /&gt;Get-SPEnterpriseSearchManagerServiceProxy     &lt;br /&gt;Get-SPEnterpriseSearchMetadataCategory     &lt;br /&gt;Get-SPEnterpriseSearchMetadataCrawledProperty     &lt;br /&gt;Get-SPEnterpriseSearchMetadataManagedProperty     &lt;br /&gt;Get-SPEnterpriseSearchMetadataMapping     &lt;br /&gt;Get-SPEnterpriseSearchPropertyDatabase     &lt;br /&gt;Get-SPEnterpriseSearchQueryAuthority     &lt;br /&gt;Get-SPEnterpriseSearchQueryComponent     &lt;br /&gt;Get-SPEnterpriseSearchQueryDemoted     &lt;br /&gt;Get-SPEnterpriseSearchQueryKeyword     &lt;br /&gt;Get-SPEnterpriseSearchQueryScope     &lt;br /&gt;Get-SPEnterpriseSearchQueryScopeRule     &lt;br /&gt;Get-SPEnterpriseSearchQuerySuggestionCandidates     &lt;br /&gt;Get-SPEnterpriseSearchQueryTopology     &lt;br /&gt;Get-SPEnterpriseSearchRankingModel     &lt;br /&gt;Get-SPEnterpriseSearchSecurityTrimmer     &lt;br /&gt;Get-SPEnterpriseSearchService     &lt;br /&gt;Get-SPEnterpriseSearchServiceApplication     &lt;br /&gt;Get-SPEnterpriseSearchServiceApplicationProxy     &lt;br /&gt;Get-SPEnterpriseSearchServiceInstance     &lt;br /&gt;Get-SPEnterpriseSearchSiteHitRule     &lt;br /&gt;Get-SPExcelBlockedFileType     &lt;br /&gt;Get-SPExcelDataConnectionLibrary     &lt;br /&gt;Get-SPExcelDataProvider     &lt;br /&gt;Get-SPExcelFileLocation     &lt;br /&gt;Get-SPExcelServiceApplication     &lt;br /&gt;Get-SPExcelUserDefinedFunction     &lt;br /&gt;Get-SPFarm     &lt;br /&gt;Get-SPFarmConfig     &lt;br /&gt;Get-SPFeature     &lt;br /&gt;Get-SPFeatureSet     &lt;br /&gt;Get-SPHelpCollection     &lt;br /&gt;Get-SPIdentityProvider     &lt;br /&gt;Get-SPIisWebServiceApplicationPool     &lt;br /&gt;Get-SPIisWebServiceSettings     &lt;br /&gt;Get-SPInfoPathFormsService     &lt;br /&gt;Get-SPInfoPathFormTemplate     &lt;br /&gt;Get-SPInfoPathUserAgent     &lt;br /&gt;Get-SPInfoPathWebServiceProxy     &lt;br /&gt;Get-SPLogEvent     &lt;br /&gt;Get-SPLogLevel     &lt;br /&gt;Get-SPManagedAccount     &lt;br /&gt;Get-SPManagedPath     &lt;br /&gt;Get-SPMetadataServiceApplication     &lt;br /&gt;Get-SPMetadataServiceApplicationProxy     &lt;br /&gt;Get-SPMobileMessagingAccount     &lt;br /&gt;Get-SPObjectSecurity     &lt;br /&gt;Get-SPParentFarmTrust     &lt;br /&gt;Get-SPProcessAccount     &lt;br /&gt;Get-SPProduct     &lt;br /&gt;Get-SPSearchService     &lt;br /&gt;Get-SPSearchServiceInstance     &lt;br /&gt;Get-SPSecureStoreApplication     &lt;br /&gt;Get-SPSecurityTokenService     &lt;br /&gt;Get-SPServer     &lt;br /&gt;Get-SPServiceApplication     &lt;br /&gt;Get-SPServiceApplicationProxy     &lt;br /&gt;Get-SPServiceApplicationProxyGroup     &lt;br /&gt;Get-SPServiceContext     &lt;br /&gt;Get-SPServiceEndpoint     &lt;br /&gt;Get-SPServiceInstance     &lt;br /&gt;Get-SPSessionStateService     &lt;br /&gt;Get-SPSite     &lt;br /&gt;Get-SPSiteAdministration     &lt;br /&gt;Get-SPSiteSubscription     &lt;br /&gt;Get-SPSiteSubscriptionConfig     &lt;br /&gt;Get-SPSiteSubscriptionMetadataConfig     &lt;br /&gt;Get-SPSolution     &lt;br /&gt;Get-SPStateServiceApplication     &lt;br /&gt;Get-SPStateServiceApplicationProxy     &lt;br /&gt;Get-SPStateServiceDatabase     &lt;br /&gt;Get-SPTaxonomySession     &lt;br /&gt;Get-SPTimerJob     &lt;br /&gt;Get-SPTopologyWebServiceApplication     &lt;br /&gt;Get-SPTopologyWebServiceProxy     &lt;br /&gt;Get-SPUsageApplication     &lt;br /&gt;Get-SPUsageDefinition     &lt;br /&gt;Get-SPUsageService     &lt;br /&gt;Get-SPUser     &lt;br /&gt;Get-SPUserSolution     &lt;br /&gt;Get-SPVisioExternalData     &lt;br /&gt;Get-SPVisioPerformance     &lt;br /&gt;Get-SPVisioSafeDataProvider     &lt;br /&gt;Get-SPVisioServiceApplication     &lt;br /&gt;Get-SPVisioServiceApplicationProxy     &lt;br /&gt;Get-SPWeb     &lt;br /&gt;Get-SPWebAnalyticsServiceApplication     &lt;br /&gt;Get-SPWebApplication     &lt;br /&gt;Get-SPWebApplicationHttpThrottlingMonitors     &lt;br /&gt;Get-SPWebPartPack     &lt;br /&gt;Get-SPWebTemplate     &lt;br /&gt;Get-SPWorkflowConfig     &lt;br /&gt;Grant-SPBusinessDataCatalogMetadataObject     &lt;br /&gt;Grant-SPServiceApplication     &lt;br /&gt;Import-SPBusinessDataCatalogModel     &lt;br /&gt;Import-SPBusinessDataCatalogPartitionData     &lt;br /&gt;Import-SPEnterpriseSearchTopology     &lt;br /&gt;Import-SPInfoPathAdministrationFiles     &lt;br /&gt;Import-SPMetadataWebServicePartitionData     &lt;br /&gt;Import-SPProfileServiceApplicationTenant     &lt;br /&gt;Import-SPSiteSubscriptionSettings     &lt;br /&gt;Import-SPWeb     &lt;br /&gt;Initialize-SPContentDatabase     &lt;br /&gt;Initialize-SPResourceSecurity     &lt;br /&gt;Initialize-SPStateServiceDatabase     &lt;br /&gt;Install-SPApplicationContent     &lt;br /&gt;Install-SPDataConnectionFile     &lt;br /&gt;Install-SPFeature     &lt;br /&gt;Install-SPHelpCollection     &lt;br /&gt;Install-SPInfoPathFormTemplate     &lt;br /&gt;Install-SPSolution     &lt;br /&gt;Install-SPUserSolution     &lt;br /&gt;Install-SPWebPartPack     &lt;br /&gt;Install-SPWebTemplate     &lt;br /&gt;Merge-SPLogFile     &lt;br /&gt;Mount-SPContentDatabase     &lt;br /&gt;Mount-SPStateServiceDatabase     &lt;br /&gt;Move-SPBlobStorageLocation     &lt;br /&gt;Move-SPUser     &lt;br /&gt;New-SPAccessServiceApplication     &lt;br /&gt;New-SPAlternateURL     &lt;br /&gt;New-SPBusinessDataCatalogServiceApplication     &lt;br /&gt;New-SPBusinessDataCatalogServiceApplicationProxy     &lt;br /&gt;New-SPCentralAdministration     &lt;br /&gt;New-SPCertificate     &lt;br /&gt;New-SPClaimMapping     &lt;br /&gt;New-SPClaimsObject     &lt;br /&gt;New-SPClaimsPrincipal     &lt;br /&gt;New-SPConfigurationDatabase     &lt;br /&gt;New-SPContentDatabase     &lt;br /&gt;New-SPContentDeploymentJob     &lt;br /&gt;New-SPContentDeploymentPath     &lt;br /&gt;New-SPEnterpriseSearchCrawlComponent     &lt;br /&gt;New-SPEnterpriseSearchCrawlContentSource     &lt;br /&gt;New-SPEnterpriseSearchCrawlCustomConnector     &lt;br /&gt;New-SPEnterpriseSearchCrawlDatabase     &lt;br /&gt;New-SPEnterpriseSearchCrawlExtension     &lt;br /&gt;New-SPEnterpriseSearchCrawlMapping     &lt;br /&gt;New-SPEnterpriseSearchCrawlRule     &lt;br /&gt;New-SPEnterpriseSearchCrawlTopology     &lt;br /&gt;New-SPEnterpriseSearchLanguageResourcePhrase     &lt;br /&gt;New-SPEnterpriseSearchMetadataCategory     &lt;br /&gt;New-SPEnterpriseSearchMetadataCrawledProperty     &lt;br /&gt;New-SPEnterpriseSearchMetadataManagedProperty     &lt;br /&gt;New-SPEnterpriseSearchMetadataMapping     &lt;br /&gt;New-SPEnterpriseSearchPropertyDatabase     &lt;br /&gt;New-SPEnterpriseSearchQueryAuthority     &lt;br /&gt;New-SPEnterpriseSearchQueryComponent     &lt;br /&gt;New-SPEnterpriseSearchQueryDemoted     &lt;br /&gt;New-SPEnterpriseSearchQueryKeyword     &lt;br /&gt;New-SPEnterpriseSearchQueryScope     &lt;br /&gt;New-SPEnterpriseSearchQueryScopeRule     &lt;br /&gt;New-SPEnterpriseSearchQueryTopology     &lt;br /&gt;New-SPEnterpriseSearchRankingModel     &lt;br /&gt;New-SPEnterpriseSearchSecurityTrimmer     &lt;br /&gt;New-SPEnterpriseSearchServiceApplication     &lt;br /&gt;New-SPEnterpriseSearchServiceApplicationProxy     &lt;br /&gt;New-SPEnterpriseSearchSiteHitRule     &lt;br /&gt;New-SPExcelBlockedFileType     &lt;br /&gt;New-SPExcelDataConnectionLibrary     &lt;br /&gt;New-SPExcelDataProvider     &lt;br /&gt;New-SPExcelFileLocation     &lt;br /&gt;New-SPExcelServiceApplication     &lt;br /&gt;New-SPExcelUserDefinedFunction     &lt;br /&gt;New-SPFeatureSet     &lt;br /&gt;New-SPIdentityProvider     &lt;br /&gt;New-SPIisWebServiceApplicationPool     &lt;br /&gt;New-SPLogFile     &lt;br /&gt;New-SPManagedAccount     &lt;br /&gt;New-SPManagedPath     &lt;br /&gt;New-SPMetadataServiceApplication     &lt;br /&gt;New-SPMetadataServiceApplicationProxy     &lt;br /&gt;New-SPObaSolutionPackage     &lt;br /&gt;New-SPParentFarmTrust     &lt;br /&gt;New-SPProfileServiceApplication     &lt;br /&gt;New-SPProfileServiceApplicationProxy     &lt;br /&gt;New-SPSecureStoreApplication     &lt;br /&gt;New-SPSecureStoreApplicationField     &lt;br /&gt;New-SPSecureStoreServiceApplication     &lt;br /&gt;New-SPSecureStoreServiceApplicationProxy     &lt;br /&gt;New-SPSecureStoreTargetApplication     &lt;br /&gt;New-SPServiceApplicationProxyGroup     &lt;br /&gt;New-SPSite     &lt;br /&gt;New-SPSiteSubscription     &lt;br /&gt;New-SPStateServiceApplication     &lt;br /&gt;New-SPStateServiceApplicationProxy     &lt;br /&gt;New-SPStateServiceDatabase     &lt;br /&gt;New-SPSubscriptionSettingsServiceApplication     &lt;br /&gt;New-SPSubscriptionSettingsServiceApplicationProxy     &lt;br /&gt;New-SPUsageApplication     &lt;br /&gt;New-SPUsageLogFile     &lt;br /&gt;New-SPUser     &lt;br /&gt;New-SPVisioSafeDataProvider     &lt;br /&gt;New-SPVisioServiceApplication     &lt;br /&gt;New-SPVisioServiceApplicationProxy     &lt;br /&gt;New-SPWeb     &lt;br /&gt;New-SPWebAnalyticsServiceApplication     &lt;br /&gt;New-SPWebAnalyticsServiceApplicationProxy     &lt;br /&gt;New-SPWebApplication     &lt;br /&gt;New-SPWebApplicationExtension     &lt;br /&gt;New-SPWordConversionServiceApplication     &lt;br /&gt;New-SPWordConversionServiceApplicationProxy     &lt;br /&gt;Publish-SPServiceApplication     &lt;br /&gt;Receive-SPSharedServiceApplicationInfo     &lt;br /&gt;Remove-SPAlternateURL     &lt;br /&gt;Remove-SPBusinessDataCatalogModel     &lt;br /&gt;Remove-SPBusinessDataCatalogPartition     &lt;br /&gt;Remove-SPBusinessDataCatalogThrottleConfig     &lt;br /&gt;Remove-SPCertificate     &lt;br /&gt;Remove-SPClaimMapping     &lt;br /&gt;Remove-SPConfigurationDatabase     &lt;br /&gt;Remove-SPContentDatabase     &lt;br /&gt;Remove-SPContentDeploymentJob     &lt;br /&gt;Remove-SPContentDeploymentPath     &lt;br /&gt;Remove-SPEnterpriseSearchCrawlComponent     &lt;br /&gt;Remove-SPEnterpriseSearchCrawlContentSource     &lt;br /&gt;Remove-SPEnterpriseSearchCrawlCustomConnector     &lt;br /&gt;Remove-SPEnterpriseSearchCrawlDatabase     &lt;br /&gt;Remove-SPEnterpriseSearchCrawlExtension     &lt;br /&gt;Remove-SPEnterpriseSearchCrawlMapping     &lt;br /&gt;Remove-SPEnterpriseSearchCrawlRule     &lt;br /&gt;Remove-SPEnterpriseSearchCrawlTopology     &lt;br /&gt;Remove-SPEnterpriseSearchLanguageResourcePhrase     &lt;br /&gt;Remove-SPEnterpriseSearchMetadataCategory     &lt;br /&gt;Remove-SPEnterpriseSearchMetadataManagedProperty     &lt;br /&gt;Remove-SPEnterpriseSearchMetadataMapping     &lt;br /&gt;Remove-SPEnterpriseSearchPropertyDatabase     &lt;br /&gt;Remove-SPEnterpriseSearchQueryAuthority     &lt;br /&gt;Remove-SPEnterpriseSearchQueryComponent     &lt;br /&gt;Remove-SPEnterpriseSearchQueryDemoted     &lt;br /&gt;Remove-SPEnterpriseSearchQueryKeyword     &lt;br /&gt;Remove-SPEnterpriseSearchQueryScope     &lt;br /&gt;Remove-SPEnterpriseSearchQueryScopeRule     &lt;br /&gt;Remove-SPEnterpriseSearchQueryTopology     &lt;br /&gt;Remove-SPEnterpriseSearchRankingModel     &lt;br /&gt;Remove-SPEnterpriseSearchSecurityTrimmer     &lt;br /&gt;Remove-SPEnterpriseSearchServiceApplication     &lt;br /&gt;Remove-SPEnterpriseSearchServiceApplicationProxy     &lt;br /&gt;Remove-SPEnterpriseSearchSiteHitRule     &lt;br /&gt;Remove-SPExcelBlockedFileType     &lt;br /&gt;Remove-SPExcelDataConnectionLibrary     &lt;br /&gt;Remove-SPExcelDataProvider     &lt;br /&gt;Remove-SPExcelFileLocation     &lt;br /&gt;Remove-SPExcelUserDefinedFunction     &lt;br /&gt;Remove-SPFeatureSet     &lt;br /&gt;Remove-SPFeatureSetMember     &lt;br /&gt;Remove-SPIdentityProvider     &lt;br /&gt;Remove-SPIisWebServiceApplicationPool     &lt;br /&gt;Remove-SPInfoPathUserAgent     &lt;br /&gt;Remove-SPManagedAccount     &lt;br /&gt;Remove-SPManagedPath     &lt;br /&gt;Remove-SPParentFarmTrust     &lt;br /&gt;Remove-SPProfileServiceApplicationTenant     &lt;br /&gt;Remove-SPSecureStoreApplication     &lt;br /&gt;Remove-SPServiceApplication     &lt;br /&gt;Remove-SPServiceApplicationProxy     &lt;br /&gt;Remove-SPServiceApplicationProxyGroup     &lt;br /&gt;Remove-SPServiceApplicationProxyGroupMember     &lt;br /&gt;Remove-SPSite     &lt;br /&gt;Remove-SPSiteSubscription     &lt;br /&gt;Remove-SPSiteSubscriptionMetadataConfig     &lt;br /&gt;Remove-SPSiteSubscriptionSettings     &lt;br /&gt;Remove-SPSolution     &lt;br /&gt;Remove-SPSolutionDeploymentLock     &lt;br /&gt;Remove-SPStateServiceDatabase     &lt;br /&gt;Remove-SPUsageApplication     &lt;br /&gt;Remove-SPUser     &lt;br /&gt;Remove-SPUserSolution     &lt;br /&gt;Remove-SPVisioSafeDataProvider     &lt;br /&gt;Remove-SPVisioServiceApplication     &lt;br /&gt;Remove-SPVisioServiceApplicationProxy     &lt;br /&gt;Remove-SPWeb     &lt;br /&gt;Remove-SPWebApplication     &lt;br /&gt;Rename-SPServer     &lt;br /&gt;Restart-SPEnterpriseSearchQueryComponent     &lt;br /&gt;Restore-SPEnterpriseSearchServiceApplication     &lt;br /&gt;Restore-SPFarm     &lt;br /&gt;Restore-SPSite     &lt;br /&gt;Resume-SPStateServiceDatabase     &lt;br /&gt;Revoke-SPBusinessDataCatalogMetadataObject     &lt;br /&gt;Revoke-SPServiceApplication     &lt;br /&gt;Set-SPAccessServiceApplication     &lt;br /&gt;Set-SPAlternateURL     &lt;br /&gt;Set-SPBrowserCustomerExperienceImprovementProgram     &lt;br /&gt;Set-SPBusinessDataCatalogMetadataObject     &lt;br /&gt;Set-SPBusinessDataCatalogServiceApplication     &lt;br /&gt;Set-SPBusinessDataCatalogThrottleConfig     &lt;br /&gt;Set-SPCentralAdministration     &lt;br /&gt;Set-SPContentDatabase     &lt;br /&gt;Set-SPContentDeploymentJob     &lt;br /&gt;Set-SPContentDeploymentPath     &lt;br /&gt;Set-SPCustomLayoutsPage     &lt;br /&gt;Set-SPDataConnectionFile     &lt;br /&gt;Set-SPDesignerSettings     &lt;br /&gt;Set-SPDiagnosticConfig     &lt;br /&gt;Set-SPDiagnosticsProvider     &lt;br /&gt;Set-SPediscoveryHub     &lt;br /&gt;Set-SPEnterpriseSearchAdministrationComponent     &lt;br /&gt;Set-SPEnterpriseSearchCrawlContentSource     &lt;br /&gt;Set-SPEnterpriseSearchCrawlDatabase     &lt;br /&gt;Set-SPEnterpriseSearchCrawlRule     &lt;br /&gt;Set-SPEnterpriseSearchCrawlTopology     &lt;br /&gt;Set-SPEnterpriseSearchExtendedConnectorProperty     &lt;br /&gt;Set-SPEnterpriseSearchExtendedQueryProperty     &lt;br /&gt;Set-SPEnterpriseSearchIndexPartition     &lt;br /&gt;Set-SPEnterpriseSearchMetadataCategory     &lt;br /&gt;Set-SPEnterpriseSearchMetadataCrawledProperty     &lt;br /&gt;Set-SPEnterpriseSearchMetadataManagedProperty     &lt;br /&gt;Set-SPEnterpriseSearchMetadataMapping     &lt;br /&gt;Set-SPEnterpriseSearchPropertyDatabase     &lt;br /&gt;Set-SPEnterpriseSearchQueryAuthority     &lt;br /&gt;Set-SPEnterpriseSearchQueryComponent     &lt;br /&gt;Set-SPEnterpriseSearchQueryKeyword     &lt;br /&gt;Set-SPEnterpriseSearchQueryScope     &lt;br /&gt;Set-SPEnterpriseSearchQueryScopeRule     &lt;br /&gt;Set-SPEnterpriseSearchQueryTopology     &lt;br /&gt;Set-SPEnterpriseSearchRankingModel     &lt;br /&gt;Set-SPEnterpriseSearchService     &lt;br /&gt;Set-SPEnterpriseSearchServiceApplication     &lt;br /&gt;Set-SPEnterpriseSearchServiceApplicationProxy     &lt;br /&gt;Set-SPEnterpriseSearchServiceInstance     &lt;br /&gt;Set-SPExcelDataConnectionLibrary     &lt;br /&gt;Set-SPExcelDataProvider     &lt;br /&gt;Set-SPExcelFileLocation     &lt;br /&gt;Set-SPExcelServiceApplication     &lt;br /&gt;Set-SPExcelUserDefinedFunction     &lt;br /&gt;Set-SPFarmConfig     &lt;br /&gt;Set-SPIdentityProvider     &lt;br /&gt;Set-SPIisWebServiceApplicationPool     &lt;br /&gt;Set-SPIisWebServiceSettings     &lt;br /&gt;Set-SPInfoPathFormsService     &lt;br /&gt;Set-SPInfoPathFormTemplate     &lt;br /&gt;Set-SPInfoPathWebServiceProxy     &lt;br /&gt;Set-SPLogLevel     &lt;br /&gt;Set-SPManagedAccount     &lt;br /&gt;Set-SPMetadataServiceApplication     &lt;br /&gt;Set-SPMetadataServiceApplicationProxy     &lt;br /&gt;Set-SPMobileMessagingAccount     &lt;br /&gt;Set-SPParentFarmTrust     &lt;br /&gt;Set-SPPassPhrase     &lt;br /&gt;Set-SPProfileServiceApplication     &lt;br /&gt;Set-SPProfileServiceApplicationProxy     &lt;br /&gt;Set-SPProfileServiceApplicationTenant     &lt;br /&gt;Set-SPSearchService     &lt;br /&gt;Set-SPSearchServiceInstance     &lt;br /&gt;Set-SPSecureStoreApplication     &lt;br /&gt;Set-SPSecureStoreServiceApplication     &lt;br /&gt;Set-SPServiceApplication     &lt;br /&gt;Set-SPServiceEndpoint     &lt;br /&gt;Set-SPSessionStateService     &lt;br /&gt;Set-SPSite     &lt;br /&gt;Set-SPSiteAdministration     &lt;br /&gt;Set-SPSiteSubscriptionConfig     &lt;br /&gt;Set-SPSiteSubscriptionMetadataConfig     &lt;br /&gt;Set-SPStateServiceApplication     &lt;br /&gt;Set-SPStateServiceApplicationProxy     &lt;br /&gt;Set-SPStateServiceDatabase     &lt;br /&gt;Set-SPSubscriptionSettingsServiceApplication     &lt;br /&gt;Set-SPTimerJob     &lt;br /&gt;Set-SPTopologyWebServiceApplication     &lt;br /&gt;Set-SPTopologyWebServiceProxy     &lt;br /&gt;Set-SPUsageApplication     &lt;br /&gt;Set-SPUsageDefinition     &lt;br /&gt;Set-SPUsageService     &lt;br /&gt;Set-SPUser     &lt;br /&gt;Set-SPVisioExternalData     &lt;br /&gt;Set-SPVisioPerformance     &lt;br /&gt;Set-SPVisioSafeDataProvider     &lt;br /&gt;Set-SPVisioServiceApplication     &lt;br /&gt;Set-SPWeb     &lt;br /&gt;Set-SPWebAnalyticsServiceApplication     &lt;br /&gt;Set-SPWebApplication     &lt;br /&gt;Set-SPWebApplicationHttpThrottlingMonitor     &lt;br /&gt;Set-SPWebApplicationSiginRedirectUrl     &lt;br /&gt;Set-SPWebTemplate     &lt;br /&gt;Set-SPWordConversionServiceApplication     &lt;br /&gt;Set-SPWorkflowConfig     &lt;br /&gt;Start-SPAdminJob     &lt;br /&gt;Start-SPAssignment     &lt;br /&gt;Start-SPContentDeploymentJob     &lt;br /&gt;Start-SPEnterpriseSearchManagerServiceInstance     &lt;br /&gt;Start-SPEnterpriseSearchServiceInstance     &lt;br /&gt;Start-SPInfoPathFormTemplate     &lt;br /&gt;Start-SPServiceInstance     &lt;br /&gt;Start-SPTimerJob     &lt;br /&gt;Stop-SPAssignment     &lt;br /&gt;Stop-SPEnterpriseSearchManagerServiceInstance     &lt;br /&gt;Stop-SPEnterpriseSearchServiceInstance     &lt;br /&gt;Stop-SPInfoPathFormTemplate     &lt;br /&gt;Stop-SPServiceInstance     &lt;br /&gt;Suspend-SPStateServiceDatabase     &lt;br /&gt;Test-SPInfoPathFormTemplate     &lt;br /&gt;Uninstall-SPDataConnectionFile     &lt;br /&gt;Uninstall-SPFeature     &lt;br /&gt;Uninstall-SPHelpCollection     &lt;br /&gt;Uninstall-SPInfoPathFormTemplate     &lt;br /&gt;Uninstall-SPSolution     &lt;br /&gt;Uninstall-SPUserSolution     &lt;br /&gt;Uninstall-SPWebPartPack     &lt;br /&gt;Uninstall-SPWebTemplate     &lt;br /&gt;Unpublish-SPServiceApplication     &lt;br /&gt;Update-SPFarmEncryptionKey     &lt;br /&gt;Update-SPInfoPathFormTemplate     &lt;br /&gt;Update-SPInfoPathUrl     &lt;br /&gt;Update-SPSecureStoreApplicationServerKey     &lt;br /&gt;Update-SPSecureStoreCredentialMapping     &lt;br /&gt;Update-SPSecureStoreGroupCredentialMapping     &lt;br /&gt;Update-SPSecureStoreMasterKey     &lt;br /&gt;Update-SPSolution     &lt;br /&gt;Update-SPUserProfilePhotoStore     &lt;br /&gt;Update-SPUserSolution     &lt;br /&gt;Upgrade-SPContentDatabase     &lt;br /&gt;Upgrade-SPEnterpriseSearchServiceApplication     &lt;br /&gt;Upgrade-SPSingleSignOnDatabase &lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh6.ggpht.com/_J6SMSGCmItU/StmHzcRzSNI/AAAAAAAABLk/o4UCf2wMhlg/s1600-h/rip%5B5%5D.jpg"&gt;&lt;img style="border-right-width: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto" title="rip" border="0" alt="rip" src="http://lh6.ggpht.com/_J6SMSGCmItU/StmH0npaleI/AAAAAAAABLo/23D5UevyBEw/rip_thumb%5B3%5D.jpg?imgmax=800" width="146" height="144" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3766174345251248841-5075054944640436102?l=www.ilovesharepoint.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.ilovesharepoint.com/feeds/5075054944640436102/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3766174345251248841&amp;postID=5075054944640436102' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3766174345251248841/posts/default/5075054944640436102'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3766174345251248841/posts/default/5075054944640436102'/><link rel='alternate' type='text/html' href='http://www.ilovesharepoint.com/2009/10/early-look-at-sharepoint-2010.html' title='Early look at SharePoint 2010 &amp;amp; PowerShell'/><author><name>Christian</name><uri>http://www.blogger.com/profile/16986066591633364914</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='22' height='32' src='http://bp1.blogger.com/_J6SMSGCmItU/SGAIxRt-lLI/AAAAAAAAABo/EqgbBGe38FM/S220/DSC_0314_small.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh5.ggpht.com/_J6SMSGCmItU/StmHtPSvZvI/AAAAAAAABLY/TXANZ63oamg/s72-c/image_thumb1.png?imgmax=800' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3766174345251248841.post-897446591155761907</id><published>2009-10-07T21:40:00.001+02:00</published><updated>2009-10-07T21:48:05.766+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Steve Ballmer'/><category scheme='http://www.blogger.com/atom/ns#' term='Azure'/><category scheme='http://www.blogger.com/atom/ns#' term='Microsoft'/><category scheme='http://www.blogger.com/atom/ns#' term='Cloud Computing'/><title type='text'>My Impressions from the Azure World Tour 2009</title><content type='html'>&lt;p&gt;I’m just travelling home from the Azure Worldtour in Munich. I really was the only guy who worn a shirt! But…&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh5.ggpht.com/_J6SMSGCmItU/SszuvehTtrI/AAAAAAAABLM/0sWV62lxEp8/s1600-h/Steve%20Ballmer%20and%20Me%5B3%5D.jpg"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="Steve Ballmer and Me" border="0" alt="Steve Ballmer and Me" src="http://lh4.ggpht.com/_J6SMSGCmItU/Sszux_xQUqI/AAAAAAAABLQ/MidfRTY4ojI/Steve%20Ballmer%20and%20Me_thumb%5B1%5D.jpg?imgmax=800" width="420" height="262" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;…this mustn’t necessarily be something bad. &lt;/p&gt;  &lt;blockquote&gt;   &lt;h3&gt;Seems Steve loves SharePoint too :-)&lt;/h3&gt; &lt;/blockquote&gt;  &lt;p&gt;Back to Azure: I really like the cloud strategy from Microsoft, the .NET Services, .NET Service Bus and SQL Services and all the Azure stuff. &lt;a href="http://www.gartner.com/it/page.jsp?id=920712"&gt;Gartner says the market will grow from $46 billion to $150 billion in 2013&lt;/a&gt;. And one is “azure” Microsoft want to have a big chunk of the cake! And they are on a good way…&lt;/p&gt;  &lt;p&gt;There is one thing frightening me when I think of cloud computing. When in the near future almost anybody would make use of cloud computing and there are only a few data centers around the world, they would obviously be a good target for terrorism. A destroyed data center could seriously harm the global economy. &lt;/p&gt;  &lt;blockquote&gt;   &lt;h3&gt;Will this be Terrorism 2.0?!&amp;#160; &lt;/h3&gt; &lt;/blockquote&gt;  &lt;p&gt;One of the base ideas of the Internet, the ARPANET was to create a distributed network which will survive an nuclear attack (semi-myth). What would be in case of a war, maybe between the USA and Europe? Would Microsoft sill provide their cloud services? Would this really be a risk? Maybe this wouldn’t matter in case of a nuclear war anymore. But luckily we have freedom and are friends (see pic above:), so I stop this “mindmare” here.&lt;/p&gt;  &lt;p&gt;Additionally cloud computing always remembers me at Skynet in Terminator, iRobot and Matrix – great movies :-) &lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3766174345251248841-897446591155761907?l=www.ilovesharepoint.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.ilovesharepoint.com/feeds/897446591155761907/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3766174345251248841&amp;postID=897446591155761907' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3766174345251248841/posts/default/897446591155761907'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3766174345251248841/posts/default/897446591155761907'/><link rel='alternate' type='text/html' href='http://www.ilovesharepoint.com/2009/10/my-impressions-from-azure-world-tour.html' title='My Impressions from the Azure World Tour 2009'/><author><name>Christian</name><uri>http://www.blogger.com/profile/16986066591633364914</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='22' height='32' src='http://bp1.blogger.com/_J6SMSGCmItU/SGAIxRt-lLI/AAAAAAAAABo/EqgbBGe38FM/S220/DSC_0314_small.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh4.ggpht.com/_J6SMSGCmItU/Sszux_xQUqI/AAAAAAAABLQ/MidfRTY4ojI/s72-c/Steve%20Ballmer%20and%20Me_thumb%5B1%5D.jpg?imgmax=800' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3766174345251248841.post-241528212269878270</id><published>2009-10-01T22:24:00.001+02:00</published><updated>2009-10-01T22:27:09.729+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Dynamic'/><category scheme='http://www.blogger.com/atom/ns#' term='SharePoint'/><category scheme='http://www.blogger.com/atom/ns#' term='IronPython'/><category scheme='http://www.blogger.com/atom/ns#' term='DLR'/><title type='text'>Using the SharePoint Object Model with IronPython</title><content type='html'>Same with IronPython, download &lt;a href="http://ironpython.codeplex.com" target="_blank"&gt;IronPython&lt;/a&gt; and go!   &lt;pre class="brush:python"&gt;# import CLR&lt;br /&gt;import clr&lt;br /&gt;&lt;br /&gt;# add a reference to the SharePoint assembly&lt;br /&gt;clr.AddReference(‚Microsoft.SharePoint‘)&lt;br /&gt;&lt;br /&gt;# import all types from the Microsoft.SharePoint namespace&lt;br /&gt;from Microsoft.SharePoint import *&lt;br /&gt;&lt;br /&gt;# instantiate SPSite at http://localhost/mysite&lt;br /&gt;site = SPSite(&amp;quot;http://localhost/mysite&amp;quot;)&lt;br /&gt;&lt;br /&gt;# open the web&lt;br /&gt;web = site.OpenWeb()&lt;br /&gt;&lt;br /&gt;# set the title of the web - just trivial example &lt;br /&gt;web.Title = &amp;quot;Greetings from IronPython&amp;quot;&lt;br /&gt;&lt;br /&gt;# persist changes to content DB&lt;br /&gt;web.Update()&lt;br /&gt;&lt;br /&gt;# clean up&lt;br /&gt;web.Dispose()&lt;br /&gt;site.Dispose()&lt;br /&gt;&lt;br /&gt;# the end&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;a href="http://lh6.ggpht.com/_J6SMSGCmItU/SsUP8ui65bI/AAAAAAAABKg/Vn1rA8TjBxI/s1600-h/01.10%5B3%5D.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="01.10" border="0" alt="01.10" src="http://lh4.ggpht.com/_J6SMSGCmItU/SsUP9OWKgAI/AAAAAAAABKk/SD9KukQyWp8/01.10_thumb%5B1%5D.png?imgmax=800" width="346" height="115" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3766174345251248841-241528212269878270?l=www.ilovesharepoint.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.ilovesharepoint.com/feeds/241528212269878270/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3766174345251248841&amp;postID=241528212269878270' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3766174345251248841/posts/default/241528212269878270'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3766174345251248841/posts/default/241528212269878270'/><link rel='alternate' type='text/html' href='http://www.ilovesharepoint.com/2009/10/using-sharepoint-object-model-with_01.html' title='Using the SharePoint Object Model with IronPython'/><author><name>Christian</name><uri>http://www.blogger.com/profile/16986066591633364914</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='22' height='32' src='http://bp1.blogger.com/_J6SMSGCmItU/SGAIxRt-lLI/AAAAAAAAABo/EqgbBGe38FM/S220/DSC_0314_small.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh4.ggpht.com/_J6SMSGCmItU/SsUP9OWKgAI/AAAAAAAABKk/SD9KukQyWp8/s72-c/01.10_thumb%5B1%5D.png?imgmax=800' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3766174345251248841.post-6868905771219598559</id><published>2009-10-01T21:59:00.001+02:00</published><updated>2009-10-01T22:30:49.779+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Dynamic'/><category scheme='http://www.blogger.com/atom/ns#' term='SharePoint'/><category scheme='http://www.blogger.com/atom/ns#' term='IronRuby'/><category scheme='http://www.blogger.com/atom/ns#' term='DLR'/><title type='text'>Using the SharePoint Object Model with IronRuby</title><content type='html'>Install the latest version from &lt;a href="http://ironruby.codeplex.com" target="_blank"&gt;IronRuby&lt;/a&gt; and let's script!   &lt;pre class="brush:ruby"&gt;# load the SharePoint Assembly&lt;br /&gt;require &amp;quot;Microsoft.SharePoint, Version=12.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c&amp;quot;&lt;br /&gt;&lt;br /&gt;# import SPSite &lt;br /&gt;SPSite = Microsoft::SharePoint::SPSite&lt;br /&gt;&lt;br /&gt;# instantiate the SPSite at http://localhost/anysite &lt;br /&gt;site = SPSite.new(&amp;quot;http://localhost/anysite&amp;quot;)&lt;br /&gt;&lt;br /&gt;# open the corresponding web&lt;br /&gt;web = site.OpenWeb&lt;br /&gt;&lt;br /&gt;#Set the title -&amp;gt; just a trivial Demo!&lt;br /&gt;web.Title = &amp;quot;Greetings from IronRuby&amp;quot;&lt;br /&gt;&lt;br /&gt;# persist the changes to the Content DB&lt;br /&gt;web.Update&lt;br /&gt;&lt;br /&gt;# clean up. Don't forget as I did ;-)&lt;br /&gt;web.Dispose&lt;br /&gt;site.Dispose&lt;br /&gt;&lt;br /&gt;# have a cup of coffee and enjoy to be a developer :-)&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;a href="http://lh6.ggpht.com/_J6SMSGCmItU/SsULgTSbptI/AAAAAAAABKY/Mgt2yd3jGE8/s1600-h/image%5B3%5D.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://lh3.ggpht.com/_J6SMSGCmItU/SsULhTcw1-I/AAAAAAAABKc/bzg28zRsykA/image_thumb%5B1%5D.png?imgmax=800" width="375" height="103" /&gt;&lt;/a&gt; Thanks @ &lt;a href="http://dotnet-forum.de/blogs/thorstenhans/" target="_blank"&gt;Thorsten Hans&lt;/a&gt; for the IronRuby crash course.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3766174345251248841-6868905771219598559?l=www.ilovesharepoint.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.ilovesharepoint.com/feeds/6868905771219598559/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3766174345251248841&amp;postID=6868905771219598559' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3766174345251248841/posts/default/6868905771219598559'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3766174345251248841/posts/default/6868905771219598559'/><link rel='alternate' type='text/html' href='http://www.ilovesharepoint.com/2009/10/using-sharepoint-object-model-with.html' title='Using the SharePoint Object Model with IronRuby'/><author><name>Christian</name><uri>http://www.blogger.com/profile/16986066591633364914</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='22' height='32' src='http://bp1.blogger.com/_J6SMSGCmItU/SGAIxRt-lLI/AAAAAAAAABo/EqgbBGe38FM/S220/DSC_0314_small.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh3.ggpht.com/_J6SMSGCmItU/SsULhTcw1-I/AAAAAAAABKc/bzg28zRsykA/s72-c/image_thumb%5B1%5D.png?imgmax=800' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3766174345251248841.post-407811488287097445</id><published>2009-09-26T21:07:00.005+02:00</published><updated>2009-09-27T13:32:38.535+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SharePoint'/><category scheme='http://www.blogger.com/atom/ns#' term='jQuery'/><title type='text'>jQuery Test Panel for SharePoint</title><content type='html'>&lt;p&gt;I don’t think I’ve to told anybody how cool &lt;a href="http://jquery.com/" target="_blank"&gt;jQuery&lt;/a&gt; is, you know already, nor how to &lt;a href="http://weblogs.asp.net/jan/archive/2008/11/20/sharepoint-2007-and-jquery-1.aspx" target="_blank"&gt;integrate&lt;/a&gt; in SharePoint. Let’s start with a screenshot:&lt;/p&gt;&lt;p&gt;&lt;a href="http://lh3.ggpht.com/_J6SMSGCmItU/Sr5mczgtyjI/AAAAAAAABKQ/GWyDbSHINRs/s1600-h/image%5B3%5D.png"&gt;&lt;img style="BORDER-RIGHT-WIDTH: 0px; DISPLAY: inline; BORDER-TOP-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px" title="image" border="0" alt="image" src="http://lh6.ggpht.com/_J6SMSGCmItU/Sr5mdqPlAaI/AAAAAAAABKU/8MXdSVVVkoI/image_thumb%5B1%5D.png?imgmax=800" width="458" height="285" /&gt;&lt;/a&gt; &lt;/p&gt;&lt;p&gt;The idea is to have a Webpart on your SharePoint site that simply executes jQuery statements. &lt;/p&gt;&lt;blockquote&gt;&lt;h3&gt;Just great to experiment with jQuery and SharePoint or to learn jQuery.  &lt;/h3&gt;&lt;/blockquote&gt;&lt;p&gt;All you need is a standard Content Editor Webpart with the following with the following content (source).&lt;/p&gt;&lt;pre class="brush:html"&gt;&lt;!-- load jQuery Lib --&gt;&lt;br /&gt;&lt;script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3/jquery.min.js"&gt;&lt;/script&gt;&lt;br /&gt;&lt;br /&gt;&lt;script type="text/javascript"&gt;&lt;br /&gt;try{&lt;br /&gt;&lt;br /&gt;$(document).ready(function(){&lt;br /&gt;   $("#execute").click(function(){&lt;br /&gt;       try{&lt;br /&gt;          eval($("#script").val());&lt;br /&gt;       catch(ex){alert(ex.message);}&lt;br /&gt;   });&lt;br /&gt;});&lt;br /&gt;&lt;br /&gt;}catch(ex){&lt;br /&gt; alert(ex);&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;/script&gt;&lt;br /&gt;&lt;br /&gt;&lt;style type="text/css"&gt;&lt;br /&gt;  .wrapped {border: solid 1px red;}&lt;br /&gt;&lt;/style&gt;&lt;br /&gt;&lt;br /&gt;&lt;textarea style="WIDTH: 100%" id="script" rows="5" cols="30" type="text"&gt;&lt;/textarea&gt;&lt;br /&gt;&lt;input id="execute" value="execute" type="button"&gt;&lt;br /&gt;&lt;br /&gt;&lt;div id="test"&gt;&lt;/div&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;Works great with IE Developer Toolbar together.&lt;/p&gt;&lt;h3&gt;Examples:&lt;/h3&gt;&lt;strong&gt;$(“.ms-sitetitle”)&lt;/strong&gt; // &lt;em&gt;selects the site title&lt;/em&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;$(“a[href^=’http://’]”).attr(“target”,”_blank”)&lt;/strong&gt; // open all absolute links in a new window&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;$("*").click(function(event){ &lt;br /&gt;    &amp;nbsp;&amp;nbsp;$(this).hide("slow"); return false;&lt;br /&gt;});&lt;/strong&gt; //just fun ;-)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3766174345251248841-407811488287097445?l=www.ilovesharepoint.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.ilovesharepoint.com/feeds/407811488287097445/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3766174345251248841&amp;postID=407811488287097445' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3766174345251248841/posts/default/407811488287097445'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3766174345251248841/posts/default/407811488287097445'/><link rel='alternate' type='text/html' href='http://www.ilovesharepoint.com/2009/09/jquery-test-panel-for-sharepoint.html' title='jQuery Test Panel for SharePoint'/><author><name>Christian</name><uri>http://www.blogger.com/profile/16986066591633364914</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='22' height='32' src='http://bp1.blogger.com/_J6SMSGCmItU/SGAIxRt-lLI/AAAAAAAAABo/EqgbBGe38FM/S220/DSC_0314_small.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh6.ggpht.com/_J6SMSGCmItU/Sr5mdqPlAaI/AAAAAAAABKU/8MXdSVVVkoI/s72-c/image_thumb%5B1%5D.png?imgmax=800' height='72' width='72'/><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3766174345251248841.post-5896530967077979520</id><published>2009-09-10T14:44:00.001+02:00</published><updated>2009-09-10T14:50:31.770+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SharePoint'/><category scheme='http://www.blogger.com/atom/ns#' term='PowerShell'/><title type='text'>Customize the My Site Portal Link</title><content type='html'>&lt;p&gt;I’m waiting for two buttons from our designer, so I’ve got 10 minutes for trivial post…&lt;/p&gt;  &lt;p&gt;One of our customers has already created hundreds of My Sites, but unfortunately all this sites are missing the portal link to the intranet. Two simple requirements: all new sites should have the portal link automatically and all existing sites should get the portal link too. &lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh3.ggpht.com/_J6SMSGCmItU/Sqj2FFu2LLI/AAAAAAAABKI/BH5TkYnMbrY/s1600-h/image%5B5%5D.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://lh6.ggpht.com/_J6SMSGCmItU/Sqj2Fpt7wcI/AAAAAAAABKM/c2q1nbKo-cA/image_thumb%5B1%5D.png?imgmax=800" width="244" height="93" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;Customizing the portal link of the root My Site site takes care that the portal link will automatically added to new my sites. You have to enter the url to the setting page directly (e.g. &lt;a title="http://vxnintexcg1:8020/_layouts/portal.aspx" href="http://localhost:8020/_layouts/portal.aspx"&gt;http://localhost:8020/_layouts/portal.aspx&lt;/a&gt;), otherwise you get routed to your My Site. &lt;/li&gt;    &lt;li&gt;To migrate all existing My Sites I’ve written a simple PowerShell script – what else ;-) &lt;/li&gt; &lt;/ol&gt;  &lt;pre class="brush: PowerShell; smart-tabs: true; tab-size: 2;"&gt;# Set-SPPortalLink.ps1&lt;br /&gt;# e.g. . .\Set-SPPortalLink &amp;quot;http://localhost:81/&amp;quot; &amp;quot;Intranet&amp;quot; &amp;quot;http://intranet&amp;quot;&lt;br /&gt;&lt;br /&gt;param($webAppUrl, $portalName, $portalUrl)&lt;br /&gt;&lt;br /&gt;[void][System.Reflection.Assembly]::LoadWithPartialName(&amp;quot;Microsoft.SharePoint&amp;quot;)&lt;br /&gt;&lt;br /&gt;$webApp = [Microsoft.SharePoint.Administration.SPWebApplication]::Lookup($webAppUrl)&lt;br /&gt;&lt;br /&gt;foreach($site in $webApp.Sites)&lt;br /&gt;{&lt;br /&gt;	$site.Url | Out-Host&lt;br /&gt;	#impersonate site to system user&lt;br /&gt;	$impSite = new-object Microsoft.SharePoint.SPSite($site.ID, $site.SystemAccount.UserToken)&lt;br /&gt;	$impSite.PortalName = $portalName&lt;br /&gt;	$impsite.PortalUrl = $portalUrl&lt;br /&gt;&lt;br /&gt;	$impSite.Dispose()&lt;br /&gt;	$site.Dispose()&lt;br /&gt;}&lt;/pre&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3766174345251248841-5896530967077979520?l=www.ilovesharepoint.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.ilovesharepoint.com/feeds/5896530967077979520/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3766174345251248841&amp;postID=5896530967077979520' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3766174345251248841/posts/default/5896530967077979520'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3766174345251248841/posts/default/5896530967077979520'/><link rel='alternate' type='text/html' href='http://www.ilovesharepoint.com/2009/09/customize-my-site-portal-link.html' title='Customize the My Site Portal Link'/><author><name>Christian</name><uri>http://www.blogger.com/profile/16986066591633364914</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='22' height='32' src='http://bp1.blogger.com/_J6SMSGCmItU/SGAIxRt-lLI/AAAAAAAAABo/EqgbBGe38FM/S220/DSC_0314_small.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh6.ggpht.com/_J6SMSGCmItU/Sqj2Fpt7wcI/AAAAAAAABKM/c2q1nbKo-cA/s72-c/image_thumb%5B1%5D.png?imgmax=800' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3766174345251248841.post-1228911318812977255</id><published>2009-08-02T19:07:00.002+02:00</published><updated>2011-03-21T11:12:10.669+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='PowerWebPart'/><category scheme='http://www.blogger.com/atom/ns#' term='SharePoint'/><category scheme='http://www.blogger.com/atom/ns#' term='PowerShell'/><title type='text'>WebPart Connections With Power WebPart 3.0</title><content type='html'>&lt;p&gt;Web Part connections in SharePoint allows you to connect different Web Parts and to exchange data between them, even if they are from different suppliers. This is possible through the ASP.NET WebPart Connection Framework and some interfaces. For sure &lt;a href="http://ilovesharepoint.codeplex.com/Release/ProjectReleases.aspx?ReleaseId=18883" target="_blank"&gt;Power WebPart&lt;/a&gt; supports Web Part connections. It can act either as a row and table provider or as a consumer.&lt;/p&gt;&lt;p&gt;&lt;a href="http://lh6.ggpht.com/_J6SMSGCmItU/SnXHtPlc1BI/AAAAAAAABKA/F68Nyvz42QY/s1600-h/image%5B3%5D.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://lh4.ggpht.com/_J6SMSGCmItU/SnXHt7W393I/AAAAAAAABKE/nf6xj32wlmo/image_thumb%5B1%5D.png?imgmax=800" width="455" height="221" /&gt;&lt;/a&gt; &lt;/p&gt;&lt;p&gt;The example shows on the left a Power WebPart using a SPGridView to display current processes and acts as a row provider. It uses a DataTable as data source and sends the selected DataRow to the consumers. Theoretically you can send any object, but PowerShell dynamic types/properties (add-member) behave different and can not be reflected by the Web Part Connection Framework, so I recommend using DataTables and DataRows for WebPart connections ( in PowerShell 2.0 you can alternatively use add-type to generate C# types on the fly). On the right you see two consumers, a Power WebPart and a SharePoint List View WebPart. Both consume the DataRow from the provider on the left. The Power WebPart consumer simply shows the first column and the SharePoint List View uses the “Name” column of the provided row to filter the list items.&lt;/p&gt;&lt;blockquote&gt;&lt;h3&gt;A script says more than thousand words.&lt;/h3&gt;&lt;/blockquote&gt;&lt;p&gt;&lt;strong&gt;The row provider web part:&lt;/strong&gt;&lt;/p&gt;&lt;pre class="brush: powershell; smart-tabs: true; tab-size: 2;"&gt;# SPGridView to display the result &lt;br /&gt;$gridView = New-Object Microsoft.SharePoint.WebControls.SPGridView&lt;br /&gt;&lt;br /&gt;# DataTable is used as data container&lt;br /&gt;$table = New-Object System.Data.DataTable(&amp;quot;Container&amp;quot;)&lt;br /&gt;&lt;br /&gt;function CreateChildControls($controls)&lt;br /&gt;{ &lt;br /&gt;# add columns to the table&lt;br /&gt;$table.Columns.Add($(New-Object System.Data.DataColumn(&amp;quot;ID&amp;quot;,[Int32])))&lt;br /&gt;$table.Columns.Add($(New-Object System.Data.DataColumn(&amp;quot;Name&amp;quot;,[String])))&lt;br /&gt;$table.Columns.Add($(New-Object System.Data.DataColumn(&amp;quot;CPU&amp;quot;,[double])))&lt;br /&gt;&lt;br /&gt;# fill the table with processes&lt;br /&gt;foreach($p in $(get-process))&lt;br /&gt;{&lt;br /&gt;$row = $table.NewRow()&lt;br /&gt;$row.ID = $p.ID&lt;br /&gt;$row.Name = $p.Name&lt;br /&gt;$row.CPU = [double]$p.CPU&lt;br /&gt;&lt;br /&gt;$table.Rows.Add($row)&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;# add columns to the SPGridView&lt;br /&gt;$colSelectButton = New-Object System.Web.UI.WebControls.CommandField&lt;br /&gt;$colSelectButton.HeaderText = &amp;quot;Action&amp;quot;&lt;br /&gt;$colSelectButton.SelectText = &amp;quot;select&amp;quot;&lt;br /&gt;$colSelectButton.ShowSelectButton = $true&lt;br /&gt;$gridView.Columns.Add($colSelectButton)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;$colId = New-Object Microsoft.SharePoint.WebControls.SPBoundField&lt;br /&gt;$colId.HeaderText = &amp;quot;ID&amp;quot;&lt;br /&gt;$colId.DataField = &amp;quot;ID&amp;quot;&lt;br /&gt;$gridView.Columns.Add($colId)&lt;br /&gt;&lt;br /&gt;$colName = New-Object Microsoft.SharePoint.WebControls.SPBoundField&lt;br /&gt;$colName.HeaderText = &amp;quot;Name&amp;quot;&lt;br /&gt;$colName.DataField = &amp;quot;Name&amp;quot;&lt;br /&gt;$gridView.Columns.Add($colName)&lt;br /&gt;&lt;br /&gt;$colCPU = New-Object Microsoft.SharePoint.WebControls.SPBoundField&lt;br /&gt;$colCPU.HeaderText = &amp;quot;CPU&amp;quot;&lt;br /&gt;$colCPU.DataField = &amp;quot;CPU&amp;quot;&lt;br /&gt;$gridView.Columns.Add($colCPU);&lt;br /&gt;&lt;br /&gt;# configure SPGridView&lt;br /&gt;$gridView.AutoGenerateColumns=$false&lt;br /&gt;$gridView.DataSource = $table&lt;br /&gt;$gridView.DataBind()&lt;br /&gt;&lt;br /&gt;$controls.Add($gridView)&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;# returns the schema to the WP Connection Framework&lt;br /&gt;function GetSchema&lt;br /&gt;{  &lt;br /&gt;# return an empty row (or type, used for reflection)&lt;br /&gt;return $table.NewRow()&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;# sends the selected row to the WP Connection Framework&lt;br /&gt;function SendRow&lt;br /&gt;{ &lt;br /&gt;if($gridView.SelectedIndex -gt -1) &lt;br /&gt;{&lt;br /&gt;return $table.Rows[$gridView.SelectedIndex]&lt;br /&gt;}&lt;br /&gt;else&lt;br /&gt;{&lt;br /&gt;# return $null when nothing is selected&lt;br /&gt;return $null&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;p&gt;&lt;strong&gt;The row consumer web part:&lt;/strong&gt;&lt;/p&gt;&lt;pre class="brush: powershell; smart-tabs: true; tab-size: 2;"&gt;$label = New-Object System.Web.UI.WebControls.Label&lt;br /&gt;&lt;br /&gt;function OnReceiveRow($row, $schema)&lt;br /&gt;{&lt;br /&gt;if ($row -ne $null){$label.Text= $row[0]}&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;function OnPreRender&lt;br /&gt;{ &lt;br /&gt;# request the row from the web part connection&lt;br /&gt;# will fire &amp;quot;OnReceiveRow&amp;quot; &lt;br /&gt;Query-Connections &lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;function Render($writer)&lt;br /&gt;{&lt;br /&gt;$writer.Write(&amp;quot;&lt;h1&gt;&amp;quot;)&lt;br /&gt;$label.RenderControl($writer)&lt;br /&gt;$writer.Write(&amp;quot;&lt;/h1&gt;&amp;quot;)&lt;br /&gt;}&lt;/pre&gt;&lt;br /&gt;&lt;p&gt;WebPart Connections work with &lt;a href="http://ilovesharepoint.codeplex.com/Release/ProjectReleases.aspx?ReleaseId=18883" target="_blank"&gt;Power WebPart 3.0&lt;/a&gt; build 0908020651 or greater. &lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3766174345251248841-1228911318812977255?l=www.ilovesharepoint.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.ilovesharepoint.com/feeds/1228911318812977255/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3766174345251248841&amp;postID=1228911318812977255' title='6 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3766174345251248841/posts/default/1228911318812977255'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3766174345251248841/posts/default/1228911318812977255'/><link rel='alternate' type='text/html' href='http://www.ilovesharepoint.com/2009/08/webpart-connections-with-power-webpart.html' title='WebPart Connections With Power WebPart 3.0'/><author><name>Christian</name><uri>http://www.blogger.com/profile/16986066591633364914</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='22' height='32' src='http://bp1.blogger.com/_J6SMSGCmItU/SGAIxRt-lLI/AAAAAAAAABo/EqgbBGe38FM/S220/DSC_0314_small.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh4.ggpht.com/_J6SMSGCmItU/SnXHt7W393I/AAAAAAAABKE/nf6xj32wlmo/s72-c/image_thumb%5B1%5D.png?imgmax=800' height='72' width='72'/><thr:total>6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3766174345251248841.post-8256733350324383164</id><published>2009-06-11T23:51:00.001+02:00</published><updated>2011-03-21T11:34:25.479+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='PowerWebPart'/><category scheme='http://www.blogger.com/atom/ns#' term='SharePoint'/><category scheme='http://www.blogger.com/atom/ns#' term='PowerShell'/><title type='text'>Charts with Power WebPart ( Management-Eye-Catchers )</title><content type='html'>&lt;p&gt;In this post I’ll give you some ideas how you can script charts in SharePoint with &lt;a href="http://ilovesharepoint.codeplex.com/Release/ProjectReleases.aspx?ReleaseId=18883" target="_blank"&gt;Power WebPart&lt;/a&gt; featuring &lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=130f7986-bf49-4fe5-9ca8-910ae6ea442c&amp;amp;DisplayLang=en" target="_blank"&gt;Microsoft Chart Controls&lt;/a&gt;. &lt;/p&gt; &lt;blockquote&gt;   &lt;h3&gt;Visualizing a SharePoint list as a pie &lt;/h3&gt; &lt;/blockquote&gt; &lt;p&gt;&lt;a href="http://lh5.ggpht.com/_J6SMSGCmItU/SjF8U8bAsiI/AAAAAAAAA9I/c53TFKd-eE0/s1600-h/image%5B15%5D.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://lh6.ggpht.com/_J6SMSGCmItU/SjF8VTCzXaI/AAAAAAAAA9M/0atEzYP3S38/image_thumb%5B11%5D.png?imgmax=800" width="418" height="198" /&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;&lt;a href="http://lh3.ggpht.com/_J6SMSGCmItU/SjF8V02qvuI/AAAAAAAAA9Q/B8dxRXKvEkM/s1600-h/image%5B21%5D.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://lh6.ggpht.com/_J6SMSGCmItU/SjF8WNpM_-I/AAAAAAAAA9U/hn8aPSCCCXU/image_thumb%5B15%5D.png?imgmax=800" width="416" height="240" /&gt;&lt;/a&gt; &lt;/p&gt; &lt;blockquote&gt;   &lt;h3&gt;Setup and Configuration:&lt;/h3&gt; &lt;/blockquote&gt; &lt;ol&gt;   &lt;li&gt;1. Download and install &lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=130f7986-bf49-4fe5-9ca8-910ae6ea442c&amp;amp;DisplayLang=en" target="_blank"&gt;Microsoft Chart Controls&lt;/a&gt; (ensure that System.Web.DataVisualization.dll is either in the GAC or in the web app’s bin folder) &lt;/li&gt;   &lt;li&gt;2. Download and install &lt;a href="http://ilovesharepoint.codeplex.com/Release/ProjectReleases.aspx?ReleaseId=18883" target="_blank"&gt;Power WebPart&lt;/a&gt; (follow the instructions in the &lt;strong&gt;readme.txt&lt;/strong&gt;) &lt;/li&gt;   &lt;li&gt;3. To use the Chart Controls in ASP.NET or SharePoint you have to modify the web.config: &lt;/li&gt; &lt;/ol&gt; &lt;p&gt;Add this line to &lt;strong&gt;appSettings&lt;/strong&gt; section:&lt;/p&gt; &lt;p&gt;&lt;strong&gt;&amp;lt;add key=&amp;quot;ChartImageHandler&amp;quot; value=&amp;quot;Storage=session;Timeout=20;&amp;quot; /&amp;gt;&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;&lt;span style="color: blue"&gt;&lt;font color="#333333"&gt;Add this line to the &lt;strong&gt;httpHandlers&lt;/strong&gt; section:&lt;/font&gt;&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;strong&gt;&amp;lt;add path=&amp;quot;ChartImg.axd&amp;quot; verb=&amp;quot;GET,HEAD&amp;quot; type=&amp;quot;System.Web.UI.DataVisualization.Charting.ChartHttpHandler, System.Web.DataVisualization, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35&amp;quot; validate=&amp;quot;false&amp;quot; /&amp;gt;&lt;/strong&gt;&lt;/p&gt; &lt;blockquote&gt;   &lt;h3&gt;&lt;font face="Verda"&gt;The Script&lt;/font&gt;&lt;/h3&gt; &lt;/blockquote&gt; &lt;pre class="brush: powershell; smart-tabs: true; tab-size: 2;"&gt;[void][System.Reflection.Assembly]::LoadWithPartialName(&amp;quot;System.Web.DataVisualization&amp;quot;)&lt;br /&gt;&lt;br /&gt;$chart = New-Object System.Web.UI.DataVisualization.Charting.Chart&lt;br /&gt;$series = new-object System.Web.UI.DataVisualization.Charting.Series&lt;br /&gt;$chartArea = New-Object System.Web.UI.DataVisualization.Charting.ChartArea&lt;br /&gt;$legend = New-Object System.Web.UI.DataVisualization.Charting.Legend&lt;br /&gt;&lt;br /&gt;function createchildcontrols($controls) &lt;br /&gt;{	&lt;br /&gt;	$data = $web.Lists[&amp;quot;Chart&amp;quot;].Items.GetDataTable() &lt;br /&gt;	&lt;br /&gt;	$chart.DataSource = $data&lt;br /&gt;	$chart.Width=500&lt;br /&gt;&lt;br /&gt;	$series.ChartType = [System.Web.UI.DataVisualization.Charting.SeriesChartType]::Pie&lt;br /&gt;	$series.XValueMember =&amp;quot;Title&amp;quot;&lt;br /&gt;	$series.YValueMembers =&amp;quot;Value&amp;quot;&lt;br /&gt;	$series.ShadowOffset = 2&lt;br /&gt;	$series.IsValueShownAsLabel = $true&lt;br /&gt;	&lt;br /&gt;	$chart.Series.Add($series)&lt;br /&gt;	&lt;br /&gt;	$chartArea.Area3DStyle.Enable3D = $true&lt;br /&gt;	$chart.ChartAreas.Add($chartArea)&lt;br /&gt;	&lt;br /&gt;	$chart.Legends.Add($legend)&lt;br /&gt;&lt;br /&gt;	$controls.Add($chart)&lt;br /&gt;	&lt;br /&gt;	$chart.DataBind()&lt;br /&gt;	&lt;br /&gt;	$series.Points.FindMaxByValue()[&amp;quot;Exploded&amp;quot;] = $true&lt;br /&gt;}&lt;/pre&gt;&lt;br /&gt;&lt;p&gt;&lt;font face="Verdana"&gt;This just one example! The Chart Control is really mighty! Download the &lt;/font&gt;&lt;a href="http://code.msdn.microsoft.com/mschart/Release/ProjectReleases.aspx?ReleaseId=1591" target="_blank"&gt;&lt;font face="Verdana"&gt;chart control examples&lt;/font&gt;&lt;/a&gt;&lt;font face="Verdana"&gt; from Microsoft to get an impression:&lt;/font&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;a href="http://lh4.ggpht.com/_J6SMSGCmItU/SjF-mHXiGGI/AAAAAAAAA9g/K1QBr-H7nZA/s1600-h/ChartImgCACU0PM6%5B6%5D.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="ChartImgCACU0PM6" border="0" alt="ChartImgCACU0PM6" src="http://lh4.ggpht.com/_J6SMSGCmItU/SjF-miHkdlI/AAAAAAAAA9k/s4FV33x5nRI/ChartImgCACU0PM6_thumb%5B4%5D.png?imgmax=800" width="448" height="321" /&gt;&lt;/a&gt; &lt;a href="http://lh5.ggpht.com/_J6SMSGCmItU/SjF-nzuQRRI/AAAAAAAAA9o/K6CpraibsFQ/s1600-h/ChartImgCAEO5EDD%5B4%5D.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="ChartImgCAEO5EDD" border="0" alt="ChartImgCAEO5EDD" src="http://lh6.ggpht.com/_J6SMSGCmItU/SjF-o26tn_I/AAAAAAAAA9s/wpgLQ_K4eOA/ChartImgCAEO5EDD_thumb%5B2%5D.png?imgmax=800" width="448" height="321" /&gt;&lt;/a&gt; &lt;a href="http://lh4.ggpht.com/_J6SMSGCmItU/SjF8WxTX54I/AAAAAAAAA9Y/fBNjPJy4ZoM/s1600-h/Bollinger2%5B5%5D.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="Bollinger2" border="0" alt="Bollinger2" src="http://lh3.ggpht.com/_J6SMSGCmItU/SjF8XoQLQcI/AAAAAAAAA9c/UxIu7t_DnYo/Bollinger2_thumb%5B3%5D.png?imgmax=800" width="448" height="331" /&gt;&lt;/a&gt; &lt;font face="Verdana"&gt;&lt;/font&gt;&lt;/p&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;  &lt;h3&gt;&lt;font face="Verdana"&gt;The limitation is your imagination!&lt;/font&gt;&lt;/h3&gt;&lt;/blockquote&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3766174345251248841-8256733350324383164?l=www.ilovesharepoint.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.ilovesharepoint.com/feeds/8256733350324383164/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3766174345251248841&amp;postID=8256733350324383164' title='8 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3766174345251248841/posts/default/8256733350324383164'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3766174345251248841/posts/default/8256733350324383164'/><link rel='alternate' type='text/html' href='http://www.ilovesharepoint.com/2009/06/charts-with-power-webpart-management.html' title='Charts with Power WebPart ( Management-Eye-Catchers )'/><author><name>Christian</name><uri>http://www.blogger.com/profile/16986066591633364914</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='22' height='32' src='http://bp1.blogger.com/_J6SMSGCmItU/SGAIxRt-lLI/AAAAAAAAABo/EqgbBGe38FM/S220/DSC_0314_small.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh6.ggpht.com/_J6SMSGCmItU/SjF8VTCzXaI/AAAAAAAAA9M/0atEzYP3S38/s72-c/image_thumb%5B11%5D.png?imgmax=800' height='72' width='72'/><thr:total>8</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3766174345251248841.post-8676188737964632187</id><published>2009-06-10T22:03:00.004+02:00</published><updated>2009-06-10T22:21:26.179+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SPoshMod'/><category scheme='http://www.blogger.com/atom/ns#' term='SharePoint'/><category scheme='http://www.blogger.com/atom/ns#' term='PowerShell'/><title type='text'>SPoshMod v1.0 Released!</title><content type='html'>I'm glad to annouce that &lt;a href="http://sposhmod.codeplex.com/"&gt;SPoshMod V1.0&lt;/a&gt; has been released today. SPoshMod is a PowerShell 2.0 Module for SharePoint wrapping the most common SharePoint object model calls (e.g. Get-SPWeb, Get-SPSite...).&lt;br /&gt;&lt;br /&gt;SPoshMod is a joint project from &lt;a href="http://blogs.msdn.com/ekraus/"&gt;Eric Kraus &lt;/a&gt;(founder) and me. If you have written a helpful script or function and think it would be useful in the module, please send them to &lt;a href="mailto:sposhmod@live.com"&gt;sposhmod@live.com&lt;/a&gt; we will give credit to you in the module.&lt;br /&gt;&lt;br /&gt;More coming soon...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3766174345251248841-8676188737964632187?l=www.ilovesharepoint.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.ilovesharepoint.com/feeds/8676188737964632187/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3766174345251248841&amp;postID=8676188737964632187' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3766174345251248841/posts/default/8676188737964632187'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3766174345251248841/posts/default/8676188737964632187'/><link rel='alternate' type='text/html' href='http://www.ilovesharepoint.com/2009/06/sposhmod-v10-released.html' title='SPoshMod v1.0 Released!'/><author><name>Christian</name><uri>http://www.blogger.com/profile/16986066591633364914</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='22' height='32' src='http://bp1.blogger.com/_J6SMSGCmItU/SGAIxRt-lLI/AAAAAAAAABo/EqgbBGe38FM/S220/DSC_0314_small.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3766174345251248841.post-4417211033451098129</id><published>2009-06-08T21:31:00.002+02:00</published><updated>2011-03-21T11:37:34.608+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='PowerWebPart'/><category scheme='http://www.blogger.com/atom/ns#' term='SharePoint'/><category scheme='http://www.blogger.com/atom/ns#' term='PowerShell'/><title type='text'>Using SharePoint Controls with Power WebPart</title><content type='html'>SharePoint comes with a bunch of custom ASP.NET Controls. For sure you can use them with &lt;a href="http://ilovesharepoint.codeplex.com/Release/ProjectReleases.aspx?ReleaseId=18883" target="_blank"&gt;Power WebPart&lt;/a&gt;. &lt;br /&gt;This example shows how you can search for list items by title containing a specified search string and display the result in a SharePoint list view, featuring the SharePoint &lt;a href="http://msdn.microsoft.com/en-us/library/microsoft.sharepoint.webcontrols.listviewbyquery.aspx" target="_blank"&gt;ListViewByQuery&lt;/a&gt; control. &lt;br /&gt;&lt;a href="http://lh3.ggpht.com/_J6SMSGCmItU/Si1nE-W69BI/AAAAAAAAA9A/I2oPIOpLyxs/s1600-h/image%5B4%5D.png"&gt;&lt;img alt="image" border="0" height="331" src="http://lh4.ggpht.com/_J6SMSGCmItU/Si1nFMeW8oI/AAAAAAAAA9E/QQtczim_9jI/image_thumb%5B2%5D.png?imgmax=800" style="border-width: 0px; display: inline;" title="image" width="423" /&gt;&lt;/a&gt; &lt;br /&gt;&lt;blockquote&gt;&lt;h3&gt;The Script&lt;/h3&gt;&lt;/blockquote&gt;&lt;pre class="brush: powershell; smart-tabs: true; tab-size: 2;"&gt;$textBox = New-Object System.Web.UI.WebControls.TextBox;&lt;br /&gt;$button = New-Object System.Web.UI.WebControls.Button;&lt;br /&gt;$button.Text = "Search"&lt;br /&gt;$listView = New-Object Microsoft.SharePoint.WebControls.ListViewByQuery;&lt;br /&gt;$br = New-Object System.Web.UI.WebControls.WebControl([System.Web.UI.HtmlTextWriterTag]::Br)&lt;br /&gt;&lt;br /&gt;function createchildcontrols($controls)&lt;br /&gt;{&lt;br /&gt;$controls.Add($textBox)&lt;br /&gt;$controls.Add($button)&lt;br /&gt;$controls.Add($br)&lt;br /&gt;$controls.Add($listView)&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;function onprerender()&lt;br /&gt;{&lt;br /&gt;# Parameter 1 can be configured in the webpart editor&lt;br /&gt;$listTitle = $webpart.Parameter1&lt;br /&gt;&lt;br /&gt;$list = $web.Lists[$listTitle]&lt;br /&gt;$listView.List = $list;&lt;br /&gt;$query = New-Object Microsoft.SharePoint.SPQuery -ArgumentList $list.DefaultView;&lt;br /&gt;&lt;br /&gt;$query.Query = "&lt;br /&gt;&lt;where&gt;                                 &lt;br /&gt;&lt;contains&gt;&lt;br /&gt;&lt;fieldref name="Title"&gt;&lt;br /&gt;&lt;value type="Text"&gt;$($textBox.Text)&lt;/value&gt;&lt;br /&gt;&lt;/fieldref&gt;&lt;/contains&gt;&lt;br /&gt;&lt;/where&gt;"&lt;br /&gt;&lt;br /&gt;$listView.Query = $query&lt;br /&gt;$listView.DisableFilter = $true&lt;br /&gt;$listView.DisableSort = $true &lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;function onerror($writer)&lt;br /&gt;{&lt;br /&gt;$writer.Write("List title is not configured or the list does not exist.")&lt;br /&gt;}&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3766174345251248841-4417211033451098129?l=www.ilovesharepoint.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.ilovesharepoint.com/feeds/4417211033451098129/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3766174345251248841&amp;postID=4417211033451098129' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3766174345251248841/posts/default/4417211033451098129'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3766174345251248841/posts/default/4417211033451098129'/><link rel='alternate' type='text/html' href='http://www.ilovesharepoint.com/2009/06/using-sharepoint-controls-with-power.html' title='Using SharePoint Controls with Power WebPart'/><author><name>Christian</name><uri>http://www.blogger.com/profile/16986066591633364914</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='22' height='32' src='http://bp1.blogger.com/_J6SMSGCmItU/SGAIxRt-lLI/AAAAAAAAABo/EqgbBGe38FM/S220/DSC_0314_small.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh4.ggpht.com/_J6SMSGCmItU/Si1nFMeW8oI/AAAAAAAAA9E/QQtczim_9jI/s72-c/image_thumb%5B2%5D.png?imgmax=800' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3766174345251248841.post-503497772816738510</id><published>2009-05-31T13:35:00.002+02:00</published><updated>2009-06-02T22:42:50.671+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SharePoint'/><category scheme='http://www.blogger.com/atom/ns#' term='IronPython'/><title type='text'>IronPython In Action</title><content type='html'>&lt;p&gt;For about six years I felt in love with .NET and SharePoint. In the last year I’ve also learned to love PowerShell. I was really impressed of the dynamic and power you can gain with a scripting language in combination with the .NET Framework. So I’ve started to combine SharePoint and PowerShell through embedding PowerShell and developed SharePoint &lt;a href="http://www.codeplex.com/iLoveSharePoint/Release/ProjectReleases.aspx?ReleaseId=14947" target="_blank"&gt;PowerActivity&lt;/a&gt;, &lt;a href="http://www.codeplex.com/iLoveSharePoint/Release/ProjectReleases.aspx?ReleaseId=19314" target="_blank"&gt;Power EventReceiver&lt;/a&gt; and &lt;a href="http://www.codeplex.com/iLoveSharePoint/Release/ProjectReleases.aspx?ReleaseId=18883" target="_blank"&gt;Power WebPart&lt;/a&gt;. It was really amazing to see how fast you can develop small SharePoint apps with this stuff. But as a C# developer you sometime miss the object orientation in PowerShell. On the BASTA! Spring I first meet &lt;a title="Michael Foord" href="http://www.voidspace.org.uk/python/weblog/index.shtml"&gt;Michael J Foord&lt;/a&gt; after his talk about the DLR and embedding &lt;a href="http://www.codeplex.com/IronPython" target="_blank"&gt;IronPython&lt;/a&gt;. The talk was similar to my talk about embedding PowerShell. Embedding IronPython seemed to be almost as simple as embedding PowerShell, but with a dynamic and object oriented language. I was really excited - for sure I’ve to learn IronPython. Unfortunately resources about IronPython are very limited. Luckily Michael and Christian Muirhead has just written &lt;a href="http://www.ironpythoninaction.com/" target="_blank"&gt;IronPython In Action&lt;/a&gt;. &lt;/p&gt;&lt;p&gt;&lt;a href="http://www.ironpythoninaction.com/" target="_blank"&gt;IronPython In Action&lt;/a&gt; covers all you need to getting started with IronPython for an .NET or Python developer. It is written coherent without needless ballast, well suited to the philosophy of the language itself. My favorite chapters are “Sliverlight: IronPython in the browser”, “Agile testing where dynamic typing shines” and “Embedding the IronPython engine”. The book has inspired me to found the CodePlex project &lt;a href="http://ironsharepoint.codeplex.com/" target="_blank"&gt;IronSharePoint&lt;/a&gt; (coming soon) showing how you can develop SharePoint apps with IronPython. I’m convinced that in the near future dynamic languages will get more attention again, just think at the “dynamic” keyword in C# 4.0. Absolutely worth to keep an eye on it!&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.ironpythoninaction.com/" target="_blank"&gt;&lt;img style="DISPLAY: block; FLOAT: none; MARGIN-LEFT: auto; MARGIN-RIGHT: auto" src="http://www.ironpythoninaction.com/images/ironpythoninaction.jpg" /&gt;&lt;/a&gt; &lt;/p&gt;&lt;blockquote&gt;&lt;h3&gt;The power of combining statically and dynamically typed languages are really incredible!&lt;/h3&gt;&lt;/blockquote&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3766174345251248841-503497772816738510?l=www.ilovesharepoint.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.ilovesharepoint.com/feeds/503497772816738510/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3766174345251248841&amp;postID=503497772816738510' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3766174345251248841/posts/default/503497772816738510'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3766174345251248841/posts/default/503497772816738510'/><link rel='alternate' type='text/html' href='http://www.ilovesharepoint.com/2009/05/ironpython-in-action.html' title='IronPython In Action'/><author><name>Christian</name><uri>http://www.blogger.com/profile/16986066591633364914</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='22' height='32' src='http://bp1.blogger.com/_J6SMSGCmItU/SGAIxRt-lLI/AAAAAAAAABo/EqgbBGe38FM/S220/DSC_0314_small.jpg'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3766174345251248841.post-7703439173553864592</id><published>2009-05-10T13:08:00.004+02:00</published><updated>2011-03-21T11:43:35.209+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='PowerWebPart'/><category scheme='http://www.blogger.com/atom/ns#' term='SharePoint'/><category scheme='http://www.blogger.com/atom/ns#' term='PowerShell'/><title type='text'>Power WebPart 3.0 – Runas-System</title><content type='html'>In general code in SharePoint runs with the privileges of the current user, but sometimes you need to run code with elevated privileges. The SharePoint object model covers this scenario with the &lt;a href="http://msdn.microsoft.com/en-us/library/microsoft.sharepoint.spsecurity.runwithelevatedprivileges.aspx" target="_blank"&gt;SPSecurity.RunWithElevatedPrivileges&lt;/a&gt;. In &lt;a href="http://ilovesharepoint.codeplex.com/Release/ProjectReleases.aspx?ReleaseId=18883" target="_blank"&gt;Power WebPart&lt;/a&gt; you can use the “Runas-System” function to run script with elevated privileges. Usage: Runas-System –script&lt;br /&gt;&lt;blockquote&gt;Example 1: Output Current Identity&lt;/blockquote&gt;&lt;pre class="brush: powershell; smart-tabs: true; tab-size: 2;"&gt;function render($writer)&lt;br /&gt;{&lt;br /&gt;   $identiy1 = [System.Security.Principal.WindowsIdentity]::GetCurrent().Name&lt;br /&gt;   $identiy2 = Runas-System "[System.Security.Principal.WindowsIdentity]::GetCurrent().Name"&lt;br /&gt;&lt;br /&gt;   $writer.Write($identiy1)&lt;br /&gt;   $writer.Write($identiy2)&lt;br /&gt;}&lt;/pre&gt;&lt;blockquote&gt;Example 2: Call a Function with Parameters&lt;/blockquote&gt;&lt;pre class="brush: powershell; smart-tabs: true; tab-size: 2;"&gt;function Render-Identity($writer)&lt;br /&gt;{&lt;br /&gt;    $identity = [System.Security.Principal.WindowsIdentity]::GetCurrent().Name&lt;br /&gt;    $writer.Write($identity)&lt;br /&gt;}  &lt;br /&gt;function render($writer)&lt;br /&gt;{&lt;br /&gt;   Render-Identity $writer&lt;br /&gt;   Runas-System "Render-Identity `$writer"&lt;br /&gt;}&lt;/pre&gt;&lt;blockquote&gt;Example 3: Call a Function with Return Value &lt;/blockquote&gt;&lt;pre class="brush: powershell; smart-tabs: true; tab-size: 2;"&gt;function Get-Identity&lt;br /&gt;{&lt;br /&gt;    return [System.Security.Principal.WindowsIdentity]::GetCurrent().Name &lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;function render($writer)&lt;br /&gt;{&lt;br /&gt;   $identity1 = Get-Identity&lt;br /&gt;   $identity2 = Runas-System "Get-Identity"&lt;br /&gt;&lt;br /&gt;   $writer.Write($identity1)&lt;br /&gt;   $writer.Write($identity2)&lt;br /&gt;}&lt;/pre&gt;&lt;blockquote&gt;Example 4: Impersonate SPWeb&lt;/blockquote&gt;&lt;pre class="brush: powershell; smart-tabs: true; tab-size: 2;"&gt;function render($writer)&lt;br /&gt;{&lt;br /&gt;   $writer.Write($web.CurrentUser.LoginName)&lt;br /&gt;&lt;br /&gt;    $impersonatedWeb = Runas-System "Get-SPWeb $($web.Url)"&lt;br /&gt;    $writer.Write($impersonatedWeb.CurrentUser.LoginName)&lt;br /&gt;    $impersonatedWeb.Dispose()&lt;br /&gt;}&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3766174345251248841-7703439173553864592?l=www.ilovesharepoint.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.ilovesharepoint.com/feeds/7703439173553864592/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3766174345251248841&amp;postID=7703439173553864592' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3766174345251248841/posts/default/7703439173553864592'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3766174345251248841/posts/default/7703439173553864592'/><link rel='alternate' type='text/html' href='http://www.ilovesharepoint.com/2009/05/power-webpart-30-runas-system.html' title='Power WebPart 3.0 – Runas-System'/><author><name>Christian</name><uri>http://www.blogger.com/profile/16986066591633364914</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='22' height='32' src='http://bp1.blogger.com/_J6SMSGCmItU/SGAIxRt-lLI/AAAAAAAAABo/EqgbBGe38FM/S220/DSC_0314_small.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3766174345251248841.post-1432503612744067754</id><published>2009-05-02T22:40:00.003+02:00</published><updated>2011-03-21T11:31:14.330+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='PowerWebPart'/><category scheme='http://www.blogger.com/atom/ns#' term='SharePoint'/><category scheme='http://www.blogger.com/atom/ns#' term='PowerShell'/><title type='text'>Power Tag Cloud - SharePoint Tag Cloud written in PowerShell</title><content type='html'>&lt;p&gt;I'm a tag cloud fan but unfortunately there isn’t any in SharePoint 2007 out of the box. So let’s write a reusable tag cloud as an example for &lt;a href="http://ilovesharepoint.codeplex.com/Release/ProjectReleases.aspx?ReleaseId=18883" target="_blank"&gt;PowerWebPart&lt;/a&gt;. The Power Tag Cloud consists of two web parts, the tag cloud itself and the tag browser.&lt;/p&gt;  &lt;p&gt;Tag an item. You can either use a text field with a semicolon as separator or any lookup field. Maybe I show in following post how you can pimp the tag field with a jQuery AJAX auto completion script and PowerWebPart.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh4.ggpht.com/_J6SMSGCmItU/SfyvxDrvoKI/AAAAAAAAA8g/IJCuJ8JzREE/s1600-h/image%5B16%5D.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://lh6.ggpht.com/_J6SMSGCmItU/Sfyvxt37f4I/AAAAAAAAA8k/jExXKv-nn_0/image_thumb%5B8%5D.png?imgmax=800" width="404" height="29" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Configure how your cloud should looks like and behaves. The editor panel is written in PowerShell too!&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh5.ggpht.com/_J6SMSGCmItU/Sfyvx_HdxHI/AAAAAAAAA8o/OrvX8iJXUpQ/s1600-h/image%5B21%5D.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://lh4.ggpht.com/_J6SMSGCmItU/SfyvycEaPqI/AAAAAAAAA8s/hL3XCkR9JDw/image_thumb%5B11%5D.png?imgmax=800" width="234" height="398" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;The tag cloud&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh5.ggpht.com/_J6SMSGCmItU/Sfyvy4XtjdI/AAAAAAAAA8w/3kCawJedZaA/s1600-h/image%5B2%5D.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://lh3.ggpht.com/_J6SMSGCmItU/SfyvzJnWhVI/AAAAAAAAA80/fxNsCYX3i5E/image_thumb.png?imgmax=800" width="231" height="143" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;When you click on a tag the tag browser shows all items tagged with this tag within the chosen scope. &lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh3.ggpht.com/_J6SMSGCmItU/SfyvzmsgXLI/AAAAAAAAA84/hoIeNTnxnUc/s1600-h/image%5B7%5D.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://lh5.ggpht.com/_J6SMSGCmItU/Sfyvz7g9X3I/AAAAAAAAA88/BvvlIOnM7RQ/image_thumb%5B3%5D.png?imgmax=800" width="392" height="380" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;blockquote&gt;   &lt;h3&gt;All this stuff is written in PowerShell!&lt;/h3&gt; &lt;/blockquote&gt;  &lt;p&gt;To get a feeling how PowerWebPart scripts look like:&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Power Tag Cloud Script&lt;/strong&gt; &lt;/p&gt;  &lt;pre class="brush: powershell; smart-tabs: true; tab-size: 2;"&gt;#init parameters&lt;br /&gt;$scope = Init-Parameter &amp;quot;Parameter1&amp;quot; [String]::Empty&lt;br /&gt;$tagField = Init-Parameter &amp;quot;Parameter2&amp;quot; &amp;quot;Tags&amp;quot; -defaultOnEmpty&lt;br /&gt;$maxFontSize = Init-Parameter &amp;quot;Parameter3&amp;quot; &amp;quot;40&amp;quot; -defaultOnEmpty&lt;br /&gt;$minFontSize = Init-Parameter &amp;quot;Parameter4&amp;quot; &amp;quot;6&amp;quot; -defaultOnEmpty&lt;br /&gt;$color1 = Init-Parameter &amp;quot;Parameter5&amp;quot; &amp;quot;#003399&amp;quot; -defaultOnEmpty&lt;br /&gt;$color2 = Init-Parameter &amp;quot;Parameter6&amp;quot; &amp;quot;#CCCCCC&amp;quot; -defaultOnEmpty &lt;br /&gt;$listType = Init-Parameter &amp;quot;Parameter7&amp;quot; &amp;quot;0&amp;quot; -defaultOnEmpty&lt;br /&gt;$tagBrowser = Init-Parameter &amp;quot;Parameter8&amp;quot; [String]::Empty&lt;br /&gt;&lt;br /&gt;# calculate gradient&lt;br /&gt;$r1 = [Convert]::ToInt32($color1.Substring(1,2),16)&lt;br /&gt;$g1 = [Convert]::ToInt32($color1.Substring(3,2),16)&lt;br /&gt;$b1 = [Convert]::ToInt32($color1.Substring(5,2),16)&lt;br /&gt;	&lt;br /&gt;$r2 = [Convert]::ToInt32($color2.Substring(1,2),16)&lt;br /&gt;$g2 = [Convert]::ToInt32($color2.Substring(3,2),16)&lt;br /&gt;$b2 = [Convert]::ToInt32($color2.Substring(5,2),16) &lt;br /&gt;&lt;br /&gt;$diff_r = $r2-$r1&lt;br /&gt;$diff_g = $g2-$g1&lt;br /&gt;$diff_b = $b2-$b1&lt;br /&gt;&lt;br /&gt;# css&lt;br /&gt;$defaultCss =@&amp;quot;&lt;br /&gt;	.power-cloud A {	&lt;br /&gt;		TEXT-DECORATION: none&lt;br /&gt;	}&lt;br /&gt;	.power-cloud A:hover {	&lt;br /&gt;		TEXT-DECORATION: underline&lt;br /&gt;	}&lt;br /&gt;	.power-cloud UL {	&lt;br /&gt;		PADDING-RIGHT: 0px;	&lt;br /&gt;		PADDING-LEFT: 0px;	&lt;br /&gt;		PADDING-BOTTOM: 0px;	&lt;br /&gt;		MARGIN: 0px;	&lt;br /&gt;		PADDING-TOP: 0px;	&lt;br /&gt;		LIST-STYLE-TYPE: none;	&lt;br /&gt;		TEXT-ALIGN: center&lt;br /&gt;	}&lt;br /&gt;	.power-cloud LI &lt;br /&gt;	{	&lt;br /&gt;		PADDING-RIGHT: 0px;	&lt;br /&gt;		DISPLAY: inline;	&lt;br /&gt;		PADDING-LEFT: 0px;	&lt;br /&gt;		BACKGROUND-IMAGE: none !important;	&lt;br /&gt;		PADDING-BOTTOM: 0px;	&lt;br /&gt;		MARGIN: 0px;	&lt;br /&gt;		PADDING-TOP: 0px;	&lt;br /&gt;		TEXT-ALIGN: justify&lt;br /&gt;	}&lt;br /&gt;&amp;quot;@ &lt;br /&gt;&lt;br /&gt;$css = Init-Parameter &amp;quot;Parameter9&amp;quot; $defaultCss -defaultOnEmpty&lt;br /&gt;&lt;br /&gt;Register-CSSBlock $css&lt;br /&gt;&lt;br /&gt;function CreateChildControls($controls)&lt;br /&gt;{	&lt;br /&gt;	#find all tagged list items&lt;br /&gt;	$query = New-Object &amp;quot;Microsoft.SharePoint.SPSiteDataQuery&amp;quot;&lt;br /&gt;	$query.Query = @&amp;quot;&lt;br /&gt;&lt;where&gt; &lt;br /&gt;		&lt;isnotnull&gt;&lt;br /&gt;			&lt;fieldref name="$tagField" /&gt;&lt;br /&gt;      &lt;/isnotnull&gt;&lt;br /&gt;&lt;/where&gt;&lt;br /&gt;&amp;quot;@ &lt;br /&gt;	$query.ViewFields = &amp;quot;&lt;fieldref name="$tagField" /&gt;&amp;quot;&lt;br /&gt;	#set query scope&lt;br /&gt;	if([String]::IsNullOrEmpty($scope) -eq $false){ $query.Webs=&amp;quot;&lt;webs scope="$scope" /&gt;&amp;quot;}&lt;br /&gt;	&lt;br /&gt;	#set list type&lt;br /&gt;	$query.Lists = &amp;quot;&lt;lists basetype="$listType" /&gt;&amp;quot;&lt;br /&gt;	&lt;br /&gt;	$dataTable = $web.GetSiteData($query)&lt;br /&gt;	&lt;br /&gt;	# extract all tags in a list&lt;br /&gt;	$global:tags = New-Object System.Collections.ArrayList&lt;br /&gt;	$dataTable | Select-Object Tags | %{$_.Tags.Split(';')} | %{$tags.Add($_.Trim().TrimStart('#'))}&lt;br /&gt;	&lt;br /&gt;	# group tags&lt;br /&gt;	$global:tagGroups = $tags | Group-Object | Sort-Object Count -Descending&lt;br /&gt;} &lt;br /&gt;&lt;br /&gt;function Render($writer)&lt;br /&gt;{	&lt;br /&gt;	$gradientSteps = $tagGroups.Count&lt;br /&gt;	&lt;br /&gt;	#begin cloud&lt;br /&gt;	$writer.Write(&amp;quot;&lt;div class="power-cloud"&gt;&lt;ul&gt;&amp;quot;)  &lt;br /&gt;	&lt;br /&gt;	for($i=0; $i -lt $tagGroups.Count; $i++ )&lt;br /&gt;	{&lt;br /&gt;		# calculate font size&lt;br /&gt;		$size = [Math]::Round(($tagGroups[$i].Count * $maxFontSize) / $tagGroups[0].Count)&lt;br /&gt;		if($size -lt $minFontSize){$size = $minFontSize}&lt;br /&gt;		&lt;br /&gt;		# calculate color&lt;br /&gt;		$gradientFactor = $i / $gradientSteps &lt;br /&gt;		$r = $r1 + $diff_r * $gradientFactor&lt;br /&gt;		$g = $g1 + $diff_g * $gradientFactor&lt;br /&gt;		$b = $b1 + $diff_b * $gradientFactor		&lt;br /&gt;		$color = &amp;quot;rgb($r, $g, $b)&amp;quot;		&lt;br /&gt;				&lt;br /&gt;		$tagName = $tagGroups[$i].Name&lt;br /&gt;		$tagUrl = &amp;quot;{0}?tag={1}&amp;amp;listType={2}&amp;amp;scope={3}&amp;amp;tagField={4}&amp;quot; -f $tagBrowser, $tagName, $listType ,$scope, $tagField&lt;br /&gt;	&lt;br /&gt;		#render tag&lt;br /&gt;		$writer.Write(&amp;quot;&lt;li&gt;`n&lt;a href="$tagUrl"&gt;$tagName&lt;/a&gt;`n&amp;quot;)&lt;br /&gt;	}&lt;br /&gt;	&lt;br /&gt;	# end cloud&lt;br /&gt;	$writer.Write(&amp;quot;&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&amp;quot;)&lt;br /&gt;}&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Power Tag Cloud Editor Script&lt;/strong&gt; &lt;br /&gt;&lt;pre class="brush: powershell; smart-tabs: true; tab-size: 2;"&gt;$txtMaxFontSize = New-Object System.Web.UI.WebControls.TextBox&lt;br /&gt;$txtMaxFontSize = New-Object System.Web.UI.WebControls.TextBox&lt;br /&gt;$txtMinFontSize = New-Object System.Web.UI.WebControls.TextBox&lt;br /&gt;$txtMaxColor = New-Object System.Web.UI.WebControls.TextBox&lt;br /&gt;$txtMinColor = New-Object System.Web.UI.WebControls.TextBox&lt;br /&gt;$txtTagField = New-Object System.Web.UI.WebControls.TextBox&lt;br /&gt;$txtTagBrowser = New-Object System.Web.UI.WebControls.TextBox&lt;br /&gt;$drpdScope = New-Object System.Web.UI.WebControls.DropDownList&lt;br /&gt;$drpdLists = New-Object System.Web.UI.WebControls.DropDownList&lt;br /&gt;$txtCss = New-Object iLoveSharePoint.WebControls.SimpleTextEditor&lt;br /&gt;&lt;br /&gt;function CreateChildControls($controls)&lt;br /&gt;{&lt;br /&gt;	$drpdScope.Items.Add([String]::Empty)&lt;br /&gt;	$drpdScope.Items.Add(&amp;quot;Recursive&amp;quot;)&lt;br /&gt;	$drpdScope.Items.Add(&amp;quot;SiteCollection&amp;quot;)	&lt;br /&gt;	&lt;br /&gt;	&lt;br /&gt;	$drpdLists.Items.Add($(New-Object System.Web.UI.WebControls.ListItem(&amp;quot;Generic list&amp;quot;,&amp;quot;0&amp;quot;)))&lt;br /&gt;	$drpdLists.Items.Add($(New-Object System.Web.UI.WebControls.ListItem(&amp;quot;Document Library&amp;quot;,&amp;quot;1&amp;quot;)))&lt;br /&gt;	$drpdLists.Items.Add($(New-Object System.Web.UI.WebControls.ListItem(&amp;quot;Discussion forum&amp;quot;,&amp;quot;3&amp;quot;)))&lt;br /&gt;	$drpdLists.Items.Add($(New-Object System.Web.UI.WebControls.ListItem(&amp;quot;Vote or Survey&amp;quot;,&amp;quot;4&amp;quot;)))&lt;br /&gt;	$drpdLists.Items.Add($(New-Object System.Web.UI.WebControls.ListItem(&amp;quot;Issues List&amp;quot;,&amp;quot;5&amp;quot;)))&lt;br /&gt;				&lt;br /&gt;	$controls.Add($drpdScope)&lt;br /&gt;	$controls.Add($drpdLists)&lt;br /&gt;	$controls.Add($txtTagField)&lt;br /&gt;	$controls.Add($txtMaxFontSize)&lt;br /&gt;	$controls.Add($txtMinFontSize)&lt;br /&gt;	$controls.Add($txtMaxColor)&lt;br /&gt;	$controls.Add($txtMinColor)&lt;br /&gt;	$controls.Add($txtTagBrowser)&lt;br /&gt;	&lt;br /&gt;	$txtCss.DisplayText = &amp;quot;Edit CSS&amp;quot;&lt;br /&gt;	$controls.Add($txtCss) &lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;function OnSyncChanges()&lt;br /&gt;{ &lt;br /&gt;	$this.EnsureChildControls() &lt;br /&gt;	&lt;br /&gt;	$drpdScope.SelectedValue = $webpart.Parameter1 &lt;br /&gt;	$txtTagField.Text = $webpart.Parameter2&lt;br /&gt;	$txtMaxFontSize.Text = $webpart.Parameter3&lt;br /&gt;	$txtMinFontSize.Text = $webpart.Parameter4 &lt;br /&gt;	$txtMaxColor.Text = $webpart.Parameter5&lt;br /&gt;	$txtMinColor.Text = $webpart.Parameter6 &lt;br /&gt;	$drpdLists.SelectedValue = $webpart.Parameter7&lt;br /&gt;	$txtTagBrowser.Text = $webpart.Parameter8&lt;br /&gt;	$txtCss.Text = $webpart.Parameter9&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;function OnApplyChanges() &lt;br /&gt;{&lt;br /&gt;	$this.EnsureChildControls()&lt;br /&gt;		&lt;br /&gt;    $webpart.Parameter1 = $drpdScope.SelectedValue&lt;br /&gt;	$webpart.Parameter2 = $txtTagField.Text&lt;br /&gt;	$webpart.Parameter3 = $txtMaxFontSize.Text&lt;br /&gt;	$webpart.Parameter4 = $txtMinFontSize.Text&lt;br /&gt;	$webpart.Parameter5 = $txtMaxColor.Text&lt;br /&gt;	$webpart.Parameter6 = $txtMinColor.Text&lt;br /&gt;	$webpart.Parameter7 = $drpdLists.SelectedValue&lt;br /&gt;	$webpart.Parameter8 = $txtTagBrowser.Text&lt;br /&gt;	$webpart.Parameter9 = $txtCss.Text&lt;br /&gt;	&lt;br /&gt;	return $true&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;function Render($writer)&lt;br /&gt;{&lt;br /&gt;	$writer.Write(&amp;quot;&lt;table&gt;&amp;quot;)&lt;br /&gt;	&lt;br /&gt;	Render-Row &amp;quot;Scope&amp;quot; $drpdScope $writer&lt;br /&gt;	Render-Row &amp;quot;List Type&amp;quot; $drpdLists $writer&lt;br /&gt;	Render-Row &amp;quot;Tag Column Name&amp;quot; $txtTagField $writer&lt;br /&gt;	Render-Row &amp;quot;Tag Browser Url&amp;quot; $txtTagBrowser $writer&lt;br /&gt;	Render-Row &amp;quot;Max font size&amp;quot; $txtMaxFontSize $writer&lt;br /&gt;	Render-Row &amp;quot;Min font size&amp;quot; $txtMinFontSize $writer&lt;br /&gt;	Render-Row &amp;quot;Max color (hex)&amp;quot; $txtMaxColor $writer&lt;br /&gt;	Render-Row &amp;quot;Min color (hex)&amp;quot; $txtMinColor $writer&lt;br /&gt;	Render-Row &amp;quot;Style&amp;quot; $txtCss $writer&lt;br /&gt;	&lt;br /&gt;	$writer.Write(&amp;quot;&lt;tbody&gt;&lt;/tbody&gt;&lt;/table&gt;&amp;quot;)&lt;br /&gt;	 &lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;function Render-Row($text, $control, $writer)&lt;br /&gt;{&lt;br /&gt;	$writer.Write(&amp;quot;&lt;tr&gt;&amp;quot;)&lt;br /&gt;		$writer.Write(&amp;quot;&lt;td&gt;&amp;quot;)&lt;br /&gt;		$writer.Write(&amp;quot;&lt;div class="UserSectionHead"&gt;$text&lt;/div&gt;&amp;quot;)&lt;br /&gt;		$control.RenderControl($writer)&lt;br /&gt;		$writer.Write(&amp;quot;&lt;/td&gt;&amp;quot;)&lt;br /&gt;	$writer.Write(&amp;quot;&lt;/tr&gt;&amp;quot;)&lt;br /&gt;}&lt;/pre&gt;&lt;br /&gt;&lt;strong&gt;Power Tag Cloud Browser Script&lt;/strong&gt; &lt;br /&gt;&lt;pre class="brush: powershell; smart-tabs: true; tab-size: 2;"&gt;function CreateChildControls($controls)&lt;br /&gt;{&lt;br /&gt;	$global:tag = $page.Request[&amp;quot;tag&amp;quot;].ToString()&lt;br /&gt;	$global:scope = $page.Request[&amp;quot;scope&amp;quot;]&lt;br /&gt;	$global:listType = $page.Request[&amp;quot;listType&amp;quot;].ToString()&lt;br /&gt;	$global:tagField = $page.Request[&amp;quot;tagField&amp;quot;].ToString() &lt;br /&gt;	&lt;br /&gt;	$query = New-Object &amp;quot;Microsoft.SharePoint.SPSiteDataQuery&amp;quot;&lt;br /&gt;	&lt;br /&gt;	#set query scope&lt;br /&gt;	if([String]::IsNullOrEmpty($scope) -eq $false){ $query.Webs=&amp;quot;&lt;webs scope="$scope" /&gt;&amp;quot;}&lt;br /&gt;	&lt;br /&gt;	$query.Lists = &amp;quot;&lt;lists basetype="$listType" /&gt;&amp;quot;&lt;br /&gt;	  &lt;br /&gt;	$query.Query = @&amp;quot;&lt;br /&gt;&lt;where&gt;&lt;br /&gt;		&lt;contains&gt;&lt;br /&gt;			&lt;fieldref name="$tagField" /&gt;&lt;value type="Text"&gt;$tag&lt;/value&gt;&lt;br /&gt;      &lt;/contains&gt;&lt;br /&gt;&lt;/where&gt;&lt;br /&gt;&amp;quot;@  &lt;br /&gt;	$query.ViewFields = &amp;quot;&lt;fieldref name="Tags" /&gt;&lt;fieldref name="FileLeafRef" /&gt;&amp;quot;&lt;br /&gt;	if($listType -ne &amp;quot;1&amp;quot;){$query.ViewFields +=&amp;quot;&lt;fieldref name="Title" /&gt;&amp;quot;}&lt;br /&gt;	&lt;br /&gt;	$global:table = $web.GetSiteData($query) 	&lt;br /&gt;} &lt;br /&gt;&lt;br /&gt;function Render($writer)&lt;br /&gt;{&lt;br /&gt;	$writer.Write(&amp;quot;&lt;h2&gt;Tag: $tag&lt;/h2&gt;&amp;quot;)&lt;br /&gt;	foreach($row in $table)&lt;br /&gt;	{&lt;br /&gt;		$writer.Write(&amp;quot;&lt;div class="ms-vb"&gt;&amp;quot;)&lt;br /&gt;		$writer.Write($(Build-Headline $row))&lt;br /&gt;		$writer.Write($(Build-Body $row))&lt;br /&gt;		$writer.Write(&amp;quot;&lt;/div&gt;&lt;br /&gt;&amp;quot;)&lt;br /&gt;	}&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;function Build-Headline($row)&lt;br /&gt;{&lt;br /&gt;	$siteId = $site.ID&lt;br /&gt;	$href = &amp;quot;/_layouts/CopyUtil.aspx?Use=id&amp;amp;Action=dispform&amp;amp;ItemId={0}&amp;amp;ListId={1}&amp;amp;WebId={2}&amp;amp;SiteId=$siteId&amp;quot; -f $row[&amp;quot;Id&amp;quot;],$row[&amp;quot;ListId&amp;quot;],$row[&amp;quot;WebId&amp;quot;]&lt;br /&gt;	if($global:table.Columns.Contains('Title') -eq $false -or [String]::IsNullOrEmpty($row[&amp;quot;Title&amp;quot;]))&lt;br /&gt;	{&lt;br /&gt;		$title = $row[&amp;quot;FileLeafRef&amp;quot;].Split('#')[1]&lt;br /&gt;	}&lt;br /&gt;	else&lt;br /&gt;	{&lt;br /&gt;		$title = $row[&amp;quot;Title&amp;quot;]&lt;br /&gt;	}&lt;br /&gt;	&lt;br /&gt;	$html = &amp;quot;&lt;div class="ms-navheader"&gt;&lt;a href="{0}"&gt;{1}&lt;/a&gt;&lt;/div&gt;&amp;quot; -f $href, $title&lt;br /&gt;	&lt;br /&gt;	return $html&lt;br /&gt;} &lt;br /&gt;&lt;br /&gt;function Build-Body($row)&lt;br /&gt;{&lt;br /&gt;	$tags = $row[$tagField].Split(';')&lt;br /&gt;	&lt;br /&gt;	$html = &amp;quot;&lt;span&gt;Tags: &amp;quot;&lt;br /&gt;	&lt;br /&gt;	foreach($tag in $tags)&lt;br /&gt;	{&lt;br /&gt;		$tag = $tag.Trim().TrimStart('#')&lt;br /&gt;		$html += &amp;quot;&lt;a href="$($page.Request.Path)?tag=$tag&amp;amp;listType=$listType&amp;amp;scope=$scope&amp;amp;tagField=$tagField"&gt;$tag&lt;/a&gt; &amp;quot;&lt;br /&gt;	}&lt;br /&gt;	&lt;br /&gt;	$html += &amp;quot;&lt;/span&gt;&lt;br /&gt;&amp;quot;&lt;br /&gt;	&lt;br /&gt;	return $html&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;function OnError($ex, $writer)  &lt;br /&gt;{&lt;br /&gt;	$writer.Write(&amp;quot;Please ensure that tag, listType, tagField and scope url parameters are provided.&amp;quot;)&lt;br /&gt;}&lt;/pre&gt;&lt;br /&gt;&lt;p&gt;You can download the two wepart files on the &lt;a href="http://ilovesharepoint.codeplex.com/Release/ProjectReleases.aspx?ReleaseId=18883" target="_blank"&gt;PowerWebPart 3.0&lt;/a&gt; release homepage and then import them into the web part gallery or just copy and paste the scripts. An exported PowerWebPart .webart file self contains it script and digital signature, so you can simply export and import PowerWebParts. An end user will never notice if the web part is written in PowerShell or C#. Only farm admins can see and change the scripts. Note that when you import a PowerWebPart from a foreign SharePoint farm the signature will be invalid. A farm admin can simply resign the script through a click on “Apply” in the web part’s editor panel. &lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3766174345251248841-1432503612744067754?l=www.ilovesharepoint.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.ilovesharepoint.com/feeds/1432503612744067754/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3766174345251248841&amp;postID=1432503612744067754' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3766174345251248841/posts/default/1432503612744067754'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3766174345251248841/posts/default/1432503612744067754'/><link rel='alternate' type='text/html' href='http://www.ilovesharepoint.com/2009/05/power-tag-cloud-sharepoint-tag-cloud.html' title='Power Tag Cloud - SharePoint Tag Cloud written in PowerShell'/><author><name>Christian</name><uri>http://www.blogger.com/profile/16986066591633364914</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='22' height='32' src='http://bp1.blogger.com/_J6SMSGCmItU/SGAIxRt-lLI/AAAAAAAAABo/EqgbBGe38FM/S220/DSC_0314_small.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh6.ggpht.com/_J6SMSGCmItU/Sfyvxt37f4I/AAAAAAAAA8k/jExXKv-nn_0/s72-c/image_thumb%5B8%5D.png?imgmax=800' height='72' width='72'/><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3766174345251248841.post-8876340130948573359</id><published>2009-04-25T12:11:00.001+02:00</published><updated>2011-03-20T21:26:33.207+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='PowerWebPart'/><category scheme='http://www.blogger.com/atom/ns#' term='SharePoint'/><category scheme='http://www.blogger.com/atom/ns#' term='PowerShell'/><title type='text'>Getting Started with SharePoint PowerWebPart 3.0</title><content type='html'>&lt;p&gt;&lt;font color="#333333" size="2"&gt;I’ve just released &lt;a href="http://ilovesharepoint.codeplex.com/Release/ProjectReleases.aspx?ReleaseId=18883" target="_blank"&gt;PowerWebPart 3.0&lt;/a&gt; on my &lt;a href="http://codeplex.com/iLoveSharePoint" target="_blank"&gt;iLove SharePoint project&lt;/a&gt; at CodePlex. What can you do with PowerWebPart?&lt;/font&gt;&lt;/p&gt;  &lt;blockquote&gt;   &lt;h3&gt;Write reusable SharePoint WebParts with PowerShell&lt;/h3&gt; &lt;/blockquote&gt;  &lt;p&gt;&lt;strong&gt;Features:&lt;/strong&gt;&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Simple HTML Rendering &lt;/li&gt;    &lt;li&gt;ASP.NET and SharePoint WebControls &lt;/li&gt;    &lt;li&gt;Supports WebPart Connections (Row Provider/Consumer, Table Provider/Consumer) &lt;/li&gt;    &lt;li&gt;AJAX enabled &lt;/li&gt;    &lt;li&gt;jQuery enabled &lt;/li&gt;    &lt;li&gt;Configurable parameters &lt;/li&gt;    &lt;li&gt;SharePoint Object Model &lt;/li&gt;    &lt;li&gt;&lt;strong&gt;NEW&lt;/strong&gt;: PowerGUI Script Editor Integration &lt;/li&gt;    &lt;li&gt;&lt;strong&gt;NEW&lt;/strong&gt;: Script Signing &lt;/li&gt;    &lt;li&gt;&lt;strong&gt;NEW&lt;/strong&gt;: Custom Editor Parts written in PowerShell &lt;/li&gt;    &lt;li&gt;&lt;strong&gt;NEW&lt;/strong&gt;: Central Script Repository &lt;/li&gt;    &lt;li&gt;&lt;strong&gt;NEW&lt;/strong&gt;: Import and Export &lt;/li&gt;    &lt;li&gt;&lt;strong&gt;NEW&lt;/strong&gt;: Error Handling &lt;/li&gt;    &lt;li&gt;&lt;strong&gt;NEW&lt;/strong&gt;: Debugging &lt;/li&gt;    &lt;li&gt;No compile, no packaging, no deploy, no iis reset deployment &lt;/li&gt;    &lt;li&gt;Copy &amp;amp; Paste deployment &lt;/li&gt;    &lt;li&gt;&lt;strong&gt;Anything PowerShell can do :-)&lt;/strong&gt; &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;One of the major improvements is the automatically script signing. Only farm administrators are allowed to edit scripts in the UI. But what is when you export a web part, change the script and import it to a web part gallery again? The signature will be broken and the script will not run anymore. So exporting and importing is now secure. The script will automatically be signed when a farm administrator clicks on ‘Apply’ in the web part's editor panel. The signing key will generated randomly on installation, but can be changed anytime later.&amp;#160; &lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;font color="#333333" size="2"&gt;&lt;strong&gt;For installation and configuration see documentation.&lt;/strong&gt;&lt;/font&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;h3&gt;Getting Started Screen Cast:&lt;/h3&gt;  &lt;div class="wlWriterEditableSmartContent" id="scid:5737277B-5D6D-4f48-ABFC-DD9C333F4C5D:1519c893-edc8-4941-8c55-898aa68cd48c" style="padding-right: 0px; display: inline; padding-left: 0px; float: none; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;&lt;div id="72ffb1e3-7f3c-427a-9381-3e65585cf116" style="margin: 0px; padding: 0px; display: inline;"&gt;&lt;div&gt;&lt;a href="http://video.msn.com/video.aspx?vid=9b583bc3-e758-4de5-a72c-53098be1bea0&amp;amp;ifs=true&amp;amp;fr=msnvideo&amp;amp;mkt=de-DE&amp;amp;from=writer" target="_new"&gt;&lt;img src="http://lh4.ggpht.com/_J6SMSGCmItU/SfLht2NmaUI/AAAAAAAAA8c/NgKidyAWTVw/video917130f830e8%5B3%5D.jpg?imgmax=800" style="border-style: none" galleryimg="no" onload="var downlevelDiv = document.getElementById('72ffb1e3-7f3c-427a-9381-3e65585cf116'); downlevelDiv.innerHTML = &amp;quot;&amp;lt;div&amp;gt;&amp;lt;embed src=\&amp;quot;http://images.video.msn.com/flash/soapbox1_1.swf\&amp;quot; quality=\&amp;quot;high\&amp;quot; width=\&amp;quot;432\&amp;quot; height=\&amp;quot;364\&amp;quot; wmode=\&amp;quot;transparent\&amp;quot; type=\&amp;quot;application/x-shockwave-flash\&amp;quot; pluginspage=\&amp;quot;http://macromedia.com/go/getflashplayer\&amp;quot; flashvars=\&amp;quot;c=v&amp;amp;v=9b583bc3-e758-4de5-a72c-53098be1bea0&amp;amp;ifs=true&amp;amp;fr=msnvideo&amp;amp;mkt=de-DE&amp;amp;from=writer&amp;amp;mkt=en-US\&amp;quot; &amp;gt;&amp;lt;\/embed&amp;gt;&amp;lt;\/div&amp;gt;&amp;quot;;" alt=""&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;  &lt;p&gt;Soon I will post a PowerWebPart Tag Cloud example…&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3766174345251248841-8876340130948573359?l=www.ilovesharepoint.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.ilovesharepoint.com/feeds/8876340130948573359/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3766174345251248841&amp;postID=8876340130948573359' title='18 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3766174345251248841/posts/default/8876340130948573359'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3766174345251248841/posts/default/8876340130948573359'/><link rel='alternate' type='text/html' href='http://www.ilovesharepoint.com/2009/04/getting-started-with-sharepoint.html' title='Getting Started with SharePoint PowerWebPart 3.0'/><author><name>Christian</name><uri>http://www.blogger.com/profile/16986066591633364914</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='22' height='32' src='http://bp1.blogger.com/_J6SMSGCmItU/SGAIxRt-lLI/AAAAAAAAABo/EqgbBGe38FM/S220/DSC_0314_small.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh4.ggpht.com/_J6SMSGCmItU/SfLht2NmaUI/AAAAAAAAA8c/NgKidyAWTVw/s72-c/video917130f830e8%5B3%5D.jpg?imgmax=800' height='72' width='72'/><thr:total>18</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3766174345251248841.post-7449083477441644731</id><published>2009-04-10T23:01:00.002+02:00</published><updated>2009-05-03T10:01:47.978+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Reporting'/><category scheme='http://www.blogger.com/atom/ns#' term='SharePoint'/><category scheme='http://www.blogger.com/atom/ns#' term='Nintex'/><title type='text'>Do you know what’s going on in your SharePoint? No?!</title><content type='html'>&lt;blockquote&gt;   &lt;h3&gt;Option 1&lt;/h3&gt; &lt;/blockquote&gt;  &lt;p&gt;&lt;a href="http://lh3.ggpht.com/_J6SMSGCmItU/Sd-ztAOTmOI/AAAAAAAAA78/AISzUp9qJEc/s1600-h/wahrsager_COLAGE_02%5B4%5D.jpg"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="" border="0" alt="" src="http://lh4.ggpht.com/_J6SMSGCmItU/Sd-zt7Md76I/AAAAAAAAA8A/jxtX6smXjhQ/wahrsager_COLAGE_02_thumb%5B2%5D.jpg?imgmax=800" width="428" height="289" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;blockquote&gt;   &lt;h3&gt;Option 2&lt;/h3&gt; &lt;/blockquote&gt;  &lt;p&gt;&lt;object width="425" height="344"&gt;&lt;param name="movie" value="http://www.youtube.com/v/PzPu9iJXTgU&amp;amp;hl=de&amp;amp;fs=1&amp;amp;rel=0"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/PzPu9iJXTgU&amp;amp;hl=de&amp;amp;fs=1&amp;amp;rel=0" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;   &lt;br /&gt;Read more &lt;a href="http://www.dataone.de/en/solutions/sharepointportals/Seiten/NintexReporting2008.aspx"&gt;http://www.dataone.de/en/solutions/sharepointportals/Seiten/NintexReporting2008.aspx&lt;/a&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3766174345251248841-7449083477441644731?l=www.ilovesharepoint.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.ilovesharepoint.com/feeds/7449083477441644731/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3766174345251248841&amp;postID=7449083477441644731' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3766174345251248841/posts/default/7449083477441644731'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3766174345251248841/posts/default/7449083477441644731'/><link rel='alternate' type='text/html' href='http://www.ilovesharepoint.com/2009/04/do-you-know-whats-going-on-in-your.html' title='Do you know what’s going on in your SharePoint? No?!'/><author><name>Christian</name><uri>http://www.blogger.com/profile/16986066591633364914</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='22' height='32' src='http://bp1.blogger.com/_J6SMSGCmItU/SGAIxRt-lLI/AAAAAAAAABo/EqgbBGe38FM/S220/DSC_0314_small.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh4.ggpht.com/_J6SMSGCmItU/Sd-zt7Md76I/AAAAAAAAA8A/jxtX6smXjhQ/s72-c/wahrsager_COLAGE_02_thumb%5B2%5D.jpg?imgmax=800' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3766174345251248841.post-1518494484481735348</id><published>2009-04-09T22:32:00.003+02:00</published><updated>2009-04-10T18:43:48.384+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Object Model'/><category scheme='http://www.blogger.com/atom/ns#' term='.NET'/><category scheme='http://www.blogger.com/atom/ns#' term='SharePoint'/><category scheme='http://www.blogger.com/atom/ns#' term='C#'/><title type='text'>SharePoint Object Model - From SPFarm to SPListItem</title><content type='html'>&lt;p&gt;&lt;font color="#666666"&gt;In a layer model ASP.NET builds the UI Layer (and also the service facade), the &lt;strong&gt;SharePoint Object Model is the business layer&lt;/strong&gt; and for sure there is also a data access layer. The data access layer is the dark side of SharePoint, because it’s mainly unmanaged. It’s a mixture of unmanaged code and T-SQL. Unfortunately the unmanaged part isn’t under the control of the developer and vulnerable for memory leaks. What you can do is query (only read!) the database with SQL directly, but isn’t that intuitive and not recommended. There are unverified stories that with SharePoint 14 there will be a one to one relation between SharePoint lists and database tables – we will see. To cut a long story short, the way of choice to interact with the SharePoint database is the object model.&lt;/font&gt;&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;The SharePoint object model is simply a beauty. I felt in love with it since I used it the first time about 6 years ago. &lt;/p&gt; &lt;/blockquote&gt;  &lt;br /&gt;  &lt;h3&gt;SharePoint Object Hierarchy Overview &lt;/h3&gt; &lt;a href="http://lh4.ggpht.com/_J6SMSGCmItU/Sd9kSY87HII/AAAAAAAAA70/cLLup-pYjhc/s1600-h/image%5B12%5D.png"&gt;&lt;img title="image" style="border-right: 0px; border-top: 0px; display: inline; border-left: 0px; border-bottom: 0px" height="424" alt="image" src="http://lh4.ggpht.com/_J6SMSGCmItU/Sd9kTcqbk2I/AAAAAAAAA74/xU5-UCrS4DU/image_thumb%5B6%5D.png?imgmax=800" width="454" border="0" /&gt;&lt;/a&gt;   &lt;h3&gt;&amp;#160;&lt;/h3&gt;  &lt;h3&gt;Example – From Farm to List Item&lt;/h3&gt;  &lt;p&gt;Here is an example for beginners how to traverse from SPFarm to SPListItem. The objects used in this example can be found in two namespaces. From SPFarm to SPWebApplication in &lt;strong&gt;Microsoft.SharePoint.Administratation, &lt;/strong&gt;from SPSite to SPListItem in &lt;strong&gt;Microsoft.SharePoint&lt;/strong&gt;. The Namespaces resides both in the &lt;strong&gt;Microsoft.SharePoint.dll&lt;/strong&gt; at &lt;strong&gt;“%commonprogramfiles%\Microsoft Shared\web server extensions\12\ISAPI”.&lt;/strong&gt; Any clue where you will find it in SharePoint &lt;strong&gt;14 &lt;/strong&gt;;-) &lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;Always keep in mind that the object model is not remotable and have to run on the SharePoint server!&lt;/p&gt; &lt;/blockquote&gt;  &lt;pre class="brush: c-sharp;"&gt;Console.ForegroundColor = ConsoleColor.Green;&lt;br /&gt;Console.BufferHeight = 1000;&lt;br /&gt;&lt;br /&gt;//Get local farm&lt;br /&gt;SPFarm farm = SPFarm.Local;&lt;br /&gt;Console.Write(farm.Id.ToString(&amp;quot;N&amp;quot;).ToLower());&lt;br /&gt;&lt;br /&gt;//loop Services&lt;br /&gt;foreach (SPService service in farm.Services)&lt;br /&gt;{&lt;br /&gt;    //find WebService&lt;br /&gt;    if (service is SPWebService)&lt;br /&gt;    {&lt;br /&gt;        SPWebService webService = (SPWebService)service;&lt;br /&gt;&lt;br /&gt;        //Loop WebApps&lt;br /&gt;        foreach (SPWebApplication webApp in webService.WebApplications)&lt;br /&gt;        {&lt;br /&gt;            Console.Write(webApp.Id.ToString(&amp;quot;N&amp;quot;).ToLower());&lt;br /&gt;&lt;br /&gt;            //Loop Site Collections&lt;br /&gt;            foreach (SPSite site in webApp.Sites)&lt;br /&gt;            {&lt;br /&gt;                Console.Write(site.ID.ToString(&amp;quot;N&amp;quot;).ToLower());&lt;br /&gt;&lt;br /&gt;                //Loop Sites&lt;br /&gt;                foreach (SPWeb web in site.AllWebs)&lt;br /&gt;                {&lt;br /&gt;                    Console.Write(web.ID.ToString(&amp;quot;N&amp;quot;).ToLower());&lt;br /&gt;&lt;br /&gt;                    //Loop Lists&lt;br /&gt;                    foreach (SPList list in web.Lists)&lt;br /&gt;                    {&lt;br /&gt;                        Console.Write(list.ID.ToString(&amp;quot;N&amp;quot;).ToLower());&lt;br /&gt;&lt;br /&gt;                        //Loop Items&lt;br /&gt;                        foreach (SPListItem item in list.Items)&lt;br /&gt;                        {&lt;br /&gt;                            Console.Write(item.UniqueId.ToString(&amp;quot;N&amp;quot;).ToLower());&lt;br /&gt;                        }&lt;br /&gt;                    }&lt;br /&gt;                    web.Dispose();&lt;br /&gt;                }&lt;br /&gt;                site.Dispose();&lt;br /&gt;            }&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;    }&lt;br /&gt;}&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;strong&gt;If you will run it, it will run and run and run and look like this:&lt;/strong&gt;&lt;strong&gt; &lt;/strong&gt;&lt;a href="http://lh5.ggpht.com/_J6SMSGCmItU/Sd8S1Bv9YQI/AAAAAAAAA7s/crVu8ZZv70A/s1600-h/image%5B4%5D.png"&gt;&lt;img title="image" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="222" alt="image" src="http://lh4.ggpht.com/_J6SMSGCmItU/Sd8S1kzybOI/AAAAAAAAA7w/KXqV-asBums/image_thumb%5B2%5D.png?imgmax=800" width="424" border="0" /&gt;&lt;/a&gt; &lt;strong&gt;I call it the SharePoint Matrix ;-)&lt;/strong&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3766174345251248841-1518494484481735348?l=www.ilovesharepoint.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.ilovesharepoint.com/feeds/1518494484481735348/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3766174345251248841&amp;postID=1518494484481735348' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3766174345251248841/posts/default/1518494484481735348'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3766174345251248841/posts/default/1518494484481735348'/><link rel='alternate' type='text/html' href='http://www.ilovesharepoint.com/2009/04/test.html' title='SharePoint Object Model - From SPFarm to SPListItem'/><author><name>Christian</name><uri>http://www.blogger.com/profile/16986066591633364914</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='22' height='32' src='http://bp1.blogger.com/_J6SMSGCmItU/SGAIxRt-lLI/AAAAAAAAABo/EqgbBGe38FM/S220/DSC_0314_small.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh4.ggpht.com/_J6SMSGCmItU/Sd9kTcqbk2I/AAAAAAAAA74/xU5-UCrS4DU/s72-c/image_thumb%5B6%5D.png?imgmax=800' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3766174345251248841.post-5431959829565079778</id><published>2009-03-01T12:48:00.001+01:00</published><updated>2009-03-01T12:55:56.412+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Automation'/><category scheme='http://www.blogger.com/atom/ns#' term='SharePoint'/><category scheme='http://www.blogger.com/atom/ns#' term='Twitter'/><category scheme='http://www.blogger.com/atom/ns#' term='PowerShell'/><category scheme='http://www.blogger.com/atom/ns#' term='PowerPoint'/><title type='text'>BASTA! Spring 09: SharePoint &amp; PowerShell</title><content type='html'>&lt;p&gt;Many peoples asked me to share my presentation about SharePoint &amp;amp; PowerShell from the BASTA! Spring 09 – &lt;a href="http://christianglessner.de/Blog/Presentations/BASTA09%20SharePoint%20&amp;amp;%20PowerShell%20(en).pptx" target="_blank"&gt;here it is&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;In general .NET developers aren’t familiar with PowerShell, though it’s really great and helpful tool. I recommend everyone just use it! If you master it, every piece of software is your slave, regardless it is based on .NET, COM or WMI. &lt;/p&gt;  &lt;blockquote&gt;   &lt;h3&gt;The base evolution of PowerShell is everything in PowerShell is a .NET object!&lt;/h3&gt; &lt;/blockquote&gt;  &lt;p&gt;In the Java magazine they compared the Bash with PowerShell and PowerShell won, because it is build on .NET. &lt;/p&gt;  &lt;p&gt;There are many SharePoint-Solution-Life-Cycle-Tasks and for sure .NET tasks PowerShell can help you:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Migration &lt;/li&gt;    &lt;li&gt;Build Process &lt;/li&gt;    &lt;li&gt;Deployment &lt;/li&gt;    &lt;li&gt;Prototyping &lt;/li&gt;    &lt;li&gt;Automate Admin Tasks &lt;/li&gt;    &lt;li&gt;Rapid Development &lt;/li&gt;    &lt;li&gt;Learning &lt;/li&gt;    &lt;li&gt;Alternative UI &lt;/li&gt;    &lt;li&gt;Trouble Shooting &lt;/li&gt;    &lt;li&gt;Admin-Tool for your own Software &lt;/li&gt;    &lt;li&gt;Testing &lt;/li&gt;    &lt;li&gt;Scripting language for your own software &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;My favorite is scripting language for your own software. It is really cool and powerful to build PowerShell functions around your .NET DLLs. By the way, same does Microsoft. &lt;/p&gt;  &lt;blockquote&gt;   &lt;h3&gt;What do you think how SharePoint 14 can be scripted? Stsadm.exe? &lt;/h3&gt; &lt;/blockquote&gt;  &lt;p&gt;&amp;#160;&lt;strong&gt;One of my fun demos to demonstrate the power of PowerShell:&lt;/strong&gt;&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Automate PowerPoint, create slide on the fly and post a tweet &lt;/li&gt; &lt;/ul&gt;  &lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:5737277B-5D6D-4f48-ABFC-DD9C333F4C5D:8af40952-201e-4fa1-b55e-24334f4c33e4" class="wlWriterEditableSmartContent"&gt;&lt;div&gt;&lt;embed src="http://images.video.msn.com/flash/soapbox1_1.swf" quality="high" width="432" height="364" wmode="transparent" type="application/x-shockwave-flash" pluginspage="http://macromedia.com/go/getflashplayer" flashvars="c=v&amp;v=9c72b8a7-b807-4196-990d-4fc36442a3fb&amp;from=writer&amp;mkt=en-US"&gt;&lt;/embed&gt;&lt;/div&gt;&lt;/div&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;span style="color: #800080"&gt;$pptApp&lt;/span&gt;&lt;span style="color: #000000"&gt; &lt;/span&gt;&lt;span style="color: #ff0000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt; &lt;/span&gt;&lt;span style="color: #5f9ea0; font-weight: bold"&gt;new-object&lt;/span&gt;&lt;span style="color: #000000"&gt; -com &lt;/span&gt;&lt;span style="color: #800000"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: #800000"&gt;powerpoint.application&lt;/span&gt;&lt;span style="color: #800000"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: #000000"&gt; &lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style="color: #000000"&gt;&lt;/span&gt;&lt;span style="color: #800080"&gt;$ppt&lt;/span&gt;&lt;span style="color: #000000"&gt; &lt;/span&gt;&lt;span style="color: #ff0000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt; &lt;/span&gt;&lt;span style="color: #800080"&gt;$pptApp&lt;/span&gt;&lt;span style="color: #000000"&gt;.Presentations.Add() &lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style="color: #000000"&gt;&lt;/span&gt;&lt;span style="color: #800080"&gt;$slide&lt;/span&gt;&lt;span style="color: #000000"&gt; &lt;/span&gt;&lt;span style="color: #ff0000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt; &lt;/span&gt;&lt;span style="color: #800080"&gt;$ppt&lt;/span&gt;&lt;span style="color: #000000"&gt;.Slides.Add(&lt;/span&gt;&lt;span style="color: #000000"&gt;1&lt;/span&gt;&lt;span style="color: #000000"&gt;,&lt;/span&gt;&lt;span style="color: #000000"&gt;1&lt;/span&gt;&lt;span style="color: #000000"&gt;) &lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style="color: #000000"&gt;&lt;/span&gt;&lt;span style="color: #800080"&gt;$shape&lt;/span&gt;&lt;span style="color: #000000"&gt; &lt;/span&gt;&lt;span style="color: #ff0000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt; &lt;/span&gt;&lt;span style="color: #800080"&gt;$slide&lt;/span&gt;&lt;span style="color: #000000"&gt;.Shapes.Item(&lt;/span&gt;&lt;span style="color: #000000"&gt;1&lt;/span&gt;&lt;span style="color: #000000"&gt;) &lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style="color: #000000"&gt;&lt;/span&gt;&lt;span style="color: #800080"&gt;$shape&lt;/span&gt;&lt;span style="color: #000000"&gt;.TextFrame.TextRange.Text &lt;/span&gt;&lt;span style="color: #ff0000"&gt;=&lt;/span&gt;&lt;span style="color: #800000"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: #800000"&gt;PowerShell rocks!&lt;/span&gt;&lt;span style="color: #800000"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: #000000"&gt; &lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style="color: #000000"&gt;&lt;/span&gt;&lt;span style="color: #800080"&gt;$shape&lt;/span&gt;&lt;span style="color: #000000"&gt;.AnimationSettings.Animate&lt;/span&gt;&lt;span style="color: #ff0000"&gt;=&lt;/span&gt;&lt;span style="color: #0000ff"&gt;$true&lt;/span&gt;&lt;span style="color: #000000"&gt; &lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style="color: #000000"&gt;&lt;/span&gt;&lt;span style="color: #800080"&gt;$shape&lt;/span&gt;&lt;span style="color: #000000"&gt;.AnimationSettings.EntryEffect=&lt;/span&gt;&lt;span style="color: #000000"&gt;3332&lt;/span&gt;&lt;span style="color: #000000"&gt; &lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style="color: #000000"&gt;&lt;/span&gt;&lt;span style="color: #008000"&gt;#&lt;/span&gt;&lt;span style="color: #008000"&gt;# Now replace &amp;quot;PowerShell rocks!&amp;quot; with the following script:&lt;/span&gt;&lt;span style="color: #008000"&gt; &lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style="color: #008000"&gt;&lt;/span&gt;&lt;span style="color: #008000"&gt;#&lt;/span&gt;&lt;span style="color: #008000"&gt;# &amp;quot;Twitter this via PowerPoint&amp;quot; | out-twitter&lt;/span&gt;&lt;span style="color: #008000"&gt; &lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style="color: #008000"&gt;#&lt;/span&gt;&lt;span style="color: #008000"&gt;# out-twitter is slightly modified version of Jeff Hicks Out-Twitter &lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style="color: #008000"&gt;## paste the out-twitter script to your $profile&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style="color: #008000"&gt;&lt;/span&gt;&lt;span style="color: #008000"&gt;#&lt;/span&gt;&lt;span style="color: #008000"&gt;# &lt;a href="http://blog.sapien.com/index.php/2008/06/23/out-twitter/"&gt;http://blog.sapien.com/index.php/2008/06/23/out-twitter/&lt;/a&gt; &lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style="color: #008000"&gt;&lt;/span&gt;&lt;span style="color: #008000"&gt;#&lt;/span&gt;&lt;span style="color: #008000"&gt;# you have to add &amp;quot;$request.ServicePoint.Expect100Continue = $false&amp;quot;&lt;/span&gt;&lt;span style="color: #008000"&gt; &lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style="color: #008000"&gt;&lt;/span&gt;&lt;span style="color: #008000"&gt;#&lt;/span&gt;&lt;span style="color: #008000"&gt;# Now invoke your script from PowerShell with the following line:&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style="color: #5f9ea0; font-weight: bold"&gt;Invoke-Expression&lt;/span&gt;&lt;span style="color: #000000"&gt; &lt;/span&gt;&lt;span style="color: #800080"&gt;$shape&lt;/span&gt;&lt;span style="color: #000000"&gt;.TextFrame.TextRange.Text&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style="color: #000000"&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style="color: #000000"&gt;Made the complete presentation this way ;-) &lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style="color: #000000"&gt;I’ve also a done a demo how you can embed PowerShell in a SharePoint WebPart in about 5 minutes. Following soon…&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style="color: #000000"&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style="color: #000000"&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style="color: #000000"&gt;Some pics of the presenation:&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style="color: #000000"&gt;&amp;#160;&lt;a href="http://lh4.ggpht.com/_J6SMSGCmItU/Sap2ES4AzbI/AAAAAAAAA7U/o0m8aiYJUdk/s1600-h/b2%5B2%5D.jpg"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="b2" border="0" alt="b2" src="http://lh6.ggpht.com/_J6SMSGCmItU/Sap2E08odAI/AAAAAAAAA7Y/yXk0CBL9190/b2_thumb.jpg?imgmax=800" width="244" height="183" /&gt;&lt;/a&gt; &lt;a href="http://lh3.ggpht.com/_J6SMSGCmItU/Sap2FxbhZWI/AAAAAAAAA7c/wIUNAeZLJ2c/s1600-h/b1%5B5%5D.jpg"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="b1" border="0" alt="b1" src="http://lh5.ggpht.com/_J6SMSGCmItU/Sap2GQKZt4I/AAAAAAAAA7g/MA6LY_tT9FE/b1_thumb%5B1%5D.jpg?imgmax=800" width="244" height="178" /&gt;&lt;/a&gt; &lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style="color: #000000"&gt;You will see what the chain saw meant when you watch the presentation ;-)&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style="color: #000000"&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style="color: #000000"&gt;&lt;/span&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3766174345251248841-5431959829565079778?l=www.ilovesharepoint.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.ilovesharepoint.com/feeds/5431959829565079778/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3766174345251248841&amp;postID=5431959829565079778' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3766174345251248841/posts/default/5431959829565079778'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3766174345251248841/posts/default/5431959829565079778'/><link rel='alternate' type='text/html' href='http://www.ilovesharepoint.com/2009/03/basta-spring-09-sharepoint-powershell.html' title='BASTA! Spring 09: SharePoint &amp;amp; PowerShell'/><author><name>Christian</name><uri>http://www.blogger.com/profile/16986066591633364914</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='22' height='32' src='http://bp1.blogger.com/_J6SMSGCmItU/SGAIxRt-lLI/AAAAAAAAABo/EqgbBGe38FM/S220/DSC_0314_small.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh6.ggpht.com/_J6SMSGCmItU/Sap2E08odAI/AAAAAAAAA7Y/yXk0CBL9190/s72-c/b2_thumb.jpg?imgmax=800' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3766174345251248841.post-5451985819090531476</id><published>2009-02-28T20:23:00.001+01:00</published><updated>2009-02-28T20:23:22.385+01:00</updated><title type='text'>PowerShell the Swiss Army Knife of IT</title><content type='html'>&lt;p&gt;&lt;a href="http://lh4.ggpht.com/_J6SMSGCmItU/SamPJ8Pn5OI/AAAAAAAAA7I/mw17MjtAeuA/s1600-h/PowerShellKnife%5B8%5D.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; margin-left: 0px; border-left-width: 0px; margin-right: 0px" title="PowerShellKnife" border="0" alt="PowerShellKnife" align="left" src="http://lh3.ggpht.com/_J6SMSGCmItU/SamPKfAIKAI/AAAAAAAAA7Q/Dxmvfx0ekrA/PowerShellKnife_thumb%5B6%5D.png?imgmax=800" width="394" height="274" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3766174345251248841-5451985819090531476?l=www.ilovesharepoint.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.ilovesharepoint.com/feeds/5451985819090531476/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3766174345251248841&amp;postID=5451985819090531476' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3766174345251248841/posts/default/5451985819090531476'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3766174345251248841/posts/default/5451985819090531476'/><link rel='alternate' type='text/html' href='http://www.ilovesharepoint.com/2009/02/powershell-swiss-army-knife-of-it.html' title='PowerShell the Swiss Army Knife of IT'/><author><name>Christian</name><uri>http://www.blogger.com/profile/16986066591633364914</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='22' height='32' src='http://bp1.blogger.com/_J6SMSGCmItU/SGAIxRt-lLI/AAAAAAAAABo/EqgbBGe38FM/S220/DSC_0314_small.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh3.ggpht.com/_J6SMSGCmItU/SamPKfAIKAI/AAAAAAAAA7Q/Dxmvfx0ekrA/s72-c/PowerShellKnife_thumb%5B6%5D.png?imgmax=800' height='72' width='72'/><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3766174345251248841.post-7610726766910513475</id><published>2009-01-31T20:53:00.001+01:00</published><updated>2009-01-31T20:53:39.423+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SharePoint'/><category scheme='http://www.blogger.com/atom/ns#' term='Office'/><title type='text'>SPTip : Show Custom Locations in Office File Dialogs</title><content type='html'>&lt;p&gt;By this time many companies use SharePoint as their central document repository. To simplify and accelerate the access, it would be comfortable to add a link to the Office “My Places” bar. The My Places bar appears in the left pane of both the Open and the Save As dialog boxes in Microsoft Office programs.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh5.ggpht.com/_J6SMSGCmItU/SYSsOjw6nnI/AAAAAAAAA6U/JOE4_stPM2o/s1600-h/image%5B6%5D.png"&gt;&lt;img title="image" style="border-right: 0px; border-top: 0px; display: inline; border-left: 0px; border-bottom: 0px" height="362" alt="image" src="http://lh6.ggpht.com/_J6SMSGCmItU/SYSsO-0yJkI/AAAAAAAAA6Y/7Bt6tE3tFQA/image_thumb%5B2%5D.png?imgmax=800" width="404" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;To add an item create the following registry key:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;strong&gt;Windows Registry Editor Version 5.00 &lt;/strong&gt;&lt;/p&gt;    &lt;p&gt;&lt;strong&gt;[HKEY_CURRENT_USER\Software\Microsoft\Office\12.0\Common\Open Find\Places\UserDefinedPlaces\Place0]       &lt;br /&gt;&amp;quot;Name&amp;quot;=&amp;quot;Document Center&amp;quot;        &lt;br /&gt;&amp;quot;Path&amp;quot;=&lt;a href="http://mysharepoint/Docs/"&gt;http://mysharepoint/Docs/&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;&lt;a href="http://lh5.ggpht.com/_J6SMSGCmItU/SYSsPKtohYI/AAAAAAAAA6c/z2wuXduudp8/s1600-h/image%5B10%5D.png"&gt;&lt;img title="image" style="border-right: 0px; border-top: 0px; display: inline; border-left: 0px; border-bottom: 0px" height="459" alt="image" src="http://lh4.ggpht.com/_J6SMSGCmItU/SYSsQnxl6-I/AAAAAAAAA6g/mmMRpRX6NVQ/image_thumb%5B4%5D.png?imgmax=800" width="404" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;You can also hide items you don’t need. Read more on the MS Knowledgebase: &lt;a href="http://support.microsoft.com/kb/826214/en-us"&gt;How to customize the My Places bar in both the Open and the Save As dialog boxes in Office&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;To deploy the key to all clients in the domain you can use group policies.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3766174345251248841-7610726766910513475?l=www.ilovesharepoint.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.ilovesharepoint.com/feeds/7610726766910513475/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3766174345251248841&amp;postID=7610726766910513475' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3766174345251248841/posts/default/7610726766910513475'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3766174345251248841/posts/default/7610726766910513475'/><link rel='alternate' type='text/html' href='http://www.ilovesharepoint.com/2009/01/sptip-show-custom-locations-in-office.html' title='SPTip : Show Custom Locations in Office File Dialogs'/><author><name>Christian</name><uri>http://www.blogger.com/profile/16986066591633364914</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='22' height='32' src='http://bp1.blogger.com/_J6SMSGCmItU/SGAIxRt-lLI/AAAAAAAAABo/EqgbBGe38FM/S220/DSC_0314_small.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh6.ggpht.com/_J6SMSGCmItU/SYSsO-0yJkI/AAAAAAAAA6Y/7Bt6tE3tFQA/s72-c/image_thumb%5B2%5D.png?imgmax=800' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3766174345251248841.post-3641803717998546750</id><published>2009-01-25T17:12:00.002+01:00</published><updated>2009-01-26T10:15:28.724+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SharePoint'/><category scheme='http://www.blogger.com/atom/ns#' term='Twitter'/><category scheme='http://www.blogger.com/atom/ns#' term='PowerShell'/><category scheme='http://www.blogger.com/atom/ns#' term='Personal'/><title type='text'>Self-Awareness With Twitter</title><content type='html'>&lt;p&gt;Have you ever take a look at your &lt;a href="http://twitter.com/"&gt;Twitter&lt;/a&gt; cloud? &lt;/p&gt;&lt;p&gt;My Twitter cloud:&lt;/p&gt;&lt;p&gt;&lt;a href="http://twitter.grader.com/cglessner"&gt;&lt;img title="image" style="BORDER-RIGHT: 0px; BORDER-TOP: 0px; DISPLAY: inline; BORDER-LEFT: 0px; BORDER-BOTTOM: 0px" height="120" alt="image" src="http://lh4.ggpht.com/_J6SMSGCmItU/SXyPh_zED8I/AAAAAAAAA6A/2CR6aWCeV-4/image%5B4%5D.png?imgmax=800" width="444" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;taken from &lt;a title="http://twitter.grader.com/cglessner" href="http://twitter.grader.com/cglessner"&gt;http://twitter.grader.com/cglessner&lt;/a&gt; &lt;/p&gt;&lt;blockquote&gt;&lt;h3&gt;What does this tell about me?&lt;/h3&gt;&lt;/blockquote&gt;&lt;p&gt;The largest cloud is “my” followed by “SharePoint” and “PowerShell”:&lt;/p&gt;&lt;blockquote&gt;&lt;h3&gt;I’m a selfish SharePoint-PowerShell geek!&lt;/h3&gt;&lt;/blockquote&gt;&lt;p&gt;&lt;span style="font-size:85%;color:#333333;"&gt;Psychoanalyzing with Twitter – just great!  &lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:85%;color:#333333;"&gt;Or maybe this is market niche for fortune-tellers. Tarot cards and crystal balls are snows of yesteryear. Read the future in the clouds…&lt;/span&gt;&lt;/p&gt;&lt;blockquote&gt;&lt;h3&gt;What does the clouds tell about you?&lt;/h3&gt;&lt;/blockquote&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3766174345251248841-3641803717998546750?l=www.ilovesharepoint.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.ilovesharepoint.com/feeds/3641803717998546750/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3766174345251248841&amp;postID=3641803717998546750' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3766174345251248841/posts/default/3641803717998546750'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3766174345251248841/posts/default/3641803717998546750'/><link rel='alternate' type='text/html' href='http://www.ilovesharepoint.com/2009/01/self-awareness-with-twitter.html' title='Self-Awareness With Twitter'/><author><name>Christian</name><uri>http://www.blogger.com/profile/16986066591633364914</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='22' height='32' src='http://bp1.blogger.com/_J6SMSGCmItU/SGAIxRt-lLI/AAAAAAAAABo/EqgbBGe38FM/S220/DSC_0314_small.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh4.ggpht.com/_J6SMSGCmItU/SXyPh_zED8I/AAAAAAAAA6A/2CR6aWCeV-4/s72-c/image%5B4%5D.png?imgmax=800' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3766174345251248841.post-6784328151489316360</id><published>2009-01-24T19:38:00.002+01:00</published><updated>2010-11-28T10:13:38.866+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SharePoint Designer'/><category scheme='http://www.blogger.com/atom/ns#' term='SharePoint'/><category scheme='http://www.blogger.com/atom/ns#' term='PowerShell'/><category scheme='http://www.blogger.com/atom/ns#' term='WF'/><title type='text'>Publish Major Versions &amp; Declarative SharePoint Workflows</title><content type='html'>&lt;p&gt;In general there are four start options for SharePoint workflows:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Start manual &lt;/li&gt;&lt;li&gt;Start when an item changed &lt;/li&gt;&lt;li&gt;Start when a new item is created &lt;/li&gt;&lt;li&gt;&lt;strong&gt;Start workflow to approve publishing a major version of an item&lt;/strong&gt; &lt;/li&gt;&lt;/ul&gt;&lt;p&gt;When you use Visual Studio workflows or the built-in MOSS Approval Workflow you have all options. But with declarative workflows like SharePoint Designer and &lt;a href="http://www.dataone.de/en/solutions/portals/Seiten/NintexWorkflow2007.aspx" target="_blank"&gt;Nintex Workflows&lt;/a&gt; you have only the first three options.&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;strike&gt;Start workflow to approve publishing a major version of an item&lt;/strike&gt; &lt;/li&gt;&lt;/ul&gt;&lt;blockquote&gt;&lt;p&gt;&lt;strong&gt;You can’t use declarative workflows to approve publishing a major version of an item.&lt;/strong&gt; &lt;strong&gt;&lt;font color="#666666"&gt;Lose that option can really hurts!&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;&lt;a href="http://lh4.ggpht.com/_J6SMSGCmItU/SXtgE-Rxm8I/AAAAAAAAA4s/2JYPoINWGnk/s1600-h/image%5B3%5D.png"&gt;&lt;img title="image" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="319" alt="image" src="http://lh5.ggpht.com/_J6SMSGCmItU/SXtgFeLg6dI/AAAAAAAAA4w/I_1hc1ikwcQ/image_thumb%5B1%5D.png?imgmax=800" width="404" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;&lt;strong&gt;Take a look at the SharePoint object model&lt;/strong&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;In the object model the &lt;strong&gt;DefaultContentApprovalWorkflowId&lt;/strong&gt; property of the &lt;strong&gt;SPList&lt;/strong&gt; contains the the id of the workflow association which should be started to publish a major version. &lt;/p&gt;&lt;p&gt;So we only need to find the association id of our declarative workflow and set the DefaultContentApprovalWorkflowId property – maybe with PowerShell?&lt;/p&gt;&lt;p&gt;Yes and No! This works until the association id will change. And it will change every time the workflow changes! Manual set the DefaultContentApprovalWorkflowId every time the workflow changes? Cumbersome!&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;&lt;font color="#333333" size="2"&gt;&lt;strong&gt;The solution&lt;/strong&gt;&lt;/font&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;Declarative workflows (xoml files) will be stores in a hidden document library. You can see the library in SharePoint Designer:&lt;/p&gt;&lt;p&gt;&lt;a href="http://lh3.ggpht.com/_J6SMSGCmItU/SXtgF4gEIrI/AAAAAAAAA40/kbEsc22Dcf4/s1600-h/image%5B9%5D.png"&gt;&lt;img title="image" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="232" alt="image" src="http://lh6.ggpht.com/_J6SMSGCmItU/SXtgGeM1HUI/AAAAAAAAA44/KvZEM8jg_SA/image_thumb%5B3%5D.png?imgmax=800" width="244" border="0" /&gt;&lt;/a&gt;&amp;#160;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Just let an event receiver do the work! Every time the workflow file changes get the new association id and set the DefaultContentApprovalWorkflowId of the target list.&lt;/strong&gt;&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;PowerShell Implementation&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;Exemplarily I will show an implementation with PowerShell and &lt;a href="http://www.codeplex.com/iLoveSharePoint/Release/ProjectReleases.aspx?ReleaseId=19314" target="_blank"&gt;PowerEventReceiver&lt;/a&gt;. &lt;/p&gt;&lt;ul&gt;&lt;li&gt;Install, deploy and activate the &lt;a href="http://www.codeplex.com/iLoveSharePoint/Release/ProjectReleases.aspx?ReleaseId=19314" target="_blank"&gt;PowerEventReceiver&lt;/a&gt; &lt;/li&gt;&lt;li&gt;Get the of the hidden “Workflows” library. Read &lt;a title="Get the Id of a SharePoint List or View" href="http://cglessner.blogspot.com/2008/06/get-id-of-sharepoint-list-or-view.html"&gt;Get the Id of a SharePoint List or View&lt;/a&gt; &lt;/li&gt;&lt;li&gt;Navigate to the list settings &lt;a href="http://[siteurl]/_layouts/listedit.aspx?List=[GUIDfromPreviousStep"&gt;http://[siteurl]/_layouts/listedit.aspx?List=[GUIDfromPreviousStep&lt;/a&gt;] of the workflows library &lt;/li&gt;&lt;li&gt;&lt;a href="http://lh6.ggpht.com/_J6SMSGCmItU/SXtgGqiUfRI/AAAAAAAAA48/G-_6Ox3F9Qg/s1600-h/image%5B12%5D.png"&gt;&lt;img title="image" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="164" alt="image" src="http://lh3.ggpht.com/_J6SMSGCmItU/SXtgG7EQUCI/AAAAAAAAA5A/bgEpjMkpR6g/image_thumb%5B4%5D.png?imgmax=800" width="172" border="0" /&gt;&lt;/a&gt; &lt;/li&gt;&lt;li&gt;Enter the following script&lt;/li&gt;&lt;/ul&gt;&lt;div style="background-color: #eeeeee"&gt;&lt;p&gt;&lt;span style="color: #008000"&gt;#&lt;/span&gt;&lt;span style="color: #008000"&gt;workflow must be associated with the target list&lt;/span&gt;&lt;span style="color: #008000"&gt; &lt;/span&gt;&lt;span style="color: #800080"&gt;$workflowFileName&lt;/span&gt;&lt;span style="color: #000000"&gt; &lt;/span&gt;&lt;span style="color: #ff0000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt; &lt;/span&gt;&lt;span style="color: #800000"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: #800000"&gt;Nintex Test.xoml&lt;/span&gt;&lt;span style="color: #800000"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: #000000"&gt;        &lt;br /&gt;&lt;/span&gt;&lt;span style="color: #800080"&gt;$targetListTitle&lt;/span&gt;&lt;span style="color: #000000"&gt; &lt;/span&gt;&lt;span style="color: #ff0000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt; &lt;/span&gt;&lt;span style="color: #800000"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: #800000"&gt;TestLib&lt;/span&gt;&lt;span style="color: #800000"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: #000000"&gt; &lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="color: #000000"&gt;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;function&lt;/span&gt;&lt;span style="color: #000000"&gt; &lt;/span&gt;&lt;span style="color: #5f9ea0"&gt;ItemUpdated&lt;/span&gt;&lt;span style="color: #000000"&gt;()        &lt;br /&gt;{ &lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="color: #000000"&gt;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;if&lt;/span&gt;&lt;span style="color: #000000"&gt;(&lt;/span&gt;&lt;span style="color: #800080"&gt;$item&lt;/span&gt;&lt;span style="color: #000000"&gt;.DisplayName &lt;/span&gt;&lt;span style="color: #ff0000"&gt;-eq&lt;/span&gt;&lt;span style="color: #000000"&gt; &lt;/span&gt;&lt;span style="color: #800000"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: #800000"&gt;$($workflowFileName).wfconfig&lt;/span&gt;&lt;span style="color: #800000"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: #000000"&gt;)        &lt;br /&gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;{ &lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="color: #000000"&gt;&lt;/span&gt;&lt;span style="color: #800080"&gt;$binFile&lt;/span&gt;&lt;span style="color: #000000"&gt; &lt;/span&gt;&lt;span style="color: #ff0000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt; &lt;/span&gt;&lt;span style="color: #800080"&gt;$item&lt;/span&gt;&lt;span style="color: #000000"&gt;.File.OpenBinary() &lt;/span&gt;&lt;span style="color: #800080"&gt;$wfConfig&lt;/span&gt;&lt;span style="color: #000000"&gt; &lt;/span&gt;&lt;span style="color: #ff0000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt; [&lt;/span&gt;&lt;span style="color: #008080"&gt;xml&lt;/span&gt;&lt;span style="color: #000000"&gt;][&lt;/span&gt;&lt;span style="color: #008080"&gt;System.Text.Encoding&lt;/span&gt;&lt;span style="color: #000000"&gt;]::&lt;/span&gt;&lt;span style="color: #8b4513"&gt;UTF8&lt;/span&gt;&lt;span style="color: #000000"&gt;.&lt;/span&gt;&lt;span style="color: #8b4513"&gt;GetString&lt;/span&gt;&lt;span style="color: #000000"&gt;(&lt;/span&gt;&lt;span style="color: #800080"&gt;$binFile&lt;/span&gt;&lt;span style="color: #000000"&gt;)        &lt;br /&gt;&lt;/span&gt;&lt;span style="color: #800080"&gt;       &lt;br /&gt;$baseId&lt;/span&gt;&lt;span style="color: #000000"&gt; &lt;/span&gt;&lt;span style="color: #ff0000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt; [&lt;/span&gt;&lt;span style="color: #008080"&gt;Guid&lt;/span&gt;&lt;span style="color: #000000"&gt;]&lt;/span&gt;&lt;span style="color: #800080"&gt;$wfConfig&lt;/span&gt;&lt;span style="color: #000000"&gt;.WorkflowConfig.Template.BaseID        &lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #800080"&gt;$lib&lt;/span&gt;&lt;span style="color: #000000"&gt; &lt;/span&gt;&lt;span style="color: #ff0000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt; &lt;/span&gt;&lt;span style="color: #800080"&gt;$web&lt;/span&gt;&lt;span style="color: #000000"&gt;.Lists[&lt;/span&gt;&lt;span style="color: #800080"&gt;$targetListTitle&lt;/span&gt;&lt;span style="color: #000000"&gt;]        &lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #800080"&gt;$assoc&lt;/span&gt;&lt;span style="color: #000000"&gt; &lt;/span&gt;&lt;span style="color: #ff0000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt; &lt;/span&gt;&lt;span style="color: #800080"&gt;$lib&lt;/span&gt;&lt;span style="color: #000000"&gt;.WorkflowAssociations.GetAssociationByBaseId(&lt;/span&gt;&lt;span style="color: #800080"&gt;$baseId&lt;/span&gt;&lt;span style="color: #000000"&gt;)        &lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #800080"&gt;$lib&lt;/span&gt;&lt;span style="color: #000000"&gt;.DefaultApprovalWorkflowId &lt;/span&gt;&lt;span style="color: #ff0000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt; &lt;/span&gt;&lt;span style="color: #800080"&gt;$assoc&lt;/span&gt;&lt;span style="color: #000000"&gt;.Id &lt;/span&gt;&lt;span style="color: #800080"&gt;$lib&lt;/span&gt;&lt;span style="color: #000000"&gt;.Update()        &lt;br /&gt;}         &lt;br /&gt;}&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;&lt;p&gt;&lt;span style="color: #000000"&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="http://lh3.ggpht.com/_J6SMSGCmItU/SXtgHXfK4qI/AAAAAAAAA5E/2U-NEDf3jQ4/s1600-h/image%5B18%5D.png"&gt;&lt;img title="image" style="border-right: 0px; border-top: 0px; display: inline; border-left: 0px; border-bottom: 0px" height="278" alt="image" src="http://lh6.ggpht.com/_J6SMSGCmItU/SXtgH3Ibk2I/AAAAAAAAA5I/A--6rL748Bs/image_thumb%5B8%5D.png?imgmax=800" width="444" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;&lt;ul&gt;&lt;li&gt;Change &lt;span style="color: #800080"&gt;$workflowFileName&lt;/span&gt; and &lt;span style="color: #800080"&gt;$targetListTitle&lt;/span&gt; appropriately. The workflow should already be deployed on the target list. &lt;strong&gt;Manual start option must be activated for the workflow&lt;/strong&gt;. You can find the file name of the workflow with help of SharePoint Designer or PowerShell. &lt;/li&gt;&lt;li&gt;Save the script and resave/republish the SPD/Nintex workflow.&lt;/li&gt;&lt;li&gt;Publish a major version of a document:&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;a href="http://lh4.ggpht.com/_J6SMSGCmItU/SXtgIdIPPvI/AAAAAAAAA5M/y75fTj_CeLE/s1600-h/image%5B22%5D.png"&gt;&lt;img title="image" style="border-right: 0px; border-top: 0px; display: inline; border-left: 0px; border-bottom: 0px" height="343" alt="image" src="http://lh3.ggpht.com/_J6SMSGCmItU/SXtgJP4XHdI/AAAAAAAAA5Q/TI0L1bKXw10/image_thumb%5B10%5D.png?imgmax=800" width="444" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;&lt;ul&gt;&lt;li&gt;After entering a comment you’ll see the initiation form of your content approval workflow. In my case a beautiful &lt;a href="http://www.dataone.de/en/solutions/portals/Seiten/NintexWorkflow2007.aspx" target="_blank"&gt;Nintex Workflow&lt;/a&gt;, in other cases an ugly SharePoint Designer Workflow ;-)&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;a href="http://lh6.ggpht.com/_J6SMSGCmItU/SXtgJWKZ8SI/AAAAAAAAA5U/ovRPJM6th8U/s1600-h/image%5B29%5D.png"&gt;&lt;img title="image" style="border-right: 0px; border-top: 0px; display: inline; border-left: 0px; border-bottom: 0px" height="611" alt="image" src="http://lh3.ggpht.com/_J6SMSGCmItU/SXtgJ7wcL7I/AAAAAAAAA5Y/S3qsi7IJ5ww/image_thumb%5B13%5D.png?imgmax=800" width="444" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Start&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;a href="http://lh5.ggpht.com/_J6SMSGCmItU/SXtgKZ8AV3I/AAAAAAAAA5c/9no5Y0KztMw/s1600-h/image%5B33%5D.png"&gt;&lt;img title="image" style="border-right: 0px; border-top: 0px; display: inline; border-left: 0px; border-bottom: 0px" height="108" alt="image" src="http://lh4.ggpht.com/_J6SMSGCmItU/SXtgLFfkO8I/AAAAAAAAA5g/N_Pebvirkvs/image_thumb%5B15%5D.png?imgmax=800" width="444" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;&lt;strong&gt;Now you can change the workflow without lose the content approval workflow.&lt;/strong&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3766174345251248841-6784328151489316360?l=www.ilovesharepoint.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.ilovesharepoint.com/feeds/6784328151489316360/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3766174345251248841&amp;postID=6784328151489316360' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3766174345251248841/posts/default/6784328151489316360'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3766174345251248841/posts/default/6784328151489316360'/><link rel='alternate' type='text/html' href='http://www.ilovesharepoint.com/2009/01/publish-major-version-declarative.html' title='Publish Major Versions &amp;amp; Declarative SharePoint Workflows'/><author><name>Christian</name><uri>http://www.blogger.com/profile/16986066591633364914</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='22' height='32' src='http://bp1.blogger.com/_J6SMSGCmItU/SGAIxRt-lLI/AAAAAAAAABo/EqgbBGe38FM/S220/DSC_0314_small.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh5.ggpht.com/_J6SMSGCmItU/SXtgFeLg6dI/AAAAAAAAA4w/I_1hc1ikwcQ/s72-c/image_thumb%5B1%5D.png?imgmax=800' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3766174345251248841.post-4117275490868172148</id><published>2009-01-20T17:43:00.001+01:00</published><updated>2011-03-20T21:26:33.210+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Theory'/><category scheme='http://www.blogger.com/atom/ns#' term='.NET'/><category scheme='http://www.blogger.com/atom/ns#' term='Evolution'/><title type='text'>Software, Open Source And The Theory Of Evolution</title><content type='html'>&lt;p&gt;Have you ever thought about software, open source and Darwin’s theory of evolution? No? &lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;strong&gt;What is evolution?&lt;/strong&gt;&lt;/p&gt;    &lt;p&gt;In &lt;a href="http://en.wikipedia.org/wiki/Biology"&gt;biology&lt;/a&gt;, &lt;b&gt;&lt;a href="http://en.wikipedia.org/wiki/Evolution" target="_blank"&gt;evolution&lt;/a&gt;&lt;/b&gt; is change in the &lt;a href="http://en.wikipedia.org/wiki/Heritability"&gt;inherited&lt;/a&gt; &lt;a href="http://en.wikipedia.org/wiki/Trait_(biology)"&gt;traits&lt;/a&gt; of a &lt;a href="http://en.wikipedia.org/wiki/Population"&gt;population&lt;/a&gt; of organisms from one generation to the next. These changes are caused by a combination of three main processes (Wikipedia):&lt;/p&gt;    &lt;ul&gt;     &lt;li&gt;reproduction &lt;/li&gt;      &lt;li&gt;variation &lt;/li&gt;      &lt;li&gt;selection &lt;/li&gt;   &lt;/ul&gt; &lt;/blockquote&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;strong&gt;How does this works?&lt;/strong&gt;&lt;/p&gt;    &lt;p&gt;An evolving entity must be able to reproduce (reproduction). These copies can slightly vary from the source (variation). Some of this variations will survive and reproduce better than others (selection). The copies surviving better will become more common in population (the fittest will survive). This process will run from generation to generation from the beginning. Is this a powerful mechanism? Take a look in the mirror!&lt;/p&gt; &lt;/blockquote&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;strong&gt;&lt;font color="#666666"&gt;W&lt;/font&gt;hat to hell has this to do with Software and Open Source?!&lt;/strong&gt;&lt;/p&gt;    &lt;p&gt;Source code, the building block of software, is simple to reproduce – copy &amp;amp; paste (reproduction). If you share the source code on a blog, on a open source platform like &lt;a href="http://codeplex.com" target="_blank"&gt;CodePlex&lt;/a&gt; or on a script repository like &lt;a href="http://poshcode.org"&gt;http://poshcode.org&lt;/a&gt;, others will copy and slightly modify the original code (variations). Slightly, because the chosen code must fit some to the problem domain. Some of these variations will be better than the original source. If the variations will be republished, better code variations will be used and reproduced more often, consequently become more common in the internet (selection). This process will run from code generation to code generation from the beginning.&lt;/p&gt;    &lt;p&gt;&lt;em&gt;&lt;font color="#333333" size="2"&gt;What’s about compiled code? &lt;/font&gt;&lt;font color="#333333" size="2"&gt;Compiled code is also simple to copy, but copying doesn’t produce variations. Consequently compiled code can’t evolve!&lt;/font&gt;&lt;/em&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;blockquote&gt;   &lt;h3&gt;Open source is the booster for the evolution of software!&lt;/h3&gt; &lt;/blockquote&gt;  &lt;p&gt;In fact many processes out there are related to the theory of evolution. A gen is a blueprint for the production of a protein. What’s a business process? Maybe a blueprint for producing a car. Can we reproduce processes? Can processes vary? Can we select processes? What is benchmarking? There are many questions left to ask….&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3766174345251248841-4117275490868172148?l=www.ilovesharepoint.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.ilovesharepoint.com/feeds/4117275490868172148/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3766174345251248841&amp;postID=4117275490868172148' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3766174345251248841/posts/default/4117275490868172148'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3766174345251248841/posts/default/4117275490868172148'/><link rel='alternate' type='text/html' href='http://www.ilovesharepoint.com/2009/01/theory-of-evolution-and-open-source.html' title='Software, Open Source And The Theory Of Evolution'/><author><name>Christian</name><uri>http://www.blogger.com/profile/16986066591633364914</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='22' height='32' src='http://bp1.blogger.com/_J6SMSGCmItU/SGAIxRt-lLI/AAAAAAAAABo/EqgbBGe38FM/S220/DSC_0314_small.jpg'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3766174345251248841.post-5409687405291265241</id><published>2009-01-19T18:53:00.001+01:00</published><updated>2011-03-20T21:28:02.245+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SharePoint Designer Actions'/><category scheme='http://www.blogger.com/atom/ns#' term='SharePoint Designer'/><category scheme='http://www.blogger.com/atom/ns#' term='SharePoint'/><category scheme='http://www.blogger.com/atom/ns#' term='CodePlex'/><category scheme='http://www.blogger.com/atom/ns#' term='WF'/><title type='text'>iLSP - SharePoint Designer “Execute SQL” Action</title><content type='html'>&lt;p&gt;With the “Execute SQL” action you can execute SQL statements from within SharePoint Designer workflows.&lt;/p&gt;  &lt;p&gt;The action is included in my &lt;a href="http://www.codeplex.com/iLoveSharePoint/Release/ProjectReleases.aspx?ReleaseId=20898"&gt;SharePoint Designer Actions 1.0&lt;/a&gt; release on CodePlex. Source code is available.&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;font color="#333333" size="2"&gt;&lt;strong&gt;Documentation&lt;/strong&gt;&lt;/font&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;Configuration in SharePoint Designer&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh6.ggpht.com/_J6SMSGCmItU/SXS-BTcUf6I/AAAAAAAAA4c/FH0t0kklDRw/s1600-h/image%5B3%5D.png"&gt;&lt;img title="image" style="border-right: 0px; border-top: 0px; display: inline; border-left: 0px; border-bottom: 0px" height="34" alt="image" src="http://lh4.ggpht.com/_J6SMSGCmItU/SXS-CJiPA9I/AAAAAAAAA4g/NUeQIUiqezk/image_thumb%5B1%5D.png?imgmax=800" width="454" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;strong&gt;Provider&lt;/strong&gt;: The .NET ADO Provider. Default is MS SQL Server (System.Data.SqlClient). You can use other providers like ODBC, Oracle…&lt;/li&gt;    &lt;li&gt;&lt;strong&gt;Connection&lt;/strong&gt;: The connection string e.g. “Data Source=localhost\SQLExpress;Initial Catalog=test;Integrated Security=SSPI” &lt;/li&gt;    &lt;li&gt;&lt;strong&gt;SQL&lt;/strong&gt;: The SQL statement you want to execute. You can use Lookups to parameterize the statement. You can also use stored procedures e.g. “EXEC [test_Proc] @var1=N’test’ ”&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;a href="http://lh4.ggpht.com/_J6SMSGCmItU/SXS-C7GkGQI/AAAAAAAAA4k/P3w_kXUlMfs/s1600-h/image%5B7%5D.png"&gt;&lt;img title="image" style="border-right: 0px; border-top: 0px; display: inline; border-left: 0px; border-bottom: 0px" height="337" alt="image" src="http://lh5.ggpht.com/_J6SMSGCmItU/SXS-DnYOHII/AAAAAAAAA4o/02ED2nMXdoQ/image_thumb%5B3%5D.png?imgmax=800" width="404" border="0" /&gt;&lt;/a&gt;&amp;#160;&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;strong&gt;Result&lt;/strong&gt;: The variable where you want to store the first column of the first row of the result from the SQL statement. Actual the result variable is mandatory. If you don’t need it you have to use dummy variable.&lt;/li&gt; &lt;/ul&gt;  &lt;blockquote&gt;   &lt;p&gt;NOTE: The action runs under the user account of the application pool&lt;/p&gt;&lt;/blockquote&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3766174345251248841-5409687405291265241?l=www.ilovesharepoint.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.ilovesharepoint.com/feeds/5409687405291265241/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3766174345251248841&amp;postID=5409687405291265241' title='30 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3766174345251248841/posts/default/5409687405291265241'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3766174345251248841/posts/default/5409687405291265241'/><link rel='alternate' type='text/html' href='http://www.ilovesharepoint.com/2009/01/ilsp-sharepoint-designer-execute-sql.html' title='iLSP - SharePoint Designer “Execute SQL” Action'/><author><name>Christian</name><uri>http://www.blogger.com/profile/16986066591633364914</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='22' height='32' src='http://bp1.blogger.com/_J6SMSGCmItU/SGAIxRt-lLI/AAAAAAAAABo/EqgbBGe38FM/S220/DSC_0314_small.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh4.ggpht.com/_J6SMSGCmItU/SXS-CJiPA9I/AAAAAAAAA4g/NUeQIUiqezk/s72-c/image_thumb%5B1%5D.png?imgmax=800' height='72' width='72'/><thr:total>30</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3766174345251248841.post-155432286246474390</id><published>2009-01-19T17:00:00.001+01:00</published><updated>2011-03-20T21:28:02.247+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SharePoint Designer Actions'/><category scheme='http://www.blogger.com/atom/ns#' term='SharePoint Designer'/><category scheme='http://www.blogger.com/atom/ns#' term='SharePoint'/><category scheme='http://www.blogger.com/atom/ns#' term='CodePlex'/><category scheme='http://www.blogger.com/atom/ns#' term='WF'/><title type='text'>iLSP - SharePoint Designer “Create Site” Action</title><content type='html'>&lt;p&gt;With the “Create a site” action you can create SharePoint sites from within SharePoint Designer workflows.&lt;/p&gt;  &lt;p&gt;The action is included in my &lt;a href="http://www.codeplex.com/iLoveSharePoint/Release/ProjectReleases.aspx?ReleaseId=20898"&gt;SharePoint Designer Actions 1.0&lt;/a&gt; release on CodePlex. Source code is available.&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;font color="#333333" size="2"&gt;Short Documentation&lt;/font&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;Configuration in SharePoint Designer&lt;a href="http://lh5.ggpht.com/_J6SMSGCmItU/SXSjmgPaa2I/AAAAAAAAA4U/yk2kYCG5hvw/s1600-h/image%5B5%5D.png"&gt;&lt;img title="image" style="border-right: 0px; border-top: 0px; display: inline; border-left: 0px; border-bottom: 0px" height="26" alt="image" src="http://lh6.ggpht.com/_J6SMSGCmItU/SXSjnAJ1eII/AAAAAAAAA4Y/8UoQaAlU5pg/image_thumb%5B3%5D.png?imgmax=800" width="454" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;strong&gt;URL&lt;/strong&gt;: The site relative url of the new site e.g. current site: &lt;a href="http://localhost/websites/parent"&gt;http://localhost/websites/parent&lt;/a&gt;, URL: ”Child1” = &lt;a href="http://localhost/websites/parent/Child1"&gt;http://localhost/websites/parent/Child1&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;strong&gt;Title&lt;/strong&gt;: Title of the new site&lt;/li&gt;    &lt;li&gt;&lt;strong&gt;Description&lt;/strong&gt;: Description of the new site&lt;/li&gt;    &lt;li&gt;Template: The filename of the template to use e.g. “MyTemplate.stp”&lt;/li&gt;    &lt;li&gt;&lt;strong&gt;Inherit Permissions&lt;/strong&gt;: Inherit the permission from parent site (yes/no)&lt;/li&gt;    &lt;li&gt;&lt;strong&gt;Result&lt;/strong&gt;: The absolute Url of the new site e.g. &lt;a href="http://localhost/websites/parent/Child1"&gt;http://localhost/websites/parent/Child1&lt;/a&gt;&lt;/li&gt; &lt;/ul&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;em&gt;Note: The activity creates the site while execution. From a WF design point of view, it would be preferable to do heavy work in a Work Batch.&amp;#160; Maybe I show this in another post…&lt;/em&gt;&lt;/p&gt;&lt;/blockquote&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3766174345251248841-155432286246474390?l=www.ilovesharepoint.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.ilovesharepoint.com/feeds/155432286246474390/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3766174345251248841&amp;postID=155432286246474390' title='23 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3766174345251248841/posts/default/155432286246474390'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3766174345251248841/posts/default/155432286246474390'/><link rel='alternate' type='text/html' href='http://www.ilovesharepoint.com/2009/01/ilsp-sharepoint-designer-create-site.html' title='iLSP - SharePoint Designer “Create Site” Action'/><author><name>Christian</name><uri>http://www.blogger.com/profile/16986066591633364914</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='22' height='32' src='http://bp1.blogger.com/_J6SMSGCmItU/SGAIxRt-lLI/AAAAAAAAABo/EqgbBGe38FM/S220/DSC_0314_small.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh6.ggpht.com/_J6SMSGCmItU/SXSjnAJ1eII/AAAAAAAAA4Y/8UoQaAlU5pg/s72-c/image_thumb%5B3%5D.png?imgmax=800' height='72' width='72'/><thr:total>23</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3766174345251248841.post-655908140868141197</id><published>2009-01-19T12:08:00.001+01:00</published><updated>2009-01-25T22:34:14.002+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SharePoint'/><category scheme='http://www.blogger.com/atom/ns#' term='PowerShell'/><title type='text'>My Sessions on BASTA! Spring 2009</title><content type='html'>&lt;p&gt;On the &lt;a href="http://it-republik.de/dotnet/basta/sessions/?tid=1114" target="_blank"&gt;SharePoint Days&lt;/a&gt; (Germany) at 25th February 2009 I’ll have two sessions:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;strong&gt;Mega Merger (SharePoint &amp;amp; PowerShell)&lt;/strong&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;strong&gt;Nintex Workflow 2007 &lt;/strong&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;&lt;font color="#333333" size="2"&gt;Would be glad to see you…&lt;/font&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3766174345251248841-655908140868141197?l=www.ilovesharepoint.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.ilovesharepoint.com/feeds/655908140868141197/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3766174345251248841&amp;postID=655908140868141197' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3766174345251248841/posts/default/655908140868141197'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3766174345251248841/posts/default/655908140868141197'/><link rel='alternate' type='text/html' href='http://www.ilovesharepoint.com/2009/01/my-sessions-on-basta-spring-2009.html' title='My Sessions on BASTA! Spring 2009'/><author><name>Christian</name><uri>http://www.blogger.com/profile/16986066591633364914</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='22' height='32' src='http://bp1.blogger.com/_J6SMSGCmItU/SGAIxRt-lLI/AAAAAAAAABo/EqgbBGe38FM/S220/DSC_0314_small.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3766174345251248841.post-2178076546120541192</id><published>2009-01-18T22:12:00.001+01:00</published><updated>2011-03-20T21:28:02.250+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SharePoint Designer Actions'/><category scheme='http://www.blogger.com/atom/ns#' term='SharePoint Designer'/><category scheme='http://www.blogger.com/atom/ns#' term='SharePoint'/><category scheme='http://www.blogger.com/atom/ns#' term='CodePlex'/><title type='text'>iLSP - SharePoint Designer “Get Parent Folder” Action</title><content type='html'>&lt;p&gt;This action can be used to get the list item id of the parent folder of an item. After you got the id of the folder you can use it with any other SPD action. &lt;/p&gt;  &lt;p&gt;The action is included in my &lt;a href="http://www.codeplex.com/iLoveSharePoint/Release/ProjectReleases.aspx?ReleaseId=20898" target="_blank"&gt;SharePoint Designer Actions 1.0&lt;/a&gt; release on CodePlex. Source code is available.&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;Example scenario: Approver Folder Inheritance&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;You need a document based SharePoint Designer approval workflow with different approvers and permissions depending on the department of the document. But you don’t want to assign the approvers and permissions for each document individually! To inherit the permissions you would create for each department a folder and assign the permissions to it. Also you want to assign the approvers to the folder, because all documents within have the same approvers. But how you can get the approvers from the folder in the workflow? This is where the “Get Parent Folder” action comes in.&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;Step by Step&lt;/p&gt; &lt;/blockquote&gt;  &lt;ul&gt;   &lt;li&gt;Create a site column named “Approvers” type of “Person or Group”, allow multiple selection. &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;a href="http://lh6.ggpht.com/_J6SMSGCmItU/SXOav8133fI/AAAAAAAAA2s/gXw5i9OZrDc/s1600-h/image%5B119%5D.png"&gt;&lt;img title="image" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="304" alt="image" src="http://lh3.ggpht.com/_J6SMSGCmItU/SXOaxmCNrYI/AAAAAAAAA2w/aolm00LuvQ0/image_thumb%5B77%5D.png?imgmax=800" width="404" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Create a site content type named “Approval Folder”, as parent content type choose “Folder” &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;a href="http://lh4.ggpht.com/_J6SMSGCmItU/SXOaycs7IWI/AAAAAAAAA1E/54K-Km8aSow/s1600-h/image%5B2%5D.png"&gt;&lt;img title="image" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="244" alt="image" src="http://lh3.ggpht.com/_J6SMSGCmItU/SXOazkZFEjI/AAAAAAAAA1I/1BbgLRFkSS4/image_thumb.png?imgmax=800" width="237" border="0" /&gt;&lt;/a&gt;&amp;#160;&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Add the previous created site column to the just created content type &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;a href="http://lh5.ggpht.com/_J6SMSGCmItU/SXOa0kcDXKI/AAAAAAAAA1M/_ZIRBVKbzgQ/s1600-h/image%5B20%5D.png"&gt;&lt;img title="image" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="166" alt="image" src="http://lh5.ggpht.com/_J6SMSGCmItU/SXOa1nmfHYI/AAAAAAAAA1Q/HVPEE-CozBQ/image_thumb%5B8%5D.png?imgmax=800" width="408" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Create a Document Library named “Approval Documents” and allow content types (Advanced Settings) &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;a href="http://lh3.ggpht.com/_J6SMSGCmItU/SXOa2_iclSI/AAAAAAAAA4E/Ja6BFwZlB88/s1600-h/image112.png"&gt;&lt;img title="image" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="136" alt="image" src="http://lh5.ggpht.com/_J6SMSGCmItU/SXOa3wXS3qI/AAAAAAAAA4I/Aj2WfQxPlCQ/image_thumb70.png?imgmax=800" width="404" border="0" /&gt;&lt;/a&gt;&amp;#160;&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Add the previous created site column to the just created content type &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;a href="http://lh5.ggpht.com/_J6SMSGCmItU/SXOa0kcDXKI/AAAAAAAAA1M/_ZIRBVKbzgQ/s1600-h/image%5B20%5D.png"&gt;&lt;img title="image" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="166" alt="image" src="http://lh5.ggpht.com/_J6SMSGCmItU/SXOa1nmfHYI/AAAAAAAAA1Q/HVPEE-CozBQ/image_thumb%5B8%5D.png?imgmax=800" width="408" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Create a Document Library named “Approval Documents” &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;a href="http://lh3.ggpht.com/_J6SMSGCmItU/SXOa2_iclSI/AAAAAAAAA4M/XXi0_rv3OcY/s1600-h/image113.png"&gt;&lt;img title="image" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="131" alt="image" src="http://lh5.ggpht.com/_J6SMSGCmItU/SXOa3wXS3qI/AAAAAAAAA4Q/gBPLhgnyW3M/image_thumb71.png?imgmax=800" width="404" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;In the “Advanced Settings”&amp;#160; allow content types &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;a href="http://lh4.ggpht.com/_J6SMSGCmItU/SXOa6o--K1I/AAAAAAAAA1k/P7xO_nY5rpY/s1600-h/image%5B114%5D.png"&gt;&lt;img title="image" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="134" alt="image" src="http://lh6.ggpht.com/_J6SMSGCmItU/SXOa8h54s-I/AAAAAAAAA1o/uWrs1LMkjcw/image_thumb%5B72%5D.png?imgmax=800" width="404" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Add our “Approval Folder” content type to the document library &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;a href="http://lh6.ggpht.com/_J6SMSGCmItU/SXOa83bH92I/AAAAAAAAA1s/rS4fGqt1sLQ/s1600-h/image%5B115%5D.png"&gt;&lt;img title="image" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="177" alt="image" src="http://lh3.ggpht.com/_J6SMSGCmItU/SXOa9kjJpvI/AAAAAAAAA1w/eAFIVH2lx1A/image_thumb%5B73%5D.png?imgmax=800" width="404" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Create a new “Approval Folder” named “Development” and assign the approvers (in this example myself and the administrator) &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;a href="http://lh3.ggpht.com/_J6SMSGCmItU/SXOa-Ijn25I/AAAAAAAAA10/t1j4yiONyl4/s1600-h/image%5B56%5D.png"&gt;&lt;img title="image" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="189" alt="image" src="http://lh4.ggpht.com/_J6SMSGCmItU/SXOa-gSKzmI/AAAAAAAAA14/UhzlYALPxrw/image_thumb%5B32%5D.png?imgmax=800" width="376" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;At this point we could start with the SharePoint Designer Workflow. To simplify the scenario I don’t set the approval status and simply create a to do item for the approvers.&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Create a new Workflow named “Approver Folder Inheritance” &lt;/li&gt;    &lt;li&gt;Add the “Get parent folder” action from the category “iLove SharePoint” &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;a href="http://lh5.ggpht.com/_J6SMSGCmItU/SXOa_lDvARI/AAAAAAAAA18/BfP7ExkGGhw/s1600-h/image%5B68%5D.png"&gt;&lt;img title="image" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="282" alt="image" src="http://lh4.ggpht.com/_J6SMSGCmItU/SXObAyC5d9I/AAAAAAAAA2A/6ydJeOgWjOs/image_thumb%5B42%5D.png?imgmax=800" width="404" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;For “this list” choose current item &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;a href="http://lh6.ggpht.com/_J6SMSGCmItU/SXObBlV4AnI/AAAAAAAAA2E/Y5pjltSJMtg/s1600-h/image%5B116%5D.png"&gt;&lt;img title="image" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="148" alt="image" src="http://lh4.ggpht.com/_J6SMSGCmItU/SXObCIs8QrI/AAAAAAAAA2I/M4b64IziHFY/image_thumb%5B74%5D.png?imgmax=800" width="404" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;To store the “Result” create a new workflow variable type of “List Item ID” &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;a href="http://lh5.ggpht.com/_J6SMSGCmItU/SXObCi5PWcI/AAAAAAAAA2M/vDKX0TTNZys/s1600-h/image%5B117%5D.png"&gt;&lt;img title="image" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="245" alt="image" src="http://lh3.ggpht.com/_J6SMSGCmItU/SXObDik1f6I/AAAAAAAAA2Q/x6jX8Yr_Xmc/image_thumb%5B75%5D.png?imgmax=800" width="404" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Now we have the list item id of the folder. To get approvers add a “Build Dynamic String” action.      &lt;ul&gt;       &lt;li&gt;Click on “dynamic string” choose “Lookup Value” in the editor. In the lookup details choose as source “Approval Documents” and for field “Approvers”. To select the folder item choose ID as field. To choose the value click on “fx”, select “Workflow Data” and “folderId” as variable. &lt;/li&gt;     &lt;/ul&gt;   &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;a href="http://lh4.ggpht.com/_J6SMSGCmItU/SXObFSlvNPI/AAAAAAAAA3U/rwwA4YgANyk/s1600-h/image%5B121%5D.png"&gt;&lt;img title="image" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="368" alt="image" src="http://lh6.ggpht.com/_J6SMSGCmItU/SXObGhNU_JI/AAAAAAAAA3Y/2uiAXLY91TQ/image_thumb%5B79%5D.png?imgmax=800" width="404" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;ul&gt;   &lt;ul&gt;     &lt;li&gt;Store the dynamic string in a new Workflow Variable named “approvers” and type of “Text” &lt;/li&gt;      &lt;li&gt;Next, add an “Assign a To-Do Item” action. Name the to-do item task “Approval Task”. In the people picker double click on “Workflow-Lookup”, choose “Workflow Data” and the “approvers” variable. &lt;/li&gt;   &lt;/ul&gt; &lt;/ul&gt;  &lt;p&gt;&lt;a href="http://lh3.ggpht.com/_J6SMSGCmItU/SXObHsmNuMI/AAAAAAAAA3c/eFvmw5XmDHE/s1600-h/image%5B122%5D.png"&gt;&lt;img title="image" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="228" alt="image" src="http://lh3.ggpht.com/_J6SMSGCmItU/SXObI9Gc8qI/AAAAAAAAA3g/AS45mkfaun4/image_thumb%5B80%5D.png?imgmax=800" width="404" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Now we can save and test the workflow. Upload any document into the “Development” folder and start the workflow. The workflow creates tasks for the approvers we have assigned to the Development folder. &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;a href="http://lh6.ggpht.com/_J6SMSGCmItU/SXObLUNtNOI/AAAAAAAAA2k/ue2kVtoKnsg/s1600-h/image%5B118%5D.png"&gt;&lt;img title="image" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="312" alt="image" src="http://lh4.ggpht.com/_J6SMSGCmItU/SXObL_-R9DI/AAAAAAAAA2o/Ue1r83dvQyE/image_thumb%5B76%5D.png?imgmax=800" width="404" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;That’s it.&lt;/li&gt; &lt;/ul&gt;  &lt;blockquote&gt;   &lt;p&gt;By the way: I don’t like SharePoint Designer Workflows , I prefer &lt;a href="http://www.dataone.de/en/solutions/portals/Seiten/NintexWorkflow2007.aspx" target="_blank"&gt;Nintex Workflow&lt;/a&gt;!&lt;/p&gt;&lt;/blockquote&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3766174345251248841-2178076546120541192?l=www.ilovesharepoint.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.ilovesharepoint.com/feeds/2178076546120541192/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3766174345251248841&amp;postID=2178076546120541192' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3766174345251248841/posts/default/2178076546120541192'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3766174345251248841/posts/default/2178076546120541192'/><link rel='alternate' type='text/html' href='http://www.ilovesharepoint.com/2009/01/ilsp-sharepoint-designer-get-parent.html' title='iLSP - SharePoint Designer “Get Parent Folder” Action'/><author><name>Christian</name><uri>http://www.blogger.com/profile/16986066591633364914</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='22' height='32' src='http://bp1.blogger.com/_J6SMSGCmItU/SGAIxRt-lLI/AAAAAAAAABo/EqgbBGe38FM/S220/DSC_0314_small.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh3.ggpht.com/_J6SMSGCmItU/SXOaxmCNrYI/AAAAAAAAA2w/aolm00LuvQ0/s72-c/image_thumb%5B77%5D.png?imgmax=800' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3766174345251248841.post-6571379315142422186</id><published>2009-01-13T14:05:00.001+01:00</published><updated>2009-01-25T22:46:56.856+01:00</updated><title type='text'>Just Born: Lilly May Glessner</title><content type='html'>&lt;p&gt;After a long and drawn out wait, Jenny and I are proud to announce the birth of our wonderful daughter! Lilly May was born at 6th of January 2009, at 21:52pm weighing in at 3,040kg and 52cm in length.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh3.ggpht.com/_J6SMSGCmItU/SWyRiKKOIfI/AAAAAAAAA00/56IYLPw7qFQ/s1600-h/lilly-may%5B6%5D.jpg"&gt;&lt;img title="lilly-may" style="border-right: 0px; border-top: 0px; display: inline; border-left: 0px; border-bottom: 0px" height="366" alt="lilly-may" src="http://lh4.ggpht.com/_J6SMSGCmItU/SWyRi4gobWI/AAAAAAAAA04/I_dDT41nlo0/lilly-may_thumb%5B4%5D.jpg?imgmax=800" width="515" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3766174345251248841-6571379315142422186?l=www.ilovesharepoint.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.ilovesharepoint.com/feeds/6571379315142422186/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3766174345251248841&amp;postID=6571379315142422186' title='8 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3766174345251248841/posts/default/6571379315142422186'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3766174345251248841/posts/default/6571379315142422186'/><link rel='alternate' type='text/html' href='http://www.ilovesharepoint.com/2009/01/just-born-lilly-may-glessner.html' title='Just Born: Lilly May Glessner'/><author><name>Christian</name><uri>http://www.blogger.com/profile/16986066591633364914</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='22' height='32' src='http://bp1.blogger.com/_J6SMSGCmItU/SGAIxRt-lLI/AAAAAAAAABo/EqgbBGe38FM/S220/DSC_0314_small.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh4.ggpht.com/_J6SMSGCmItU/SWyRi4gobWI/AAAAAAAAA04/I_dDT41nlo0/s72-c/lilly-may_thumb%5B4%5D.jpg?imgmax=800' height='72' width='72'/><thr:total>8</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3766174345251248841.post-1921979597571724829</id><published>2008-12-23T22:47:00.004+01:00</published><updated>2011-03-20T21:26:33.220+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SharePoint Designer Actions'/><category scheme='http://www.blogger.com/atom/ns#' term='SharePoint Designer'/><category scheme='http://www.blogger.com/atom/ns#' term='SharePoint'/><category scheme='http://www.blogger.com/atom/ns#' term='WF'/><title type='text'>iLSP - SharePoint Designer “Call a Web Service” Action</title><content type='html'>&lt;blockquote&gt;   &lt;p&gt;“iLSP” – is the abbreviation for &lt;a href="http://codeplex.com/iLoveSharePoint" target="_blank"&gt;iLove SharePoint&lt;/a&gt;.&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;The “Call a WebService” workflow action is included in the &lt;a href="http://www.codeplex.com/iLoveSharePoint/Release/ProjectReleases.aspx?ReleaseId=20898" target="_blank"&gt;iLSP -SharePoint Designer Actions 1.0&lt;/a&gt; release. Installation see readme.txt.&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;The action supports SOAP 1.1, SOAP 1.2, basic and windows authentication.&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;Let’s go and call a built-in SharePoint web service – Lists.asmx and create a new List with the &lt;a href="http://msdn.microsoft.com/en-us/library/lists.lists.addlist.aspx" target="_blank"&gt;AddList&lt;/a&gt; operation.&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Bring up SharePoint Designer and create a new workflow on an list with a “Title” and “Response” (Multiple lines of text – plain text) column. &lt;/li&gt;    &lt;li&gt;Add the “Call a Web Service” action from the “iLove SharePoint” category &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;a href="http://lh3.ggpht.com/_J6SMSGCmItU/SVFcZaRsyvI/AAAAAAAAArI/tuu7nFcpKWo/s1600-h/image%5B4%5D.png"&gt;&lt;img title="image" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="353" alt="image" src="http://lh3.ggpht.com/_J6SMSGCmItU/SVFcZ2Da_vI/AAAAAAAAArM/ZYGyQ10e4k0/image_thumb%5B2%5D.png?imgmax=800" width="434" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Configure the action as follows:      &lt;ul&gt;       &lt;li&gt;&lt;strong&gt;URL&lt;/strong&gt;: http://[siteurl]/_vti_bin/Lists.asmx &lt;/li&gt;        &lt;li&gt;&lt;strong&gt;SOAP Version:&lt;/strong&gt; SOAP 1.2 &lt;/li&gt;        &lt;li&gt;&lt;strong&gt;SOAPAction:&lt;/strong&gt; &lt;em&gt;not needed for SOAP 1.2&lt;/em&gt; &lt;/li&gt;        &lt;li&gt;&lt;strong&gt;Envelope: &lt;/strong&gt;&lt;/li&gt;     &lt;/ul&gt;   &lt;/li&gt; &lt;/ul&gt;  &lt;p style="background-color: #dddddd"&gt;&amp;lt;soap12:Envelope xmlns:xsi=&amp;quot;http://www.w3.org/2001/XMLSchema-instance&amp;quot; xmlns:xsd=&amp;quot;http://www.w3.org/2001/XMLSchema&amp;quot; xmlns:soap12=&amp;quot;http://www.w3.org/2003/05/soap-envelope&amp;quot;&amp;gt;   &lt;br /&gt;&amp;lt;soap12:Body&amp;gt;    &lt;br /&gt;&amp;lt;AddList xmlns=&amp;quot;http://schemas.microsoft.com/sharepoint/soap/&amp;quot;&amp;gt;    &lt;br /&gt;&amp;lt;listName&lt;strong&gt;&amp;gt;[%MyList:Title%]&lt;/strong&gt;&amp;lt;/listName&amp;gt;    &lt;br /&gt;&amp;lt;description&amp;gt;&lt;strong&gt;Created by iLSP action&lt;/strong&gt;&amp;lt;/description&amp;gt;    &lt;br /&gt;&amp;lt;templateID&amp;gt;&lt;strong&gt;100&lt;/strong&gt;&amp;lt;/templateID&amp;gt;    &lt;br /&gt;&amp;lt;/AddList&amp;gt;    &lt;br /&gt;&amp;lt;/soap12:Body&amp;gt;    &lt;br /&gt;&amp;lt;/soap12:Envelope&amp;gt;&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;em&gt;&lt;span style="font-size: 85%; color: #333333"&gt;You can copy the SOAP 1.2 example request from &lt;a href="http://[siteurl]/_vti_bin/Lists.asmx?op=AddList"&gt;http://[siteurl]/_vti_bin/Lists.asmx?op=AddList&lt;/a&gt;&lt;/span&gt;&lt;/em&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;&lt;em&gt;&lt;/em&gt;&lt;/p&gt;  &lt;ul&gt;   &lt;ul&gt;     &lt;ul&gt;       &lt;li&gt;For the &lt;strong&gt;&amp;lt;listName&amp;gt;&lt;/strong&gt; insert a reference to the current item’s title.&lt;/li&gt;     &lt;/ul&gt;   &lt;/ul&gt; &lt;/ul&gt;  &lt;p&gt;&lt;a href="http://lh3.ggpht.com/_J6SMSGCmItU/SVFcaeW4eaI/AAAAAAAAArQ/MBO5BLX-j7k/s1600-h/image%5B9%5D.png"&gt;&lt;img title="image" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="309" alt="image" src="http://lh5.ggpht.com/_J6SMSGCmItU/SVFca8o8juI/AAAAAAAAArU/ww-gbE62rzg/image_thumb%5B5%5D.png?imgmax=800" width="429" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;ul&gt;   &lt;ul&gt;     &lt;ul&gt;       &lt;li&gt;As &lt;strong&gt;&amp;lt;description&amp;gt;&lt;/strong&gt; enter “&lt;strong&gt;&lt;em&gt;Created by iLSP action&lt;/em&gt;”&lt;/strong&gt;&lt;/li&gt;        &lt;li&gt;Set the &lt;strong&gt;&amp;lt;templateID&amp;gt; &lt;/strong&gt;to&lt;strong&gt; &lt;/strong&gt;“&lt;strong&gt;100&lt;/strong&gt;” = custom list&lt;/li&gt;     &lt;/ul&gt;   &lt;/ul&gt; &lt;/ul&gt;  &lt;p&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;strong&gt;Response: &lt;/strong&gt;create a new string workflow variable named “&lt;strong&gt;response&lt;/strong&gt;” and assign it. The action will fill the variable with the response from web service call (xml string).&lt;/li&gt;    &lt;li&gt;&lt;strong&gt;User: &lt;/strong&gt;leave empty. Empty user = use default credentials.&lt;/li&gt;    &lt;li&gt;&lt;strong&gt;Password: &lt;/strong&gt;leave empty&lt;/li&gt; &lt;/ul&gt;  &lt;blockquote&gt;   &lt;p&gt;Now the “Call a WebService” action is configured. &lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;To check the response, we will write it in the “Response” column of the item using the built-in “Set field in current item” action. Set field to “Response” and “Value” to the above defined workflow variable “response”&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh4.ggpht.com/_J6SMSGCmItU/SVFcbJSKWKI/AAAAAAAAArY/oGOWvY5RRH0/s1600-h/image%5B20%5D.png"&gt;&lt;img title="image" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="39" alt="image" src="http://lh4.ggpht.com/_J6SMSGCmItU/SVFcbjUQxFI/AAAAAAAAArc/4eEMnffFGps/image_thumb%5B12%5D.png?imgmax=800" width="424" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;strong&gt;Try it – Start the workflow on an item&lt;/strong&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;The response:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh5.ggpht.com/_J6SMSGCmItU/SVFccD1PmXI/AAAAAAAAArg/ZK1mk3yjHjU/s1600-h/image%5B24%5D.png"&gt;&lt;img title="image" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="112" alt="image" src="http://lh3.ggpht.com/_J6SMSGCmItU/SVFcc3DW-vI/AAAAAAAAArk/L8XiszhrDlI/image_thumb%5B14%5D.png?imgmax=800" width="434" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;The new list:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh5.ggpht.com/_J6SMSGCmItU/SVFcdJbjnbI/AAAAAAAAAro/PgTluyA2qSM/s1600-h/image%5B28%5D.png"&gt;&lt;img title="image" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="76" alt="image" src="http://lh5.ggpht.com/_J6SMSGCmItU/SVFcdmkhIJI/AAAAAAAAArs/GkZW39yldC4/image_thumb%5B16%5D.png?imgmax=800" width="434" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;Because the raw response isn’t very useful, we now parse it using iLSP “&lt;strong&gt;Query XML&lt;/strong&gt;” action. Place the action between the “Call a WebService” and the “Set field in current item” action.&lt;/p&gt; &lt;/blockquote&gt;  &lt;ul&gt;   &lt;li&gt;Add the “Query XML” action to the workflow&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;a href="http://lh6.ggpht.com/_J6SMSGCmItU/SVFceLOsa7I/AAAAAAAAArw/J8PtsTcUqPg/s1600-h/image%5B32%5D.png"&gt;&lt;img title="image" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="287" alt="image" src="http://lh5.ggpht.com/_J6SMSGCmItU/SVFcexYUqAI/AAAAAAAAAr0/bDVUZ-OBUSI/image_thumb%5B18%5D.png?imgmax=800" width="434" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Configure the “Query XML” action     &lt;ul&gt;       &lt;li&gt;&lt;strong&gt;Input:&lt;/strong&gt; choose the above defined workflow variable “&lt;strong&gt;response&lt;/strong&gt;”&lt;/li&gt;        &lt;li&gt;&lt;strong&gt;XPath: &lt;/strong&gt;“&lt;strong&gt;//*[local-name()='List']/@ID&lt;/strong&gt;”          &lt;ul&gt;           &lt;li&gt;You can use any valid XPath expression e.g. count(//*). Is the expression result is a single node it will write the node’s inner XML to the result variable. Is the result a node collection, it will merge all the node’s inner XML separated by an semicolon into the result variable. You should identify the node by the local name, because you can’t use xml namespaces. &lt;/li&gt;         &lt;/ul&gt;       &lt;/li&gt;        &lt;li&gt;&lt;strong&gt;Result:&lt;/strong&gt; Create a new string workflow variable named “&lt;strong&gt;ListID&lt;/strong&gt;” and assign it.&lt;/li&gt;     &lt;/ul&gt;   &lt;/li&gt; &lt;/ul&gt;  &lt;blockquote&gt;   &lt;p&gt;The “Query XML” action is now configured&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;Now modify the “Set field in current item” action so that the response column is set to the ListID variable.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh5.ggpht.com/_J6SMSGCmItU/SVFcfX3mVNI/AAAAAAAAAr4/PGaWP_wgvSY/s1600-h/image%5B40%5D.png"&gt;&lt;img title="image" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="61" alt="image" src="http://lh6.ggpht.com/_J6SMSGCmItU/SVFcf7FRCzI/AAAAAAAAAr8/3qLWymjCXoM/image_thumb%5B22%5D.png?imgmax=800" width="434" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;Start the workflow again&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;Result:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh4.ggpht.com/_J6SMSGCmItU/SVFcgYG9qAI/AAAAAAAAAsA/gP6LqPIkijo/s1600-h/image%5B44%5D.png"&gt;&lt;img title="image" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="101" alt="image" src="http://lh4.ggpht.com/_J6SMSGCmItU/SVFcgyJ_m2I/AAAAAAAAAsE/c3wr7T_qZdU/image_thumb%5B24%5D.png?imgmax=800" width="434" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;blockquote&gt;   &lt;h3&gt;THE END&lt;/h3&gt;&lt;/blockquote&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3766174345251248841-1921979597571724829?l=www.ilovesharepoint.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.ilovesharepoint.com/feeds/1921979597571724829/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3766174345251248841&amp;postID=1921979597571724829' title='21 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3766174345251248841/posts/default/1921979597571724829'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3766174345251248841/posts/default/1921979597571724829'/><link rel='alternate' type='text/html' href='http://www.ilovesharepoint.com/2008/12/ilsp-sharepoint-designer-call-web.html' title='iLSP - SharePoint Designer “Call a Web Service” Action'/><author><name>Christian</name><uri>http://www.blogger.com/profile/16986066591633364914</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='22' height='32' src='http://bp1.blogger.com/_J6SMSGCmItU/SGAIxRt-lLI/AAAAAAAAABo/EqgbBGe38FM/S220/DSC_0314_small.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh3.ggpht.com/_J6SMSGCmItU/SVFcZ2Da_vI/AAAAAAAAArM/ZYGyQ10e4k0/s72-c/image_thumb%5B2%5D.png?imgmax=800' height='72' width='72'/><thr:total>21</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3766174345251248841.post-7219320410960935096</id><published>2008-12-23T14:20:00.003+01:00</published><updated>2011-03-20T21:28:02.252+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='.NET'/><category scheme='http://www.blogger.com/atom/ns#' term='SharePoint Designer'/><category scheme='http://www.blogger.com/atom/ns#' term='SharePoint'/><category scheme='http://www.blogger.com/atom/ns#' term='CodePlex'/><category scheme='http://www.blogger.com/atom/ns#' term='WF'/><title type='text'>iLove SharePoint – SharePoint Designer Actions 1.0</title><content type='html'>&lt;p&gt;I’ve just uploaded some &lt;a href="http://www.codeplex.com/iLoveSharePoint/Release/ProjectReleases.aspx?ReleaseId=20898" target="_blank"&gt;SharePoint Designer Actions&lt;/a&gt; (beta) to my CodePlex project &lt;a href="http://codeplex.com/iLoveSharePoint" target="_blank"&gt;iLove SharePoint&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Included Actions&lt;/strong&gt; &lt;/p&gt;&lt;ul&gt;&lt;li&gt;Call a WebService (supports SOAP 1.1 and SOAP 1.2) &lt;/li&gt;&lt;li&gt;Query XML &lt;/li&gt;&lt;li&gt;Execute SQL (supports ADO Provider Model, returns a scalar value) &lt;/li&gt;&lt;li&gt;Get parent folder (returns the ID of the folder) &lt;/li&gt;&lt;li&gt;Create a site &lt;/li&gt;&lt;li&gt;Start workflow &lt;/li&gt;&lt;li&gt;Set role inheritance of an item &lt;/li&gt;&lt;li&gt;Clear role assignments of an item &lt;/li&gt;&lt;li&gt;Assign role to an item &lt;/li&gt;&lt;/ul&gt;&lt;p&gt;...other useful Actions can be found under: &lt;a href="http://www.codeplex.com/SPDActivities"&gt;http://www.codeplex.com/SPDActivities&lt;/a&gt;&lt;/p&gt;&lt;p&gt;At the moment the actions aren't well tested. Any feedback would be appreciated.&lt;br /&gt;I'm going to write some blog posts how to use them soon...&lt;/p&gt;&lt;p&gt;Bye, Christian&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3766174345251248841-7219320410960935096?l=www.ilovesharepoint.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.ilovesharepoint.com/feeds/7219320410960935096/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3766174345251248841&amp;postID=7219320410960935096' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3766174345251248841/posts/default/7219320410960935096'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3766174345251248841/posts/default/7219320410960935096'/><link rel='alternate' type='text/html' href='http://www.ilovesharepoint.com/2008/12/ilove-sharepoint-sharepoint-designer.html' title='iLove SharePoint – SharePoint Designer Actions 1.0'/><author><name>Christian</name><uri>http://www.blogger.com/profile/16986066591633364914</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='22' height='32' src='http://bp1.blogger.com/_J6SMSGCmItU/SGAIxRt-lLI/AAAAAAAAABo/EqgbBGe38FM/S220/DSC_0314_small.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3766174345251248841.post-1093998996690803295</id><published>2008-12-22T15:38:00.001+01:00</published><updated>2009-01-25T22:34:43.661+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='PowerShell'/><category scheme='http://www.blogger.com/atom/ns#' term='WCF'/><title type='text'>Call WCF Services With PowerShell</title><content type='html'>&lt;div&gt;Call WCF Services with PowerShell using any binding. Generates proxies on the fly without any tool expect .NET 3.5. You can also discover the service endpoints, bindings and contracts.&lt;/div&gt;  &lt;ul&gt;   &lt;li&gt;&lt;strong&gt;The PS2WCF script&lt;/strong&gt; &lt;/li&gt; &lt;/ul&gt;  &lt;div&gt;&lt;script type="text/javascript" src="http://PoshCode.org/embed/747"&gt;&lt;/script&gt;&lt;/div&gt;  &lt;div&gt;&amp;#160;&lt;/div&gt;  &lt;div&gt;&lt;strong&gt;&lt;u&gt;Example:&lt;/u&gt;&lt;/strong&gt;&lt;/div&gt;  &lt;div&gt;Download sample &lt;a href="http://christianglessner.de/Blog/WCF/HelloWCF.zip" target="_blank"&gt;WCF Hello Service&lt;/a&gt; project and start ConsoleShell&lt;/div&gt;  &lt;ul&gt;   &lt;li&gt;&lt;strong&gt;Meatdata discovery:&lt;/strong&gt; &lt;/li&gt; &lt;/ul&gt;  &lt;div style="background-color: #eeeeee"&gt;   &lt;p&gt;&lt;span style="color: #800080"&gt;$wsdl&lt;/span&gt;&lt;span style="color: #000000"&gt; &lt;/span&gt;&lt;span style="color: #ff0000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt; Get-WsdlImporter -wsdlUrl &lt;/span&gt;&lt;span style="color: #800000"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: #800000"&gt;net.tcp://localhost:8888/HelloService/mex&lt;/span&gt;&lt;span style="color: #800000"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: #000000"&gt; &lt;/span&gt;&lt;span style="color: #800080"&gt;$wsdl&lt;/span&gt;&lt;span style="color: #000000"&gt;.ImportAllEndpoints() | &lt;/span&gt;&lt;span style="font-weight: bold; color: #5f9ea0"&gt;format-list&lt;/span&gt;&lt;/p&gt; &lt;/div&gt;  &lt;p&gt;&lt;strong&gt;Output:&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh6.ggpht.com/_J6SMSGCmItU/SU_Fz463QuI/AAAAAAAAAqw/A-wn87Fy1qg/s1600-h/image%5B3%5D.png"&gt;&lt;img title="image" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="166" alt="image" src="http://lh4.ggpht.com/_J6SMSGCmItU/SU_F0qPChbI/AAAAAAAAAq0/y8Ht1S5RSOw/image_thumb%5B1%5D.png?imgmax=800" width="447" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Note&lt;/strong&gt;: For none mex endpoints use: &lt;span style="color: #000000"&gt;Get-WsdlImporter -wsdlUrl &lt;/span&gt;&lt;span style="color: #800000"&gt;&lt;/span&gt;&lt;span style="color: #800000"&gt;&lt;a href="http://anyurl/service.svc?wsdl"&gt;http://anyurl/service.svc?wsdl&lt;/a&gt; –httpGet $true &lt;/span&gt;&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;strong&gt;Generate the WCF proxy&lt;/strong&gt; &lt;/li&gt; &lt;/ul&gt;  &lt;div style="background-color: #eeeeee"&gt;   &lt;p&gt;&lt;span style="color: #800000"&gt;&lt;span style="color: #800080"&gt;$proxyTypes&lt;/span&gt;&lt;span style="color: #000000"&gt; &lt;/span&gt;&lt;span style="color: #ff0000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt; &lt;/span&gt;&lt;span style="color: #5f9ea0"&gt;Get-WcfProxy&lt;/span&gt;&lt;span style="color: #000000"&gt; -wsdlUrl &lt;/span&gt;&lt;span style="color: #800000"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: #800000"&gt;net.tcp://localhost:8888/HelloService/mex&lt;/span&gt;&lt;span style="color: #800000"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: #000000"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;/div&gt;  &lt;p&gt;&lt;span style="color: #800000"&gt;&lt;span style="color: #000000"&gt;or&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;div style="background-color: #eeeeee"&gt;   &lt;p&gt;&lt;span style="color: #800000"&gt;&lt;span style="color: #800080"&gt;$proxyTypes&lt;/span&gt;&lt;span style="color: #000000"&gt; &lt;/span&gt;&lt;span style="color: #ff0000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt; &lt;/span&gt;&lt;span style="color: #5f9ea0"&gt;Get-WcfProxy&lt;/span&gt;&lt;span style="color: #000000"&gt; –wsdlImporter &lt;/span&gt;&lt;span style="color: #800000"&gt;$wsdl&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p&gt;&lt;span style="color: #800000"&gt;&lt;span style="color: #800000"&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color: #800000"&gt;&lt;span style="color: #800080"&gt;$proxyTypes&lt;/span&gt;&lt;span style="color: #000000"&gt; | &lt;/span&gt;&lt;span style="font-weight: bold; color: #5f9ea0"&gt;format-table&lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;/div&gt;  &lt;p&gt;&lt;strong&gt;Output:&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh4.ggpht.com/_J6SMSGCmItU/SU_F1TbfAKI/AAAAAAAAAq4/W0KRNO0mJVM/s1600-h/image%5B24%5D.png"&gt;&lt;img title="image" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="28" alt="image" src="http://lh3.ggpht.com/_J6SMSGCmItU/SU_F2A5fDNI/AAAAAAAAAq8/p-OCLtDY38s/image_thumb%5B16%5D.png?imgmax=800" width="444" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;strong&gt;Call a service operation&lt;/strong&gt; &lt;/li&gt; &lt;/ul&gt;  &lt;div style="background-color: #eeeeee"&gt;   &lt;p&gt;&lt;span style="color: #800080"&gt;$address&lt;/span&gt;&lt;span style="color: #000000"&gt; &lt;/span&gt;&lt;span style="color: #ff0000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt; &lt;/span&gt;&lt;span style="font-weight: bold; color: #5f9ea0"&gt;New-Object&lt;/span&gt;&lt;span style="color: #000000"&gt; &lt;/span&gt;&lt;span style="color: #800000"&gt;System.ServiceModel.EndpointAddress&lt;/span&gt;&lt;span style="color: #000000"&gt;(&lt;/span&gt;&lt;span style="color: #800000"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: #800000"&gt;net.tcp://localhost:8888/HelloService/&lt;/span&gt;&lt;span style="color: #800000"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: #000000"&gt;) &lt;/span&gt;&lt;/p&gt;    &lt;p&gt;&lt;span style="color: #000000"&gt;&lt;/span&gt;&lt;span style="color: #800080"&gt;$binding&lt;/span&gt;&lt;span style="color: #000000"&gt; &lt;/span&gt;&lt;span style="color: #ff0000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt; &lt;/span&gt;&lt;span style="font-weight: bold; color: #5f9ea0"&gt;new-object&lt;/span&gt;&lt;span style="color: #000000"&gt; &lt;/span&gt;&lt;span style="color: #800000"&gt;System.ServiceModel.NetTcpBinding&lt;/span&gt;&lt;span style="color: #000000"&gt; &lt;/span&gt;&lt;span style="color: #800080"&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p&gt;&lt;span style="color: #800080"&gt;$proxy&lt;/span&gt;&lt;span style="color: #000000"&gt; &lt;/span&gt;&lt;span style="color: #ff0000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt; &lt;/span&gt;&lt;span style="font-weight: bold; color: #5f9ea0"&gt;New-Object&lt;/span&gt;&lt;span style="color: #000000"&gt; &lt;/span&gt;&lt;span style="color: #800080"&gt;$proxyTypes&lt;/span&gt;&lt;span style="color: #000000"&gt; &lt;/span&gt;&lt;span style="color: #5f9ea0; font-style: italic"&gt;-ArgumentList&lt;/span&gt;&lt;span style="color: #000000"&gt; &lt;/span&gt;&lt;span style="color: #800080"&gt;$binding&lt;/span&gt;&lt;span style="color: #000000"&gt;, &lt;/span&gt;&lt;span style="color: #800080"&gt;$address&lt;/span&gt;&lt;span style="color: #000000"&gt; &lt;/span&gt;&lt;/p&gt;    &lt;p&gt;&lt;span style="color: #000000"&gt;&lt;/span&gt;&lt;span style="color: #800080"&gt;$proxy&lt;/span&gt;&lt;span style="color: #000000"&gt;.SayHello(&lt;/span&gt;&lt;span style="color: #800000"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: #800000"&gt;Christian&lt;/span&gt;&lt;span style="color: #800000"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: #000000"&gt;)&lt;/span&gt;&lt;/p&gt; &lt;/div&gt;  &lt;p&gt;&lt;span style="color: #000000"&gt;or use bindings and addresses generated from WsdlImporter&lt;/span&gt;&lt;/p&gt;  &lt;div style="background-color: #eeeeee"&gt;   &lt;p&gt;&lt;span style="color: #000000"&gt;&lt;span style="color: #800080"&gt;$endpoints&lt;/span&gt;&lt;span style="color: #000000"&gt; &lt;/span&gt;&lt;span style="color: #ff0000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt; &lt;/span&gt;&lt;span style="color: #800080"&gt;$wsdl&lt;/span&gt;&lt;span style="color: #000000"&gt;.ImportAllEndpoints() &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p&gt;&lt;span style="color: #000000"&gt;&lt;span style="color: #000000"&gt;&lt;/span&gt;&lt;span style="color: #800080"&gt;&lt;span style="color: #800080"&gt;$proxy&lt;/span&gt;&lt;span style="color: #000000"&gt; &lt;/span&gt;&lt;span style="color: #ff0000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt; &lt;/span&gt;&lt;span style="font-weight: bold; color: #5f9ea0"&gt;New-Object&lt;/span&gt;&lt;span style="color: #000000"&gt; &lt;/span&gt;&lt;span style="color: #800080"&gt;$proxyTypes&lt;/span&gt;&lt;span style="color: #000000"&gt;(&lt;/span&gt;&lt;span style="color: #800080"&gt;$endpoints&lt;/span&gt;&lt;span style="color: #000000"&gt;[0].Binding, &lt;/span&gt;&lt;span style="color: #800080"&gt;$endpoints&lt;/span&gt;&lt;span style="color: #000000"&gt;[0].Address)&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p&gt;&lt;span style="color: #000000"&gt;&lt;span style="color: #000000"&gt;&lt;/span&gt;&lt;span style="color: #800080"&gt;$proxy&lt;/span&gt;&lt;span style="color: #000000"&gt;.SayHello(&lt;/span&gt;&lt;span style="color: #800000"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: #800000"&gt;Christian&lt;/span&gt;&lt;span style="color: #800000"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: #000000"&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;/div&gt;  &lt;p&gt;&lt;span style="color: #000000"&gt;&lt;span style="color: #000000"&gt;&lt;strong&gt;Output:&lt;/strong&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh3.ggpht.com/_J6SMSGCmItU/SU_F3Ji_HpI/AAAAAAAAArA/dKV6fS_1QCc/s1600-h/image%5B31%5D.png"&gt;&lt;img title="image" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="60" alt="image" src="http://lh3.ggpht.com/_J6SMSGCmItU/SU_F76187sI/AAAAAAAAArE/opBvqF6_bBc/image_thumb%5B21%5D.png?imgmax=800" width="434" border="0" /&gt;&lt;/a&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;By Christian Glessner&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3766174345251248841-1093998996690803295?l=www.ilovesharepoint.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.ilovesharepoint.com/feeds/1093998996690803295/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3766174345251248841&amp;postID=1093998996690803295' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3766174345251248841/posts/default/1093998996690803295'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3766174345251248841/posts/default/1093998996690803295'/><link rel='alternate' type='text/html' href='http://www.ilovesharepoint.com/2008/12/call-wcf-services-with-powershell.html' title='Call WCF Services With PowerShell'/><author><name>Christian</name><uri>http://www.blogger.com/profile/16986066591633364914</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='22' height='32' src='http://bp1.blogger.com/_J6SMSGCmItU/SGAIxRt-lLI/AAAAAAAAABo/EqgbBGe38FM/S220/DSC_0314_small.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh4.ggpht.com/_J6SMSGCmItU/SU_F0qPChbI/AAAAAAAAAq0/y8Ht1S5RSOw/s72-c/image_thumb%5B1%5D.png?imgmax=800' height='72' width='72'/><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3766174345251248841.post-3718881453649652017</id><published>2008-12-01T00:20:00.008+01:00</published><updated>2011-03-20T21:26:33.224+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SharePoint'/><category scheme='http://www.blogger.com/atom/ns#' term='PowerShell'/><category scheme='http://www.blogger.com/atom/ns#' term='Personal'/><title type='text'>SharePoint Power Event Receiver 2.0 Released!</title><content type='html'>New Features in Version 2.0:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;b&gt;Security:&lt;/b&gt; Only Farm Administrators are permitted to edit scripts &lt;/li&gt;&lt;li&gt;The scripts will be included in SharePoint site templates (*.stp)&lt;/li&gt;&lt;li&gt;New predefined functions: Get-SPSite, Get-SPWeb, Select-SPListItem &lt;/li&gt;&lt;li&gt;Supports editing in &lt;a href="http://www.blogger.com/http//powergui.org"&gt;PowerGUI&lt;/a&gt; (needs iLoveSharePoint &lt;a href="http://www.codeplex.com/iLoveSharePoint/Release/ProjectReleases.aspx?ReleaseId=20019"&gt;PowerGUILauncher&lt;/a&gt;) &lt;/li&gt;&lt;li&gt;Fixes invalid cast issue with $properties, fixes issue with unregistering item events &lt;/li&gt;&lt;/ul&gt;&lt;blockquote&gt;&lt;a href="http://www.codeplex.com/iLoveSharePoint/Release/ProjectReleases.aspx?ReleaseId=19314"&gt;&lt;/a&gt;&lt;a href="http://www.codeplex.com/iLoveSharePoint/Release/ProjectReleases.aspx?ReleaseId=19314"&gt;&lt;/a&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;/blockquote&gt;&lt;a href="http://www.codeplex.com/iLoveSharePoint/Release/ProjectReleases.aspx?ReleaseId=19314"&gt;Download &lt;/a&gt;on my Codeplex Project &lt;a href="http://codeplex.com/iLoveSharePoint"&gt;iLove SharePoint&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Bye, Christian&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3766174345251248841-3718881453649652017?l=www.ilovesharepoint.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.ilovesharepoint.com/feeds/3718881453649652017/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3766174345251248841&amp;postID=3718881453649652017' title='6 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3766174345251248841/posts/default/3718881453649652017'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3766174345251248841/posts/default/3718881453649652017'/><link rel='alternate' type='text/html' href='http://www.ilovesharepoint.com/2008/12/sharepoint-power-event-receiver-20.html' title='SharePoint Power Event Receiver 2.0 Released!'/><author><name>Christian</name><uri>http://www.blogger.com/profile/16986066591633364914</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='22' height='32' src='http://bp1.blogger.com/_J6SMSGCmItU/SGAIxRt-lLI/AAAAAAAAABo/EqgbBGe38FM/S220/DSC_0314_small.jpg'/></author><thr:total>6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3766174345251248841.post-8825697812572843188</id><published>2008-11-29T21:05:00.001+01:00</published><updated>2008-11-29T21:05:06.405+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SharePoint'/><category scheme='http://www.blogger.com/atom/ns#' term='PowerShell'/><title type='text'>Manage SharePoint WebParts with PowerShell</title><content type='html'>&lt;ul&gt;   &lt;li&gt;Get the WebPart Manager: &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;a href="http://lh6.ggpht.com/_J6SMSGCmItU/STGgVt62jjI/AAAAAAAAAp0/5eVkqtA1g_U/s1600-h/image%5B114%5D.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="170" alt="image" src="http://lh6.ggpht.com/_J6SMSGCmItU/STGgWdo3yqI/AAAAAAAAAp4/jfIkFaEA2L0/image_thumb%5B75%5D.png?imgmax=800" width="483" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;The function get-spweb is defined in my &lt;a href="http://cglessner.blogspot.com/2008/06/powershell-sharepoint.html" target="_blank"&gt;PowerShell profile&lt;/a&gt;. &lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;List all web parts on the page &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;a href="http://lh6.ggpht.com/_J6SMSGCmItU/STGgW9fJ0AI/AAAAAAAAAp8/hGqaF9zhY18/s1600-h/image%5B115%5D.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="41" alt="image" src="http://lh5.ggpht.com/_J6SMSGCmItU/STGgXFb3SdI/AAAAAAAAAqA/PVf5WcWA3E4/image_thumb%5B76%5D.png?imgmax=800" width="484" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="97" alt="image" src="http://lh4.ggpht.com/_J6SMSGCmItU/STGgXg2kPjI/AAAAAAAAAqE/QbbG6fbKuoI/image%5B113%5D.png?imgmax=800" width="350" border="0" /&gt; &lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Update the &amp;quot;Site Image&amp;quot; - Web Part's image &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;a href="http://lh6.ggpht.com/_J6SMSGCmItU/STGgYVwvHQI/AAAAAAAAAqI/vg_Jgtb95jo/s1600-h/image%5B126%5D.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="84" alt="image" src="http://lh6.ggpht.com/_J6SMSGCmItU/STGgZMTcx3I/AAAAAAAAAqM/fe3u5MH7d4s/image_thumb%5B83%5D.png?imgmax=800" width="496" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh5.ggpht.com/_J6SMSGCmItU/STGgZUkqx9I/AAAAAAAAAqQ/6I3qk6R_Pc4/s1600-h/image%5B129%5D.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="61" alt="image" src="http://lh5.ggpht.com/_J6SMSGCmItU/STGgZ-bYsfI/AAAAAAAAAqU/h6etYdwi8To/image_thumb%5B84%5D.png?imgmax=800" width="244" border="0" /&gt;&lt;/a&gt;&amp;#160;&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Add a &amp;quot;Content Editor&amp;quot; Web Part &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;a href="http://lh3.ggpht.com/_J6SMSGCmItU/STGgaVKMYcI/AAAAAAAAAqY/M0e2LczDcBU/s1600-h/image%5B135%5D.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="207" alt="image" src="http://lh4.ggpht.com/_J6SMSGCmItU/STGgbGAmiiI/AAAAAAAAAqc/zrBZeCk9jOk/image_thumb%5B88%5D.png?imgmax=800" width="508" border="0" /&gt;&lt;/a&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh3.ggpht.com/_J6SMSGCmItU/STGgbjgvLGI/AAAAAAAAAqg/qNE6wACkinI/s1600-h/image%5B138%5D.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="55" alt="image" src="http://lh6.ggpht.com/_J6SMSGCmItU/STGgcTl7N1I/AAAAAAAAAqk/V6-c45bbKbU/image_thumb%5B89%5D.png?imgmax=800" width="244" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&lt;a href="http://ilovesharepoint.com/Blog/PSScripts/ManageWebParts.ps1" target="_blank"&gt;Download&lt;/a&gt; the example.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3766174345251248841-8825697812572843188?l=www.ilovesharepoint.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.ilovesharepoint.com/feeds/8825697812572843188/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3766174345251248841&amp;postID=8825697812572843188' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3766174345251248841/posts/default/8825697812572843188'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3766174345251248841/posts/default/8825697812572843188'/><link rel='alternate' type='text/html' href='http://www.ilovesharepoint.com/2008/11/manage-sharepoint-webparts-with.html' title='Manage SharePoint WebParts with PowerShell'/><author><name>Christian</name><uri>http://www.blogger.com/profile/16986066591633364914</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='22' height='32' src='http://bp1.blogger.com/_J6SMSGCmItU/SGAIxRt-lLI/AAAAAAAAABo/EqgbBGe38FM/S220/DSC_0314_small.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh6.ggpht.com/_J6SMSGCmItU/STGgWdo3yqI/AAAAAAAAAp4/jfIkFaEA2L0/s72-c/image_thumb%5B75%5D.png?imgmax=800' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3766174345251248841.post-4079764718230294855</id><published>2008-11-26T10:07:00.001+01:00</published><updated>2008-11-26T10:09:42.390+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SharePoint'/><title type='text'>Unit Testing with SharePoint</title><content type='html'>Typemock are offering their new product for &lt;a href="http://www.typemock.com/sharepointpage.php?utm_source=sp_bb&amp;amp;utm_medium=blog_4sp&amp;amp;utm_campaign=sp_bb"&gt;unit testing SharePoint&lt;/a&gt; called Isolator For SharePoint, for a special introduction price. it is the only tool that allows you to &lt;a href="http://blog.typemock.com/2008/11/newisolatorforsharepointtoolforunittest.html?utm_source=typeblog&amp;amp;utm_medium=sp_bb&amp;amp;utm_campaign=typeblog"&gt;unit test SharePoint&lt;/a&gt; without a SharePoint server. To learn more &lt;a href="http://www.typemock.com/sharepointpage.php?utm_source=sp_bb&amp;amp;utm_medium=blog_4sp&amp;amp;utm_campaign=sp_bb"&gt;click here&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;I'm curious testing it...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3766174345251248841-4079764718230294855?l=www.ilovesharepoint.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.ilovesharepoint.com/feeds/4079764718230294855/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3766174345251248841&amp;postID=4079764718230294855' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3766174345251248841/posts/default/4079764718230294855'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3766174345251248841/posts/default/4079764718230294855'/><link rel='alternate' type='text/html' href='http://www.ilovesharepoint.com/2008/11/unit-testing-with-sharepoint.html' title='Unit Testing with SharePoint'/><author><name>Christian</name><uri>http://www.blogger.com/profile/16986066591633364914</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='22' height='32' src='http://bp1.blogger.com/_J6SMSGCmItU/SGAIxRt-lLI/AAAAAAAAABo/EqgbBGe38FM/S220/DSC_0314_small.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3766174345251248841.post-4598734719094971058</id><published>2008-11-11T13:29:00.004+01:00</published><updated>2011-03-20T21:26:33.226+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='.NET'/><category scheme='http://www.blogger.com/atom/ns#' term='SharePoint'/><category scheme='http://www.blogger.com/atom/ns#' term='PowerShell'/><title type='text'>Released: SharePoint PowerEventReceivers 1.0</title><content type='html'>&lt;p&gt;I've just released the &lt;a href="http://www.codeplex.com/iLoveSharePoint/Release/ProjectReleases.aspx?ReleaseId=19314"&gt;PowerEventReceivers 1.0&lt;/a&gt; on &lt;a href="http://codeplex.com/iLoveSharePoint" target="_blank"&gt;iLove SharePoint&lt;/a&gt;. Now you can write EventReceivers with PowerShell-Script!&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Features:&lt;/strong&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;All events from the &lt;strong&gt;SPItemEventReceiver&lt;/strong&gt; class &lt;ul&gt;&lt;li&gt;ItemAdding, ItemUpdating, ItemDeleting, ItemCheckingIn, ItemCheckingOut, ItemUncheckingOut, ItemAttachmentAdding, ItemAttachmentDeleting, ItemFileMoving, ItemAdded, ItemUpdated, ItemDeleted, ItemCheckedIn, ItemCheckedOut, ItemUncheckedOut, ItemAttachmentAdded, ItemAttachmentDeleted, ItemFileMoved, ItemFileConverted, ContextEvent &lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt;All events from the &lt;strong&gt;SPListEventReceiver&lt;/strong&gt; class &lt;ul&gt;&lt;li&gt;FieldAdded, FieldAdding, FieldDeleted, FieldDeleting, FieldUpdated, FieldUpdating &lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt;Anything PowerShell can do...&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Quick Start:&lt;/strong&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Deploy the solution &lt;/li&gt;&lt;li&gt;Activate the Feature &lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;a href="http://lh6.ggpht.com/_J6SMSGCmItU/SRl6qNfsevI/AAAAAAAAAos/K27wvVUDOnk/s1600-h/image%5B7%5D.png"&gt;&lt;img style="BORDER-RIGHT: 0px; BORDER-TOP: 0px; BORDER-LEFT: 0px; BORDER-BOTTOM: 0px" height="110" alt="image" src="http://lh5.ggpht.com/_J6SMSGCmItU/SRl6qz7IK6I/AAAAAAAAAow/jaq_zgI4x2Y/image_thumb%5B3%5D.png?imgmax=800" width="390" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;&lt;ul&gt;&lt;li&gt;Go to the list settings of any list or document library&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;a href="http://lh6.ggpht.com/_J6SMSGCmItU/SRl6rkQWH4I/AAAAAAAAAo0/wTd5lpy7Ka8/s1600-h/image%5B13%5D.png"&gt;&lt;img style="BORDER-RIGHT: 0px; BORDER-TOP: 0px; BORDER-LEFT: 0px; BORDER-BOTTOM: 0px" height="169" alt="image" src="http://lh4.ggpht.com/_J6SMSGCmItU/SRl6sCx6t6I/AAAAAAAAAo4/4KQhNk0JY70/image_thumb%5B5%5D.png?imgmax=800" width="194" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;&lt;ul&gt;&lt;li&gt;Choose Power Item Event Receiver&lt;/li&gt;&lt;li&gt;A Quick Start Guide is included&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;a href="http://lh5.ggpht.com/_J6SMSGCmItU/SRl6sdSSqtI/AAAAAAAAAo8/_M_4YK9JTqo/s1600-h/image%5B23%5D.png"&gt;&lt;img style="BORDER-RIGHT: 0px; BORDER-TOP: 0px; BORDER-LEFT: 0px; BORDER-BOTTOM: 0px" height="265" alt="image" src="http://lh4.ggpht.com/_J6SMSGCmItU/SRl6tUtpviI/AAAAAAAAApA/CdQCjTL84HM/image_thumb%5B11%5D.png?imgmax=800" width="407" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;&lt;ul&gt;&lt;li&gt;Enter the following script to deny deletion of list items&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;a href="http://lh4.ggpht.com/_J6SMSGCmItU/SRl7bXXVxbI/AAAAAAAAApc/-PJla97vTBQ/s1600-h/image%5B39%5D.png"&gt;&lt;img style="BORDER-RIGHT: 0px; BORDER-TOP: 0px; BORDER-LEFT: 0px; BORDER-BOTTOM: 0px" height="204" alt="image" src="http://lh6.ggpht.com/_J6SMSGCmItU/SRl7b1dF5zI/AAAAAAAAApg/9LToFwmoNxM/image_thumb%5B19%5D.png?imgmax=800" width="421" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;&lt;ul&gt;&lt;li&gt;Save&lt;/li&gt;&lt;li&gt;Now, try to delete a list item...&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;a href="http://lh5.ggpht.com/_J6SMSGCmItU/SRl6u3W0wtI/AAAAAAAAApM/TgQMYnSiMVc/s1600-h/image%5B31%5D.png"&gt;&lt;img style="BORDER-RIGHT: 0px; BORDER-TOP: 0px; BORDER-LEFT: 0px; BORDER-BOTTOM: 0px" height="98" alt="image" src="http://lh5.ggpht.com/_J6SMSGCmItU/SRl6vLXTe7I/AAAAAAAAApQ/idXPrYaqep0/image_thumb%5B15%5D.png?imgmax=800" width="327" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;&lt;ul&gt;&lt;li&gt;... &lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;a href="http://lh5.ggpht.com/_J6SMSGCmItU/SRl7ciolLLI/AAAAAAAAApk/DgUDkddRNLY/s1600-h/image%5B43%5D.png"&gt;&lt;img style="BORDER-RIGHT: 0px; BORDER-TOP: 0px; BORDER-LEFT: 0px; BORDER-BOTTOM: 0px" height="143" alt="image" src="http://lh5.ggpht.com/_J6SMSGCmItU/SRl7dFH78FI/AAAAAAAAApo/oZLKqfcb4mA/image_thumb%5B21%5D.png?imgmax=800" width="359" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;&lt;ul&gt;&lt;li&gt;The End&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;This is just to give you an idea - just be creative... &lt;/strong&gt;&lt;/p&gt;&lt;p&gt;Please be carefull with the event receivers, they will run with the credentials of the application pool. Although only site collection admins are permitted to edit the script, the script will run with higher privileges! Any idea to improve the security would be appreciated - maybe using a local machine group? What do you think?&lt;/p&gt;&lt;p&gt;Enjoy,&lt;/p&gt;&lt;p&gt;Christian&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3766174345251248841-4598734719094971058?l=www.ilovesharepoint.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.ilovesharepoint.com/feeds/4598734719094971058/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3766174345251248841&amp;postID=4598734719094971058' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3766174345251248841/posts/default/4598734719094971058'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3766174345251248841/posts/default/4598734719094971058'/><link rel='alternate' type='text/html' href='http://www.ilovesharepoint.com/2008/11/r
