<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0"><channel><title>Wictor Wilén</title><link>http://www.wictorwilen.se/</link><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/WictorWilen" /><description>The blog of Wictor Wilén</description><language>en-us</language><image><link>http://www.wictorwilen.se/</link><url>http://www.wictorwilen.se/images/wwicon_32.png</url><title>Wictor Wilén</title></image><copyright>Copyright 2006-2009, Wictor Wilén</copyright><managingEditor>wictor@wictorwilen.se (Wictor Wilén)</managingEditor><generator>WW</generator><atom:author xmlns:atom="http://www.w3.org/2005/Atom">
      <atom:name>wictor@wictorwilen.se (Wictor Wilén)</atom:name>
    </atom:author><cf:listinfo xmlns:cf="http://www.microsoft.com/schemas/rss/core/2005"> 
      <cf:sort label="Date" element="pubDate" default="true" data-type="date" />
      <cf:sort ns="http://purl.org/rss/1.0/modules/slash/" element="comments" label="Comments" data-type="number" />
      <cf:sort element="title" label="Title" data-type="text" />
      <cf:group element="category" label="Category/tag" />
    </cf:listinfo><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/WictorWilen" /><feedburner:info uri="wictorwilen" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><feedburner:emailServiceId>WictorWilen</feedburner:emailServiceId><feedburner:feedburnerHostname>http://feedburner.google.com</feedburner:feedburnerHostname><item><title>Visual guide to Azure Access Controls Services authentication with SharePoint 2010 - part 1</title><link>http://feedproxy.google.com/~r/WictorWilen/~3/gQJISNZCuVI/Visual-guide-to-Azure-Access-Controls-Services-authentication-with-SharePoint-2010-part-1.aspx</link><category>Windows Azure</category><category>SharePoint 2010</category><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Wictor Wilén</dc:creator><pubDate>Wed, 01 Feb 2012 01:38:19 PST</pubDate><guid isPermaLink="false">http://www.wictorwilen.se/Post/Visual-guide-to-Azure-Access-Controls-Services-authentication-with-SharePoint-2010-part-1.aspx</guid><description>&lt;p&gt;A year and a half ago I posted the &lt;a href="http://www.wictorwilen.se/Post/Visual-guide-to-Windows-Live-ID-authentication-with-SharePoint-2010-part-1.aspx"&gt;Visual guide to Windows Live ID authentication with SharePoint 2010&lt;/a&gt; series, a post that got a tremendously amount of hits (and still gets) and tons of comments (and new ones still coming in). It showed quite a cumbersome way to Live ID enable your &lt;a href="http://sharepoint.microsoft.com/"&gt;SharePoint 2010&lt;/a&gt; Web Applications using the &lt;a href="http://www.microsoft.com" target="_blank"&gt;Microsoft&lt;/a&gt; Service Manager, MSM, (which works some times and some times not). Although it did/do work it is not the best way to enable Live ID authentication to your SharePoint 2010 web site. The MSM required you to first test in their INT environment and get approval before putting it into production, and you had to follow a set of guidelines on how to use Live ID logos etc etc, not mentioning all the manual configuration.&lt;/p&gt;  &lt;p&gt;Microsoft has a service in its &lt;strong&gt;Windows Azure&lt;/strong&gt; offering called &lt;strong&gt;Access Control Services&lt;/strong&gt;. This is essentially an Identity Federation Provider, living in Windows Azure. This IP not only allows you to federate Live ID authentication but also Google ID, Facebook ID etc. In this post, and subsequent ones, I'll do a visual guide on how to configure SharePoint 2010 to use Windows Azure Access Control Services, &lt;strong&gt;ACS&lt;/strong&gt;, to handle your authentication.&lt;/p&gt;  &lt;h3&gt;Configuring Azure ACS&lt;/h3&gt;  &lt;p&gt;First of all let's get acquainted with Windows Azure Access Control Services. But before you start you need to have a Windows Azure subscription. Unfortunately this isn't for free, but if you have an MSDN Subscription you can take advantage of the &lt;a href="http://www.windowsazure.com/en-us/pricing/member-offers/msdn-benefits/"&gt;MSDN Azure benefits&lt;/a&gt;. Once you have your subscription you head on over to &lt;a href="http://windows.azure.com"&gt;http://windows.azure.com&lt;/a&gt; and sign in with your Live ID. Once you're signed in you are in the &lt;strong&gt;Azure Management Portal&lt;/strong&gt;.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.wictorwilen.se/Windows-Live-Writer/Visual-guide-to-Azure-Access-Services-au_B544/image_2.png"&gt;&lt;img style="background-image: none; border-right-width: 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="Windows Azure Portal" border="0" alt="Windows Azure Portal" src="http://www.wictorwilen.se/Windows-Live-Writer/Visual-guide-to-Azure-Access-Services-au_B544/image_thumb.png" width="504" height="308" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;On the left hand side is the navigation and select &lt;strong&gt;Service Bus, Access Control &amp; Caching&lt;/strong&gt; (this is the part that was/is called Azure &lt;a href="http://www.microsoft.com/windowsazure/appfabric/overview/default.aspx" target="_blank"&gt;AppFabric&lt;/a&gt;), #1 in the image below. This will load all the AppFabric Services and you will get a new navigation tree on the left hand side and the Ribbon menu will update. To create your &lt;strong&gt;Service Namespace&lt;/strong&gt;, which is like a "container" for the AppFabric services, click on the &lt;strong&gt;New &lt;/strong&gt;button in the Ribbon (#2).&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.wictorwilen.se/Windows-Live-Writer/Visual-guide-to-Azure-Access-Services-au_B544/SNAGHTML17e4ccf.png"&gt;&lt;img style="display: inline" title="AppFabric" alt="AppFabric" src="http://www.wictorwilen.se/Windows-Live-Writer/Visual-guide-to-Azure-Access-Services-au_B544/SNAGHTML17e4ccf_thumb.png" width="225" height="302" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;This will bring up a dialog  where you create your new namespace. First of all select the services you want in this namespace - for this authentication sample we only need the &lt;strong&gt;Access Control &lt;/strong&gt;(#1). Secondly you need to specify a unique namespace for your Service Namespace (#2). After that select an appropriate Region (#3) and optionally a Subscription if you have multiple ones. Once your satisfied click &lt;strong&gt;Create Namespace&lt;/strong&gt; (#4) to start the creation.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.wictorwilen.se/Windows-Live-Writer/Visual-guide-to-Azure-Access-Services-au_B544/image_4.png"&gt;&lt;img style="background-image: none; border-right-width: 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="New Service Namespace" border="0" alt="New Service Namespace" src="http://www.wictorwilen.se/Windows-Live-Writer/Visual-guide-to-Azure-Access-Services-au_B544/image_thumb_1.png" width="504" height="213" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;The creation will take a couple of minutes, so now it's a good time to take that coffee you all been waiting for! As always when dealing with AuthN, coffee breaks are good, that's what my good ol' buddy Spence always nagging about. Wait until the service namespace has the status of Active until proceeding further.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.wictorwilen.se/Windows-Live-Writer/Visual-guide-to-Azure-Access-Services-au_B544/SNAGHTML18722d3.png"&gt;&lt;img style="display: inline" title="Activating..." alt="Activating..." src="http://www.wictorwilen.se/Windows-Live-Writer/Visual-guide-to-Azure-Access-Services-au_B544/SNAGHTML18722d3_thumb.png" width="500" height="83" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Once it has the Active Status, select your newly created Service Namespace (#1) and  choose &lt;strong&gt;Access Control Service&lt;/strong&gt; in the Ribbon menu (#2). This will open the Access Control Services administration. Note: you will navigate away from the Azure management and reuse the same browser window.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.wictorwilen.se/Windows-Live-Writer/Visual-guide-to-Azure-Access-Services-au_B544/SNAGHTML188a3f4.png"&gt;&lt;img style="display: inline" title="Configure it..." alt="Configure it..." src="http://www.wictorwilen.se/Windows-Live-Writer/Visual-guide-to-Azure-Access-Services-au_B544/SNAGHTML188a3f4_thumb.png" width="500" height="228" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;The Access Control Service administration site contains a lot of configuration options. You will see a left hand side navigation where you can set up everything from &lt;strong&gt;Identity Providers&lt;/strong&gt;, IP,&lt;strong&gt; &lt;/strong&gt;and Trusted Parties to custom certificates and get details on how to integrate this with your applications. The first thing we will do here is to add a couple of identity providers, click on &lt;strong&gt;Identity Providers&lt;/strong&gt; in the menu.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.wictorwilen.se/Windows-Live-Writer/Visual-guide-to-Azure-Access-Services-au_B544/image_8.png"&gt;&lt;img style="background-image: none; border-right-width: 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="Access Control Services Management Portal" border="0" alt="Access Control Services Management Portal" src="http://www.wictorwilen.se/Windows-Live-Writer/Visual-guide-to-Azure-Access-Services-au_B544/image_thumb_3.png" width="404" height="250" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;h4&gt;&lt;/h4&gt;  &lt;h4&gt;Identity Providers&lt;/h4&gt;  &lt;p&gt;The Identity Providers menu option shows all the Identity Providers that currently is available for this ACS Service Namespace. By default you will only see Windows Live ID. While Windows Live ID might work (if you can live with all the guid based identities) it's very convenient to add other IP's here. Click on &lt;strong&gt;Add&lt;/strong&gt; to add a new IP.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.wictorwilen.se/Windows-Live-Writer/Visual-guide-to-Azure-Access-Services-au_B544/SNAGHTML1906002.png"&gt;&lt;img style="display: inline" title="Identity Providers" alt="Identity Providers" src="http://www.wictorwilen.se/Windows-Live-Writer/Visual-guide-to-Azure-Access-Services-au_B544/SNAGHTML1906002_thumb.png" width="329" height="126" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;I like to add the Google Identity Provider, since all the user identities from Google IP will use the Google login id (e-mail). Select &lt;strong&gt;Google&lt;/strong&gt; amongst the preconfigured IP's and then click &lt;strong&gt;Next&lt;/strong&gt;.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.wictorwilen.se/Windows-Live-Writer/Visual-guide-to-Azure-Access-Services-au_B544/SNAGHTML1928434.png"&gt;&lt;img style="display: inline" title="Add IP" alt="Add IP" src="http://www.wictorwilen.se/Windows-Live-Writer/Visual-guide-to-Azure-Access-Services-au_B544/SNAGHTML1928434_thumb.png" width="229" height="179" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;The next page gives you some customizations options for the Google IP. Change anything you want here and click &lt;strong&gt;Save &lt;/strong&gt;to continue.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.wictorwilen.se/Windows-Live-Writer/Visual-guide-to-Azure-Access-Services-au_B544/SNAGHTML1940b5d.png"&gt;&lt;img style="display: inline" title="Login Page" alt="Login Page" src="http://www.wictorwilen.se/Windows-Live-Writer/Visual-guide-to-Azure-Access-Services-au_B544/SNAGHTML1940b5d_thumb.png" width="241" height="175" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;This should take you back to the IP page and you should now see both Windows Live ID and Google listed there.&lt;/p&gt;  &lt;h4&gt;The Relying Party&lt;/h4&gt;  &lt;p&gt;Next thing to do is to add a &lt;strong&gt;Relying Party Application&lt;/strong&gt;, that is our SharePoint Web Application. Choose Relying party applications in the left hand menu. You will have no RP's configured by default so click on &lt;strong&gt;Add&lt;/strong&gt; to create a new one.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.wictorwilen.se/Windows-Live-Writer/Visual-guide-to-Azure-Access-Services-au_B544/SNAGHTML1963b14.png"&gt;&lt;img style="display: inline" title="Relying Parties" alt="Relying Parties" src="http://www.wictorwilen.se/Windows-Live-Writer/Visual-guide-to-Azure-Access-Services-au_B544/SNAGHTML1963b14_thumb.png" width="252" height="155" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;You will now see a form and it is here things must be written correctly otherwise you will not get the AuthN to work with SharePoint 2010. First of all give your RP a nice and easy &lt;strong&gt;name&lt;/strong&gt; (#1). Secondly is the &lt;strong&gt;realm&lt;/strong&gt; (#2), if you remember from the Live ID visual guide the Realm is important. Use a URI instead of URL, it's easier to remember and always works. In this case I choose &lt;code&gt;uri:visualauthn&lt;/code&gt;. Then we also need to fill in the &lt;strong&gt;Return URL&lt;/strong&gt; (#3). The return URL must point to http://server/&lt;strong&gt;_trust/default.aspx&lt;/strong&gt; when dealing with SharePoint 2010 (of course replace with your server name, localhost also works in a test environment).&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.wictorwilen.se/Windows-Live-Writer/Visual-guide-to-Azure-Access-Services-au_B544/SNAGHTML19a6899.png"&gt;&lt;img style="display: inline" title="RP Settings" alt="RP Settings" src="http://www.wictorwilen.se/Windows-Live-Writer/Visual-guide-to-Azure-Access-Services-au_B544/SNAGHTML19a6899_thumb.png" width="299" height="302" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;The next things to configure is the tokens. First of all SAML 1.1 must be used as &lt;strong&gt;Token Format&lt;/strong&gt; (#1), SAML 2.0 is default in ACS so make sure to change this. Leave &lt;strong&gt;Token encryption policy&lt;/strong&gt; to None (#2). Then finally an important piece - the &lt;strong&gt;Token lifetime&lt;/strong&gt;. By default this is set to 600 seconds and you need to increase this value. The reason for that is that SharePoint 2010 has the expected token lifetime configured to 600 seconds and when SharePoint validates the token, which is after it's been issued by ACS it will fall outside the lifetime. So you have two options here lower the SharePoint lifetime or increase it in ACS, in this case I've done the latter and set it to 700 seconds.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.wictorwilen.se/Windows-Live-Writer/Visual-guide-to-Azure-Access-Services-au_B544/SNAGHTML19f747c.png"&gt;&lt;img style="display: inline" title="Token Settings" alt="Token Settings" src="http://www.wictorwilen.se/Windows-Live-Writer/Visual-guide-to-Azure-Access-Services-au_B544/SNAGHTML19f747c_thumb.png" width="400" height="254" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;The rest of the configuration is left intact. If you like you can uncheck Windows Live ID if you do not want Live ID users to sign in with this RP. Click &lt;strong&gt;Save &lt;/strong&gt;when you're done.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.wictorwilen.se/Windows-Live-Writer/Visual-guide-to-Azure-Access-Services-au_B544/SNAGHTML1a3ac5d.png"&gt;&lt;img style="display: inline" title="Save!" alt="Save!" src="http://www.wictorwilen.se/Windows-Live-Writer/Visual-guide-to-Azure-Access-Services-au_B544/SNAGHTML1a3ac5d_thumb.png" width="299" height="302" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;You should now see your newly created Relying Party.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.wictorwilen.se/Windows-Live-Writer/Visual-guide-to-Azure-Access-Services-au_B544/image_14.png"&gt;&lt;img style="background-image: none; border-right-width: 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="The RP" border="0" alt="The RP" src="http://www.wictorwilen.se/Windows-Live-Writer/Visual-guide-to-Azure-Access-Services-au_B544/image_thumb_6.png" width="404" height="81" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;h4&gt;Some rules!&lt;/h4&gt;  &lt;p&gt;We now have two IP's connected to the RP - each of the IP's has a set of outgoing claims to our RP and we need to make sure that the claims received from the IP's to the RP are passed through to SharePoint as outgoing claims from the RP. This is done through the &lt;strong&gt;Rule Groups&lt;/strong&gt;. Select Rule groups in the left hand menu. You will see a Rule Group called "Default Rule Group for Visual AuthN" - this group was automatically created for us when we created the RP: Now click on the rule group to create the actual rules.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.wictorwilen.se/Windows-Live-Writer/Visual-guide-to-Azure-Access-Services-au_B544/SNAGHTML2277a29.png"&gt;&lt;img style="display: inline" title="Rule Groups" alt="Rule Groups" src="http://www.wictorwilen.se/Windows-Live-Writer/Visual-guide-to-Azure-Access-Services-au_B544/SNAGHTML2277a29_thumb.png" width="400" height="191" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Note that there are no rules by default. To create the default rules, just click on &lt;strong&gt;Generate&lt;/strong&gt; to create them.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.wictorwilen.se/Windows-Live-Writer/Visual-guide-to-Azure-Access-Services-au_B544/SNAGHTML228adb7.png"&gt;&lt;img style="display: inline" title="Generate" alt="Generate" src="http://www.wictorwilen.se/Windows-Live-Writer/Visual-guide-to-Azure-Access-Services-au_B544/SNAGHTML228adb7_thumb.png" width="400" height="81" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;First we need to select for which IP's to generate the rules, make sure both Live ID and Google (in this case) are selected and click the &lt;strong&gt;Generate &lt;/strong&gt;button.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.wictorwilen.se/Windows-Live-Writer/Visual-guide-to-Azure-Access-Services-au_B544/SNAGHTML2298d6b.png"&gt;&lt;img style="display: inline" title="Generate Rules" alt="Generate Rules" src="http://www.wictorwilen.se/Windows-Live-Writer/Visual-guide-to-Azure-Access-Services-au_B544/SNAGHTML2298d6b_thumb.png" width="400" height="150" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Now ACS will generate the default rules for all selected IP's. Click &lt;strong&gt;Save&lt;/strong&gt; to complete the rules setup.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.wictorwilen.se/Windows-Live-Writer/Visual-guide-to-Azure-Access-Services-au_B544/SNAGHTML22b0143.png"&gt;&lt;img style="display: inline" title="The Rules" alt="The Rules" src="http://www.wictorwilen.se/Windows-Live-Writer/Visual-guide-to-Azure-Access-Services-au_B544/SNAGHTML22b0143_thumb.png" width="400" height="190" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;I will in follow up posts on this one, show you how to fiddle a bit with these rules. But for now we're just using all the default settings.&lt;/p&gt;  &lt;h3&gt;Certificates&lt;/h3&gt;  &lt;p&gt;Next thing to do is to create a certificate that we will be using for &lt;strong&gt;Token Signing&lt;/strong&gt;. The Management Portal makes it very easy for us to make a self signed certificate for testing and demo purposes. For production scenarios either purchase an X.509 certificate or request one from your local Certification Authority (CA) (for instance AD Certificate Services). Just make sure it's a certificate for sign &lt;strong&gt;and &lt;/strong&gt;encrypt the payload. Navigate to the &lt;strong&gt;Certificates and Keys &lt;/strong&gt;in the ACS Management Portal. Click on &lt;strong&gt;Add&lt;/strong&gt; next to the &lt;strong&gt;Token Signing&lt;/strong&gt; certificates.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.wictorwilen.se/Windows-Live-Writer/Visual-guide-to-Azure-Access-Services-au_B544/SNAGHTML1b4793d.png"&gt;&lt;img style="display: inline" title="Certificates and Keys" alt="Certificates and Keys" src="http://www.wictorwilen.se/Windows-Live-Writer/Visual-guide-to-Azure-Access-Services-au_B544/SNAGHTML1b4793d_thumb.png" width="400" height="216" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;First of all make sure that the correct Relying Party is selected, it should be the one you just created. ACS allows you to have multiple RP's so just make an extra check.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.wictorwilen.se/Windows-Live-Writer/Visual-guide-to-Azure-Access-Services-au_B544/SNAGHTML1c94b4b.png"&gt;&lt;img style="display: inline" title="Used for" alt="Used for" src="http://www.wictorwilen.se/Windows-Live-Writer/Visual-guide-to-Azure-Access-Services-au_B544/SNAGHTML1c94b4b_thumb.png" width="400" height="153" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;If you want to create a self signed certificate, take a look at the middle of that page. There is a small snippet that you just can copy and paste to create your own certificate (if you have the MakeCert utility, which is a part of the Windows SDK).&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.wictorwilen.se/Windows-Live-Writer/Visual-guide-to-Azure-Access-Services-au_B544/SNAGHTML1b5a607.png"&gt;&lt;img style="display: inline" title="MakeCert" alt="MakeCert" src="http://www.wictorwilen.se/Windows-Live-Writer/Visual-guide-to-Azure-Access-Services-au_B544/SNAGHTML1b5a607_thumb.png" width="400" height="112" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Copy and paste that into a command window or a PowerShell console. This will create your signing certificate and store in the My store on the box you run the command at. &lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.wictorwilen.se/Windows-Live-Writer/Visual-guide-to-Azure-Access-Services-au_B544/SNAGHTML1b824c7.png"&gt;&lt;img style="display: inline" title="MakeCert POSH" alt="MakeCert POSH" src="http://www.wictorwilen.se/Windows-Live-Writer/Visual-guide-to-Azure-Access-Services-au_B544/SNAGHTML1b824c7_thumb.png" width="400" height="68" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Now you need to export this certificate into two files (with and without the private key). One to upload to ACS and one to import into SharePoint 2010 later. You can export the certificates using the Certificates MMC Snap-In (like in the previous visual Live ID guide) or use PowerShell, which will impress your colleagues more.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.wictorwilen.se/Windows-Live-Writer/Visual-guide-to-Azure-Access-Services-au_B544/SNAGHTML1c4d7d1.png"&gt;&lt;img style="display: inline" title="Export Cert POSH" alt="Export Cert POSH" src="http://www.wictorwilen.se/Windows-Live-Writer/Visual-guide-to-Azure-Access-Services-au_B544/SNAGHTML1c4d7d1_thumb.png" width="400" height="136" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;The PowerShell I use to export the certificate to one password protected Pfx file (with key) and a Cer file (without key) are the following:&lt;/p&gt;  &lt;p&gt;&lt;code&gt;$cert = @(dir cert: -Recurse |   Where-Object { $_.subject -like "&lt;strong&gt;CN=visualauthn&lt;/strong&gt;*" })[0] $type = [System.Security.Cryptography.X509Certificates.X509ContentType]::Cert       &lt;br /&gt;$bytes = $cert.Export($type)       &lt;br /&gt;[System.IO.File]::WriteAllBytes("&lt;strong&gt;c:\visualauthn.cer&lt;/strong&gt;", $bytes)       &lt;br /&gt;$type = [System.Security.Cryptography.X509Certificates.X509ContentType]::Pfx       &lt;br /&gt;$pass = read-host "Password" -assecurestring       &lt;br /&gt;$bytes = $cert.Export($type, $pass)       &lt;br /&gt;[System.IO.File]::WriteAllBytes("&lt;strong&gt;c:\visualauthn.pfx&lt;/strong&gt;", $bytes) &lt;/code&gt;&lt;/p&gt;  &lt;p&gt;As you can see I grab the certificate with the correct subject and then use the .NET classes to export the certificates and finally save the bytes into files. Replace the exported filenames with your own and also the subject on the first line when doing this for your service,&lt;/p&gt;  &lt;p&gt;The Pfx file must be uploaded to ACS. You should still be on the Add Token Signing certificate page and now choose to upload the Pfx certificate and then enter the password you used when exporting it. Make sure that you choose to use this certificate as primary certificate and then click &lt;strong&gt;Save&lt;/strong&gt;.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.wictorwilen.se/Windows-Live-Writer/Visual-guide-to-Azure-Access-Services-au_B544/SNAGHTML1c787dd.png"&gt;&lt;img style="display: inline" title="Upload cert" alt="Upload cert" src="http://www.wictorwilen.se/Windows-Live-Writer/Visual-guide-to-Azure-Access-Services-au_B544/SNAGHTML1c787dd_thumb.png" width="400" height="218" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;By now we're done with ACS. Let's head on over to configuring SharePoint.&lt;/p&gt;  &lt;h3&gt;Configuring SharePoint&lt;/h3&gt;  &lt;p&gt;Now it's time for the fun stuff - SharePoint. First of all you need to have a Web Application that uses Claims Authentication. If your web app is in Classic mode, either create a new one or upgrade from Classic to Claims.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.wictorwilen.se/Windows-Live-Writer/Visual-guide-to-Azure-Access-Services-au_B544/image_16.png"&gt;&lt;img style="display: inline" title="Claims FTW" alt="Claims FTW" src="http://www.wictorwilen.se/Windows-Live-Writer/Visual-guide-to-Azure-Access-Services-au_B544/image_thumb_7.png" width="400" height="119" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;h4&gt;Trusted Root Authority&lt;/h4&gt;  &lt;p&gt;Now we need to make sure that the SharePoint farm trusts the certificate used by ACS to sign the tokens. This is done by uploading the other certificate file into SharePoint, using PowerShell. The following code is used to import the .cer file:&lt;/p&gt;  &lt;p&gt;&lt;code&gt;asnp microsoft.sharepoint.powershell      &lt;br /&gt;$cert = Get-PfxCertificate "C:\visualauthn.cer"       &lt;br /&gt;New-SPTrustedRootAuthority -Certificate $cert -Name "Visual AuthN ACS"&lt;/code&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.wictorwilen.se/Windows-Live-Writer/Visual-guide-to-Azure-Access-Services-au_B544/SNAGHTML1e5a28f.png"&gt;&lt;img style="display: inline" title="Trusted Root Authority POSH" alt="Trusted Root Authority POSH" src="http://www.wictorwilen.se/Windows-Live-Writer/Visual-guide-to-Azure-Access-Services-au_B544/SNAGHTML1e5a28f_thumb.png" width="400" height="199" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;To verify that the certificate is imported as a trusted certificate in SharePoint, go to Central Administration &gt; Security &gt; Manage Trust. You should see the name of the trust there:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.wictorwilen.se/Windows-Live-Writer/Visual-guide-to-Azure-Access-Services-au_B544/SNAGHTML1e7b074.png"&gt;&lt;img style="display: inline" title="Ok, it's there" alt="Ok, it's there" src="http://www.wictorwilen.se/Windows-Live-Writer/Visual-guide-to-Azure-Access-Services-au_B544/SNAGHTML1e7b074_thumb.png" width="400" height="85" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;h4&gt;The Trusted Identity Provider&lt;/h4&gt;  &lt;p&gt;Next up is to add the ACS RP as a &lt;strong&gt;Trusted Token Issuer&lt;/strong&gt; in SharePoint. Once again we'll do this using PowerShell. Here it is really important that you specify the exact realm as entered when you created the RP in ACS (see line 1 in POSH below). Then you also need the Sign In URL for your RP. Modify line 2 below to match the URL for your Service Namespace (bold and red). Next we define a claim mapping for the identity claim that we want to use, in this case the e-mail address. Finally we just add the new trusted identity token issuer&lt;/p&gt;  &lt;p&gt;&lt;code&gt;$realm = "&lt;strong&gt;uri:visualauthn&lt;/strong&gt;"       &lt;br /&gt;$signinurl = "https://&lt;strong&gt;&lt;font color="#c0504d"&gt;visualauthn&lt;/font&gt;&lt;/strong&gt;.accesscontrol.windows.net/v2/wsfederation”       &lt;br /&gt;$map1 = New-SPClaimTypeMapping       &lt;br /&gt;    "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress"       &lt;br /&gt;    -IncomingClaimTypeDisplayName "Email" –SameAsIncoming       &lt;br /&gt;New-SPTrustedIdentityTokenIssuer -Name "&lt;strong&gt;Visual AuthN ACS&lt;/strong&gt;"       &lt;br /&gt;    -Description "&lt;strong&gt;ACS rocks!&lt;/strong&gt;"       &lt;br /&gt;    -Realm $realm       &lt;br /&gt;    -ImportTrustCertificate $cert       &lt;br /&gt;    -ClaimsMappings $map1       &lt;br /&gt;    -SignInUrl $signinurl       &lt;br /&gt;    -IdentifierClaim $map1.InputClaimType&lt;/code&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.wictorwilen.se/Windows-Live-Writer/Visual-guide-to-Azure-Access-Services-au_B544/SNAGHTML1f42304.png"&gt;&lt;img style="display: inline" title="Magic POSH" alt="Magic POSH" src="http://www.wictorwilen.se/Windows-Live-Writer/Visual-guide-to-Azure-Access-Services-au_B544/SNAGHTML1f42304_thumb.png" width="400" height="143" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Now it's time to modify our Web Application to use this ACS RP. Go to Central Administration and Web Application administration. Choose the Web Application you want to enable the RP for (remember that it has to be a Claims Web App). Choose to modify &lt;strong&gt;Authentication Providers&lt;/strong&gt; from the Ribbon menu and select the correct Zone (normally Default). Then scroll down to Claims Authentication Types and check the &lt;strong&gt;Trusted Identity Provider &lt;/strong&gt;checkbox and then our own ACS Trusted Identity Provider. Once that's done click &lt;strong&gt;Save&lt;/strong&gt;.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.wictorwilen.se/Windows-Live-Writer/Visual-guide-to-Azure-Access-Services-au_B544/SNAGHTML234d775.png"&gt;&lt;img style="display: inline" title="Web App AuthN" alt="Web App AuthN" src="http://www.wictorwilen.se/Windows-Live-Writer/Visual-guide-to-Azure-Access-Services-au_B544/SNAGHTML234d775_thumb.png" width="270" height="302" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;One final thing here before testing it all. I personally prefer to add a User Policy on the web application directly for one of the users that will log in through the ACS RP. You can of course log in using Windows AuthN and then set permissions inside the site if you prefer so. But this is how I do it. Select the web application and then click &lt;strong&gt;User Policy &lt;/strong&gt;in the Ribbon. Then click &lt;strong&gt;Add User &lt;/strong&gt;choose All Zones and enter the Google e-mail of the user that you will test with, give the user Full Control on the web application. Make sure that you type the e-mail correct - SharePoint will by default validate anything that you write in in Claims mode (more on this in another post).&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.wictorwilen.se/Windows-Live-Writer/Visual-guide-to-Azure-Access-Services-au_B544/image_20.png"&gt;&lt;img style="display: inline" title="User Policy" alt="User Policy" src="http://www.wictorwilen.se/Windows-Live-Writer/Visual-guide-to-Azure-Access-Services-au_B544/image_thumb_9.png" width="400" height="227" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;With this policy in place all should be set to test drive it all.&lt;/p&gt;  &lt;h3&gt;Test it!&lt;/h3&gt;  &lt;p&gt;Now all we have to do is test it. Browse to the web application for which you added the Trusted Identity Provider, once it's loaded you will be presented by the default multiple login page. The drop down will show all the available AuthN providers for the web application. To use the ACS login we only need to choose that provider in the list.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.wictorwilen.se/Windows-Live-Writer/Visual-guide-to-Azure-Access-Services-au_B544/SNAGHTML26587c1.png"&gt;&lt;img style="display: inline" title="Login" alt="Login" src="http://www.wictorwilen.se/Windows-Live-Writer/Visual-guide-to-Azure-Access-Services-au_B544/SNAGHTML26587c1_thumb.png" width="400" height="190" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Once the provider is selected you will be redirected to the ACS RP login page. In this case we will see two possible providers to use - Live ID and Google. Click on the Google button and you will be redirected, once again...&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.wictorwilen.se/Windows-Live-Writer/Visual-guide-to-Azure-Access-Services-au_B544/SNAGHTML266c0ac.png"&gt;&lt;img style="display: inline" title="Login 2" alt="Login 2" src="http://www.wictorwilen.se/Windows-Live-Writer/Visual-guide-to-Azure-Access-Services-au_B544/SNAGHTML266c0ac_thumb.png" width="198" height="168" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;..this time to the Google log in page which will ask you for username and password. Enter the username (e-mail) that you used when creating the user policy for the web application and log in. In this case, with Google, Google will ask for confirmation that you trust the ACS RP. Choose Allow and you'll be redirected back to the RP which will seamless redirect you to SharePoint.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.wictorwilen.se/Windows-Live-Writer/Visual-guide-to-Azure-Access-Services-au_B544/SNAGHTML2681ed2.png"&gt;&lt;img style="display: inline" title="Login 3" alt="Login 3" src="http://www.wictorwilen.se/Windows-Live-Writer/Visual-guide-to-Azure-Access-Services-au_B544/SNAGHTML2681ed2_thumb.png" width="208" height="181" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;...and voila! You're in! Take a look at the username in the upper right corner - it should be the e-mail address of the Google ID you used.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.wictorwilen.se/Windows-Live-Writer/Visual-guide-to-Azure-Access-Services-au_B544/SNAGHTML26a51d3.png"&gt;&lt;img style="display: inline" title="YAY!!!" alt="YAY!!!" src="http://www.wictorwilen.se/Windows-Live-Writer/Visual-guide-to-Azure-Access-Services-au_B544/SNAGHTML26a51d3_thumb.png" width="400" height="178" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;h3&gt;Summary&lt;/h3&gt;  &lt;p&gt;That was it - a visual guide on how to configure federated authentication using Windows Azure Access Control Services and SharePoint 2010. It is this easy! Even though this article was quite lengthy you can do it all in a couple of minutes (compare that to the way I previously showed)! &lt;/p&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/2lS__enTlyWqgIF3RDGDbxgbBqE/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/2lS__enTlyWqgIF3RDGDbxgbBqE/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/2lS__enTlyWqgIF3RDGDbxgbBqE/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/2lS__enTlyWqgIF3RDGDbxgbBqE/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/WictorWilen?a=gQJISNZCuVI:ULybopP-wjE:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/WictorWilen?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/WictorWilen?a=gQJISNZCuVI:ULybopP-wjE:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/WictorWilen?i=gQJISNZCuVI:ULybopP-wjE:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/WictorWilen?a=gQJISNZCuVI:ULybopP-wjE:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/WictorWilen?i=gQJISNZCuVI:ULybopP-wjE:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/WictorWilen?a=gQJISNZCuVI:ULybopP-wjE:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/WictorWilen?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/WictorWilen?a=gQJISNZCuVI:ULybopP-wjE:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/WictorWilen?i=gQJISNZCuVI:ULybopP-wjE:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/WictorWilen/~4/gQJISNZCuVI" height="1" width="1"/&gt;</description><atom:author xmlns:atom="http://www.w3.org/2005/Atom">
                    <atom:name>Wictor Wilén</atom:name>
                </atom:author><atom:published xmlns:atom="http://www.w3.org/2005/Atom">2012-02-01 09:38:19Z</atom:published><atom:updated xmlns:atom="http://www.w3.org/2005/Atom">2012-02-01 09:38:19Z</atom:updated><slash:comments xmlns:slash="http://purl.org/rss/1.0/modules/slash/">0</slash:comments><trackback:ping xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/">http://www.wictorwilen.se/trackback.aspx?id=626</trackback:ping><feedburner:origLink>http://www.wictorwilen.se/Post/Visual-guide-to-Azure-Access-Controls-Services-authentication-with-SharePoint-2010-part-1.aspx</feedburner:origLink></item><item><title>Enhanced Search Migration Tool for SharePoint 2010</title><link>http://feedproxy.google.com/~r/WictorWilen/~3/xWKA9hE6zd0/Enhanced-Search-Migration-Tool-for-SharePoint-2010.aspx</link><category>SharePoint 2010</category><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Wictor Wilén</dc:creator><pubDate>Mon, 30 Jan 2012 13:22:54 PST</pubDate><guid isPermaLink="false">http://www.wictorwilen.se/Post/Enhanced-Search-Migration-Tool-for-SharePoint-2010.aspx</guid><description>&lt;p&gt;The SharePoint Enterprise Search Migration Tool (SMT), created  by &lt;a href="http://www.microsoft.com" target="_blank"&gt;Microsoft&lt;/a&gt;, is a great little tool for moving/migrating search settings from one SharePoint Search Service Application to another, and even from a SharePoint 2007 SSP to a &lt;a href="http://sharepoint.microsoft.com/"&gt;SharePoint 2010&lt;/a&gt; SSA or FAST for SharePoint. The tool is available for download from the &lt;a href="http://archive.msdn.microsoft.com/odcsp2010searchmigra"&gt;MSDN Archive - both as a binary and its source code&lt;/a&gt;. It is a console application that creates an XML when exporting the settings and uses the same XML when importing the settings, and it works great in a scripting environment. The SMT that's available from MSDN Archive allows you to migrate Best Bets, Search Scopes and Site Collection Search settings.&lt;/p&gt;  &lt;h3&gt;Introducing the Enhanced Search Migration Tool!&lt;/h3&gt;  &lt;p&gt;Consider using this tool when moving search settings from an SSA in a staging environment to an SSA in a production environment, or from production to a standby-farm. There's some stuff missing then - it's not enough just migrating best bets, search scopes etc. In my case I had to move the &lt;strong&gt;Managed Properties&lt;/strong&gt; between our environments. Ok, you can script it all using PowerShell, but I'd prefer having something that automatically could move Managed Properties from dev to test to stage to production to standby.&lt;/p&gt;  &lt;p&gt;So I took the source for the SMT and added functionality to work with the Managed Properties. It will export the Managed Properties from one SSA including its configuration and mapped crawled properties to the same XML file as the other Search Settings, and can then be used to import the Managed Properties to another SSA.&lt;/p&gt;  &lt;p&gt;Here's how it works:&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Export Managed Properties:&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;code&gt;SearchMigrationTool.exe -export -managedproperty managedprops.xml&lt;/code&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Import Managed Properties:&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;code&gt;SearchMigrationTool.exe -import -managedproperty -conflictBehavior prompt managedprops.xml &lt;/code&gt;&lt;/p&gt;  &lt;p&gt;As you can see it follows the same routine as the default SMT does and supports conflict resolution. And you can of course combine the export and import with the other SMT switches such as BestBet, Scope, SearchSettings or All (which exports/imports everything).&lt;/p&gt;  &lt;h4&gt;Features&lt;/h4&gt;  &lt;p&gt;The features of this Enhanced SMT are:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Import/Export Managed Properties, including all their configuration&lt;/li&gt;    &lt;li&gt;Only works for SharePoint 2010 to SharePoint 2010 (no 2007 and no FAST)&lt;/li&gt;    &lt;li&gt;Only maps existing crawled properties to the managed property&lt;/li&gt;    &lt;li&gt;It will not change the type of a Managed Property&lt;/li&gt;    &lt;li&gt;Handles the case when an SSA is present in multiple proxy groups (bug in original SMT)&lt;/li&gt; &lt;/ul&gt;  &lt;h3&gt;Sample usage&lt;/h3&gt;  &lt;p&gt;Here's a sample on how to use it. Assume that your developers need to add a new Managed Property. Instead of them writing feature receivers or PowerShell to create the Managed Properties they just write a snippet of XML, like this:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.wictorwilen.se/Windows-Live-Writer/Enhanced-Search-Migration_760B/image_2.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="A new Managed Property" border="0" alt="A new Managed Property" src="http://www.wictorwilen.se/Windows-Live-Writer/Enhanced-Search-Migration_760B/image_thumb.png" width="604" height="151" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;The admins then use the Search Migration Tool to import this new Managed Property (as a part of the update POSH or similar).&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.wictorwilen.se/Windows-Live-Writer/Enhanced-Search-Migration_760B/image_4.png"&gt;&lt;img style="display: inline" title="Import the MP" alt="Import the MP" src="http://www.wictorwilen.se/Windows-Live-Writer/Enhanced-Search-Migration_760B/image_thumb_1.png" width="600" height="297" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Once this is done you will see the Managed Property in your SSA.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.wictorwilen.se/Windows-Live-Writer/Enhanced-Search-Migration_760B/SNAGHTML2e72b0.png"&gt;&lt;img style="display: inline" title="The MP!" alt="The MP!" src="http://www.wictorwilen.se/Windows-Live-Writer/Enhanced-Search-Migration_760B/SNAGHTML2e72b0_thumb.png" width="600" height="60" /&gt;&lt;/a&gt;&lt;/p&gt;    &lt;p&gt;Can't be easier?&lt;/p&gt;  &lt;h3&gt;Support for this!&lt;/h3&gt;  &lt;p&gt;There is no support for this tool at all, but I would appreciate any feedback on it. I've had it running for a while amongst my friends and received positive feedback.&lt;/p&gt;  &lt;p&gt;Hopefully my additions will be merged into the "official" SMT - but until then download the tool from here and get your SSA's in sync!&lt;/p&gt;  &lt;h3&gt;Download&lt;/h3&gt;  &lt;p&gt;Here are the downloads:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://www.wictorwilen.se/files/ESMT.zip"&gt;Just the binaries&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.wictorwilen.se/files/ESMTSource.zip"&gt;The source code&lt;/a&gt;&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Note! If you're going to modify/build the SMT you need to grab the SharePoint assemblies. They are not included in this package due to licensing restrictions.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/G7j37DgN81gDuVSRb7HOdfJ5IIA/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/G7j37DgN81gDuVSRb7HOdfJ5IIA/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/G7j37DgN81gDuVSRb7HOdfJ5IIA/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/G7j37DgN81gDuVSRb7HOdfJ5IIA/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/WictorWilen?a=xWKA9hE6zd0:mu2RrBV4ibU:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/WictorWilen?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/WictorWilen?a=xWKA9hE6zd0:mu2RrBV4ibU:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/WictorWilen?i=xWKA9hE6zd0:mu2RrBV4ibU:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/WictorWilen?a=xWKA9hE6zd0:mu2RrBV4ibU:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/WictorWilen?i=xWKA9hE6zd0:mu2RrBV4ibU:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/WictorWilen?a=xWKA9hE6zd0:mu2RrBV4ibU:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/WictorWilen?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/WictorWilen?a=xWKA9hE6zd0:mu2RrBV4ibU:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/WictorWilen?i=xWKA9hE6zd0:mu2RrBV4ibU:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/WictorWilen/~4/xWKA9hE6zd0" height="1" width="1"/&gt;</description><atom:author xmlns:atom="http://www.w3.org/2005/Atom">
                    <atom:name>Wictor Wilén</atom:name>
                </atom:author><atom:published xmlns:atom="http://www.w3.org/2005/Atom">2012-01-30 21:22:54Z</atom:published><atom:updated xmlns:atom="http://www.w3.org/2005/Atom">2012-01-30 21:22:54Z</atom:updated><slash:comments xmlns:slash="http://purl.org/rss/1.0/modules/slash/">1</slash:comments><trackback:ping xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/">http://www.wictorwilen.se/trackback.aspx?id=625</trackback:ping><feedburner:origLink>http://www.wictorwilen.se/Post/Enhanced-Search-Migration-Tool-for-SharePoint-2010.aspx</feedburner:origLink></item><item><title>Do you want to know more about the Microsoft Certified Master or Architect programs?</title><link>http://feedproxy.google.com/~r/WictorWilen/~3/Svvjv5Dj44Q/Do-you-want-to-know-more-about-the-Microsoft-Certified-Master-or-Architect-programs.aspx</link><category>SharePoint</category><category>SQL Server</category><category>Windows Server 2008 R2</category><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Wictor Wilén</dc:creator><pubDate>Thu, 26 Jan 2012 14:03:40 PST</pubDate><guid isPermaLink="false">http://www.wictorwilen.se/Post/Do-you-want-to-know-more-about-the-Microsoft-Certified-Master-or-Architect-programs.aspx</guid><description>&lt;p&gt;I bet you will!&lt;/p&gt;  &lt;p&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: right; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="Microsoft Learning" border="0" alt="Microsoft Learning" align="right" src="http://www.wictorwilen.se/Windows-Live-Writer/Do-you-want-to-know-more-about-the-Micro_8A1F/image_3.png" width="240" height="63" /&gt;The Advanced Certification Team at Microsoft Learning will &lt;a href="http://blogs.technet.com/b/themasterblog/archive/2012/01/23/live-mcm-program-overviews-by-the-mcm-mca-program-managers.aspx" target="_blank"&gt;start a new Live Meeting series&lt;/a&gt; where you can learn more about the &lt;a href="http://www.microsoft.com/learning/en/us/certification/master.aspx" target="_blank"&gt;Microsoft Certified Master&lt;/a&gt; and &lt;a href="http://www.microsoft.com/learning/en/us/certification/architect.aspx" target="_blank"&gt;Microsoft Certified Architect&lt;/a&gt; programs. It will be regularly held meetings where they will go into details about the programs. The program managers will make you understand the program mission and vision, how to prepare for a certification, how to apply for participation and the value of the programs. If you're interested in one or more of these programs I recommend you to attend one of the live meetings or watch the recordings. Of course attending the live meetings will allow you to directly ask questions to the program managers!&lt;/p&gt;  &lt;p&gt;There will be live meetings for each product category (&lt;a href="http://www.microsoft.com/learning/en/us/certification/master-sharepoint.aspx" target="_blank"&gt;SharePoint Server 2010&lt;/a&gt;, &lt;a href="http://www.microsoft.com/learning/en/us/certification/master-lync.aspx" target="_blank"&gt;Lync Server 2010&lt;/a&gt;, &lt;a href="http://www.microsoft.com/learning/en/us/certification/master-exchange.aspx" target="_blank"&gt;Exchange 2010&lt;/a&gt;, &lt;a href="http://www.microsoft.com/learning/en/us/certification/master-sql.aspx" target="_blank"&gt;SQL Server 2008&lt;/a&gt; and &lt;a href="http://www.microsoft.com/learning/en/us/certification/master-windowsserver.aspx" target="_blank"&gt;Active Directory&lt;/a&gt;).&lt;/p&gt;  &lt;p&gt;To register for one of the live meetings head on over to the &lt;a href="https://msevents.microsoft.com/cui/SearchDisplay.aspx?culture=en-us#culture=en-us;kwdAny=advcert;eventType=0;searchcontrol=yes;s=1" target="_blank"&gt;Microsoft World Wide Events site and get your slot&lt;/a&gt;. Currently there are two planned sessions:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;2012-02-10: &lt;a href="https://msevents.microsoft.com/CUI/EventDetail.aspx?EventID=1032503908&amp;culture=en-us" target="_blank"&gt;SharePoint 2010 MCM Overview&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;2012-02-15: &lt;a href="https://msevents.microsoft.com/CUI/EventDetail.aspx?EventID=1032504857&amp;culture=en-us" target="_blank"&gt;Exchange 2010 MCM Overview&lt;/a&gt; &lt;/li&gt; &lt;/ul&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/DpDSnIc6g5psRGlH3rXH4lrVnZw/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/DpDSnIc6g5psRGlH3rXH4lrVnZw/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/DpDSnIc6g5psRGlH3rXH4lrVnZw/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/DpDSnIc6g5psRGlH3rXH4lrVnZw/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/WictorWilen?a=Svvjv5Dj44Q:0qwxz_FVLF8:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/WictorWilen?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/WictorWilen?a=Svvjv5Dj44Q:0qwxz_FVLF8:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/WictorWilen?i=Svvjv5Dj44Q:0qwxz_FVLF8:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/WictorWilen?a=Svvjv5Dj44Q:0qwxz_FVLF8:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/WictorWilen?i=Svvjv5Dj44Q:0qwxz_FVLF8:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/WictorWilen?a=Svvjv5Dj44Q:0qwxz_FVLF8:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/WictorWilen?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/WictorWilen?a=Svvjv5Dj44Q:0qwxz_FVLF8:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/WictorWilen?i=Svvjv5Dj44Q:0qwxz_FVLF8:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/WictorWilen/~4/Svvjv5Dj44Q" height="1" width="1"/&gt;</description><atom:author xmlns:atom="http://www.w3.org/2005/Atom">
                    <atom:name>Wictor Wilén</atom:name>
                </atom:author><atom:published xmlns:atom="http://www.w3.org/2005/Atom">2012-01-26 22:03:40Z</atom:published><atom:updated xmlns:atom="http://www.w3.org/2005/Atom">2012-01-26 22:03:40Z</atom:updated><slash:comments xmlns:slash="http://purl.org/rss/1.0/modules/slash/">0</slash:comments><trackback:ping xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/">http://www.wictorwilen.se/trackback.aspx?id=624</trackback:ping><feedburner:origLink>http://www.wictorwilen.se/Post/Do-you-want-to-know-more-about-the-Microsoft-Certified-Master-or-Architect-programs.aspx</feedburner:origLink></item><item><title>Encrypted e-mails causes corrupted Crawled Properties in SharePoint 2010 Search Service Applications</title><link>http://feedproxy.google.com/~r/WictorWilen/~3/x3yWR1ek1xU/Encrypted-emails-causes-corrupted-Crawled-Properties-in-SharePoint-2010-Search-Service-Applications.aspx</link><category>SharePoint 2010</category><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Wictor Wilén</dc:creator><pubDate>Tue, 17 Jan 2012 21:45:55 PST</pubDate><guid isPermaLink="false">http://www.wictorwilen.se/Post/Encrypted-emails-causes-corrupted-Crawled-Properties-in-SharePoint-2010-Search-Service-Applications.aspx</guid><description>&lt;p&gt;For a couple of weeks (ahem, months) I've been struggling with a strange Search Service Application issue. Some time back I went to check out on some Crawled Properties when making a tool to help copying settings between SSA's (more on this tool in another post). Then I noticed that there were tons of Crawled Properties with just garbled binary data(!) as the property name. &lt;/p&gt;  &lt;p&gt;&lt;img style="display: inline" title="Corrupt Crawled Properties" alt="Corrupt Crawled Properties" src="http://www.wictorwilen.se/Windows-Live-Writer/Encrypted-e-mails-causes-corrupted-Crawl_E5FE/SNAGHTML132c509_1.png" width="406" height="101" /&gt;&lt;/p&gt;  &lt;p&gt;I searched like crazy for a while to find where these came from, there was nothing in the logs of any kind related to this. I could not locate any documents related to the Crawled Properties. I could not delete them, somehow they are connected to some content (at least that's what the system says), but there were no document samples. I created a new SSA and crawled the same corpus and the same (almost) corrupted junk crawled properties appeared.&lt;/p&gt;  &lt;p&gt;A couple of days back I finally found out where they came from. With the grace from &lt;a href="http://www.microsoft.com" target="_blank"&gt;Microsoft&lt;/a&gt; support I did some queries on the SSA databases and found another crawled property that was inserted at the same time as these junk properties. This property had document samples! And those samples were e-mail .msg files. And specifically it was e-mails with encrypted content! I copied these files onto a brand new farm without any content and was able to reproduce the corrupted properties.&lt;/p&gt;  &lt;h3&gt;How to reproduce the corrupted Crawled Properties&lt;/h3&gt;  &lt;p&gt;&lt;a href="http://www.wictorwilen.se/Windows-Live-Writer/Encrypted-e-mails-causes-corrupted-Crawl_E5FE/image_4.png"&gt;&lt;img style="margin: 0px 0px 0px 5px; display: inline; float: right" title="Encrypted e-mail message" alt="Encrypted e-mail message" align="right" src="http://www.wictorwilen.se/Windows-Live-Writer/Encrypted-e-mails-causes-corrupted-Crawl_E5FE/image_thumb_1.png" width="329" height="74" /&gt;&lt;/a&gt;To verify that this had to do with encrypted e-mail messages, and just not the ones I found; I encrypted an e-mail, sent it to myself and exported it as an .msg file. I took this .msg file and added it to a document library in a hot new VM (yea, I only got new ones since I had to rebuild all my VM's last weekend due to a corruption issue on one of my base images). Then I fired of a full crawl, with full logging enabled, and watched the Crawled Properties of the SSA. And as expected they showed up after just a minute.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.wictorwilen.se/Windows-Live-Writer/Encrypted-e-mails-causes-corrupted-Crawl_E5FE/SNAGHTML13c5315.png"&gt;&lt;img style="display: inline" title="Corrupt Crawled Properties" alt="Corrupt Crawled Properties" src="http://www.wictorwilen.se/Windows-Live-Writer/Encrypted-e-mails-causes-corrupted-Crawl_E5FE/SNAGHTML13c5315_thumb.png" width="650" height="151" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;So, be careful about having encrypted e-mail messages in your farm! Or prevent the issue...&lt;/p&gt;  &lt;h3&gt;How to prevent the issue &lt;/h3&gt;  &lt;p&gt;So, how do I get rid of these corrupted properties? Unfortunately there is no good (supported) way, at the time of this writing, except deleting your SSA and create a new one and before crawling the data remove the files or create a Crawl Rule.&lt;/p&gt;  &lt;p&gt;If you already have these corrupted properties or if you want to prevent new corrupted properties you can create a Crawl Rule that excludes .msg files. That will help the situation - but you will not be able to search the .msg files (if they are encrypted you cannot search them anyways!).&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.wictorwilen.se/Windows-Live-Writer/Encrypted-e-mails-causes-corrupted-Crawl_E5FE/SNAGHTML1413d06.png"&gt;&lt;img style="display: inline" title="Crawl Rules" alt="Crawl Rules" src="http://www.wictorwilen.se/Windows-Live-Writer/Encrypted-e-mails-causes-corrupted-Crawl_E5FE/SNAGHTML1413d06_thumb.png" width="625" height="136" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;h3&gt;Summary&lt;/h3&gt;  &lt;p&gt;These corrupted properties does not do any harm. You cannot use them and you don't notice anything else on the SSA except that they are there and annoys you. Only thing I can think of is that if you have a lots of them, you can run into trouble. There is a limit of 500.000 crawled properties per SSA! Sounds a lot, but for two .msg files I saw about 1.600 corrupted properties!&lt;/p&gt;  &lt;p&gt;I hope this helps someone and I hope there will be a fix for this in the future - if that happens I'll update the post.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/VawZZLdakMIDrl2YM35raHgr3L8/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/VawZZLdakMIDrl2YM35raHgr3L8/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/VawZZLdakMIDrl2YM35raHgr3L8/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/VawZZLdakMIDrl2YM35raHgr3L8/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/WictorWilen?a=x3yWR1ek1xU:RnOkSmETrHk:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/WictorWilen?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/WictorWilen?a=x3yWR1ek1xU:RnOkSmETrHk:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/WictorWilen?i=x3yWR1ek1xU:RnOkSmETrHk:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/WictorWilen?a=x3yWR1ek1xU:RnOkSmETrHk:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/WictorWilen?i=x3yWR1ek1xU:RnOkSmETrHk:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/WictorWilen?a=x3yWR1ek1xU:RnOkSmETrHk:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/WictorWilen?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/WictorWilen?a=x3yWR1ek1xU:RnOkSmETrHk:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/WictorWilen?i=x3yWR1ek1xU:RnOkSmETrHk:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/WictorWilen/~4/x3yWR1ek1xU" height="1" width="1"/&gt;</description><atom:author xmlns:atom="http://www.w3.org/2005/Atom">
                    <atom:name>Wictor Wilén</atom:name>
                </atom:author><atom:published xmlns:atom="http://www.w3.org/2005/Atom">2012-01-18 05:45:55Z</atom:published><atom:updated xmlns:atom="http://www.w3.org/2005/Atom">2012-01-18 05:45:55Z</atom:updated><slash:comments xmlns:slash="http://purl.org/rss/1.0/modules/slash/">1</slash:comments><trackback:ping xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/">http://www.wictorwilen.se/trackback.aspx?id=623</trackback:ping><feedburner:origLink>http://www.wictorwilen.se/Post/Encrypted-emails-causes-corrupted-Crawled-Properties-in-SharePoint-2010-Search-Service-Applications.aspx</feedburner:origLink></item><item><title>Visual Studio 11 Developer Preview with the new SharePoint Developer tools</title><link>http://feedproxy.google.com/~r/WictorWilen/~3/JpBb0ge992U/Visual-Studio-11-Developer-Preview-with-the-new-SharePoint-Developer-tools.aspx</link><category>Visual Studio</category><category>SharePoint 2010</category><category>Office 365</category><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Wictor Wilén</dc:creator><pubDate>Mon, 09 Jan 2012 21:25:25 PST</pubDate><guid isPermaLink="false">http://www.wictorwilen.se/Post/Visual-Studio-11-Developer-Preview-with-the-new-SharePoint-Developer-tools.aspx</guid><description>&lt;p&gt;&lt;a href="http://www.wictorwilen.se/Windows-Live-Writer/Visual-Studio-2011_EE6C/image_2.png"&gt;&lt;img style="display: inline; float: right" title="image" alt="image" align="right" src="http://www.wictorwilen.se/Windows-Live-Writer/Visual-Studio-2011_EE6C/image_thumb.png" width="233" height="64" /&gt;&lt;/a&gt;&lt;a href="http://msdn.microsoft.com/en-us/vstudio/hh127353"&gt;Visual Studio 11 Developer Preview&lt;/a&gt; is now available for &lt;a href="http://www.microsoft.com/download/en/details.aspx?displaylang=en&amp;id=27543"&gt;download für alles&lt;/a&gt; and it does not only include the Windows 8 stuff like the previous preview did - this one contains the thing we all want - the SharePoint Developer tools.&lt;/p&gt;  &lt;p&gt;Overall the performance of Visual Studio 11 is blazingly fast! I regret I tested it - since I will go back to 2010 tomorrow (or even tonight). They team has done a great job and included a lot of the PowerTools natively; such as the new Solution Explorer, the improved search feature etc.&lt;/p&gt;  &lt;p&gt;But, back to the SharePoint Developer tools 11! What's new for all the kool kids! Here's a few highlights.&lt;/p&gt;  &lt;h3&gt;Content Type and List Designer&lt;/h3&gt;  &lt;p&gt;We all love our CAML, FieldRefs etc. But it isn't that productive. VS11 contains the long awaited Content Type Designer and also a very similar designer for Lists.&lt;/p&gt;  &lt;p&gt;This is how the designer looks like when you're creating a Content Type:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.wictorwilen.se/Windows-Live-Writer/Visual-Studio-2011_EE6C/SNAGHTML2c2462.png"&gt;&lt;img style="display: inline" title="The Content Type Designer" alt="The Content Type Designer" src="http://www.wictorwilen.se/Windows-Live-Writer/Visual-Studio-2011_EE6C/SNAGHTML2c2462_thumb.png" width="400" height="189" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;   &lt;br /&gt;When creating a list you have a great view to create Views:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.wictorwilen.se/Windows-Live-Writer/Visual-Studio-2011_EE6C/SNAGHTML2f4682.png"&gt;&lt;img style="display: inline" title="Create a list view" alt="Create a list view" src="http://www.wictorwilen.se/Windows-Live-Writer/Visual-Studio-2011_EE6C/SNAGHTML2f4682_thumb.png" width="400" height="300" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;h3&gt;Sandbox and Office 365 support&lt;/h3&gt;  &lt;p&gt;New features in the Office 365 space for Visual Studio was an easy bet. They have incorporated the things from the SharePoint Power Tools, such as better compile time support for the Sandbox etc. The best feature here is the Publish feature, which allows you to publish your package to a URL or local directory. You can now publish a SharePoint WSP directly to the sandbox in Office 365 - but you can't activate the solution from within Visual Studio.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.wictorwilen.se/Windows-Live-Writer/Visual-Studio-2011_EE6C/SNAGHTML34ab0e.png"&gt;&lt;img style="display: inline" title="Publish!" alt="Publish!" src="http://www.wictorwilen.se/Windows-Live-Writer/Visual-Studio-2011_EE6C/SNAGHTML34ab0e_thumb.png" width="450" height="292" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;h3&gt;Other improvements&lt;/h3&gt;  &lt;p&gt;There are much more improvements such as profiling support, better JavaScript debugging support etc. Read all about the new stuff here: &lt;a title="http://msdn.microsoft.com/en-us/library/ee290856(VS.110).aspx" href="http://msdn.microsoft.com/en-us/library/ee290856(VS.110).aspx"&gt;http://msdn.microsoft.com/en-us/library/ee290856(VS.110).aspx&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.microsoft.com/download/en/details.aspx?displaylang=en&amp;id=27543"&gt;But...you really need to test it out&lt;/a&gt;. I'm really looking forward to start working with projects in VS11!&lt;/p&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/Om-ZdivfSdQJW55Yr2rlpWISneg/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/Om-ZdivfSdQJW55Yr2rlpWISneg/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/Om-ZdivfSdQJW55Yr2rlpWISneg/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/Om-ZdivfSdQJW55Yr2rlpWISneg/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/WictorWilen?a=JpBb0ge992U:NZiPlBlmwrg:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/WictorWilen?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/WictorWilen?a=JpBb0ge992U:NZiPlBlmwrg:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/WictorWilen?i=JpBb0ge992U:NZiPlBlmwrg:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/WictorWilen?a=JpBb0ge992U:NZiPlBlmwrg:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/WictorWilen?i=JpBb0ge992U:NZiPlBlmwrg:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/WictorWilen?a=JpBb0ge992U:NZiPlBlmwrg:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/WictorWilen?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/WictorWilen?a=JpBb0ge992U:NZiPlBlmwrg:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/WictorWilen?i=JpBb0ge992U:NZiPlBlmwrg:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/WictorWilen/~4/JpBb0ge992U" height="1" width="1"/&gt;</description><atom:author xmlns:atom="http://www.w3.org/2005/Atom">
                    <atom:name>Wictor Wilén</atom:name>
                </atom:author><atom:published xmlns:atom="http://www.w3.org/2005/Atom">2012-01-10 05:25:25Z</atom:published><atom:updated xmlns:atom="http://www.w3.org/2005/Atom">2012-01-10 05:25:25Z</atom:updated><slash:comments xmlns:slash="http://purl.org/rss/1.0/modules/slash/">3</slash:comments><trackback:ping xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/">http://www.wictorwilen.se/trackback.aspx?id=622</trackback:ping><feedburner:origLink>http://www.wictorwilen.se/Post/Visual-Studio-11-Developer-Preview-with-the-new-SharePoint-Developer-tools.aspx</feedburner:origLink></item><item><title>Scheduled incremental crawls suddenly stopped due to a stale Timer Service in SharePoint 2010</title><link>http://feedproxy.google.com/~r/WictorWilen/~3/nKVfM9kGGXA/Scheduled-incremental-crawls-suddenly-stopped-due-to-a-stale-Timer-Service-in-SharePoint-2010.aspx</link><category>SharePoint 2010</category><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Wictor Wilén</dc:creator><pubDate>Mon, 02 Jan 2012 13:36:11 PST</pubDate><guid isPermaLink="false">http://www.wictorwilen.se/Post/Scheduled-incremental-crawls-suddenly-stopped-due-to-a-stale-Timer-Service-in-SharePoint-2010.aspx</guid><description>&lt;p&gt;It is always fun to get back on site after a couple of days off work. &lt;a href="http://sharepoint.microsoft.com/" target="_blank"&gt;SharePoint 2010&lt;/a&gt; is like an annoying little critter, if you're not there to cuddle with it it will do the most strange things.&lt;/p&gt;  &lt;p&gt;I currently have a support case open regarding some issues with crawled properties (I hope that will be another story to tell another day) and went into the Search Service Application admin pages in Central Admin to check some things. When poking around I noticed that the incremental crawl hasn't been run for a few days - actually it stopped working on the 31st of December last year (sounds like ages ago now :-). In this farm we have three Search Service Applications and only this one hadn't been incrementally crawled - the other two worked just fine. I fired up an incremental crawl manually and that worked, waited for the next incremental crawl to start - and it didn't. Also tried a full crawl manually - which worked fine, but the scheduled crawls never started.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.wictorwilen.se/Windows-Live-Writer/Scheduled-incremental-crawls-suddenly-st_7795/image_2.png"&gt;&lt;img style="background-image: none; border-right-width: 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="Crawl History" border="0" alt="Crawl History" src="http://www.wictorwilen.se/Windows-Live-Writer/Scheduled-incremental-crawls-suddenly-st_7795/image_thumb.png" width="604" height="116" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;I searched through the trace logs and event logs and found nothing that I didn't expect to see.&lt;/p&gt;  &lt;p&gt;I tried to Synchronize() the Search Service Instances - which I've previously done when similar stuff happened by running some PowerShell snippets on the servers in the farm. Nothing happened!&lt;/p&gt;  &lt;p&gt;Ok, what is actually triggering the incremental crawls then? It is triggered by timer jobs called &lt;em&gt;Indexing Schedule Manager on XXX&lt;/em&gt;, and there is one job per server. In this case we have two servers running search and I took a look at them and noticed that one of these jobs hadn't been run since the last scheduled crawl - while the other one had been running all the time (every 5 minutes).&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.wictorwilen.se/Windows-Live-Writer/Scheduled-incremental-crawls-suddenly-st_7795/SNAGHTML4c773544.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="Index Schedule Manager Timer Job" border="0" alt="Index Schedule Manager Timer Job" src="http://www.wictorwilen.se/Windows-Live-Writer/Scheduled-incremental-crawls-suddenly-st_7795/SNAGHTML4c773544_thumb.png" width="400" height="204" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;I tried starting the timer job both through the Central Admin web UI and through PowerShell -but it just refused to start. Now this is strange! Now I took a look at the Timer Job History on this specific server and noticed that no timer jobs had been executed on that specific machine since that time when the scheduled crawl last was executed. Thankfully the trace logs were there and I could see that just after 2:00 AM on the 31st of December the Timer Service stopped working (no references to owstimer.exe at all since then). There's no warning or error or nothing that indicates that it would have stopped working (and the sptimerv4 service was still running on the machine). The only thing in there was a warning about a Forefront conflict. Nevertheless I needed to get it working and currently don't have time to spend on why this happened (if it happens again, then let's dig deeper). &lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.wictorwilen.se/Windows-Live-Writer/Scheduled-incremental-crawls-suddenly-st_7795/SNAGHTML4c91bfd7.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="Timer Job History" border="0" alt="Timer Job History" src="http://www.wictorwilen.se/Windows-Live-Writer/Scheduled-incremental-crawls-suddenly-st_7795/SNAGHTML4c91bfd7_thumb.png" width="600" height="161" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;I tried to do a restart-service sptimerv4 on the failing machine, without luck, it couldn't be gracefully shut down. So I actually had to kill the owstimer.exe process and then start the timer service.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.wictorwilen.se/Windows-Live-Writer/Scheduled-incremental-crawls-suddenly-st_7795/SNAGHTML4c8bcdfa.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="I will not stop!" border="0" alt="I will not stop!" src="http://www.wictorwilen.se/Windows-Live-Writer/Scheduled-incremental-crawls-suddenly-st_7795/SNAGHTML4c8bcdfa_thumb.png" width="400" height="238" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Once the timer service was killed and started everything spun up and the incremental crawled kicked in after a couple of minutes and have been working perfect since then.&lt;/p&gt;  &lt;p&gt;Interesting thing here was that I did not see any early warning signs, errors in the logs or similar, and the only way we found out that the Timer process had gone into a stale state was that the scheduled crawl for ONE of the Search Service Applications was not running.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/PRZrdloJ7sz5u6D94Wi5M12JN7I/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/PRZrdloJ7sz5u6D94Wi5M12JN7I/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/PRZrdloJ7sz5u6D94Wi5M12JN7I/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/PRZrdloJ7sz5u6D94Wi5M12JN7I/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/WictorWilen?a=nKVfM9kGGXA:y7DPPeRBtRw:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/WictorWilen?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/WictorWilen?a=nKVfM9kGGXA:y7DPPeRBtRw:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/WictorWilen?i=nKVfM9kGGXA:y7DPPeRBtRw:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/WictorWilen?a=nKVfM9kGGXA:y7DPPeRBtRw:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/WictorWilen?i=nKVfM9kGGXA:y7DPPeRBtRw:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/WictorWilen?a=nKVfM9kGGXA:y7DPPeRBtRw:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/WictorWilen?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/WictorWilen?a=nKVfM9kGGXA:y7DPPeRBtRw:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/WictorWilen?i=nKVfM9kGGXA:y7DPPeRBtRw:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/WictorWilen/~4/nKVfM9kGGXA" height="1" width="1"/&gt;</description><atom:author xmlns:atom="http://www.w3.org/2005/Atom">
                    <atom:name>Wictor Wilén</atom:name>
                </atom:author><atom:published xmlns:atom="http://www.w3.org/2005/Atom">2012-01-02 21:36:11Z</atom:published><atom:updated xmlns:atom="http://www.w3.org/2005/Atom">2012-01-02 21:36:11Z</atom:updated><slash:comments xmlns:slash="http://purl.org/rss/1.0/modules/slash/">0</slash:comments><trackback:ping xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/">http://www.wictorwilen.se/trackback.aspx?id=621</trackback:ping><feedburner:origLink>http://www.wictorwilen.se/Post/Scheduled-incremental-crawls-suddenly-stopped-due-to-a-stale-Timer-Service-in-SharePoint-2010.aspx</feedburner:origLink></item><item><title>Summing up the year of 2011 and embracing 2012</title><link>http://feedproxy.google.com/~r/WictorWilen/~3/TuWf1fKuvRQ/Summing-up-the-year-of-2011-and-embracing-2012.aspx</link><category>Personal</category><category>SharePoint 2010</category><category>SharePoint 2010 Web Parts in Action</category><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Wictor Wilén</dc:creator><pubDate>Mon, 26 Dec 2011 19:43:10 PST</pubDate><guid isPermaLink="false">http://www.wictorwilen.se/Post/Summing-up-the-year-of-2011-and-embracing-2012.aspx</guid><description>&lt;p&gt;It's that time of the year, when you're thinking about what you've done and accomplished the last twelve months. I've been writing a summary for the last five years (&lt;a href="http://www.wictorwilen.se/Post/Happy-new-year.aspx" target="_blank"&gt;2006&lt;/a&gt;, &lt;a href="http://www.wictorwilen.se/Post/Summing-up-the-year-of-2007-and-embracing-2008.aspx" target="_blank"&gt;2007&lt;/a&gt;, &lt;a href="http://www.wictorwilen.se/Post/Summing-up-the-year-of-2008-and-embracing-2009.aspx" target="_blank"&gt;2008&lt;/a&gt;, &lt;a href="http://www.wictorwilen.se/Post/Summing-up-the-year-of-2009-and-embracing-2010.aspx" target="_blank"&gt;2009&lt;/a&gt; and &lt;a href="http://www.wictorwilen.se/Post/Summing-up-the-year-of-2010-and-embracing-2011.aspx" target="_blank"&gt;2010&lt;/a&gt;) and I always think it's fun to look back at the year gone and do some predictions for the upcoming one.&lt;/p&gt;  &lt;p&gt;This year has been totally crazy - I've been enjoying my work and clients/projects at &lt;a href="http://www.connecta.se" target="_blank"&gt;Connecta&lt;/a&gt; and I totally love that we have such a strong team and offering. I can really feel the momentum we have in our team and projects, and nothing is stopping us now...&lt;/p&gt;  &lt;h3&gt;Writing&lt;/h3&gt;  &lt;p&gt;As usual I've been jotting down a couple of blog posts, some better than others (IMO) and unfortunately there are several that I just haven't had time to publish. I have on average 1.000 subscribers to my feed and a whole lot of other users finding my writings through the search engines - thank you all readers! These are the top ones for the last 12 months.&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;&lt;a href="http://www.wictorwilen.se/Post/Calling-a-WCF-Service-using-jQuery-in-SharePoint-the-correct-way.aspx" target="_blank"&gt;Calling a WCF service using jQuery in SharePoint - the correct way&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.wictorwilen.se/Post/Working-with-URLs-in-SharePoint-2010-JavaScripts.aspx" target="_blank"&gt;Working with URLs in SharePoint 2010 JavaScripts&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.wictorwilen.se/Post/SharePoint-2010-Ribbon-Controls-Part-4-The-TextBox-Control.aspx" target="_blank"&gt;SharePoint 2010 Ribbon Controls - Part 4 - The TextBox control&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.wictorwilen.se/Post/SharePoint-2010-Ribbon-Controls-Part-5-The-Button-control.aspx" target="_blank"&gt;SharePoint 2010 Ribbon Controls - Part 5 - The Button control&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.wictorwilen.se/Post/Improve-performance-of-your-SharePoint-2010-applications-using-Windows-Server-AppFabric-caching.aspx" target="_blank"&gt;Improve performance of your SharePoint 2010 applications using Windows Server AppFabric caching&lt;/a&gt; &lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;Interesting to see jQuery and JavaScript posts topping the list - might give us a hint on what's been popular this year... The post that still is #1 is the &lt;a href="http://www.wictorwilen.se/Post/Fix-the-SharePoint-DCOM-10016-error-on-Windows-Server-2008-R2.aspx" target="_blank"&gt;Fix the SharePoint DCOM 10016 error on Windows Server 2008 R2&lt;/a&gt; (remember where you read this first :-).&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.amazon.com/SharePoint-2010-Web-Parts-Action/dp/1935182773/ref=as_li_wdgt_js_ex?&amp;linkCode=wey&amp;tag=wictwile-20"&gt;&lt;img style="margin: 0px 0px 0px 5px; display: inline; float: right" title="SharePoint 2010 Web Parts in Action" alt="SharePoint 2010 Web Parts in Action" align="right" src="http://www.wictorwilen.se/Windows-Live-Writer/Summing-up-the-year-of-2011-and-embracin_C788/SNAGHTML137c5dce_1.png" width="400" height="229" /&gt;&lt;/a&gt;I also finally got my book &lt;a href="http://www.sharepointwebpartsinaction.com/" target="_blank"&gt;SharePoint 2010 Web Parts in Action&lt;/a&gt; published in April. It took over a year of writing, re-writing, testing, reviewing etc etc to get it done. And when the books finally arrived in printed form it was such a great feeling. It's a tough competition on SharePoint books nowadays, and I'm glad to see quite good sales figures and especially great reviews (if you haven't already - head on to &lt;a href="http://www.amazon.com/SharePoint-2010-Web-Parts-Action/dp/1935182773/ref=as_li_wdgt_js_ex?&amp;linkCode=wey&amp;tag=wictwile-20"&gt;Amazon and tell me what you think&lt;/a&gt;).&lt;/p&gt;  &lt;h3&gt;MVP again...&lt;/h3&gt;  &lt;p&gt;In April I was &lt;a href="http://www.wictorwilen.se/Post/SharePoint-MVP-for-another-year.aspx" target="_blank"&gt;re-awarded&lt;/a&gt; the &lt;a href="http://www.microsoft.com" target="_blank"&gt;Microsoft&lt;/a&gt; Most Valuable Professional - SharePoint Server award. This is an award for your on- and offline community contributions. Being a part of the SharePoint MVP community is great and gives you a lot of amazing contacts with some great people. &lt;/p&gt;  &lt;h3&gt;The Master!&lt;/h3&gt;  &lt;p&gt;The MCM - Microsoft Certified Master - program was the highlight of the year! In April/May I attended the R8 rotation of the &lt;a href="http://sharepoint.microsoft.com/"&gt;SharePoint 2010&lt;/a&gt; MCM program which was three long and tiresome weeks with best-in-breed SharePoint training by the best of the best. I passed all three written exams and the qualification lab on first attempt and was allows to call my self a SharePoint 2010 MCM in the end of May. Since that rotation I've really felt that my SharePoint skills and confidence has improved - and I do think that also my customers feel the same. I did a &lt;a href="http://www.wictorwilen.se/Post/Microsoft-Certified-Master-SharePoint-2010-thoughts-and-reflections.aspx" target="_blank"&gt;post about my experiences of the MCM program&lt;/a&gt; a couple of months back - and if you're interested &lt;a href="http://www.wictorwilen.se/Post/Microsoft-Certified-Master-SharePoint-2010-thoughts-and-reflections.aspx" target="_blank"&gt;go ahead and read it&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;&lt;img style="display: block; float: none; margin-left: auto; margin-right: auto" title="MCM" alt="MCM" src="http://www.wictorwilen.se/Windows-Live-Writer/Summing-up-the-year-of-2011-and-embracin_C788/MCM(rgb)_1406_3.png" width="274" height="60" /&gt;&lt;/p&gt;  &lt;h3&gt;Conferences and travels&lt;/h3&gt;  &lt;p&gt;This year has also been filled with a lot of conferences and travelling. First of all in march all &lt;a href="http://mvp.support.microsoft.com/" target="_blank"&gt;MVP&lt;/a&gt;'s met up in Redmond, at the Microsoft campus, for the annual MVP Summit. This was my first visit to Redmond and the summit and I met a lot of the people I've only met through the online world previously. I had a blast with paintball, late nights and beers talking to some really great friends. A couple of months later I went back to Redmond for the MCM - the weather was the same as in March! October and November was quite hectic with another trip over the pond to the &lt;a href="http://www.wictorwilen.se/Post/SharePoint-Conference-2011-wrapup.aspx" target="_blank"&gt;SPC 2011&lt;/a&gt;, a trip to the European SharePoint Conference in Berlin and finally the Southeast Asia SharePoint Conference in Singapore. I also managed to do a couple of conferences on home turf as well.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.internationalsharepointconference.com/Pages/default.aspx"&gt;&lt;img style="background-image: none; border-right-width: 0px; margin: 0px 0px 0px 5px; padding-left: 0px; padding-right: 0px; display: inline; float: right; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="The International SharePoint Conference 2012" border="0" alt="The International SharePoint Conference 2012" align="right" src="http://www.wictorwilen.se/Windows-Live-Writer/Summing-up-the-year-of-2011-and-embracin_C788/image_3.png" width="185" height="72" /&gt;&lt;/a&gt;I've already planned a couple of trips for 2012 - at least two trips to US again, one is the SPC 2012 in Las Vegas where I hope to meet a lot of you. I have also planned a trip to London in late April for the &lt;a href="http://www.internationalsharepointconference.com/Pages/default.aspx" target="_blank"&gt;International SharePoint Conference&lt;/a&gt;. This will be an extraordinary conference with two really cool tracks - one IT-pro and one dev, where we'll build one big solution during three days. I promise to get back to you with more information about it as soon as it's available.&lt;/p&gt;  &lt;h3&gt;SharePoint&lt;/h3&gt;  &lt;p&gt;Yea, as usual this year has been all about SharePoint for me. I've seen the product mature, I've learnt more about it (again) than I ever could expect and I see a huge and increasing demand for the platform. If you're new in IT - bet on SharePoint!    &lt;br /&gt;We've also seen the birth of Office 365. I'm running both my work and personal e-mail in the hosted Exchange solution and I'm very satisfied. This fall I've spent a lot of time with SharePoint Online trying to do real work and deployments. To put in in nice words I should say that &lt;em&gt;I'm more of an on-premise guy!&lt;/em&gt;&lt;/p&gt;  &lt;h3&gt;Predictions&lt;/h3&gt;  &lt;p&gt;In these recap posts I've done some predictions for the upcoming year. &lt;a href="http://www.wictorwilen.se/Post/Summing-up-the-year-of-2010-and-embracing-2011.aspx" target="_blank"&gt;I had three last year&lt;/a&gt; and I was right about two of them: Windows 8 is communicated and with Hyper-V support.  &lt;br /&gt;I've been thinking quite hard on what predictions to have this year, trying not to reveal anything or stating anything obvious. So here are my predictions for 2012.&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;strong&gt;Silverlight will die!&lt;/strong&gt; - yeah, Microsoft haven't put it in those words, but that's what's going to happen. We'll probably see Silverlight doing it lasts breaths on the Windows Phone &lt;u&gt;7&lt;/u&gt; platform though. HTML5 and JavaScript will take over. &lt;/li&gt;    &lt;li&gt;&lt;strong&gt;Second Browser World War&lt;/strong&gt; - for a couple of years browsers have tried to strive for a common standard, and Internet Explorer has finally caught up. Since the HTML5 standard is far from standardized we will see Firefox, Chrome, Safari and IE add its own proprietary "interpretations" of the standard which will diversify the browser world once again. It's already happening, unfortunately... &lt;/li&gt;    &lt;li&gt;&lt;strong&gt;Windows Phone momentum&lt;/strong&gt; - I do think that the movement of Windows Phone 7+ will finally accelerate 2012. Great hardware, Nokia, great apps, unlimited marketing money and people getting bored of icons in a row are a few of the reasons. And I never ever had my WP7 phone crash - but for the Android devices we have in the family it's a part of the daily routine...&lt;/li&gt;    &lt;li&gt;&lt;strong&gt;Less cloudy&lt;/strong&gt; - this is more of a wish than a prediction but I do hope that 2012 will be less cloudy. I'm so fed up with the term "cloud"! Of course hosted services will still be a major option but I do think that more and more customers are going to look at internal hosting and/or hybrid solutions. &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;What do you think?&lt;/p&gt;  &lt;h3&gt;Thank you and a happy new year&lt;/h3&gt;  &lt;p&gt;So, I do not think I will be posting anything more this year! It's been a fantastic year but I'm sure 2012 will beat 2011 big time. Thank you all readers and followers and thank you to all new friends I've met throughout this year and thank you to everyone supporting me and has to put up with late night IM's or e-mails (you know who you are!).&lt;/p&gt;  &lt;p&gt;Now, enjoy your last days of 2011 and have really great New Years Eve - I know I will (even though enjoy incorporates some work!).&lt;/p&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/mw_mZd2ENAZkk09Nzt0C4IvUQp8/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/mw_mZd2ENAZkk09Nzt0C4IvUQp8/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/mw_mZd2ENAZkk09Nzt0C4IvUQp8/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/mw_mZd2ENAZkk09Nzt0C4IvUQp8/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/WictorWilen?a=TuWf1fKuvRQ:l_vvJ5lZGIE:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/WictorWilen?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/WictorWilen?a=TuWf1fKuvRQ:l_vvJ5lZGIE:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/WictorWilen?i=TuWf1fKuvRQ:l_vvJ5lZGIE:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/WictorWilen?a=TuWf1fKuvRQ:l_vvJ5lZGIE:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/WictorWilen?i=TuWf1fKuvRQ:l_vvJ5lZGIE:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/WictorWilen?a=TuWf1fKuvRQ:l_vvJ5lZGIE:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/WictorWilen?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/WictorWilen?a=TuWf1fKuvRQ:l_vvJ5lZGIE:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/WictorWilen?i=TuWf1fKuvRQ:l_vvJ5lZGIE:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/WictorWilen/~4/TuWf1fKuvRQ" height="1" width="1"/&gt;</description><atom:author xmlns:atom="http://www.w3.org/2005/Atom">
                    <atom:name>Wictor Wilén</atom:name>
                </atom:author><atom:published xmlns:atom="http://www.w3.org/2005/Atom">2011-12-27 03:43:10Z</atom:published><atom:updated xmlns:atom="http://www.w3.org/2005/Atom">2011-12-27 03:43:10Z</atom:updated><slash:comments xmlns:slash="http://purl.org/rss/1.0/modules/slash/">1</slash:comments><trackback:ping xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/">http://www.wictorwilen.se/trackback.aspx?id=620</trackback:ping><feedburner:origLink>http://www.wictorwilen.se/Post/Summing-up-the-year-of-2011-and-embracing-2012.aspx</feedburner:origLink></item><item><title>Suddenly getting Access Denied on your SharePoint 2010 User Profile Sync</title><link>http://feedproxy.google.com/~r/WictorWilen/~3/ZS8i4LnfFS0/Suddenly-getting-Access-Denied-on-your-SharePoint-2010-User-Profile-Sync.aspx</link><category>Security</category><category>SharePoint 2010</category><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Wictor Wilén</dc:creator><pubDate>Sat, 17 Dec 2011 15:57:32 PST</pubDate><guid isPermaLink="false">http://www.wictorwilen.se/Post/Suddenly-getting-Access-Denied-on-your-SharePoint-2010-User-Profile-Sync.aspx</guid><description>&lt;p&gt;The last week I stumbled upon a really interesting new and shiny User Profile Synchronization issue - one of these things that just make your day! We had to manually initialize a full synchronization, after doing some updates to one of the user profile properties, and the user profile synchronization would not just start...&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.wictorwilen.se/Windows-Live-Writer/Suddenly-getting-Access-Denied-on-your-S_9AD3/SNAGHTMLaed6b49.png"&gt;&lt;img style="display: inline; float: right" title="Timer Job - Access Denied" alt="Timer Job - Access Denied" align="right" src="http://www.wictorwilen.se/Windows-Live-Writer/Suddenly-getting-Access-Denied-on-your-S_9AD3/SNAGHTMLaed6b49_thumb.png" width="332" height="186" /&gt;&lt;/a&gt;Everything looked fine (on the surface) and we tried the incremental sync, which also looked like it was starting but nothing happened. The sync service was up and running and the FIM services was started, the MIISClient showed no activity. We took a look at the timer jobs, which are responsible for kicking of the synchronizations and saw that they all failed with the error message &lt;strong&gt;Access Denied&lt;/strong&gt;.&lt;/p&gt;  &lt;p&gt;No more than this simple error message. Since the timer jobs are executed using the Farm Account this sounded very peculiar. Oh, and you who still have your Farm Account in the local administrators group would probably never see this error, you'll be aware of this in a minute!&lt;/p&gt;  &lt;p&gt;Next resort was to dig in to the trace logs (ULS), using my favorite SharePoint tool: &lt;a href="http://archive.msdn.microsoft.com/ULSViewer" target="_blank"&gt;ULSViewer&lt;/a&gt;. And there we had a Critical and an Unexpected entry, related to this Access Denied error message. &lt;a href="http://www.wictorwilen.se/Windows-Live-Writer/Suddenly-getting-Access-Denied-on-your-S_9AD3/SNAGHTMLaf06e07.png"&gt;&lt;img style="display: inline" title="ULS Logs" alt="ULS Logs" src="http://www.wictorwilen.se/Windows-Live-Writer/Suddenly-getting-Access-Denied-on-your-S_9AD3/SNAGHTMLaf06e07_thumb.png" width="628" height="72" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;The accompanying stack trace showed me that it was some problems getting the instance of the Management Agents.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.wictorwilen.se/Windows-Live-Writer/Suddenly-getting-Access-Denied-on-your-S_9AD3/SNAGHTMLaf36908.png"&gt;&lt;img style="display: inline" title="Stack Trace" alt="Stack Trace" src="http://www.wictorwilen.se/Windows-Live-Writer/Suddenly-getting-Access-Denied-on-your-S_9AD3/SNAGHTMLaf36908_thumb.png" width="575" height="171" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Time to fire up my second best SharePoint tool: &lt;a href="http://www.red-gate.com/products/reflector/" target="_blank"&gt;Reflector&lt;/a&gt;! Peeking into the failing method in the User Profile assembly revealed that the Access Denied was thrown while trying to retrieve the MA's using WMI. Now, this sounds really weird. As usual nothing has been changed in the farm (and this time I knew it for a fact) - but you should always check with the admins, which I did and no new policies or similar had been applied to any machines recently.&lt;/p&gt;  &lt;p&gt;On the machine that hosted the sync service/FIM Services I started a Management Console and added the WMI snap-in and took a look at the Security tab for the local machine. And this is what I found:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.wictorwilen.se/Windows-Live-Writer/Suddenly-getting-Access-Denied-on-your-S_9AD3/image_4.png"&gt;&lt;img style="display: inline" title="Weird WMI permissons" alt="Weird WMI permissons" src="http://www.wictorwilen.se/Windows-Live-Writer/Suddenly-getting-Access-Denied-on-your-S_9AD3/image_thumb_1.png" width="400" height="232" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;The security settings for the &lt;strong&gt;MicrosoftIdentityIntegrationServer&lt;/strong&gt; looked not just right, it more or less looked liked the default WMI security settings. (And as you can see the Administrators group is there - so that's why you who still have the farm account in the administrators group, probably never see this error...). A quick comparison with the identical staging environment showed a whole lot more permissions.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.wictorwilen.se/Windows-Live-Writer/Suddenly-getting-Access-Denied-on-your-S_9AD3/image_6.png"&gt;&lt;img style="display: inline" title="Correct WMI permissions" alt="Correct WMI permissions" src="http://www.wictorwilen.se/Windows-Live-Writer/Suddenly-getting-Access-Denied-on-your-S_9AD3/image_thumb_2.png" width="281" height="302" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;To be exact the following permissions did not exist for the environment that showed the Access Denied:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;strong&gt;WSS_ADMIN_WPG &lt;/strong&gt;group - Execute Methods, Provider Write, Enable Account, Remote Enable &lt;/li&gt;    &lt;li&gt;&lt;strong&gt;FIMSyncOperators&lt;/strong&gt; group - Execute Methods, Provider Write, Enable Account, Remote Enable &lt;/li&gt;    &lt;li&gt;&lt;strong&gt;FIMSyncBrowse &lt;/strong&gt;group - Execute Methods, Provider Write, Enable Account, Remote Enable &lt;/li&gt;    &lt;li&gt;&lt;strong&gt;FIMSyncPasswordSet &lt;/strong&gt;group - Execute Methods, Provider Write, Enable Account, Remote Enable &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;I fixed the permissions using the WMI management console, went back to Central Admin and started the synchronization manually and within a minute the synchronization was running beautifully!&lt;/p&gt;  &lt;p&gt;&lt;font color="#ff0000"&gt;I do not know about any supportability on this one - and you should NOT be doing this unless you really have to. A safer way might be to unprovision and reprovision the User Profile Synchronization Service - this should correctly set this permissions. &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;So, what caused this then? I've not yet found the actual source of the problem (which is frustrating to me at least), but I now how to fix it if it appears. Safe sources tell me that this might happen when you're doing a backup of the UPSS (and this is done in the correct way, which stops and starts the UPSS so no ongoing syncs are interfering with the backup). Question remains open...&lt;/p&gt;  &lt;p&gt;Happy Christmas everyone!&lt;/p&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/Yz4AGzOV3fx_kxzK4bW9IOSZ5LU/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/Yz4AGzOV3fx_kxzK4bW9IOSZ5LU/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/Yz4AGzOV3fx_kxzK4bW9IOSZ5LU/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/Yz4AGzOV3fx_kxzK4bW9IOSZ5LU/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/WictorWilen?a=ZS8i4LnfFS0:vlZww9pjFfw:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/WictorWilen?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/WictorWilen?a=ZS8i4LnfFS0:vlZww9pjFfw:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/WictorWilen?i=ZS8i4LnfFS0:vlZww9pjFfw:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/WictorWilen?a=ZS8i4LnfFS0:vlZww9pjFfw:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/WictorWilen?i=ZS8i4LnfFS0:vlZww9pjFfw:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/WictorWilen?a=ZS8i4LnfFS0:vlZww9pjFfw:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/WictorWilen?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/WictorWilen?a=ZS8i4LnfFS0:vlZww9pjFfw:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/WictorWilen?i=ZS8i4LnfFS0:vlZww9pjFfw:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/WictorWilen/~4/ZS8i4LnfFS0" height="1" width="1"/&gt;</description><atom:author xmlns:atom="http://www.w3.org/2005/Atom">
                    <atom:name>Wictor Wilén</atom:name>
                </atom:author><atom:published xmlns:atom="http://www.w3.org/2005/Atom">2011-12-17 23:57:32Z</atom:published><atom:updated xmlns:atom="http://www.w3.org/2005/Atom">2011-12-17 23:57:32Z</atom:updated><slash:comments xmlns:slash="http://purl.org/rss/1.0/modules/slash/">3</slash:comments><trackback:ping xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/">http://www.wictorwilen.se/trackback.aspx?id=619</trackback:ping><feedburner:origLink>http://www.wictorwilen.se/Post/Suddenly-getting-Access-Denied-on-your-SharePoint-2010-User-Profile-Sync.aspx</feedburner:origLink></item><item><title>SharePoint Online and External Data using JSONP</title><link>http://feedproxy.google.com/~r/WictorWilen/~3/jaXB6wWihEs/SharePoint-Online-and-External-Data-using-JSONP.aspx</link><category>SharePoint 2010</category><category>Office 365</category><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Wictor Wilén</dc:creator><pubDate>Fri, 11 Nov 2011 05:22:23 PST</pubDate><guid isPermaLink="false">http://www.wictorwilen.se/Post/SharePoint-Online-and-External-Data-using-JSONP.aspx</guid><description>&lt;p&gt;It was some time since I did a real blog post and I have been fiddling with a specific topic, which I'm going to write about, for quite some time now. I've been working an Office 365 Intranet and been doing two conferences lately where I've demonstrated Office 365 and Windows Azure integration. One of the challenges (and boy, there are many) of Office 365 and SharePoint Online are access to External Data or services. In a few blog posts I will describe how you can work around these issues using some very simple techniques. All that is to it is that you have to "think outside the box" and not always go down the traditional SharePoint way of doing things.&lt;/p&gt;  &lt;p&gt;So let's get started! How do I in my SharePoint Online solution access remote/LOB data in a SQL Server database, web service or what not? The first and obvious candidate most think of is Business Connectivity Services - didn't they announce that in Anaheim!? Yea, it can be done and it works - but not as you (and I previously) expected. &lt;a href="http://blogs.msdn.com/b/steve_fox/" target="_blank"&gt;Steve Fox (MSFT)&lt;/a&gt; did show it at the SharePoint Conference 2011 and &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" target="_blank"&gt;also wrote a blog post about it&lt;/a&gt;. The caveat is that you have to go through the &lt;strong&gt;Client Object Model &lt;/strong&gt;to access the data in the external list, not using the Sandboxed server side API - that dog won't hunt. &lt;/p&gt;  &lt;p&gt;I'm going to do basically the same thing as Steve did but using a slightly different technique - which I find more easy and more straightforward, considering I'm not using the asynchronous Client Object Model but instead uses standard jQuery, &lt;strike&gt;jQuery templates &lt;/strike&gt;JsRender, JSONP and WCF. &lt;/p&gt;  &lt;p&gt;This is how we'll build this little sample. First of all we have a database stored in SQL Azure. This database is surfaced through a WCF endpoint in a Windows Azure Web Role. This WCF service will be consumed by a JavaScript using jQuery and JSONP as transport in a Web Part (I'll use a Sandboxed Visual Web Part for this) and rendered using JsRender (not jQuery templates which I recently shown in a few sessions).&lt;/p&gt;  &lt;p&gt;&lt;img style="display: inline" title="The data flow" alt="The data flow" src="http://www.wictorwilen.se/Windows-Live-Writer/SharePoint-ONline_13C12/image_6.png" width="400" height="150" /&gt;&lt;/p&gt;  &lt;h3&gt;The secret sauce - JSON-P&lt;/h3&gt;  &lt;p&gt;First of all before digging into how this is actually implemented we need to sort out how we're actually going to transport data from the WCF endpoint to SharePoint Online. &lt;/p&gt;  &lt;p&gt;The best and easiest way is to use JSON notation to transport the data; jQuery has great support for that and it's very easy to program using JSON structures in JavaScript. The only problem is that SharePoint Online and the WCF service is going to be hosted on different domains - and therefore it will be a cross-domain scripting issue. To overcome this issue &lt;a href="http://en.wikipedia.org/wiki/JSONP" target="_blank"&gt;JSONP (JSON with Padding)&lt;/a&gt; can be used. JSONP is a very clever method. Instead of returning a string from the remote domain and then being parsed by the caller, a JavaScript method is returned, which returns the JSON structure when evaluated, and this returned response is dynamically appended to the calling document as a script tag. Smart huh? Only problem is that we need to fiddle somewhat with our WCF endpoints, and that's what we'll discuss next...&lt;/p&gt;  &lt;h3&gt;Setting up the WCF endpoint&lt;/h3&gt;  &lt;p&gt;In this sample we need a database with one or more tables and then generate an ADO.NET Entity Data Model from that. That data model is then exposed through a WCF Data Service. WCF Data Services uses the OData protocol and supports JSON format but not JSONP. Fortunately I was not the first one lacking this feature and there is a &lt;a href="http://archive.msdn.microsoft.com/DataServicesJSONP" target="_blank"&gt;simple extension&lt;/a&gt; you can download to accomplish this. This extension is an attribute that you add to your Data Service class and makes the service support the $format=json and $callback=? query string parameters.&lt;/p&gt;  &lt;p&gt;Once you have downloaded and included the class into your project you decorate your DataService class with the &lt;strong&gt;JSONPSupportBehavior&lt;/strong&gt; attribute and it should look something like this:&lt;/p&gt;  &lt;pre class="csharpcode"&gt;[JSONPSupportBehavior()]
