<?xml version="1.0" encoding="utf-8"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/"><channel><language>en</language><title>Blog posts by tomstenius</title> <link>https://world.optimizely.com/blogs/tomstenius/</link><description></description><ttl>60</ttl><generator>Optimizely World</generator><item> <title>Changing Master Language in EPiServer CMS 6</title>            <link>http://feedproxy.google.com/~r/TomStenius/~3/IDO3lbh5maw/changing-master-language-in-episerver.html</link>            <description>&lt;p&gt;Yesterday I faced a problem that I had met before; I needed to change the master language of an EPiServer CMS site. I have done successfully using the awesome tool called &lt;em&gt;&lt;a href=&quot;http://blog.najmanowicz.com/2009/04/06/advanced-language-manipulation-tool-for-episerver/&quot;&gt;Advanced Language Manipulation Tool for EPiServer&lt;/a&gt;&lt;/em&gt; by &lt;a href=&quot;http://twitter.com/adamnaj&quot;&gt;Adam Najmanowicz&lt;/a&gt;, but that time I used it on a EPiServer CMS 5 site.&lt;/p&gt; &lt;p&gt;When doing a little bit of searching I found that &lt;a href=&quot;http://twitter.com/marijorg&quot;&gt;Mari J&#248;rgensen&lt;/a&gt; had made some updates to the tool and uploaded it to &lt;a href=&quot;https://www.coderesort.com/p/epicode/wiki/LanguageTools&quot;&gt;Coderesort&lt;/a&gt;. So I grabbed it from there instead of from its original source.&lt;/p&gt; &lt;p&gt;It turns out it works like a charm in EPiServer CMS 6 as well, although the look and feel was a bit off:&lt;/p&gt; &lt;p&gt;&lt;a href=&quot;http://lh4.ggpht.com/_W2Im3e5-OCk/TVIcrBiBsRI/AAAAAAAAAbQ/OuGg4YQv4ls/s1600-h/Admin-Mode-Advanced-Language-Tool%5B16%5D.png&quot;&gt;&lt;img style=&quot;background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: block; float: none; margin-left: auto; border-top: 0px; margin-right: auto; border-right: 0px; padding-top: 0px&quot; title=&quot;Admin-Mode-Advanced-Language-Tool&quot; border=&quot;0&quot; alt=&quot;Admin-Mode-Advanced-Language-Tool&quot; src=&quot;http://lh4.ggpht.com/_W2Im3e5-OCk/TVIcudIAksI/AAAAAAAAAbU/KNknLiavkTs/Admin-Mode-Advanced-Language-Tool_thumb%5B14%5D.png?imgmax=800&quot; width=&quot;544&quot; height=&quot;453&quot; /&gt;&lt;/a&gt;&lt;/p&gt; &lt;p&gt;However one thing that I forgot after I had updated the master language from English (en) to Australian English (en-au) was to enable the new language. The result was that I could not create any new pages, the option for creating new pages was disabled.&lt;/p&gt; &lt;p&gt;&lt;a href=&quot;http://lh5.ggpht.com/_W2Im3e5-OCk/TVIcv8F3EFI/AAAAAAAAAbY/u-1VxydYgGY/s1600-h/Edit-Mode-Tool-bar%5B3%5D.png&quot;&gt;&lt;img style=&quot;background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: block; float: none; margin-left: auto; border-top: 0px; margin-right: auto; border-right: 0px; padding-top: 0px&quot; title=&quot;Edit-Mode-Tool-bar&quot; border=&quot;0&quot; alt=&quot;Edit-Mode-Tool-bar&quot; src=&quot;http://lh6.ggpht.com/_W2Im3e5-OCk/TVIcxj_ZKzI/AAAAAAAAAbc/7Th6-CzZOEU/Edit-Mode-Tool-bar_thumb%5B1%5D.png?imgmax=800&quot; width=&quot;338&quot; height=&quot;36&quot; /&gt;&lt;/a&gt;&lt;/p&gt; &lt;p&gt;It took me a little while before I thought of enabling the language, but once that was done everything worked great! Just go to &lt;em&gt;Language Settings&lt;/em&gt; for the Start page in &lt;em&gt;Edit Mode&lt;/em&gt; and enable the language of your choice.&lt;/p&gt; &lt;p&gt;&lt;a href=&quot;http://lh6.ggpht.com/_W2Im3e5-OCk/TVIcyxIk8sI/AAAAAAAAAbg/br6YbhBrgHU/s1600-h/Edit-Mode-Language-Settings%5B4%5D.png&quot;&gt;&lt;img style=&quot;background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: block; float: none; margin-left: auto; border-top: 0px; margin-right: auto; border-right: 0px; padding-top: 0px&quot; title=&quot;Edit-Mode-Language-Settings&quot; border=&quot;0&quot; alt=&quot;Edit-Mode-Language-Settings&quot; src=&quot;http://lh5.ggpht.com/_W2Im3e5-OCk/TVIc08u7ZOI/AAAAAAAAAbk/8PqZQ64gP5U/Edit-Mode-Language-Settings_thumb%5B2%5D.png?imgmax=800&quot; width=&quot;544&quot; height=&quot;144&quot; /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&quot;1&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/4028573941970551711-6373822067963733921?l=blog.tomstenius.com&quot; alt=&quot;&quot; /&gt;&lt;/div&gt;&lt;div class=&quot;feedflare&quot;&gt;
&lt;a href=&quot;http://feeds.feedburner.com/~ff/TomStenius?a=Xp-FZ9h9HCI:ZrVAoYauuZw:V_sGLiPBpWU&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/TomStenius?i=Xp-FZ9h9HCI:ZrVAoYauuZw:V_sGLiPBpWU&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/TomStenius?a=Xp-FZ9h9HCI:ZrVAoYauuZw:qj6IDK7rITs&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/TomStenius?d=qj6IDK7rITs&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/TomStenius?a=Xp-FZ9h9HCI:ZrVAoYauuZw:gIN9vFwOqvQ&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/TomStenius?i=Xp-FZ9h9HCI:ZrVAoYauuZw:gIN9vFwOqvQ&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/TomStenius?a=Xp-FZ9h9HCI:ZrVAoYauuZw:7Q72WNTAKBA&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/TomStenius?d=7Q72WNTAKBA&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src=&quot;http://feeds.feedburner.com/~r/TomStenius/~4/Xp-FZ9h9HCI&quot; height=&quot;1&quot; width=&quot;1&quot; /&gt;&lt;div class=&quot;feedflare&quot;&gt;
&lt;a href=&quot;http://feeds.feedburner.com/~ff/TomStenius?a=dR-UjsINYpY:ZrVAoYauuZw:V_sGLiPBpWU&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/TomStenius?i=dR-UjsINYpY:ZrVAoYauuZw:V_sGLiPBpWU&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/TomStenius?a=dR-UjsINYpY:ZrVAoYauuZw:qj6IDK7rITs&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/TomStenius?d=qj6IDK7rITs&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/TomStenius?a=dR-UjsINYpY:ZrVAoYauuZw:gIN9vFwOqvQ&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/TomStenius?i=dR-UjsINYpY:ZrVAoYauuZw:gIN9vFwOqvQ&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/TomStenius?a=dR-UjsINYpY:ZrVAoYauuZw:7Q72WNTAKBA&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/TomStenius?d=7Q72WNTAKBA&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src=&quot;http://feeds.feedburner.com/~r/TomStenius/~4/dR-UjsINYpY&quot; height=&quot;1&quot; width=&quot;1&quot; /&gt;&lt;div class=&quot;feedflare&quot;&gt;
&lt;a href=&quot;http://feeds.feedburner.com/~ff/TomStenius?a=IDO3lbh5maw:ZrVAoYauuZw:V_sGLiPBpWU&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/TomStenius?i=IDO3lbh5maw:ZrVAoYauuZw:V_sGLiPBpWU&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/TomStenius?a=IDO3lbh5maw:ZrVAoYauuZw:qj6IDK7rITs&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/TomStenius?d=qj6IDK7rITs&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/TomStenius?a=IDO3lbh5maw:ZrVAoYauuZw:gIN9vFwOqvQ&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/TomStenius?i=IDO3lbh5maw:ZrVAoYauuZw:gIN9vFwOqvQ&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/TomStenius?a=IDO3lbh5maw:ZrVAoYauuZw:7Q72WNTAKBA&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/TomStenius?d=7Q72WNTAKBA&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src=&quot;http://feeds.feedburner.com/~r/TomStenius/~4/IDO3lbh5maw&quot; height=&quot;1&quot; width=&quot;1&quot; /&gt;</description>            <guid>http://feedproxy.google.com/~r/TomStenius/~3/IDO3lbh5maw/changing-master-language-in-episerver.html</guid>            <pubDate>Wed, 09 Feb 2011 05:49:00 GMT</pubDate>           <category>Blog post</category></item><item> <title>Updated WAVE Checker Plug-In</title>            <link>http://feedproxy.google.com/~r/TomStenius/~3/SxI7aSbVtwk/updated-wave-checker-plug-in.html</link>            <description>&lt;p&gt;All of you accessibility fans out there are probably aware of a web site called &lt;a href=&quot;http://wave.webaim.org/&quot;&gt;WAVE.&lt;/a&gt; Wave is a free web based accessibility tool provided by &lt;a href=&quot;http://webaim.org/&quot;&gt;WebAIM&lt;/a&gt;. If you know about this tool and &lt;a href=&quot;http://www.episerver.com/&quot;&gt;EPiServer&lt;/a&gt;, you have probably come across &lt;a href=&quot;http://twitter.com/athraen&quot;&gt;Allan&lt;/a&gt;’s nice &lt;a href=&quot;http://labs.episerver.com/en/Blogs/Allan/Dates/2010/7/Checking-a-accessibility-for-a-page-with-Wave/&quot;&gt;WAVE plug-in for EPiServer CMS&lt;/a&gt;.&lt;/p&gt; &lt;p&gt;A couple a weeks ago I came across a scenario where I wanted to use Allan’s plug-in a demo scenario. “Too easy” I thought to myself, just drop the DLL in the bin folder an let’s rock. However on this demo site I was using &lt;a href=&quot;http://pagetypebuilder.codeplex.com/&quot;&gt;PageTypeBuilder&lt;/a&gt;, and it turns out that the way Allan’s plug-in added the context menu item was a bit too late in the page life cycle. Therefore I took the freedom to copy Allan’s code and modify it a bit to work with PageTypeBuilder – I hope Allan doesn’t mind ;)&lt;/p&gt; &lt;p&gt;&lt;a href=&quot;http://lh4.ggpht.com/_W2Im3e5-OCk/TQWloXEdHAI/AAAAAAAAAag/GqH2jWgiFOg/s1600-h/WAVE-Checker-PlugIn%5B3%5D.png&quot;&gt;&lt;img style=&quot;background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: block; float: none; margin-left: auto; border-top: 0px; margin-right: auto; border-right: 0px; padding-top: 0px&quot; title=&quot;WAVE-Checker-PlugIn&quot; border=&quot;0&quot; alt=&quot;WAVE-Checker-PlugIn&quot; src=&quot;http://lh6.ggpht.com/_W2Im3e5-OCk/TQWlpyLht_I/AAAAAAAAAak/KSV4YazPiew/WAVE-Checker-PlugIn_thumb%5B1%5D.png?imgmax=800&quot; width=&quot;199&quot; height=&quot;240&quot; /&gt;&lt;/a&gt;&lt;/p&gt; &lt;p&gt;In the process I also added language support and created a small icon that is shown in the context menu. Feel free to download &lt;a href=&quot;http://dl.dropbox.com/u/1887985/Blog/EPiXternal.PlugIns.Accessibility.WaveChecker.zip&quot;&gt;the source code here&lt;/a&gt;.&lt;/p&gt; &lt;p&gt;&lt;em&gt;Disclaimer: Please note that the code comes as-is and I will not be held responsible.&lt;/em&gt;&lt;/p&gt;  &lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&quot;1&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/4028573941970551711-8285320715213876815?l=blog.tomstenius.com&quot; alt=&quot;&quot; /&gt;&lt;/div&gt;&lt;div class=&quot;feedflare&quot;&gt;
&lt;a href=&quot;http://feeds.feedburner.com/~ff/TomStenius?a=ETXUZOA6ffY:GdSxlLluv3Q:V_sGLiPBpWU&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/TomStenius?i=ETXUZOA6ffY:GdSxlLluv3Q:V_sGLiPBpWU&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/TomStenius?a=ETXUZOA6ffY:GdSxlLluv3Q:qj6IDK7rITs&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/TomStenius?d=qj6IDK7rITs&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/TomStenius?a=ETXUZOA6ffY:GdSxlLluv3Q:gIN9vFwOqvQ&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/TomStenius?i=ETXUZOA6ffY:GdSxlLluv3Q:gIN9vFwOqvQ&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/TomStenius?a=ETXUZOA6ffY:GdSxlLluv3Q:7Q72WNTAKBA&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/TomStenius?d=7Q72WNTAKBA&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src=&quot;http://feeds.feedburner.com/~r/TomStenius/~4/ETXUZOA6ffY&quot; height=&quot;1&quot; width=&quot;1&quot; /&gt;&lt;div class=&quot;feedflare&quot;&gt;
&lt;a href=&quot;http://feeds.feedburner.com/~ff/TomStenius?a=9mn1ujX-1ZU:GdSxlLluv3Q:V_sGLiPBpWU&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/TomStenius?i=9mn1ujX-1ZU:GdSxlLluv3Q:V_sGLiPBpWU&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/TomStenius?a=9mn1ujX-1ZU:GdSxlLluv3Q:qj6IDK7rITs&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/TomStenius?d=qj6IDK7rITs&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/TomStenius?a=9mn1ujX-1ZU:GdSxlLluv3Q:gIN9vFwOqvQ&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/TomStenius?i=9mn1ujX-1ZU:GdSxlLluv3Q:gIN9vFwOqvQ&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/TomStenius?a=9mn1ujX-1ZU:GdSxlLluv3Q:7Q72WNTAKBA&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/TomStenius?d=7Q72WNTAKBA&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src=&quot;http://feeds.feedburner.com/~r/TomStenius/~4/9mn1ujX-1ZU&quot; height=&quot;1&quot; width=&quot;1&quot; /&gt;&lt;div class=&quot;feedflare&quot;&gt;
&lt;a href=&quot;http://feeds.feedburner.com/~ff/TomStenius?a=SxI7aSbVtwk:GdSxlLluv3Q:V_sGLiPBpWU&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/TomStenius?i=SxI7aSbVtwk:GdSxlLluv3Q:V_sGLiPBpWU&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/TomStenius?a=SxI7aSbVtwk:GdSxlLluv3Q:qj6IDK7rITs&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/TomStenius?d=qj6IDK7rITs&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/TomStenius?a=SxI7aSbVtwk:GdSxlLluv3Q:gIN9vFwOqvQ&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/TomStenius?i=SxI7aSbVtwk:GdSxlLluv3Q:gIN9vFwOqvQ&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/TomStenius?a=SxI7aSbVtwk:GdSxlLluv3Q:7Q72WNTAKBA&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/TomStenius?d=7Q72WNTAKBA&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src=&quot;http://feeds.feedburner.com/~r/TomStenius/~4/SxI7aSbVtwk&quot; height=&quot;1&quot; width=&quot;1&quot; /&gt;</description>            <guid>http://feedproxy.google.com/~r/TomStenius/~3/SxI7aSbVtwk/updated-wave-checker-plug-in.html</guid>            <pubDate>Mon, 13 Dec 2010 05:43:00 GMT</pubDate>           <category>Blog post</category></item><item> <title>Search CMS Pages in Relate+ 2.0</title>            <link>http://feedproxy.google.com/~r/TomStenius/~3/e6DHelHBSG4/search-cms-pages-in-relate-20.html</link>            <description>&lt;p&gt;The new search function in Relate+ 2.0 is really powerful. Relate+ will populate the search index with community content, CMS pages and files out-of-the-box. However the search page that is included in the templates will only search community content.&lt;br /&gt;
&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;http://world.episerver.com/System/Users-and-profiles/Community-Profile-Card/?encryptedcurrentid=JQZg80Eg33Fzf3Rs8E7nGTmbYVEn%2bEQ4&quot;&gt;Eric Pettersson&lt;/a&gt; has &lt;a href=&quot;http://world.episerver.com/Blogs/Eric-Pettersson/Dates/2010/10/How-to-extend-the-search-in-Relate-20-for-showing-CMS-pages/&quot;&gt;blogged&lt;/a&gt; about adding CMS page search to the search page of Relate+ 2.0 – this is great! However he left out a few steps that you have to take to make the search work completely. In this blog post I will highlight these steps. I will assume that you have read Eric’s post and implemented that part already.&lt;br /&gt;
&lt;/p&gt;&lt;p&gt;If you have followed Eric’s steps and then played around with your site, the chances are good that your index is a bit off – especially if you have deleted pages. Because of this, the first thing that we want to do is re-build the index. This is done using this code snippet:&lt;br /&gt;
&lt;/p&gt;&lt;pre class=&quot;language-csharp&quot;&gt;&lt;code&gt;EPiServer.Search.SearchHandler.Instance.ResetIndex(&quot;default&quot;);
EPiServer.Community.Search.SearchHandler.Instance.AddCommunityEntitiesToIndex(true);            
EPiServer.Templates.RelatePlus.CmsModules.CmsSearchHandler.Instance.IndexPublishedCmsPages();
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;The &lt;em&gt;“default”&lt;/em&gt; is the name of your index, change it if you have changed the name of the index. You can find that code in the attached &lt;em&gt;ReIndexRelatePlus2.aspx&lt;/em&gt; – this is a modified version of the re-index page found &lt;a href=&quot;http://world.episerver.com/Download/Items/EPiServer-Community/EPiServer-Community-40/Database-Migration-Script-for-EPiServer-Community-32-to-40-and-EPiServer-Mail-44-to-50/&quot;&gt;here&lt;/a&gt;. Simply place the file in your web root and run it.&lt;br /&gt;
Now locate the file &lt;em&gt;CmsIntegrationModule.cs&lt;/em&gt; in &lt;em&gt;/Templates/RelatePlus/InitializationModules/&lt;/em&gt;and have a look at the method called &lt;em&gt;Instance_MovedPage&lt;/em&gt;. We need to modify this version so that the search index is always updated. In the code that you get out-of-the-box the search index will only be updated if the Club association has been effected. Change the code to something like this:&lt;br /&gt;
&lt;/p&gt;&lt;pre class=&quot;language-csharp&quot;&gt;&lt;code&gt;private static void Instance_MovedPage(object sender, PageEventArgs e)
{
    // Guard
    if (e == null || PageReference.IsNullOrEmpty(e.PageLink)) return;

    // Remove the page from cache due to Bug #24524 where IsDeleted gets its value from cache.
    DataFactoryCache.RemovePage(e.PageLink);
    PageData currentPage = EPiServer.DataFactory.Instance.GetPage(e.PageLink);

    // Update this page in search index
    // Since we don&#39;t want pages from the recycle bin in search result, we remove them from index
    if (currentPage.IsDeleted)
    {
        CmsSearchHandler.Instance.UpdateIndex(currentPage, IndexAction.Remove);
    }
    else
    {
        CmsSearchHandler.Instance.UpdateIndex(currentPage, IndexAction.Update);
    }

    // Get the club id
    int clubId = GetClubId(e.PageLink);

    if (clubId != -1)
    {
        // Get the club
        Club associatedClub = ClubHandler.Instance.GetClub(clubId);
        if (associatedClub != null)
        {
            Club clubClone = associatedClub.Clone() as Club;

            if (currentPage.IsDeleted)
            {
                clubClone.RemoveAssociatedPage(currentPage);
                ClubHandler.Instance.UpdateClub(clubClone);
            }
        }
    }
}
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;In this code I have also changed it so that when a page is deleted, i.e. moved to the recycle bin, the page is removed from the search index. This is done since we do not want to include deleted pages in the search result.&lt;br /&gt;
&lt;/p&gt;&lt;p&gt;You can find the &lt;a href=&quot;http://dl.dropbox.com/u/1887985/Blog/Search-Pages-RelatePlus.zip&quot;&gt;entire source code here&lt;/a&gt;. Enjoy!&lt;br /&gt;
&lt;/p&gt;&lt;p&gt;&lt;em&gt;Disclaimer: Please note that the code comes as-is and I will not be held responsible.&lt;/em&gt;&lt;/p&gt;&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&quot;1&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/4028573941970551711-3134225436088271993?l=blog.tomstenius.com&quot; alt=&quot;&quot; /&gt;&lt;/div&gt;&lt;div class=&quot;feedflare&quot;&gt;
&lt;a href=&quot;http://feeds.feedburner.com/~ff/TomStenius?a=rzvg9iUxS5M:KdjCzCqVF3I:V_sGLiPBpWU&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/TomStenius?i=rzvg9iUxS5M:KdjCzCqVF3I:V_sGLiPBpWU&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/TomStenius?a=rzvg9iUxS5M:KdjCzCqVF3I:qj6IDK7rITs&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/TomStenius?d=qj6IDK7rITs&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/TomStenius?a=rzvg9iUxS5M:KdjCzCqVF3I:gIN9vFwOqvQ&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/TomStenius?i=rzvg9iUxS5M:KdjCzCqVF3I:gIN9vFwOqvQ&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/TomStenius?a=rzvg9iUxS5M:KdjCzCqVF3I:7Q72WNTAKBA&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/TomStenius?d=7Q72WNTAKBA&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src=&quot;http://feeds.feedburner.com/~r/TomStenius/~4/rzvg9iUxS5M&quot; height=&quot;1&quot; width=&quot;1&quot; /&gt;&lt;div class=&quot;feedflare&quot;&gt;
&lt;a href=&quot;http://feeds.feedburner.com/~ff/TomStenius?a=kwssgOp8_wc:KdjCzCqVF3I:V_sGLiPBpWU&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/TomStenius?i=kwssgOp8_wc:KdjCzCqVF3I:V_sGLiPBpWU&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/TomStenius?a=kwssgOp8_wc:KdjCzCqVF3I:qj6IDK7rITs&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/TomStenius?d=qj6IDK7rITs&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/TomStenius?a=kwssgOp8_wc:KdjCzCqVF3I:gIN9vFwOqvQ&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/TomStenius?i=kwssgOp8_wc:KdjCzCqVF3I:gIN9vFwOqvQ&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/TomStenius?a=kwssgOp8_wc:KdjCzCqVF3I:7Q72WNTAKBA&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/TomStenius?d=7Q72WNTAKBA&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src=&quot;http://feeds.feedburner.com/~r/TomStenius/~4/kwssgOp8_wc&quot; height=&quot;1&quot; width=&quot;1&quot; /&gt;&lt;div class=&quot;feedflare&quot;&gt;
&lt;a href=&quot;http://feeds.feedburner.com/~ff/TomStenius?a=e6DHelHBSG4:KdjCzCqVF3I:V_sGLiPBpWU&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/TomStenius?i=e6DHelHBSG4:KdjCzCqVF3I:V_sGLiPBpWU&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/TomStenius?a=e6DHelHBSG4:KdjCzCqVF3I:qj6IDK7rITs&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/TomStenius?d=qj6IDK7rITs&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/TomStenius?a=e6DHelHBSG4:KdjCzCqVF3I:gIN9vFwOqvQ&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/TomStenius?i=e6DHelHBSG4:KdjCzCqVF3I:gIN9vFwOqvQ&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/TomStenius?a=e6DHelHBSG4:KdjCzCqVF3I:7Q72WNTAKBA&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/TomStenius?d=7Q72WNTAKBA&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src=&quot;http://feeds.feedburner.com/~r/TomStenius/~4/e6DHelHBSG4&quot; height=&quot;1&quot; width=&quot;1&quot; /&gt;</description>            <guid>http://feedproxy.google.com/~r/TomStenius/~3/e6DHelHBSG4/search-cms-pages-in-relate-20.html</guid>            <pubDate>Thu, 18 Nov 2010 04:52:00 GMT</pubDate>           <category>Blog post</category></item><item> <title>Resetting the EPiServer Dashboard</title>            <link>http://feedproxy.google.com/~r/TomStenius/~3/Tk03qEqfCQY/resetting-episerver-dashboard.html</link>            <description>&lt;p&gt;Here is a quick little tip; Sometimes when you are playing around with new gadgets on the Dashboard of EPiServer CMS 6 things doesn’t go as you planned. In these cases it could be good to know that there is a way of resetting your Dashboard. Simply navigate to &lt;a href=&quot;http://[yoursite]/[secureui]/shell/debug/dashboard&quot;&gt;http://[yoursite]/[secureui]/shell/debug/dashboard&lt;/a&gt;, there you will displayed with the options of deleting gadgets, entire tabs or resetting the Dashboard.&lt;/p&gt; &lt;p&gt;&lt;a href=&quot;http://lh3.ggpht.com/_W2Im3e5-OCk/TOCdkKGCTbI/AAAAAAAAAYc/IAQeXj93xSs/s1600-h/Dashboard-Debug%5B5%5D.png&quot;&gt;&lt;img style=&quot;background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: block; float: none; margin-left: auto; border-top: 0px; margin-right: auto; border-right: 0px; padding-top: 0px&quot; title=&quot;Dashboard-Debug&quot; border=&quot;0&quot; alt=&quot;Dashboard-Debug&quot; src=&quot;http://lh4.ggpht.com/_W2Im3e5-OCk/TOCdmGm3vYI/AAAAAAAAAYg/vK_nih1c8rs/Dashboard-Debug_thumb%5B3%5D.png?imgmax=800&quot; width=&quot;541&quot; height=&quot;445&quot; /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&quot;1&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/4028573941970551711-3394850543908327731?l=blog.tomstenius.com&quot; alt=&quot;&quot; /&gt;&lt;/div&gt;&lt;div class=&quot;feedflare&quot;&gt;
&lt;a href=&quot;http://feeds.feedburner.com/~ff/TomStenius?a=728kdMtGa_0:FXXsrGzgGeM:V_sGLiPBpWU&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/TomStenius?i=728kdMtGa_0:FXXsrGzgGeM:V_sGLiPBpWU&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/TomStenius?a=728kdMtGa_0:FXXsrGzgGeM:qj6IDK7rITs&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/TomStenius?d=qj6IDK7rITs&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/TomStenius?a=728kdMtGa_0:FXXsrGzgGeM:gIN9vFwOqvQ&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/TomStenius?i=728kdMtGa_0:FXXsrGzgGeM:gIN9vFwOqvQ&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/TomStenius?a=728kdMtGa_0:FXXsrGzgGeM:7Q72WNTAKBA&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/TomStenius?d=7Q72WNTAKBA&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src=&quot;http://feeds.feedburner.com/~r/TomStenius/~4/728kdMtGa_0&quot; height=&quot;1&quot; width=&quot;1&quot; /&gt;&lt;div class=&quot;feedflare&quot;&gt;
&lt;a href=&quot;http://feeds.feedburner.com/~ff/TomStenius?a=T9b-d62l30U:FXXsrGzgGeM:V_sGLiPBpWU&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/TomStenius?i=T9b-d62l30U:FXXsrGzgGeM:V_sGLiPBpWU&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/TomStenius?a=T9b-d62l30U:FXXsrGzgGeM:qj6IDK7rITs&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/TomStenius?d=qj6IDK7rITs&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/TomStenius?a=T9b-d62l30U:FXXsrGzgGeM:gIN9vFwOqvQ&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/TomStenius?i=T9b-d62l30U:FXXsrGzgGeM:gIN9vFwOqvQ&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/TomStenius?a=T9b-d62l30U:FXXsrGzgGeM:7Q72WNTAKBA&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/TomStenius?d=7Q72WNTAKBA&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src=&quot;http://feeds.feedburner.com/~r/TomStenius/~4/T9b-d62l30U&quot; height=&quot;1&quot; width=&quot;1&quot; /&gt;&lt;div class=&quot;feedflare&quot;&gt;
&lt;a href=&quot;http://feeds.feedburner.com/~ff/TomStenius?a=Tk03qEqfCQY:FXXsrGzgGeM:V_sGLiPBpWU&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/TomStenius?i=Tk03qEqfCQY:FXXsrGzgGeM:V_sGLiPBpWU&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/TomStenius?a=Tk03qEqfCQY:FXXsrGzgGeM:qj6IDK7rITs&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/TomStenius?d=qj6IDK7rITs&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/TomStenius?a=Tk03qEqfCQY:FXXsrGzgGeM:gIN9vFwOqvQ&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/TomStenius?i=Tk03qEqfCQY:FXXsrGzgGeM:gIN9vFwOqvQ&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/TomStenius?a=Tk03qEqfCQY:FXXsrGzgGeM:7Q72WNTAKBA&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/TomStenius?d=7Q72WNTAKBA&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src=&quot;http://feeds.feedburner.com/~r/TomStenius/~4/Tk03qEqfCQY&quot; height=&quot;1&quot; width=&quot;1&quot; /&gt;</description>            <guid>http://feedproxy.google.com/~r/TomStenius/~3/Tk03qEqfCQY/resetting-episerver-dashboard.html</guid>            <pubDate>Mon, 15 Nov 2010 03:40:00 GMT</pubDate>           <category>Blog post</category></item><item> <title>FW: Security Vulnerability in ASP.NET</title>            <link>http://feedproxy.google.com/~r/TomStenius/~3/MxZfvCve6TU/fw-security-vulnerability-in-aspnet.html</link>            <description>This is a very short post for all my readers in Australia and New Zealand. I just wanted to make sure that you have not missed the blog post from &lt;a href=&quot;http://www.episerver.com/&quot;&gt;EPiServer&lt;/a&gt;&#39;s CTO &lt;a href=&quot;http://world.episerver.com/System/Users-and-profiles/Community-Profile-Card/?encryptedcurrentid=hOPmfRZj%2baA%3d&quot;&gt;Per Ivansson&lt;/a&gt; about how EPiServer dealt with the &lt;a href=&quot;http://www.microsoft.com/technet/security/advisory/2416728.mspx&quot;&gt;Security Vulnerability&lt;/a&gt; discovered in ASP.Net a couple a weeks ago.&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;http://world.episerver.com/Blogs/Per-Ivansson/Dates/2010/9/Security-Vulnerability-in-ASPNET/&quot;&gt;Read Per&#39;s blog post here.&lt;/a&gt;&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&quot;1&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/4028573941970551711-2511286107933470042?l=blog.tomstenius.com&quot; alt=&quot;&quot; /&gt;&lt;/div&gt;&lt;div class=&quot;feedflare&quot;&gt;
&lt;a href=&quot;http://feeds.feedburner.com/~ff/TomStenius?a=PSBkdXsKO1M:sGKS09Zs5u0:V_sGLiPBpWU&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/TomStenius?i=PSBkdXsKO1M:sGKS09Zs5u0:V_sGLiPBpWU&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/TomStenius?a=PSBkdXsKO1M:sGKS09Zs5u0:qj6IDK7rITs&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/TomStenius?d=qj6IDK7rITs&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/TomStenius?a=PSBkdXsKO1M:sGKS09Zs5u0:gIN9vFwOqvQ&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/TomStenius?i=PSBkdXsKO1M:sGKS09Zs5u0:gIN9vFwOqvQ&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/TomStenius?a=PSBkdXsKO1M:sGKS09Zs5u0:7Q72WNTAKBA&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/TomStenius?d=7Q72WNTAKBA&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src=&quot;http://feeds.feedburner.com/~r/TomStenius/~4/PSBkdXsKO1M&quot; height=&quot;1&quot; width=&quot;1&quot; /&gt;&lt;div class=&quot;feedflare&quot;&gt;
&lt;a href=&quot;http://feeds.feedburner.com/~ff/TomStenius?a=YozQ5epVHew:sGKS09Zs5u0:V_sGLiPBpWU&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/TomStenius?i=YozQ5epVHew:sGKS09Zs5u0:V_sGLiPBpWU&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/TomStenius?a=YozQ5epVHew:sGKS09Zs5u0:qj6IDK7rITs&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/TomStenius?d=qj6IDK7rITs&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/TomStenius?a=YozQ5epVHew:sGKS09Zs5u0:gIN9vFwOqvQ&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/TomStenius?i=YozQ5epVHew:sGKS09Zs5u0:gIN9vFwOqvQ&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/TomStenius?a=YozQ5epVHew:sGKS09Zs5u0:7Q72WNTAKBA&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/TomStenius?d=7Q72WNTAKBA&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src=&quot;http://feeds.feedburner.com/~r/TomStenius/~4/YozQ5epVHew&quot; height=&quot;1&quot; width=&quot;1&quot; /&gt;&lt;div class=&quot;feedflare&quot;&gt;
&lt;a href=&quot;http://feeds.feedburner.com/~ff/TomStenius?a=MxZfvCve6TU:sGKS09Zs5u0:V_sGLiPBpWU&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/TomStenius?i=MxZfvCve6TU:sGKS09Zs5u0:V_sGLiPBpWU&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/TomStenius?a=MxZfvCve6TU:sGKS09Zs5u0:qj6IDK7rITs&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/TomStenius?d=qj6IDK7rITs&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/TomStenius?a=MxZfvCve6TU:sGKS09Zs5u0:gIN9vFwOqvQ&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/TomStenius?i=MxZfvCve6TU:sGKS09Zs5u0:gIN9vFwOqvQ&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/TomStenius?a=MxZfvCve6TU:sGKS09Zs5u0:7Q72WNTAKBA&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/TomStenius?d=7Q72WNTAKBA&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src=&quot;http://feeds.feedburner.com/~r/TomStenius/~4/MxZfvCve6TU&quot; height=&quot;1&quot; width=&quot;1&quot; /&gt;</description>            <guid>http://feedproxy.google.com/~r/TomStenius/~3/MxZfvCve6TU/fw-security-vulnerability-in-aspnet.html</guid>            <pubDate>Fri, 24 Sep 2010 06:32:00 GMT</pubDate>           <category>Blog post</category></item><item> <title>AGLS Metadata Support in EPiServer CMS</title>            <link>http://feedproxy.google.com/~r/TomStenius/~3/pyrlwSnXH4o/agls-metadata-support-in-episerver-cms.html</link>            <description>&lt;p&gt;In almost every tender, RFQ, RFI, or whatever you want to call it, that goes out in Australia there is a mandatory request to support the &lt;a href=&quot;http://www.agls.gov.au/&quot;&gt;AGLS Metadata Standard&lt;/a&gt;. In governmental type of tenders there are no exception to this rule. To best describe what AGLS Metadata is I’m going to quote the &lt;a href=&quot;http://www.agls.gov.au/&quot;&gt;AGLS Metadata web site&lt;/a&gt;; &lt;/p&gt; &lt;p&gt;&lt;em&gt;“The AGLS Metadata Standard is a set of descriptive properties to improve visibility and availability of online resources.”&lt;/em&gt;&lt;/p&gt; &lt;p&gt;It is a standard used to add metadata to almost any type of resource, but in my case – since I’m working with EPiServer CMS – I’m going to apply it to web pages and also talk about it from this perspective. There are a number of ways to add custom metadata tags to EPiServer pages, and this is also what I tend to say to partners responsible for replying to the already mentioned tenders, RFQs, RFIs… But since the AGLS Metadata support is so common I decided to create an out-of-the-box solution that will add the AGLS Metadata Standard support to EPiServer.&lt;/p&gt; &lt;p&gt;In my work I have used the &lt;a href=&quot;http://www.agls.gov.au/pdf/AGLS%20Metadata%20Standard%20Part%202%20Usage%20Guide.PDF&quot;&gt;AGLS Metadata Standard Part 2, Usage Guide&lt;/a&gt; (PDF) as reference on how to implement AGLS on web sites. This document is recently updated (mid August 2010) and if you have a look around at random governmental web sites in Australia you will find that most of them still use the legacy implementation mentioned in the document. However since I’m doing a fresh implementation I will go for the new way of adding the metadata tags.&lt;/p&gt; &lt;p&gt;From the Usage Guide you will find that AGLS Metadata is an application profile of Dublin Core metadata standard. This is almost the same as saying that AGLS is a superset of Dublin Core. With this said I decided to make a component that supports both Dublin Core and AGLS, you can simply choose which of these two metadata standards you want to use on your web site.&lt;/p&gt; &lt;p&gt;Dublin Core support for EPiServer CMS has &lt;a href=&quot;http://world.episerver.com/Blogs/Ben-Morris/Dates/2010/2/Implementing-Dublin-Core-meta-data-for-EPiServer-pages-via-a-plug-in/&quot;&gt;been built before&lt;/a&gt;. I think &lt;a href=&quot;http://world.episerver.com/System/Users-and-profiles/Community-Profile-Card/?encryptedcurrentid=rUy7bjWf1X6a4xeep%2bM3tbYSCGnHTPARBfB0%2b8VYtfQ%3d&quot;&gt;Ben’s&lt;/a&gt; implementation is pretty cool, however I decided to take a slightly different approach since I wanted to give the editors an easy way of overriding the default values. To solve this I decided to make use of &lt;a href=&quot;http://pagetypebuilder.codeplex.com/&quot;&gt;PageTypeBuilder&lt;/a&gt; and create two page base classes; one for Dublin Core and one for AGLS. These base classes will add properties to your &lt;em&gt;PageType&lt;/em&gt; corresponding to the elements in Dublin Core and AGLS. All the properties will show up on a &lt;em&gt;Metadata&lt;/em&gt; tab on the page with a few exceptions, since some of the properties are always automatically added. The automatic properties are;&lt;/p&gt; &lt;ul&gt; &lt;li&gt;&lt;em&gt;DCTERMS.created&lt;/em&gt; – The creation date of the page&lt;/li&gt; &lt;li&gt;&lt;em&gt;DCTERMS.modified&lt;/em&gt; – The modified date of the page&lt;/li&gt; &lt;li&gt;&lt;em&gt;DCTERMS.format&lt;/em&gt; – Will be “text/html”&lt;/li&gt; &lt;li&gt;&lt;em&gt;DCTERMS.identifier&lt;/em&gt; – Url to the page&lt;/li&gt; &lt;li&gt;&lt;em&gt;DCTERMS.language&lt;/em&gt; – Language branch of the page&lt;/li&gt; &lt;li&gt;&lt;em&gt;AGLSTERMS.availability&lt;/em&gt; – Url to the page&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;To add support for either of the metadata standards you simply inherit from either &lt;em&gt;EPiXternal.Metadata.PageTypes.DublinCore&lt;/em&gt; or &lt;em&gt;EPiXternal.Metadata.PageTypes.AGLS – &lt;/em&gt;as you have understood by now you have to be using PageTypeBuilder in your project. Then you just have to add the &lt;em&gt;MetadataIncluder&lt;/em&gt; web control to the head tag of your &lt;em&gt;MasterPage&lt;/em&gt;. This control will look at the current page type and include metadata elements if the page is of type &lt;em&gt;DublinCore&lt;/em&gt; or &lt;em&gt;AGLS&lt;/em&gt;.&lt;/p&gt;&lt;pre class=&quot;language-xml&quot;&gt;&lt;code&gt;&amp;lt;EPiXternal:MetaData ID=&quot;MetaData&quot; runat=&quot;server&quot; /&amp;gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;This is how it would like if you view the source of a page implementing AGLS.&lt;/p&gt;&lt;pre class=&quot;language-xml&quot;&gt;&lt;code&gt;&amp;lt;link rel=&quot;schema.DCTERMS&quot; href=&quot;http://purl.org/dc/terms/&quot; /&amp;gt; 
&amp;lt;link rel=&quot;schema.AGLSTERMS&quot; href=&quot;http://www.agls.gov.au/agls/terms/&quot; /&amp;gt; 
&amp;lt;meta name=&quot;DCTERMS.title&quot; content=&quot;Sample Article&quot; /&amp;gt; 
&amp;lt;meta name=&quot;DCTERMS.description&quot; content=&quot;This is a sample article using the AGLS plugin&quot; /&amp;gt; 
&amp;lt;meta name=&quot;DCTERMS.created&quot; scheme=&quot;DCTERMS.ISO8601&quot; content=&quot;2010-08-19T21:24+10:00&quot; /&amp;gt; 
&amp;lt;meta name=&quot;DCTERMS.modified&quot; scheme=&quot;DCTERMS.ISO8601&quot; content=&quot;2010-08-19T21:24+10:00&quot; /&amp;gt; 
&amp;lt;meta name=&quot;DCTERMS.format&quot; scheme=&quot;DCTERMS.IMT&quot; content=&quot;text/html&quot; /&amp;gt; 
&amp;lt;meta name=&quot;DCTERMS.language&quot; scheme=&quot;DCTERMS.RFC4646&quot; content=&quot;en&quot; /&amp;gt; 
&amp;lt;meta name=&quot;DCTERMS.publisher&quot; content=&quot;EPiServer Australia Pty Ltd&quot; /&amp;gt; 
&amp;lt;meta name=&quot;DCTERMS.creator&quot; content=&quot;tom&quot; /&amp;gt; 
&amp;lt;meta name=&quot;DCTERMS.coverage&quot; content=&quot;World&quot; /&amp;gt; 
&amp;lt;meta name=&quot;DCTERMS.rights&quot; scheme=&quot;DCTERMS.URI&quot; content=&quot;http://pagetypebuilder.local/Copyright/&quot; /&amp;gt; 
&amp;lt;meta name=&quot;DCTERMS.identifier&quot; scheme=&quot;DCTERMS.URI&quot; content=&quot;http://pagetypebuilder.local/Sample-Article/&quot; /&amp;gt; 
&amp;lt;meta name=&quot;DCTERMS.type&quot; scheme=&quot;DCMIType&quot; content=&quot;episerver sample code&quot; /&amp;gt; 
&amp;lt;meta name=&quot;DCTERMS.subject&quot; content=&quot;episerver sample code&quot; /&amp;gt; 
&amp;lt;meta name=&quot;AGLSTERMS.availability&quot; scheme=&quot;DCTERMS.URI&quot; content=&quot;http://pagetypebuilder.local/Sample-Article/&quot; /&amp;gt; 
&amp;lt;meta name=&quot;AGLSTERMS.function&quot; content=&quot;education&quot; /&amp;gt; 
&amp;lt;meta name=&quot;AGLSTERMS.aggregationLevel&quot; content=&quot;collection&quot; /&amp;gt; 
&amp;lt;meta name=&quot;AGLSTERMS.category&quot; content=&quot;service&quot; /&amp;gt; 
&amp;lt;meta name=&quot;AGLSTERMS.documentType&quot; content=&quot;guidelines&quot; /&amp;gt; 
&amp;lt;meta name=&quot;AGLSTERMS.serviceType&quot; content=&quot;training&quot; /&amp;gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Almost all of the properties will have default values if the properties are not set on the specific page. The default value of each of the properties in edit mode is stated in the help text. The editor also have the possibility to override the defaults by specifying a fallback value on the corresponding properties on the start page. If for some reason you have a fallback value on the start page, but you don’t want it to be displayed for a specific property on a specific page you can just insert a “-“ which will cause the &lt;em&gt;MetadataIncluder&lt;/em&gt; to omit that property on the page.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://lh3.ggpht.com/_W2Im3e5-OCk/THSIAiCU6uI/AAAAAAAAAXs/owVrEGil1vM/s1600-h/agls-metadata-edit-mode%5B7%5D.png&quot;&gt;&lt;img style=&quot;border-bottom: 0px; border-left: 0px; display: block; float: none; margin-left: auto; border-top: 0px; margin-right: auto; border-right: 0px&quot; title=&quot;agls-metadata-edit-mode&quot; border=&quot;0&quot; alt=&quot;agls-metadata-edit-mode&quot; src=&quot;http://lh3.ggpht.com/_W2Im3e5-OCk/THSIBciZauI/AAAAAAAAAXw/XBn4oIS6cRU/agls-metadata-edit-mode_thumb%5B3%5D.png?imgmax=800&quot; width=&quot;413&quot; height=&quot;484&quot; /&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;I hope this will make all of our partners in Australia, and maybe some in UK as well since Dublin Core is big over there. The source code can be &lt;a href=&quot;http://dl.dropbox.com/u/1887985/Blog/EPiXternal.Metadata.zip&quot;&gt;downloaded here&lt;/a&gt; – enjoy!&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Disclaimer: Please not that the code comes as-is and I will not be held responsible. &lt;/em&gt;&lt;/p&gt;  &lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&quot;1&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/4028573941970551711-5526358575682185484?l=blog.tomstenius.com&quot; alt=&quot;&quot; /&gt;&lt;/div&gt;&lt;div class=&quot;feedflare&quot;&gt;
&lt;a href=&quot;http://feeds.feedburner.com/~ff/TomStenius?a=xevivfAhszo:PKhJ8wRurms:V_sGLiPBpWU&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/TomStenius?i=xevivfAhszo:PKhJ8wRurms:V_sGLiPBpWU&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/TomStenius?a=xevivfAhszo:PKhJ8wRurms:qj6IDK7rITs&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/TomStenius?d=qj6IDK7rITs&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/TomStenius?a=xevivfAhszo:PKhJ8wRurms:gIN9vFwOqvQ&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/TomStenius?i=xevivfAhszo:PKhJ8wRurms:gIN9vFwOqvQ&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/TomStenius?a=xevivfAhszo:PKhJ8wRurms:7Q72WNTAKBA&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/TomStenius?d=7Q72WNTAKBA&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src=&quot;http://feeds.feedburner.com/~r/TomStenius/~4/xevivfAhszo&quot; height=&quot;1&quot; width=&quot;1&quot; /&gt;&lt;div class=&quot;feedflare&quot;&gt;
&lt;a href=&quot;http://feeds.feedburner.com/~ff/TomStenius?a=Tb0YgGRQ5_Y:PKhJ8wRurms:V_sGLiPBpWU&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/TomStenius?i=Tb0YgGRQ5_Y:PKhJ8wRurms:V_sGLiPBpWU&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/TomStenius?a=Tb0YgGRQ5_Y:PKhJ8wRurms:qj6IDK7rITs&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/TomStenius?d=qj6IDK7rITs&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/TomStenius?a=Tb0YgGRQ5_Y:PKhJ8wRurms:gIN9vFwOqvQ&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/TomStenius?i=Tb0YgGRQ5_Y:PKhJ8wRurms:gIN9vFwOqvQ&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/TomStenius?a=Tb0YgGRQ5_Y:PKhJ8wRurms:7Q72WNTAKBA&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/TomStenius?d=7Q72WNTAKBA&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src=&quot;http://feeds.feedburner.com/~r/TomStenius/~4/Tb0YgGRQ5_Y&quot; height=&quot;1&quot; width=&quot;1&quot; /&gt;&lt;div class=&quot;feedflare&quot;&gt;
&lt;a href=&quot;http://feeds.feedburner.com/~ff/TomStenius?a=pyrlwSnXH4o:PKhJ8wRurms:V_sGLiPBpWU&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/TomStenius?i=pyrlwSnXH4o:PKhJ8wRurms:V_sGLiPBpWU&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/TomStenius?a=pyrlwSnXH4o:PKhJ8wRurms:qj6IDK7rITs&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/TomStenius?d=qj6IDK7rITs&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/TomStenius?a=pyrlwSnXH4o:PKhJ8wRurms:gIN9vFwOqvQ&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/TomStenius?i=pyrlwSnXH4o:PKhJ8wRurms:gIN9vFwOqvQ&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/TomStenius?a=pyrlwSnXH4o:PKhJ8wRurms:7Q72WNTAKBA&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/TomStenius?d=7Q72WNTAKBA&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src=&quot;http://feeds.feedburner.com/~r/TomStenius/~4/pyrlwSnXH4o&quot; height=&quot;1&quot; width=&quot;1&quot; /&gt;</description>            <guid>http://feedproxy.google.com/~r/TomStenius/~3/pyrlwSnXH4o/agls-metadata-support-in-episerver-cms.html</guid>            <pubDate>Wed, 25 Aug 2010 05:00:00 GMT</pubDate>           <category>Blog post</category></item><item> <title>Multilevel Drop Down Menu in EPiServer CMS</title>            <link>http://feedproxy.google.com/~r/TomStenius/~3/neDlotRW1-Y/multilevel-drop-down-menu-in-episerver.html</link>            <description>&lt;p&gt;Today I want to share a simple and small code sample that I put together for a partner. In this sample I going to show how you could implement a Drop Down Menu in EPiServer CMS.&lt;/p&gt; &lt;p&gt;There are &lt;a href=&quot;http://www.google.com/search?sourceid=chrome&amp;amp;ie=UTF-8&amp;amp;q=Multilevel+Drop+Down+Menu&quot;&gt;heaps of Drop Down Menus&lt;/a&gt; available on the Internet. I did quick Google search and found &lt;a href=&quot;http://www.kriesi.at/archives/create-a-multilevel-dropdown-menu-with-css-and-improve-it-via-jquery&quot;&gt;this one&lt;/a&gt;, which I kind of liked. It is a simple drop down menu with multilevel support built with CSS. You also have the option of adding some JQuery to make it look even prettier. Kudos to &lt;a href=&quot;http://www.kriesi.at/about&quot;&gt;Kriesi&lt;/a&gt; for building the menu! What I have done is implementing the menu in EPiServer CMS. To learn more about the specific of the CSS and the JavaScript code please visit the &lt;a href=&quot;http://www.kriesi.at/archives/create-a-multilevel-dropdown-menu-with-css-and-improve-it-via-jquery&quot;&gt;original blog post&lt;/a&gt;.&lt;/p&gt; &lt;p&gt;To illustrate how you could implement the menu in EPiServer I created a plain PageType. I decided to use the &lt;a href=&quot;http://sdk.episerver.com/library/cms5/html/T_EPiServer_Web_WebControls_PageTree.htm&quot;&gt;EPiServer PageTree&lt;/a&gt; class to build my menu, the code looks like this:&lt;/p&gt;&lt;pre class=&quot;language-xml&quot;&gt;&lt;code&gt;&amp;lt;EPiServer:PageTree runat=&quot;server&quot; ID=&quot;DropDownMenu&quot; EvaluateHasChildren=&quot;true&quot; ExpandAll=&quot;true&quot; NumberOfLevels=&quot;3&quot;&amp;gt;
    &amp;lt;ItemTemplate&amp;gt;
        &amp;lt;li&amp;gt;
            &amp;lt;EPiServer:Property ID=&quot;Property1&quot; PropertyName=&quot;PageLink&quot; runat=&quot;server&quot; /&amp;gt;&amp;lt;%# GetItemSeparator(Container.HasChildren) %&amp;gt;
    &amp;lt;/ItemTemplate&amp;gt;
    &amp;lt;IndentTemplate&amp;gt;
        &amp;lt;%# GetIndentTemplate(Container.Indent) %&amp;gt;
    &amp;lt;/IndentTemplate&amp;gt;
    &amp;lt;UnindentTemplate&amp;gt;
        &amp;lt;/ul&amp;gt; 
        &amp;lt;/li&amp;gt;
    &amp;lt;/UnindentTemplate&amp;gt;