[System.ServiceModel.ServiceBehavior(IncludeExceptionDetailInFaults = &lt;span class="kwrd"&gt;true&lt;/span&gt;)]
&lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;class&lt;/span&gt; Users : DataService&lt;MyEntities&gt; {
    &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;static&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; InitializeService(DataServiceConfiguration config) {
        config.SetEntitySetAccessRule(&lt;span class="str"&gt;"Users"&lt;/span&gt;, EntitySetRights.AllRead);
        config.DataServiceBehavior.MaxProtocolVersion = DataServiceProtocolVersion.V2;
    }
}&lt;/pre&gt;

&lt;p&gt;Now we're all set to consume this from SharePoint Online.&lt;/p&gt;

&lt;h3&gt;&lt;/h3&gt;

&lt;h3&gt;Consuming the JSONP enabled WCF endpoint from a Web Part&lt;/h3&gt;

&lt;p&gt;Create a new Empty Sandboxed SharePoint project and then add a Sandboxed Visual Web Part (make sure that you have the Visual Studio SharePoint Powertools installed to get this Sandbox enabled Visual Web Part). We're only going to use HTML and JavaScript for this one, so you could do the same thing using a Content Editor Web Part, SharePoint Designer or whatever you prefer.&lt;/p&gt;

&lt;blockquote&gt;&lt;b&gt;Note:&lt;/b&gt; I'm using the new &lt;a href="https://github.com/BorisMoore/jsrender" target="_blank"&gt;JsRender&lt;/a&gt; technique here, instead of the just recently abandoned jQuery Templates. The JsRender is not even in beta yet so the syntax might/will be changed over time. &lt;a href="http://www.borismoore.com/2011/10/jquery-templates-and-jsviews-roadmap.html" target="_blank"&gt;Read more about the change here&lt;/a&gt;. &lt;/blockquote&gt;

&lt;p&gt;First of all in our user control we need to import the jQuery 1.7 file. Instead of uploading it to our SharePoint site we'll use a CDN for this (which will boost your overall performance and save you one file to maintain).&lt;/p&gt;

&lt;pre class="csharpcode"&gt;&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;script&lt;/span&gt; &lt;span class="attr"&gt;type&lt;/span&gt;&lt;span class="kwrd"&gt;="text/javascript"&lt;/span&gt; &lt;span class="attr"&gt;src&lt;/span&gt;&lt;span class="kwrd"&gt;="https://ajax.aspnetcdn.com/ajax/jQuery/jquery-1.7.min.js"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;script&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;/&amp;lt;&lt;/span&gt;&lt;/pre&gt;

&lt;p&gt;The JsRender.js file is not yet available on any CDN's so we have to add that JavaScript file into a new Empty Module SPI. You can deploy it to any folder or library, in this case I'm deploying it to the SiteAssets library of the site. Since we're talking about SharePoint Online here and we cannot guarantee that the file will be in a specific site this JavaScript file must be included dynamically or by using server side code to get the correct Web Url. We're doing the former one, and you will see the code in just a bit.&lt;/p&gt;

&lt;p&gt;The next thing is to define some markup where we would like to show our data from the WCF service. We'll define a table with an id equal to "list" and add a nice default row, which just says loading (makes it a bit more nice to the user).&lt;/p&gt;