&amp;lt;/EPiServer:PageTree&amp;gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;There are two tricks used in this implementation. Since the menu relies on nested lists, we have to have a dynamic approach to which &lt;em&gt;IndentTemplate&lt;/em&gt; and which &lt;em&gt;ItemTemplate&lt;/em&gt; to use. For this I created two methods; &lt;em&gt;GetIndentTemplate(int)&lt;/em&gt; will add an id tag to the &lt;em&gt;&amp;lt;ul&amp;gt;&lt;/em&gt; element if it is the most outer, i.e. the first, list. &lt;em&gt;GetItemSeparator(bool)&lt;/em&gt; will make sure we get a nested list if the current item has children. This is how the code looks like:&lt;/p&gt;&lt;pre class=&quot;language-csharp&quot;&gt;&lt;code&gt;protected string GetIndentTemplate(int indent)
{
    if (indent == 1)
    {
        return &quot;&amp;lt;ul id=\&quot;nav\&quot;&amp;gt;&quot;;
    }

    return &quot;&amp;lt;ul&amp;gt;&quot;;
}

protected string GetItemSeparator(bool hasChildren)
{
    if (!hasChildren)
    {
        return &quot;&amp;lt;/li&amp;gt;&quot;;
    }

    return String.Empty;        
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Using the default CSS that comes with the menu will make your EPiServer CMS page look something like this:&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://lh6.ggpht.com/_W2Im3e5-OCk/TG3h06fhgaI/AAAAAAAAAXU/jYPEvkMhtIs/s1600-h/DropDownMenuSample%5B6%5D.png&quot;&gt;&lt;img style=&quot;border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px&quot; title=&quot;DropDownMenuSample&quot; border=&quot;0&quot; alt=&quot;DropDownMenuSample&quot; src=&quot;http://lh4.ggpht.com/_W2Im3e5-OCk/TG3h25DncTI/AAAAAAAAAXY/W97fE85K_ng/DropDownMenuSample_thumb%5B4%5D.png?imgmax=800&quot; width=&quot;500&quot; height=&quot;262&quot; /&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;If you want the complete sample code, you can &lt;a href=&quot;http://dl.dropbox.com/u/1887985/Blog/DropDownMenu.zip&quot;&gt;download it here&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;&lt;font color=&quot;#ff0000&quot;&gt;Update!&lt;/font&gt;&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;As &lt;a href=&quot;http://www.dodavinkeln.se/page/About-me.aspx&quot;&gt;Johan&lt;/a&gt; mentioned in one of the comments you can make use of the &lt;em&gt;ItemHeaderTemplate&lt;/em&gt; and the &lt;em&gt;ItemFooterTemplate&lt;/em&gt; to make an alternate implementation of the menu without logic in the code behind. Inspired by the comment by Johan I made some changes to show you how it could look like. Thanks Johan!&lt;/p&gt;&lt;pre class=&quot;language-csharp&quot;&gt;&lt;code&gt;&amp;lt;EPiServer:PageTree runat=&quot;server&quot; ID=&quot;DropDownMenu&quot; EvaluateHasChildren=&quot;true&quot; ExpandAll=&quot;true&quot; NumberOfLevels=&quot;3&quot;&amp;gt;        
    &amp;lt;IndentTemplate&amp;gt;
        &amp;lt;%# Container.Indent == 1 ? &quot;&amp;lt;ul id=\&quot;nav\&quot;&amp;gt;&quot; : &quot;&amp;lt;ul&amp;gt;&quot; %&amp;gt;
    &amp;lt;/IndentTemplate&amp;gt;        
    &amp;lt;ItemHeaderTemplate&amp;gt;
        &amp;lt;li&amp;gt;
    &amp;lt;/ItemHeaderTemplate&amp;gt;
    &amp;lt;ItemTemplate&amp;gt;
        &amp;lt;EPiServer:Property ID=&quot;epiPageLink&quot; PropertyName=&quot;PageLink&quot; runat=&quot;server&quot; /&amp;gt;
    &amp;lt;/ItemTemplate&amp;gt;
    &amp;lt;ItemFooterTemplate&amp;gt;
        &amp;lt;/li&amp;gt;
    &amp;lt;/ItemFooterTemplate&amp;gt;
    &amp;lt;UnindentTemplate&amp;gt;
        &amp;lt;/ul&amp;gt;
    &amp;lt;/UnindentTemplate&amp;gt;
&amp;lt;/EPiServer:PageTree&amp;gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;And this version of the code can be &lt;a href=&quot;http://dl.dropbox.com/u/1887985/Blog/DropDownMenu%20-%20Updated%20Version.zip&quot;&gt;downloaded here&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Disclaimer: Please not that the code comes as-is and I will not be held responsible.&lt;/em&gt;&lt;/p&gt;  &lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&quot;1&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/4028573941970551711-6219106483140765544?l=blog.tomstenius.com&quot; alt=&quot;&quot; /&gt;&lt;/div&gt;&lt;div class=&quot;feedflare&quot;&gt;
&lt;a href=&quot;http://feeds.feedburner.com/~ff/TomStenius?a=jMH4NyrYpLQ:BhsWr08ENIo:V_sGLiPBpWU&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/TomStenius?i=jMH4NyrYpLQ:BhsWr08ENIo:V_sGLiPBpWU&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/TomStenius?a=jMH4NyrYpLQ:BhsWr08ENIo:qj6IDK7rITs&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/TomStenius?d=qj6IDK7rITs&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/TomStenius?a=jMH4NyrYpLQ:BhsWr08ENIo:gIN9vFwOqvQ&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/TomStenius?i=jMH4NyrYpLQ:BhsWr08ENIo:gIN9vFwOqvQ&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/TomStenius?a=jMH4NyrYpLQ:BhsWr08ENIo:7Q72WNTAKBA&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/TomStenius?d=7Q72WNTAKBA&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src=&quot;http://feeds.feedburner.com/~r/TomStenius/~4/jMH4NyrYpLQ&quot; height=&quot;1&quot; width=&quot;1&quot; /&gt;&lt;div class=&quot;feedflare&quot;&gt;
&lt;a href=&quot;http://feeds.feedburner.com/~ff/TomStenius?a=L7iGuHpLgE0:BhsWr08ENIo:V_sGLiPBpWU&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/TomStenius?i=L7iGuHpLgE0:BhsWr08ENIo:V_sGLiPBpWU&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/TomStenius?a=L7iGuHpLgE0:BhsWr08ENIo:qj6IDK7rITs&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/TomStenius?d=qj6IDK7rITs&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/TomStenius?a=L7iGuHpLgE0:BhsWr08ENIo:gIN9vFwOqvQ&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/TomStenius?i=L7iGuHpLgE0:BhsWr08ENIo:gIN9vFwOqvQ&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/TomStenius?a=L7iGuHpLgE0:BhsWr08ENIo:7Q72WNTAKBA&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/TomStenius?d=7Q72WNTAKBA&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src=&quot;http://feeds.feedburner.com/~r/TomStenius/~4/L7iGuHpLgE0&quot; height=&quot;1&quot; width=&quot;1&quot; /&gt;&lt;div class=&quot;feedflare&quot;&gt;
&lt;a href=&quot;http://feeds.feedburner.com/~ff/TomStenius?a=neDlotRW1-Y:BhsWr08ENIo:V_sGLiPBpWU&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/TomStenius?i=neDlotRW1-Y:BhsWr08ENIo:V_sGLiPBpWU&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/TomStenius?a=neDlotRW1-Y:BhsWr08ENIo:qj6IDK7rITs&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/TomStenius?d=qj6IDK7rITs&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/TomStenius?a=neDlotRW1-Y:BhsWr08ENIo:gIN9vFwOqvQ&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/TomStenius?i=neDlotRW1-Y:BhsWr08ENIo:gIN9vFwOqvQ&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/TomStenius?a=neDlotRW1-Y:BhsWr08ENIo:7Q72WNTAKBA&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/TomStenius?d=7Q72WNTAKBA&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src=&quot;http://feeds.feedburner.com/~r/TomStenius/~4/neDlotRW1-Y&quot; height=&quot;1&quot; width=&quot;1&quot; /&gt;</description>            <guid>http://feedproxy.google.com/~r/TomStenius/~3/neDlotRW1-Y/multilevel-drop-down-menu-in-episerver.html</guid>            <pubDate>Fri, 20 Aug 2010 04:01:00 GMT</pubDate>           <category>Blog post</category></item><item> <title>Active Directory Membership and Role Providers in Relate+</title>            <link>http://feedproxy.google.com/~r/TomStenius/~3/9laOh88j0UM/active-directory-membership-and-role.html</link>            <description>&lt;p&gt;I don’t get a huge of amount of traffic to my blog, but my most popular posts are the ones about Membership and Role Providers and their configuration in Relate+ found &lt;a href=&quot;http://blog.tomstenius.com/2009/09/windows-authentication-in-episerver.html&quot;&gt;here&lt;/a&gt; and &lt;a href=&quot;http://blog.tomstenius.com/2009/04/episerver-community-role-and-membership.html&quot;&gt;here&lt;/a&gt;. Today I decided to follow up these post with one covering Relate+ in combination with the Active Directory Membership- and Role Providers. This post is based on information sent to me by my colleague &lt;a href=&quot;http://twitter.com/HakanLindqvist&quot;&gt;H&#229;kan&lt;/a&gt; and is published with his consent. Thanks Hawk!&lt;/p&gt; &lt;p&gt;The solution to make Active Directory play nice with Relate+ (and vice versa) is in the form of some custom code overriding some things in the Active Directory Providers. The AD Membership and Role Providers are known to cause some issues, something that &lt;a href=&quot;http://labs.episerver.com/en/Blogs/Johano/&quot;&gt;Johan Olofsson&lt;/a&gt; fortunately has blogged about earlier. Start out with the code provided at:  &lt;p&gt;&lt;a href=&quot;http://labs.episerver.com/en/Blogs/Johano/Dates/2008/9/Some-ActiveDirectoryRoleProvider-issues/&quot;&gt;http://labs.episerver.com/en/Blogs/Johano/Dates/2008/9/Some-ActiveDirectoryRoleProvider-issues/&lt;/a&gt;  &lt;p&gt;Use that as a base (the code overrides some things in the Active Directory Providers to strip domain names from usernames as well as fixing some issues with escaping of characters in role names), and then, in the &lt;em&gt;WinActiveDirectoryMembershipProvider.cs&lt;/em&gt; found there replace the &lt;em&gt;GetUser&lt;/em&gt; method with something along these lines: &lt;/p&gt; &lt;div style=&quot;border-bottom: silver 1px solid; text-align: left; border-left: silver 1px solid; padding-bottom: 4px; line-height: 12pt; background-color: #f4f4f4; margin: 20px 0px 10px; padding-left: 4px; width: 97.5%; padding-right: 4px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; height: 259px; max-height: 200px; font-size: 8pt; overflow: auto; border-top: silver 1px solid; cursor: text; border-right: silver 1px solid; padding-top: 4px&quot; id=&quot;codeSnippetWrapper&quot;&gt; &lt;div style=&quot;border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px&quot; id=&quot;codeSnippet&quot;&gt;&lt;pre style=&quot;border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px&quot;&gt;&lt;span style=&quot;color: #0000ff&quot;&gt;public&lt;/span&gt; &lt;span style=&quot;color: #0000ff&quot;&gt;override&lt;/span&gt; MembershipUser GetUser(&lt;span style=&quot;color: #0000ff&quot;&gt;string&lt;/span&gt; username, &lt;span style=&quot;color: #0000ff&quot;&gt;bool&lt;/span&gt; userIsOnline) &lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style=&quot;border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px&quot;&gt;{ &lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style=&quot;border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px&quot;&gt;  &lt;span style=&quot;color: #0000ff&quot;&gt;string&lt;/span&gt; domain = &lt;span style=&quot;color: #006080&quot;&gt;&quot;&quot;&lt;/span&gt;; &lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style=&quot;border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px&quot;&gt;  &lt;span style=&quot;color: #0000ff&quot;&gt;int&lt;/span&gt; bsIndex = username.IndexOf(&#39;\\&#39;); &lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style=&quot;border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px&quot;&gt;&amp;nbsp;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style=&quot;border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px&quot;&gt;  &lt;span style=&quot;color: #0000ff&quot;&gt;if&lt;/span&gt;(bsIndex &amp;gt; 0) &lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style=&quot;border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px&quot;&gt;  { &lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style=&quot;border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px&quot;&gt;    domain = username.Substring(0, bsIndex + 1); &lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style=&quot;border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px&quot;&gt;    username = username.Substring(bsIndex + 1); &lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style=&quot;border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px&quot;&gt;  } &lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style=&quot;border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px&quot;&gt;&amp;nbsp;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style=&quot;border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px&quot;&gt;  MembershipUser user = &lt;span style=&quot;color: #0000ff&quot;&gt;base&lt;/span&gt;.GetUser(username, userIsOnline); &lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style=&quot;border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px&quot;&gt;&amp;nbsp;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style=&quot;border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px&quot;&gt;  &lt;span style=&quot;color: #0000ff&quot;&gt;return&lt;/span&gt; &lt;span style=&quot;color: #0000ff&quot;&gt;new&lt;/span&gt; MembershipUser(user.ProviderName, domain + user.UserName, user.ProviderUserKey, user.Email, user.PasswordQuestion, user.Comment, user.IsApproved, user.IsLockedOut, user.CreationDate, DateTime.MinValue, DateTime.MinValue, DateTime.MinValue, DateTime.MinValue); &lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style=&quot;border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px&quot;&gt;}&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;Now set up your site to use this modified &lt;em&gt;WinActiveDirectoryMembershipProvider&lt;/em&gt; as your default Membership Provider, the special version of the &lt;em&gt;ActiveDirectoryRoleProvider&lt;/em&gt; (from the blog post) as the default Role Provider, and make sure that the &lt;em&gt;“EPiServer.Common.Web.Authorization.IntegrationHttpModule, EPiServer.Common.Web.Authorization”&lt;/em&gt; http module is active. And voila – it should work!
&lt;p&gt;What it does different is that it strips the domain from the username in the call to the AD Membership Provider, but then puts the domain back in the &lt;em&gt;MembershipUser&lt;/em&gt; it returns to the system. This way the usernames in &lt;em&gt;Membership.GetUser().UserName&lt;/em&gt; and&lt;em&gt; HttpContext.Current.User.Identity.Name&lt;/em&gt; will match, which is currently required for the Integration http module to work. 
&lt;p&gt;The solution is, unfortunately, not well tested, but it does work in my test environment. Happy coding!
&lt;p&gt;&lt;em&gt;Note! This post is primarily written for Relate+ version 1.x&lt;/em&gt;&lt;/p&gt;  &lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&quot;1&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/4028573941970551711-3842213224503330182?l=blog.tomstenius.com&quot; alt=&quot;&quot; /&gt;&lt;/div&gt;&lt;div class=&quot;feedflare&quot;&gt;
&lt;a href=&quot;http://feeds.feedburner.com/~ff/TomStenius?a=GNJH9-Pl6iQ:Hr76-IW5BI8:V_sGLiPBpWU&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/TomStenius?i=GNJH9-Pl6iQ:Hr76-IW5BI8:V_sGLiPBpWU&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/TomStenius?a=GNJH9-Pl6iQ:Hr76-IW5BI8:qj6IDK7rITs&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/TomStenius?d=qj6IDK7rITs&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/TomStenius?a=GNJH9-Pl6iQ:Hr76-IW5BI8:gIN9vFwOqvQ&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/TomStenius?i=GNJH9-Pl6iQ:Hr76-IW5BI8:gIN9vFwOqvQ&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/TomStenius?a=GNJH9-Pl6iQ:Hr76-IW5BI8:7Q72WNTAKBA&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/TomStenius?d=7Q72WNTAKBA&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src=&quot;http://feeds.feedburner.com/~r/TomStenius/~4/GNJH9-Pl6iQ&quot; height=&quot;1&quot; width=&quot;1&quot; /&gt;&lt;div class=&quot;feedflare&quot;&gt;
&lt;a href=&quot;http://feeds.feedburner.com/~ff/TomStenius?a=15LfQeH1_IQ:Hr76-IW5BI8:V_sGLiPBpWU&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/TomStenius?i=15LfQeH1_IQ:Hr76-IW5BI8:V_sGLiPBpWU&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/TomStenius?a=15LfQeH1_IQ:Hr76-IW5BI8:qj6IDK7rITs&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/TomStenius?d=qj6IDK7rITs&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/TomStenius?a=15LfQeH1_IQ:Hr76-IW5BI8:gIN9vFwOqvQ&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/TomStenius?i=15LfQeH1_IQ:Hr76-IW5BI8:gIN9vFwOqvQ&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/TomStenius?a=15LfQeH1_IQ:Hr76-IW5BI8:7Q72WNTAKBA&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/TomStenius?d=7Q72WNTAKBA&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src=&quot;http://feeds.feedburner.com/~r/TomStenius/~4/15LfQeH1_IQ&quot; height=&quot;1&quot; width=&quot;1&quot; /&gt;&lt;div class=&quot;feedflare&quot;&gt;
&lt;a href=&quot;http://feeds.feedburner.com/~ff/TomStenius?a=9laOh88j0UM:Hr76-IW5BI8:V_sGLiPBpWU&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/TomStenius?i=9laOh88j0UM:Hr76-IW5BI8:V_sGLiPBpWU&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/TomStenius?a=9laOh88j0UM:Hr76-IW5BI8:qj6IDK7rITs&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/TomStenius?d=qj6IDK7rITs&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/TomStenius?a=9laOh88j0UM:Hr76-IW5BI8:gIN9vFwOqvQ&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/TomStenius?i=9laOh88j0UM:Hr76-IW5BI8:gIN9vFwOqvQ&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/TomStenius?a=9laOh88j0UM:Hr76-IW5BI8:7Q72WNTAKBA&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/TomStenius?d=7Q72WNTAKBA&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src=&quot;http://feeds.feedburner.com/~r/TomStenius/~4/9laOh88j0UM&quot; height=&quot;1&quot; width=&quot;1&quot; /&gt;&lt;/p&gt;&lt;/p&gt;&lt;/p&gt;&lt;/p&gt;&lt;/p&gt;</description>            <guid>http://feedproxy.google.com/~r/TomStenius/~3/9laOh88j0UM/active-directory-membership-and-role.html</guid>            <pubDate>Fri, 06 Aug 2010 11:22:00 GMT</pubDate>           <category>Blog post</category></item><item> <title>CodePlex: CMS Properties for Relate+</title>            <link>http://feedproxy.google.com/~r/TomStenius/~3/eSYiLI4d5pY/codeplex-cms-properties-for-relate.html</link>            <description>&lt;p&gt;A few days back I wrote about a little project that I’ve been working on; &lt;a href=&quot;http://blog.tomstenius.com/2010/06/cms-properties-for-relate.html&quot;&gt;CMS Properties for Relate+&lt;/a&gt;. After that I started an Open Source Project for &lt;a href=&quot;http://blog.tomstenius.com/2010/06/relate-on-codeplex.html&quot;&gt;Add-ons for Relate+ on CodePlex&lt;/a&gt;. Now I’ve taking the time to move my code and even done the first releases of these CMS properties on CodePlex.&lt;/p&gt; &lt;p&gt;So please check out the Relate+ project on CodePlex. &lt;a href=&quot;http://relateplus.codeplex.com/&quot;&gt;You can find it here&lt;/a&gt;.&lt;/p&gt;  &lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&quot;1&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/4028573941970551711-5550679517179074161?l=blog.tomstenius.com&quot; alt=&quot;&quot; /&gt;&lt;/div&gt;&lt;div class=&quot;feedflare&quot;&gt;
&lt;a href=&quot;http://feeds.feedburner.com/~ff/TomStenius?a=YOSiRRqdi-o:F42qJkZNPY4:V_sGLiPBpWU&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/TomStenius?i=YOSiRRqdi-o:F42qJkZNPY4:V_sGLiPBpWU&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/TomStenius?a=YOSiRRqdi-o:F42qJkZNPY4:qj6IDK7rITs&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/TomStenius?d=qj6IDK7rITs&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/TomStenius?a=YOSiRRqdi-o:F42qJkZNPY4:gIN9vFwOqvQ&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/TomStenius?i=YOSiRRqdi-o:F42qJkZNPY4:gIN9vFwOqvQ&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/TomStenius?a=YOSiRRqdi-o:F42qJkZNPY4:7Q72WNTAKBA&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/TomStenius?d=7Q72WNTAKBA&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src=&quot;http://feeds.feedburner.com/~r/TomStenius/~4/YOSiRRqdi-o&quot; height=&quot;1&quot; width=&quot;1&quot; /&gt;&lt;div class=&quot;feedflare&quot;&gt;
&lt;a href=&quot;http://feeds.feedburner.com/~ff/TomStenius?a=hlnh6VqIYe8:F42qJkZNPY4:V_sGLiPBpWU&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/TomStenius?i=hlnh6VqIYe8:F42qJkZNPY4:V_sGLiPBpWU&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/TomStenius?a=hlnh6VqIYe8:F42qJkZNPY4:qj6IDK7rITs&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/TomStenius?d=qj6IDK7rITs&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/TomStenius?a=hlnh6VqIYe8:F42qJkZNPY4:gIN9vFwOqvQ&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/TomStenius?i=hlnh6VqIYe8:F42qJkZNPY4:gIN9vFwOqvQ&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/TomStenius?a=hlnh6VqIYe8:F42qJkZNPY4:7Q72WNTAKBA&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/TomStenius?d=7Q72WNTAKBA&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src=&quot;http://feeds.feedburner.com/~r/TomStenius/~4/hlnh6VqIYe8&quot; height=&quot;1&quot; width=&quot;1&quot; /&gt;&lt;div class=&quot;feedflare&quot;&gt;
&lt;a href=&quot;http://feeds.feedburner.com/~ff/TomStenius?a=eSYiLI4d5pY:F42qJkZNPY4:V_sGLiPBpWU&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/TomStenius?i=eSYiLI4d5pY:F42qJkZNPY4:V_sGLiPBpWU&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/TomStenius?a=eSYiLI4d5pY:F42qJkZNPY4:qj6IDK7rITs&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/TomStenius?d=qj6IDK7rITs&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/TomStenius?a=eSYiLI4d5pY:F42qJkZNPY4:gIN9vFwOqvQ&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/TomStenius?i=eSYiLI4d5pY:F42qJkZNPY4:gIN9vFwOqvQ&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/TomStenius?a=eSYiLI4d5pY:F42qJkZNPY4:7Q72WNTAKBA&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/TomStenius?d=7Q72WNTAKBA&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src=&quot;http://feeds.feedburner.com/~r/TomStenius/~4/eSYiLI4d5pY&quot; height=&quot;1&quot; width=&quot;1&quot; /&gt;</description>            <guid>http://feedproxy.google.com/~r/TomStenius/~3/eSYiLI4d5pY/codeplex-cms-properties-for-relate.html</guid>            <pubDate>Tue, 08 Jun 2010 08:26:00 GMT</pubDate>           <category>Blog post</category></item><item> <title>Relate+ on CodePlex</title>            <link>http://feedproxy.google.com/~r/TomStenius/~3/kA9JzABSnn8/relate-on-codeplex.html</link>            <description>&lt;p&gt;Lately I have been putting together some random extensions/modules/what ever you like to call it for Relate+, such as the &lt;a href=&quot;http://blog.tomstenius.com/2010/03/friendly-urls-in-relate-part-2.html&quot;&gt;Friendly URLs for Relate+&lt;/a&gt; and the &lt;a href=&quot;http://blog.tomstenius.com/2010/06/cms-properties-for-relate.html&quot;&gt;Contest Picker property&lt;/a&gt;. I thought it was about time to create a home for these modules and other things that are created for Relate+.&lt;/p&gt; &lt;p&gt;I had some considerations about where to put the modules – &lt;a href=&quot;http://www.codeplex.com/&quot;&gt;CodePlex&lt;/a&gt;, &lt;a href=&quot;http://github.com/&quot;&gt;github&lt;/a&gt;, &lt;a href=&quot;https://www.coderesort.com/p/epicode/wiki/WikiStart&quot;&gt;CodeResort&lt;/a&gt;, &lt;a href=&quot;http://code.google.com/hosting/&quot;&gt;Google Code&lt;/a&gt; – but I ended up choosing CodePlex since it seems to be the one that is mostly adopted and easiest to use. After a quick chat with &lt;a href=&quot;http://joelabrahamsson.com/&quot;&gt;Joel Abrahamssson&lt;/a&gt; on the matter I was convinced it was the right choice.&lt;/p&gt; &lt;p&gt;So let me present to you the new home of Open Source extensions to Relate+; &lt;a href=&quot;http://relateplus.codeplex.com&quot;&gt;http://relateplus.codeplex.com&lt;/a&gt;. I will move my modules there as soon as possible, and I hope that YOU will contribute as well. If you have any opinions on the setup and so on, I’m all ears.&lt;/p&gt;  &lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&quot;1&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/4028573941970551711-48135615786371795?l=blog.tomstenius.com&quot; alt=&quot;&quot; /&gt;&lt;/div&gt;&lt;div class=&quot;feedflare&quot;&gt;
&lt;a href=&quot;http://feeds.feedburner.com/~ff/TomStenius?a=8_1PAel8_fU:OqQgak_dfv0:V_sGLiPBpWU&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/TomStenius?i=8_1PAel8_fU:OqQgak_dfv0:V_sGLiPBpWU&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/TomStenius?a=8_1PAel8_fU:OqQgak_dfv0:qj6IDK7rITs&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/TomStenius?d=qj6IDK7rITs&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/TomStenius?a=8_1PAel8_fU:OqQgak_dfv0:gIN9vFwOqvQ&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/TomStenius?i=8_1PAel8_fU:OqQgak_dfv0:gIN9vFwOqvQ&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/TomStenius?a=8_1PAel8_fU:OqQgak_dfv0:7Q72WNTAKBA&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/TomStenius?d=7Q72WNTAKBA&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src=&quot;http://feeds.feedburner.com/~r/TomStenius/~4/8_1PAel8_fU&quot; height=&quot;1&quot; width=&quot;1&quot; /&gt;&lt;div class=&quot;feedflare&quot;&gt;
&lt;a href=&quot;http://feeds.feedburner.com/~ff/TomStenius?a=yQ-u1PjHXrI:OqQgak_dfv0:V_sGLiPBpWU&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/TomStenius?i=yQ-u1PjHXrI:OqQgak_dfv0:V_sGLiPBpWU&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/TomStenius?a=yQ-u1PjHXrI:OqQgak_dfv0:qj6IDK7rITs&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/TomStenius?d=qj6IDK7rITs&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/TomStenius?a=yQ-u1PjHXrI:OqQgak_dfv0:gIN9vFwOqvQ&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/TomStenius?i=yQ-u1PjHXrI:OqQgak_dfv0:gIN9vFwOqvQ&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/TomStenius?a=yQ-u1PjHXrI:OqQgak_dfv0:7Q72WNTAKBA&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/TomStenius?d=7Q72WNTAKBA&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src=&quot;http://feeds.feedburner.com/~r/TomStenius/~4/yQ-u1PjHXrI&quot; height=&quot;1&quot; width=&quot;1&quot; /&gt;&lt;div class=&quot;feedflare&quot;&gt;
&lt;a href=&quot;http://feeds.feedburner.com/~ff/TomStenius?a=kA9JzABSnn8:OqQgak_dfv0:V_sGLiPBpWU&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/TomStenius?i=kA9JzABSnn8:OqQgak_dfv0:V_sGLiPBpWU&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/TomStenius?a=kA9JzABSnn8:OqQgak_dfv0:qj6IDK7rITs&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/TomStenius?d=qj6IDK7rITs&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/TomStenius?a=kA9JzABSnn8:OqQgak_dfv0:gIN9vFwOqvQ&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/TomStenius?i=kA9JzABSnn8:OqQgak_dfv0:gIN9vFwOqvQ&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/TomStenius?a=kA9JzABSnn8:OqQgak_dfv0:7Q72WNTAKBA&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/TomStenius?d=7Q72WNTAKBA&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src=&quot;http://feeds.feedburner.com/~r/TomStenius/~4/kA9JzABSnn8&quot; height=&quot;1&quot; width=&quot;1&quot; /&gt;</description>            <guid>http://feedproxy.google.com/~r/TomStenius/~3/kA9JzABSnn8/relate-on-codeplex.html</guid>            <pubDate>Fri, 04 Jun 2010 08:00:00 GMT</pubDate>           <category>Blog post</category></item><item> <title>CMS Properties for Relate+</title>            <link>http://feedproxy.google.com/~r/TomStenius/~3/lRmBU0OAwV0/cms-properties-for-relate.html</link>            <description>&lt;p&gt;In &lt;a href=&quot;http://www.episerver.com/en/Products/EPiServer-Relate-2/&quot;&gt;EPiServer Relate+&lt;/a&gt; there are two &lt;a href=&quot;http://www.episerver.com/en/Products/EPiServer-CMS-6/&quot;&gt;EPiServer CMS&lt;/a&gt; Custom Properties built-in that enables the editor to do nice cross references between editorial content and user generated content on Article pages and News items. The two properties are:&lt;/p&gt; &lt;ul&gt; &lt;li&gt;Club Association – a dropdown list showing the available clubs and lets the editor associate an article with a club. The article is also shown on the specific Club’s page.  &lt;li&gt;Forum Association – a dropdown list showing all the forum rooms on the web site. By selecting a room, the latest topic from that room will be displayed on a news item.&lt;/li&gt;&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;This all good, even though I think the design choice to go with dropdown lists are not optimal (have myself to blame, but at the time it was the only option). The biggest problem however is the way theses properties are designed, they are not generic. So when I got asked by one of our partners Down Under about this I got an idea.&lt;/p&gt; &lt;p&gt;The partner wanted to integrate the Contest module on a Relate+ site. As you all probably know, the Contest module is a part of &lt;a href=&quot;http://www.episerver.com/en/Products/EPiServer-Community/&quot;&gt;EPiServer Community&lt;/a&gt;, but not implemented i Relate+ – confused? &lt;a href=&quot;http://blog.tomstenius.com/2009/04/confusion-about-what-relate-is.html&quot;&gt;Have look here&lt;/a&gt;. They wanted to give the editor the possibility to add a link to a Contest from a CMS page. So this was my starting point.&lt;/p&gt; &lt;p&gt;I wanted to create a “framework” (it’s over the top to call it a framework, but it was the best word that came to my mind) that enables the editor to easily link to any kind of Community object from CMS pages. Obviously I had to create a Custom Property! I started to have a look around and I found this &lt;a href=&quot;https://www.coderesort.com/p/epicode/wiki/GoogleMapsLocation&quot;&gt;Google Maps Property&lt;/a&gt; built by &lt;a href=&quot;http://joelabrahamsson.com/&quot;&gt;Joel Abrahamsson&lt;/a&gt; (this guy seems to be everywhere!). This property follow the same architecture as the built-in properties in EPiServer CMS, so I decided to use almost the same layout for my community property.&lt;/p&gt; &lt;p&gt;I tried to be as generic as possible and not lock the property down to just work with Contest, because I want to use it for Clubs, Forums, Users, etc. Basically an object that inherit from &lt;em&gt;FrameworkEntityBase&lt;/em&gt; – the base class for all Community objects. Therefore I split my Custom Property into two different projects:&lt;/p&gt; &lt;ul&gt; &lt;li&gt;EPiXternal.RelatePlus.WebControls  &lt;li&gt;EPiXternal.RelatePlus.Properties&lt;/li&gt;&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;In the &lt;em&gt;WebControls&lt;/em&gt; project I have created a generic web control that consists of a &lt;em&gt;TextBox&lt;/em&gt; and a picker button. The picker button will open a pop-up window with a specified address where you do your selection.&lt;/p&gt; &lt;p&gt;&lt;a href=&quot;http://lh6.ggpht.com/_W2Im3e5-OCk/TATTKdXg4WI/AAAAAAAAATM/AsHR_s-9nxo/s1600-h/ContestPickerEditMode12.png&quot;&gt;&lt;img style=&quot;border-right-width: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto&quot; title=&quot;Contest-Picker-EditMode&quot; border=&quot;0&quot; alt=&quot;Contest-Picker-EditMode&quot; src=&quot;http://lh5.ggpht.com/_W2Im3e5-OCk/TATTLKPwTtI/AAAAAAAAATQ/GY8WE_5XgHs/ContestPickerEditMode_thumb8.png?imgmax=800&quot; width=&quot;324&quot; height=&quot;25&quot; /&gt;&lt;/a&gt;&amp;nbsp;&lt;br /&gt;In the &lt;em&gt;Properties&lt;/em&gt; project you will find the actual implementation of the Custom Property. It uses the &lt;em&gt;InputRelatePlusEntityPicker&lt;/em&gt; class in the &lt;em&gt;WebControls&lt;/em&gt; project, so you have to have that installed for it to work. In the &lt;em&gt;Properties&lt;/em&gt; project I didn’t have the luxury to be as generic as I wanted to due to the implementation of some of the things i Community, however this will be solved in the Community 4 release and will update my project accordingly. However the CSS and the JavaScript functions that are used are generic so you could easily add a new object picker that picks Clubs for instance.&lt;/p&gt; &lt;p&gt;&lt;a href=&quot;http://lh6.ggpht.com/_W2Im3e5-OCk/TATTMKqp9JI/AAAAAAAAATU/HVr7jeO8SBs/s1600-h/ContestPicker8.png&quot;&gt;&lt;img style=&quot;border-right-width: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto&quot; title=&quot;Contest-Picker&quot; border=&quot;0&quot; alt=&quot;Contest-Picker&quot; src=&quot;http://lh3.ggpht.com/_W2Im3e5-OCk/TATTM_eHyvI/AAAAAAAAATY/Q3ztnoHxUzw/ContestPicker_thumb6.png?imgmax=800&quot; width=&quot;354&quot; height=&quot;364&quot; /&gt;&lt;/a&gt;&lt;br /&gt;In the Contest Picker pop-up you will be able to search for Contest and pick the one you like. The “picking” part is all done in JavaScript and when you’re done you click “Select” which will close the pop-up and send the value back to the CMS page.&lt;/p&gt; &lt;p&gt;You have obviously heaps of choices when it comes to deciding how you should implement a listing of objects and add associated paging. I chose to use the &lt;a href=&quot;http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.datagrid.aspx&quot;&gt;DataGrid&lt;/a&gt; web control, since that is the way it is done in a lot of places in the CMS. I know that it may not be the most beautiful approach, but it’s simple and straight forward. I was thinking of using the &lt;a href=&quot;http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.gridview.aspx&quot;&gt;GridView&lt;/a&gt; instead, but the lack of the VirtualItemCount property made me change my mind. However I will probably change the implementation to use &lt;a href=&quot;http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.listview.aspx&quot;&gt;ListView&lt;/a&gt; in combination with a &lt;a href=&quot;http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.datapager.aspx&quot;&gt;DataPager&lt;/a&gt; as suggested by &lt;a href=&quot;http://www.frederikvig.com/&quot;&gt;Frederik Vig&lt;/a&gt;.&lt;/p&gt; &lt;p&gt;I’m not a front end developer, so if you have comments on the HTML, CSS or JavaScript please let me know how I can approve the solution.&lt;/p&gt; &lt;h4&gt;Getting the source code&lt;/h4&gt; &lt;p&gt;&lt;em&gt;&lt;font color=&quot;#ff0000&quot;&gt;Update! The source code is now available on CodePlex.&lt;/font&gt;&lt;/em&gt;&lt;/p&gt; &lt;p&gt;You can download the source code below:&lt;/p&gt; &lt;ul&gt; &lt;li&gt;&lt;a href=&quot;http://relateplus.codeplex.com&quot;&gt;Get it on CodePlex&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;If have set up the projects so that after build an install directory will be created. If you want an installable EPiServer CMS Module, just make a Zip file of the contents in the install directory. Included in the install directory is a &lt;em&gt;web.config&lt;/em&gt; update file, which will limit the access to the Contest Browser so that only the roles &lt;em&gt;“WebEditors”&lt;/em&gt;, &lt;em&gt;“WebAdmins”&lt;/em&gt; and &lt;em&gt;“Administrators”&lt;/em&gt; will have access to it.&lt;/p&gt; &lt;p&gt;If you prefer to just get the installation modules and you don’t care about the source code, have a look at &lt;a href=&quot;http://relateplus.codeplex.com/releases&quot;&gt;the releases at CodePlex&lt;/a&gt;.&lt;/p&gt; &lt;p&gt;&lt;em&gt;Disclaimer: Please not that the code comes as-is and I will not be held responsible.&lt;/em&gt;&lt;/p&gt;  &lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&quot;1&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/4028573941970551711-8858056049164878148?l=blog.tomstenius.com&quot; alt=&quot;&quot; /&gt;&lt;/div&gt;&lt;div class=&quot;feedflare&quot;&gt;
&lt;a href=&quot;http://feeds.feedburner.com/~ff/TomStenius?a=f8a6_TuSkjg:GgmOHMcK0xE:V_sGLiPBpWU&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/TomStenius?i=f8a6_TuSkjg:GgmOHMcK0xE:V_sGLiPBpWU&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/TomStenius?a=f8a6_TuSkjg:GgmOHMcK0xE:qj6IDK7rITs&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/TomStenius?d=qj6IDK7rITs&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/TomStenius?a=f8a6_TuSkjg:GgmOHMcK0xE:gIN9vFwOqvQ&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/TomStenius?i=f8a6_TuSkjg:GgmOHMcK0xE:gIN9vFwOqvQ&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/TomStenius?a=f8a6_TuSkjg:GgmOHMcK0xE:7Q72WNTAKBA&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/TomStenius?d=7Q72WNTAKBA&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src=&quot;http://feeds.feedburner.com/~r/TomStenius/~4/f8a6_TuSkjg&quot; height=&quot;1&quot; width=&quot;1&quot; /&gt;&lt;div class=&quot;feedflare&quot;&gt;
&lt;a href=&quot;http://feeds.feedburner.com/~ff/TomStenius?a=DxLXQrdR8n0:GgmOHMcK0xE:V_sGLiPBpWU&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/TomStenius?i=DxLXQrdR8n0:GgmOHMcK0xE:V_sGLiPBpWU&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/TomStenius?a=DxLXQrdR8n0:GgmOHMcK0xE:qj6IDK7rITs&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/TomStenius?d=qj6IDK7rITs&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/TomStenius?a=DxLXQrdR8n0:GgmOHMcK0xE:gIN9vFwOqvQ&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/TomStenius?i=DxLXQrdR8n0:GgmOHMcK0xE:gIN9vFwOqvQ&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/TomStenius?a=DxLXQrdR8n0:GgmOHMcK0xE:7Q72WNTAKBA&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/TomStenius?d=7Q72WNTAKBA&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src=&quot;http://feeds.feedburner.com/~r/TomStenius/~4/DxLXQrdR8n0&quot; height=&quot;1&quot; width=&quot;1&quot; /&gt;&lt;div class=&quot;feedflare&quot;&gt;
&lt;a href=&quot;http://feeds.feedburner.com/~ff/TomStenius?a=lRmBU0OAwV0:GgmOHMcK0xE:V_sGLiPBpWU&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/TomStenius?i=lRmBU0OAwV0:GgmOHMcK0xE:V_sGLiPBpWU&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/TomStenius?a=lRmBU0OAwV0:GgmOHMcK0xE:qj6IDK7rITs&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/TomStenius?d=qj6IDK7rITs&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/TomStenius?a=lRmBU0OAwV0:GgmOHMcK0xE:gIN9vFwOqvQ&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/TomStenius?i=lRmBU0OAwV0:GgmOHMcK0xE:gIN9vFwOqvQ&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/TomStenius?a=lRmBU0OAwV0:GgmOHMcK0xE:7Q72WNTAKBA&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/TomStenius?d=7Q72WNTAKBA&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src=&quot;http://feeds.feedburner.com/~r/TomStenius/~4/lRmBU0OAwV0&quot; height=&quot;1&quot; width=&quot;1&quot; /&gt;</description>            <guid>http://feedproxy.google.com/~r/TomStenius/~3/lRmBU0OAwV0/cms-properties-for-relate.html</guid>            <pubDate>Tue, 01 Jun 2010 11:30:00 GMT</pubDate>           <category>Blog post</category></item><item> <title>Friendly URLs in Relate+ (Part 2)</title>            <link>http://feedproxy.google.com/~r/TomStenius/~3/kXKdKJx4EPA/friendly-urls-in-relate-part-2.html</link>            <description>&lt;p&gt;In &lt;a href=&quot;http://blog.tomstenius.com/2010/03/friendly-urls-in-relate-part-1.html&quot;&gt;the first part of the “Friendly URLs in Relate+” series&lt;/a&gt; I introduced a prototype I’ve been working on to give you friendly URLs in Relate+. In this part two I will go through installation of the provider and also guide you through some details of the code.&lt;br /&gt;&lt;/p&gt; &lt;h4&gt;Installation&lt;/h4&gt;The provider that I have built inherits from the &lt;span style=&quot;font-family: &#39;Courier New&#39;&quot;&gt;EPiServer.Web.FriendlyUrlRewriteProvider&lt;/span&gt; (which is the default URL provider in CMS). My provider will call the base class if it doesn’t find any matches. Therefore you are safe to comment out the use of the default provider in the &lt;em&gt;web.config&lt;/em&gt; and to use mine instead. Find the &lt;span style=&quot;font-family: &#39;Courier New&#39;&quot;&gt;urlRewrite&lt;/span&gt; element in your&lt;em&gt; web.config&lt;/em&gt; and make it look something like this:&lt;br /&gt;&lt;br /&gt; &lt;div style=&quot;padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px&quot; id=&quot;scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:747a0e7a-dbef-43f9-a7e3-dc3f8b741f0d&quot; class=&quot;wlWriterSmartContent&quot;&gt; &lt;div style=&quot;border-bottom: #000080 1px solid; border-left: #000080 1px solid; font-family: &#39;Courier New&#39;, courier, monospace; color: black; font-size: 10pt; border-top: #000080 1px solid; border-right: #000080 1px solid&quot;&gt; &lt;div style=&quot;padding-bottom: 2px; padding-left: 5px; padding-right: 5px; font-family: verdana, tahoma, arial, sans-serif; background: #333; color: white; font-weight: bold; padding-top: 2px&quot;&gt;urlRewrite Element&lt;/div&gt; &lt;div style=&quot;background: #fff; max-height: 200px; overflow: auto&quot;&gt; &lt;ol style=&quot;padding-bottom: 0px; margin: 0px; padding-left: 5px; padding-right: 0px; white-space: nowrap; background: #ffffff; padding-top: 0px&quot;&gt; &lt;li&gt;&lt;span style=&quot;color: blue&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: #a31515&quot;&gt;urlRewrite&lt;/span&gt;&lt;span style=&quot;color: blue&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: red&quot;&gt;defaultProvider&lt;/span&gt;&lt;span style=&quot;color: blue&quot;&gt;=&lt;/span&gt;&quot;&lt;span style=&quot;color: blue&quot;&gt;RelatePlusFriendlyUrlRewriteProvider&lt;/span&gt;&quot;&lt;span style=&quot;color: blue&quot;&gt;&amp;gt;&lt;/span&gt;  &lt;li style=&quot;background: #f3f3f3&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style=&quot;color: blue&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: #a31515&quot;&gt;providers&lt;/span&gt;&lt;span style=&quot;color: blue&quot;&gt;&amp;gt;&lt;/span&gt;  &lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style=&quot;color: blue&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: #a31515&quot;&gt;add&lt;/span&gt;&lt;span style=&quot;color: blue&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: red&quot;&gt;name&lt;/span&gt;&lt;span style=&quot;color: blue&quot;&gt;=&lt;/span&gt;&quot;&lt;span style=&quot;color: blue&quot;&gt;RelatePlusFriendlyUrlRewriteProvider&lt;/span&gt;&quot;&lt;span style=&quot;color: blue&quot;&gt; &lt;/span&gt; &lt;li style=&quot;background: #f3f3f3&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style=&quot;color: red&quot;&gt;description&lt;/span&gt;&lt;span style=&quot;color: blue&quot;&gt;=&lt;/span&gt;&quot;&lt;span style=&quot;color: blue&quot;&gt;Friendly URL rewriter for Relate&lt;/span&gt;&quot;&lt;span style=&quot;color: blue&quot;&gt; &lt;/span&gt; &lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style=&quot;color: red&quot;&gt;type&lt;/span&gt;&lt;span style=&quot;color: blue&quot;&gt;=&lt;/span&gt;&quot;&lt;span style=&quot;color: blue&quot;&gt;EPiXternal.RelatePlus.FriendlyUrl.UrlRewriteProvider,EPiXternal.RelatePlus.FriendlyUrl&lt;/span&gt;&quot;&lt;span style=&quot;color: blue&quot;&gt;/&amp;gt;&lt;/span&gt;  &lt;li style=&quot;background: #f3f3f3&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style=&quot;color: blue&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: #a31515&quot;&gt;add&lt;/span&gt;&lt;span style=&quot;color: blue&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: red&quot;&gt;name&lt;/span&gt;&lt;span style=&quot;color: blue&quot;&gt;=&lt;/span&gt;&quot;&lt;span style=&quot;color: blue&quot;&gt;EPiServerIdentityUrlRewriteProvider&lt;/span&gt;&quot;&lt;span style=&quot;color: blue&quot;&gt; &lt;/span&gt; &lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style=&quot;color: red&quot;&gt;description&lt;/span&gt;&lt;span style=&quot;color: blue&quot;&gt;=&lt;/span&gt;&quot;&lt;span style=&quot;color: blue&quot;&gt;EPiServer identity URL rewriter&lt;/span&gt;&quot;&lt;span style=&quot;color: blue&quot;&gt; &lt;/span&gt; &lt;li style=&quot;background: #f3f3f3&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style=&quot;color: red&quot;&gt;type&lt;/span&gt;&lt;span style=&quot;color: blue&quot;&gt;=&lt;/span&gt;&quot;&lt;span style=&quot;color: blue&quot;&gt;EPiServer.Web.IdentityUrlRewriteProvider,EPiServer&lt;/span&gt;&quot;&lt;span style=&quot;color: blue&quot;&gt;/&amp;gt;&lt;/span&gt;  &lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style=&quot;color: blue&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: #a31515&quot;&gt;add&lt;/span&gt;&lt;span style=&quot;color: blue&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: red&quot;&gt;name&lt;/span&gt;&lt;span style=&quot;color: blue&quot;&gt;=&lt;/span&gt;&quot;&lt;span style=&quot;color: blue&quot;&gt;EPiServerNullUrlRewriteProvider&lt;/span&gt;&quot;&lt;span style=&quot;color: blue&quot;&gt; &lt;/span&gt; &lt;li style=&quot;background: #f3f3f3&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style=&quot;color: red&quot;&gt;description&lt;/span&gt;&lt;span style=&quot;color: blue&quot;&gt;=&lt;/span&gt;&quot;&lt;span style=&quot;color: blue&quot;&gt;EPiServer bypass URL rewriter&lt;/span&gt;&quot;&lt;span style=&quot;color: blue&quot;&gt; &lt;/span&gt; &lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style=&quot;color: red&quot;&gt;type&lt;/span&gt;&lt;span style=&quot;color: blue&quot;&gt;=&lt;/span&gt;&quot;&lt;span style=&quot;color: blue&quot;&gt;EPiServer.Web.NullUrlRewriteProvider,EPiServer&lt;/span&gt;&quot;&lt;span style=&quot;color: blue&quot;&gt;/&amp;gt;&lt;/span&gt;  &lt;li style=&quot;background: #f3f3f3&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style=&quot;color: blue&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span style=&quot;color: #a31515&quot;&gt;providers&lt;/span&gt;&lt;span style=&quot;color: blue&quot;&gt;&amp;gt;&lt;/span&gt;  &lt;li&gt;&lt;span style=&quot;color: blue&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span style=&quot;color: #a31515&quot;&gt;urlRewrite&lt;/span&gt;&lt;span style=&quot;color: blue&quot;&gt;&amp;gt;&lt;/span&gt; &lt;/li&gt;&lt;/li&gt;&lt;/li&gt;&lt;/li&gt;&lt;/li&gt;&lt;/li&gt;&lt;/li&gt;&lt;/li&gt;&lt;/li&gt;&lt;/li&gt;&lt;/li&gt;&lt;/li&gt;&lt;/li&gt;&lt;/ol&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;You also have to add the &lt;em&gt;EPiXternal.RelatePlus.FriendlyUrl.dll&lt;/em&gt; to your bin directory.&lt;br /&gt;&lt;br /&gt; &lt;h4&gt;Modifying The Relate+ Templates&lt;/h4&gt;To make the friendly URL rewriter work with all the supported scenarios you have to make modifications to two methods in the Relate+ templates. This has to do with how the URLs are created in these two methods. In the following code snippets you will see the new implementation of these methods. The first method to change is the &lt;span style=&quot;font-family: &#39;Courier New&#39;&quot;&gt;GetEntryUri(…)&lt;/span&gt; on line 856 in &lt;em&gt;ExtentionMethods.cs&lt;/em&gt;. &lt;br /&gt;&lt;br /&gt; &lt;div style=&quot;padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px&quot; id=&quot;scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:770b28fe-af13-46df-9484-01254a37cf56&quot; class=&quot;wlWriterSmartContent&quot;&gt; &lt;div style=&quot;border-bottom: #000080 1px solid; border-left: #000080 1px solid; font-family: &#39;Courier New&#39;, courier, monospace; color: black; font-size: 10pt; border-top: #000080 1px solid; border-right: #000080 1px solid&quot;&gt; &lt;div style=&quot;padding-bottom: 2px; padding-left: 5px; padding-right: 5px; font-family: verdana, tahoma, arial, sans-serif; background: #333; color: white; font-weight: bold; padding-top: 2px&quot;&gt;Line 856 ExtensionMethods.cs&lt;/div&gt; &lt;div style=&quot;background: #fff; max-height: 300px; overflow: auto&quot;&gt; &lt;ol style=&quot;padding-bottom: 0px; margin: 0px; padding-left: 5px; padding-right: 0px; white-space: nowrap; background: #ffffff; padding-top: 0px&quot;&gt; &lt;li&gt;&lt;span style=&quot;color: blue&quot;&gt;public&lt;/span&gt; &lt;span style=&quot;color: blue&quot;&gt;static&lt;/span&gt; &lt;span style=&quot;color: #2b91af&quot;&gt;Uri&lt;/span&gt; GetEntryUri(&lt;span style=&quot;color: blue&quot;&gt;this&lt;/span&gt; &lt;span style=&quot;color: #2b91af&quot;&gt;Entry&lt;/span&gt; entry)  &lt;li style=&quot;background: #f3f3f3&quot;&gt;{  &lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style=&quot;color: #2b91af&quot;&gt;UrlBuilder&lt;/span&gt; url = &lt;span style=&quot;color: blue&quot;&gt;new&lt;/span&gt; &lt;span style=&quot;color: #2b91af&quot;&gt;UrlBuilder&lt;/span&gt;(Pages.Base.&lt;span style=&quot;color: #2b91af&quot;&gt;PageBase&lt;/span&gt;.MyBlogPage.LinkURL);  &lt;li style=&quot;background: #f3f3f3&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; url.QueryCollection.Add(&lt;span style=&quot;color: #a31515&quot;&gt;&quot;userId&quot;&lt;/span&gt;, ((&lt;span style=&quot;color: #2b91af&quot;&gt;UserAuthor&lt;/span&gt;)entry.Blog.Author).User.ID.ToString());  &lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; url.QueryCollection.Add(&lt;span style=&quot;color: #a31515&quot;&gt;&quot;entryId&quot;&lt;/span&gt;, entry.ID.ToString());  &lt;li style=&quot;background: #f3f3f3&quot;&gt;&amp;nbsp; &lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style=&quot;color: blue&quot;&gt;if&lt;/span&gt; (&lt;span style=&quot;color: #2b91af&quot;&gt;UrlRewriteProvider&lt;/span&gt;.IsFurlEnabled)  &lt;li style=&quot;background: #f3f3f3&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {  &lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style=&quot;color: #2b91af&quot;&gt;Global&lt;/span&gt;.UrlRewriteProvider.ConvertToExternal(url, Pages.Base.&lt;span style=&quot;color: #2b91af&quot;&gt;PageBase&lt;/span&gt;.MyBlogPage.PageLink, &lt;span style=&quot;color: #2b91af&quot;&gt;Encoding&lt;/span&gt;.UTF8);  &lt;li style=&quot;background: #f3f3f3&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }  &lt;li&gt;&amp;nbsp; &lt;li style=&quot;background: #f3f3f3&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style=&quot;color: blue&quot;&gt;return&lt;/span&gt; url.Uri;  &lt;li&gt;} &lt;/li&gt;&lt;/li&gt;&lt;/li&gt;&lt;/li&gt;&lt;/li&gt;&lt;/li&gt;&lt;/li&gt;&lt;/li&gt;&lt;/li&gt;&lt;/li&gt;&lt;/li&gt;&lt;/li&gt;&lt;/li&gt;&lt;/ol&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;The second method to change is &lt;span style=&quot;font-family: &#39;Courier New&#39;&quot;&gt;GetBlogListingUrl(…)&lt;/span&gt; in &lt;em&gt;MyBlog.aspx.cs&lt;/em&gt;.&lt;br /&gt;&lt;br /&gt; &lt;div style=&quot;padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px&quot; id=&quot;scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:749d9b1f-bb42-44c5-9baf-a7dbdc090fae&quot; class=&quot;wlWriterSmartContent&quot;&gt; &lt;div style=&quot;border-bottom: #000080 1px solid; border-left: #000080 1px solid; font-family: &#39;Courier New&#39;, courier, monospace; color: black; font-size: 10pt; border-top: #000080 1px solid; border-right: #000080 1px solid&quot;&gt; &lt;div style=&quot;padding-bottom: 2px; padding-left: 5px; padding-right: 5px; font-family: verdana, tahoma, arial, sans-serif; background: #333; color: white; font-weight: bold; padding-top: 2px&quot;&gt;Line 504 MyBlog.aspx.cs&lt;/div&gt; &lt;div style=&quot;background: #fff; max-height: 300px; overflow: auto&quot;&gt; &lt;ol style=&quot;padding-bottom: 0px; margin: 0px; padding-left: 5px; padding-right: 0px; white-space: nowrap; background: #ffffff; padding-top: 0px&quot;&gt; &lt;li&gt;&lt;span style=&quot;color: blue&quot;&gt;protected&lt;/span&gt; &lt;span style=&quot;color: blue&quot;&gt;string&lt;/span&gt; GetBlogListingUrl(&lt;span style=&quot;color: blue&quot;&gt;int&lt;/span&gt; year, &lt;span style=&quot;color: blue&quot;&gt;int&lt;/span&gt; month)  &lt;li style=&quot;background: #f3f3f3&quot;&gt;{  &lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style=&quot;color: blue&quot;&gt;string&lt;/span&gt; date = year.ToString();  &lt;li style=&quot;background: #f3f3f3&quot;&gt;&amp;nbsp; &lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style=&quot;color: blue&quot;&gt;if&lt;/span&gt; (month != -1)  &lt;li style=&quot;background: #f3f3f3&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {  &lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; date += month.ToString(&lt;span style=&quot;color: #a31515&quot;&gt;&quot;00&quot;&lt;/span&gt;);  &lt;li style=&quot;background: #f3f3f3&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }  &lt;li&gt;&amp;nbsp; &lt;li style=&quot;background: #f3f3f3&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style=&quot;color: #2b91af&quot;&gt;UrlBuilder&lt;/span&gt; url = &lt;span style=&quot;color: blue&quot;&gt;new&lt;/span&gt; &lt;span style=&quot;color: #2b91af&quot;&gt;UrlBuilder&lt;/span&gt;(Pages.Base.&lt;span style=&quot;color: #2b91af&quot;&gt;PageBase&lt;/span&gt;.MyBlogPage.LinkURL);  &lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; url.QueryCollection.Add(&lt;span style=&quot;color: #a31515&quot;&gt;&quot;userId&quot;&lt;/span&gt;, ((&lt;span style=&quot;color: #2b91af&quot;&gt;UserAuthor&lt;/span&gt;)CurrentBlog.Author).User.ID.ToString());  &lt;li style=&quot;background: #f3f3f3&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; url.QueryCollection.Add(&lt;span style=&quot;color: #a31515&quot;&gt;&quot;date&quot;&lt;/span&gt;, date);  &lt;li&gt;&amp;nbsp; &lt;li style=&quot;background: #f3f3f3&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style=&quot;color: blue&quot;&gt;if&lt;/span&gt; (&lt;span style=&quot;color: #2b91af&quot;&gt;UrlRewriteProvider&lt;/span&gt;.IsFurlEnabled)  &lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {  &lt;li style=&quot;background: #f3f3f3&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style=&quot;color: #2b91af&quot;&gt;Global&lt;/span&gt;.UrlRewriteProvider.ConvertToExternal(url, Pages.Base.&lt;span style=&quot;color: #2b91af&quot;&gt;PageBase&lt;/span&gt;.MyBlogPage.PageLink, &lt;span style=&quot;color: #2b91af&quot;&gt;Encoding&lt;/span&gt;.UTF8);  &lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }  &lt;li style=&quot;background: #f3f3f3&quot;&gt;&amp;nbsp; &lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style=&quot;color: blue&quot;&gt;return&lt;/span&gt; (&lt;span style=&quot;color: blue&quot;&gt;string&lt;/span&gt;)url;  &lt;li style=&quot;background: #f3f3f3&quot;&gt;} &lt;/li&gt;&lt;/li&gt;&lt;/li&gt;&lt;/li&gt;&lt;/li&gt;&lt;/li&gt;&lt;/li&gt;&lt;/li&gt;&lt;/li&gt;&lt;/li&gt;&lt;/li&gt;&lt;/li&gt;&lt;/li&gt;&lt;/li&gt;&lt;/li&gt;&lt;/li&gt;&lt;/li&gt;&lt;/li&gt;&lt;/li&gt;&lt;/li&gt;&lt;/ol&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt; &lt;h3&gt;&lt;br /&gt;&lt;/h3&gt; &lt;h4&gt;The Details&lt;/h4&gt;In this section I will go through some details of the implementation. I will assume that you have some knowledge about how friendly URLs work in EPiServer CMS and have seen &lt;a href=&quot;http://relate.episerver.com/&quot;&gt;Relate+ in action&lt;/a&gt;.&lt;br /&gt;In the Relate+ Templates we find the id of the object to show in the query string. Sometimes even multiple ids are used in the query string. When creating friendly URLs for Relate+ my first thought was to cheat and still have the ids present in the URLs. That would look something like this:&lt;br /&gt;&lt;br /&gt;&lt;em&gt;http://localhost/My-Blog/johndoe/2010/03/My-first-entry-13/&lt;/em&gt;&lt;br /&gt;&lt;em&gt;http://localhost/My-Blog/johndoe/2010/03/My-first-entry/13&lt;/em&gt;&lt;br /&gt;&lt;br /&gt;In these cases 13 would be the id of the blog entry. However I opted for something that I would like to call true friendly URLs, that is when no ids are included in the URL whatsoever. The examples above will therefore be rendered like this:&lt;br /&gt;&lt;br /&gt;&lt;em&gt;http://localhost/My-Blog/johndoe/2010/03/My-first-entry/&lt;/em&gt;&lt;br /&gt;&lt;br /&gt;Since no ids are included in the URLs I have to have another way of getting a specific object, whether it be a blog entry or an image. Here comes the Query System to the rescue! But let me back up a bit and take it from the top.&lt;br /&gt;&lt;br /&gt;When creating a URL rewriter for the EPiServer CMS the two most important methods are &lt;span style=&quot;font-family: &#39;Courier New&#39;&quot;&gt;ConvertToExternalInternal(…)&lt;/span&gt; and &lt;span style=&quot;font-family: &#39;Courier New&#39;&quot;&gt;ConvertToInternalInternal(…)&lt;/span&gt;. The first one of these takes a non-friendly, raw URL and creates its friendly counterpart. This part is easy, the only thing that is a bit tricky is to find out which of the cases we are dealing with. But by looking at the &lt;span style=&quot;font-family: &#39;Courier New&#39;&quot;&gt;Path&lt;/span&gt; of the incoming &lt;span style=&quot;font-family: &#39;Courier New&#39;&quot;&gt;UrlBuilder&lt;/span&gt; parameter you can figure out which page type is used and therefore also which case you are dealing with. The only thing you have to do is decide how your friendly URLs should look like. If you scroll down and take a look under “The Cases” you can see my choices.&lt;br /&gt;&lt;br /&gt;The second method is a bit more complex. What you want to do here is to do the opposite, that is go from a friendly URL to its raw counterpart, which the system can understand. This also means that you have to add the query string parameters that the system will assume are there.&lt;br /&gt;&lt;br /&gt;Back to the queries… Since I don’t have the ids of the objects in the friendly URLs I’m using the Query System from the Community platform to create custom queries to find my objects. Basically I’m searching for objects based on names and titles with some extra criterion for security checks. However this means that I take some things for granted. For example I assume that there is only one blog entry that is called “X” created by user “Y”. Therefore if you going to use this prototype in a real life scenario you will have to insert some validation into your Relate+ Templates. See next section for list of validation requirements.&lt;br /&gt; &lt;h3&gt;&lt;br /&gt;&lt;/h3&gt; &lt;h4&gt;The Validation Requirements&lt;/h4&gt; &lt;table style=&quot;width: 400px&quot; border=&quot;1&quot; cellspacing=&quot;0&quot; cellpadding=&quot;2&quot;&gt; &lt;tbody&gt; &lt;tr&gt; &lt;td valign=&quot;top&quot; width=&quot;94&quot;&gt;&lt;strong&gt;Module&lt;/strong&gt;&lt;/td&gt; &lt;td valign=&quot;top&quot; width=&quot;306&quot;&gt;&lt;strong&gt;Requirement&lt;/strong&gt;&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td valign=&quot;top&quot; width=&quot;94&quot;&gt;General&lt;/td&gt; &lt;td valign=&quot;top&quot; width=&quot;306&quot;&gt;Username must be unique&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td valign=&quot;top&quot; width=&quot;94&quot;&gt;Blog&lt;/td&gt; &lt;td valign=&quot;top&quot; width=&quot;306&quot;&gt;Each entry must have a unique title per user&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td valign=&quot;top&quot; width=&quot;94&quot;&gt;Forum&lt;/td&gt; &lt;td valign=&quot;top&quot; width=&quot;306&quot;&gt;Each room must have a unique name&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td valign=&quot;top&quot; width=&quot;94&quot;&gt;Forum&lt;/td&gt; &lt;td valign=&quot;top&quot; width=&quot;306&quot;&gt;Each topic must have a unique title&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td valign=&quot;top&quot; width=&quot;94&quot;&gt;ImageGallery&lt;/td&gt; &lt;td valign=&quot;top&quot; width=&quot;306&quot;&gt;Each image gallery must have a unique name per user&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td valign=&quot;top&quot; width=&quot;94&quot;&gt;ImageGallery&lt;/td&gt; &lt;td valign=&quot;top&quot; width=&quot;306&quot;&gt;Each image must have a unique name in an image gallery&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt; &lt;h3&gt;&lt;br /&gt;&lt;/h3&gt; &lt;h4&gt;The cases&lt;/h4&gt;These are the cases that the code handle and how the URLs are being transformed.&lt;br /&gt;&lt;br /&gt; &lt;table style=&quot;width: 400px&quot; border=&quot;1&quot; cellspacing=&quot;0&quot; cellpadding=&quot;2&quot;&gt; &lt;tbody&gt; &lt;tr&gt; &lt;td valign=&quot;top&quot; width=&quot;200&quot;&gt;&lt;strong&gt;Old URL&lt;/strong&gt;&lt;/td&gt; &lt;td valign=&quot;top&quot; width=&quot;200&quot;&gt;&lt;strong&gt;Friendly URL&lt;/strong&gt;&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td valign=&quot;top&quot; width=&quot;200&quot;&gt;/My-Page/?userId=1&lt;/td&gt; &lt;td valign=&quot;top&quot; width=&quot;200&quot;&gt;/My-Page/johndoe/&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td valign=&quot;top&quot; width=&quot;200&quot;&gt;/My-Page/My-Settings&lt;/td&gt; &lt;td valign=&quot;top&quot; width=&quot;200&quot;&gt;/My-Settings/johndoe/&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td valign=&quot;top&quot; width=&quot;200&quot;&gt;/My-Blog/?userId=1&lt;/td&gt; &lt;td valign=&quot;top&quot; width=&quot;200&quot;&gt;/My-Blog/johndoe/&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td valign=&quot;top&quot; width=&quot;200&quot;&gt;/My-Blog/?userId=1&amp;amp;entryId=1&lt;/td&gt; &lt;td valign=&quot;top&quot; width=&quot;200&quot;&gt;/My-Blog/johndoe/2010/03/My-first-entry/&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td valign=&quot;top&quot; width=&quot;200&quot;&gt;/My-Blog/?userId=1&amp;amp;date=2010&lt;/td&gt; &lt;td valign=&quot;top&quot; width=&quot;200&quot;&gt;/My-Blog/johndoe/2010/&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td valign=&quot;top&quot; width=&quot;200&quot;&gt;/My-Blog/?userId=1&amp;amp;date=201003&lt;/td&gt; &lt;td valign=&quot;top&quot; width=&quot;200&quot;&gt;/My-Blog/johndoe/2010/03/&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td valign=&quot;top&quot; width=&quot;200&quot;&gt;/Tags/?tag=car&lt;/td&gt; &lt;td valign=&quot;top&quot; width=&quot;200&quot;&gt;/Tags/car/&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td valign=&quot;top&quot; width=&quot;200&quot;&gt;/Forum/Room?roomId=1&lt;/td&gt; &lt;td valign=&quot;top&quot; width=&quot;200&quot;&gt;/Forum/Hotels-in-London/&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td valign=&quot;top&quot; width=&quot;200&quot;&gt;/Forum/Room/Topic?topicId=4&lt;/td&gt; &lt;td valign=&quot;top&quot; width=&quot;200&quot;&gt;/Forum/Hotels-in-London/Recomendation-for-hotels/&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td valign=&quot;top&quot; width=&quot;200&quot;&gt;/Images/My-Image-Galleries?userId=1&lt;/td&gt; &lt;td valign=&quot;top&quot; width=&quot;200&quot;&gt;/My-Image-Galleries/johndoe/&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td valign=&quot;top&quot; width=&quot;200&quot;&gt;/Images/My-Image-Galleries/Images?userId=1&amp;amp;imageGalleryId=142&lt;/td&gt; &lt;td valign=&quot;top&quot; width=&quot;200&quot;&gt;/My-Image-Galleries/johndoe/My-First-Gallery/&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td valign=&quot;top&quot; width=&quot;200&quot;&gt;/Images/My-Image-Galleries/Images/View-Image/?imageGalleryId=144&amp;amp;imageId= &lt;br /&gt;106&amp;amp;index=0&lt;/td&gt; &lt;td valign=&quot;top&quot; width=&quot;200&quot;&gt;/My-Image-Galleries/johndoe/My-First-Gallery/Butterfly/?index=0&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt; &lt;h3&gt;&lt;br /&gt;&lt;/h3&gt; &lt;h4&gt;What’s to come&lt;/h4&gt;Maybe I will add the source code to &lt;a href=&quot;http://www.codeplex.com/&quot;&gt;CodePlex&lt;/a&gt; or &lt;a href=&quot;https://www.coderesort.com/p/epicode&quot;&gt;CodeResort&lt;/a&gt; if anyone wants me to. I’m also thinking about implementing the stuff that is missing in this alpha release:&lt;br /&gt; &lt;ul&gt; &lt;li&gt;Friendly URLs for Video section  &lt;li&gt;Friendly URLs for Club section  &lt;li&gt;URL Caching  &lt;li&gt;Do a real implementation of &lt;span style=&quot;font-family: &#39;Courier New&#39;&quot;&gt;ConvertToInternal(…)&lt;/span&gt;  &lt;li&gt;Making Query objects publicly available &lt;/li&gt;&lt;/li&gt;&lt;/li&gt;&lt;/li&gt;&lt;/li&gt;&lt;/ul&gt; &lt;h3&gt;&lt;br /&gt;&lt;/h3&gt; &lt;h4&gt;Getting the code&lt;/h4&gt;&lt;a href=&quot;http://dl.dropbox.com/u/1887985/Blog/EPiXternal.RelatePlus.FriendlyUrl.zip&quot;&gt;Download the source code here.&lt;/a&gt;&lt;br /&gt;&lt;em&gt;Disclaimer: Please not that the code comes as-is and I will not be held responsible.&lt;/em&gt;  &lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&quot;1&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/4028573941970551711-5784558471532310721?l=blog.tomstenius.com&quot; alt=&quot;&quot; /&gt;&lt;/div&gt;&lt;div class=&quot;feedflare&quot;&gt;
&lt;a href=&quot;http://feeds.feedburner.com/~ff/TomStenius?a=pAo5cxVRLhk:iqJoSx927Gg:V_sGLiPBpWU&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/TomStenius?i=pAo5cxVRLhk:iqJoSx927Gg:V_sGLiPBpWU&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/TomStenius?a=pAo5cxVRLhk:iqJoSx927Gg:qj6IDK7rITs&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/TomStenius?d=qj6IDK7rITs&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/TomStenius?a=pAo5cxVRLhk:iqJoSx927Gg:gIN9vFwOqvQ&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/TomStenius?i=pAo5cxVRLhk:iqJoSx927Gg:gIN9vFwOqvQ&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/TomStenius?a=pAo5cxVRLhk:iqJoSx927Gg:7Q72WNTAKBA&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/TomStenius?d=7Q72WNTAKBA&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src=&quot;http://feeds.feedburner.com/~r/TomStenius/~4/pAo5cxVRLhk&quot; height=&quot;1&quot; width=&quot;1&quot; /&gt;&lt;div class=&quot;feedflare&quot;&gt;
&lt;a href=&quot;http://feeds.feedburner.com/~ff/TomStenius?a=9-nQnaBrd2I:iqJoSx927Gg:V_sGLiPBpWU&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/TomStenius?i=9-nQnaBrd2I:iqJoSx927Gg:V_sGLiPBpWU&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/TomStenius?a=9-nQnaBrd2I:iqJoSx927Gg:qj6IDK7rITs&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/TomStenius?d=qj6IDK7rITs&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/TomStenius?a=9-nQnaBrd2I:iqJoSx927Gg:gIN9vFwOqvQ&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/TomStenius?i=9-nQnaBrd2I:iqJoSx927Gg:gIN9vFwOqvQ&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/TomStenius?a=9-nQnaBrd2I:iqJoSx927Gg:7Q72WNTAKBA&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/TomStenius?d=7Q72WNTAKBA&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src=&quot;http://feeds.feedburner.com/~r/TomStenius/~4/9-nQnaBrd2I&quot; height=&quot;1&quot; width=&quot;1&quot; /&gt;&lt;div class=&quot;feedflare&quot;&gt;
&lt;a href=&quot;http://feeds.feedburner.com/~ff/TomStenius?a=kXKdKJx4EPA:iqJoSx927Gg:V_sGLiPBpWU&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/TomStenius?i=kXKdKJx4EPA:iqJoSx927Gg:V_sGLiPBpWU&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/TomStenius?a=kXKdKJx4EPA:iqJoSx927Gg:qj6IDK7rITs&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/TomStenius?d=qj6IDK7rITs&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/TomStenius?a=kXKdKJx4EPA:iqJoSx927Gg:gIN9vFwOqvQ&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/TomStenius?i=kXKdKJx4EPA:iqJoSx927Gg:gIN9vFwOqvQ&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/TomStenius?a=kXKdKJx4EPA:iqJoSx927Gg:7Q72WNTAKBA&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/TomStenius?d=7Q72WNTAKBA&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src=&quot;http://feeds.feedburner.com/~r/TomStenius/~4/kXKdKJx4EPA&quot; height=&quot;1&quot; width=&quot;1&quot; /&gt;</description>            <guid>http://feedproxy.google.com/~r/TomStenius/~3/kXKdKJx4EPA/friendly-urls-in-relate-part-2.html</guid>            <pubDate>Tue, 16 Mar 2010 06:15:00 GMT</pubDate>           <category>Blog post</category></item><item> <title>Friendly URLs in Relate+ (Part 1)</title>            <link>http://feedproxy.google.com/~r/TomStenius/~3/4LwLj8d8zVo/friendly-urls-in-relate-part-1.html</link>            <description>&lt;p&gt;One thing I from time to time get questions about is whether &lt;a href=&quot;http://www.episerver.com/en/Products/EPiServer-Relate-2/&quot;&gt;Relate+&lt;/a&gt; comes with friendly URLs – you know those URLs that look really nice and are easy to read for a human. Unfortunately this is something that didn’t make it to the version 1 series of Relate+. I think this is a shame since friendly URLs is a built in feature of CMS. I understand that from a user’s point of view it would seem obvious that we would have it in the templates where &lt;a href=&quot;http://www.episerver.com/en/Products/EPiServer-CMS-5/&quot;&gt;EPiServer CMS&lt;/a&gt; and &lt;a href=&quot;http://www.episerver.com/en/Products/EPiServer-Community/&quot;&gt;EPiServer Community&lt;/a&gt; come together. Given that, my answer to our partners has always been; “Since the &lt;a href=&quot;http://sdk.episerver.com/library/cms5/Developers%20Guide/Friendly%20URL.htm&quot;&gt;Friendly URL system&lt;/a&gt; is provider based, you could build your own”. Now, that is not the answer you would like to hear…&lt;/p&gt;  &lt;p&gt;&lt;a href=&quot;http://lh4.ggpht.com/_W2Im3e5-OCk/S523gfNpQmI/AAAAAAAAAPk/3Ol3zG2AHI4/s1600-h/mypage%5B5%5D.png&quot;&gt;&lt;img style=&quot;border-right-width: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto&quot; title=&quot;mypage&quot; border=&quot;0&quot; alt=&quot;mypage&quot; src=&quot;http://lh4.ggpht.com/_W2Im3e5-OCk/S523jG66O5I/AAAAAAAAAPo/i01hMl5DJkw/mypage_thumb%5B3%5D.png?imgmax=800&quot; width=&quot;394&quot; height=&quot;455&quot; /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;However building a friendly URL rewriter for Relate+, even though it’s feasible, it’s quite of a hassle. The reason being that the number of different cases of navigation are so many. Stop to think about it for a minute. You are not only dealing with pages, instead you are dealing with objects that resides on the same page. On top of that the objects are not structured in the same way. Look at a blog post for instance compared to a forum post. In the blog case you like the date of the post in the URL, but in the forum case you want the room and thread in the URL.&lt;/p&gt;  &lt;p&gt;So to make a few of our partners happy (or maybe I should say happier!) I decided to put some effort in to building a prototype for friendly URLs in Relate+. I want to stress that currently this is just a prototype, it’s something that I put together pretty quickly and the code is in need of some refactoring. Also there is need for adding caching if you are going to use it in a live scenario. But anyways, I’m putting the code out there for you to download and play with.&lt;/p&gt;  &lt;p&gt;I want to acknowledge the work of &lt;a href=&quot;http://twitter.com/tednyberg&quot;&gt;Ted Nyberg&lt;/a&gt;, his friendly URLs for EPiServer CMS blog post served as a base for my implementation. Thanks Ted!&lt;/p&gt;  &lt;p&gt;&lt;a href=&quot;http://dl.dropbox.com/u/1887985/Blog/EPiXternal.RelatePlus.FriendlyUrl.zip&quot;&gt;Download the source code here.&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;I’m thinking about maybe doing some refactoring and then putting the code on &lt;a href=&quot;https://www.coderesort.com/p/epicode&quot;&gt;CodeResort&lt;/a&gt; or &lt;a href=&quot;http://www.codeplex.com/&quot;&gt;CodePlex&lt;/a&gt; as Open Source – if there is someone who wants me to. Please drop me a comment on the matter.&lt;/p&gt;  &lt;p&gt;&lt;a href=&quot;http://lh5.ggpht.com/_W2Im3e5-OCk/S523j5_8YrI/AAAAAAAAAPs/BBcqStd7W20/s1600-h/addressbar%5B10%5D.png&quot;&gt;&lt;img style=&quot;border-right-width: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto&quot; title=&quot;addressbar&quot; border=&quot;0&quot; alt=&quot;addressbar&quot; src=&quot;http://lh6.ggpht.com/_W2Im3e5-OCk/S523lgCyVvI/AAAAAAAAAPw/mcjxbjHfMRw/addressbar_thumb%5B6%5D.png?imgmax=800&quot; width=&quot;404&quot; height=&quot;29&quot; /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;In part two – which will be posted soon I hope – I will go in to the details of the implementation. I will also give an instruction how to install it.&lt;/p&gt;  &lt;p&gt;&lt;em&gt;&lt;font color=&quot;#ff0000&quot;&gt;Update!&lt;/font&gt; &lt;/em&gt;&lt;a href=&quot;http://blog.tomstenius.com/2010/03/friendly-urls-in-relate-part-2.html&quot;&gt;&lt;em&gt;Here is the link to the second part&lt;/em&gt;&lt;/a&gt;&lt;em&gt;.&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;&lt;em&gt;&lt;font size=&quot;1&quot;&gt;Disclaimer: Please not that the code comes as-is and I will not be held responsible.&lt;/font&gt;&lt;/em&gt;&lt;/p&gt;  &lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&quot;1&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/4028573941970551711-628016831954435229?l=blog.tomstenius.com&quot; alt=&quot;&quot; /&gt;&lt;/div&gt;&lt;div class=&quot;feedflare&quot;&gt;
&lt;a href=&quot;http://feeds.feedburner.com/~ff/TomStenius?a=tOWRLFD7KDw:r_H6kyaWxIQ:V_sGLiPBpWU&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/TomStenius?i=tOWRLFD7KDw:r_H6kyaWxIQ:V_sGLiPBpWU&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/TomStenius?a=tOWRLFD7KDw:r_H6kyaWxIQ:qj6IDK7rITs&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/TomStenius?d=qj6IDK7rITs&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/TomStenius?a=tOWRLFD7KDw:r_H6kyaWxIQ:gIN9vFwOqvQ&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/TomStenius?i=tOWRLFD7KDw:r_H6kyaWxIQ:gIN9vFwOqvQ&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/TomStenius?a=tOWRLFD7KDw:r_H6kyaWxIQ:7Q72WNTAKBA&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/TomStenius?d=7Q72WNTAKBA&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src=&quot;http://feeds.feedburner.com/~r/TomStenius/~4/tOWRLFD7KDw&quot; height=&quot;1&quot; width=&quot;1&quot; /&gt;&lt;div class=&quot;feedflare&quot;&gt;
&lt;a href=&quot;http://feeds.feedburner.com/~ff/TomStenius?a=H6xwt0NjsmU:r_H6kyaWxIQ:V_sGLiPBpWU&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/TomStenius?i=H6xwt0NjsmU:r_H6kyaWxIQ:V_sGLiPBpWU&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/TomStenius?a=H6xwt0NjsmU:r_H6kyaWxIQ:qj6IDK7rITs&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/TomStenius?d=qj6IDK7rITs&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/TomStenius?a=H6xwt0NjsmU:r_H6kyaWxIQ:gIN9vFwOqvQ&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/TomStenius?i=H6xwt0NjsmU:r_H6kyaWxIQ:gIN9vFwOqvQ&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/TomStenius?a=H6xwt0NjsmU:r_H6kyaWxIQ:7Q72WNTAKBA&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/TomStenius?d=7Q72WNTAKBA&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src=&quot;http://feeds.feedburner.com/~r/TomStenius/~4/H6xwt0NjsmU&quot; height=&quot;1&quot; width=&quot;1&quot; /&gt;&lt;div class=&quot;feedflare&quot;&gt;
&lt;a href=&quot;http://feeds.feedburner.com/~ff/TomStenius?a=4LwLj8d8zVo:r_H6kyaWxIQ:V_sGLiPBpWU&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/TomStenius?i=4LwLj8d8zVo:r_H6kyaWxIQ:V_sGLiPBpWU&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/TomStenius?a=4LwLj8d8zVo:r_H6kyaWxIQ:qj6IDK7rITs&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/TomStenius?d=qj6IDK7rITs&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/TomStenius?a=4LwLj8d8zVo:r_H6kyaWxIQ:gIN9vFwOqvQ&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/TomStenius?i=4LwLj8d8zVo:r_H6kyaWxIQ:gIN9vFwOqvQ&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/TomStenius?a=4LwLj8d8zVo:r_H6kyaWxIQ:7Q72WNTAKBA&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/TomStenius?d=7Q72WNTAKBA&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src=&quot;http://feeds.feedburner.com/~r/TomStenius/~4/4LwLj8d8zVo&quot; height=&quot;1&quot; width=&quot;1&quot; /&gt;</description>            <guid>http://feedproxy.google.com/~r/TomStenius/~3/4LwLj8d8zVo/friendly-urls-in-relate-part-1.html</guid>            <pubDate>Mon, 15 Mar 2010 05:29:00 GMT</pubDate>           <category>Blog post</category></item><item> <title>Relate+ in CMS 6</title>            <link>http://feedproxy.google.com/~r/TomStenius/~3/v5EOuEQqF-Q/relate-in-cms-6.html</link>            <description>&lt;p&gt;I hate when people write on their blogs that it has been a while since the last post and that they intended to blog a lot more than they have done so far. But now I’m going to do it as well. The reason for sporadic blogging the last couple of months is that – as some of you already know – I have moved to Sydney to help out starting up the &lt;a href=&quot;http://www.episerver.com/en/EPiServer_AB/&quot;&gt;EPiServer ANZ office&lt;/a&gt; – that is Australia and New Zealand. Sine the end of October I live with my wife in Sydney, and the &lt;a href=&quot;http://maps.google.com/maps?f=q&amp;amp;source=s_q&amp;amp;hl=en&amp;amp;geocode=&amp;amp;q=88+phillip+street+sydney&amp;amp;sll=37.0625,-95.677068&amp;amp;sspn=39.507908,63.544922&amp;amp;ie=UTF8&amp;amp;hq=&amp;amp;hnear=88+Phillip+St,+Sydney+New+South+Wales+2000,+Australia&amp;amp;ll=-33.864055,151.211936&amp;amp;spn=0.010138,0.015514&amp;amp;z=16&amp;amp;iwloc=A&quot;&gt;EPiServer office in CBD in Sydney&lt;/a&gt; is the place to find me.&lt;/p&gt;  &lt;p&gt;Ok, enough said about that and over to the juice parts of my first blog post on Australian soil.&lt;/p&gt;  &lt;p&gt;By now most of you have probably tried either the CTP or the RC1 of the upcoming &lt;a href=&quot;http://world.episerver.com/Articles/Items/EPiServer-CMS-6-RC1-is-available-for-download/&quot;&gt;EPiServer CMS 6&lt;/a&gt; – the next big release of EPiServer’s content management system – or seen a couple of screenshots of how it may look like. However the screenshots I’m going to show you comes with a twist – it’s Relate+ (1.0.1.0) running on CMS 6!&lt;/p&gt;  &lt;p&gt;&lt;a href=&quot;http://lh6.ggpht.com/_W2Im3e5-OCk/S01SPppaZtI/AAAAAAAAAMU/RUfprsOW8NU/s1600-h/cms6_relateplus%5B5%5D.png&quot;&gt;&lt;img style=&quot;border-right-width: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto&quot; title=&quot;cms6_relateplus&quot; border=&quot;0&quot; alt=&quot;cms6_relateplus&quot; src=&quot;http://lh5.ggpht.com/_W2Im3e5-OCk/S01SRJVfBxI/AAAAAAAAAMY/m48-0vCq6Kc/cms6_relateplus_thumb%5B3%5D.png?imgmax=800&quot; width=&quot;387&quot; height=&quot;262&quot; /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;I have not tested all the features yet, but what I’ve seen so far almost everything works great. I have only found two flaws;&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;The CSS for the Mail admin gets effected and looks a bit off &lt;/li&gt;    &lt;li&gt;By default you have to append the language code to the URL to reach the start page &lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;As you can see, these are minor issues and pretty easy to fix. So how did I accomplish this? It’s really easy. I just installed a standard Relate+ site and then upgraded it to a CMS 6 using the excellent EPiServer Deployment Center. If you want to see more details on upgrading CMS 5 sites to CMS 6, read &lt;a href=&quot;http://world.episerver.com/Blogs/Per-Bjurstrom/Archive/2009/12/Upgrading-to-CMS-6-RC1/&quot;&gt;this blog post&lt;/a&gt; by &lt;a href=&quot;http://world.episerver.com/Blogs/Per-Bjurstrom/&quot;&gt;Per Bjurstr&#246;m&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;&lt;a href=&quot;http://lh4.ggpht.com/_W2Im3e5-OCk/S01SSovwSpI/AAAAAAAAAMc/TLr829fS_to/s1600-h/cms6_relateplus_imageadmin%5B4%5D.png&quot;&gt;&lt;img style=&quot;border-right-width: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto&quot; title=&quot;cms6_relateplus_imageadmin&quot; border=&quot;0&quot; alt=&quot;cms6_relateplus_imageadmin&quot; src=&quot;http://lh3.ggpht.com/_W2Im3e5-OCk/S01ST3piprI/AAAAAAAAAMg/YmKSOJlRw8s/cms6_relateplus_imageadmin_thumb%5B2%5D.png?imgmax=800&quot; width=&quot;387&quot; height=&quot;255&quot; /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;So if your about to start a Relate+ project, but you are curious on the new CMS 6 maybe this is the way to go! No guarantees that everything will work though…&lt;/p&gt;  &lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&quot;1&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/4028573941970551711-8202755229777574213?l=blog.tomstenius.com&quot; alt=&quot;&quot; /&gt;&lt;/div&gt;&lt;div class=&quot;feedflare&quot;&gt;
&lt;a href=&quot;http://feeds.feedburner.com/~ff/TomStenius?a=rx3BA2odXek:5HDF_N4TAww:V_sGLiPBpWU&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/TomStenius?i=rx3BA2odXek:5HDF_N4TAww:V_sGLiPBpWU&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/TomStenius?a=rx3BA2odXek:5HDF_N4TAww:qj6IDK7rITs&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/TomStenius?d=qj6IDK7rITs&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/TomStenius?a=rx3BA2odXek:5HDF_N4TAww:gIN9vFwOqvQ&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/TomStenius?i=rx3BA2odXek:5HDF_N4TAww:gIN9vFwOqvQ&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/TomStenius?a=rx3BA2odXek:5HDF_N4TAww:7Q72WNTAKBA&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/TomStenius?d=7Q72WNTAKBA&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src=&quot;http://feeds.feedburner.com/~r/TomStenius/~4/rx3BA2odXek&quot; height=&quot;1&quot; width=&quot;1&quot; /&gt;&lt;div class=&quot;feedflare&quot;&gt;
&lt;a href=&quot;http://feeds.feedburner.com/~ff/TomStenius?a=-LSHtuNV9Ec:5HDF_N4TAww:V_sGLiPBpWU&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/TomStenius?i=-LSHtuNV9Ec:5HDF_N4TAww:V_sGLiPBpWU&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/TomStenius?a=-LSHtuNV9Ec:5HDF_N4TAww:qj6IDK7rITs&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/TomStenius?d=qj6IDK7rITs&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/TomStenius?a=-LSHtuNV9Ec:5HDF_N4TAww:gIN9vFwOqvQ&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/TomStenius?i=-LSHtuNV9Ec:5HDF_N4TAww:gIN9vFwOqvQ&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/TomStenius?a=-LSHtuNV9Ec:5HDF_N4TAww:7Q72WNTAKBA&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/TomStenius?d=7Q72WNTAKBA&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src=&quot;http://feeds.feedburner.com/~r/TomStenius/~4/-LSHtuNV9Ec&quot; height=&quot;1&quot; width=&quot;1&quot; /&gt;&lt;div class=&quot;feedflare&quot;&gt;
&lt;a href=&quot;http://feeds.feedburner.com/~ff/TomStenius?a=v5EOuEQqF-Q:5HDF_N4TAww:V_sGLiPBpWU&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/TomStenius?i=v5EOuEQqF-Q:5HDF_N4TAww:V_sGLiPBpWU&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/TomStenius?a=v5EOuEQqF-Q:5HDF_N4TAww:qj6IDK7rITs&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/TomStenius?d=qj6IDK7rITs&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/TomStenius?a=v5EOuEQqF-Q:5HDF_N4TAww:gIN9vFwOqvQ&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/TomStenius?i=v5EOuEQqF-Q:5HDF_N4TAww:gIN9vFwOqvQ&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/TomStenius?a=v5EOuEQqF-Q:5HDF_N4TAww:7Q72WNTAKBA&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/TomStenius?d=7Q72WNTAKBA&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src=&quot;http://feeds.feedburner.com/~r/TomStenius/~4/v5EOuEQqF-Q&quot; height=&quot;1&quot; width=&quot;1&quot; /&gt;</description>            <guid>http://feedproxy.google.com/~r/TomStenius/~3/v5EOuEQqF-Q/relate-in-cms-6.html</guid>            <pubDate>Wed, 13 Jan 2010 05:55:00 GMT</pubDate>           <category>Blog post</category></item><item> <title>Windows Authentication in EPiServer Community and EPiServer Mail</title>            <link>http://feedproxy.google.com/~r/TomStenius/~3/_3i4qk5dsP4/windows-authentication-in-episerver.html</link>            <description>&lt;p&gt;Lately I have seen more and more of our partners using Windows Authentication in their &lt;a href=&quot;http://www.episerver.com/en/Products/EPiServer-Community/&quot;&gt;EPiServer Community&lt;/a&gt; and &lt;a href=&quot;http://www.episerver.com/en/Products/EPiServer-Mail/&quot;&gt;EPiServer Mail&lt;/a&gt; solutions. I guess the reason is the products are being more and more used within an intranet environment, which is really cool.&lt;/p&gt;  &lt;p&gt;However I have noticed that a lot of developers are having difficulties configuring this type of environment. I’m sad to say that the documentation about this type of setup is sparse at best – so I can’t blame the developers who comes asking for help. I decided to write this blog post instead of sending the same mail to everyone who needs help.&lt;/p&gt;  &lt;p&gt;In an environment where you use Forms Authentication you are fine using the instructions in my previous post, &lt;a href=&quot;http://blog.tomstenius.com/2009/04/episerver-community-role-and-membership.html&quot;&gt;EPiServer Community role and membership providers&lt;/a&gt;. But if you are using Windows Authentication the &lt;em&gt;EPiServerCommonIntegrationProvider&lt;/em&gt; will not be able to do the syncing of the users and roles. The reason is because the &lt;em&gt;ValidateUser(username, password)&lt;/em&gt; method in &lt;em&gt;EPiServerCommonIntegrationProvider&lt;/em&gt; is not called, since the &lt;em&gt;WindowsAuthentication ticket&lt;/em&gt; stores everything needed to validate the user. This causes the user to be authenticated, but not synchronized (Identity of the request is set, but the Name of the Identity is not present in the &lt;em&gt;EPiServerCommon&lt;/em&gt; database).&lt;/p&gt;  &lt;p&gt;The rescue is a HTTP Module that is part of the EPiServer Common. Simply add the following module to your list of HTTP Modules in the &lt;em&gt;web.config&lt;/em&gt;:&lt;/p&gt;  &lt;div style=&quot;border-bottom: silver 1px solid; text-align: left; border-left: silver 1px solid; padding-bottom: 4px; line-height: 12pt; background-color: #f4f4f4; margin: 20px 0px 10px; padding-left: 4px; width: 97.5%; padding-right: 4px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; max-height: 200px; font-size: 8pt; overflow: auto; border-top: silver 1px solid; cursor: text; border-right: silver 1px solid; padding-top: 4px&quot; id=&quot;codeSnippetWrapper&quot;&gt;   &lt;div style=&quot;border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px&quot; id=&quot;codeSnippet&quot;&gt;     &lt;pre style=&quot;border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px&quot;&gt;&lt;span style=&quot;color: #0000ff&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: #800000&quot;&gt;add&lt;/span&gt; &lt;span style=&quot;color: #ff0000&quot;&gt;name&lt;/span&gt;&lt;span style=&quot;color: #0000ff&quot;&gt;=&amp;quot;EPiServerCommonWindowsAuthenticationIntegration&amp;quot;&lt;/span&gt; &lt;span style=&quot;color: #ff0000&quot;&gt;type&lt;/span&gt;&lt;span style=&quot;color: #0000ff&quot;&gt;=&amp;quot;EPiServer.Common.Web.Authorization.IntegrationHttpModule, EPiServer.Common.Web.Authorization&amp;quot;&lt;/span&gt; &lt;span style=&quot;color: #ff0000&quot;&gt;preCondition&lt;/span&gt;&lt;span style=&quot;color: #0000ff&quot;&gt;=&amp;quot;managedHandler&amp;quot;&lt;/span&gt; &lt;span style=&quot;color: #0000ff&quot;&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;&lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;What this module will do, is to first make sure that there’s a &lt;em&gt;MembershipUser&lt;/em&gt; for the current request. This object would originate from the configured &lt;em&gt;MembershipProvider&lt;/em&gt;. If it is set, but there’s no user in &lt;em&gt;EPiServer.Common&lt;/em&gt;, it will synchronize the user using &lt;em&gt;EPiServer.Common.Web.Authorization.Integrator.SynchronizeUser(MembershipUser, Password, createNew).&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;(Remember to remove the preCondition=&amp;quot;managedHandler&amp;quot; attribute if you&#39;re not using IIS7 – thanks &lt;/em&gt;&lt;a href=&quot;http://world.episerver.com/en/System/Users-and-profiles/Community-Profile-Card/?encryptedcurrentid=IXXhQzM9RliVPJR/uwxvyQ8YuJirL583&quot;&gt;&lt;em&gt;Erik&lt;/em&gt;&lt;/a&gt;&lt;em&gt;)&lt;/em&gt;&lt;/p&gt;  &lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&quot;1&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/4028573941970551711-4245502626358236333?l=blog.tomstenius.com&quot; alt=&quot;&quot; /&gt;&lt;/div&gt;&lt;div class=&quot;feedflare&quot;&gt;
&lt;a href=&quot;http://feeds.feedburner.com/~ff/TomStenius?a=hTcFEOl2OgM:5T2GNUKOuvo:V_sGLiPBpWU&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/TomStenius?i=hTcFEOl2OgM:5T2GNUKOuvo:V_sGLiPBpWU&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/TomStenius?a=hTcFEOl2OgM:5T2GNUKOuvo:qj6IDK7rITs&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/TomStenius?d=qj6IDK7rITs&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/TomStenius?a=hTcFEOl2OgM:5T2GNUKOuvo:gIN9vFwOqvQ&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/TomStenius?i=hTcFEOl2OgM:5T2GNUKOuvo:gIN9vFwOqvQ&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/TomStenius?a=hTcFEOl2OgM:5T2GNUKOuvo:7Q72WNTAKBA&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/TomStenius?d=7Q72WNTAKBA&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src=&quot;http://feeds.feedburner.com/~r/TomStenius/~4/hTcFEOl2OgM&quot; height=&quot;1&quot; width=&quot;1&quot; /&gt;&lt;div class=&quot;feedflare&quot;&gt;
&lt;a href=&quot;http://feeds.feedburner.com/~ff/TomStenius?a=Bo1u73PqBm8:5T2GNUKOuvo:V_sGLiPBpWU&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/TomStenius?i=Bo1u73PqBm8:5T2GNUKOuvo:V_sGLiPBpWU&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/TomStenius?a=Bo1u73PqBm8:5T2GNUKOuvo:qj6IDK7rITs&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/TomStenius?d=qj6IDK7rITs&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/TomStenius?a=Bo1u73PqBm8:5T2GNUKOuvo:gIN9vFwOqvQ&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/TomStenius?i=Bo1u73PqBm8:5T2GNUKOuvo:gIN9vFwOqvQ&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/TomStenius?a=Bo1u73PqBm8:5T2GNUKOuvo:7Q72WNTAKBA&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/TomStenius?d=7Q72WNTAKBA&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src=&quot;http://feeds.feedburner.com/~r/TomStenius/~4/Bo1u73PqBm8&quot; height=&quot;1&quot; width=&quot;1&quot; /&gt;&lt;div class=&quot;feedflare&quot;&gt;
&lt;a href=&quot;http://feeds.feedburner.com/~ff/TomStenius?a=_3i4qk5dsP4:5T2GNUKOuvo:V_sGLiPBpWU&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/TomStenius?i=_3i4qk5dsP4:5T2GNUKOuvo:V_sGLiPBpWU&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/TomStenius?a=_3i4qk5dsP4:5T2GNUKOuvo:qj6IDK7rITs&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/TomStenius?d=qj6IDK7rITs&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/TomStenius?a=_3i4qk5dsP4:5T2GNUKOuvo:gIN9vFwOqvQ&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/TomStenius?i=_3i4qk5dsP4:5T2GNUKOuvo:gIN9vFwOqvQ&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/TomStenius?a=_3i4qk5dsP4:5T2GNUKOuvo:7Q72WNTAKBA&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/TomStenius?d=7Q72WNTAKBA&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src=&quot;http://feeds.feedburner.com/~r/TomStenius/~4/_3i4qk5dsP4&quot; height=&quot;1&quot; width=&quot;1&quot; /&gt;</description>            <guid>http://feedproxy.google.com/~r/TomStenius/~3/_3i4qk5dsP4/windows-authentication-in-episerver.html</guid>            <pubDate>Wed, 09 Sep 2009 14:27:00 GMT</pubDate>           <category>Blog post</category></item><item> <title>Hanselman’s Tool List Revisited</title>            <link>http://feedproxy.google.com/~r/TomStenius/~3/unCf8MhNihY/hanselmans-tool-list-revisited.html</link>            <description>&lt;p&gt;I’m constantly in the hunt for new tools and programs that can make life easier, not only as a programmer but for my everyday personal life as well. Since I’m a programmer on the .Net platform I follow &lt;a href=&quot;http://www.hanselman.com&quot;&gt;Scott Hanselman’s&lt;/a&gt; blog (if you are .Net programmer you don’t follow his blog; head over to &lt;a href=&quot;http://www.hanselman.com&quot;&gt;this address&lt;/a&gt; straight away). Every year Scott produces the “&lt;a href=&quot;http://www.hanselman.com/tools&quot;&gt;Ultimate Developer and Power Users Tool List for Windows&lt;/a&gt;”, this list is my golf mine for finding new tools and util programs to use.&lt;/p&gt;  &lt;p&gt;If you haven’t read Scott’s post before, I suggest you to start out by doing that - &lt;a href=&quot;http://www.hanselman.com/tools&quot;&gt;Scott Hanselman&#39;s 2009 Ultimate Developer and Power Users Tool List for Windows&lt;/a&gt; – because this blog post is my reflection on that list.&lt;/p&gt;  &lt;p&gt;First of all, kudos to Scott for compiling this awesome list! I have not tested out all the programs that he mentions, but some of them I would like to comment and I have a few additions.&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;The best text editor for the Windows platform is in my opinion &lt;a href=&quot;http://notepad-plus.sourceforge.net&quot;&gt;Notepad++&lt;/a&gt;. I used &lt;a href=&quot;http://www.ultraedit.com/&quot;&gt;UltraEdit&lt;/a&gt; before, but Notepad++ is just as good and at the same time for free! It’s an obvious choice for me. &lt;/li&gt;    &lt;li&gt;Never heard of &lt;a href=&quot;http://www.evernote.com/&quot;&gt;Evernote&lt;/a&gt; before I read Scott’s list. Now I’ve downloaded it and started to use it. Since I both use Mac and Windows I really love applications that work on both, and especially apps that sync with over the web as well. I really hope that this app can replace &lt;a href=&quot;http://office.microsoft.com/en-us/onenote/default.aspx&quot;&gt;Onenote&lt;/a&gt;.&lt;/li&gt;    &lt;li&gt;&lt;a href=&quot;http://www.getdropbox.com/&quot;&gt;Dropbox&lt;/a&gt; is the app/service I use to store stuff in the cloud. It has a nice web interface, but also applications for both Mac and Windows – which I love. You get 2 GB for free and it’s really easy to use, just drop your files in the Dropbox folder on your machine and it’s synced to the cloud. Fantastic!&lt;/li&gt;    &lt;li&gt;Since I’m a Mac user I also have to mention &lt;a href=&quot;www.vmware.com/products/fusion&quot;&gt;WMware Fusion&lt;/a&gt;, which is the best virtualization software for the Mac.&lt;/li&gt;    &lt;li&gt;Again, since I’m a Mac user – &lt;a href=&quot;http://www.apple.com/bootcamp&quot;&gt;Bootcamp&lt;/a&gt;, could it be better?!&lt;/li&gt;    &lt;li&gt;Writing comments in code is boring, but it’s more fun with &lt;a href=&quot;http://submain.com/products/ghostdoc.aspx&quot;&gt;GhostDoc&lt;/a&gt;. GhostDoc is a plug-in to &lt;a href=&quot;http://msdn.microsoft.com/en-us/vstudio/default.aspx&quot;&gt;Visual Studio&lt;/a&gt; that generates comments for you. Use it as stubs for your comments. GhostDoc recently got acquired by &lt;a href=&quot;http://submain.com&quot;&gt;SubMain&lt;/a&gt; – let’s hope that this only brings good to the application.&lt;/li&gt;    &lt;li&gt;Lately I have switched to &lt;a href=&quot;http://www.google.com/chrome&quot;&gt;Google Chrome&lt;/a&gt; as my preferred browser just because is so lightning fast and because I just love the&amp;#160; “One box for everything” idea.&lt;/li&gt; &lt;/ul&gt;  &lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&quot;1&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/4028573941970551711-6711692991059416975?l=blog.tomstenius.com&quot; alt=&quot;&quot; /&gt;&lt;/div&gt;&lt;div class=&quot;feedflare&quot;&gt;
&lt;a href=&quot;http://feeds.feedburner.com/~ff/TomStenius?a=MAtaNAnxa_c:jYvuFFSU3X8:V_sGLiPBpWU&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/TomStenius?i=MAtaNAnxa_c:jYvuFFSU3X8:V_sGLiPBpWU&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/TomStenius?a=MAtaNAnxa_c:jYvuFFSU3X8:qj6IDK7rITs&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/TomStenius?d=qj6IDK7rITs&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/TomStenius?a=MAtaNAnxa_c:jYvuFFSU3X8:gIN9vFwOqvQ&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/TomStenius?i=MAtaNAnxa_c:jYvuFFSU3X8:gIN9vFwOqvQ&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/TomStenius?a=MAtaNAnxa_c:jYvuFFSU3X8:7Q72WNTAKBA&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/TomStenius?d=7Q72WNTAKBA&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src=&quot;http://feeds.feedburner.com/~r/TomStenius/~4/MAtaNAnxa_c&quot; height=&quot;1&quot; width=&quot;1&quot; /&gt;&lt;div class=&quot;feedflare&quot;&gt;
&lt;a href=&quot;http://feeds.feedburner.com/~ff/TomStenius?a=IHdJihpo67E:jYvuFFSU3X8:V_sGLiPBpWU&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/TomStenius?i=IHdJihpo67E:jYvuFFSU3X8:V_sGLiPBpWU&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/TomStenius?a=IHdJihpo67E:jYvuFFSU3X8:qj6IDK7rITs&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/TomStenius?d=qj6IDK7rITs&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/TomStenius?a=IHdJihpo67E:jYvuFFSU3X8:gIN9vFwOqvQ&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/TomStenius?i=IHdJihpo67E:jYvuFFSU3X8:gIN9vFwOqvQ&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/TomStenius?a=IHdJihpo67E:jYvuFFSU3X8:7Q72WNTAKBA&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/TomStenius?d=7Q72WNTAKBA&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src=&quot;http://feeds.feedburner.com/~r/TomStenius/~4/IHdJihpo67E&quot; height=&quot;1&quot; width=&quot;1&quot; /&gt;&lt;div class=&quot;feedflare&quot;&gt;
&lt;a href=&quot;http://feeds.feedburner.com/~ff/TomStenius?a=unCf8MhNihY:jYvuFFSU3X8:V_sGLiPBpWU&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/TomStenius?i=unCf8MhNihY:jYvuFFSU3X8:V_sGLiPBpWU&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/TomStenius?a=unCf8MhNihY:jYvuFFSU3X8:qj6IDK7rITs&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/TomStenius?d=qj6IDK7rITs&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/TomStenius?a=unCf8MhNihY:jYvuFFSU3X8:gIN9vFwOqvQ&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/TomStenius?i=unCf8MhNihY:jYvuFFSU3X8:gIN9vFwOqvQ&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/TomStenius?a=unCf8MhNihY:jYvuFFSU3X8:7Q72WNTAKBA&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/TomStenius?d=7Q72WNTAKBA&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src=&quot;http://feeds.feedburner.com/~r/TomStenius/~4/unCf8MhNihY&quot; height=&quot;1&quot; width=&quot;1&quot; /&gt;</description>            <guid>http://feedproxy.google.com/~r/TomStenius/~3/unCf8MhNihY/hanselmans-tool-list-revisited.html</guid>            <pubDate>Wed, 09 Sep 2009 13:19:00 GMT</pubDate>           <category>Blog post</category></item><item> <title>SharePoint Connector on IIS 7</title>            <link>http://feedproxy.google.com/~r/TomStenius/~3/A2AKpK90r7g/sharepoint-connector-on-iis-7.html</link>            <description>&lt;p&gt;Came across an issue yesterday where a customer wanted to install &lt;a href=&quot;http://www.episerver.com/en/Products/EPiServer-CMS-5/&quot;&gt;EPiServer CMS&lt;/a&gt; on an IIS 7 together with &lt;a href=&quot;http://www.episerver.com/en/Products/EPiServer-Connect/For-SharePoint---Second-edition/&quot;&gt;EPiServer Connect for SharePoint&lt;/a&gt; for integration with &lt;a href=&quot;http://sharepoint.microsoft.com&quot;&gt;SharePoint&lt;/a&gt;. As you probably already know, EPiServer CMS supports IIS 7 since the R2 release. However configuring the SharePoint connector is done somewhat different than for previous IIS versions.&lt;/p&gt;  &lt;p&gt;If you are going to configure the SharePoint connector I suggest you to start of by reading &lt;a href=&quot;http://world.episerver.com/en/Documentation/Items/Installation-Instructions/EPiServer-Connect/SharePoint-Installation-Instructions21&quot;&gt;this tech note&lt;/a&gt;, since this blog post will not cover all the details included. But when comes to configuring the IIS 7 for &lt;em&gt;Basic Authentication&lt;/em&gt; you should look here instead, since it is here things are a bit different. In IIS 7 you can only turn on &lt;em&gt;Basic Authentication&lt;/em&gt; on for the entire site (or turn it off), and you cannot run it in combination with for instance &lt;em&gt;Forms Authentication&lt;/em&gt; for obvious reasons. So just make sure that Basic Authentication is enabled in the Windows features, in Windows 7 it will look like this:&lt;/p&gt;  &lt;p&gt;&lt;a href=&quot;http://lh3.ggpht.com/_W2Im3e5-OCk/Sk3OTZQEAgI/AAAAAAAAAGQ/2xMGJTNMgDI/s1600-h/WindowsFeatures_BasicAuth6.png&quot;&gt;&lt;img style=&quot;border-right-width: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto&quot; title=&quot;WindowsFeatures_BasicAuth&quot; border=&quot;0&quot; alt=&quot;WindowsFeatures_BasicAuth&quot; src=&quot;http://lh6.ggpht.com/_W2Im3e5-OCk/Sk3OTzCxN3I/AAAAAAAAAGU/bvBnM90Y4CU/WindowsFeatures_BasicAuth_thumb4.png?imgmax=800&quot; width=&quot;379&quot; height=&quot;441&quot; /&gt;&lt;/a&gt;&amp;#160; &lt;br /&gt;Also make sure that Basic Authentication is disabled for your site in IIS 7.&lt;/p&gt;  &lt;p&gt;&lt;a href=&quot;http://lh5.ggpht.com/_W2Im3e5-OCk/Sk3OUG7L7YI/AAAAAAAAAGY/NcCT2OkA7_w/s1600-h/IIS7_BasicAuth5.png&quot;&gt;&lt;img style=&quot;border-right-width: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto&quot; title=&quot;IIS7_BasicAuth&quot; border=&quot;0&quot; alt=&quot;IIS7_BasicAuth&quot; src=&quot;http://lh4.ggpht.com/_W2Im3e5-OCk/Sk3OUm0syXI/AAAAAAAAAGc/XbdqJ3FkMuk/IIS7_BasicAuth_thumb3.png?imgmax=800&quot; width=&quot;389&quot; height=&quot;342&quot; /&gt;&lt;/a&gt;&amp;#160; &lt;br /&gt;Now you might think, what the h***? If I turn off Basic Authentication how could SharePoint connector use it?! Well actually the tag you inserted in the web.config (see below) is an EPiServer hack to enable Basic Authentication on the requests made to a particular location.&lt;/p&gt;  &lt;div style=&quot;border-bottom: silver 1px solid; text-align: left; border-left: silver 1px solid; padding-bottom: 4px; line-height: 12pt; background-color: #f4f4f4; margin: 20px 0px 10px; padding-left: 4px; width: 97.5%; padding-right: 4px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; max-height: 200px; font-size: 8pt; overflow: auto; border-top: silver 1px solid; cursor: text; border-right: silver 1px solid; padding-top: 4px&quot; id=&quot;codeSnippetWrapper&quot;&gt;   &lt;div style=&quot;border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px&quot; id=&quot;codeSnippet&quot;&gt;     &lt;pre style=&quot;border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px&quot;&gt;&lt;span style=&quot;color: #0000ff&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: #800000&quot;&gt;EPiServer.basicAuthentication&lt;/span&gt; sendBasicChallenge=&amp;quot;true&amp;quot; basicRealm=&amp;quot;&amp;quot; &lt;span style=&quot;color: #0000ff&quot;&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;&lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;Hopefully now you will shout out something like; Hallelujah it works!&lt;/p&gt;  &lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&quot;1&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/4028573941970551711-7501989729999077615?l=blog.tomstenius.com&quot; alt=&quot;&quot; /&gt;&lt;/div&gt;&lt;div class=&quot;feedflare&quot;&gt;
&lt;a href=&quot;http://feeds.feedburner.com/~ff/TomStenius?a=M28SP4-EkFc:MSjmwWkHngk:V_sGLiPBpWU&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/TomStenius?i=M28SP4-EkFc:MSjmwWkHngk:V_sGLiPBpWU&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/TomStenius?a=M28SP4-EkFc:MSjmwWkHngk:qj6IDK7rITs&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/TomStenius?d=qj6IDK7rITs&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/TomStenius?a=M28SP4-EkFc:MSjmwWkHngk:gIN9vFwOqvQ&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/TomStenius?i=M28SP4-EkFc:MSjmwWkHngk:gIN9vFwOqvQ&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/TomStenius?a=M28SP4-EkFc:MSjmwWkHngk:7Q72WNTAKBA&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/TomStenius?d=7Q72WNTAKBA&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src=&quot;http://feeds.feedburner.com/~r/TomStenius/~4/M28SP4-EkFc&quot; height=&quot;1&quot; width=&quot;1&quot; /&gt;&lt;div class=&quot;feedflare&quot;&gt;
&lt;a href=&quot;http://feeds.feedburner.com/~ff/TomStenius?a=VUOSAHP1GNg:MSjmwWkHngk:V_sGLiPBpWU&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/TomStenius?i=VUOSAHP1GNg:MSjmwWkHngk:V_sGLiPBpWU&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/TomStenius?a=VUOSAHP1GNg:MSjmwWkHngk:qj6IDK7rITs&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/TomStenius?d=qj6IDK7rITs&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/TomStenius?a=VUOSAHP1GNg:MSjmwWkHngk:gIN9vFwOqvQ&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/TomStenius?i=VUOSAHP1GNg:MSjmwWkHngk:gIN9vFwOqvQ&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/TomStenius?a=VUOSAHP1GNg:MSjmwWkHngk:7Q72WNTAKBA&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/TomStenius?d=7Q72WNTAKBA&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src=&quot;http://feeds.feedburner.com/~r/TomStenius/~4/VUOSAHP1GNg&quot; height=&quot;1&quot; width=&quot;1&quot; /&gt;&lt;div class=&quot;feedflare&quot;&gt;
&lt;a href=&quot;http://feeds.feedburner.com/~ff/TomStenius?a=A2AKpK90r7g:MSjmwWkHngk:V_sGLiPBpWU&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/TomStenius?i=A2AKpK90r7g:MSjmwWkHngk:V_sGLiPBpWU&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/TomStenius?a=A2AKpK90r7g:MSjmwWkHngk:qj6IDK7rITs&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/TomStenius?d=qj6IDK7rITs&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/TomStenius?a=A2AKpK90r7g:MSjmwWkHngk:gIN9vFwOqvQ&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/TomStenius?i=A2AKpK90r7g:MSjmwWkHngk:gIN9vFwOqvQ&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/TomStenius?a=A2AKpK90r7g:MSjmwWkHngk:7Q72WNTAKBA&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/TomStenius?d=7Q72WNTAKBA&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src=&quot;http://feeds.feedburner.com/~r/TomStenius/~4/A2AKpK90r7g&quot; height=&quot;1&quot; width=&quot;1&quot; /&gt;</description>            <guid>http://feedproxy.google.com/~r/TomStenius/~3/A2AKpK90r7g/sharepoint-connector-on-iis-7.html</guid>            <pubDate>Fri, 03 Jul 2009 11:24:00 GMT</pubDate>           <category>Blog post</category></item><item> <title>Turn off logging for EPiServer Community</title>            <link>http://feedproxy.google.com/~r/TomStenius/~3/5QmC-tkypl8/turn-off-logging-for-episerver.html</link>            <description>&lt;p&gt;The &lt;a href=&quot;http://www.episerver.com/en/Products/EPiServer-Community/&quot;&gt;EPiServer Community&lt;/a&gt; does not have the same extensive logging capabilities as &lt;a href=&quot;http://www.episerver.com/en/Products/EPiServer-CMS-5/&quot;&gt;EPiServer CMS&lt;/a&gt;, which utilizes the &lt;a href=&quot;http://logging.apache.org/log4net/index.html&quot;&gt;log4net&lt;/a&gt; component. But there are some basic logging done to the standard Windows Event Log under the Application group. The problem is that there is no configuration for turning off the logging if you don’t want it.&lt;/p&gt;  &lt;p&gt;But, as in many cases, there is a workaround. The installer for EPiServer Community will set up an entry in the &lt;a href=&quot;http://en.wikipedia.org/wiki/Windows_Registry&quot;&gt;registry&lt;/a&gt; to allow the application to write to the Event Log. To turn off the logging simply start up Regedit and navigate to:&lt;/p&gt;  &lt;p&gt;&lt;em&gt;HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Eventlog\Application\EPiServer Common&lt;/em&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Either remove the entry or rename it. Now the application will not be allowed to write to the Event Log, and therefore no entries are written there!&lt;/p&gt;  &lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&quot;1&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/4028573941970551711-3999772643994302890?l=blog.tomstenius.com&quot; alt=&quot;&quot; /&gt;&lt;/div&gt;&lt;div class=&quot;feedflare&quot;&gt;
&lt;a href=&quot;http://feeds.feedburner.com/~ff/TomStenius?a=3cGLaWiKwlc:C4pdf2PMpQc:V_sGLiPBpWU&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/TomStenius?i=3cGLaWiKwlc:C4pdf2PMpQc:V_sGLiPBpWU&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/TomStenius?a=3cGLaWiKwlc:C4pdf2PMpQc:qj6IDK7rITs&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/TomStenius?d=qj6IDK7rITs&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/TomStenius?a=3cGLaWiKwlc:C4pdf2PMpQc:gIN9vFwOqvQ&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/TomStenius?i=3cGLaWiKwlc:C4pdf2PMpQc:gIN9vFwOqvQ&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/TomStenius?a=3cGLaWiKwlc:C4pdf2PMpQc:7Q72WNTAKBA&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/TomStenius?d=7Q72WNTAKBA&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src=&quot;http://feeds.feedburner.com/~r/TomStenius/~4/3cGLaWiKwlc&quot; height=&quot;1&quot; width=&quot;1&quot; /&gt;&lt;div class=&quot;feedflare&quot;&gt;
&lt;a href=&quot;http://feeds.feedburner.com/~ff/TomStenius?a=7GFaEhFagk0:C4pdf2PMpQc:V_sGLiPBpWU&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/TomStenius?i=7GFaEhFagk0:C4pdf2PMpQc:V_sGLiPBpWU&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/TomStenius?a=7GFaEhFagk0:C4pdf2PMpQc:qj6IDK7rITs&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/TomStenius?d=qj6IDK7rITs&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/TomStenius?a=7GFaEhFagk0:C4pdf2PMpQc:gIN9vFwOqvQ&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/TomStenius?i=7GFaEhFagk0:C4pdf2PMpQc:gIN9vFwOqvQ&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/TomStenius?a=7GFaEhFagk0:C4pdf2PMpQc:7Q72WNTAKBA&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/TomStenius?d=7Q72WNTAKBA&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src=&quot;http://feeds.feedburner.com/~r/TomStenius/~4/7GFaEhFagk0&quot; height=&quot;1&quot; width=&quot;1&quot; /&gt;&lt;div class=&quot;feedflare&quot;&gt;
&lt;a href=&quot;http://feeds.feedburner.com/~ff/TomStenius?a=5QmC-tkypl8:C4pdf2PMpQc:V_sGLiPBpWU&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/TomStenius?i=5QmC-tkypl8:C4pdf2PMpQc:V_sGLiPBpWU&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/TomStenius?a=5QmC-tkypl8:C4pdf2PMpQc:qj6IDK7rITs&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/TomStenius?d=qj6IDK7rITs&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/TomStenius?a=5QmC-tkypl8:C4pdf2PMpQc:gIN9vFwOqvQ&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/TomStenius?i=5QmC-tkypl8:C4pdf2PMpQc:gIN9vFwOqvQ&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/TomStenius?a=5QmC-tkypl8:C4pdf2PMpQc:7Q72WNTAKBA&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/TomStenius?d=7Q72WNTAKBA&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src=&quot;http://feeds.feedburner.com/~r/TomStenius/~4/5QmC-tkypl8&quot; height=&quot;1&quot; width=&quot;1&quot; /&gt;</description>            <guid>http://feedproxy.google.com/~r/TomStenius/~3/5QmC-tkypl8/turn-off-logging-for-episerver.html</guid>            <pubDate>Fri, 12 Jun 2009 16:13:00 GMT</pubDate>           <category>Blog post</category></item><item> <title>EPiServer Community role and membership providers</title>            <link>http://feedproxy.google.com/~r/TomStenius/~3/0sL_XOm-gpE/episerver-community-role-and-membership.html</link>            <description>&lt;p&gt;From various sources I have found out that a lot of people are having trouble with the configuration of role providers and membership providers for &lt;a href=&quot;http://www.episerver.com/en/Products/EPiServer-Community/&quot;&gt;EPiServer Community&lt;/a&gt; and &lt;a href=&quot;http://www.episerver.com/en/Products/EPiServer-Mail/&quot;&gt;EPiServer Mail&lt;/a&gt;. In this blog post I will try to describe the different setups that are available.&lt;/p&gt;  &lt;h4&gt;The basic facts&lt;/h4&gt;  &lt;p&gt;The first thing you need to know is that both Community and Mail has to have the users and groups in the database, independent of which membership provider and role provider you are using. The reason is the the user is such a central concept in the Community case, and Mail is using the same user management as Community. Ok, now we got this settled – let’s move on!&lt;/p&gt;  &lt;h4&gt;The most basic configuration&lt;/h4&gt;  &lt;p&gt;In the default installation for Community and Mail, the system will be configured to use the role provider named &lt;em&gt;EPiServerCommonRoleProvider&lt;/em&gt; and the membership provider &lt;em&gt;EPiServerCommonMembershipProvider&lt;/em&gt;. This means that the system will authenticate against the EPiServer Common tables, which is used by both Mail and Community. The system will also get the user roles, or groups, from the EPiServer Common tables. I.e. the user/group management and access rights is entirely managed by EPiServer Common.&lt;/p&gt;  &lt;div style=&quot;border-bottom: gray 1px solid; border-left: gray 1px solid; padding-bottom: 4px; line-height: 12pt; background-color: #f4f4f4; margin: 20px 0px 10px; padding-left: 4px; width: 97.5%; padding-right: 4px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; max-height: 200px; font-size: 8pt; overflow: auto; border-top: gray 1px solid; cursor: text; border-right: gray 1px solid; padding-top: 4px&quot;&gt;   &lt;div style=&quot;border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px&quot;&gt;     &lt;pre style=&quot;border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px&quot;&gt;&lt;span style=&quot;color: #0000ff&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: #800000&quot;&gt;roleManager&lt;/span&gt; &lt;span style=&quot;color: #ff0000&quot;&gt;enabled&lt;/span&gt;&lt;span style=&quot;color: #0000ff&quot;&gt;=&amp;quot;true&amp;quot;&lt;/span&gt; &lt;span style=&quot;color: #ff0000&quot;&gt;defaultProvider&lt;/span&gt;&lt;span style=&quot;color: #0000ff&quot;&gt;=&amp;quot;EPiServerCommonRoleProvider&amp;quot;&lt;/span&gt; &lt;span style=&quot;color: #ff0000&quot;&gt;cacheRolesInCookie&lt;/span&gt;&lt;span style=&quot;color: #0000ff&quot;&gt;=&amp;quot;true&amp;quot;&lt;/span&gt;&lt;span style=&quot;color: #0000ff&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

    &lt;pre style=&quot;border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px&quot;&gt;    &lt;span style=&quot;color: #0000ff&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: #800000&quot;&gt;providers&lt;/span&gt;&lt;span style=&quot;color: #0000ff&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

    &lt;pre style=&quot;border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px&quot;&gt;        &lt;span style=&quot;color: #0000ff&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: #800000&quot;&gt;clear&lt;/span&gt;&lt;span style=&quot;color: #0000ff&quot;&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;

    &lt;pre style=&quot;border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px&quot;&gt;        &lt;span style=&quot;color: #0000ff&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: #800000&quot;&gt;add&lt;/span&gt; &lt;span style=&quot;color: #ff0000&quot;&gt;name&lt;/span&gt;&lt;span style=&quot;color: #0000ff&quot;&gt;=&amp;quot;EPiServerCommonRoleProvider&amp;quot;&lt;/span&gt; &lt;span style=&quot;color: #ff0000&quot;&gt;applicationName&lt;/span&gt;&lt;span style=&quot;color: #0000ff&quot;&gt;=&amp;quot;EPiServerCommonApplication&amp;quot;&lt;/span&gt; &lt;span style=&quot;color: #ff0000&quot;&gt;type&lt;/span&gt;&lt;span style=&quot;color: #0000ff&quot;&gt;=&amp;quot;EPiServer.Common.Web.Authorization.RoleProvider, EPiServer.Common.Web.Authorization&amp;quot;&lt;/span&gt;&lt;span style=&quot;color: #0000ff&quot;&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;

    &lt;pre style=&quot;border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px&quot;&gt;    &lt;span style=&quot;color: #0000ff&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span style=&quot;color: #800000&quot;&gt;providers&lt;/span&gt;&lt;span style=&quot;color: #0000ff&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

    &lt;pre style=&quot;border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px&quot;&gt;&lt;span style=&quot;color: #0000ff&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span style=&quot;color: #800000&quot;&gt;roleManager&lt;/span&gt;&lt;span style=&quot;color: #0000ff&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

    &lt;pre style=&quot;border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px&quot;&gt;&lt;span style=&quot;color: #0000ff&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: #800000&quot;&gt;membership&lt;/span&gt; &lt;span style=&quot;color: #ff0000&quot;&gt;defaultProvider&lt;/span&gt;&lt;span style=&quot;color: #0000ff&quot;&gt;=&amp;quot;EPiServerCommonMembershipProvider&amp;quot;&lt;/span&gt; &lt;span style=&quot;color: #ff0000&quot;&gt;userIsOnlineTimeWindow&lt;/span&gt;&lt;span style=&quot;color: #0000ff&quot;&gt;=&amp;quot;10&amp;quot;&lt;/span&gt;&lt;span style=&quot;color: #0000ff&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

    &lt;pre style=&quot;border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px&quot;&gt;    &lt;span style=&quot;color: #0000ff&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: #800000&quot;&gt;providers&lt;/span&gt;&lt;span style=&quot;color: #0000ff&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

    &lt;pre style=&quot;border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px&quot;&gt;        &lt;span style=&quot;color: #0000ff&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: #800000&quot;&gt;clear&lt;/span&gt;&lt;span style=&quot;color: #0000ff&quot;&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;

    &lt;pre style=&quot;border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px&quot;&gt;        &lt;span style=&quot;color: #0000ff&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: #800000&quot;&gt;add&lt;/span&gt; &lt;span style=&quot;color: #ff0000&quot;&gt;name&lt;/span&gt;&lt;span style=&quot;color: #0000ff&quot;&gt;=&amp;quot;EPiServerCommonMembershipProvider&amp;quot;&lt;/span&gt; &lt;span style=&quot;color: #ff0000&quot;&gt;applicationName&lt;/span&gt;&lt;span style=&quot;color: #0000ff&quot;&gt;=&amp;quot;EPiServerCommonApplication&amp;quot;&lt;/span&gt; &lt;span style=&quot;color: #ff0000&quot;&gt;type&lt;/span&gt;&lt;span style=&quot;color: #0000ff&quot;&gt;=&amp;quot;EPiServer.Common.Web.Authorization.MembershipProvider, EPiServer.Common.Web.Authorization&amp;quot;&lt;/span&gt;&lt;span style=&quot;color: #0000ff&quot;&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;

    &lt;pre style=&quot;border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px&quot;&gt;    &lt;span style=&quot;color: #0000ff&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span style=&quot;color: #800000&quot;&gt;providers&lt;/span&gt;&lt;span style=&quot;color: #0000ff&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

    &lt;pre style=&quot;border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px&quot;&gt;&lt;span style=&quot;color: #0000ff&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span style=&quot;color: #800000&quot;&gt;membership&lt;/span&gt;&lt;span style=&quot;color: #0000ff&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;h4&gt;A little bit more advanced configuration&lt;/h4&gt;

&lt;p&gt;In this case we want to use external membership provider and role provider. In my example I’m going to use Windows providers, but these could easily be substituted with SQL providers or something else.&lt;/p&gt;

&lt;p&gt;We start off by setting the &lt;em&gt;WindowsRoleProvider&lt;/em&gt; as default role provider, nothing tricky here. However when specifying the membership provider we will not set the &lt;em&gt;WindowsMembershipProvider&lt;/em&gt; as default. Remember that every user/group needs to exist in the EPiServer Common tables. To solve this we use the &lt;em&gt;EPiServerCommonIntegrationMembershipProvider&lt;/em&gt; and set it as default membership provider. This provider has an attribute called “provider”, here you specify your underlying provider – in this case the &lt;em&gt;WindowsMembershipProvider&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;You will also specify the attributes “roleToSynchronizeX” where X is a number (has to be in sequence and start with 1). If a user logs in and gets authenticated the system will look at the user’s groups – if the user is member of any of the groups specified in the “roleToSynchronize” attributes, then the user and all of its groups will be copied to the EPiServer Common tables. Note that only the user’s groups will be copied, not the other users in these groups.&lt;/p&gt;

&lt;p&gt;If you use the notation &lt;em&gt;roleToSynchronize1=”*”&lt;/em&gt;, the user will be copied independent of the group memberships it has. Note that you have to have &lt;a href=&quot;http://world.episerver.com/en/Download/Items/Hotfixes/EPiServer-Common/Hotfix-1---EPiServer-Common-23/&quot;&gt;EPiServer Common 2.3 Hotfix 1&lt;/a&gt; for this to work.&lt;/p&gt;

&lt;div style=&quot;border-bottom: gray 1px solid; border-left: gray 1px solid; padding-bottom: 4px; line-height: 12pt; background-color: #f4f4f4; margin: 20px 0px 10px; padding-left: 4px; width: 97.5%; padding-right: 4px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; max-height: 200px; font-size: 8pt; overflow: auto; border-top: gray 1px solid; cursor: text; border-right: gray 1px solid; padding-top: 4px&quot;&gt;
  &lt;div style=&quot;border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px&quot;&gt;
    &lt;pre style=&quot;border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px&quot;&gt;&lt;span style=&quot;color: #0000ff&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: #800000&quot;&gt;roleManager&lt;/span&gt; &lt;span style=&quot;color: #ff0000&quot;&gt;enabled&lt;/span&gt;&lt;span style=&quot;color: #0000ff&quot;&gt;=&amp;quot;true&amp;quot;&lt;/span&gt; &lt;span style=&quot;color: #ff0000&quot;&gt;defaultProvider&lt;/span&gt;&lt;span style=&quot;color: #0000ff&quot;&gt;=&amp;quot;WindowsRoleProvider&amp;quot;&lt;/span&gt; &lt;span style=&quot;color: #ff0000&quot;&gt;cacheRolesInCookie&lt;/span&gt;&lt;span style=&quot;color: #0000ff&quot;&gt;=&amp;quot;true&amp;quot;&lt;/span&gt;&lt;span style=&quot;color: #0000ff&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

    &lt;pre style=&quot;border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px&quot;&gt;    &lt;span style=&quot;color: #0000ff&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: #800000&quot;&gt;providers&lt;/span&gt;&lt;span style=&quot;color: #0000ff&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

    &lt;pre style=&quot;border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px&quot;&gt;        &lt;span style=&quot;color: #0000ff&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: #800000&quot;&gt;clear&lt;/span&gt;&lt;span style=&quot;color: #0000ff&quot;&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;

    &lt;pre style=&quot;border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px&quot;&gt;        &lt;span style=&quot;color: #0000ff&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: #800000&quot;&gt;add&lt;/span&gt; &lt;span style=&quot;color: #ff0000&quot;&gt;name&lt;/span&gt;&lt;span style=&quot;color: #0000ff&quot;&gt;=&amp;quot;WindowsRoleProvider&amp;quot;&lt;/span&gt; &lt;span style=&quot;color: #ff0000&quot;&gt;applicationName&lt;/span&gt;&lt;span style=&quot;color: #0000ff&quot;&gt;=&amp;quot;EPiServerSample&amp;quot;&lt;/span&gt; &lt;span style=&quot;color: #ff0000&quot;&gt;type&lt;/span&gt;&lt;span style=&quot;color: #0000ff&quot;&gt;=&amp;quot;EPiServer.Security.WindowsRoleProvider, EPiServer&amp;quot;&lt;/span&gt;&lt;span style=&quot;color: #0000ff&quot;&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;

    &lt;pre style=&quot;border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px&quot;&gt;    &lt;span style=&quot;color: #0000ff&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span style=&quot;color: #800000&quot;&gt;providers&lt;/span&gt;&lt;span style=&quot;color: #0000ff&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

    &lt;pre style=&quot;border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px&quot;&gt;&lt;span style=&quot;color: #0000ff&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span style=&quot;color: #800000&quot;&gt;roleManager&lt;/span&gt;&lt;span style=&quot;color: #0000ff&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

    &lt;pre style=&quot;border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px&quot;&gt;&lt;span style=&quot;color: #0000ff&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: #800000&quot;&gt;membership&lt;/span&gt; &lt;span style=&quot;color: #ff0000&quot;&gt;defaultProvider&lt;/span&gt;&lt;span style=&quot;color: #0000ff&quot;&gt;=&amp;quot;EPiServerCommonIntegrationMembershipProvider&amp;quot;&lt;/span&gt; &lt;span style=&quot;color: #ff0000&quot;&gt;userIsOnlineTimeWindow&lt;/span&gt;&lt;span style=&quot;color: #0000ff&quot;&gt;=&amp;quot;10&amp;quot;&lt;/span&gt;&lt;span style=&quot;color: #0000ff&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

    &lt;pre style=&quot;border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px&quot;&gt;    &lt;span style=&quot;color: #0000ff&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: #800000&quot;&gt;providers&lt;/span&gt;&lt;span style=&quot;color: #0000ff&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

    &lt;pre style=&quot;border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px&quot;&gt;        &lt;span style=&quot;color: #0000ff&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: #800000&quot;&gt;clear&lt;/span&gt;&lt;span style=&quot;color: #0000ff&quot;&gt;/&amp;gt;&lt;/span&gt;                &lt;/pre&gt;

    &lt;pre style=&quot;border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px&quot;&gt;        &lt;span style=&quot;color: #0000ff&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: #800000&quot;&gt;add&lt;/span&gt; &lt;span style=&quot;color: #ff0000&quot;&gt;name&lt;/span&gt;&lt;span style=&quot;color: #0000ff&quot;&gt;=&amp;quot;WindowsMembershipProvider&amp;quot;&lt;/span&gt; &lt;span style=&quot;color: #ff0000&quot;&gt;type&lt;/span&gt;&lt;span style=&quot;color: #0000ff&quot;&gt;=&amp;quot;EPiServer.Security.WindowsMembershipProvider, EPiServer&amp;quot;&lt;/span&gt; &lt;span style=&quot;color: #ff0000&quot;&gt;deletePrefix&lt;/span&gt;&lt;span style=&quot;color: #0000ff&quot;&gt;=&amp;quot;BUILTIN\&amp;quot;&lt;/span&gt; &lt;span style=&quot;color: #ff0000&quot;&gt;searchByEmail&lt;/span&gt;&lt;span style=&quot;color: #0000ff&quot;&gt;=&amp;quot;true&amp;quot;&lt;/span&gt;&lt;span style=&quot;color: #0000ff&quot;&gt;/&amp;gt;&lt;/span&gt;                &lt;/pre&gt;

    &lt;pre style=&quot;border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px&quot;&gt;        &lt;span style=&quot;color: #0000ff&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: #800000&quot;&gt;add&lt;/span&gt; &lt;span style=&quot;color: #ff0000&quot;&gt;name&lt;/span&gt;&lt;span style=&quot;color: #0000ff&quot;&gt;=&amp;quot;EPiServerCommonIntegrationMembershipProvider&amp;quot;&lt;/span&gt; &lt;span style=&quot;color: #ff0000&quot;&gt;applicationName&lt;/span&gt;&lt;span style=&quot;color: #0000ff&quot;&gt;=&amp;quot;EPiServerCommonApplication&amp;quot;&lt;/span&gt; &lt;span style=&quot;color: #ff0000&quot;&gt;type&lt;/span&gt;&lt;span style=&quot;color: #0000ff&quot;&gt;=&amp;quot;EPiServer.Common.Web.Authorization.IntegrationMembershipProvider, EPiServer.Common.Web.Authorization&amp;quot;&lt;/span&gt; &lt;span style=&quot;color: #ff0000&quot;&gt;provider&lt;/span&gt;&lt;span style=&quot;color: #0000ff&quot;&gt;=&amp;quot;WindowsMembershipProvider&amp;quot;&lt;/span&gt; &lt;span style=&quot;color: #ff0000&quot;&gt;roleToSynchronize1&lt;/span&gt;&lt;span style=&quot;color: #0000ff&quot;&gt;=&amp;quot;Group1&amp;quot;&lt;/span&gt; &lt;span style=&quot;color: #ff0000&quot;&gt;roleToSynchronize2&lt;/span&gt;&lt;span style=&quot;color: #0000ff&quot;&gt;=&amp;quot;Group2&amp;quot;&lt;/span&gt; &lt;span style=&quot;color: #0000ff&quot;&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;

    &lt;pre style=&quot;border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px&quot;&gt;    &lt;span style=&quot;color: #0000ff&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span style=&quot;color: #800000&quot;&gt;providers&lt;/span&gt;&lt;span style=&quot;color: #0000ff&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

    &lt;pre style=&quot;border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px&quot;&gt;&lt;span style=&quot;color: #0000ff&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span style=&quot;color: #800000&quot;&gt;membership&lt;/span&gt;&lt;span style=&quot;color: #0000ff&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;h4&gt;Advanced configuration&lt;/h4&gt;

&lt;p&gt;The last type of configuration is where you want to use a series of providers, something we at EPiServer would call a multiplexing scenario. In this case will make us of the &lt;em&gt;IntegrationMultiplexingMembershipProvider&lt;/em&gt; which can be found in &lt;a href=&quot;http://world.episerver.com/en/Download/Items/Hotfixes/EPiServer-Common/Hotfix-1---EPiServer-Common-23/&quot;&gt;EPiServer Common 2.3 Hotfix 1&lt;/a&gt;. This is actually a combination of the multiplexing provider found in &lt;a href=&quot;http://www.episerver.com/en/Products/EPiServer-CMS-5/&quot;&gt;EPiServer CMS&lt;/a&gt; and the integration provider mentioned above. This will be used in combination with the &lt;em&gt;MultiplexingRoleProvider&lt;/em&gt; in EPiServer CMS.&lt;/p&gt;

&lt;p&gt;When using this provider you will be able to specify several underlying providers. The system will try the providers one after another until either the user is authenticated or the the list of providers runs out.&lt;/p&gt;

&lt;p&gt;In my example below I’m using the Windows provider as primary provider and SQL provider as secondary.&lt;/p&gt;





&lt;div style=&quot;border-bottom: gray 1px solid; border-left: gray 1px solid; padding-bottom: 4px; line-height: 12pt; background-color: #f4f4f4; margin: 20px 0px 10px; padding-left: 4px; width: 97.5%; padding-right: 4px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; max-height: 200px; font-size: 8pt; overflow: auto; border-top: gray 1px solid; cursor: text; border-right: gray 1px solid; padding-top: 4px&quot;&gt;
  &lt;div style=&quot;border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px&quot;&gt;
    &lt;pre style=&quot;border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px&quot;&gt;&lt;span style=&quot;color: #0000ff&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: #800000&quot;&gt;roleManager&lt;/span&gt; &lt;span style=&quot;color: #ff0000&quot;&gt;enabled&lt;/span&gt;&lt;span style=&quot;color: #0000ff&quot;&gt;=&amp;quot;true&amp;quot;&lt;/span&gt; &lt;span style=&quot;color: #ff0000&quot;&gt;defaultProvider&lt;/span&gt;&lt;span style=&quot;color: #0000ff&quot;&gt;=&amp;quot;MultiplexingRoleProvider&amp;quot;&lt;/span&gt; &lt;span style=&quot;color: #ff0000&quot;&gt;cacheRolesInCookie&lt;/span&gt;&lt;span style=&quot;color: #0000ff&quot;&gt;=&amp;quot;true&amp;quot;&lt;/span&gt;&lt;span style=&quot;color: #0000ff&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

    &lt;pre style=&quot;border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px&quot;&gt;    &lt;span style=&quot;color: #0000ff&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: #800000&quot;&gt;providers&lt;/span&gt;&lt;span style=&quot;color: #0000ff&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

    &lt;pre style=&quot;border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px&quot;&gt;        &lt;span style=&quot;color: #0000ff&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: #800000&quot;&gt;clear&lt;/span&gt;&lt;span style=&quot;color: #0000ff&quot;&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;

    &lt;pre style=&quot;border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px&quot;&gt;        &lt;span style=&quot;color: #0000ff&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: #800000&quot;&gt;add&lt;/span&gt; &lt;span style=&quot;color: #ff0000&quot;&gt;name&lt;/span&gt;&lt;span style=&quot;color: #0000ff&quot;&gt;=&amp;quot;MultiplexingRoleProvider&amp;quot;&lt;/span&gt; &lt;span style=&quot;color: #ff0000&quot;&gt;type&lt;/span&gt;&lt;span style=&quot;color: #0000ff&quot;&gt;=&amp;quot;EPiServer.Security.MultiplexingRoleProvider, EPiServer&amp;quot;&lt;/span&gt; &lt;span style=&quot;color: #ff0000&quot;&gt;provider1&lt;/span&gt;&lt;span style=&quot;color: #0000ff&quot;&gt;=&amp;quot;WindowsServerRoleProvider&amp;quot;&lt;/span&gt; &lt;span style=&quot;color: #ff0000&quot;&gt;provider2&lt;/span&gt;&lt;span style=&quot;color: #0000ff&quot;&gt;=&amp;quot;SqlRoleProvider&amp;quot;&lt;/span&gt; &lt;span style=&quot;color: #ff0000&quot;&gt;providerMap1&lt;/span&gt;&lt;span style=&quot;color: #0000ff&quot;&gt;=&amp;quot;WindowsServermembershipProvider&amp;quot;&lt;/span&gt; &lt;span style=&quot;color: #ff0000&quot;&gt;providerMap2&lt;/span&gt;&lt;span style=&quot;color: #0000ff&quot;&gt;=&amp;quot;SqlMembershipProvider&amp;quot;&lt;/span&gt;&lt;span style=&quot;color: #0000ff&quot;&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;

    &lt;pre style=&quot;border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px&quot;&gt;        &lt;span style=&quot;color: #0000ff&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: #800000&quot;&gt;add&lt;/span&gt; &lt;span style=&quot;color: #ff0000&quot;&gt;name&lt;/span&gt;&lt;span style=&quot;color: #0000ff&quot;&gt;=&amp;quot;WindowsRoleProvider&amp;quot;&lt;/span&gt; &lt;span style=&quot;color: #ff0000&quot;&gt;applicationName&lt;/span&gt;&lt;span style=&quot;color: #0000ff&quot;&gt;=&amp;quot;EPiServerSample&amp;quot;&lt;/span&gt; &lt;span style=&quot;color: #ff0000&quot;&gt;type&lt;/span&gt;&lt;span style=&quot;color: #0000ff&quot;&gt;=&amp;quot;EPiServer.Security.WindowsRoleProvider, EPiServer&amp;quot;&lt;/span&gt;&lt;span style=&quot;color: #0000ff&quot;&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;

    &lt;pre style=&quot;border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px&quot;&gt;        &lt;span style=&quot;color: #0000ff&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: #800000&quot;&gt;add&lt;/span&gt; &lt;span style=&quot;color: #ff0000&quot;&gt;name&lt;/span&gt;&lt;span style=&quot;color: #0000ff&quot;&gt;=&amp;quot;SqlServerRoleProvider&amp;quot;&lt;/span&gt; &lt;span style=&quot;color: #ff0000&quot;&gt;connectionStringName&lt;/span&gt;&lt;span style=&quot;color: #0000ff&quot;&gt;=&amp;quot;EPiServerDB&amp;quot;&lt;/span&gt; &lt;span style=&quot;color: #ff0000&quot;&gt;applicationName&lt;/span&gt;&lt;span style=&quot;color: #0000ff&quot;&gt;=&amp;quot;EPiServerSample&amp;quot;&lt;/span&gt; &lt;span style=&quot;color: #ff0000&quot;&gt;type&lt;/span&gt;&lt;span style=&quot;color: #0000ff&quot;&gt;=&amp;quot;System.Web.Security.SqlRoleProvider, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a&amp;quot;&lt;/span&gt;&lt;span style=&quot;color: #0000ff&quot;&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;

    &lt;pre style=&quot;border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px&quot;&gt;    &lt;span style=&quot;color: #0000ff&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span style=&quot;color: #800000&quot;&gt;providers&lt;/span&gt;&lt;span style=&quot;color: #0000ff&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

    &lt;pre style=&quot;border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px&quot;&gt;&lt;span style=&quot;color: #0000ff&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span style=&quot;color: #800000&quot;&gt;roleManager&lt;/span&gt;&lt;span style=&quot;color: #0000ff&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

    &lt;pre style=&quot;border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px&quot;&gt;&lt;span style=&quot;color: #0000ff&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: #800000&quot;&gt;membership&lt;/span&gt; &lt;span style=&quot;color: #ff0000&quot;&gt;defaultProvider&lt;/span&gt;&lt;span style=&quot;color: #0000ff&quot;&gt;=&amp;quot;MultiplexingMembershipProvider&amp;quot;&lt;/span&gt; &lt;span style=&quot;color: #ff0000&quot;&gt;userIsOnlineTimeWindow&lt;/span&gt;&lt;span style=&quot;color: #0000ff&quot;&gt;=&amp;quot;10&amp;quot;&lt;/span&gt;&lt;span style=&quot;color: #0000ff&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

    &lt;pre style=&quot;border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px&quot;&gt;    &lt;span style=&quot;color: #0000ff&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: #800000&quot;&gt;providers&lt;/span&gt;&lt;span style=&quot;color: #0000ff&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

    &lt;pre style=&quot;border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px&quot;&gt;        &lt;span style=&quot;color: #0000ff&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: #800000&quot;&gt;clear&lt;/span&gt;&lt;span style=&quot;color: #0000ff&quot;&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;

    &lt;pre style=&quot;border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px&quot;&gt;        &lt;span style=&quot;color: #0000ff&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: #800000&quot;&gt;add&lt;/span&gt; &lt;span style=&quot;color: #ff0000&quot;&gt;name&lt;/span&gt;&lt;span style=&quot;color: #0000ff&quot;&gt;=&amp;quot;MultiplexingMembershipProvider&amp;quot;&lt;/span&gt; &lt;span style=&quot;color: #ff0000&quot;&gt;type&lt;/span&gt;&lt;span style=&quot;color: #0000ff&quot;&gt;=&amp;quot;EPiServer.Common.Web.Authorization.Multiplexing.IntegrationMultiplexingMembershipProvider, EPiServer.Common.Web.Authorization.Multiplexing&amp;quot;&lt;/span&gt; &lt;span style=&quot;color: #ff0000&quot;&gt;provider1&lt;/span&gt;&lt;span style=&quot;color: #0000ff&quot;&gt;=&amp;quot;WindowsServerMembershipProvider&amp;quot;&lt;/span&gt; &lt;span style=&quot;color: #ff0000&quot;&gt;provider2&lt;/span&gt;&lt;span style=&quot;color: #0000ff&quot;&gt;=&amp;quot;SqlMembershipProvider&amp;quot;&lt;/span&gt; &lt;span style=&quot;color: #ff0000&quot;&gt;roleToSynchronize1&lt;/span&gt;&lt;span style=&quot;color: #0000ff&quot;&gt;=&amp;quot;*&amp;quot;&lt;/span&gt; &lt;span style=&quot;color: #0000ff&quot;&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;

    &lt;pre style=&quot;border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px&quot;&gt;        &lt;span style=&quot;color: #0000ff&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: #800000&quot;&gt;add&lt;/span&gt; &lt;span style=&quot;color: #ff0000&quot;&gt;name&lt;/span&gt;&lt;span style=&quot;color: #0000ff&quot;&gt;=&amp;quot;WindowsMembershipProvider&amp;quot;&lt;/span&gt; &lt;span style=&quot;color: #ff0000&quot;&gt;type&lt;/span&gt;&lt;span style=&quot;color: #0000ff&quot;&gt;=&amp;quot;EPiServer.Security.WindowsMembershipProvider, EPiServer&amp;quot;&lt;/span&gt; &lt;span style=&quot;color: #ff0000&quot;&gt;deletePrefix&lt;/span&gt;&lt;span style=&quot;color: #0000ff&quot;&gt;=&amp;quot;BUILTIN\&amp;quot;&lt;/span&gt; &lt;span style=&quot;color: #ff0000&quot;&gt;searchByEmail&lt;/span&gt;&lt;span style=&quot;color: #0000ff&quot;&gt;=&amp;quot;true&amp;quot;&lt;/span&gt;&lt;span style=&quot;color: #0000ff&quot;&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;

    &lt;pre style=&quot;border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px&quot;&gt;        &lt;span style=&quot;color: #0000ff&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: #800000&quot;&gt;add&lt;/span&gt; &lt;span style=&quot;color: #ff0000&quot;&gt;name&lt;/span&gt;&lt;span style=&quot;color: #0000ff&quot;&gt;=&amp;quot;SqlServerMembershipProvider&amp;quot;&lt;/span&gt; &lt;span style=&quot;color: #ff0000&quot;&gt;type&lt;/span&gt;&lt;span style=&quot;color: #0000ff&quot;&gt;=&amp;quot;System.Web.Security.SqlMembershipProvider, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a&amp;quot;&lt;/span&gt; &lt;span style=&quot;color: #ff0000&quot;&gt;connectionStringName&lt;/span&gt;&lt;span style=&quot;color: #0000ff&quot;&gt;=&amp;quot;EPiServerDB&amp;quot;&lt;/span&gt; &lt;span style=&quot;color: #ff0000&quot;&gt;requiresQuestionAndAnswer&lt;/span&gt;&lt;span style=&quot;color: #0000ff&quot;&gt;=&amp;quot;false&amp;quot;&lt;/span&gt; &lt;span style=&quot;color: #ff0000&quot;&gt;applicationName&lt;/span&gt;&lt;span style=&quot;color: #0000ff&quot;&gt;=&amp;quot;EPiServerSample&amp;quot;&lt;/span&gt; &lt;span style=&quot;color: #ff0000&quot;&gt;requiresUniqueEmail&lt;/span&gt;&lt;span style=&quot;color: #0000ff&quot;&gt;=&amp;quot;true&amp;quot;&lt;/span&gt; &lt;span style=&quot;color: #ff0000&quot;&gt;passwordFormat&lt;/span&gt;&lt;span style=&quot;color: #0000ff&quot;&gt;=&amp;quot;Hashed&amp;quot;&lt;/span&gt; &lt;span style=&quot;color: #ff0000&quot;&gt;maxInvalidPasswordAttempts&lt;/span&gt;&lt;span style=&quot;color: #0000ff&quot;&gt;=&amp;quot;5&amp;quot;&lt;/span&gt; &lt;span style=&quot;color: #ff0000&quot;&gt;minRequiredPasswordLength&lt;/span&gt;&lt;span style=&quot;color: #0000ff&quot;&gt;=&amp;quot;7&amp;quot;&lt;/span&gt; &lt;span style=&quot;color: #ff0000&quot;&gt;minRequiredNonalphanumericCharacters&lt;/span&gt;&lt;span style=&quot;color: #0000ff&quot;&gt;=&amp;quot;0&amp;quot;&lt;/span&gt; &lt;span style=&quot;color: #ff0000&quot;&gt;passwordAttemptWindow&lt;/span&gt;&lt;span style=&quot;color: #0000ff&quot;&gt;=&amp;quot;10&amp;quot;&lt;/span&gt; &lt;span style=&quot;color: #ff0000&quot;&gt;passwordStrengthRegularExpression&lt;/span&gt;&lt;span style=&quot;color: #0000ff&quot;&gt;=&amp;quot;&amp;quot;&lt;/span&gt;&lt;span style=&quot;color: #0000ff&quot;&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;

    &lt;pre style=&quot;border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px&quot;&gt;    &lt;span style=&quot;color: #0000ff&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span style=&quot;color: #800000&quot;&gt;providers&lt;/span&gt;&lt;span style=&quot;color: #0000ff&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

    &lt;pre style=&quot;border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px&quot;&gt;&lt;span style=&quot;color: #0000ff&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span style=&quot;color: #800000&quot;&gt;membership&lt;/span&gt;&lt;span style=&quot;color: #0000ff&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;  &lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&quot;1&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/4028573941970551711-3509834130171019879?l=blog.tomstenius.com&quot; alt=&quot;&quot; /&gt;&lt;/div&gt;&lt;div class=&quot;feedflare&quot;&gt;
&lt;a href=&quot;http://feeds.feedburner.com/~ff/TomStenius?a=FNq6XBRAQ8g:WINnCUmY8JU:V_sGLiPBpWU&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/TomStenius?i=FNq6XBRAQ8g:WINnCUmY8JU:V_sGLiPBpWU&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/TomStenius?a=FNq6XBRAQ8g:WINnCUmY8JU:qj6IDK7rITs&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/TomStenius?d=qj6IDK7rITs&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/TomStenius?a=FNq6XBRAQ8g:WINnCUmY8JU:gIN9vFwOqvQ&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/TomStenius?i=FNq6XBRAQ8g:WINnCUmY8JU:gIN9vFwOqvQ&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/TomStenius?a=FNq6XBRAQ8g:WINnCUmY8JU:7Q72WNTAKBA&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/TomStenius?d=7Q72WNTAKBA&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src=&quot;http://feeds.feedburner.com/~r/TomStenius/~4/FNq6XBRAQ8g&quot; height=&quot;1&quot; width=&quot;1&quot; /&gt;&lt;div class=&quot;feedflare&quot;&gt;
&lt;a href=&quot;http://feeds.feedburner.com/~ff/TomStenius?a=94s0FzHM-Xo:WINnCUmY8JU:V_sGLiPBpWU&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/TomStenius?i=94s0FzHM-Xo:WINnCUmY8JU:V_sGLiPBpWU&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/TomStenius?a=94s0FzHM-Xo:WINnCUmY8JU:qj6IDK7rITs&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/TomStenius?d=qj6IDK7rITs&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/TomStenius?a=94s0FzHM-Xo:WINnCUmY8JU:gIN9vFwOqvQ&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/TomStenius?i=94s0FzHM-Xo:WINnCUmY8JU:gIN9vFwOqvQ&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/TomStenius?a=94s0FzHM-Xo:WINnCUmY8JU:7Q72WNTAKBA&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/TomStenius?d=7Q72WNTAKBA&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src=&quot;http://feeds.feedburner.com/~r/TomStenius/~4/94s0FzHM-Xo&quot; height=&quot;1&quot; width=&quot;1&quot; /&gt;&lt;div class=&quot;feedflare&quot;&gt;
&lt;a href=&quot;http://feeds.feedburner.com/~ff/TomStenius?a=0sL_XOm-gpE:WINnCUmY8JU:V_sGLiPBpWU&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/TomStenius?i=0sL_XOm-gpE:WINnCUmY8JU:V_sGLiPBpWU&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/TomStenius?a=0sL_XOm-gpE:WINnCUmY8JU:qj6IDK7rITs&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/TomStenius?d=qj6IDK7rITs&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/TomStenius?a=0sL_XOm-gpE:WINnCUmY8JU:gIN9vFwOqvQ&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/TomStenius?i=0sL_XOm-gpE:WINnCUmY8JU:gIN9vFwOqvQ&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/TomStenius?a=0sL_XOm-gpE:WINnCUmY8JU:7Q72WNTAKBA&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/TomStenius?d=7Q72WNTAKBA&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src=&quot;http://feeds.feedburner.com/~r/TomStenius/~4/0sL_XOm-gpE&quot; height=&quot;1&quot; width=&quot;1&quot; /&gt;</description>            <guid>http://feedproxy.google.com/~r/TomStenius/~3/0sL_XOm-gpE/episerver-community-role-and-membership.html</guid>            <pubDate>Thu, 09 Apr 2009 12:00:00 GMT</pubDate>           <category>Blog post</category></item><item> <title>Confusion about what Relate+ is</title>            <link>http://feedproxy.google.com/~r/TomStenius/~3/kxHaDL94680/confusion-about-what-relate-is.html</link>            <description>&lt;p&gt;Ever since the &lt;a href=&quot;http://world.episerver.com/en/Get-Started/Start-Developing-with-EPiServer-Community-and-Relate-/&quot;&gt;Relate+&lt;/a&gt; package was released I have experienced that partners, customers and sometimes even &lt;a href=&quot;http://www.episerver.com/en/&quot;&gt;EPiServer&lt;/a&gt; employees are a bit confused about what Relate+ really is from a technical point of view. Or maybe I should say that probably they are not confused, but they are using the Relate+ name in a confusing way. My idea here is to sort out once and for all what Relate+ is, and what Relate+ is not.&lt;/p&gt;  &lt;p&gt;First thing first; Relate+ is &lt;strong&gt;not&lt;/strong&gt; equal to &lt;a href=&quot;http://www.episerver.com/en/Products/EPiServer-Community/&quot;&gt;EPiServer Community&lt;/a&gt;. This is the most common misinterpretation. With that said, it’s best to also say Relate+ is &lt;strong&gt;not&lt;/strong&gt; equal to &lt;a href=&quot;http://www.episerver.com/en/Products/EPiServer-CMS-5/&quot;&gt;EPiServer CMS&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;&lt;span style=&quot;font-size:100%;&quot;&gt;What is Relate+ then? From a technical point of view Relate+ is set of templates, pretty much like the public templates for EPiServer CMS, built on top of EPiServer Community and EPiServer CMS. &lt;/span&gt;&lt;span style=&quot;font-size:100%;&quot;&gt;The templates are then bundled together with EPiServer Community and &lt;a href=&quot;http://www.episerver.com/en/Products/EPiServer-Mail/&quot;&gt;EPiServer Mail&lt;/a&gt; and sold as an add-on package to EPiServer CMS. The idea is to show off the greater part – not all – of the functions in EPiServer Community. This means that you can run a community site without Relate+. It also means that there are more functions in EPiServer Community besides those implemented in Relate+.&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;To summarize, Relate+ is a template package and not a separate product.&lt;/p&gt;  &lt;p&gt;&lt;a href=&quot;http://lh5.ggpht.com/_W2Im3e5-OCk/SdoW7PHqJSI/AAAAAAAAADI/g7X-Mta2ZoQ/s1600-h/RelatePlus_CMS_Community%5B5%5D.png&quot;&gt;&lt;img style=&quot;border: 0px none ; display: inline;&quot; title=&quot;RelatePlus_CMS_Community&quot; alt=&quot;RelatePlus_CMS_Community&quot; src=&quot;http://lh5.ggpht.com/_W2Im3e5-OCk/SdoW7gwcMvI/AAAAAAAAADM/wlHT3ldVHQ0/RelatePlus_CMS_Community_thumb%5B2%5D.png?imgmax=800&quot; border=&quot;0&quot; height=&quot;224&quot; width=&quot;406&quot; /&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&quot;1&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/4028573941970551711-7002682131812073824?l=blog.tomstenius.com&quot; alt=&quot;&quot; /&gt;&lt;/div&gt;&lt;div class=&quot;feedflare&quot;&gt;
&lt;a href=&quot;http://feeds.feedburner.com/~ff/TomStenius?a=_dZwmCe2quo:k3Y7YCnuvJA:V_sGLiPBpWU&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/TomStenius?i=_dZwmCe2quo:k3Y7YCnuvJA:V_sGLiPBpWU&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/TomStenius?a=_dZwmCe2quo:k3Y7YCnuvJA:qj6IDK7rITs&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/TomStenius?d=qj6IDK7rITs&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/TomStenius?a=_dZwmCe2quo:k3Y7YCnuvJA:gIN9vFwOqvQ&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/TomStenius?i=_dZwmCe2quo:k3Y7YCnuvJA:gIN9vFwOqvQ&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/TomStenius?a=_dZwmCe2quo:k3Y7YCnuvJA:7Q72WNTAKBA&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/TomStenius?d=7Q72WNTAKBA&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src=&quot;http://feeds.feedburner.com/~r/TomStenius/~4/_dZwmCe2quo&quot; height=&quot;1&quot; width=&quot;1&quot; /&gt;&lt;div class=&quot;feedflare&quot;&gt;
&lt;a href=&quot;http://feeds.feedburner.com/~ff/TomStenius?a=8iQOo2CLsLE:k3Y7YCnuvJA:V_sGLiPBpWU&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/TomStenius?i=8iQOo2CLsLE:k3Y7YCnuvJA:V_sGLiPBpWU&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/TomStenius?a=8iQOo2CLsLE:k3Y7YCnuvJA:qj6IDK7rITs&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/TomStenius?d=qj6IDK7rITs&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/TomStenius?a=8iQOo2CLsLE:k3Y7YCnuvJA:gIN9vFwOqvQ&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/TomStenius?i=8iQOo2CLsLE:k3Y7YCnuvJA:gIN9vFwOqvQ&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/TomStenius?a=8iQOo2CLsLE:k3Y7YCnuvJA:7Q72WNTAKBA&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/TomStenius?d=7Q72WNTAKBA&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src=&quot;http://feeds.feedburner.com/~r/TomStenius/~4/8iQOo2CLsLE&quot; height=&quot;1&quot; width=&quot;1&quot; /&gt;&lt;div class=&quot;feedflare&quot;&gt;
&lt;a href=&quot;http://feeds.feedburner.com/~ff/TomStenius?a=kxHaDL94680:k3Y7YCnuvJA:V_sGLiPBpWU&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/TomStenius?i=kxHaDL94680:k3Y7YCnuvJA:V_sGLiPBpWU&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/TomStenius?a=kxHaDL94680:k3Y7YCnuvJA:qj6IDK7rITs&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/TomStenius?d=qj6IDK7rITs&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/TomStenius?a=kxHaDL94680:k3Y7YCnuvJA:gIN9vFwOqvQ&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/TomStenius?i=kxHaDL94680:k3Y7YCnuvJA:gIN9vFwOqvQ&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/TomStenius?a=kxHaDL94680:k3Y7YCnuvJA:7Q72WNTAKBA&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/TomStenius?d=7Q72WNTAKBA&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src=&quot;http://feeds.feedburner.com/~r/TomStenius/~4/kxHaDL94680&quot; height=&quot;1&quot; width=&quot;1&quot; /&gt;</description>            <guid>http://feedproxy.google.com/~r/TomStenius/~3/kxHaDL94680/confusion-about-what-relate-is.html</guid>            <pubDate>Mon, 06 Apr 2009 16:18:00 GMT</pubDate>           <category>Blog post</category></item></channel>
</rss>