&lt;pre class="csharpcode"&gt;&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;h1&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;Users&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;h1&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;table&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;tbody&lt;/span&gt; &lt;span class="attr"&gt;id&lt;/span&gt;&lt;span class="kwrd"&gt;='list'&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
        &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;tr&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;td&lt;/span&gt;&lt;span class="kwrd"&gt;&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;img&lt;/span&gt; &lt;span class="attr"&gt;src&lt;/span&gt;&lt;span class="kwrd"&gt;="/_layouts/images/loadingcirclests16.gif"&lt;/span&gt; &lt;span class="kwrd"&gt;/&gt;&lt;/span&gt;Loading data...&lt;span class="kwrd"&gt;/&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;td&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;tr&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;tbody&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;table&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

&lt;p&gt;After that we need to define the template that JsRender will use when applying the data to the table. This is done in a script tag using the type="text/x-jquery-tmpl" like this:&lt;/p&gt;

&lt;pre class="csharpcode"&gt;&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;script&lt;/span&gt; &lt;span class="attr"&gt;id&lt;/span&gt;&lt;span class="kwrd"&gt;="UsersTemplate"&lt;/span&gt; &lt;span class="attr"&gt;type&lt;/span&gt;&lt;span class="kwrd"&gt;="text/x-jquery-tmpl"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
    &amp;lt;tr&amp;gt;             
        &amp;lt;td&amp;gt;&amp;lt;b&amp;gt;{{=Name}}&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;              
        &amp;lt;td&amp;gt;{{=Company}}&amp;lt;/td&amp;gt;         
    &amp;lt;/tr&amp;gt;     
&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;script&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

&lt;p&gt;The final thing is to add the script that will load the data from the WCF service and then when it retrieves the response it will use the JsRender template to populate the table. &lt;/p&gt;

&lt;pre class="csharpcode"&gt;&amp;lt;script type=&lt;span class="str"&gt;"text/javascript"&lt;/span&gt;&gt;
    SP.SOD.executeOrDelayUntilScriptLoaded(doTheRemoteStuff, &lt;span class="str"&gt;'SP.js'&lt;/span&gt;);
    &lt;span class="kwrd"&gt;var&lt;/span&gt; rootWeb;

    &lt;span class="kwrd"&gt;function&lt;/span&gt; doTheRemoteStuff() {
        &lt;span class="kwrd"&gt;var&lt;/span&gt; clientContext = &lt;span class="kwrd"&gt;new&lt;/span&gt; SP.ClientContext();
        &lt;span class="kwrd"&gt;var&lt;/span&gt; siteColl = clientContext.get_site();
        rootWeb = siteColl.get_rootWeb();
        clientContext.load(rootWeb);
        clientContext.executeQueryAsync(succeeded, failed);
    }

    &lt;span class="kwrd"&gt;function&lt;/span&gt; succeeded() {
        &lt;span class="kwrd"&gt;var&lt;/span&gt; elm = document.createElement(&lt;span class="str"&gt;'script'&lt;/span&gt;);
        elm.type = &lt;span class="str"&gt;'text/javascript'&lt;/span&gt;;
        elm.src = rootWeb.get_serverRelativeUrl() + &lt;span class="str"&gt;'/SiteAssets/JsRender.js'&lt;/span&gt;;
        document.getElementsByTagName(&lt;span class="str"&gt;'head'&lt;/span&gt;)[0].appendChild(elm);

        $.getJSON(&lt;span class="str"&gt;"http://mycloudapp.cloudapp.net/Users.svc/Users?$filter=email ne ''&amp;$format=json&amp;$callback=?"&lt;/span&gt;,
            &lt;span class="kwrd"&gt;function&lt;/span&gt; (data) {
                $(&lt;span class="str"&gt;"#list"&lt;/span&gt;).empty();
                $(&lt;span class="str"&gt;"#list"&lt;/span&gt;).html($(&lt;span class="str"&gt;"#UsersTemplate"&lt;/span&gt;).render(data.d));
            });    
    }
    &lt;span class="kwrd"&gt;function&lt;/span&gt; failed() {
        SP.UI.Notify.addNotification(&lt;span class="str"&gt;'Something failed...'&lt;/span&gt;);
    }
&amp;lt;/script&amp;gt;&lt;/pre&gt;

&lt;p&gt;The script starts with using the Script-On-Demand features of &lt;a href="http://sharepoint.microsoft.com/"&gt;SharePoint 2010&lt;/a&gt; to delay execute the &lt;strong&gt;doTheRemoteStuff()&lt;/strong&gt; function. Once the SP.js file is loaded the function is executed. The function will use Client Object Model to retrieve the Url to the root web, to ensure that this Web Part will work on sub webs as well. This is needed so that we dynamically can add the JsRender.js file that was added to the SiteAssets library in the root web.&lt;/p&gt;

&lt;p&gt;Once we have the root web loaded the &lt;strong&gt;succeded()&lt;/strong&gt; method is going to execute. This is where we first dynamically insert the JsRender.js file into the head element, referencing our own JsRender.js file. Once that is done we will use the jQuery &lt;strong&gt;getJSON&lt;/strong&gt; method to get all users from the Data Service (in this case all users that has an e-mail address). To make the response a JSONP response it is important to add &lt;strong&gt;$format=json&amp;callback=?&lt;/strong&gt; to the query string in the getJSON method.&lt;/p&gt;

&lt;p&gt;When the response is returned the table is cleared and the rendered data is added as inner HTML of the table. The jQuery extension method &lt;strong&gt;$(template).render(data) &lt;/strong&gt;is the JsRender method that generates the HTML from the template and the JSON strucutre.&lt;/p&gt;

&lt;p&gt;Once this project is deployed and activated in the Sandbox and the Web Part is added to a page it will first show you the loading message and then after just a second a nicely table with the data from your SQL Azure backend.&lt;/p&gt;

&lt;p&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="A SharePoint Online Web Part displaying data from a SQL Server Azure database" border="0" alt="A SharePoint Online Web Part displaying data from a SQL Server Azure database" src="http://www.wictorwilen.se/Windows-Live-Writer/SharePoint-ONline_13C12/image_5.png" width="245" height="163" /&gt;&lt;/p&gt;

&lt;h3&gt;&lt;/h3&gt;

&lt;h3&gt;Summary&lt;/h3&gt;

&lt;p&gt;This post intends to demonstrate how to solve a very common problem in SharePoint Online - fetching data from LOB systems. I used SQL Azure and a Windows Azure Web Role hosted WCF service, but it can be any kind of JSONP supported WCF service. The holy grail in this case is to JSONP enable the WCF service. &lt;/p&gt;

&lt;p&gt;Watch this space for a continuation of similar posts...&lt;/p&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/n5gIbJz_QYdv42iv6ib9yHYzon8/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/n5gIbJz_QYdv42iv6ib9yHYzon8/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/n5gIbJz_QYdv42iv6ib9yHYzon8/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/n5gIbJz_QYdv42iv6ib9yHYzon8/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/WictorWilen?a=jaXB6wWihEs:dPtkrht40WY:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/WictorWilen?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/WictorWilen?a=jaXB6wWihEs:dPtkrht40WY:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/WictorWilen?i=jaXB6wWihEs:dPtkrht40WY:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/WictorWilen?a=jaXB6wWihEs:dPtkrht40WY:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/WictorWilen?i=jaXB6wWihEs:dPtkrht40WY:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/WictorWilen?a=jaXB6wWihEs:dPtkrht40WY:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/WictorWilen?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/WictorWilen?a=jaXB6wWihEs:dPtkrht40WY:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/WictorWilen?i=jaXB6wWihEs:dPtkrht40WY:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/WictorWilen/~4/jaXB6wWihEs" height="1" width="1"/&gt;</description><atom:author xmlns:atom="http://www.w3.org/2005/Atom">
                    <atom:name>Wictor Wilén</atom:name>
                </atom:author><atom:published xmlns:atom="http://www.w3.org/2005/Atom">2011-11-11 13:22:23Z</atom:published><atom:updated xmlns:atom="http://www.w3.org/2005/Atom">2011-11-11 13:22:23Z</atom:updated><slash:comments xmlns:slash="http://purl.org/rss/1.0/modules/slash/">1</slash:comments><trackback:ping xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/">http://www.wictorwilen.se/trackback.aspx?id=618</trackback:ping><feedburner:origLink>http://www.wictorwilen.se/Post/SharePoint-Online-and-External-Data-using-JSONP.aspx</feedburner:origLink></item><item><title>Recap of the European SharePoint Conference 2011</title><link>http://feedproxy.google.com/~r/WictorWilen/~3/M0YGbaJB0sk/Recap-of-the-European-SharePoint-Conference-2011.aspx</link><category>Windows 7</category><category>SharePoint 2010</category><category>Presentations</category><category>AppFabric</category><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Wictor Wilén</dc:creator><pubDate>Thu, 20 Oct 2011 03:53:30 PDT</pubDate><guid isPermaLink="false">http://www.wictorwilen.se/Post/Recap-of-the-European-SharePoint-Conference-2011.aspx</guid><description>&lt;p&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; margin: 0px 0px 5px 5px; padding-left: 0px; padding-right: 0px; display: inline; float: right; border-top: 0px; border-right: 0px; padding-top: 0px" title="European SharePoint Conference 2011" border="0" alt="European SharePoint Conference 2011" align="right" src="http://www.wictorwilen.se/Windows-Live-Writer/Recap-of-the-European-SharePoint-Confere_13973/WP_000088_3.jpg" width="283" height="213" /&gt;Back home after a few days in Berlin for the &lt;a href="http://www.sharepointeurope.com/" target="_blank"&gt;European SharePoint Conference 2011&lt;/a&gt;. It was a great conference with good speakers and really nice attendees. It was three days full of sessions, expert panels, shoot-outs and SharePoint fun! Thanks to everyone who was there (especially those who came to my sessions :-) and the team behind the conference! And as always it great to meet up with the SharePoint &lt;a href="http://mvp.support.microsoft.com/" target="_blank"&gt;MVP&lt;/a&gt;'s, MCM's and now even MCA's!&lt;/p&gt;  &lt;p&gt;During the attendee dinner the conference team announced the dates for the next European SharePoint Conference, which is set to the first week in December 2012. This one will not be in Berlin, but more likely in Barcelona, Paris or Copenhagen (Barcelona is the one everyone cheered for, so my guess is that the other two are out of question :-)&lt;/p&gt;  &lt;p&gt;For this conference I did two development presentations. I've done similar sessions before but this time I changed them into be even more based on best practices and experiences from the field, since we're quite a bit into the product cycle. I got good feedback on it and in some of the sessions I attended I noticed the same approach from the speakers. For you who either didn't attend my sessions or didn't have time to write down all the code samples in your notebooks - you can find the presentations on the conference web site and you can find the code samples here:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://www.wictorwilen.se/files/Wictor.SPEurope.Online.zip" target="_blank"&gt;Integrating Office 365 and Windows Azure sample&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.wictorwilen.se/files/Wictor.SPEurope.Sandbox.zip" target="_blank"&gt;Playing in the Sandbox sample&lt;/a&gt;&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;em&gt;I'm planning (note planning - no promises) on doing a couple of follow up posts on specifics in the demos.&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;Now it's only two more conferences this year; &lt;a href="http://www.sharepointconference.asia/" target="_blank"&gt;Singapore&lt;/a&gt; and &lt;a href="http://www.seforum.se" target="_blank"&gt;Stockholm&lt;/a&gt;...&lt;/p&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/dyQ9IZwPEOB5bq0GIOPy37foNOc/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/dyQ9IZwPEOB5bq0GIOPy37foNOc/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/dyQ9IZwPEOB5bq0GIOPy37foNOc/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/dyQ9IZwPEOB5bq0GIOPy37foNOc/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/WictorWilen?a=M0YGbaJB0sk:InUggFM3Pbk:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/WictorWilen?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/WictorWilen?a=M0YGbaJB0sk:InUggFM3Pbk:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/WictorWilen?i=M0YGbaJB0sk:InUggFM3Pbk:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/WictorWilen?a=M0YGbaJB0sk:InUggFM3Pbk:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/WictorWilen?i=M0YGbaJB0sk:InUggFM3Pbk:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/WictorWilen?a=M0YGbaJB0sk:InUggFM3Pbk:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/WictorWilen?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/WictorWilen?a=M0YGbaJB0sk:InUggFM3Pbk:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/WictorWilen?i=M0YGbaJB0sk:InUggFM3Pbk:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/WictorWilen/~4/M0YGbaJB0sk" height="1" width="1"/&gt;</description><atom:author xmlns:atom="http://www.w3.org/2005/Atom">
                    <atom:name>Wictor Wilén</atom:name>
                </atom:author><atom:published xmlns:atom="http://www.w3.org/2005/Atom">2011-10-20 10:53:30Z</atom:published><atom:updated xmlns:atom="http://www.w3.org/2005/Atom">2011-10-20 10:53:30Z</atom:updated><slash:comments xmlns:slash="http://purl.org/rss/1.0/modules/slash/">2</slash:comments><trackback:ping xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/">http://www.wictorwilen.se/trackback.aspx?id=617</trackback:ping><feedburner:origLink>http://www.wictorwilen.se/Post/Recap-of-the-European-SharePoint-Conference-2011.aspx</feedburner:origLink></item><item><title>SharePoint Conference 2011 wrap-up</title><link>http://feedproxy.google.com/~r/WictorWilen/~3/XI8zIpecMNU/SharePoint-Conference-2011-wrapup.aspx</link><category>SharePoint</category><category>SharePoint 2010</category><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Wictor Wilén</dc:creator><pubDate>Mon, 10 Oct 2011 23:39:53 PDT</pubDate><guid isPermaLink="false">http://www.wictorwilen.se/Post/SharePoint-Conference-2011-wrapup.aspx</guid><description>&lt;p&gt;I've now been home for about 48 hours since visiting Anaheim, California, for this years edition of the &lt;a href="http://www.mssharepointconference.com/Pages/default.aspx" target="_blank"&gt;Microsoft SharePoint Conference&lt;/a&gt;. It has been a great week in California with colleagues, friends, clients and new acquaintances.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.wictorwilen.se/Windows-Live-Writer/SharePoint-Conference-2011-wrap-up_FF38/image_4.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; margin: 0px 0px 0px 5px; padding-left: 0px; padding-right: 0px; display: inline; float: right; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="Superman at Six Flags" border="0" alt="Superman at Six Flags" align="right" src="http://www.wictorwilen.se/Windows-Live-Writer/SharePoint-Conference-2011-wrap-up_FF38/image_thumb_1.png" width="109" height="148" /&gt;&lt;/a&gt;This year, eight people from my company, &lt;a href="http://www.connecta.se" target="_blank"&gt;Connecta&lt;/a&gt;, travelled over for the conference. We all had a blast with some spare time before and after the conference, which included a visit to Six Flags - Magic Mountain and a drive along the Pacific coast. We also met up with a few old friends and colleagues and had a good time with our clients, who also attended the conference.&lt;/p&gt;  &lt;p&gt;Even though nothing new actually was shared during the conference (saving all the fireworks for next year in Las Vegas) it was a really great conference. I focused on the sessions where I knew the speakers would put on a great show, which I think was a clever choice - you can never experience that from the recordings or by downloading the decks. The keynote was pretty dull and just a big marketing show. The only highlights was the big fail-over demo and the MCA announcement. The MCA - Microsoft Certified Architect - is now available for &lt;a href="http://sharepoint.microsoft.com/"&gt;SharePoint 2010&lt;/a&gt; as well, read more on &lt;a href="http://blogs.technet.com/b/themasterblog/archive/2011/10/03/announcing-mca-for-microsoft-sharepoint-server-2010-and-our-very-first-sharepoint-mcas.aspx" target="_blank"&gt;the Masters blog&lt;/a&gt;. Congrats to &lt;strong&gt;Spence&lt;/strong&gt; and &lt;strong&gt;Kimmo&lt;/strong&gt; - our two very first MCA's!&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;I got a lot of questions regarding the MCA program and two essential things were not mentioned in the keynote. First; MCM is a pre-requisite for the MCA and secondly; you need to be MCM on the same version as you're trying for MCA on.&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;&lt;a href="http://www.wictorwilen.se/Windows-Live-Writer/SharePoint-Conference-2011-wrap-up_FF38/image_2.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; margin: 0px 0px 0px 5px; padding-left: 0px; padding-right: 0px; display: inline; float: right; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="Meet the Masters!?" border="0" alt="Meet the Masters!?" align="right" src="http://www.wictorwilen.se/Windows-Live-Writer/SharePoint-Conference-2011-wrap-up_FF38/image_thumb.png" width="173" height="170" /&gt;&lt;/a&gt;On Wednesday I sat in the &lt;a href="http://www.perficient.com/" target="_blank"&gt;Perficient&lt;/a&gt; booth for the &lt;em&gt;Meet the Masters panel &lt;/em&gt;together with three MCM colleagues. I had a great time talking about my MCM experience and asking questions from the audience. It's great to see the that the recognition of the MCM program is increasing.&lt;/p&gt;  &lt;p&gt;SharePoint conferences are more than just attending sessions! Compared to a lot of other technical conferences the SharePoint conferences is very much about the social activities. There are multiple vendor activities and community activities going on 24/7, ranging from SharePints to early morning runs. The Monday night I had four parallel parties going on! These activities are in my opinion one of the most important aspects of the SharePoint conferences. You meet your old friends and make new ones and broaden your network. You'll learn who's an expert in what which makes it more easier for you to get help or reach out when in doubt. &lt;em&gt;Know what you know and know what you don't know - and never confuse those two!&lt;/em&gt;  &lt;/p&gt;  &lt;p&gt;Now I'm looking forward to next week with a conference in Berlin, then Singapore a couple of weeks later...and of course - Las Vegas next year!&lt;/p&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/obZb9SnDZACikuAWJmIMpK79jb0/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/obZb9SnDZACikuAWJmIMpK79jb0/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/obZb9SnDZACikuAWJmIMpK79jb0/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/obZb9SnDZACikuAWJmIMpK79jb0/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/WictorWilen?a=XI8zIpecMNU:sliy7o-ThIU:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/WictorWilen?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/WictorWilen?a=XI8zIpecMNU:sliy7o-ThIU:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/WictorWilen?i=XI8zIpecMNU:sliy7o-ThIU:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/WictorWilen?a=XI8zIpecMNU:sliy7o-ThIU:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/WictorWilen?i=XI8zIpecMNU:sliy7o-ThIU:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/WictorWilen?a=XI8zIpecMNU:sliy7o-ThIU:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/WictorWilen?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/WictorWilen?a=XI8zIpecMNU:sliy7o-ThIU:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/WictorWilen?i=XI8zIpecMNU:sliy7o-ThIU:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/WictorWilen/~4/XI8zIpecMNU" height="1" width="1"/&gt;</description><atom:author xmlns:atom="http://www.w3.org/2005/Atom">
                    <atom:name>Wictor Wilén</atom:name>
                </atom:author><atom:published xmlns:atom="http://www.w3.org/2005/Atom">2011-10-11 06:39:53Z</atom:published><atom:updated xmlns:atom="http://www.w3.org/2005/Atom">2011-10-11 06:39:53Z</atom:updated><slash:comments xmlns:slash="http://purl.org/rss/1.0/modules/slash/">2</slash:comments><trackback:ping xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/">http://www.wictorwilen.se/trackback.aspx?id=616</trackback:ping><feedburner:origLink>http://www.wictorwilen.se/Post/SharePoint-Conference-2011-wrapup.aspx</feedburner:origLink></item><item><title>Changes in the SharePoint 2010 Cumulative Update packaging since August 2011</title><link>http://feedproxy.google.com/~r/WictorWilen/~3/EOG4nIPa7hg/Changes-in-the-SharePoint-2010-Cumulative-Update-packaging-since-August-2011.aspx</link><category>SharePoint 2010</category><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Wictor Wilén</dc:creator><pubDate>Wed, 07 Sep 2011 17:34:52 PDT</pubDate><guid isPermaLink="false">http://www.wictorwilen.se/Post/Changes-in-the-SharePoint-2010-Cumulative-Update-packaging-since-August-2011.aspx</guid><description>&lt;p&gt;A couple of days ago the &lt;a href="http://sharepoint.microsoft.com/"&gt;SharePoint 2010&lt;/a&gt; Cumulative Update for August 2011 was released. Always a good time to see some things fixed and some things break. Installing a Cumulative Update is always a risky business, and you should only install them if you any experience problems that the CU resolves and only when you thoroughly tested it. &lt;/p&gt;  &lt;h3&gt;One CU to rule them all!&lt;/h3&gt;  &lt;p&gt;Without going into details about the content and fixes in the August 2011 CU there is one other thing that is of real interest - and that is how &lt;a href="http://www.microsoft.com" target="_blank"&gt;MIcrosoft&lt;/a&gt; has changed the packaging process for the Cumulative Updates. Since the release of SharePoint 2010 there has been talk and discussions about über-packages. That is Server Cumulative Packages that contains both the Server hotfixes as well as the Foundation hotfixes, which makes the update process a bit easier and faster - you only need to install one package. Up until now there has been mixed messages on the über-packages and caused some confusion. The recommendation has been that you need to install both SPF and SPS CU's on a SPS installation and all three if you're using Project Server.&lt;/p&gt;  &lt;p&gt;Since yesterday (that's when I noticed it at least) the &lt;a href="http://technet.microsoft.com/en-us/sharepoint/ff800847" target="_blank"&gt;SharePoint Updates&lt;/a&gt; page on MSDN has been updated with new information regarding this packaging with this:&lt;/p&gt;  &lt;blockquote&gt;The packaging of cumulative updates changed as of August 31, 2011. [...] As a result of the new packaging, it is no longer necessary to install the SharePoint Foundation cumulative update and then install the SharePoint Server cumulative update. &lt;/blockquote&gt;  &lt;p&gt;It looks like we have a new guidance in town!This has been "promised" before and I hope that it will work as planned this time, only time will tell. For more history and information read &lt;a href="http://harbar.net/archive/2011/06/30/327.aspx" target="_blank"&gt;Spencer Harbars post on the SP1 and June CU discussion&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;What this essentially comes down to is that you only need to download one of these patches (links to August 2011 CU within parenthesis) from now on...&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;SharePoint Foundation 2010, contains SPF CU (&lt;a href="http://support.microsoft.com/default.aspx?scid=kb;EN-US;2553050" target="_blank"&gt;KB253050&lt;/a&gt;) &lt;/li&gt;    &lt;li&gt;SharePoint Server 2010, contains SPF + SPS CU (&lt;a href="http://support.microsoft.com/default.aspx?scid=kb;EN-US;2553048" target="_blank"&gt;KB253048&lt;/a&gt;) &lt;/li&gt;    &lt;li&gt;SharePoint Server 2010 with Project Server 2010, contains SPF + SPS + Project Server CU (&lt;a href="http://support.microsoft.com/default.aspx?scid=kb;EN-US;2553049" target="_blank"&gt;KB253049&lt;/a&gt;) &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;This will save you a couple of minutes/hours downloading and you'll save a few minutes installing multiple CU's on each server. &lt;/p&gt;  &lt;blockquote&gt;&lt;strong&gt;Note&lt;/strong&gt;: The correct version of this CU should be &lt;strong&gt;14.0.6109.5002&lt;/strong&gt;, if you were really quick you might have downloaded the 14.0.6109.&lt;strong&gt;5000 &lt;/strong&gt;build.&lt;/blockquote&gt;  &lt;p&gt;But...there's always a but. Please, please, please test all CU's, SP's, patches, hotfixes, shoes and whatever very thoroughly!&lt;/p&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/iNz73YK_V9K-NuxFmsefHPZkGC8/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/iNz73YK_V9K-NuxFmsefHPZkGC8/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/iNz73YK_V9K-NuxFmsefHPZkGC8/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/iNz73YK_V9K-NuxFmsefHPZkGC8/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/WictorWilen?a=EOG4nIPa7hg:4CwMCErUHaw:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/WictorWilen?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/WictorWilen?a=EOG4nIPa7hg:4CwMCErUHaw:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/WictorWilen?i=EOG4nIPa7hg:4CwMCErUHaw:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/WictorWilen?a=EOG4nIPa7hg:4CwMCErUHaw:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/WictorWilen?i=EOG4nIPa7hg:4CwMCErUHaw:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/WictorWilen?a=EOG4nIPa7hg:4CwMCErUHaw:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/WictorWilen?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/WictorWilen?a=EOG4nIPa7hg:4CwMCErUHaw:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/WictorWilen?i=EOG4nIPa7hg:4CwMCErUHaw:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/WictorWilen/~4/EOG4nIPa7hg" height="1" width="1"/&gt;</description><atom:author xmlns:atom="http://www.w3.org/2005/Atom">
                    <atom:name>Wictor Wilén</atom:name>
                </atom:author><atom:published xmlns:atom="http://www.w3.org/2005/Atom">2011-09-08 00:34:52Z</atom:published><atom:updated xmlns:atom="http://www.w3.org/2005/Atom">2011-09-08 00:34:52Z</atom:updated><slash:comments xmlns:slash="http://purl.org/rss/1.0/modules/slash/">3</slash:comments><trackback:ping xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/">http://www.wictorwilen.se/trackback.aspx?id=615</trackback:ping><feedburner:origLink>http://www.wictorwilen.se/Post/Changes-in-the-SharePoint-2010-Cumulative-Update-packaging-since-August-2011.aspx</feedburner:origLink></item><item><title>Conference and presentation season - fall 2011</title><link>http://feedproxy.google.com/~r/WictorWilen/~3/UZuTR80wmTY/Conference-and-presentation-season-fall-2011.aspx</link><category>SharePoint 2010</category><category>Presentations</category><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Wictor Wilén</dc:creator><pubDate>Wed, 31 Aug 2011 21:58:33 PDT</pubDate><guid isPermaLink="false">http://www.wictorwilen.se/Post/Conference-and-presentation-season-fall-2011.aspx</guid><description>&lt;p&gt;This fall is going to be pretty busy in terms of conferences and presentations and I'll have my fair share. Here's what I've planned for this fall, so far.&lt;/p&gt;  &lt;h3&gt;&lt;/h3&gt;  &lt;h3&gt;Webinar: No Farm Solution in sight!&lt;/h3&gt;  &lt;p&gt;On Tuesday the 6th of September I will do a webinar discussing SharePoint Online and Office 365 and how you can build solutions using SharePoint Online, Silverlight, Windows Azure and more without creating any farm solutions:&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;When and where: &lt;/strong&gt;6th of September at 11:00 CET. The interwebz&lt;/p&gt;  &lt;p&gt;Register online at &lt;a title="http://www.sharepointeurope.com/upcoming-webinars/webinar-week-no-farm-solutions-in-sight.aspx" href="http://www.sharepointeurope.com/upcoming-webinars/webinar-week-no-farm-solutions-in-sight.aspx"&gt;http://www.sharepointeurope.com/upcoming-webinars/webinar-week-no-farm-solutions-in-sight.aspx&lt;/a&gt;&lt;/p&gt;  &lt;h3&gt;SharePoint in the cloud!? Does it work?&lt;/h3&gt;  &lt;p&gt;This is a breakfast seminar that my company &lt;a href="http://www.connecta.se" target="_blank"&gt;Connecta&lt;/a&gt; is arranging with &lt;a href="http://www.cornerstone.se" target="_blank"&gt;Cornerstone&lt;/a&gt; where I will present Office 365 and SharePoint Online specifically. I will show you how SharePoint Online works and what you need to do to get it to work, and I will also share our experiences moving from an on-premise solution with SharePoint and Exchange to the Office 365 platform.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;When and where:&lt;/strong&gt; 16th of September at 8:00 or 13:00. Stockholm at the Connecta office&lt;/p&gt;  &lt;p&gt;More information at &lt;a title="http://cornerstone.se/sv/Event/Frukostseminarium-SharePoint-i-molnet-Funkar-det/" href="http://cornerstone.se/sv/Event/Frukostseminarium-SharePoint-i-molnet-Funkar-det/"&gt;http://cornerstone.se/sv/Event/Frukostseminarium-SharePoint-i-molnet-Funkar-det/&lt;/a&gt;&lt;/p&gt;  &lt;h3&gt;European SharePoint Conference, Berlin&lt;/h3&gt;  &lt;p&gt;&lt;img style="display: inline; float: right" title="European SharePoint Conference" alt="European SharePoint Conference" align="right" src="http://www.wictorwilen.se/Windows-Live-Writer/Conference-and-presentation-season---fal_DA75/image_8.png" width="205" height="87" /&gt;For the European SharePoint Conference I will have two sessions, which I &lt;a href="http://www.wictorwilen.se/Post/Speaking-at-the-European-SharePoint-Conference-in-October.aspx" target="_blank"&gt;already written about&lt;/a&gt;. &lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://www.sharepointeurope.com/conferences/session-details.aspx?sessionId=13" target="_blank"&gt;Integrating Office 365 and Windows Azure&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.sharepointeurope.com/conferences/session-details.aspx?sessionId=49" target="_blank"&gt;Playing in the Sandbox&lt;/a&gt;&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;strong&gt;When and where:&lt;/strong&gt; 17th - 20th October. Berlin, Germany&lt;/p&gt;  &lt;p&gt;More information: &lt;a href="http://www.sharepointeurope.com/"&gt;http://www.sharepointeurope.com/&lt;/a&gt;&lt;/p&gt;  &lt;h3&gt;SharePoint Conference Southeast Asia, Singapore&lt;/h3&gt;  &lt;p&gt;&lt;img style="display: inline; float: right" title="SharePoint Conference Southeast Asia" alt="SharePoint Conference Southeast Asia" align="right" src="http://www.wictorwilen.se/Windows-Live-Writer/Conference-and-presentation-season---fal_DA75/image_11.png" width="400" height="63" /&gt;For the second year I will go down to the beautiful Singapore for the SharePoint Conference in Southeast Asia. This year I will also have two sessions.&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Mastering customizations of the &lt;a href="http://sharepoint.microsoft.com/"&gt;SharePoint 2010&lt;/a&gt; Ribbon Menu&lt;/li&gt;    &lt;li&gt;Enhancing Office 365/SharePoint Online using Windows Azure&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;I'm sure that the conference will be as great as last year!&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;When and where:&lt;/strong&gt; 8-9 November. Singapore.&lt;/p&gt;  &lt;p&gt;More information here: &lt;a title="http://www.sharepointconference.asia/" href="http://www.sharepointconference.asia/"&gt;http://www.sharepointconference.asia/&lt;/a&gt;&lt;/p&gt;  &lt;h3&gt;SharePoint and Exchange Forum 2011, Stockholm&lt;/h3&gt;  &lt;p&gt;&lt;img style="display: inline; float: right" title="SEF 2011" alt="SEF 2011" align="right" src="http://www.wictorwilen.se/Windows-Live-Writer/Conference-and-presentation-season---fal_DA75/image_3.png" width="230" height="75" /&gt;The SharePoint and Exchange Forum is the SharePoint and Exchange conference in Scandinavia and of course if you're in the vicinity you should head on over to Stockholm. This year Göran Husman and the crew has managed to get a really good line of presenters - it will be a blast! I will present one session at this conference, and it will not be a development topic, but instead a session about &lt;strong&gt;Service Application Federation - the good, the bad and the ugly!&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;When and where: &lt;/strong&gt;14-15 November. Stockholm, Sweden&lt;/p&gt;  &lt;p&gt;More information here: &lt;a title="http://www.seforum.se/" href="http://www.seforum.se/"&gt;http://www.seforum.se/&lt;/a&gt;&lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt;&lt;em&gt;I hope to see you on the road somewhere!&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/qWZVzhiutrdNLZccRNvtcr2xVIo/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/qWZVzhiutrdNLZccRNvtcr2xVIo/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/qWZVzhiutrdNLZccRNvtcr2xVIo/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/qWZVzhiutrdNLZccRNvtcr2xVIo/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/WictorWilen?a=UZuTR80wmTY:bxGZWCZx_LE:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/WictorWilen?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/WictorWilen?a=UZuTR80wmTY:bxGZWCZx_LE:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/WictorWilen?i=UZuTR80wmTY:bxGZWCZx_LE:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/WictorWilen?a=UZuTR80wmTY:bxGZWCZx_LE:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/WictorWilen?i=UZuTR80wmTY:bxGZWCZx_LE:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/WictorWilen?a=UZuTR80wmTY:bxGZWCZx_LE:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/WictorWilen?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/WictorWilen?a=UZuTR80wmTY:bxGZWCZx_LE:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/WictorWilen?i=UZuTR80wmTY:bxGZWCZx_LE:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/WictorWilen/~4/UZuTR80wmTY" height="1" width="1"/&gt;</description><atom:author xmlns:atom="http://www.w3.org/2005/Atom">
                    <atom:name>Wictor Wilén</atom:name>
                </atom:author><atom:published xmlns:atom="http://www.w3.org/2005/Atom">2011-09-01 04:58:33Z</atom:published><atom:updated xmlns:atom="http://www.w3.org/2005/Atom">2011-09-01 04:58:33Z</atom:updated><slash:comments xmlns:slash="http://purl.org/rss/1.0/modules/slash/">1</slash:comments><trackback:ping xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/">http://www.wictorwilen.se/trackback.aspx?id=614</trackback:ping><feedburner:origLink>http://www.wictorwilen.se/Post/Conference-and-presentation-season-fall-2011.aspx</feedburner:origLink></item><item><title>Yet another object to dispose correctly in SharePoint 2010 - SPUserSolution</title><link>http://feedproxy.google.com/~r/WictorWilen/~3/zGRrqxzzO2o/Yet-another-object-to-dispose-correctly-in-SharePoint-2010-SPUserSolution.aspx</link><category>SharePoint 2010</category><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Wictor Wilén</dc:creator><pubDate>Wed, 24 Aug 2011 16:37:15 PDT</pubDate><guid isPermaLink="false">http://www.wictorwilen.se/Post/Yet-another-object-to-dispose-correctly-in-SharePoint-2010-SPUserSolution.aspx</guid><description>&lt;p&gt;If you've been in the SharePoint business for a while (at least a couple of days) you should be aware of the SharePoint objects that needs to be properly disposed; &lt;strong&gt;SPSite&lt;/strong&gt; and &lt;strong&gt;SPWeb&lt;/strong&gt; in particular. Objects that need disposal inherits from the &lt;strong&gt;IDisposable&lt;/strong&gt; interface and requires that you call the &lt;strong&gt;Dispose()&lt;/strong&gt; method when you're done with the object  - this is to ensure that the object frees up resources that the .NET managed garbage collector cannot free up automatically. This includes objects such as non-managed SQL connections, resource handles, file handles etc. Disposing objects is nothing unique for SharePoint - all (real) .NET developers know how to dispose of a SQL connection. You can read more about the best practices around disposing SharePoint objects in the &lt;a href="http://msdn.microsoft.com/en-us/library/ee557362.aspx" target="_blank"&gt;MSDN Disposing Objects article&lt;/a&gt;. Not doing this properly will eventually lead to application crashes, high memory usage and/or bad performance.&lt;/p&gt;  &lt;h3&gt;The SPUserSolution object requires disposal&lt;/h3&gt;  &lt;p&gt;If you are working with sandboxed or user solutions in code you've probably used the &lt;strong&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/microsoft.sharepoint.spusersolution.aspx" target="_blank"&gt;SPUserSolution&lt;/a&gt;&lt;/strong&gt; object. This is another of these objects that needs your disposal-attention. A solution package (farm or user code) is essentially a cabinet file (compressed file) containing all the solution artifacts and assemblies. When activating a user code solution programmatically in the solution gallery you will get this SPUserSolution object which internally will contain a number of stream objects (also inheriting from IDisposable) and a non-managed file handle. These object must be disposed manually to avoid any resource or memory leaks. Here is a proper way to add and activate a user code solution&lt;/p&gt;  &lt;div id="codeSnippetWrapper" class="csharpcode-wrapper"&gt;   &lt;pre id="codeSnippet" class="csharpcode"&gt;&lt;span class="kwrd"&gt;byte&lt;/span&gt;[] bytes = ...;&lt;br /&gt;&lt;span class="rem"&gt;// grab the solution gallery&lt;/span&gt;&lt;br /&gt;SPDocumentLibrary solutions = (SPDocumentLibrary)newSite.GetCatalog(SPListTemplateType.SolutionCatalog);&lt;br /&gt;&lt;span class="rem"&gt;// add the solution to the gallery&lt;/span&gt;&lt;br /&gt;SPFile solutionFile = solutions.RootFolder.Files.Add(&lt;span class="str"&gt;"mysolution.wsp"&lt;/span&gt;, bytes);&lt;br /&gt;&lt;span class="rem"&gt;// activate Solution&lt;/span&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; (SPUserSolution solution = newSite.Solutions.Add(solutionFile.Item.ID)) {&lt;br /&gt;    &lt;span class="rem"&gt;// do your thing...&lt;/span&gt;&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;
&lt;/div&gt;

&lt;h3&gt;Summary&lt;/h3&gt;

&lt;p&gt;This was just a sample and a reminder that you need to be aware of what's happening when working with some of the SharePoint objects - make sure that you do your "Disposal dance" the correct way. The list goes long on what objects need to be disposed correctly - just check your objects if they inherit from &lt;strong&gt;IDisposable&lt;/strong&gt; using Visual Studio or Reflector. Not all objects do any specific disposing though and some can be ignored - but better be safe than sorry.&lt;/p&gt;

&lt;blockquote&gt;&lt;strong&gt;Tip&lt;/strong&gt;: products such as &lt;a href="http://www.devexpress.com/Products/Visual_Studio_Add-in/Coding_Assistance/" target="_blank"&gt;CodeRush from DevExpress&lt;/a&gt; has some great built-in tools to directly identify objects inheriting from IDisposable and helps you make sure that they are properly disposed. &lt;/blockquote&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/wFQQegy3X_-E5eT9k2uqsUkvBbg/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/wFQQegy3X_-E5eT9k2uqsUkvBbg/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/wFQQegy3X_-E5eT9k2uqsUkvBbg/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/wFQQegy3X_-E5eT9k2uqsUkvBbg/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/WictorWilen?a=zGRrqxzzO2o:ubzCCP9gnig:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/WictorWilen?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/WictorWilen?a=zGRrqxzzO2o:ubzCCP9gnig:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/WictorWilen?i=zGRrqxzzO2o:ubzCCP9gnig:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/WictorWilen?a=zGRrqxzzO2o:ubzCCP9gnig:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/WictorWilen?i=zGRrqxzzO2o:ubzCCP9gnig:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/WictorWilen?a=zGRrqxzzO2o:ubzCCP9gnig:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/WictorWilen?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/WictorWilen?a=zGRrqxzzO2o:ubzCCP9gnig:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/WictorWilen?i=zGRrqxzzO2o:ubzCCP9gnig:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/WictorWilen/~4/zGRrqxzzO2o" height="1" width="1"/&gt;</description><atom:author xmlns:atom="http://www.w3.org/2005/Atom">
                    <atom:name>Wictor Wilén</atom:name>
                </atom:author><atom:published xmlns:atom="http://www.w3.org/2005/Atom">2011-08-24 23:37:15Z</atom:published><atom:updated xmlns:atom="http://www.w3.org/2005/Atom">2011-08-24 23:37:15Z</atom:updated><slash:comments xmlns:slash="http://purl.org/rss/1.0/modules/slash/">0</slash:comments><trackback:ping xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/">http://www.wictorwilen.se/trackback.aspx?id=613</trackback:ping><feedburner:origLink>http://www.wictorwilen.se/Post/Yet-another-object-to-dispose-correctly-in-SharePoint-2010-SPUserSolution.aspx</feedburner:origLink></item><item><title>I'm on the SharePoint Pod Show talking about Web Parts</title><link>http://feedproxy.google.com/~r/WictorWilen/~3/I_dMl_omJSE/Im-on-the-SharePoint-Pod-Show-talking-about-Web-Parts.aspx</link><category>Personal</category><category>Web Parts</category><category>SharePoint 2010</category><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Wictor Wilén</dc:creator><pubDate>Mon, 15 Aug 2011 03:45:01 PDT</pubDate><guid isPermaLink="false">http://www.wictorwilen.se/Post/Im-on-the-SharePoint-Pod-Show-talking-about-Web-Parts.aspx</guid><description>&lt;p&gt;&lt;a href="http://www.sharepointpodshow.com/archive/2011/08/15/building-web-parts-episode-65.aspx" target="_blank"&gt;The 65th SharePoint Pod Show&lt;/a&gt; is out featuring...tada...me :-)&lt;/p&gt;  &lt;p&gt;&lt;img style="margin: 0px 0px 5px 5px; display: inline; float: right" title="The SharePoint Pod Show" alt="The SharePoint Pod Show" align="right" src="http://www.wictorwilen.se/Windows-Live-Writer/Im-on-the-SharePoint-PodShow_13C3F/image_3.png" width="129" height="102" /&gt;The SharePoint Pod Show is THE podcast about SharePoint and is done by &lt;a href="http://twitter.com/#!/lespaulrob" target="_blank"&gt;Rob Foster&lt;/a&gt;, &lt;a href="http://twitter.com/#!/nickswan" target="_blank"&gt;Nick Swan&lt;/a&gt; and &lt;a href="http://twitter.com/#!/brettlonsdale" target="_blank"&gt;Brett Lonsdale&lt;/a&gt; and has featured a lot of great SharePointers from all around the world throughout the years. If you haven't already listened to the podcasts, &lt;a href="http://www.sharepointpodshow.com/archives.aspx" target="_blank"&gt;then you got 65 episodes to catch up on&lt;/a&gt;! There are some epic ones, such as my favorite one &lt;a href="http://www.sharepointpodshow.com/archive/2010/09/09/sharepoint-performance-tuning-episode-50.aspx" target="_blank"&gt;#50 - which is about performance tuning.&lt;/a&gt; And make sure that you subscribe - you don't want to miss their SPC11 Road-trip...&lt;/p&gt;  &lt;p&gt;This episode was recorded at the &lt;a href="http://mvp.support.microsoft.com/" target="_blank"&gt;MVP&lt;/a&gt; Summit earlier this year in Redmond between two sessions. It was my first time meeting most of the MVP's in real life and Rob was the one interviewing me. He's one heck of an interviewer asking questions like an ice-hockey radio commentator in some weird southern accent... It was great fun and we discussed SharePoint development and Web Parts development in particular. We talked through how to get started with SharePoint development, how to build Web Parts and why I wrote my book (&lt;a href="http://www.sharepointwebpartsinaction.com/" target="_blank"&gt;SharePoint 2010 Web Parts in Action&lt;/a&gt;).&lt;/p&gt;  &lt;p&gt;Until next time.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/PRfMeronb1jzGUL9kJ0PEOSpIc0/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/PRfMeronb1jzGUL9kJ0PEOSpIc0/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/PRfMeronb1jzGUL9kJ0PEOSpIc0/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/PRfMeronb1jzGUL9kJ0PEOSpIc0/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/WictorWilen?a=I_dMl_omJSE:vqd8Vcg4WhI:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/WictorWilen?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/WictorWilen?a=I_dMl_omJSE:vqd8Vcg4WhI:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/WictorWilen?i=I_dMl_omJSE:vqd8Vcg4WhI:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/WictorWilen?a=I_dMl_omJSE:vqd8Vcg4WhI:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/WictorWilen?i=I_dMl_omJSE:vqd8Vcg4WhI:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/WictorWilen?a=I_dMl_omJSE:vqd8Vcg4WhI:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/WictorWilen?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/WictorWilen?a=I_dMl_omJSE:vqd8Vcg4WhI:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/WictorWilen?i=I_dMl_omJSE:vqd8Vcg4WhI:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/WictorWilen/~4/I_dMl_omJSE" height="1" width="1"/&gt;</description><atom:author xmlns:atom="http://www.w3.org/2005/Atom">
                    <atom:name>Wictor Wilén</atom:name>
                </atom:author><atom:published xmlns:atom="http://www.w3.org/2005/Atom">2011-08-15 10:45:01Z</atom:published><atom:updated xmlns:atom="http://www.w3.org/2005/Atom">2011-08-15 10:45:01Z</atom:updated><slash:comments xmlns:slash="http://purl.org/rss/1.0/modules/slash/">2</slash:comments><trackback:ping xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/">http://www.wictorwilen.se/trackback.aspx?id=612</trackback:ping><feedburner:origLink>http://www.wictorwilen.se/Post/Im-on-the-SharePoint-Pod-Show-talking-about-Web-Parts.aspx</feedburner:origLink></item></channel></rss>

