<?xml version="1.0" encoding="utf-8"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><atom:link href="http://oshyn.com/RSSRetrieve.aspx?ID=2435&amp;Type=RSS20" rel="self" type="application/rss+xml" /><title>Web Content Management</title><description>Welcome to Oshyn’s Web Content Management Blog where our experts discuss the latest developments and best practices in the Content Management industry with a focus on several leading platforms: Drupal, EPiServer, Jahia, Open Text and Sitecore.</description><link>http://oshyn.com/</link><lastBuildDate>Sat, 19 May 2012 09:57:05 GMT</lastBuildDate><docs>http://backend.userland.com/rss</docs><generator>RSS.NET: http://www.rssdotnet.com/</generator><item><title>Introduction to Jahia's RSS Social Component Module</title><description>&lt;div class="wiki-content"&gt;
&lt;p&gt;&lt;img alt="" src="/blogResources/AlexandraBarcelona/Social-image2_250.png" style="border-width: 0px; border-style: solid; -moz-border-top-colors: none; -moz-border-right-colors: none; -moz-border-bottom-colors: none; -moz-border-left-colors: none; -moz-border-image: none; float: right; margin-left: 6px;" /&gt;When it comes to developing your own web
content application, website or professional web application, there are
many CMS platforms (both licensed and Open Source) that you can choose
from. However, I think that Jahia xCM is a great tool for this type of
project.&lt;/p&gt;
&lt;p&gt;What makes Jahia xCM a good choice? The awesome Java
Technology&amp;nbsp;Platform it uses as base technology and the list of features
available for administrators, developers and editors are just some of
the reasons. Comparing Jahia to other CMS platforms can get cumbersom,
but I think one powerful feature in particular makes it stand out: its
modular architecture.&lt;/p&gt;
&lt;h3 id="IntroductiontoJahiasRSSSocialComponentModule-Modules"&gt;Modules&lt;/h3&gt;
&lt;p&gt;On the Jahia website, there is documentation about &lt;a rel="nofollow" class="external-link" href="https://www.jahia.com/cms/home/community/documentation/modules-list.html"&gt;what modules are&lt;/a&gt; and how to build and work with them:&lt;em&gt;&lt;span style="color: #333333;"&gt;
"Each module is equivalent to a &amp;ldquo;plug-in&amp;rdquo; which extends the
functionality of Jahia and manages one or several specific business
case."&amp;nbsp;&lt;/span&gt;&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;It's that simple. A module is a piece of
software you can build and deploy to accomplish with a specific
requirement on your website or web application. This is really
interesting, specially for architects and developers, because it
represents the solution for most of the complex requirements on a
project.&lt;/p&gt;
&lt;h3 id="IntroductiontoJahiasRSSSocialComponentModule-DisplayexternalRSSfeed"&gt;Display external RSS feed&lt;/h3&gt;
&lt;p&gt;Jahia
xCM comes with a great list of modules that are comparable to other CMS
platforms on the market. Those modules are classified under several
categories (this is really well documented on provided link). Here I'll
go through the features of a specific module found into the "Social
Components" category: "Display external RSS feed".&lt;/p&gt;
&lt;p&gt;As the name
implies, this module is an RSS feed client that displays content from
any public access source. As we can expect, there are some basic
attributes to configure the behavior of this module:&lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;RSS feed URL: the URL of the RSS feed source.&lt;/li&gt;
    &lt;li&gt;&lt;span style="color: #333333;"&gt;Number of entries per pages:&amp;nbsp;This attribute controls how many feed items you want to display. This is not related to pagination.&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;div&gt;Let's go with a sample to see the module working using the integration environment described here [link to previous post]):&lt;/div&gt;
&lt;ol&gt;
    &lt;li&gt;&lt;span style="color: #333333;"&gt;First
    let's create a new project on Jahia xCM 6.6 using the system templates
    (I called it test-project). This will let us start from scratch without
    any template or CSS issue. &lt;/span&gt;&lt;/li&gt;
    &lt;li&gt;&lt;span style="color: #333333;"&gt;Add a page under the Home using the "simple" template (I called it rss_client).&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;span style="color: #333333;"&gt;The project should look like this on edit mode:&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="color: #333333;"&gt;&lt;img alt="" src="/blogResources/AlexandraBarcelona/Jahia RSS feed tool screenshot 1.png" style="border: 0px solid; width: 500px; height: 246px;" /&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/p&gt;
&lt;h3 id="IntroductiontoJahiasRSSSocialComponentModule-Makeamoduleavailableforaproject"&gt;&lt;span style="color: #333333;"&gt;Make a module available for a project&lt;/span&gt;&lt;/h3&gt;
&lt;p&gt;&lt;span&gt;All
the modules deployed into the Jahia xCM host (deployed [link to a post
about deploying modules]) can be used on all the projects hosted there,
but since version 6.6 of Jahia xCM modules are not "available" by
default for all projects. This means if you need a specific module
(provided by Jahia xCM or deployed by you), you need to make it
available for the project. &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;This can be done two ways:&lt;/span&gt;&lt;/p&gt;
&lt;ol&gt;
    &lt;li&gt;On
    the project creation process, there is a new step where you can select
    the module or modules that you want to activate for the new project.&lt;/li&gt;
    &lt;li&gt;In
    case of existent projects you can make a module available using the
    Studio UI just deploying the specific module. This works the same as
    when you need to deploy a template set to a specific project after doing
    modifications.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;In our case, we need to deploy the module Jahia RSS Feeds (1.2) on the test_project:&lt;/p&gt;
&lt;p&gt;&lt;img alt="" src="/blogResources/AlexandraBarcelona/Jahia RSS feed tool screenshot 2.png" style="border: 0pt none;" /&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 id="IntroductiontoJahiasRSSSocialComponentModule-Usingthemodule"&gt;
&lt;/h3&gt;
&lt;p&gt;&lt;span style="font-size: 12px;"&gt;&lt;/span&gt;&lt;/p&gt;
&lt;h3 id="IntroductiontoJahiasRSSSocialComponentModule-Usingthemodule"&gt;Using the module&lt;/h3&gt;
&lt;div&gt;Once
the module is available for the test_project, we can add it into the
specific area we want. For this sample we're going to use the "listA"
content area (see nextimage) to add the module:&lt;/div&gt;
&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;&lt;img alt="" style="border: 0px solid; width: 500px; height: 362px;" src="/blogResources/AlexandraBarcelona/Jahia RSS feed tool screenshot 3.png" /&gt;&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;&lt;/div&gt;
&lt;div&gt;&lt;/div&gt;
&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;We need to define the values for the module:&lt;/div&gt;
&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;&lt;/div&gt;
&lt;div&gt;&lt;img alt="" style="border: 0pt none;" src="/blogResources/AlexandraBarcelona/Jahia RSS feed tool screenshot 4.png" /&gt;&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;As&amp;nbsp;the&amp;nbsp;result of this process, we should see the two first items of the RSS feed displayed into the page area:&lt;/div&gt;
&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;&lt;img alt="" style="border: 0px solid; width: 500px; height: 360px;" src="/blogResources/AlexandraBarcelona/Jahia RSS feed tool screenshot 5.png" /&gt;&lt;/div&gt;
&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="wiki-content"&gt;
&lt;/div&gt;
</description><link>http://oshyn.com/RSSRetrieve.aspx?ID=2435&amp;A=Link&amp;ObjectID=223604&amp;ObjectType=56&amp;O=http%253a%252f%252foshyn.com%252f_blog%252fWeb_Content_Management%252fpost%252fIntroduction_to_Jahias_RSS_Social_Component_Module%252f</link><guid isPermaLink="true">http://oshyn.com/_blog/Web_Content_Management/post/Introduction_to_Jahias_RSS_Social_Component_Module/</guid><pubDate>Wed, 16 May 2012 16:17:00 GMT</pubDate></item><item><title>Using the Jahia Admin Tool</title><description>&lt;p&gt;&lt;img alt="" src="/blogResources/AlexandraBarcelona/Code Maintenance_225.jpg" style="border-width: 0px; border-style: solid; -moz-border-top-colors: none; -moz-border-right-colors: none; -moz-border-bottom-colors: none; -moz-border-left-colors: none; -moz-border-image: none; float: right; margin-left: 6px;" /&gt;Working on Jahia xCM projects as a developer requires good
administrative knowledge of the CMS. If you have experience on different
CMS systems then you know what I'm talking about. As a developer, there
are some scenarios where you need to perform tasks like quickly
removing project content, testing a new custom functionality over the
project content structure, testing custom queries over the projects
content, etc.&lt;/p&gt;
&lt;p&gt;On Jahia xCM, developers&amp;nbsp;and administrator have
a&amp;nbsp;powerful&amp;nbsp;tool called "Jahia Admin Tool". This is a web application
that is configured on the &lt;span style="color: #000000;"&gt;"&lt;a href="http://oshyn.com/_blog/Web_Content_Management/post/Installation_Tips_for_a_Jahia_Setup_on_Linux_OS/" title="Installation Tips for a Jahia Set up on Linux"&gt;installation procedure&lt;/a&gt;" &lt;/span&gt;(installation asks for a password for this tool) and is available under
the Jahia web application context used on the installation. If your
Jahia web application context is "/", the tool will be on "/tool" web
context.&lt;/p&gt;
&lt;p&gt;This application has a lot of interesting features, below is a screenshot of the application menu:&lt;/p&gt;
&lt;p&gt;&lt;img alt="Jahia Tools Area" style="border: 0px solid; width: 500px; height: 292px;" src="/blogResources/AlexandraBarcelona/Jahia Tools Area (Jahia 6.6.0).png" /&gt;&lt;/p&gt;
&lt;p&gt;The
menu of the main page is self descriptive in that the items are grouped
under categories that guide administrators on the specific tasks
available. For example, if the task you're looking for is about getting
system information or maybe forcing the garbage collector process then
you can go to "System and&amp;nbsp;maintenance" category.&lt;/p&gt;
&lt;p&gt;As we're focused on&amp;nbsp;developers&amp;nbsp;tasks we will start checking the "JCR Data and Rendering-&amp;gt;JCR repository browser" option.&lt;/p&gt;
&lt;p&gt;There are two tasks where I used the Admin Tool and got great results:&lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;Navigate the JCR repository of a specific project&lt;/li&gt;
    &lt;li&gt;Quickly remove content from the JSR repositories (default and live)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The
first one is really important if you're trying to list the properties
of a specific content node on a project. When you are creating JCR
queries (here a link to JCR queries post) most of the times you need to
build queries over content nodes of the projects that inherits from
Jahia xCM provided content nodes (eg: most of the content nodes inherits
from jnt:content).&lt;/p&gt;
&lt;p&gt;If the parent content nodes already defined a
specific attribute, then your new content node doesn't defines the
attribute again, so you need to know the available attributes your new
content node has and then use the attributes on a query.&lt;/p&gt;
&lt;p&gt;Here is
where the JCR repository browser helps, looking into a content node
definition without checking into source code. Let's see the information
available for a content node I created. ont:testmodule1:&lt;/p&gt;
&lt;p&gt;&lt;img alt="" style="border: 0px solid; width: 500px; height: 609px;" src="/blogResources/AlexandraBarcelona/Jahia Admin tool image 2.png" /&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;All
the content nodes are listed under "/jcr:system/jcr:NodeTypes/" path,
so if you know the content node you want to see, just add into this path
and the browser will find and display all its content definition for
you. The info includes the child nodes if there are any and the
supertype so you can check the parent node's information browse into the
node using the links.&lt;/p&gt;
&lt;p&gt;The second task is more common: delete content.&lt;/p&gt;
&lt;p&gt;If
you understand how Jahia uses two JCR repositories "default" and
"live", the publication of content, and you want to remove content from
each one of the JCR repositories, then the Admin Tool will be very
helpful for you. If you want you delete a single page from the project
content (default or live) then the editor mode will be fine, but if you
want to remove a lot of content or even all "live" repository content
then the editor mode doesn't help much.&lt;/p&gt;
&lt;p&gt;For this case you can go
to the JCR browser and find the content of the specific project using
this path: "/sites/$projectName" and the browser will show you the
project existent content.&lt;/p&gt;
&lt;p&gt;Two important things before continue:&lt;/p&gt;
&lt;ol&gt;
    &lt;li&gt;You can switch between the default and live repository using the link on the upper area of the administration tool:&lt;/li&gt;
    &lt;li&gt;&lt;img alt="" style="border: 0px solid;" src="/blogResources/AlexandraBarcelona/Jahia Admin tool image 3.png" /&gt;&lt;br /&gt;
    &lt;img alt="" data-image-src="/download/attachments/17762805/Screenshot+from+2012-04-02+16%3A32%3A33.png?version=1&amp;amp;modificationDate=1333402535000" src="http://confluence.oshyn.com/download/attachments/17762805/Screenshot from 2012-04-02 16:32:33.png?version=1&amp;amp;modificationDate=1333402535000" class="confluence-embedded-image" /&gt;&lt;/li&gt;
    &lt;li&gt;You need to activate the actions on the JCR browser, this option is on the upper right area:&lt;/li&gt;
    &lt;li&gt;&lt;img alt="" style="border: 0pt none;" src="/blogResources/AlexandraBarcelona/Jahia Admin tool image 4.png" /&gt;&lt;br /&gt;
    &lt;img alt="" data-image-src="/download/attachments/17762805/Screenshot+from+2012-04-02+16%3A33%3A18.png?version=1&amp;amp;modificationDate=1333403396000" src="http://confluence.oshyn.com/download/attachments/17762805/Screenshot from 2012-04-02 16:33:18.png?version=1&amp;amp;modificationDate=1333403396000" class="confluence-embedded-image" /&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;So
if the goal is to delete content from the "live" repository we can
switch to live and select the delete option over the node or nodes we
want to delete. This action will be applied recursively, so all child
nodes will be deleted from the repository.&lt;/p&gt;
&lt;p&gt;The show actions will
display more options than delete content, you can use this to export
(xml, zip format) or to rename a specific node.&lt;/p&gt;
&lt;p&gt;I hope you will find a lot more of tasks where the admin tool becomes a plus.&lt;/p&gt;
</description><link>http://oshyn.com/RSSRetrieve.aspx?ID=2435&amp;A=Link&amp;ObjectID=223602&amp;ObjectType=56&amp;O=http%253a%252f%252foshyn.com%252f_blog%252fWeb_Content_Management%252fpost%252fUsing_the_Jahia_Admin_Tool%252f</link><guid isPermaLink="true">http://oshyn.com/_blog/Web_Content_Management/post/Using_the_Jahia_Admin_Tool/</guid><pubDate>Mon, 14 May 2012 16:09:00 GMT</pubDate></item><item><title>EPiServer Property Configuration with PageTypeBuilder</title><description>&lt;p&gt;&lt;img alt="Website Gears" style="border-width: 0px; border-style: solid; -moz-border-top-colors: none; -moz-border-right-colors: none; -moz-border-bottom-colors: none; -moz-border-left-colors: none; -moz-border-image: none; float: right; margin-left: 4px;" src="/blogResources/AlexandraBarcelona/Gears Square_175.png" longdesc="Property Configuration with PageTypeBuilder" /&gt;In my &lt;a href="http://oshyn.com/_blog/Web_Content_Management/post/Tab_Assignment_with_PageTypeBuilder"&gt;previous post&lt;/a&gt;, I talked about how to assign properties (fields) to tabs in EPiServer using PageTypeBuilder. Property types such as Drop Down Lists or the XHTML Editor usually need some additional configurations (such as what values to display/restrict in the drop down menu). This is usually done in the EPiServer Admin mode graphical interface. But in version 1.0 of PageTypeBuilder, this couldn't be done; you had to go to the Admin mode interface to do individual configurations manually, one-by-one, defeating the purpose of synchronizing the Page Types between environments automatically.&lt;/p&gt;
&lt;p&gt;Fortunately, PageTypeBuilder 2.0 introduced a mechanism to configure properties by implementing the PageTypeBuilder.IUpdatePropertySettings&amp;lt;T&amp;gt; interface. An Attribute class (i.e., that inherits from System.Attribute) must implement this interface. The "T" type in the generic IUpdatePropertySettings interface declaration must be an EPiServer property settings class, such as EPiServer.Web.PropertyControls.PropertySettings.MultipleOptionsListSettings or EPiServer.Editor.TinyMCE.TinyMCESettings.&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;The following example shows how to create a Drop Down List configuration class that defines the values that can be chosen from the list:&lt;/p&gt;
&lt;pre class="brush:csharp"&gt;public class ScrollSettingsIFrameAttribute : Attribute, IUpdatePropertySettings&amp;lt;MultipleOptionsListSettings&amp;gt;
{
  public int GetSettingsHashCode(MultipleOptionsListSettings settings)
  {
    return (settings.ListOptions != null ? settings.ListOptions.Count : 0);
  }

  public bool OverWriteExistingSettings
  {
    get { return true; }
  }

  public void UpdateSettings(MultipleOptionsListSettings settings)
  {
    Dictionary&amp;lt;string, string&amp;gt; options = new Dictionary&amp;lt;string, string&amp;gt;();
            
    options.Add("no", "no");
    options.Add("yes", "yes");
    options.Add("auto", "auto");

    settings.ListOptions = options;
  }
}
&lt;/pre&gt;
&lt;p&gt;
Once defined, the attribute class can be used in the declaration of a property in a Page Type class:
&lt;/p&gt;
&lt;pre class="brush:csharp"&gt;public class PageWithIFrame : TypedPageData
{
  //... Other property declarations ...
  
  [PageTypeProperty(
    EditCaption = "iFrame scroll bars",
    Type = typeof(PropertyDropDownList),
    SortOrder = 50)]
  [ScrollSettingsIFrame]
  public virtual string Scrolling { get; set; }
}
&lt;/pre&gt;
&lt;p&gt;
The following example configures the TinyMCE editor for XHTML properties to display the "formatting" drop down list in the toolbar, uses the stylesheet declaration in the project's "/css/style.css" for the styles drop down menu, and defines the size of the editor:
&lt;/p&gt;
&lt;pre class="brush:csharp"&gt;public class HtmlEditorSettingsAttribute : Attribute, IUpdatePropertySettings&amp;lt;TinyMCESettings&amp;gt;
{
  public int GetSettingsHashCode(TinyMCESettings settings)
  {
    return settings.Height + settings.Width;
  }

  public bool OverWriteExistingSettings
  {
    get { return true; }
  }

  public void UpdateSettings(TinyMCESettings settings)
  {
    int totalToolbars = settings.ToolbarRows.Count;
    ToolbarRow row = settings.ToolbarRows[totalToolbars - 1];
    row.Buttons.Add("formatselect");

    settings.ContentCss = "/css/style.css";
    settings.Height = 400;
    settings.Width = 615;
  }
}
&lt;/pre&gt;
&lt;p&gt;
Once defined, use the attribute in the declaration of a XHTML property in a Page Type class:
&lt;/p&gt;
&lt;pre class="brush:csharp"&gt;public class SubPage : BasePageType
{
  // ... Other property declarations ...

  [PageTypeProperty(
    EditCaption = "Body HTML",
    Type = typeof(PropertyXhtmlString),
    SortOrder = 22)]
  [HtmlEditorSettings]
  public virtual string Body { get; set; }
}
&lt;/pre&gt;
&lt;p&gt;
You can find information about the TinyMCE configurations by searching the web, since TinyMCE is a standard JS-based editor not developed by EPiServer.
&lt;/p&gt;
</description><link>http://oshyn.com/RSSRetrieve.aspx?ID=2435&amp;A=Link&amp;ObjectID=222794&amp;ObjectType=56&amp;O=http%253a%252f%252foshyn.com%252f_blog%252fWeb_Content_Management%252fpost%252fEPiServer_Property_Configuration_with_PageTypeBuilder%252f</link><guid isPermaLink="true">http://oshyn.com/_blog/Web_Content_Management/post/EPiServer_Property_Configuration_with_PageTypeBuilder/</guid><pubDate>Fri, 11 May 2012 15:51:00 GMT</pubDate></item><item><title>Sitecore Navigation Using Renderings</title><description>&lt;p class="p1"&gt;In a recent Sitecore project by Oshyn, I was given the task of creating main navigation and left categories navigation. I had to decide whether to build those navigations using either rendering or using a .NET user control.&lt;/p&gt;
&lt;p class="p1"&gt;
&lt;/p&gt;
&lt;p class="p1"&gt;&lt;span class="s1"&gt;The most common approach to building Sitecore navigation is rendering,&amp;nbsp;&lt;/span&gt;because of its performance and easy-to-build and deploy code. A sublayout using a user .NET control is also a good alternative; it is becoming more common in recent Sitecore versions to see navigations implemented with sublayouts. The benefit to use a sublayout is the ability to use c# code to manipulate nodes and its properties.&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p class="p1"&gt;The navigation menu I needed to develop was very straightforward and since I had the chance to start creating the nodes myself, I chose to build the main navigation and left navigation using rendering.&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p class="p1"&gt;The structure of the site is similar to this graph:&lt;/p&gt;
&lt;p&gt;&lt;img alt="" src="/blogResources/carlosAraujoPosts/SCimage001.jpg" style="border: 0px none;" /&gt;&lt;/p&gt;
&lt;p class="p1"&gt;
&lt;/p&gt;
&lt;p class="p1"&gt;Include in navigation (IncludeInNav),is channel page (IsChannelPage) and include in sitemap (IncludeInSitemap) are the properties that each page node will need to have. The first property tells if a page node is eligible for the top navigation. The second property tells if a page node is the channel page (a channel page is the main page in a category hierarchy), and the third option is used for creating a sitemap (I will talk about creating a sitemap in a future post).&lt;/p&gt;
&lt;p class="p1"&gt;
&lt;/p&gt;
&lt;p class="p1"&gt;On the rendering code, we need to set a home variable. This home variable represents the root node or home node. Starting from the home variable, the code will extract all child nodes that meet the IncludeInNav property and the IsChannelPage to true. Now that we have a set of nodes that are channel pages (categories), we proceed to iterate on every one and print the appropriate HTML for that node. For each category, we also execute a query to find the children of each category.&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p class="p1"&gt;To do this on every iteration of the categories nodes, we query again down the subtree for nodes that meet the IncludeInNav parameter to true. For each of the retrieved set we print the appropriate HTML.&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p class="p1"&gt;As you can see, creating the top navigation structure using rendering is a very straightforward approach. &amp;nbsp;It loads very fast, which I was very please with.&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p class="p1"&gt;Here are some important lines of code that you might find useful.&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p class="p1"&gt;Selecting home node:&lt;/p&gt;
&lt;p&gt;&lt;img alt="" src="/blogResources/carlosAraujoPosts/SCimage002.jpg" style="border: 0px solid; width: 500px; height: 23px;" /&gt;&lt;/p&gt;
&lt;p class="p1"&gt;
&lt;/p&gt;
&lt;p class="p1"&gt;Iterating through categories nodes:&lt;/p&gt;
&lt;p&gt;&lt;img alt="" src="/blogResources/carlosAraujoPosts/SCimage003.png" style="border: 0px solid; width: 500px; height: 15px;" /&gt;&lt;/p&gt;
</description><link>http://oshyn.com/RSSRetrieve.aspx?ID=2435&amp;A=Link&amp;ObjectID=222397&amp;ObjectType=56&amp;O=http%253a%252f%252foshyn.com%252f_blog%252fWeb_Content_Management%252fpost%252fSitecore_Navigation_Using_Renderings%252f</link><guid isPermaLink="true">http://oshyn.com/_blog/Web_Content_Management/post/Sitecore_Navigation_Using_Renderings/</guid><pubDate>Mon, 07 May 2012 15:47:00 GMT</pubDate></item><item><title>EPiServer Tab Assignment with PageTypeBuilder</title><description>&lt;p&gt;&lt;img alt="EPiServer Page Type Tab" style="border-width: 0px; border-style: solid; -moz-border-top-colors: none; -moz-border-right-colors: none; -moz-border-bottom-colors: none; -moz-border-left-colors: none; -moz-border-image: none; float: right; margin-left: 3px;" src="/blogResources/AlexandraBarcelona/EPiServer-Tab_150.png" /&gt;In my &lt;a href="http://oshyn.com/_blog/Web_Content_Management/post/EPiServer_Page_Type_Hierarchy_Using_PageTypeBuilder"&gt;previous post&lt;/a&gt;, I demonstrated how to implement a hierarchical inheritance structure for Page Types in EPiServer using PageTypeBuilder. But all the properties are created under the default &amp;ldquo;Content&amp;rdquo; tab in Edit Mode. One of EPiServer&amp;rsquo;s nicest features is the ability to organize properties into tabs; to avoid cluttering the editor&amp;rsquo;s interface, group related properties and assign user permissions to a group of properties.&lt;/p&gt;
&lt;p&gt;PageTypeBuilder allows you to create tabs, and assign properties to them. Creating a tab, is as simple as creating a class that inherits from PageTypeBuilder.Tab:&lt;/p&gt;
&lt;pre class="brush:csharp"&gt;public class Promotions : PageTypeBuilder.Tab
{
  public override string Name
  {
    get { return "Promotions"; }
  }

  public override AccessLevel RequiredAccess
  {
    get { return AccessLevel.Edit; }
  }

  public override int SortIndex
  {
    get { return 20; }
  }
}

&lt;/pre&gt;
&lt;ul&gt;
    &lt;li&gt;The Name property is the text you want to display on the tab. &lt;/li&gt;
    &lt;li&gt;The RequiredAccess property allows you to assign user permissions to the tab by using EPiServer.Security.AccessLevel enum.&lt;/li&gt;
    &lt;li&gt;The SortIndex property allows you to position the tab in the Editor pane.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;To assign properties in any Page Type to a tab, include the &amp;ldquo;Tab&amp;rdquo; parameter in the PageTypeProperty attribute declaration:
&lt;/p&gt;
&lt;pre class="brush:csharp"&gt;public class HomePage : BasePageType
{
  [PageTypeProperty(
    EditCaption = "Promotion Image",
    Type = typeof(PropertyImageUrl),
    Tab = typeof(Promotions),
    SortIndex = 40)]
  public virtual string PromoImage { get; set; }

  [PageTypeProperty(
    EditCaption = "Promotion Link",
    Type = typeof(PropertyPageReference),
    Tab = typeof(Promotions),
    SortIndex = 41)]
  public virtual PageReference PromoLink { get; set; }
}
&lt;/pre&gt;
&lt;p&gt;
When structuring your project, make sure to locate your Tab classes in a namespace that is &amp;ldquo;global&amp;rdquo; to all Page Type classes.
&lt;/p&gt;
&lt;p&gt;
In an upcoming post, I&amp;rsquo;ll talk about how to configure special properties, such as TinyMCE options for XHTML fields.
&lt;/p&gt;
</description><link>http://oshyn.com/RSSRetrieve.aspx?ID=2435&amp;A=Link&amp;ObjectID=222335&amp;ObjectType=56&amp;O=http%253a%252f%252foshyn.com%252f_blog%252fWeb_Content_Management%252fpost%252fTab_Assignment_with_PageTypeBuilder%252f</link><guid isPermaLink="true">http://oshyn.com/_blog/Web_Content_Management/post/Tab_Assignment_with_PageTypeBuilder/</guid><pubDate>Thu, 03 May 2012 16:35:00 GMT</pubDate></item><item><title>Introduction to Jahia JCR Query Languages</title><description>&lt;p&gt;&lt;img alt="" style="border: 0px solid; float: left; margin-right: 6px;" src="/blogResources/AlexandraBarcelona/Flow chart_250.jpg" /&gt;When you come to &lt;a href="http://oshyn.com/solutions/jahia-web-content-management-integration.html"&gt;Jahia xCM&lt;/a&gt; and start working on a website you will
find that one of the core technologies behind the CMS is the Apache
Jackrabbit project. This is the most mature implementation of the JCR
specification available in the open source context market.&lt;/p&gt;
&lt;p&gt;If you
want to achieve good results with the functionalities implemented on
your Jahia projects, then&amp;nbsp;you will need to use the JCR API related
features of the CMS. This will let you build custom navigation, content
lists and solve complex requirements that demand advanced management of
the project content.&lt;/p&gt;
&lt;h3 id="IntroductiontoJCRquerylanguagesonJahia-WhatsJCR"&gt;What's JCR?&lt;/h3&gt;
&lt;p&gt;If you're unfamiliar with JCR, a good place to find our more is the &lt;a rel="nofollow" class="external-link" href="http://en.wikipedia.org/wiki/Content_repository_API_for_Java"&gt;Wikipedia&lt;/a&gt;
page. Here you'll learn that JCR "is a specification for a Java
platform application programming interface (API) to access content
repositories in a uniform manner&lt;sup&gt;1&lt;/sup&gt;". On this page, along with
other information available online, you will find&amp;nbsp;definitions&amp;nbsp;for this
'specification' like:&amp;nbsp; content database, content relational database,
and some people even associate a JCR implementation with a kind of graph
database.&lt;/p&gt;
&lt;p&gt;There is another definition available for JCR that is
not covered in this post, but is still important in keeping with the
Apache Jackrabbit definition:&amp;nbsp;&lt;em&gt;&lt;strong&gt;"&lt;span style="color: #000000;"&gt;A
content repository is a hierarchical content store with support for
structured and unstructured content, full text search, versioning,
transactions, observation, and more."&lt;/span&gt;&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Here, I'll focus on one part&amp;nbsp; of this technical specification (JCR specification&amp;nbsp;&lt;a rel="nofollow" class="external-link" href="http://jcp.org/en/jsr/detail?id=283"&gt;JCR-283&lt;/a&gt;) : queries. More specifically, queries supported in Jahia xCM.&lt;/p&gt;
&lt;p&gt;Since Jahia xCM is built over the &lt;a rel="nofollow" class="external-link" href="http://jackrabbit.apache.org/"&gt;Apache Jackrabbit&lt;/a&gt;
project, most of the features of this implementation API are available
on Jahia. There is one exception about the support of XPATH as a valid
query language used with the JCR repository: the technical specification
deprecated its use but Jahia xCM still supports it.&lt;/p&gt;
&lt;h3 id="IntroductiontoJCRquerylanguagesonJahia-SupportedQuerylanguages"&gt;Supported Query languages&lt;/h3&gt;
&lt;p&gt;Well lets start listing the supported query languages of the JCR specification and some key concepts.&lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;&lt;span style="color: #333333;"&gt;Abstract
    Query Model: This is the core implementation of the logic that brings
    to the repository the "queries" as a feature. This means all the queries
    supported by the JCR implementation will be processed here no matter
    what query language is used.&lt;/span&gt;&lt;/li&gt;
    &lt;li&gt;&lt;span style="color: #333333;"&gt;JCR-SQL2:
    This query language lets the users (developers) write query sentences
    similar to SQL language to build the queries over the
    JCR&amp;nbsp;repository&amp;nbsp;content nodes.&lt;/span&gt;&lt;/li&gt;
    &lt;li&gt;JCR Java Query Object Model
    (JCR-JQOM): This is an API that lets developers to build the queries
    into Java code and&amp;nbsp;exposes&amp;nbsp;the results as objects trees. If you are
    familia with the JPA specification for persistence, this will be more
    like a Object Query Language.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;To illustrate a little about each of the languages lets see how a general query is structured on each one:&lt;/p&gt;
&lt;p style="margin-left: 0px;"&gt;&lt;strong&gt;JCR-SQL2&lt;/strong&gt;&lt;/p&gt;
&lt;div style="border-width: 1px;" class="code panel"&gt;
&lt;div class="codeContent panelContent"&gt;
&lt;div&gt;
&lt;div class="syntaxhighlighter nogutter  sql" id="highlighter_171330"&gt;
&lt;table cellspacing="0" cellpadding="0" border="0"&gt;
    &lt;tbody&gt;
        &lt;tr&gt;
            &lt;td class="code"&gt;
            &lt;div title="Hint: double-click to select code" class="container"&gt;
            &lt;div class="line number1 index0 alt2"&gt;&lt;code class="sql string"&gt;'SELECT'&lt;/code&gt; &lt;code class="sql plain"&gt;columns&lt;/code&gt;&lt;/div&gt;
            &lt;div class="line number2 index1 alt1"&gt;&lt;code class="sql string"&gt;'FROM'&lt;/code&gt; &lt;code class="sql plain"&gt;Source&lt;/code&gt;&lt;/div&gt;
            &lt;div class="line number3 index2 alt2"&gt;&lt;code class="sql plain"&gt;[&lt;/code&gt;&lt;code class="sql string"&gt;'WHERE'&lt;/code&gt; &lt;code class="sql keyword"&gt;Constraint&lt;/code&gt;&lt;code class="sql plain"&gt;]&lt;/code&gt;&lt;/div&gt;
            &lt;div class="line number4 index3 alt1"&gt;&lt;code class="sql plain"&gt;[&lt;/code&gt;&lt;code class="sql string"&gt;'ORDER BY'&lt;/code&gt; &lt;code class="sql plain"&gt;orderings]&lt;/code&gt;&lt;/div&gt;
            &lt;/div&gt;
            &lt;/td&gt;
        &lt;/tr&gt;
    &lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;&lt;strong&gt;JCR-JQOM&lt;/strong&gt;&lt;/p&gt;
&lt;div style="border-width: 1px;" class="code panel"&gt;
&lt;div class="codeContent panelContent"&gt;
&lt;div&gt;
&lt;div class="syntaxhighlighter nogutter  java" id="highlighter_960438"&gt;
&lt;table cellspacing="0" cellpadding="0" border="0"&gt;
    &lt;tbody&gt;
        &lt;tr&gt;
            &lt;td class="code"&gt;
            &lt;div title="Hint: double-click to select code" class="container"&gt;
            &lt;div class="line number1 index0 alt2"&gt;&lt;code class="java plain"&gt;QueryObjectModel obj = QueryObjectModelFactory.createQuery(&lt;/code&gt;&lt;/div&gt;
            &lt;div class="line number2 index1 alt1"&gt;&lt;code class="java spaces"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code class="java plain"&gt;Source source,&lt;/code&gt;&lt;/div&gt;
            &lt;div class="line number3 index2 alt2"&gt;&lt;code class="java spaces"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code class="java plain"&gt;Constraint constraint,&lt;/code&gt;&lt;/div&gt;
            &lt;div class="line number4 index3 alt1"&gt;&lt;code class="java spaces"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code class="java plain"&gt;Ordering[] orderings,&lt;/code&gt;&lt;/div&gt;
            &lt;div class="line number5 index4 alt2"&gt;&lt;code class="java spaces"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code class="java plain"&gt;Column[] columns);&lt;/code&gt;&lt;/div&gt;
            &lt;/div&gt;
            &lt;/td&gt;
        &lt;/tr&gt;
    &lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h3 id="IntroductiontoJCRquerylanguagesonJahia-BuildingQueries"&gt;Building Queries&lt;/h3&gt;
&lt;p&gt;As
I mentioned before, JCR repositories are designed to store content.
This content is stored into the repository as a "content node" which
means the repository needs to know about each type of node it will store
to be able to index nodes data. Once it indexes this data, it then
query nodes using that data or performs any internal operation over the
nodes information.&lt;/p&gt;
&lt;p&gt;Then the concept and definition of "Node Type"
become extremely important for the query editors as well as one of the
most powerful features of the JCR&amp;nbsp;repository. As a&amp;nbsp;consequence, on Jahia
xCM, this will be the base technology for a lot of conventional tasks
when implementing functionalities for a website. A good documentation
for this topic is available on the &lt;a href="http://jackrabbit.apache.org/"&gt;Apache Jackrabbit website&lt;/a&gt;, there you can learn about Node Type Definitions
creation, inheritance, constraints, etc.&lt;/p&gt;
&lt;p&gt;Let's start with a Node Type Definition for a specific type of content on a Jahia project: Page&lt;/p&gt;
&lt;div style="border-width: 1px;" class="code panel"&gt;
&lt;div class="codeContent panelContent"&gt;
&lt;div&gt;
&lt;div class="syntaxhighlighter nogutter  csharp" id="highlighter_98393"&gt;
&lt;table cellspacing="0" cellpadding="0" border="0"&gt;
    &lt;tbody&gt;
        &lt;tr&gt;
            &lt;td class="code"&gt;
            &lt;div title="Hint: double-click to select code" class="container"&gt;
            &lt;div class="line number1 index0 alt2"&gt;&lt;code class="csharp plain"&gt;Name:&amp;nbsp;jnt:page&lt;/code&gt;&lt;/div&gt;
            &lt;div class="line number2 index1 alt1"&gt;&lt;code class="csharp plain"&gt;Type:&amp;nbsp;nt:nodeType&lt;/code&gt;&lt;/div&gt;
            &lt;div class="line number3 index2 alt2"&gt;&lt;code class="csharp plain"&gt;Properties:&lt;/code&gt;&lt;/div&gt;
            &lt;div class="line number4 index3 alt1"&gt;&lt;code class="csharp spaces"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code class="csharp plain"&gt;jcr:hasOrderableChildNodes:&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code class="csharp keyword"&gt;true&lt;/code&gt;&lt;/div&gt;
            &lt;div class="line number5 index4 alt2"&gt;&lt;code class="csharp spaces"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code class="csharp plain"&gt;jcr:isMixin:&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code class="csharp keyword"&gt;false&lt;/code&gt;&lt;/div&gt;
            &lt;div class="line number6 index5 alt1"&gt;&lt;code class="csharp spaces"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code class="csharp plain"&gt;jcr:nodeTypeName:&amp;nbsp;&amp;nbsp;jnt:page&lt;/code&gt;&lt;/div&gt;
            &lt;div class="line number7 index6 alt2"&gt;&lt;code class="csharp spaces"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code class="csharp plain"&gt;jcr:mixinTypes:&amp;nbsp;[]&lt;/code&gt;&lt;/div&gt;
            &lt;div class="line number8 index7 alt1"&gt;&lt;code class="csharp plain"&gt;jcr:supertypes:&amp;nbsp;&lt;/code&gt;&lt;/div&gt;
            &lt;div class="line number9 index8 alt2"&gt;&lt;code class="csharp spaces"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code class="csharp plain"&gt;jmix:basemetadata&lt;/code&gt;&lt;/div&gt;
            &lt;div class="line number10 index9 alt1"&gt;&lt;code class="csharp spaces"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code class="csharp plain"&gt;jmix:hasTemplateNode&lt;/code&gt;&lt;/div&gt;
            &lt;div class="line number11 index10 alt2"&gt;&lt;code class="csharp spaces"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code class="csharp plain"&gt;jmix:navMenuItem&lt;/code&gt;&lt;/div&gt;
            &lt;div class="line number12 index11 alt1"&gt;&lt;code class="csharp spaces"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code class="csharp plain"&gt;jmix:nodenameInfo&lt;/code&gt;&lt;/div&gt;
            &lt;div class="line number13 index12 alt2"&gt;&lt;code class="csharp spaces"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code class="csharp plain"&gt;jmix:observable&lt;/code&gt;&lt;/div&gt;
            &lt;div class="line number14 index13 alt1"&gt;&lt;code class="csharp spaces"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code class="csharp plain"&gt;jmix:publication&lt;/code&gt;&lt;/div&gt;
            &lt;div class="line number15 index14 alt2"&gt;&lt;code class="csharp spaces"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code class="csharp plain"&gt;jmix:tagged&lt;/code&gt;&lt;/div&gt;
            &lt;div class="line number16 index15 alt1"&gt;&lt;code class="csharp spaces"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code class="csharp plain"&gt;mix:title&lt;/code&gt;&lt;/div&gt;
            &lt;div class="line number17 index16 alt2"&gt;&lt;code class="csharp spaces"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code class="csharp plain"&gt;nt:&lt;/code&gt;&lt;code class="csharp keyword"&gt;base&lt;/code&gt;&lt;/div&gt;
            &lt;/div&gt;
            &lt;/td&gt;
        &lt;/tr&gt;
    &lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;On the Node Type Definition for the Page&amp;nbsp;we can see the
list of properties and the list of super types this node inherits
properties from. Then if we want to use this node on a query, we can
write a sentence like:&lt;/p&gt;
&lt;div style="border-width: 1px;" class="code panel"&gt;
&lt;div class="codeContent panelContent"&gt;
&lt;div&gt;
&lt;div class="syntaxhighlighter nogutter  sql" id="highlighter_638261"&gt;
&lt;table cellspacing="0" cellpadding="0" border="0"&gt;
    &lt;tbody&gt;
        &lt;tr&gt;
            &lt;td class="code"&gt;
            &lt;div title="Hint: double-click to select code" class="container"&gt;
            &lt;div class="line number1 index0 alt2"&gt;&lt;code class="sql keyword"&gt;select&lt;/code&gt; &lt;code class="sql plain"&gt;* &lt;/code&gt;&lt;code class="sql keyword"&gt;from&lt;/code&gt; &lt;code class="sql plain"&gt;[jnt:page] &lt;/code&gt;&lt;code class="sql keyword"&gt;as&lt;/code&gt; &lt;code class="sql plain"&gt;page &lt;/code&gt;&lt;code class="sql keyword"&gt;order&lt;/code&gt; &lt;code class="sql keyword"&gt;by&lt;/code&gt; &lt;code class="sql plain"&gt;page.[jcr:lastModified] &lt;/code&gt;&lt;code class="sql keyword"&gt;desc&lt;/code&gt;&lt;/div&gt;
            &lt;/div&gt;
            &lt;/td&gt;
        &lt;/tr&gt;
    &lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;The result of this query will be a list of content nodes of type jntage and ordered by the jcr:lastmodified (Date) property value.&lt;/p&gt;
&lt;p&gt;Note that on this sample query we had used a specific content node (jntage)
and one inherited property of this content node (jcr:lastModified). You
can try to build the entire inheritance tree for jntage
to check all the node&amp;nbsp;properties&amp;nbsp;available for querying. Now you can
think about the power of queries when you need to build custom lists of
content on your project, like customized navigations for pages or lists
of specific components.&lt;/p&gt;
&lt;p&gt;One remarkable thing this sample shows to
us is the importance of the knowledge about the content Node Type
Definition (CND files on Jahia) of the Jahia Core API and the specific
project content created for the developers.&lt;/p&gt;
&lt;p&gt;I believe this is the most important and useful feature of the entire Jahia xCM.&lt;/p&gt;
&lt;p&gt;On
a future post I want to go deeper on more elaborated queries (JCR-SQL2
and JCR-JQOM) and the Jahia Admin Tool. A very useful feature of this
web application is a JCR browser where you can test your JCR queries.&lt;/p&gt;
&lt;p&gt;References:&lt;/p&gt;
&lt;p&gt;&lt;sup&gt;1&lt;/sup&gt; &lt;a rel="nofollow" class="external-link" href="http://en.wikipedia.org/wiki/Content_repository_API_for_Java"&gt;www.wikipedia.org&lt;/a&gt;&lt;/p&gt;
</description><link>http://oshyn.com/RSSRetrieve.aspx?ID=2435&amp;A=Link&amp;ObjectID=223580&amp;ObjectType=56&amp;O=http%253a%252f%252foshyn.com%252f_blog%252fWeb_Content_Management%252fpost%252fIntroduction_to_Jahia_JCR_Query_Languages%252f</link><guid isPermaLink="true">http://oshyn.com/_blog/Web_Content_Management/post/Introduction_to_Jahia_JCR_Query_Languages/</guid><pubDate>Thu, 19 Apr 2012 15:26:00 GMT</pubDate></item><item><title>Installation Tips for a Jahia Setup on Linux OS</title><description>&lt;p&gt;&lt;a href="http://oshyn.com/solutions/jahia-web-content-management-integration.html" title="Jahia Integration"&gt;&lt;img alt="Jahia Tips Checklist" style="border-width: 0px; border-style: solid; -moz-border-top-colors: none; -moz-border-right-colors: none; -moz-border-bottom-colors: none; -moz-border-left-colors: none; -moz-border-image: none; float: right; margin-left: 6px;" src="/blogResources/AlexandraBarcelona/Tips-checklist_200.png" /&gt;Jahia&lt;/a&gt; is an open source web content integration software that combines enterprise web content management with document management and portal features&lt;sup&gt;1&lt;/sup&gt;. The Jahia setup on a Linux (Debian GNU/Linux) server is simple.&lt;/p&gt;
&lt;p&gt;To start, read the Jahia xCM &lt;a href="http://www.jahia.com/cms/home/community/documentation.html"&gt;community&amp;nbsp;documentation&lt;/a&gt; as a first step to start testing your own CMS instance as a developer. The documentation has important tips and recommendations for developers and administrators to ensure the setup of your CMS instance will be quick and easy.&lt;/p&gt;
&lt;p&gt;For Jahia beginners,the community documentation and the Wiki (&lt;a href="http://www.jahia.com/community/documentation/jahiapedia-v6_6/index.html"&gt;Jahiapedia&lt;/a&gt;) content available on the Jahia website will be really helpful. Your first project creation, the introduction to basic concepts of the CMS, and the templates creation guidance will help you quickly start your first web content project with this CMS.&lt;/p&gt;
&lt;p&gt;The scope of this post is to show you the setup of the Jahia xCM on a Linux host using the command line mode of the installer. I&amp;rsquo;ll also go over how to check the basic configuration parameters and files that should be in place to start working with Jahia xCM V6.6.0.0.&lt;/p&gt;
&lt;p&gt;To start with the installation, we need to check the following system requirements:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;JDK (Java development kit) and Tomcat6 (Apache Servlet Container)&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;The Jahia xCM is a web application built over the Java Servlet Specification 2.4. This means it could be deployed on a JDK 1.5 and a servlet container that implements this specification like Tomcat 5.5.X; however, following project&amp;nbsp;recommendations&amp;nbsp;we will use JDK 6 and Tomcat6 for this setup.&lt;/p&gt;
&lt;p&gt;Install Java Development Kit v6 using the apt package manager:&lt;/p&gt;
&lt;table cellspacing="0" cellpadding="0" border="0"&gt;
    &lt;tbody&gt;
        &lt;tr&gt;
            &lt;td style="padding: 0in;"&gt;
            &lt;p&gt;&lt;span style="font-size: 10pt; font-family: courier new;"&gt;apt-get install&lt;/span&gt; &lt;span style="font-size: 10pt; font-family: courier new;"&gt;openjdk-6-jdk&lt;/span&gt; &lt;/p&gt;
            &lt;/td&gt;
        &lt;/tr&gt;
    &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;The apt will set all environment variables (JAVA_HOME, PATH) and the Java commands will be available and detectable by the Java applications on this host. On the terminal, you can check the installation by typing in "java -version" and you should see this command:&lt;/p&gt;
&lt;table cellspacing="0" cellpadding="0" border="0"&gt;
    &lt;tbody&gt;
        &lt;tr&gt;
            &lt;td style="padding: 0in;"&gt;
            &lt;p&gt;&lt;span style="font-size: 10pt; font-family: courier new;"&gt;java -version&lt;/span&gt; &lt;/p&gt;
            &lt;p&gt;&lt;span style="font-size: 12pt; font-family: times new roman,serif;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
            &lt;p&gt;&lt;span style="font-size: 10pt; font-family: courier new;"&gt;java version "1.6.0_18"&lt;/span&gt; &lt;/p&gt;
            &lt;p&gt;&lt;span style="font-size: 10pt; font-family: courier new;"&gt;OpenJDK Runtime Environment (IcedTea6 1.8.10) (6b18-1.8.10-0+squeeze2)&lt;/span&gt; &lt;/p&gt;
            &lt;p&gt;&lt;span style="font-size: 10pt; font-family: courier new;"&gt;OpenJDK 64-Bit Server VM (build 14.0-b16, mixed mode)&lt;/span&gt; &lt;/p&gt;
            &lt;/td&gt;
        &lt;/tr&gt;
    &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;Now we can install the Tomcat6 servlet container using the apt tool:&lt;/p&gt;
&lt;table cellspacing="0" cellpadding="0" border="0"&gt;
    &lt;tbody&gt;
        &lt;tr&gt;
            &lt;td style="padding: 0in;"&gt;
            &lt;p&gt;&lt;span style="font-size: 10pt; font-family: courier new;"&gt;apt-get install&lt;/span&gt; &lt;span style="font-size: 10pt; font-family: courier new;"&gt;tomcat6&lt;/span&gt; &lt;/p&gt;
            &lt;/td&gt;
        &lt;/tr&gt;
    &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;Again, the apt will take care of the entire setup and default installation (environment variables and system V init scripts) for the servlet container as an OS service.&lt;/p&gt;
&lt;p&gt;That's all, Now our Linux OS is ready for deployment.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Jahia xCM Installation&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;The Jahia community installer is available for Linux/OSX on the community &lt;a href="http://confluence.oshyn.com/www.jahia.com/cms/home/download.html"&gt;downloads&lt;/a&gt;&amp;nbsp;page as well as &lt;a href="http://www.jahia.com/cms/home/community/documentation/quick-start/download-and-install.html"&gt;install instructions&lt;/a&gt;&amp;nbsp;for the Java graphical installer. To get the installer, use wget/curl tools to get the distributed jar file:&lt;/p&gt;
&lt;table cellspacing="0" cellpadding="0" border="0"&gt;
    &lt;tbody&gt;
        &lt;tr&gt;
            &lt;td style="padding: 0in;"&gt;
            &lt;p&gt;&lt;span style="font-size: 10pt; font-family: courier new;"&gt;wget --no-check-certificate https://www.jahia.com/public/jahia-6.6.0/bin/Jahia_xCM_v6.6.0.0_r40429.jar&lt;/span&gt; &lt;/p&gt;
            &lt;/td&gt;
        &lt;/tr&gt;
    &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;To start the installer on the terminal type, use:&lt;/p&gt;
&lt;table cellspacing="0" cellpadding="0" border="0"&gt;
    &lt;tbody&gt;
        &lt;tr&gt;
            &lt;td style="padding: 0in;"&gt;
            &lt;p&gt;&lt;span style="font-size: 10pt; font-family: courier new;"&gt;java -jar Jahia_xCM_v6.6.0.0_r40429.jar&lt;/span&gt; &lt;/p&gt;
            &lt;/td&gt;
        &lt;/tr&gt;
    &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;This will start the installer on command line and you will see all the steps described on the graphical installer. On command line format, then you can follow the same steps. The difference here is that we want to deploy Jahia as a web application on our previously installed Tomcat6 and avoid using the bundled Tomcat that comes with the default installation.&lt;/p&gt;
&lt;p&gt;To proceed with the command line installation, follow these steps:&lt;/p&gt;
&lt;table cellspacing="0" cellpadding="0" border="0"&gt;
    &lt;tbody&gt;
        &lt;tr&gt;
            &lt;td style="padding: 0in;"&gt;
            &lt;p&gt;&lt;span style="font-size: 10pt; font-family: courier new;"&gt;Welcome to the installation of Jahia xCM 6.6.0.0!&lt;/span&gt; &lt;/p&gt;
            &lt;p&gt;&lt;span style="font-size: 10pt; font-family: courier new;"&gt;&amp;nbsp;- Jahia Solutions Group SA &amp;lt;info@jahia.com&amp;gt;&lt;/span&gt; &lt;/p&gt;
            &lt;p&gt;&lt;span style="font-size: 10pt; font-family: courier new;"&gt;The homepage is&lt;/span&gt; &lt;span style="font-size: 10pt; font-family: courier new;"&gt;at: http://www.jahia.com&lt;/span&gt; &lt;/p&gt;
            &lt;p&gt;&lt;span style="font-size: 10pt; font-family: courier new;"&gt;[license information]&lt;/span&gt; &lt;/p&gt;
            &lt;p&gt;&lt;span style="font-size: 10pt; font-family: courier new;"&gt;Select target path =&amp;gt; usr/local/Jahia_xCM_v6.6.0.0&lt;/span&gt; &lt;/p&gt;
            &lt;p&gt;&lt;span style="font-size: 10pt; font-family: courier new;"&gt;Here you can choose your preferred installation type =&amp;gt; Custom install (advanced)&lt;/span&gt; &lt;/p&gt;
            &lt;p&gt;&lt;span style="font-size: 10pt; font-family: courier new;"&gt;Select the installation type you want to perform: =&amp;gt; Deselect Add Apache Tomcat&lt;/span&gt; &lt;/p&gt;
            &lt;p&gt;&lt;span style="font-size: 10pt; font-family: courier new;"&gt;Choose your preferred database connection type =&amp;gt; Use a standalone DBMS&lt;/span&gt; &lt;/p&gt;
            &lt;p&gt;&lt;span style="font-size: 10pt; font-family: courier new;"&gt;Choose your DBMS type =&amp;gt; MySQL 5.x&lt;/span&gt; &lt;/p&gt;
            &lt;p&gt;&lt;span style="font-size: 10pt; font-family: courier new;"&gt;Database driver =&amp;gt; com.mysql.jdbc.Driver&lt;/span&gt; &lt;/p&gt;
            &lt;p&gt;&lt;span style="font-size: 10pt; font-family: courier new;"&gt;Database URL =&amp;gt; jdbc:mysql://localhost/jahia?useUnicode=true&amp;amp;characterEncoding=UTF-8&amp;amp;useServerPrepStmts=false&lt;/span&gt; &lt;/p&gt;
            &lt;p&gt;&lt;span style="font-size: 10pt; font-family: courier new;"&gt;Database username =&amp;gt; jahia&lt;/span&gt; &lt;/p&gt;
            &lt;p&gt;&lt;span style="font-size: 10pt; font-family: courier new;"&gt;Database password =&amp;gt; jahia&lt;/span&gt; &lt;/p&gt;
            &lt;p&gt;&lt;span style="font-size: 10pt; font-family: courier new;"&gt;Store binary data in&lt;/span&gt; &lt;span style="font-size: 10pt; font-family: courier new;"&gt;the database? =&amp;gt; No&lt;/span&gt; &lt;/p&gt;
            &lt;p&gt;&lt;span style="font-size: 10pt; font-family: courier new;"&gt;Create required database tables? =&amp;gt; Yes&lt;/span&gt; &lt;/p&gt;
            &lt;p&gt;&lt;span style="font-size: 10pt; font-family: courier new;"&gt;Context name (context path without /) =&amp;gt; jahia&lt;/span&gt; &lt;/p&gt;
            &lt;p&gt;&lt;span style="font-size: 10pt; font-family: courier new;"&gt;Jahia tool manager username =&amp;gt; jahia&lt;/span&gt; &lt;/p&gt;
            &lt;p&gt;&lt;span style="font-size: 10pt; font-family: courier new;"&gt;Jahia tool manager password =&amp;gt; jahia&lt;/span&gt; &lt;/p&gt;
            &lt;p&gt;&lt;span style="font-size: 10pt; font-family: courier new;"&gt;Use development mode for&lt;/span&gt; &lt;span style="font-size: 10pt; font-family: courier new;"&gt;templates? =&amp;gt; Yes&lt;/span&gt; &lt;/p&gt;
            &lt;p&gt;&lt;span style="font-size: 10pt; font-family: courier new;"&gt;Username: =&amp;gt; root&lt;/span&gt; &lt;/p&gt;
            &lt;p&gt;&lt;span style="font-size: 10pt; font-family: courier new;"&gt;Password: =&amp;gt; jahia&lt;/span&gt; &lt;/p&gt;
            &lt;p&gt;&lt;span style="font-size: 10pt; font-family: courier new;"&gt;Externalize configuration =&amp;gt; No&amp;nbsp;&lt;/span&gt; &lt;/p&gt;
            &lt;p&gt;&lt;span style="font-size: 10pt; font-family: courier new;"&gt;[ Processing package: Jahia xCM + Jahia Composite Content Platform (1/1) ]&lt;/span&gt; &lt;/p&gt;
            &lt;p&gt;&lt;span style="font-size: 10pt; font-family: courier new;"&gt;[ Unpacking finished ]&lt;/span&gt; &lt;/p&gt;
            &lt;p&gt;&lt;span style="font-size: 10pt; font-family: courier new;"&gt;Install was successful&lt;/span&gt; &lt;/p&gt;
            &lt;p&gt;&lt;span style="font-size: 10pt; font-family: courier new;"&gt;application installed on /usr/local/Jahia_xCM_v6.6.0.0&lt;/span&gt; &lt;/p&gt;
            &lt;p&gt;&lt;span style="font-size: 10pt; font-family: courier new;"&gt;[ Console installation done ]&lt;/span&gt; &lt;/p&gt;
            &lt;/td&gt;
        &lt;/tr&gt;
    &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;After the installation procedure is complete you can check the WAR file we need on the&amp;nbsp;installation dir (/usr/local/Jahia_xCM_v6.6.0.0) named "jahia.war". This file is now a standard Java web application and we can proceed with the configuration for deployment on our Tomcat6 servlet container.&lt;/p&gt;
&lt;p&gt;I followed the recommendation to use a web application directory outside the default Tomcat6 directories structure. This helps a lot on maintenance operations and simplifies Tomcat upgrades and/or Jahia upgrades. To do this, I'll unzip the jahia.war file in the "jahia_war" directory in the installation directory:&amp;nbsp;&lt;/p&gt;
&lt;table cellspacing="0" cellpadding="0" border="0"&gt;
    &lt;tbody&gt;
        &lt;tr&gt;
            &lt;td style="padding: 0in;"&gt;
            &lt;p&gt;&lt;span style="font-size: 10pt; font-family: courier new;"&gt;jahia_war&lt;/span&gt; &lt;/p&gt;
            &lt;p&gt;&lt;span style="font-size: 10pt; font-family: courier new;"&gt;&amp;nbsp;|---admin&lt;/span&gt; &lt;/p&gt;
            &lt;p&gt;&lt;span style="font-size: 10pt; font-family: courier new;"&gt;&amp;nbsp;|---css&lt;/span&gt; &lt;/p&gt;
            &lt;p&gt;&lt;span style="font-size: 10pt; font-family: courier new;"&gt;&amp;nbsp;|---engines&lt;/span&gt; &lt;/p&gt;
            &lt;p&gt;&lt;span style="font-size: 10pt; font-family: courier new;"&gt;&amp;nbsp;|---errors&lt;/span&gt; &lt;/p&gt;
            &lt;p&gt;&lt;span style="font-size: 10pt; font-family: courier new;"&gt;&amp;nbsp;|---favicon.ico&lt;/span&gt; &lt;/p&gt;
            &lt;p&gt;&lt;span style="font-size: 10pt; font-family: courier new;"&gt;&amp;nbsp;|---gwt&lt;/span&gt; &lt;/p&gt;
            &lt;p&gt;&lt;span style="font-size: 10pt; font-family: courier new;"&gt;&amp;nbsp;|---html&lt;/span&gt; &lt;/p&gt;
            &lt;p&gt;&lt;span style="font-size: 10pt; font-family: courier new;"&gt;&amp;nbsp;|---icons&lt;/span&gt; &lt;/p&gt;
            &lt;p&gt;&lt;span style="font-size: 10pt; font-family: courier new;"&gt;&amp;nbsp;|---iphone&lt;/span&gt; &lt;/p&gt;
            &lt;p&gt;&lt;span style="font-size: 10pt; font-family: courier new;"&gt;&amp;nbsp;|---jahia.war&lt;/span&gt; &lt;/p&gt;
            &lt;p&gt;&lt;span style="font-size: 10pt; font-family: courier new;"&gt;&amp;nbsp;|---javascript&lt;/span&gt; &lt;/p&gt;
            &lt;p&gt;&lt;span style="font-size: 10pt; font-family: courier new;"&gt;&amp;nbsp;|---LICENSE&lt;/span&gt; &lt;/p&gt;
            &lt;p&gt;&lt;span style="font-size: 10pt; font-family: courier new;"&gt;&amp;nbsp;|---META-INF&lt;/span&gt; &lt;/p&gt;
            &lt;p&gt;&lt;span style="font-size: 10pt; font-family: courier new;"&gt;&amp;nbsp;|---modules&lt;/span&gt; &lt;/p&gt;
            &lt;p&gt;&lt;span style="font-size: 10pt; font-family: courier new;"&gt;&amp;nbsp;|---ping.jsp&lt;/span&gt; &lt;/p&gt;
            &lt;p&gt;&lt;span style="font-size: 10pt; font-family: courier new;"&gt;&amp;nbsp;|---tools&lt;/span&gt; &lt;/p&gt;
            &lt;p&gt;&lt;span style="font-size: 10pt; font-family: courier new;"&gt;&amp;nbsp;|---WEB-INF&lt;/span&gt; &lt;/p&gt;
            &lt;/td&gt;
        &lt;/tr&gt;
    &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;This is the web application content and in this structure, we can do all the modifications for the Jahia xCM setup we need. Now we need a deployment file for the Jahia web application.&lt;/p&gt;
&lt;p&gt;During the installation process, we selected a web context different than "/" for the Jahia web application: "/jahia". This means that for our deployment, the file will be named "jahia.xml" and will be located into the $TOMCAT_HOME/var/lib/tomcat6/conf/Catalina/localhost/ directory. By default, this is the location of the deployment descriptors in Tomcat.&lt;/p&gt;
&lt;p&gt;The content in this file should be:&lt;/p&gt;
&lt;table cellspacing="0" cellpadding="0" border="0"&gt;
    &lt;tbody&gt;
        &lt;tr&gt;
            &lt;td style="padding: 0in;"&gt;
            &lt;p&gt;&lt;span style="font-size: 10pt; font-family: courier new;"&gt;&amp;lt;Context&lt;/span&gt; &lt;span style="font-size: 10pt; font-family: courier new;"&gt;path="/jahia"&lt;/span&gt; &lt;span style="font-size: 10pt; font-family: courier new;"&gt;docBase="$jahia_war_path"&lt;/span&gt; &lt;span style="font-size: 10pt; font-family: courier new;"&gt;antiResourceLocking="false"&lt;/span&gt; &lt;span style="font-size: 10pt; font-family: courier new;"&gt;crossContext="true"&lt;/span&gt; &lt;span style="font-size: 10pt; font-family: courier new;"&gt;&amp;gt;&lt;/span&gt; &lt;/p&gt;
            &lt;p&gt;&lt;span style="font-size: 10pt; font-family: courier new;"&gt;&amp;lt;Manager&lt;/span&gt; &lt;span style="font-size: 10pt; font-family: courier new;"&gt;pathname=""&lt;/span&gt; &lt;span style="font-size: 10pt; font-family: courier new;"&gt;/&amp;gt;&lt;/span&gt; &lt;/p&gt;
            &lt;p&gt;&lt;span style="font-size: 10pt; font-family: courier new;"&gt;&amp;lt;Resource&lt;/span&gt; &lt;/p&gt;
            &lt;p&gt;&lt;span style="font-size: 10pt; font-family: courier new;"&gt;name="jdbc/jahia"&lt;/span&gt; &lt;/p&gt;
            &lt;p&gt;&lt;span style="font-size: 10pt; font-family: courier new;"&gt;auth="Container"&lt;/span&gt; &lt;/p&gt;
            &lt;p&gt;&lt;span style="font-size: 10pt; font-family: courier new;"&gt;factory="org.apache.commons.dbcp.BasicDataSourceFactory"&lt;/span&gt; &lt;/p&gt;
            &lt;p&gt;&lt;span style="font-size: 10pt; font-family: courier new;"&gt;type="javax.sql.DataSource"&lt;/span&gt; &lt;/p&gt;
            &lt;p&gt;&lt;span style="font-size: 10pt; font-family: courier new;"&gt;username="jahia"&lt;/span&gt; &lt;/p&gt;
            &lt;p&gt;&lt;span style="font-size: 10pt; font-family: courier new;"&gt;password="jahia"&lt;/span&gt; &lt;/p&gt;
            &lt;p&gt;&lt;span style="font-size: 10pt; font-family: courier new;"&gt;driverClassName="com.mysql.jdbc.Driver"&lt;/span&gt; &lt;/p&gt;
            &lt;p&gt;&lt;span style="font-size: 10pt; font-family: courier new;"&gt;url="jdbc:mysql://localhost/jahia_6_6_0_0?useUnicode=true&amp;amp;amp;characterEncoding=UTF-8&amp;amp;amp;useServerPrepStmts=false"&lt;/span&gt; &lt;/p&gt;
            &lt;p&gt;&lt;span style="font-size: 10pt; font-family: courier new;"&gt;defaultAutoCommit="true"&lt;/span&gt; &lt;/p&gt;
            &lt;p&gt;&lt;span style="font-size: 10pt; font-family: courier new;"&gt;accessToUnderlyingConnectionAllowed="true"&lt;/span&gt; &lt;/p&gt;
            &lt;p&gt;&lt;span style="font-size: 10pt; font-family: courier new;"&gt;maxActive="200"&lt;/span&gt; &lt;/p&gt;
            &lt;p&gt;&lt;span style="font-size: 10pt; font-family: courier new;"&gt;maxIdle="30"&lt;/span&gt; &lt;/p&gt;
            &lt;p&gt;&lt;span style="font-size: 10pt; font-family: courier new;"&gt;maxWait="10000"&lt;/span&gt; &lt;/p&gt;
            &lt;p&gt;&lt;span style="font-size: 10pt; font-family: courier new;"&gt;initialSize="5"&lt;/span&gt; &lt;/p&gt;
            &lt;p&gt;&lt;span style="font-size: 10pt; font-family: courier new;"&gt;validationQuery="/* ping */"&lt;/span&gt; &lt;/p&gt;
            &lt;p&gt;&lt;span style="font-size: 10pt; font-family: courier new;"&gt;testWhileIdle="true"&lt;/span&gt; &lt;/p&gt;
            &lt;p&gt;&lt;span style="font-size: 10pt; font-family: courier new;"&gt;testOnBorrow="false"&lt;/span&gt; &lt;/p&gt;
            &lt;p&gt;&lt;span style="font-size: 10pt; font-family: courier new;"&gt;testOnReturn="false"&lt;/span&gt; &lt;/p&gt;
            &lt;p&gt;&lt;span style="font-size: 10pt; font-family: courier new;"&gt;timeBetweenEvictionRunsMillis="300000"&lt;/span&gt; &lt;/p&gt;
            &lt;p&gt;&lt;span style="font-size: 10pt; font-family: courier new;"&gt;minEvictableIdleTimeMillis="1800000"&lt;/span&gt; &lt;/p&gt;
            &lt;p&gt;&lt;span style="font-size: 10pt; font-family: courier new;"&gt;numTestsPerEvictionRun="5"&lt;/span&gt; &lt;span style="font-size: 10pt; font-family: courier new;"&gt;/&amp;gt;&lt;/span&gt; &lt;/p&gt;
            &lt;p&gt;&lt;span style="font-size: 10pt; font-family: courier new;"&gt;&amp;lt;/Context&amp;gt;&lt;/span&gt; &lt;/p&gt;
            &lt;/td&gt;
        &lt;/tr&gt;
    &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;This file can be created using the jahia_war/META-INF/context.xml file and modifying the "Context" tag.&lt;/p&gt;
&lt;p&gt;Once you put this file into the Tomcat-specified location, you can restart the Tomcat service and the Jahia web application will start:&lt;/p&gt;
&lt;table cellspacing="0" cellpadding="0" border="0"&gt;
    &lt;tbody&gt;
        &lt;tr&gt;
            &lt;td style="padding: 0in;"&gt;
            &lt;p&gt;&lt;span style="font-size: 10pt; font-family: courier new;"&gt;service tomcat6 restart&lt;/span&gt; &lt;/p&gt;
            &lt;/td&gt;
        &lt;/tr&gt;
    &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;Now you can check your Tomcat6 LOG (/var/log/tomcat6/catalina.out) and see all the Jahia web application startup information. This file becomes especially important to a developer&amp;rsquo;s work as this contains all the deployment and execution information.&lt;/p&gt;
&lt;p&gt;Now we can point our browser to&amp;nbsp;&lt;a href="http://localhost:8080/jahia"&gt;http://localhost:8080/jahia&lt;/a&gt;&amp;nbsp;and we should see the start configuration page.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;About the Installer&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;The Jahia xCM 6.6 has been recently released, and I tried some installations before writing this post. On those tests I noticed some fails on the installer (in graphic mode). If this happens to you, I suggest you check the following on your recently installed environment:&lt;/p&gt;
&lt;ul style="list-style-type: disc;"&gt;
    &lt;li&gt;The file $JAHIA_WAR/WEB-INF/etc/jahia.properties was sometimes missing.&lt;/li&gt;
    &lt;li&gt;The file&amp;nbsp;$JAHIA_WAR/WEB-INF/etc/log4j.xml defines the location of the Jahia LOG files (jahia.log, jahia_profiler.log, jahia_access.log), search the file definitions into the "appender" tags and add the location you want for those files, in my case I want all log file under "/var/log/tomcat6/" directory:&lt;/li&gt;
&lt;/ul&gt;
&lt;table cellspacing="0" cellpadding="0" border="0"&gt;
    &lt;tbody&gt;
        &lt;tr&gt;
            &lt;td style="padding: 0in;"&gt;
            &lt;p&gt;&lt;span style="font-size: 10pt; font-family: courier new;"&gt;&amp;lt;appender&lt;/span&gt; &lt;span style="font-size: 10pt; font-family: courier new;"&gt;name="ROLL"&lt;/span&gt; &lt;span style="font-size: 10pt; font-family: courier new;"&gt;class="org.apache.log4j.DailyRollingFileAppender"&amp;gt;&lt;/span&gt; &lt;/p&gt;
            &lt;p&gt;&lt;span style="font-size: 10pt; font-family: courier new;"&gt;&amp;lt;param&lt;/span&gt; &lt;span style="font-size: 10pt; font-family: courier new;"&gt;name="File"&lt;/span&gt; &lt;span style="font-size: 10pt; font-family: courier new;"&gt;value="/var/log/tomcat6/jahia.log"/&amp;gt;...&lt;/span&gt; &lt;/p&gt;
            &lt;/td&gt;
        &lt;/tr&gt;
    &lt;/tbody&gt;
&lt;/table&gt;
&lt;ul style="list-style-type: disc;"&gt;
    &lt;li&gt;On the&amp;nbsp;$JAHIA_WAR/WEB-INF/etc/jahia.properties there used to be the DB configuration parameters, but on this release you will find this comment:&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;######################################################################&lt;br /&gt;
### Database ########################################################&lt;br /&gt;
######################################################################&lt;br /&gt;
# Database connection configuration is no longer configured here,&lt;br /&gt;
# but rather through container-managed datasource connection. In Tomcat&lt;br /&gt;
# these can be found in the following file:&lt;br /&gt;
# &amp;lt;jahia-web-app-dir&amp;gt;/META-INF/context.xml&lt;/p&gt;
&lt;p&gt;I tried moving all the DB configuration parameters to this file from the "jahia.xml" but had no luck, so it seems you need to use the jahia.xml to define DB attributes.&lt;/p&gt;
&lt;p&gt;If all goes well, this host will work fine as an integration environment and by following the documentation about the performance tuning provided on Jahia website, this can be used as a start point for a production instance.&lt;/p&gt;
&lt;p&gt;Resources&lt;/p&gt;
&lt;p&gt;&lt;sup&gt;1&lt;/sup&gt; &lt;a href="http://www.jahia.com/cms/home.html"&gt;www.jahia.com&lt;/a&gt;&lt;/p&gt;
</description><link>http://oshyn.com/RSSRetrieve.aspx?ID=2435&amp;A=Link&amp;ObjectID=223579&amp;ObjectType=56&amp;O=http%253a%252f%252foshyn.com%252f_blog%252fWeb_Content_Management%252fpost%252fInstallation_Tips_for_a_Jahia_Setup_on_Linux_OS%252f</link><guid isPermaLink="true">http://oshyn.com/_blog/Web_Content_Management/post/Installation_Tips_for_a_Jahia_Setup_on_Linux_OS/</guid><pubDate>Thu, 26 Apr 2012 16:06:00 GMT</pubDate></item><item><title>What to Expect When Implementing a New CMS</title><description>&lt;p&gt;&lt;img alt="CMS Project Questions" style="border-width: 0px; border-style: solid; -moz-border-top-colors: none; -moz-border-right-colors: none; -moz-border-bottom-colors: none; -moz-border-left-colors: none; -moz-border-image: none; float: right; margin-right: 0px; margin-left: 6px;" src="/blogResources/AlexandraBarcelona/Decision Making_250.jpg" /&gt;When implementing a new CMS, it&amp;rsquo;s easy to get caught up in all the bells and whistles of the platform without considering the basic implications of a new system. &amp;nbsp;What type of development method will you use? Who will own the project? How will you get everyone on the team on board? How to plan for the unexpected costs? How will you make sure everyone has the training and support they need. &amp;nbsp;
&lt;/p&gt;
&lt;div&gt;Before you dive into a new CMS, it&amp;rsquo;s important to answer these questions to avoid wasting time and resources down the road.
&lt;h2&gt;Different Development Methodologies&lt;/h2&gt;
&lt;div&gt;
There are three main types of CMS development methodologies, which one will be best for your project?&lt;br /&gt;
&lt;ul&gt;
    &lt;li&gt;&lt;strong&gt;Waterfall&lt;/strong&gt; &amp;ndash; sequential development approach through Analysis, Design, Implementation, Quality Assurance, Integration, and Maintenance.&lt;/li&gt;
    &lt;li&gt;&lt;strong&gt;Incremental &lt;/strong&gt;&amp;ndash; breaks a project into smaller segments, reducing risk by working on smaller segments; also allows for some development flexibility.&amp;nbsp;&lt;/li&gt;
    &lt;li&gt;&lt;strong&gt;Agile&lt;/strong&gt; &amp;ndash; iterative and incremental development where requirements and solutions evolve through collaboration between self-organizing/cross-functional teams.&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;h2&gt;The Need for a Product Manager/Owner&lt;/h2&gt;
&lt;div&gt;According to Forrester Research, more than 60% of Web Managers are dissatisfied with their current CMS. A lot of that dissatisfaction can be attributed to a CMS implementation that doesn&amp;rsquo;t address original business needs.&lt;br /&gt;
&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;Having a Product Manager/Owner, someone that understands your needs and is responsible for the overall direction of your CMS, ensures that your CMS implementation stays on course and is not derailed by short term interests and conflicting visions.&amp;nbsp;&lt;br /&gt;
&lt;/div&gt;
&lt;h2&gt;Avoiding Adoption Issues&lt;/h2&gt;
&lt;div&gt;Humans are creatures of habit, so don&amp;rsquo;t expect your editors to fall in love with your new CMS just because it&amp;rsquo;s new and full of great features. Your CMS implementation will fail if you can&amp;rsquo;t get everyone pulling in the same direction.&amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;
How to encourage user adoption:&lt;br /&gt;
&lt;ul&gt;
    &lt;li&gt;Clearly outline your goals and objectives&lt;/li&gt;
    &lt;li&gt;Involve your site users and editors during the Design Phase&lt;/li&gt;
    &lt;li&gt;Show your editors how your new CMS will make their day-to-day tasks easier&lt;/li&gt;
    &lt;li&gt;Offer support and training &amp;ndash; this is paramount, but often overlooked&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;h2&gt;Different Users = Different Training Needs&lt;/h2&gt;
&lt;div&gt;Don&amp;rsquo;t assume that everyone on your team will find your new CMS easy to use. What is simple and intuitive to one person might not be to the next, so conduct training needs assessments and tailor your training accordingly. Try not to cut corners around training; it will cost you in the long run. For example, editors not following best practices and administrators not following security guidelines will cause major issues within your organization.&lt;br /&gt;
&lt;/div&gt;
&lt;h2&gt;Unexpected Costs&lt;/h2&gt;
&lt;div&gt;Irrespective of which development methodology you use, some enhancements will only become apparent and necessary after you had a chance to test and use your new CMS. Create a plan and set aside additional funding to deal with future enhancements and to avoid launch delays caused by time or budgetary constraints.&lt;br /&gt;
&lt;/div&gt;
&lt;h2&gt;You will Need Support&amp;nbsp;&lt;/h2&gt;
&lt;div&gt;When something goes wrong, it can be very frustrating if no one can help you in a timely manner, particularly when the issue is out of your control and you are dependent on external support. Some open source and low-cost CMS offerings do not include support, so take time to evaluate your support needs before choosing a CMS.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Sources:&lt;br /&gt;
&lt;a href="http://en.wikipedia.org/wiki/Software_development_methodology"&gt;Software Development Methodology (Wikipedia)&lt;/a&gt;&lt;br /&gt;
&lt;a href="http://en.wikipedia.org/wiki/Agile_software_development"&gt;Agile Software Development (Wikipedia)&lt;/a&gt;&lt;br /&gt;
&lt;a href="http://www.slideshare.net/NavigationArts/why-could-your-cms-implementation-fail"&gt;Why Could Your CMS Implementation Fail? (SlideShare)&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;
</description><link>http://oshyn.com/RSSRetrieve.aspx?ID=2435&amp;A=Link&amp;ObjectID=223554&amp;ObjectType=56&amp;O=http%253a%252f%252foshyn.com%252f_blog%252fWeb_Content_Management%252fpost%252fWhat_to_Expect_When_Implementing_a_New_CMS%252f</link><guid isPermaLink="true">http://oshyn.com/_blog/Web_Content_Management/post/What_to_Expect_When_Implementing_a_New_CMS/</guid><pubDate>Mon, 23 Apr 2012 21:16:00 GMT</pubDate></item><item><title>Creating a Simple EPiServer Page Type Hierarchy Using PageTypeBuilder</title><description>&lt;p&gt;&lt;img src="/blogResources/AlexandraBarcelona/Software Technology Mapping.jpg" style="border: 0px solid; width: 250px; height: 188px; float: right; margin-left: 6px;" alt="EPiServer Page Type Hierarchy" /&gt;In my &lt;a href="http://oshyn.com/_blog/Web_Content_Management/post/PageTypeBuilder_for_EPiServer"&gt;previous post&lt;/a&gt;, I did a short introduction to Joel Abrahamsson&amp;rsquo;s PageTypeBuilder library for EPiServer. Among other features, I did a quick description of one of PageTypeBuilder&amp;rsquo;s greatest features, structural inheritance. In this post, I&amp;rsquo;ll describe a simple hierarchical Page Type inheritance structure example. &lt;/p&gt;
&lt;p&gt;Let&amp;rsquo;s begin with the &amp;ldquo;Base Page Type&amp;rdquo; (that inherits from PageTypeBuilder.TypedPageData):&lt;/p&gt;
&lt;pre class="brush:csharp"&gt;public class BasePageType : TypedPageData
{
  [PageTypeProperty(
    EditCaption = "Page teaser",
    Type = typeof(PropertyString),
    SortOrder = 10)]
  public virtual string PageTeaser { get; set; }

  [PageTypeProperty(
    EditCaption = "Show top image",
    Type = typeof(PropertyBoolean),
    DefaultValue = false,
    DefaultValueType = DefaultValueType.Value,
    SortOrder = 11)]
  public virtual bool ShowTopImage { get; set; }
}
&lt;/pre&gt;
&lt;p&gt;Each field is decorated with the PageTypeProperty attribute, where you can define its properties including the caption for the end user. After defining the base, we can implement &amp;ldquo;concrete&amp;rdquo; Page Type classes that inherit from the base, and implement their own specific fields:&lt;/p&gt;
&lt;pre class="brush:csharp"&gt;[PageType(
  Name = "Site inner page",
  Description = "Page type for all inner pages.",
  Filename = "~/Templates/InnerPage.aspx"
  AvailablePageTypes = new Type[] 
    { 
      typeof(InnerPage), typeof(SubPage) 
    }
  )]
public class InnerPage : BasePageType
{
  [PageTypeProperty(
    EditCaption = "Page HTML Body",
    Type = typeof(PropertyXhtmlString),
    SortOrder = 20)]
  public virtual string Body { get; set; }

  [PageTypeProperty(
    EditCaption = "Promotional Image",
    Type = typeof(PropertyImageUrl),
    SortOrder = 21)]
  public virtual string PromoImage { get; set; }
}
&lt;/pre&gt;
&lt;p&gt;
The PageType attribute defines the name of the Page Type in EPiServer, a description of the page, and most importantly, the ASPX file name for the presentation of the Page Type (template). Also, you can specify an array of the Page Types that are allowed to be created (as page instances) under a page that has been instantiated from the Page Type being defined (i.e., when you create a page using the defined Page Type, its children are restricted to be of the types you entered in the array).
&lt;/p&gt;
&lt;p&gt;
In the previous example, since InnerPage inherits from BasePageType, it will not only have the Body and PromoImage properties, but also the PageTeaser and ShowTopImage properties as well.
&lt;/p&gt;
&lt;p&gt;
Finally, you can also implement subclasses of the &amp;ldquo;concrete&amp;rdquo; Page Type classes for specific functionality:
&lt;/p&gt;
&lt;pre class="brush:csharp"&gt;[PageType(
  Name = "Site subpage",
  Description = "Page type for third-level pages.",
  Filename = "~/Templates/SubPage.aspx")]
public class SubPage : InnerPage
{
  [PageTypeProperty(
    EditCaption = "Promotion link",
    Type = typeof(PropertyUrl),
    SortOrder = 30)]
  public virtual string PromoLink { get; set; }

  [PageTypeProperty(
    EditCaption = "Automatically redirect to",
    Type = typeof(PropertyPageReference),
    SortOrder = 31)]
  public virtual PageReference AutomaticRedirect { get; set; }
}
&lt;/pre&gt;
&lt;p&gt;
In this last example, the SubPage page type will inherit all the properties from its parents: PageTeaser, ShowTopImage, Body, PromoImage; and it will include its own properties PromoLink and AutomaticRedirect.
&lt;/p&gt;
&lt;p&gt;
To create the actual templates (ASPX with the presentation of the Page Types), instead of inheriting from EPiServer&amp;rsquo;s standard TemplatePage, you have to inherit from PageTypeBuilder&amp;rsquo;s generic TemplatePage&amp;lt;T&amp;gt;, where T is the Page Type class that is associated to this presentation component:
&lt;/p&gt;
&lt;pre class="brush:csharp"&gt;public partial class InnerPage : TemplatePage&amp;lt;PageTypes.InnerPage&amp;gt;
&lt;/pre&gt;
&lt;p&gt;
You can access the Page Type&amp;rsquo;s fields in code-behind with the CurrentPage property normally by using string indexes, or better, by accessing them as standard .NET properties:
&lt;/p&gt;
&lt;pre class="brush:csharp"&gt;this.CurrentPage["Body"]
this.CurrentPage.PromoImage
&lt;/pre&gt;
&lt;p&gt;
In the ASPX front-end, you can still use the EPiServer:Property web control.
&lt;/p&gt;
&lt;pre class="brush:xml"&gt;&amp;lt;EPiServer:Property PropertyName="Body" runat="server" /&amp;gt;
&lt;/pre&gt;
&lt;p&gt;
In an upcoming post, I&amp;rsquo;ll describe how to assign Tabs to properties, and how to configure the TinyMCE editor for XHTML fields.
&lt;/p&gt;
</description><link>http://oshyn.com/RSSRetrieve.aspx?ID=2435&amp;A=Link&amp;ObjectID=222325&amp;ObjectType=56&amp;O=http%253a%252f%252foshyn.com%252f_blog%252fWeb_Content_Management%252fpost%252fEPiServer_Page_Type_Hierarchy_Using_PageTypeBuilder%252f</link><guid isPermaLink="true">http://oshyn.com/_blog/Web_Content_Management/post/EPiServer_Page_Type_Hierarchy_Using_PageTypeBuilder/</guid><pubDate>Fri, 27 Apr 2012 22:46:00 GMT</pubDate></item><item><title>PageTypeBuilder for EPiServer</title><description>&lt;p&gt;&lt;a href="http://pagetypebuilder.codeplex.com/" title="PageTypeBuilder"&gt;&lt;img src="/blogResources/AlexandraBarcelona/Pages Downloading.jpg" style="border-width: 0px; border-style: solid; -moz-border-top-colors: none; -moz-border-right-colors: none; -moz-border-bottom-colors: none; -moz-border-left-colors: none; -moz-border-image: none; width: 250px; height: 195px; float: right; margin-right: 6px;" alt="EPiServer PageTypeBuilder" /&gt;PageTypeBuilder&lt;/a&gt;, an open source project developed by Joel Abrahamsson is a great tool that helps managing, directly in code, Page Type definitions in EPiServer projects. &lt;/p&gt;
&lt;p&gt;As anyone that has worked with EPiServer knows, Page Types are usually managed in the Admin interface, and they do not support advanced features like inheritance. You can use Dynamic Properties to somehow manage content that is shared among different page types in the project, but there isn&amp;rsquo;t real structural inheritance. Also, to synchronize Page Types between environments (such as when you have your project in a Continuous Integration deployment schema, with environments for Build, QA, Staging, Production, etc.), you have to manually export and import the Page Types in each one, or even worse, copy the entire database from server to server.&lt;/p&gt;
&lt;p&gt;PageTypeBuilder easily solves this synchronization issue. All Page Types are defined in code, as any other class in C#. This means that, when you deploy the project to another environment, the Page Types will be automatically synchronized without further intervention. And since they are defined as C# classes, Page Type structure inheritance is as simple as inheriting one Page Type class from another Page Type class. You can even define &amp;ldquo;Base Page Types&amp;rdquo; that contain shared data fields; however they aren&amp;rsquo;t created in the system as actual Page Types. The &amp;ldquo;concrete&amp;rdquo; Page Type classes inherit from this Base Page Type class, and implement their own additional fields.&lt;/p&gt;
&lt;p&gt;PageTypeBuilder also allows managing Tabs and, since version 2.0, Field Configurations. In upcoming posts, I&amp;rsquo;ll discuss these features in more detail.&lt;/p&gt;
&lt;p&gt;PageTypeBuilder has its disadvantages and limitations. There are not many resources about it in the Internet, but you can always check Joel&amp;rsquo;s blog for introductions and examples. Also, since it creates the Page Type structures in the project&amp;rsquo;s database when first accessed, it doesn&amp;rsquo;t delete fields or Page Types that have been removed from the code. You will have to delete them manually in Admin mode.&lt;/p&gt;
&lt;p&gt;In an upcoming blog post, I&amp;rsquo;ll give a simple example of how to create a simple Page Type hierarchy demonstrating inheritance and property configuration.&lt;/p&gt;
</description><link>http://oshyn.com/RSSRetrieve.aspx?ID=2435&amp;A=Link&amp;ObjectID=222323&amp;ObjectType=56&amp;O=http%253a%252f%252foshyn.com%252f_blog%252fWeb_Content_Management%252fpost%252fPageTypeBuilder_for_EPiServer%252f</link><guid isPermaLink="true">http://oshyn.com/_blog/Web_Content_Management/post/PageTypeBuilder_for_EPiServer/</guid><pubDate>Fri, 27 Apr 2012 22:46:00 GMT</pubDate></item><item><title>How to Easily Create a Page in Sitecore [Video Guide]</title><description>&lt;p&gt;Sitecore is a Content Management system that allows you to easily create content for your site. You can create content pages with different layouts and various components depending on your site needs. &lt;/p&gt;
&lt;p&gt;Creating a page in Sitecore is a simple and fast process after you figure out the two main components: page location and template.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Where will your page be located? &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Before you create your page, you will need to know the basic structure, the main areas, and subpages of your site. After you know these, select the best location for the page.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;What template is your page going to have? &lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;The template of a page tells you how the elements of the page are distributed. In Sitecore, depending on your site, you can choose among several templates, like this one:&lt;/p&gt;
&lt;p&gt;&lt;img alt="" style="border: 0px none; width: 470px;" src="/blogResources/belenPadillaPosts/sitecore/layout-1.png" /&gt;&lt;/p&gt;
&lt;p&gt;Or a template with 2 or 3 columns, like this one:&lt;/p&gt;
&lt;p&gt;&lt;img alt="" style="border: 0px none; width: 470px;" src="/blogResources/belenPadillaPosts/sitecore/layout-2.png" /&gt;&lt;/p&gt;
&lt;p&gt;In Sitecore, each subsection of the page is considered a placeholder; be sure that you also know the names of the placeholders in the template you choose.&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;After you have decided on the location and the template of your page, watch the video, which will show you how to create a page in Sitecore and add content to it, including text and images. Additionally you can see how to submit pages if workflow is activated.&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;Finally once the page is created, the video will also show you, how to add a component to the left column of the page.&amp;nbsp;&lt;/p&gt;
&lt;iframe width="500" height="315" frameborder="0" src="http://www.youtube.com/embed/J7sl-kYKNYw"&gt;&lt;/iframe&gt;
&lt;p&gt;The video showed that Sitecore interface is easy to understand and navigate; editors can create new pages where they desire following few simple steps. Finally, editors can add components as needed; this helps you to have a site with up-to-date and personalized content for end users.&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;&lt;strong&gt;References&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;Sitecore CMS Brochure: &lt;a href="http://www.sitecore.net/Resources/brochures/Sitecore-CMS.aspx"&gt;http://www.sitecore.net/Resources/brochures/Sitecore-CMS.aspx&lt;/a&gt;&lt;/p&gt;
</description><link>http://oshyn.com/RSSRetrieve.aspx?ID=2435&amp;A=Link&amp;ObjectID=221801&amp;ObjectType=56&amp;O=http%253a%252f%252foshyn.com%252f_blog%252fWeb_Content_Management%252fpost%252fCreate-Page-Sitecore%252f</link><guid isPermaLink="true">http://oshyn.com/_blog/Web_Content_Management/post/Create-Page-Sitecore/</guid><pubDate>Fri, 06 Apr 2012 18:22:00 GMT</pubDate></item><item><title>Sitecore Digital Marketing System (DMS) Part 2: Creating Conditions to compare custom values</title><description>&lt;div style="text-align: justify;"&gt;In &lt;a href="/_blog/Web_Content_Management/post/Sitecore_DMS_Part_1_Creating_custom_content"&gt;part one of this post&lt;/a&gt;, I showed you how to create new conditions for your Sitecore Digital Marketing System site. Now that we know the process,I&amp;rsquo;ll add some sample code to create conditions that will compare integer, dates and custom values.&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;&lt;br /&gt;
&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;&lt;strong&gt;Integer Condition (Number of Achievements):&lt;/strong&gt;&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;&lt;br /&gt;
&lt;/div&gt;
&lt;div style="border:1pt solid windowtext;border-image: initial; padding-top: 1pt; padding-right: 4pt; padding-bottom: 1pt; padding-left: 4pt; background-color: white;"&gt;
&lt;div style="text-align: justify;"&gt;
&lt;p style="border:medium none; margin-bottom: 0in; line-height: normal; border-image: initial; padding-top: 0in; padding-right: 0in; padding-bottom: 0in; padding-left: 0in;"&gt;&lt;span style="font-family: consolas; font-size: 8pt; color: blue;"&gt;using&lt;/span&gt;&lt;span style="font-family: consolas; font-size: 8pt;"&gt; Sitecore.Rules;&lt;/span&gt;&lt;/p&gt;
&lt;p style="border:medium none; margin-bottom: 0in; line-height: normal; border-image: initial; padding-top: 0in; padding-right: 0in; padding-bottom: 0in; padding-left: 0in;"&gt;&lt;span style="font-family: consolas; font-size: 8pt; color: blue;"&gt;using&lt;/span&gt;&lt;span style="font-family: consolas; font-size: 8pt;"&gt; Sitecore.Rules.Conditions;&lt;/span&gt;&lt;/p&gt;
&lt;p style="border:medium none; margin-bottom: 0in; line-height: normal; border-image: initial; padding-top: 0in; padding-right: 0in; padding-bottom: 0in; padding-left: 0in;"&gt;&lt;span style="font-family: consolas; font-size: 8pt; color: blue;"&gt;namespace&lt;/span&gt;&lt;span style="font-family: consolas; font-size: 8pt;"&gt; RulesEngine.Rules&lt;/span&gt;&lt;/p&gt;
&lt;p style="border:medium none; margin-bottom: 0in; line-height: normal; border-image: initial; padding-top: 0in; padding-right: 0in; padding-bottom: 0in; padding-left: 0in;"&gt;&lt;span style="font-family: consolas; font-size: 8pt;"&gt;{&lt;/span&gt;&lt;/p&gt;
&lt;p style="border:medium none; margin-bottom: 0in; line-height: normal; border-image: initial; padding-top: 0in; padding-right: 0in; padding-bottom: 0in; padding-left: 0in;"&gt;&lt;span style="font-family: consolas; font-size: 8pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;public&lt;/span&gt; &lt;span style="color: blue;"&gt;class&lt;/span&gt; &lt;span style="color: #2b91af;"&gt;AchievementsCondition&lt;/span&gt;&amp;lt;T&amp;gt; :&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p style="border:medium none; margin-bottom: 0in; line-height: normal; border-image: initial; padding-top: 0in; padding-right: 0in; padding-bottom: 0in; padding-left: 0in;"&gt;&lt;span style="font-family: consolas; font-size: 8pt;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;IntegerComparisonCondition&lt;/span&gt;&amp;lt;T&amp;gt; &lt;span style="color: blue;"&gt;where&lt;/span&gt; T : &lt;span style="color: #2b91af;"&gt;RuleContext&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="border:medium none; margin-bottom: 0in; line-height: normal; border-image: initial; padding-top: 0in; padding-right: 0in; padding-bottom: 0in; padding-left: 0in;"&gt;&lt;span style="font-family: consolas; font-size: 8pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/span&gt;&lt;/p&gt;
&lt;p style="border:medium none; margin-bottom: 0in; line-height: normal; border-image: initial; padding-top: 0in; padding-right: 0in; padding-bottom: 0in; padding-left: 0in;"&gt;&lt;span style="font-family: consolas; font-size: 8pt; color: green;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //This is the value the editor will enter&lt;/span&gt;&lt;/p&gt;
&lt;p style="border:medium none; margin-bottom: 0in; line-height: normal; border-image: initial; padding-top: 0in; padding-right: 0in; padding-bottom: 0in; padding-left: 0in;"&gt;&lt;span style="font-family: consolas; font-size: 8pt; color: green;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //I prefer to have a separate string property otherwise I could&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p style="border:medium none; margin-bottom: 0in; line-height: normal; border-image: initial; padding-top: 0in; padding-right: 0in; padding-bottom: 0in; padding-left: 0in;"&gt;&lt;span style="font-family: consolas; font-size: 8pt; color: green;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; //use base.Value int property but&amp;nbsp;&lt;span style="text-align: justify; font-family: consolas; font-size: 11px; color: #008000;"&gt;there will be errors if&amp;nbsp;&lt;/span&gt;&amp;nbsp;&lt;br /&gt;
&lt;/span&gt;&lt;/p&gt;
&lt;p style="border:medium none; margin-bottom: 0in; line-height: normal; border-image: initial; padding-top: 0in; padding-right: 0in; padding-bottom: 0in; padding-left: 0in;"&gt;&lt;span style="font-family: consolas; font-size: 8pt; color: green;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //the editor doesn't enter a number&lt;/span&gt;&lt;/p&gt;
&lt;p style="border:medium none; margin-bottom: 0in; line-height: normal; border-image: initial; padding-top: 0in; padding-right: 0in; padding-bottom: 0in; padding-left: 0in;"&gt;&lt;span style="font-family: consolas; font-size: 8pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;public&lt;/span&gt; &lt;span style="color: blue;"&gt;string&lt;/span&gt; Number { &lt;span style="color: blue;"&gt;get&lt;/span&gt;; &lt;span style="color: blue;"&gt;set&lt;/span&gt;; }&lt;/span&gt;&lt;/p&gt;
&lt;p style="border:medium none; margin-bottom: 0in; line-height: normal; border-image: initial; padding-top: 0in; padding-right: 0in; padding-bottom: 0in; padding-left: 0in;"&gt;&lt;span style="font-family: consolas; font-size: 8pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: gray;"&gt;///&lt;/span&gt; &lt;span style="color: gray;"&gt;&amp;lt;summary&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="border:medium none; margin-bottom: 0in; line-height: normal; border-image: initial; padding-top: 0in; padding-right: 0in; padding-bottom: 0in; padding-left: 0in;"&gt;&lt;span style="font-family: consolas; font-size: 8pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: gray;"&gt;///&lt;/span&gt;&lt;span style="color: green;"&gt; This function will be called to test the condition&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="border:medium none; margin-bottom: 0in; line-height: normal; border-image: initial; padding-top: 0in; padding-right: 0in; padding-bottom: 0in; padding-left: 0in;"&gt;&lt;span style="font-family: consolas; font-size: 8pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: gray;"&gt;///&lt;/span&gt; &lt;span style="color: gray;"&gt;&amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;span style="color: green;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="border:medium none; margin-bottom: 0in; line-height: normal; border-image: initial; padding-top: 0in; padding-right: 0in; padding-bottom: 0in; padding-left: 0in;"&gt;&lt;span style="font-family: consolas; font-size: 8pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;protected&lt;/span&gt; &lt;span style="color: blue;"&gt;override&lt;/span&gt; &lt;span style="color: blue;"&gt;bool&lt;/span&gt; Execute(T ruleContext)&lt;/span&gt;&lt;/p&gt;
&lt;p style="border:medium none; margin-bottom: 0in; line-height: normal; border-image: initial; padding-top: 0in; padding-right: 0in; padding-bottom: 0in; padding-left: 0in;"&gt;&lt;span style="font-family: consolas; font-size: 8pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/span&gt;&lt;/p&gt;
&lt;p style="border:medium none; margin-bottom: 0in; line-height: normal; border-image: initial; padding-top: 0in; padding-right: 0in; padding-bottom: 0in; padding-left: 0in;"&gt;&lt;span style="font-family: consolas; font-size: 8pt; color: green;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //Get the current user from our dummy user session manager&lt;/span&gt;&lt;/p&gt;
&lt;p style="border:medium none; margin-bottom: 0in; line-height: normal; border-image: initial; padding-top: 0in; padding-right: 0in; padding-bottom: 0in; padding-left: 0in;"&gt;&lt;span style="font-family: consolas; font-size: 8pt;"&gt;&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="color: blue;"&gt;var&lt;/span&gt; user = &lt;span style="color: #2b91af;"&gt;UserSession&lt;/span&gt;.GetCurrentUser();&lt;/span&gt;&lt;/p&gt;
&lt;p style="border:medium none; margin-bottom: 0in; line-height: normal; border-image: initial; padding-top: 0in; padding-right: 0in; padding-bottom: 0in; padding-left: 0in;"&gt;&lt;span style="font-family: consolas; font-size: 8pt; color: green;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //Check if the user is logged in, otherwise return false&lt;/span&gt;&lt;/p&gt;
&lt;p style="border:medium none; margin-bottom: 0in; line-height: normal; border-image: initial; padding-top: 0in; padding-right: 0in; padding-bottom: 0in; padding-left: 0in;"&gt;&lt;span style="font-family: consolas; font-size: 8pt;"&gt;&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="color: blue;"&gt;if&lt;/span&gt; (user == &lt;span style="color: blue;"&gt;null&lt;/span&gt;)&lt;/span&gt;&lt;/p&gt;
&lt;p style="border:medium none; margin-bottom: 0in; line-height: normal; border-image: initial; padding-top: 0in; padding-right: 0in; padding-bottom: 0in; padding-left: 0in;"&gt;&lt;span style="font-family: consolas; font-size: 8pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;return&lt;/span&gt; &lt;span style="color: blue;"&gt;false&lt;/span&gt;;&lt;/span&gt;&lt;/p&gt;
&lt;p style="border:medium none; margin-bottom: 0in; line-height: normal; border-image: initial; padding-top: 0in; padding-right: 0in; padding-bottom: 0in; padding-left: 0in;"&gt;&lt;span style="font-family: consolas; font-size: 8pt;"&gt;&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="color: blue;"&gt;int&lt;/span&gt; numberToCompare;&lt;/span&gt;&lt;/p&gt;
&lt;p style="border:medium none; margin-bottom: 0in; line-height: normal; border-image: initial; padding-top: 0in; padding-right: 0in; padding-bottom: 0in; padding-left: 0in;"&gt;&lt;span style="font-family: consolas; font-size: 8pt;"&gt;&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="color: blue;"&gt;if&lt;/span&gt; (!&lt;span style="color: #2b91af;"&gt;Int32&lt;/span&gt;.TryParse(Number, &lt;span style="color: blue;"&gt;out&lt;/span&gt; numberToCompare))&lt;/span&gt;&lt;/p&gt;
&lt;p style="border:medium none; margin-bottom: 0in; line-height: normal; border-image: initial; padding-top: 0in; padding-right: 0in; padding-bottom: 0in; padding-left: 0in;"&gt;&lt;span style="font-family: consolas; font-size: 8pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/span&gt;&lt;/p&gt;
&lt;p style="border:medium none; margin-bottom: 0in; line-height: normal; border-image: initial; padding-top: 0in; padding-right: 0in; padding-bottom: 0in; padding-left: 0in;"&gt;&lt;span style="font-family: consolas; font-size: 8pt; color: green;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //Return false if the editor didn't enter an integer.&lt;/span&gt;&lt;/p&gt;
&lt;p style="border:medium none; margin-bottom: 0in; line-height: normal; border-image: initial; padding-top: 0in; padding-right: 0in; padding-bottom: 0in; padding-left: 0in;"&gt;&lt;span style="font-family: consolas; font-size: 8pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;return&lt;/span&gt; &lt;span style="color: blue;"&gt;false&lt;/span&gt;;&lt;/span&gt;&lt;/p&gt;
&lt;p style="border:medium none; margin-bottom: 0in; line-height: normal; border-image: initial; padding-top: 0in; padding-right: 0in; padding-bottom: 0in; padding-left: 0in;"&gt;&lt;span style="font-family: consolas; font-size: 8pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/span&gt;&lt;/p&gt;
&lt;p style="border:medium none; margin-bottom: 0in; line-height: normal; border-image: initial; padding-top: 0in; padding-right: 0in; padding-bottom: 0in; padding-left: 0in;"&gt;&lt;span style="font-family: consolas; font-size: 8pt; color: green;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //Assign the value to base.Value to perform the comparison&lt;/span&gt;&lt;/p&gt;
&lt;p style="border:medium none; margin-bottom: 0in; line-height: normal; border-image: initial; padding-top: 0in; padding-right: 0in; padding-bottom: 0in; padding-left: 0in;"&gt;&lt;span style="font-family: consolas; font-size: 8pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Value = numberToCompare;&lt;/span&gt;&lt;/p&gt;
&lt;p style="border:medium none; margin-bottom: 0in; line-height: normal; border-image: initial; padding-top: 0in; padding-right: 0in; padding-bottom: 0in; padding-left: 0in;"&gt;&lt;span style="font-family: consolas; font-size: 8pt; color: green;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //Use base function to compare the values, this will compare&lt;/span&gt;&lt;/p&gt;
&lt;p style="border:medium none; margin-bottom: 0in; line-height: normal; border-image: initial; padding-top: 0in; padding-right: 0in; padding-bottom: 0in; padding-left: 0in;"&gt;&lt;span style="font-family: consolas; font-size: 8pt; color: green;"&gt;&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="text-align: justify; font-family: consolas; font-size: 11px; color: #008000;"&gt;base.Value with&lt;/span&gt;&amp;nbsp;the parameter sent&lt;/span&gt;&lt;/p&gt;
&lt;p style="border:medium none; margin-bottom: 0in; line-height: normal; border-image: initial; padding-top: 0in; padding-right: 0in; padding-bottom: 0in; padding-left: 0in;"&gt;&lt;span style="font-family: consolas; font-size: 8pt;"&gt;&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="color: blue;"&gt;return&lt;/span&gt; &lt;span style="color: blue;"&gt;this&lt;/span&gt;.Compare(user.NumberAchievements);&lt;/span&gt;&lt;/p&gt;
&lt;p style="border:medium none; margin-bottom: 0in; line-height: normal; border-image: initial; padding-top: 0in; padding-right: 0in; padding-bottom: 0in; padding-left: 0in;"&gt;&lt;span style="font-family: consolas; font-size: 8pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/span&gt;&lt;/p&gt;
&lt;p style="border:medium none; margin-bottom: 0in; line-height: normal; border-image: initial; padding-top: 0in; padding-right: 0in; padding-bottom: 0in; padding-left: 0in;"&gt;&lt;span style="font-family: consolas; font-size: 8pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/span&gt;&lt;/p&gt;
&lt;p style="border:medium none; margin-bottom: 0in; line-height: normal; border-image: initial; padding-top: 0in; padding-right: 0in; padding-bottom: 0in; padding-left: 0in;"&gt;&lt;span style="font-family: consolas; font-size: 8pt;"&gt;}&lt;/span&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;br /&gt;
&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;&lt;br /&gt;
&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;For our condition&amp;rsquo;s text we will use the macro &amp;ldquo;Operator&amp;rdquo; instead of the StringOperator we used for the nationality condition because this one will allow us to compare numbers and not strings:&lt;br /&gt;
&lt;/div&gt;
&lt;div style="border:1pt solid windowtext;border-image: initial; padding-top: 1pt; padding-right: 4pt; padding-bottom: 1pt; padding-left: 4pt; background-color: white;"&gt;&lt;span style="line-height: 115%; font-family: consolas; font-size: 8pt;"&gt;where the user's number of achievements [operatorid,Operator,,compares to] [Number,Text,,number]&lt;/span&gt;&lt;br /&gt;
&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;&lt;br /&gt;
&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;&lt;strong&gt;Date Condition (Registration Date):&lt;/strong&gt;&lt;br /&gt;
&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;&lt;br /&gt;
&lt;/div&gt;
&lt;div style="border:1pt solid windowtext;border-image: initial; padding-top: 1pt; padding-right: 4pt; padding-bottom: 1pt; padding-left: 4pt; background-color: white;"&gt;
&lt;div style="text-align: justify;"&gt;
&lt;p style="margin-top: 0in; margin-right: 0in; margin-left: 0in; text-align: -webkit-auto;"&gt;&lt;span style="font-family: consolas; font-size: 11px; color: #0000ff;"&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin-top: 0in; margin-right: 0in; margin-bottom: 0.0001pt; margin-left: 0in; font-size: 11pt; font-family: calibri, sans-serif; text-align: -webkit-auto;"&gt;&lt;span style="font-family: consolas; font-size: 8pt; color: blue;"&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="border:medium none; margin-bottom: 0in; line-height: normal; border-image: initial; padding-top: 0in; padding-right: 0in; padding-bottom: 0in; padding-left: 0in;"&gt;&lt;span style="font-family: consolas; font-size: 8pt; color: blue;"&gt;using&lt;/span&gt;&lt;span style="font-family: consolas; font-size: 8pt;"&gt; Sitecore.Rules;&lt;/span&gt;&lt;/p&gt;
&lt;p style="border:medium none; margin-bottom: 0in; line-height: normal; border-image: initial; padding-top: 0in; padding-right: 0in; padding-bottom: 0in; padding-left: 0in;"&gt;&lt;span style="font-family: consolas; font-size: 8pt; color: blue;"&gt;using&lt;/span&gt;&lt;span style="font-family: consolas; font-size: 8pt;"&gt; Sitecore.Rules.Conditions;&lt;/span&gt;&lt;/p&gt;
&lt;p style="border:medium none; margin-bottom: 0in; line-height: normal; border-image: initial; padding-top: 0in; padding-right: 0in; padding-bottom: 0in; padding-left: 0in;"&gt;&lt;span style="font-family: consolas; font-size: 8pt; color: blue;"&gt;namespace&lt;/span&gt;&lt;span style="font-family: consolas; font-size: 8pt;"&gt; RulesEngine.Rules&lt;/span&gt;&lt;/p&gt;
&lt;p style="border:medium none; margin-bottom: 0in; line-height: normal; border-image: initial; padding-top: 0in; padding-right: 0in; padding-bottom: 0in; padding-left: 0in;"&gt;&lt;span style="font-family: consolas; font-size: 8pt;"&gt;{&lt;/span&gt;&lt;/p&gt;
&lt;p style="border:medium none; margin-bottom: 0in; line-height: normal; border-image: initial; padding-top: 0in; padding-right: 0in; padding-bottom: 0in; padding-left: 0in;"&gt;&lt;span style="font-family: consolas; font-size: 8pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;public&lt;/span&gt; &lt;span style="color: blue;"&gt;class&lt;/span&gt; &lt;span style="color: #2b91af;"&gt;RegistrationDateCondition&lt;/span&gt;&amp;lt;T&amp;gt; :&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p style="border:medium none; margin-bottom: 0in; line-height: normal; border-image: initial; padding-top: 0in; padding-right: 0in; padding-bottom: 0in; padding-left: 0in;"&gt;&lt;span style="font-family: consolas; font-size: 8pt;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;OperatorCondition&lt;/span&gt;&amp;lt;T&amp;gt; &lt;span style="color: blue;"&gt;where&lt;/span&gt; T : &lt;span style="color: #2b91af;"&gt;RuleContext&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="border:medium none; margin-bottom: 0in; line-height: normal; border-image: initial; padding-top: 0in; padding-right: 0in; padding-bottom: 0in; padding-left: 0in;"&gt;&lt;span style="font-family: consolas; font-size: 8pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/span&gt;&lt;/p&gt;
&lt;p style="border:medium none; margin-bottom: 0in; line-height: normal; border-image: initial; padding-top: 0in; padding-right: 0in; padding-bottom: 0in; padding-left: 0in;"&gt;&lt;span style="font-family: consolas; font-size: 8pt; color: green;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //This is the value the editor will enter&lt;/span&gt;&lt;/p&gt;
&lt;p style="border:medium none; margin-bottom: 0in; line-height: normal; border-image: initial; padding-top: 0in; padding-right: 0in; padding-bottom: 0in; padding-left: 0in;"&gt;&lt;span style="font-family: consolas; font-size: 8pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;public&lt;/span&gt; &lt;span style="color: blue;"&gt;string&lt;/span&gt; StartDate { &lt;span style="color: blue;"&gt;get&lt;/span&gt;; &lt;span style="color: blue;"&gt;set&lt;/span&gt;; }&lt;/span&gt;&lt;/p&gt;
&lt;p style="border:medium none; margin-bottom: 0in; line-height: normal; border-image: initial; padding-top: 0in; padding-right: 0in; padding-bottom: 0in; padding-left: 0in;"&gt;&lt;span style="font-family: consolas; font-size: 8pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: gray;"&gt;///&lt;/span&gt; &lt;span style="color: gray;"&gt;&amp;lt;summary&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="border:medium none; margin-bottom: 0in; line-height: normal; border-image: initial; padding-top: 0in; padding-right: 0in; padding-bottom: 0in; padding-left: 0in;"&gt;&lt;span style="font-family: consolas; font-size: 8pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: gray;"&gt;///&lt;/span&gt;&lt;span style="color: green;"&gt; This function will be called to test the condition&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="border:medium none; margin-bottom: 0in; line-height: normal; border-image: initial; padding-top: 0in; padding-right: 0in; padding-bottom: 0in; padding-left: 0in;"&gt;&lt;span style="font-family: consolas; font-size: 8pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: gray;"&gt;///&lt;/span&gt; &lt;span style="color: gray;"&gt;&amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;span style="color: green;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="border:medium none; margin-bottom: 0in; line-height: normal; border-image: initial; padding-top: 0in; padding-right: 0in; padding-bottom: 0in; padding-left: 0in;"&gt;&lt;span style="font-family: consolas; font-size: 8pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;protected&lt;/span&gt; &lt;span style="color: blue;"&gt;override&lt;/span&gt; &lt;span style="color: blue;"&gt;bool&lt;/span&gt; Execute(T ruleContext)&lt;/span&gt;&lt;/p&gt;
&lt;p style="border:medium none; margin-bottom: 0in; line-height: normal; border-image: initial; padding-top: 0in; padding-right: 0in; padding-bottom: 0in; padding-left: 0in;"&gt;&lt;span style="font-family: consolas; font-size: 8pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/span&gt;&lt;/p&gt;
&lt;p style="border:medium none; margin-bottom: 0in; line-height: normal; border-image: initial; padding-top: 0in; padding-right: 0in; padding-bottom: 0in; padding-left: 0in;"&gt;&lt;span style="font-family: consolas; font-size: 8pt; color: green;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //Get the current user from our dummy user session manager&lt;/span&gt;&lt;/p&gt;
&lt;p style="border:medium none; margin-bottom: 0in; line-height: normal; border-image: initial; padding-top: 0in; padding-right: 0in; padding-bottom: 0in; padding-left: 0in;"&gt;&lt;span style="font-family: consolas; font-size: 8pt;"&gt;&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="color: blue;"&gt;var&lt;/span&gt; user = &lt;span style="color: #2b91af;"&gt;UserSession&lt;/span&gt;.GetCurrentUser();&lt;/span&gt;&lt;/p&gt;
&lt;p style="border:medium none; margin-bottom: 0in; line-height: normal; border-image: initial; padding-top: 0in; padding-right: 0in; padding-bottom: 0in; padding-left: 0in;"&gt;&lt;span style="font-family: consolas; font-size: 8pt; color: green;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //Check if the user is logged in, otherwise return false&lt;/span&gt;&lt;/p&gt;
&lt;p style="border:medium none; margin-bottom: 0in; line-height: normal; border-image: initial; padding-top: 0in; padding-right: 0in; padding-bottom: 0in; padding-left: 0in;"&gt;&lt;span style="font-family: consolas; font-size: 8pt;"&gt;&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="color: blue;"&gt;if&lt;/span&gt; (user == &lt;span style="color: blue;"&gt;null&lt;/span&gt;)&lt;/span&gt;&lt;/p&gt;
&lt;p style="border:medium none; margin-bottom: 0in; line-height: normal; border-image: initial; padding-top: 0in; padding-right: 0in; padding-bottom: 0in; padding-left: 0in;"&gt;&lt;span style="font-family: consolas; font-size: 8pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;return&lt;/span&gt; &lt;span style="color: blue;"&gt;false&lt;/span&gt;;&lt;/span&gt;&lt;/p&gt;
&lt;p style="border:medium none; margin-bottom: 0in; line-height: normal; border-image: initial; padding-top: 0in; padding-right: 0in; padding-bottom: 0in; padding-left: 0in;"&gt;&lt;span style="font-family: consolas; font-size: 8pt; color: green;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //Check the editor entered a value&lt;/span&gt;&lt;/p&gt;
&lt;p style="border:medium none; margin-bottom: 0in; line-height: normal; border-image: initial; padding-top: 0in; padding-right: 0in; padding-bottom: 0in; padding-left: 0in;"&gt;&lt;span style="font-family: consolas; font-size: 8pt;"&gt;&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="color: blue;"&gt;if&lt;/span&gt; (&lt;span style="color: blue;"&gt;string&lt;/span&gt;.IsNullOrEmpty(StartDate))&lt;/span&gt;&lt;/p&gt;
&lt;p style="border:medium none; margin-bottom: 0in; line-height: normal; border-image: initial; padding-top: 0in; padding-right: 0in; padding-bottom: 0in; padding-left: 0in;"&gt;&lt;span style="font-family: consolas; font-size: 8pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/span&gt;&lt;/p&gt;
&lt;p style="border:medium none; margin-bottom: 0in; line-height: normal; border-image: initial; padding-top: 0in; padding-right: 0in; padding-bottom: 0in; padding-left: 0in;"&gt;&lt;span style="font-family: consolas; font-size: 8pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;return&lt;/span&gt; &lt;span style="color: blue;"&gt;false&lt;/span&gt;;&lt;/span&gt;&lt;/p&gt;
&lt;p style="border:medium none; margin-bottom: 0in; line-height: normal; border-image: initial; padding-top: 0in; padding-right: 0in; padding-bottom: 0in; padding-left: 0in;"&gt;&lt;span style="font-family: consolas; font-size: 8pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/span&gt;&lt;/p&gt;
&lt;p style="border:medium none; margin-bottom: 0in; line-height: normal; border-image: initial; padding-top: 0in; padding-right: 0in; padding-bottom: 0in; padding-left: 0in;"&gt;&lt;span style="font-family: consolas; font-size: 8pt;"&gt;&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="color: #2b91af;"&gt;DateTime&lt;/span&gt; userRegistrationDate = user.RegistrationDate;&lt;/span&gt;&lt;/p&gt;
&lt;p style="border:medium none; margin-bottom: 0in; line-height: normal; border-image: initial; padding-top: 0in; padding-right: 0in; padding-bottom: 0in; padding-left: 0in;"&gt;&lt;span style="font-family: consolas; font-size: 8pt;"&gt;&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="color: #2b91af;"&gt;DateTime&lt;/span&gt; startDate =&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p style="border:medium none; margin-bottom: 0in; line-height: normal; border-image: initial; padding-top: 0in; padding-right: 0in; padding-bottom: 0in; padding-left: 0in;"&gt;&lt;span style="font-family: consolas; font-size: 8pt;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Sitecore.&lt;span style="color: #2b91af;"&gt;DateUtil&lt;/span&gt;.IsoDateToDateTime(StartDate);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/p&gt;
&lt;p style="border:medium none; margin-bottom: 0in; line-height: normal; border-image: initial; padding-top: 0in; padding-right: 0in; padding-bottom: 0in; padding-left: 0in;"&gt;&lt;span style="font-family: consolas; font-size: 8pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/p&gt;
&lt;p style="border:medium none; margin-bottom: 0in; line-height: normal; border-image: initial; padding-top: 0in; padding-right: 0in; padding-bottom: 0in; padding-left: 0in;"&gt;&lt;span style="font-family: consolas; font-size: 8pt; color: green;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //Do a date comparison and take the result return a value&lt;/span&gt;&lt;/p&gt;
&lt;p style="border:medium none; margin-bottom: 0in; line-height: normal; border-image: initial; padding-top: 0in; padding-right: 0in; padding-bottom: 0in; padding-left: 0in;"&gt;&lt;span style="font-family: consolas; font-size: 8pt;"&gt;&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="color: blue;"&gt;var&lt;/span&gt; compareResult =&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p style="border:medium none; margin-bottom: 0in; line-height: normal; border-image: initial; padding-top: 0in; padding-right: 0in; padding-bottom: 0in; padding-left: 0in;"&gt;&lt;span style="font-family: consolas; font-size: 8pt;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; userRegistrationDate.Date.CompareTo(startDate.Date);&lt;/span&gt;&lt;/p&gt;
&lt;p style="border:medium none; margin-bottom: 0in; line-height: normal; border-image: initial; padding-top: 0in; padding-right: 0in; padding-bottom: 0in; padding-left: 0in;"&gt;&lt;span style="font-family: consolas; font-size: 8pt; color: green;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //Get the operator the editor selected&lt;/span&gt;&lt;/p&gt;
&lt;p style="border:medium none; margin-bottom: 0in; line-height: normal; border-image: initial; padding-top: 0in; padding-right: 0in; padding-bottom: 0in; padding-left: 0in;"&gt;&lt;span style="font-family: consolas; font-size: 8pt;"&gt;&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="color: blue;"&gt;switch&lt;/span&gt; (&lt;span style="color: blue;"&gt;this&lt;/span&gt;.GetOperator())&lt;/span&gt;&lt;/p&gt;
&lt;p style="border:medium none; margin-bottom: 0in; line-height: normal; border-image: initial; padding-top: 0in; padding-right: 0in; padding-bottom: 0in; padding-left: 0in;"&gt;&lt;span style="font-family: consolas; font-size: 8pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/span&gt;&lt;/p&gt;
&lt;p style="border:medium none; margin-bottom: 0in; line-height: normal; border-image: initial; padding-top: 0in; padding-right: 0in; padding-bottom: 0in; padding-left: 0in;"&gt;&lt;span style="font-family: consolas; font-size: 8pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;case&lt;/span&gt; &lt;span style="color: #2b91af;"&gt;ConditionOperator&lt;/span&gt;.Equal:&lt;/span&gt;&lt;/p&gt;
&lt;p style="border:medium none; margin-bottom: 0in; line-height: normal; border-image: initial; padding-top: 0in; padding-right: 0in; padding-bottom: 0in; padding-left: 0in;"&gt;&lt;span style="font-family: consolas; font-size: 8pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;return&lt;/span&gt; compareResult == 0;&lt;/span&gt;&lt;/p&gt;
&lt;p style="border:medium none; margin-bottom: 0in; line-height: normal; border-image: initial; padding-top: 0in; padding-right: 0in; padding-bottom: 0in; padding-left: 0in;"&gt;&lt;span style="font-family: consolas; font-size: 8pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;case&lt;/span&gt; &lt;span style="color: #2b91af;"&gt;ConditionOperator&lt;/span&gt;.GreaterThanOrEqual:&lt;/span&gt;&lt;/p&gt;
&lt;p style="border:medium none; margin-bottom: 0in; line-height: normal; border-image: initial; padding-top: 0in; padding-right: 0in; padding-bottom: 0in; padding-left: 0in;"&gt;&lt;span style="font-family: consolas; font-size: 8pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;return&lt;/span&gt; compareResult == 0 || compareResult &amp;gt; 0;&lt;/span&gt;&lt;/p&gt;
&lt;p style="border:medium none; margin-bottom: 0in; line-height: normal; border-image: initial; padding-top: 0in; padding-right: 0in; padding-bottom: 0in; padding-left: 0in;"&gt;&lt;span style="font-family: consolas; font-size: 8pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;case&lt;/span&gt; &lt;span style="color: #2b91af;"&gt;ConditionOperator&lt;/span&gt;.GreaterThan:&lt;/span&gt;&lt;/p&gt;
&lt;p style="border:medium none; margin-bottom: 0in; line-height: normal; border-image: initial; padding-top: 0in; padding-right: 0in; padding-bottom: 0in; padding-left: 0in;"&gt;&lt;span style="font-family: consolas; font-size: 8pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;return&lt;/span&gt; compareResult &amp;gt; 0;&lt;/span&gt;&lt;/p&gt;
&lt;p style="border:medium none; margin-bottom: 0in; line-height: normal; border-image: initial; padding-top: 0in; padding-right: 0in; padding-bottom: 0in; padding-left: 0in;"&gt;&lt;span style="font-family: consolas; font-size: 8pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;case&lt;/span&gt; &lt;span style="color: #2b91af;"&gt;ConditionOperator&lt;/span&gt;.LessThanOrEqual:&lt;/span&gt;&lt;/p&gt;
&lt;p style="border:medium none; margin-bottom: 0in; line-height: normal; border-image: initial; padding-top: 0in; padding-right: 0in; padding-bottom: 0in; padding-left: 0in;"&gt;&lt;span style="font-family: consolas; font-size: 8pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: blue;"&gt;return&lt;/span&gt; compareResult == 0 || compareResult &amp;lt; 0;&lt;/span&gt;&lt;/p&gt;
&lt;p style="border:medium none; margin-bottom: 0in; line-height: normal; border-image: initial; padding-top: 0in; padding-right: 0in; padding-bottom: 0in; padding-left: 0in;"&gt;&lt;span style="font-family: consolas; font-size: 8pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;case&lt;/span&gt; &lt;span style="color: #2b91af;"&gt;ConditionOperator&lt;/span&gt;.LessThan:&lt;/span&gt;&lt;/p&gt;
&lt;p style="border:medium none; margin-bottom: 0in; line-height: normal; border-image: initial; padding-top: 0in; padding-right: 0in; padding-bottom: 0in; padding-left: 0in;"&gt;&lt;span style="font-family: consolas; font-size: 8pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;return&lt;/span&gt; compareResult &amp;lt; 0;&lt;/span&gt;&lt;/p&gt;
&lt;p style="border:medium none; margin-bottom: 0in; line-height: normal; border-image: initial; padding-top: 0in; padding-right: 0in; padding-bottom: 0in; padding-left: 0in;"&gt;&lt;span style="font-family: consolas; font-size: 8pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;case&lt;/span&gt; &lt;span style="color: #2b91af;"&gt;ConditionOperator&lt;/span&gt;.NotEqual:&lt;/span&gt;&lt;/p&gt;
&lt;p style="border:medium none; margin-bottom: 0in; line-height: normal; border-image: initial; padding-top: 0in; padding-right: 0in; padding-bottom: 0in; padding-left: 0in;"&gt;&lt;span style="font-family: consolas; font-size: 8pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;return&lt;/span&gt; compareResult != 0;&lt;/span&gt;&lt;/p&gt;
&lt;p style="border:medium none; margin-bottom: 0in; line-height: normal; border-image: initial; padding-top: 0in; padding-right: 0in; padding-bottom: 0in; padding-left: 0in;"&gt;&lt;span style="font-family: consolas; font-size: 8pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: blue;"&gt;default&lt;/span&gt;:&lt;/span&gt;&lt;/p&gt;
&lt;p style="border:medium none; margin-bottom: 0in; line-height: normal; border-image: initial; padding-top: 0in; padding-right: 0in; padding-bottom: 0in; padding-left: 0in;"&gt;&lt;span style="font-family: consolas; font-size: 8pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;return&lt;/span&gt; &lt;span style="color: blue;"&gt;false&lt;/span&gt;;&lt;/span&gt;&lt;/p&gt;
&lt;p style="border:medium none; margin-bottom: 0in; line-height: normal; border-image: initial; padding-top: 0in; padding-right: 0in; padding-bottom: 0in; padding-left: 0in;"&gt;&lt;span style="font-family: consolas; font-size: 8pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/p&gt;
&lt;p style="border:medium none; margin-bottom: 0in; line-height: normal; border-image: initial; padding-top: 0in; padding-right: 0in; padding-bottom: 0in; padding-left: 0in;"&gt;&lt;span style="font-family: consolas; font-size: 8pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/span&gt;&lt;/p&gt;
&lt;p style="border:medium none; margin-bottom: 0in; line-height: normal; border-image: initial; padding-top: 0in; padding-right: 0in; padding-bottom: 0in; padding-left: 0in;"&gt;&lt;span style="font-family: consolas; font-size: 8pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/span&gt;&lt;/p&gt;
&lt;span style="line-height: 115%; font-family: consolas; font-size: 8pt;"&gt;}&lt;/span&gt;&lt;br /&gt;
&lt;p class="MsoNormal" style="margin-top: 0in; margin-right: 0in; margin-bottom: 0.0001pt; margin-left: 0in; font-size: 11pt; font-family: calibri, sans-serif; text-align: -webkit-auto;"&gt;&lt;span style="font-family: consolas; font-size: 8pt;"&gt;&lt;/span&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;&lt;br /&gt;
&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&lt;div style="text-align: justify;"&gt;For the condition text, we will use the macro &amp;ldquo;DateTime&amp;rdquo; because we need to select a date. Sitecore already has that functionality built in:&lt;br /&gt;
&lt;/div&gt;
&lt;div style="border:1pt solid windowtext;background-color: white; border-image: initial; padding-top: 1pt; padding-right: 4pt; padding-bottom: 1pt; padding-left: 4pt;"&gt;&lt;span style="line-height: 12px; font-family: consolas; font-size: 8pt;"&gt;where user's registration date [operatorid,Operator,,compares to] [StartDate,DateTime,,date]&lt;/span&gt;&lt;br /&gt;
&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;&lt;br /&gt;
&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;&lt;strong&gt;Custom Values Condition (Marital Status):&lt;/strong&gt;&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;&lt;strong&gt;&lt;br /&gt;
&lt;/strong&gt;&lt;/div&gt;
&lt;div style="border:1pt solid windowtext;border-image: initial; padding-top: 1pt; padding-right: 4pt; padding-bottom: 1pt; padding-left: 4pt; background-color: white;"&gt;
&lt;div style="text-align: justify;"&gt;
&lt;p style="border:medium none; margin-bottom: 0in; border-image: initial; padding-top: 0in; padding-right: 0in; padding-bottom: 0in; padding-left: 0in;"&gt;&lt;span style="font-family: consolas; font-size: 11px; color: #0000ff;"&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="border:medium none; margin-bottom: 0in; line-height: normal; border-image: initial; padding-top: 0in; padding-right: 0in; padding-bottom: 0in; padding-left: 0in;"&gt;&lt;span style="font-family: consolas; font-size: 8pt; color: blue;"&gt;using&lt;/span&gt;&lt;span style="font-family: consolas; font-size: 8pt;"&gt; Sitecore.Data.Items;&lt;/span&gt;&lt;/p&gt;
&lt;p style="border:medium none; margin-bottom: 0in; line-height: normal; border-image: initial; padding-top: 0in; padding-right: 0in; padding-bottom: 0in; padding-left: 0in;"&gt;&lt;span style="font-family: consolas; font-size: 8pt; color: blue;"&gt;using&lt;/span&gt;&lt;span style="font-family: consolas; font-size: 8pt;"&gt; Sitecore.Rules;&lt;/span&gt;&lt;/p&gt;
&lt;p style="border:medium none; margin-bottom: 0in; line-height: normal; border-image: initial; padding-top: 0in; padding-right: 0in; padding-bottom: 0in; padding-left: 0in;"&gt;&lt;span style="font-family: consolas; font-size: 8pt; color: blue;"&gt;using&lt;/span&gt;&lt;span style="font-family: consolas; font-size: 8pt;"&gt; Sitecore.Rules.Conditions;&lt;/span&gt;&lt;/p&gt;
&lt;p style="border:medium none; margin-bottom: 0in; line-height: normal; border-image: initial; padding-top: 0in; padding-right: 0in; padding-bottom: 0in; padding-left: 0in;"&gt;&lt;span style="font-family: consolas; font-size: 8pt; color: blue;"&gt;namespace&lt;/span&gt;&lt;span style="font-family: consolas; font-size: 8pt;"&gt; RulesEngine.Rules&lt;/span&gt;&lt;/p&gt;
&lt;p style="border:medium none; margin-bottom: 0in; line-height: normal; border-image: initial; padding-top: 0in; padding-right: 0in; padding-bottom: 0in; padding-left: 0in;"&gt;&lt;span style="font-family: consolas; font-size: 8pt;"&gt;{&lt;/span&gt;&lt;/p&gt;
&lt;p style="border:medium none; margin-bottom: 0in; line-height: normal; border-image: initial; padding-top: 0in; padding-right: 0in; padding-bottom: 0in; padding-left: 0in;"&gt;&lt;span style="font-family: consolas; font-size: 8pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;public&lt;/span&gt; &lt;span style="color: blue;"&gt;class&lt;/span&gt; &lt;span style="color: #2b91af;"&gt;MaritalStatusCondition&lt;/span&gt;&amp;lt;T&amp;gt; :&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p style="border:medium none; margin-bottom: 0in; line-height: normal; border-image: initial; padding-top: 0in; padding-right: 0in; padding-bottom: 0in; padding-left: 0in;"&gt;&lt;span style="font-family: consolas; font-size: 8pt;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;WhenCondition&lt;/span&gt;&amp;lt;T&amp;gt; &lt;span style="color: blue;"&gt;where&lt;/span&gt; T : &lt;span style="color: #2b91af;"&gt;RuleContext&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="border:medium none; margin-bottom: 0in; line-height: normal; border-image: initial; padding-top: 0in; padding-right: 0in; padding-bottom: 0in; padding-left: 0in;"&gt;&lt;span style="font-family: consolas; font-size: 8pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/span&gt;&lt;/p&gt;
&lt;p style="border:medium none; margin-bottom: 0in; line-height: normal; border-image: initial; padding-top: 0in; padding-right: 0in; padding-bottom: 0in; padding-left: 0in;"&gt;&lt;span style="font-family: consolas; font-size: 8pt; color: green;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //This is the value the editor will pick&lt;/span&gt;&lt;/p&gt;
&lt;p style="border:medium none; margin-bottom: 0in; line-height: normal; border-image: initial; padding-top: 0in; padding-right: 0in; padding-bottom: 0in; padding-left: 0in;"&gt;&lt;span style="font-family: consolas; font-size: 8pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;public&lt;/span&gt; &lt;span style="color: blue;"&gt;string&lt;/span&gt; MaritalStatusId { &lt;span style="color: blue;"&gt;get&lt;/span&gt;; &lt;span style="color: blue;"&gt;set&lt;/span&gt;; }&lt;/span&gt;&lt;/p&gt;
&lt;p style="border:medium none; margin-bottom: 0in; line-height: normal; border-image: initial; padding-top: 0in; padding-right: 0in; padding-bottom: 0in; padding-left: 0in;"&gt;&lt;span style="font-family: consolas; font-size: 8pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: gray;"&gt;///&lt;/span&gt; &lt;span style="color: gray;"&gt;&amp;lt;summary&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="border:medium none; margin-bottom: 0in; line-height: normal; border-image: initial; padding-top: 0in; padding-right: 0in; padding-bottom: 0in; padding-left: 0in;"&gt;&lt;span style="font-family: consolas; font-size: 8pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: gray;"&gt;///&lt;/span&gt;&lt;span style="color: green;"&gt; This function will be called to test the condition&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="border:medium none; margin-bottom: 0in; line-height: normal; border-image: initial; padding-top: 0in; padding-right: 0in; padding-bottom: 0in; padding-left: 0in;"&gt;&lt;span style="font-family: consolas; font-size: 8pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: gray;"&gt;///&lt;/span&gt; &lt;span style="color: gray;"&gt;&amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;span style="color: green;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="border:medium none; margin-bottom: 0in; line-height: normal; border-image: initial; padding-top: 0in; padding-right: 0in; padding-bottom: 0in; padding-left: 0in;"&gt;&lt;span style="font-family: consolas; font-size: 8pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;protected&lt;/span&gt; &lt;span style="color: blue;"&gt;override&lt;/span&gt; &lt;span style="color: blue;"&gt;bool&lt;/span&gt; Execute(T ruleContext)&lt;/span&gt;&lt;/p&gt;
&lt;p style="border:medium none; margin-bottom: 0in; line-height: normal; border-image: initial; padding-top: 0in; padding-right: 0in; padding-bottom: 0in; padding-left: 0in;"&gt;&lt;span style="font-family: consolas; font-size: 8pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/span&gt;&lt;/p&gt;
&lt;p style="border:medium none; margin-bottom: 0in; line-height: normal; border-image: initial; padding-top: 0in; padding-right: 0in; padding-bottom: 0in; padding-left: 0in;"&gt;&lt;span style="font-family: consolas; font-size: 8pt; color: green;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //Get the current user from our dummy user session manager&lt;/span&gt;&lt;/p&gt;
&lt;p style="border:medium none; margin-bottom: 0in; line-height: normal; border-image: initial; padding-top: 0in; padding-right: 0in; padding-bottom: 0in; padding-left: 0in;"&gt;&lt;span style="font-family: consolas; font-size: 8pt;"&gt;&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="color: blue;"&gt;var&lt;/span&gt; user = &lt;span style="color: #2b91af;"&gt;UserSession&lt;/span&gt;.GetCurrentUser();&lt;/span&gt;&lt;/p&gt;
&lt;p style="border:medium none; margin-bottom: 0in; line-height: normal; border-image: initial; padding-top: 0in; padding-right: 0in; padding-bottom: 0in; padding-left: 0in;"&gt;&lt;span style="font-family: consolas; font-size: 8pt; color: green;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //Check if the user is logged in, otherwise return false&lt;/span&gt;&lt;/p&gt;
&lt;p style="border:medium none; margin-bottom: 0in; line-height: normal; border-image: initial; padding-top: 0in; padding-right: 0in; padding-bottom: 0in; padding-left: 0in;"&gt;&lt;span style="font-family: consolas; font-size: 8pt;"&gt;&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="color: blue;"&gt;if&lt;/span&gt; (user == &lt;span style="color: blue;"&gt;null&lt;/span&gt;)&lt;/span&gt;&lt;/p&gt;
&lt;p style="border:medium none; margin-bottom: 0in; line-height: normal; border-image: initial; padding-top: 0in; padding-right: 0in; padding-bottom: 0in; padding-left: 0in;"&gt;&lt;span style="font-family: consolas; font-size: 8pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;return&lt;/span&gt; &lt;span style="color: blue;"&gt;false&lt;/span&gt;;&lt;/span&gt;&lt;/p&gt;
&lt;p style="border:medium none; margin-bottom: 0in; line-height: normal; border-image: initial; padding-top: 0in; padding-right: 0in; padding-bottom: 0in; padding-left: 0in;"&gt;&lt;span style="font-family: consolas; font-size: 8pt;"&gt;&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="color: blue;"&gt;if&lt;/span&gt; (&lt;span style="color: blue;"&gt;string&lt;/span&gt;.IsNullOrEmpty(MaritalStatusId))&lt;/span&gt;&lt;/p&gt;
&lt;p style="border:medium none; margin-bottom: 0in; line-height: normal; border-image: initial; padding-top: 0in; padding-right: 0in; padding-bottom: 0in; padding-left: 0in;"&gt;&lt;span style="font-family: consolas; font-size: 8pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;return&lt;/span&gt; &lt;span style="color: blue;"&gt;false&lt;/span&gt;;&lt;/span&gt;&lt;/p&gt;
&lt;p style="border:medium none; margin-bottom: 0in; line-height: normal; border-image: initial; padding-top: 0in; padding-right: 0in; padding-bottom: 0in; padding-left: 0in;"&gt;&lt;span style="font-family: consolas; font-size: 8pt; color: green;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //Read the item selected&lt;/span&gt;&lt;/p&gt;
&lt;p style="border:medium none; margin-bottom: 0in; line-height: normal; border-image: initial; padding-top: 0in; padding-right: 0in; padding-bottom: 0in; padding-left: 0in;"&gt;&lt;span style="font-family: consolas; font-size: 8pt;"&gt;&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="color: #2b91af;"&gt;Item&lt;/span&gt; maritalStatusItem =&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p style="border:medium none; margin-bottom: 0in; line-height: normal; border-image: initial; padding-top: 0in; padding-right: 0in; padding-bottom: 0in; padding-left: 0in;"&gt;&lt;span style="font-family: consolas; font-size: 8pt;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Sitecore.&lt;span style="color: #2b91af;"&gt;Context&lt;/span&gt;.Database.GetItem(MaritalStatusId);&lt;/span&gt;&lt;/p&gt;
&lt;p style="border:medium none; margin-bottom: 0in; line-height: normal; border-image: initial; padding-top: 0in; padding-right: 0in; padding-bottom: 0in; padding-left: 0in;"&gt;&lt;span style="font-family: consolas; font-size: 8pt;"&gt;&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="color: blue;"&gt;if&lt;/span&gt; (maritalStatusItem != &lt;span style="color: blue;"&gt;null&lt;/span&gt;)&lt;/span&gt;&lt;/p&gt;
&lt;p style="border:medium none; margin-bottom: 0in; line-height: normal; border-image: initial; padding-top: 0in; padding-right: 0in; padding-bottom: 0in; padding-left: 0in;"&gt;&lt;span style="font-family: consolas; font-size: 8pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/span&gt;&lt;/p&gt;
&lt;p style="border:medium none; margin-bottom: 0in; line-height: normal; border-image: initial; padding-top: 0in; padding-right: 0in; padding-bottom: 0in; padding-left: 0in;"&gt;&lt;span style="font-family: consolas; font-size: 8pt; color: green;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //To make this sample as simple as possible, I'm only going to&lt;/span&gt;&lt;/p&gt;
&lt;p style="border:medium none; margin-bottom: 0in; line-height: normal; border-image: initial; padding-top: 0in; padding-right: 0in; padding-bottom: 0in; padding-left: 0in;"&gt;&lt;span style="font-family: consolas; font-size: 8pt; color: green;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //&lt;span style="color: #008000; font-family: consolas; font-size: 11px; text-align: justify;"&gt;use the&lt;/span&gt;&amp;nbsp;the item's name&lt;/span&gt;&lt;/p&gt;
&lt;p style="border:medium none; margin-bottom: 0in; line-height: normal; border-image: initial; padding-top: 0in; padding-right: 0in; padding-bottom: 0in; padding-left: 0in;"&gt;&lt;span style="font-family: consolas; font-size: 8pt; color: green;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //Use base function to compare the values&lt;/span&gt;&lt;/p&gt;
&lt;p style="border:medium none; margin-bottom: 0in; line-height: normal; border-image: initial; padding-top: 0in; padding-right: 0in; padding-bottom: 0in; padding-left: 0in;"&gt;&lt;span style="font-family: consolas; font-size: 8pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;return&lt;/span&gt; user.MaritalStatus&lt;/span&gt;&lt;/p&gt;
&lt;p style="border:medium none; margin-bottom: 0in; line-height: normal; border-image: initial; padding-top: 0in; padding-right: 0in; padding-bottom: 0in; padding-left: 0in;"&gt;&lt;span style="font-family: consolas; font-size: 8pt;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; .ToString()&lt;/span&gt;&lt;/p&gt;
&lt;p style="border:medium none; margin-bottom: 0in; line-height: normal; border-image: initial; padding-top: 0in; padding-right: 0in; padding-bottom: 0in; padding-left: 0in;"&gt;&lt;span style="font-family: consolas; font-size: 8pt;"&gt;&lt;span style="font-family: consolas; font-size: 11px; text-align: justify;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/span&gt;&amp;nbsp;&amp;nbsp;.Equals(maritalStatusItem.Name,&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p style="border:medium none; margin-bottom: 0in; line-height: normal; border-image: initial; padding-top: 0in; padding-right: 0in; padding-bottom: 0in; padding-left: 0in;"&gt;&lt;span style="font-family: consolas; font-size: 8pt;"&gt;&lt;span style="color: #2b91af;"&gt;&lt;span style="font-family: consolas; font-size: 11px; text-align: justify;"&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&gt;StringComparison&lt;/span&gt;.InvariantCultureIgnoreCase);&lt;/span&gt;&lt;/p&gt;
&lt;p style="border:medium none; margin-bottom: 0in; line-height: normal; border-image: initial; padding-top: 0in; padding-right: 0in; padding-bottom: 0in; padding-left: 0in;"&gt;&lt;span style="font-family: consolas; font-size: 8pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/span&gt;&lt;/p&gt;
&lt;p style="border:medium none; margin-bottom: 0in; line-height: normal; border-image: initial; padding-top: 0in; padding-right: 0in; padding-bottom: 0in; padding-left: 0in;"&gt;&lt;span style="font-family: consolas; font-size: 8pt;"&gt;&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="color: blue;"&gt;return&lt;/span&gt; &lt;span style="color: blue;"&gt;false&lt;/span&gt;;&lt;/span&gt;&lt;/p&gt;
&lt;p style="border:medium none; margin-bottom: 0in; line-height: normal; border-image: initial; padding-top: 0in; padding-right: 0in; padding-bottom: 0in; padding-left: 0in;"&gt;&lt;span style="font-family: consolas; font-size: 8pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/span&gt;&lt;/p&gt;
&lt;p style="border:medium none; margin-bottom: 0in; line-height: normal; border-image: initial; padding-top: 0in; padding-right: 0in; padding-bottom: 0in; padding-left: 0in;"&gt;&lt;span style="font-family: consolas; font-size: 8pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/span&gt;&lt;/p&gt;
&lt;p style="border:medium none; margin-bottom: 0in; line-height: normal; border-image: initial; padding-top: 0in; padding-right: 0in; padding-bottom: 0in; padding-left: 0in;"&gt; &lt;span style="line-height: 115%; font-family: consolas; font-size: 8pt;"&gt;}&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;/p&gt;
&lt;p style="margin-top: 0in; margin-right: 0in; margin-left: 0in; font-size: 11pt; text-align: -webkit-auto; font-family: calibri, sans-serif;"&gt; &lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;&lt;br /&gt;
&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&lt;div style="text-align: justify;"&gt;For the condition text, we will use &amp;ldquo;Tree&amp;rdquo; and send a parameter with the location of the list of items that the editor will pick from:&lt;br /&gt;
&lt;/div&gt;
&lt;div style="border:1pt solid windowtext;background-color: white; border-image: initial; padding-top: 1pt; padding-right: 4pt; padding-bottom: 1pt; padding-left: 4pt;"&gt;&lt;span style="line-height: 12px; font-family: consolas; font-size: 8pt;"&gt;where the user matital status is [MaritalStatusId,Tree, root=/sitecore/content/Configuration/MaritalStatus, specific marital status]&lt;/span&gt;&lt;br /&gt;
&lt;/div&gt;
&lt;br class="Apple-interchange-newline" /&gt;
&lt;/div&gt;
&lt;br /&gt;
&lt;/div&gt;
&lt;div style="text-align: center;"&gt;&lt;img alt="" src="/blogResources/JuanAriasPosts/5 Sitecore DMS Rules Engine (9).png" style="border:0px;  border-image: initial;" /&gt;&lt;br /&gt;
&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;&lt;br /&gt;
&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;Now we are able to select as many conditions as we need.&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;&lt;br /&gt;
&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;&lt;img alt="" src="/blogResources/JuanAriasPosts/5 Sitecore DMS Rules Engine (10).png" style="border:0px;  border-image: initial; width: 490px;" /&gt;&lt;br /&gt;
&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;&lt;br /&gt;
&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&lt;p&gt;For more information about personalizing content for your site visitor, refer to the &lt;a href="http://sdn.sitecore.net/reference/sitecore%206/rules%20engine%20cookbook.aspx"&gt;Rules Engine Cookbook&lt;/a&gt;&lt;span&gt;.&lt;/span&gt;&lt;/p&gt;
&lt;br /&gt;
&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;&lt;br /&gt;
&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;&lt;/div&gt;
&lt;span style="text-align: justify;"&gt;Post created by Juan Arias, Oshyn Inc. employee.&lt;/span&gt;&lt;span style="text-align: justify;"&gt;&amp;nbsp;&lt;/span&gt;&amp;nbsp;&lt;br /&gt;
&lt;div style="text-align: justify;"&gt;&lt;/div&gt;
</description><link>http://oshyn.com/RSSRetrieve.aspx?ID=2435&amp;A=Link&amp;ObjectID=219417&amp;ObjectType=56&amp;O=http%253a%252f%252foshyn.com%252f_blog%252fWeb_Content_Management%252fpost%252fSitecore_DMS_Part_2_Creating_conditions%252f</link><guid isPermaLink="true">http://oshyn.com/_blog/Web_Content_Management/post/Sitecore_DMS_Part_2_Creating_conditions/</guid><pubDate>Wed, 22 Feb 2012 23:52:00 GMT</pubDate></item><item><title>Sitecore Digital Marketing System (DMS) Part 1: Creating personalized, custom content for site visitors</title><description>&lt;p style="text-align: justify;"&gt;Sitecore&amp;rsquo;s &lt;a href="http://www.sitecore.net/Products/Digital-Marketing-System.aspx"&gt;Digital Marketing System&lt;/a&gt; (DMS) can help you personalize the content your site displays to your users/visitors and can be easily customized to fit your specific requirements while using all the functionality that Sitecore already offers.&lt;/p&gt;
&lt;p style="text-align: justify;"&gt;Let&amp;rsquo;s suppose you want to show different content modules to your users depending on their profile attributes like age, gender, number of twitter followers, number of achievements earned in the site, visitors without an account, etc. &lt;/p&gt;
&lt;p style="text-align: justify;"&gt;We will need to let the site editor choose and create new rules that may include one or more profile attributes; therefore we can&amp;rsquo;t create a set of fixed rules to be used. Also, it is important to note that as result of our personalization, we will be required to:&lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;Show a different sublayout&lt;/li&gt;
    &lt;li&gt;Hide the sublayout&lt;/li&gt;
    &lt;li&gt;Change the datasource of the sublayout&lt;/li&gt;
&lt;/ul&gt;
&lt;p style="text-align: justify;"&gt;First, here is my User Profile class:&lt;/p&gt;
&lt;div style="border:1pt solid windowtext;border-image: initial; padding-top: 1pt; padding-right: 4pt; padding-bottom: 1pt; padding-left: 4pt; background-color: white;"&gt;
&lt;p style="border:medium none; margin-bottom: 0.0001pt; line-height: normal; border-image: initial; padding-top: 0in; padding-right: 0in; padding-bottom: 0in; padding-left: 0in;"&gt;
&lt;span style="font-family: consolas; font-size: 8pt; color: blue;"&gt;namespace&lt;/span&gt;&lt;span style="font-family: consolas; font-size: 8pt;"&gt; RulesEngine.Session&lt;/span&gt;&lt;/p&gt;
&lt;p style="border:medium none; margin-bottom: 0.0001pt; line-height: normal; border-image: initial; padding-top: 0in; padding-right: 0in; padding-bottom: 0in; padding-left: 0in;"&gt;
&lt;span style="font-family: consolas; font-size: 8pt;"&gt;{&lt;/span&gt;&lt;/p&gt;
&lt;p style="border:medium none; margin-bottom: 0.0001pt; line-height: normal; border-image: initial; padding-top: 0in; padding-right: 0in; padding-bottom: 0in; padding-left: 0in;"&gt;
&lt;span style="font-family: consolas; font-size: 8pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;public&lt;/span&gt; &lt;span style="color: blue;"&gt;class&lt;/span&gt; &lt;span style="color: #2b91af;"&gt;UserProfile&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="border:medium none; margin-bottom: 0.0001pt; line-height: normal; border-image: initial; padding-top: 0in; padding-right: 0in; padding-bottom: 0in; padding-left: 0in;"&gt;
&lt;span style="font-family: consolas; font-size: 8pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/span&gt;&lt;/p&gt;
&lt;p style="border:medium none; margin-bottom: 0.0001pt; line-height: normal; border-image: initial; padding-top: 0in; padding-right: 0in; padding-bottom: 0in; padding-left: 0in;"&gt;
&lt;span style="font-family: consolas; font-size: 8pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;public&lt;/span&gt; &lt;span style="color: blue;"&gt;int&lt;/span&gt; UserId { &lt;span style="color: blue;"&gt;get&lt;/span&gt;; &lt;span style="color: blue;"&gt;set&lt;/span&gt;; }&lt;/span&gt;&lt;/p&gt;
&lt;p style="border:medium none; margin-bottom: 0.0001pt; line-height: normal; border-image: initial; padding-top: 0in; padding-right: 0in; padding-bottom: 0in; padding-left: 0in;"&gt;&lt;span style="background-color: white; font-family: consolas; font-size: 11px;"&gt;&lt;/span&gt;&lt;span style="font-family: consolas; font-size: 11px;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="font-family: consolas; font-size: 11px; color: blue;"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="background-color: white; font-family: consolas; font-size: 8pt;"&gt;&lt;span style="color: #2b91af;"&gt;DateTime&lt;/span&gt; RegistrationDate { &lt;span style="color: blue;"&gt;get&lt;/span&gt;; &lt;span style="color: blue;"&gt;set&lt;/span&gt;; }&lt;/span&gt;&lt;/p&gt;
&lt;p style="border:medium none; margin-bottom: 0.0001pt; line-height: normal; border-image: initial; padding-top: 0in; padding-right: 0in; padding-bottom: 0in; padding-left: 0in;"&gt;&lt;span style="background-color: white;"&gt;
&lt;/span&gt;&lt;span style="background-color: white; font-family: consolas; font-size: 8pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;public&lt;/span&gt; &lt;span style="color: blue;"&gt;string&lt;/span&gt; Nationality { &lt;span style="color: blue;"&gt;get&lt;/span&gt;; &lt;span style="color: blue;"&gt;set&lt;/span&gt;; }&lt;/span&gt;&lt;/p&gt;
&lt;p style="border:medium none; margin-bottom: 0.0001pt; line-height: normal; border-image: initial; padding-top: 0in; padding-right: 0in; padding-bottom: 0in; padding-left: 0in;"&gt;&lt;span style="background-color: white;"&gt;
&lt;/span&gt;&lt;span style="background-color: white; font-family: consolas; font-size: 8pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;public&lt;/span&gt; &lt;span style="color: #2b91af;"&gt;UserMaritalStatus&lt;/span&gt; MaritalStatus { &lt;span style="color: blue;"&gt;get&lt;/span&gt;; &lt;span style="color: blue;"&gt;set&lt;/span&gt;; }&lt;/span&gt;&lt;/p&gt;
&lt;p style="border:medium none; margin-bottom: 0.0001pt; line-height: normal; border-image: initial; padding-top: 0in; padding-right: 0in; padding-bottom: 0in; padding-left: 0in;"&gt;&lt;span style="background-color: white;"&gt;
&lt;/span&gt;&lt;span style="background-color: white; font-family: consolas; font-size: 8pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;public&lt;/span&gt; &lt;span style="color: blue;"&gt;int&lt;/span&gt; NumberAchievements { &lt;span style="color: blue;"&gt;get&lt;/span&gt;; &lt;span style="color: blue;"&gt;set&lt;/span&gt;; }&lt;/span&gt;&lt;/p&gt;
&lt;p style="border:medium none; margin-bottom: 0.0001pt; line-height: normal; border-image: initial; padding-top: 0in; padding-right: 0in; padding-bottom: 0in; padding-left: 0in;"&gt;&lt;span style="background-color: white;"&gt;
&lt;/span&gt;&lt;span style="background-color: white; font-family: consolas; font-size: 8pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/span&gt;&lt;/p&gt;
&lt;p style="border:medium none; margin-bottom: 0.0001pt; line-height: normal; border-image: initial; padding-top: 0in; padding-right: 0in; padding-bottom: 0in; padding-left: 0in;"&gt;&lt;span style="background-color: white; font-family: consolas; font-size: 8pt;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/p&gt;
&lt;p style="border:medium none; margin-bottom: 0.0001pt; line-height: normal; border-image: initial; padding-top: 0in; padding-right: 0in; padding-bottom: 0in; padding-left: 0in;"&gt;&lt;span style="background-color: white;"&gt;
&lt;/span&gt;&lt;span style="background-color: white; font-family: consolas; font-size: 8pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;public&lt;/span&gt; &lt;span style="color: blue;"&gt;enum&lt;/span&gt; &lt;span style="color: #2b91af;"&gt;UserMaritalStatus&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="border:medium none; margin-bottom: 0.0001pt; line-height: normal; border-image: initial; padding-top: 0in; padding-right: 0in; padding-bottom: 0in; padding-left: 0in;"&gt;&lt;span style="background-color: white;"&gt;
&lt;/span&gt;&lt;span style="background-color: white; font-family: consolas; font-size: 8pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/span&gt;&lt;/p&gt;
&lt;p style="border:medium none; margin-bottom: 0.0001pt; line-height: normal; border-image: initial; padding-top: 0in; padding-right: 0in; padding-bottom: 0in; padding-left: 0in;"&gt;&lt;span style="background-color: white;"&gt;
&lt;/span&gt;&lt;span style="background-color: white; font-family: consolas; font-size: 8pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Single,&lt;/span&gt;&lt;/p&gt;
&lt;p style="border:medium none; margin-bottom: 0.0001pt; line-height: normal; border-image: initial; padding-top: 0in; padding-right: 0in; padding-bottom: 0in; padding-left: 0in;"&gt;&lt;span style="background-color: white;"&gt;
&lt;/span&gt;&lt;span style="background-color: white; font-family: consolas; font-size: 8pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Married,&lt;/span&gt;&lt;/p&gt;
&lt;p style="border:medium none; margin-bottom: 0.0001pt; line-height: normal; border-image: initial; padding-top: 0in; padding-right: 0in; padding-bottom: 0in; padding-left: 0in;"&gt;&lt;span style="background-color: white;"&gt;
&lt;/span&gt;&lt;span style="background-color: white; font-family: consolas; font-size: 8pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Divorced&lt;/span&gt;&lt;/p&gt;
&lt;p style="border:medium none; margin-bottom: 0.0001pt; line-height: normal; border-image: initial; padding-top: 0in; padding-right: 0in; padding-bottom: 0in; padding-left: 0in;"&gt;&lt;span style="background-color: white;"&gt;
&lt;/span&gt;&lt;span style="background-color: white; font-family: consolas; font-size: 8pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/span&gt;&lt;/p&gt;
&lt;p style="border:medium none; margin-bottom: 0.0001pt; line-height: normal; border-image: initial; padding-top: 0in; padding-right: 0in; padding-bottom: 0in; padding-left: 0in;"&gt;&lt;span style="background-color: white;"&gt;
&lt;/span&gt;&lt;span style="background-color: white; line-height: 115%; font-family: consolas; font-size: 8pt;"&gt;}&lt;/span&gt;&lt;/p&gt;
&lt;p style="border:medium none; margin-bottom: 0.0001pt; line-height: normal; border-image: initial; padding-top: 0in; padding-right: 0in; padding-bottom: 0in; padding-left: 0in;"&gt;&lt;span style="background-color: white; line-height: 115%; font-family: consolas; font-size: 8pt;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;br /&gt;
&lt;p style="text-align: justify;"&gt;To keep this demo as simple as possible, I&amp;rsquo;ll also create a dummy user session manager using a query string value to simulate the current logged in user:&lt;/p&gt;
&lt;div style="border:1pt solid windowtext;border-image: initial; padding-top: 1pt; padding-right: 4pt; padding-bottom: 1pt; padding-left: 4pt; background-color: white;"&gt;
&lt;p style="border:medium none; margin-bottom: 0in; line-height: normal; border-image: initial; padding-top: 0in; padding-right: 0in; padding-bottom: 0in; padding-left: 0in;"&gt;&lt;span style="font-family: consolas; font-size: 8pt; color: blue;"&gt;namespace&lt;/span&gt;&lt;span style="font-family: consolas; font-size: 8pt;"&gt; RulesEngine.Session&lt;/span&gt;&lt;/p&gt;
&lt;p style="border:medium none; margin-bottom: 0in; line-height: normal; border-image: initial; padding-top: 0in; padding-right: 0in; padding-bottom: 0in; padding-left: 0in;"&gt;&lt;span style="font-family: consolas; font-size: 8pt;"&gt;{&lt;/span&gt;&lt;/p&gt;
&lt;p style="border:medium none; margin-bottom: 0in; line-height: normal; border-image: initial; padding-top: 0in; padding-right: 0in; padding-bottom: 0in; padding-left: 0in;"&gt;&lt;span style="font-family: consolas; font-size: 8pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;public&lt;/span&gt; &lt;span style="color: blue;"&gt;static&lt;/span&gt; &lt;span style="color: blue;"&gt;class&lt;/span&gt; &lt;span style="color: #2b91af;"&gt;UserSession&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="border:medium none; margin-bottom: 0in; line-height: normal; border-image: initial; padding-top: 0in; padding-right: 0in; padding-bottom: 0in; padding-left: 0in;"&gt;&lt;span style="font-family: consolas; font-size: 8pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/span&gt;&lt;/p&gt;
&lt;p style="border:medium none; margin-bottom: 0in; line-height: normal; border-image: initial; padding-top: 0in; padding-right: 0in; padding-bottom: 0in; padding-left: 0in;"&gt;&lt;span style="font-family: consolas; font-size: 8pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;public&lt;/span&gt; &lt;span style="color: blue;"&gt;static&lt;/span&gt; &lt;span style="color: #2b91af;"&gt;UserProfile&lt;/span&gt; GetCurrentUser()&lt;/span&gt;&lt;/p&gt;
&lt;p style="border:medium none; margin-bottom: 0in; line-height: normal; border-image: initial; padding-top: 0in; padding-right: 0in; padding-bottom: 0in; padding-left: 0in;"&gt;&lt;span style="font-family: consolas; font-size: 8pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/span&gt;&lt;/p&gt;
&lt;p style="border:medium none; margin-bottom: 0in; line-height: normal; border-image: initial; padding-top: 0in; padding-right: 0in; padding-bottom: 0in; padding-left: 0in;"&gt;&lt;span style="font-family: consolas; font-size: 8pt;"&gt;&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="color: blue;"&gt;var&lt;/span&gt; userId = &lt;span style="color: #2b91af;"&gt;HttpContext&lt;/span&gt;.Current.Request.QueryString[&lt;span style="color: #a31515;"&gt;"UserId"&lt;/span&gt;];&lt;/span&gt;&lt;/p&gt;
&lt;p style="border:medium none; margin-bottom: 0in; line-height: normal; border-image: initial; padding-top: 0in; padding-right: 0in; padding-bottom: 0in; padding-left: 0in;"&gt;&lt;span style="font-family: consolas; font-size: 8pt;"&gt;&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="color: blue;"&gt;if&lt;/span&gt; (&lt;span style="color: blue;"&gt;string&lt;/span&gt;.IsNullOrEmpty(userId))&lt;/span&gt;&lt;/p&gt;
&lt;p style="border:medium none; margin-bottom: 0in; line-height: normal; border-image: initial; padding-top: 0in; padding-right: 0in; padding-bottom: 0in; padding-left: 0in;"&gt;&lt;span style="font-family: consolas; font-size: 8pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/span&gt;&lt;/p&gt;
&lt;p style="border:medium none; margin-bottom: 0in; line-height: normal; border-image: initial; padding-top: 0in; padding-right: 0in; padding-bottom: 0in; padding-left: 0in;"&gt;&lt;span style="font-family: consolas; font-size: 8pt; color: green;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //User not authenticated&lt;/span&gt;&lt;/p&gt;
&lt;p style="border:medium none; margin-bottom: 0in; line-height: normal; border-image: initial; padding-top: 0in; padding-right: 0in; padding-bottom: 0in; padding-left: 0in;"&gt;&lt;span style="font-family: consolas; font-size: 8pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;return&lt;/span&gt; &lt;span style="color: blue;"&gt;null&lt;/span&gt;;&lt;/span&gt;&lt;/p&gt;
&lt;p style="border:medium none; margin-bottom: 0in; line-height: normal; border-image: initial; padding-top: 0in; padding-right: 0in; padding-bottom: 0in; padding-left: 0in;"&gt;&lt;span style="font-family: consolas; font-size: 8pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/span&gt;&lt;/p&gt;
&lt;p style="border:medium none; margin-bottom: 0in; line-height: normal; border-image: initial; padding-top: 0in; padding-right: 0in; padding-bottom: 0in; padding-left: 0in;"&gt;&lt;span style="font-family: consolas; font-size: 8pt;"&gt;&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="color: #2b91af;"&gt;UserProfile&lt;/span&gt; user = &lt;span style="color: blue;"&gt;null&lt;/span&gt;;&lt;/span&gt;&lt;/p&gt;
&lt;p style="border:medium none; margin-bottom: 0in; line-height: normal; border-image: initial; padding-top: 0in; padding-right: 0in; padding-bottom: 0in; padding-left: 0in;"&gt;&lt;span style="font-family: consolas; font-size: 8pt;"&gt;&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="color: blue;"&gt;switch&lt;/span&gt; (userId)&lt;/span&gt;&lt;/p&gt;
&lt;p style="border:medium none; margin-bottom: 0in; line-height: normal; border-image: initial; padding-top: 0in; padding-right: 0in; padding-bottom: 0in; padding-left: 0in;"&gt;&lt;span style="font-family: consolas; font-size: 8pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/span&gt;&lt;/p&gt;
&lt;p style="border:medium none; margin-bottom: 0in; line-height: normal; border-image: initial; padding-top: 0in; padding-right: 0in; padding-bottom: 0in; padding-left: 0in;"&gt;&lt;span style="font-family: consolas; font-size: 8pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;case&lt;/span&gt; &lt;span style="color: #a31515;"&gt;"1"&lt;/span&gt;:&lt;/span&gt;&lt;/p&gt;
&lt;p style="border:medium none; margin-bottom: 0in; line-height: normal; border-image: initial; padding-top: 0in; padding-right: 0in; padding-bottom: 0in; padding-left: 0in;"&gt;&lt;span style="font-family: consolas; font-size: 8pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; user = &lt;span style="color: blue;"&gt;new&lt;/span&gt; &lt;span style="color: #2b91af;"&gt;UserProfile&lt;/span&gt;()&lt;/span&gt;&lt;/p&gt;
&lt;p style="border:medium none; margin-bottom: 0in; line-height: normal; border-image: initial; padding-top: 0in; padding-right: 0in; padding-bottom: 0in; padding-left: 0in;"&gt;&lt;span style="font-family: consolas; font-size: 8pt;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;{&lt;/span&gt;&lt;/p&gt;
&lt;p style="border:medium none; margin-bottom: 0in; line-height: normal; border-image: initial; padding-top: 0in; padding-right: 0in; padding-bottom: 0in; padding-left: 0in;"&gt;&lt;span style="font-family: consolas; font-size: 8pt;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;UserId = 1,&lt;/span&gt;&lt;/p&gt;
&lt;p style="border:medium none; margin-bottom: 0in; line-height: normal; border-image: initial; padding-top: 0in; padding-right: 0in; padding-bottom: 0in; padding-left: 0in;"&gt;&lt;span style="font-family: consolas; font-size: 8pt;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;RegistrationDate = &lt;span style="color: blue;"&gt;new&lt;/span&gt; &lt;span style="color: #2b91af;"&gt;DateTime&lt;/span&gt;(2009, 10, 6),&lt;/span&gt;&lt;/p&gt;
&lt;p style="border:medium none; margin-bottom: 0in; line-height: normal; border-image: initial; padding-top: 0in; padding-right: 0in; padding-bottom: 0in; padding-left: 0in;"&gt;&lt;span style="font-family: consolas; font-size: 8pt;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;MaritalStatus = &lt;span style="color: #2b91af;"&gt;UserMaritalStatus&lt;/span&gt;.Married,&lt;/span&gt;&lt;/p&gt;
&lt;p style="border:medium none; margin-bottom: 0in; line-height: normal; border-image: initial; padding-top: 0in; padding-right: 0in; padding-bottom: 0in; padding-left: 0in;"&gt;&lt;span style="font-family: consolas; font-size: 8pt;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;NumberAchievements = 10,&lt;/span&gt;&lt;/p&gt;
&lt;p style="border:medium none; margin-bottom: 0in; line-height: normal; border-image: initial; padding-top: 0in; padding-right: 0in; padding-bottom: 0in; padding-left: 0in;"&gt;&lt;span style="font-family: consolas; font-size: 8pt;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Nationality = &lt;span style="color: #a31515;"&gt;"British"&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="border:medium none; margin-bottom: 0in; line-height: normal; border-image: initial; padding-top: 0in; padding-right: 0in; padding-bottom: 0in; padding-left: 0in;"&gt;&lt;span style="font-family: consolas; font-size: 8pt;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;};&lt;/span&gt;&lt;/p&gt;
&lt;p style="border:medium none; margin-bottom: 0in; line-height: normal; border-image: initial; padding-top: 0in; padding-right: 0in; padding-bottom: 0in; padding-left: 0in;"&gt;&lt;span style="font-family: consolas; font-size: 8pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;break&lt;/span&gt;;&lt;/span&gt;&lt;/p&gt;
&lt;p style="border:medium none; margin-bottom: 0in; line-height: normal; border-image: initial; padding-top: 0in; padding-right: 0in; padding-bottom: 0in; padding-left: 0in;"&gt;&lt;span style="font-family: consolas; font-size: 8pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;case&lt;/span&gt; &lt;span style="color: #a31515;"&gt;"2"&lt;/span&gt;:&lt;/span&gt;&lt;/p&gt;
&lt;p style="border:medium none; margin-bottom: 0in; line-height: normal; border-image: initial; padding-top: 0in; padding-right: 0in; padding-bottom: 0in; padding-left: 0in;"&gt;&lt;span style="font-family: consolas; font-size: 8pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; user = &lt;span style="color: blue;"&gt;new&lt;/span&gt; &lt;span style="color: #2b91af;"&gt;UserProfile&lt;/span&gt;()&lt;/span&gt;&lt;/p&gt;
&lt;p style="border:medium none; margin-bottom: 0in; line-height: normal; border-image: initial; padding-top: 0in; padding-right: 0in; padding-bottom: 0in; padding-left: 0in;"&gt;&lt;span style="font-family: consolas; font-size: 8pt;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;{&lt;/span&gt;&lt;/p&gt;
&lt;p style="border:medium none; margin-bottom: 0in; line-height: normal; border-image: initial; padding-top: 0in; padding-right: 0in; padding-bottom: 0in; padding-left: 0in;"&gt;&lt;span style="font-family: consolas; font-size: 8pt;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;UserId = 2,&lt;/span&gt;&lt;/p&gt;
&lt;p style="border:medium none; margin-bottom: 0in; line-height: normal; border-image: initial; padding-top: 0in; padding-right: 0in; padding-bottom: 0in; padding-left: 0in;"&gt;&lt;span style="font-family: consolas; font-size: 8pt;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;RegistrationDate = &lt;span style="color: blue;"&gt;new&lt;/span&gt; &lt;span style="color: #2b91af;"&gt;DateTime&lt;/span&gt;(2005, 1, 26),&lt;/span&gt;&lt;/p&gt;
&lt;p style="border:medium none; margin-bottom: 0in; line-height: normal; border-image: initial; padding-top: 0in; padding-right: 0in; padding-bottom: 0in; padding-left: 0in;"&gt;&lt;span style="font-family: consolas; font-size: 8pt;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;MaritalStatus = &lt;span style="color: #2b91af;"&gt;UserMaritalStatus&lt;/span&gt;.Single,&lt;/span&gt;&lt;/p&gt;
&lt;p style="border:medium none; margin-bottom: 0in; line-height: normal; border-image: initial; padding-top: 0in; padding-right: 0in; padding-bottom: 0in; padding-left: 0in;"&gt;&lt;span style="font-family: consolas; font-size: 8pt;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;NumberAchievements = 55,&lt;/span&gt;&lt;/p&gt;
&lt;p style="border:medium none; margin-bottom: 0in; line-height: normal; border-image: initial; padding-top: 0in; padding-right: 0in; padding-bottom: 0in; padding-left: 0in;"&gt;&lt;span style="font-family: consolas; font-size: 8pt;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Nationality = &lt;span style="color: #a31515;"&gt;"American"&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="border:medium none; margin-bottom: 0in; line-height: normal; border-image: initial; padding-top: 0in; padding-right: 0in; padding-bottom: 0in; padding-left: 0in;"&gt;&lt;span style="font-family: consolas; font-size: 8pt;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;};&lt;/span&gt;&lt;/p&gt;
&lt;p style="border:medium none; margin-bottom: 0in; line-height: normal; border-image: initial; padding-top: 0in; padding-right: 0in; padding-bottom: 0in; padding-left: 0in;"&gt;&lt;span style="font-family: consolas; font-size: 8pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;break&lt;/span&gt;;&lt;/span&gt;&lt;/p&gt;
&lt;p style="border:medium none; margin-bottom: 0in; line-height: normal; border-image: initial; padding-top: 0in; padding-right: 0in; padding-bottom: 0in; padding-left: 0in;"&gt;&lt;span style="font-family: consolas; font-size: 8pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;case&lt;/span&gt; &lt;span style="color: #a31515;"&gt;"3"&lt;/span&gt;:&lt;/span&gt;&lt;/p&gt;
&lt;p style="border:medium none; margin-bottom: 0in; line-height: normal; border-image: initial; padding-top: 0in; padding-right: 0in; padding-bottom: 0in; padding-left: 0in;"&gt;&lt;span style="font-family: consolas; font-size: 8pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; user = &lt;span style="color: blue;"&gt;new&lt;/span&gt; &lt;span style="color: #2b91af;"&gt;UserProfile&lt;/span&gt;()&lt;/span&gt;&lt;/p&gt;
&lt;p style="border:medium none; margin-bottom: 0in; line-height: normal; border-image: initial; padding-top: 0in; padding-right: 0in; padding-bottom: 0in; padding-left: 0in;"&gt;&lt;span style="font-family: consolas; font-size: 8pt;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;{&lt;/span&gt;&lt;/p&gt;
&lt;p style="border:medium none; margin-bottom: 0in; line-height: normal; border-image: initial; padding-top: 0in; padding-right: 0in; padding-bottom: 0in; padding-left: 0in;"&gt;&lt;span style="font-family: consolas; font-size: 8pt;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;UserId = 3,&lt;/span&gt;&lt;/p&gt;
&lt;p style="border:medium none; margin-bottom: 0in; line-height: normal; border-image: initial; padding-top: 0in; padding-right: 0in; padding-bottom: 0in; padding-left: 0in;"&gt;&lt;span style="font-family: consolas; font-size: 8pt;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;RegistrationDate = &lt;span style="color: blue;"&gt;new&lt;/span&gt; &lt;span style="color: #2b91af;"&gt;DateTime&lt;/span&gt;(2011, 2, 14),&lt;/span&gt;&lt;/p&gt;
&lt;p style="border:medium none; margin-bottom: 0in; line-height: normal; border-image: initial; padding-top: 0in; padding-right: 0in; padding-bottom: 0in; padding-left: 0in;"&gt;&lt;span style="font-family: consolas; font-size: 8pt;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;MaritalStatus = &lt;span style="color: #2b91af;"&gt;UserMaritalStatus&lt;/span&gt;.Divorced,&lt;/span&gt;&lt;/p&gt;
&lt;p style="border:medium none; margin-bottom: 0in; line-height: normal; border-image: initial; padding-top: 0in; padding-right: 0in; padding-bottom: 0in; padding-left: 0in;"&gt;&lt;span style="font-family: consolas; font-size: 8pt;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;NumberAchievements = 3,&lt;/span&gt;&lt;/p&gt;
&lt;p style="border:medium none; margin-bottom: 0in; line-height: normal; border-image: initial; padding-top: 0in; padding-right: 0in; padding-bottom: 0in; padding-left: 0in;"&gt;&lt;span style="font-family: consolas; font-size: 8pt;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Nationality = &lt;span style="color: #a31515;"&gt;"French"&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="border:medium none; margin-bottom: 0in; line-height: normal; border-image: initial; padding-top: 0in; padding-right: 0in; padding-bottom: 0in; padding-left: 0in;"&gt;&lt;span style="font-family: consolas; font-size: 8pt;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;};&lt;/span&gt;&lt;/p&gt;
&lt;p style="border:medium none; margin-bottom: 0in; line-height: normal; border-image: initial; padding-top: 0in; padding-right: 0in; padding-bottom: 0in; padding-left: 0in;"&gt;&lt;span style="font-family: consolas; font-size: 8pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;break&lt;/span&gt;;&lt;/span&gt;&lt;/p&gt;
&lt;p style="border:medium none; margin-bottom: 0in; line-height: normal; border-image: initial; padding-top: 0in; padding-right: 0in; padding-bottom: 0in; padding-left: 0in;"&gt;&lt;span style="font-family: consolas; font-size: 8pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;case&lt;/span&gt; &lt;span style="color: #a31515;"&gt;"4"&lt;/span&gt;:&lt;/span&gt;&lt;/p&gt;
&lt;p style="border:medium none; margin-bottom: 0in; line-height: normal; border-image: initial; padding-top: 0in; padding-right: 0in; padding-bottom: 0in; padding-left: 0in;"&gt;&lt;span style="font-family: consolas; font-size: 8pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; user = &lt;span style="color: blue;"&gt;new&lt;/span&gt; &lt;span style="color: #2b91af;"&gt;UserProfile&lt;/span&gt;()&lt;/span&gt;&lt;/p&gt;
&lt;p style="border:medium none; margin-bottom: 0in; line-height: normal; border-image: initial; padding-top: 0in; padding-right: 0in; padding-bottom: 0in; padding-left: 0in;"&gt;&lt;span style="font-family: consolas; font-size: 8pt;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;{&lt;/span&gt;&lt;/p&gt;
&lt;p style="border:medium none; margin-bottom: 0in; line-height: normal; border-image: initial; padding-top: 0in; padding-right: 0in; padding-bottom: 0in; padding-left: 0in;"&gt;&lt;span style="font-family: consolas; font-size: 8pt;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;UserId = 4,&lt;/span&gt;&lt;/p&gt;
&lt;p style="border:medium none; margin-bottom: 0in; line-height: normal; border-image: initial; padding-top: 0in; padding-right: 0in; padding-bottom: 0in; padding-left: 0in;"&gt;&lt;span style="font-family: consolas; font-size: 8pt;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;RegistrationDate = &lt;span style="color: blue;"&gt;new&lt;/span&gt; &lt;span style="color: #2b91af;"&gt;DateTime&lt;/span&gt;(1999, 8, 30),&lt;/span&gt;&lt;/p&gt;
&lt;p style="border:medium none; margin-bottom: 0in; line-height: normal; border-image: initial; padding-top: 0in; padding-right: 0in; padding-bottom: 0in; padding-left: 0in;"&gt;&lt;span style="font-family: consolas; font-size: 8pt;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;MaritalStatus = &lt;span style="color: #2b91af;"&gt;UserMaritalStatus&lt;/span&gt;.Single,&lt;/span&gt;&lt;/p&gt;
&lt;p style="border:medium none; margin-bottom: 0in; line-height: normal; border-image: initial; padding-top: 0in; padding-right: 0in; padding-bottom: 0in; padding-left: 0in;"&gt;&lt;span style="font-family: consolas; font-size: 8pt;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;NumberAchievements = 8,&lt;/span&gt;&lt;/p&gt;
&lt;p style="border:medium none; margin-bottom: 0in; line-height: normal; border-image: initial; padding-top: 0in; padding-right: 0in; padding-bottom: 0in; padding-left: 0in;"&gt;&lt;span style="font-family: consolas; font-size: 8pt;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Nationality = &lt;span style="color: #a31515;"&gt;"Ecuadorian"&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="border:medium none; margin-bottom: 0in; line-height: normal; border-image: initial; padding-top: 0in; padding-right: 0in; padding-bottom: 0in; padding-left: 0in;"&gt;&lt;span style="font-family: consolas; font-size: 8pt;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;};&lt;/span&gt;&lt;/p&gt;
&lt;p style="border:medium none; margin-bottom: 0in; line-height: normal; border-image: initial; padding-top: 0in; padding-right: 0in; padding-bottom: 0in; padding-left: 0in;"&gt;&lt;span style="font-family: consolas; font-size: 8pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;break&lt;/span&gt;;&lt;/span&gt;&lt;/p&gt;
&lt;p style="border:medium none; margin-bottom: 0in; line-height: normal; border-image: initial; padding-top: 0in; padding-right: 0in; padding-bottom: 0in; padding-left: 0in;"&gt;&lt;span style="font-family: consolas; font-size: 8pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/span&gt;&lt;/p&gt;
&lt;p style="border:medium none; margin-bottom: 0in; line-height: normal; border-image: initial; padding-top: 0in; padding-right: 0in; padding-bottom: 0in; padding-left: 0in;"&gt;&lt;span style="font-family: consolas; font-size: 8pt;"&gt;&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="color: blue;"&gt;return&lt;/span&gt; user;&lt;/span&gt;&lt;/p&gt;
&lt;p style="border:medium none; margin-bottom: 0in; line-height: normal; border-image: initial; padding-top: 0in; padding-right: 0in; padding-bottom: 0in; padding-left: 0in;"&gt;&lt;span style="font-family: consolas; font-size: 8pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/span&gt;&lt;/p&gt;
&lt;p style="border:medium none; margin-bottom: 0in; line-height: normal; border-image: initial; padding-top: 0in; padding-right: 0in; padding-bottom: 0in; padding-left: 0in;"&gt;&lt;span style="font-family: consolas; font-size: 8pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/span&gt;&lt;/p&gt;
&lt;p style="border:medium none; margin-bottom: 0in; line-height: normal; border-image: initial; padding-top: 0in; padding-right: 0in; padding-bottom: 0in; padding-left: 0in;"&gt;&lt;span style="font-family: consolas; font-size: 8pt;"&gt;}&lt;/span&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;br /&gt;
&lt;p style="text-align: justify;"&gt;Let&amp;rsquo;s start with the user&amp;rsquo;s nationality. All we need to do is create a new class with &lt;strong&gt;StringOperatorCondition&lt;/strong&gt; as the base:&lt;/p&gt;
&lt;div style="border:1pt solid windowtext;border-image: initial; padding-top: 1pt; padding-right: 4pt; padding-bottom: 1pt; padding-left: 4pt; background-color: white;"&gt;
&lt;p style="border:medium none; margin-bottom: 0in; line-height: normal; border-image: initial; padding-top: 0in; padding-right: 0in; padding-bottom: 0in; padding-left: 0in;"&gt;&lt;span style="font-family: consolas; font-size: 8pt; color: blue;"&gt;using&lt;/span&gt;&lt;span style="font-family: consolas; font-size: 8pt;"&gt; Sitecore.Rules;&lt;/span&gt;&lt;/p&gt;
&lt;p style="border:medium none; margin-bottom: 0in; line-height: normal; border-image: initial; padding-top: 0in; padding-right: 0in; padding-bottom: 0in; padding-left: 0in;"&gt;&lt;span style="font-family: consolas; font-size: 8pt; color: blue;"&gt;using&lt;/span&gt;&lt;span style="font-family: consolas; font-size: 8pt;"&gt; Sitecore.Rules.Conditions;&lt;/span&gt;&lt;/p&gt;
&lt;p style="border:medium none; margin-bottom: 0in; line-height: normal; border-image: initial; padding-top: 0in; padding-right: 0in; padding-bottom: 0in; padding-left: 0in;"&gt;&lt;span style="font-family: consolas; font-size: 8pt; color: blue;"&gt;namespace&lt;/span&gt;&lt;span style="font-family: consolas; font-size: 8pt;"&gt; RulesEngine.Rules&lt;/span&gt;&lt;/p&gt;
&lt;p style="border:medium none; margin-bottom: 0in; line-height: normal; border-image: initial; padding-top: 0in; padding-right: 0in; padding-bottom: 0in; padding-left: 0in;"&gt;&lt;span style="font-family: consolas; font-size: 8pt;"&gt;{&lt;/span&gt;&lt;/p&gt;
&lt;p style="border:medium none; margin-bottom: 0in; line-height: normal; border-image: initial; padding-top: 0in; padding-right: 0in; padding-bottom: 0in; padding-left: 0in;"&gt;&lt;span style="font-family: consolas; font-size: 8pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;public&lt;/span&gt; &lt;span style="color: blue;"&gt;class&lt;/span&gt; &lt;span style="color: #2b91af;"&gt;NationalityCondition&lt;/span&gt;&amp;lt;T&amp;gt; :&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p style="border:medium none; margin-bottom: 0in; line-height: normal; border-image: initial; padding-top: 0in; padding-right: 0in; padding-bottom: 0in; padding-left: 0in;"&gt;&lt;span style="font-family: consolas; font-size: 8pt;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;StringOperatorCondition&lt;/span&gt;&amp;lt;T&amp;gt; &lt;span style="color: blue;"&gt;where&lt;/span&gt; T : &lt;span style="color: #2b91af;"&gt;RuleContext&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="border:medium none; margin-bottom: 0in; line-height: normal; border-image: initial; padding-top: 0in; padding-right: 0in; padding-bottom: 0in; padding-left: 0in;"&gt;&lt;span style="font-family: consolas; font-size: 8pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/span&gt;&lt;/p&gt;
&lt;p style="border:medium none; margin-bottom: 0in; line-height: normal; border-image: initial; padding-top: 0in; padding-right: 0in; padding-bottom: 0in; padding-left: 0in;"&gt;&lt;span style="font-family: consolas; font-size: 8pt; color: green;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //This is the value the editor will enter&lt;/span&gt;&lt;/p&gt;
&lt;p style="border:medium none; margin-bottom: 0in; line-height: normal; border-image: initial; padding-top: 0in; padding-right: 0in; padding-bottom: 0in; padding-left: 0in;"&gt;&lt;span style="font-family: consolas; font-size: 8pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;public&lt;/span&gt; &lt;span style="color: blue;"&gt;string&lt;/span&gt; Nationality { &lt;span style="color: blue;"&gt;get&lt;/span&gt;; &lt;span style="color: blue;"&gt;set&lt;/span&gt;; }&lt;/span&gt;&lt;/p&gt;
&lt;p style="border:medium none; margin-bottom: 0in; line-height: normal; border-image: initial; padding-top: 0in; padding-right: 0in; padding-bottom: 0in; padding-left: 0in;"&gt;&lt;span style="font-family: consolas; font-size: 8pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: gray;"&gt;///&lt;/span&gt; &lt;span style="color: gray;"&gt;&amp;lt;summary&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="border:medium none; margin-bottom: 0in; line-height: normal; border-image: initial; padding-top: 0in; padding-right: 0in; padding-bottom: 0in; padding-left: 0in;"&gt;&lt;span style="font-family: consolas; font-size: 8pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: gray;"&gt;///&lt;/span&gt;&lt;span style="color: green;"&gt; This function will be called to test the condition&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="border:medium none; margin-bottom: 0in; line-height: normal; border-image: initial; padding-top: 0in; padding-right: 0in; padding-bottom: 0in; padding-left: 0in;"&gt;&lt;span style="font-family: consolas; font-size: 8pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: gray;"&gt;///&lt;/span&gt; &lt;span style="color: gray;"&gt;&amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;span style="color: green;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="border:medium none; margin-bottom: 0in; line-height: normal; border-image: initial; padding-top: 0in; padding-right: 0in; padding-bottom: 0in; padding-left: 0in;"&gt;&lt;span style="font-family: consolas; font-size: 8pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;protected&lt;/span&gt; &lt;span style="color: blue;"&gt;override&lt;/span&gt; &lt;span style="color: blue;"&gt;bool&lt;/span&gt; Execute(T ruleContext)&lt;/span&gt;&lt;/p&gt;
&lt;p style="border:medium none; margin-bottom: 0in; line-height: normal; border-image: initial; padding-top: 0in; padding-right: 0in; padding-bottom: 0in; padding-left: 0in;"&gt;&lt;span style="font-family: consolas; font-size: 8pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/span&gt;&lt;/p&gt;
&lt;p style="border:medium none; margin-bottom: 0in; line-height: normal; border-image: initial; padding-top: 0in; padding-right: 0in; padding-bottom: 0in; padding-left: 0in;"&gt;&lt;span style="font-family: consolas; font-size: 8pt; color: green;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //Get the current user from our dummy user session manager&lt;/span&gt;&lt;/p&gt;
&lt;p style="border:medium none; margin-bottom: 0in; line-height: normal; border-image: initial; padding-top: 0in; padding-right: 0in; padding-bottom: 0in; padding-left: 0in;"&gt;&lt;span style="font-family: consolas; font-size: 8pt;"&gt;&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="color: blue;"&gt;var&lt;/span&gt; user = &lt;span style="color: #2b91af;"&gt;UserSession&lt;/span&gt;.GetCurrentUser();&lt;/span&gt;&lt;/p&gt;
&lt;p style="border:medium none; margin-bottom: 0in; line-height: normal; border-image: initial; padding-top: 0in; padding-right: 0in; padding-bottom: 0in; padding-left: 0in;"&gt;&lt;span style="font-family: consolas; font-size: 8pt; color: green;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //Check if the user is logged in, otherwise return false&lt;/span&gt;&lt;/p&gt;
&lt;p style="border:medium none; margin-bottom: 0in; line-height: normal; border-image: initial; padding-top: 0in; padding-right: 0in; padding-bottom: 0in; padding-left: 0in;"&gt;&lt;span style="font-family: consolas; font-size: 8pt;"&gt;&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="color: blue;"&gt;if&lt;/span&gt; (user == &lt;span style="color: blue;"&gt;null&lt;/span&gt;)&lt;/span&gt;&lt;/p&gt;
&lt;p style="border:medium none; margin-bottom: 0in; line-height: normal; border-image: initial; padding-top: 0in; padding-right: 0in; padding-bottom: 0in; padding-left: 0in;"&gt;&lt;span style="font-family: consolas; font-size: 8pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;return&lt;/span&gt; &lt;span style="color: blue;"&gt;false&lt;/span&gt;;&lt;/span&gt;&lt;/p&gt;
&lt;p style="border:medium none; margin-bottom: 0in; line-height: normal; border-image: initial; padding-top: 0in; padding-right: 0in; padding-bottom: 0in; padding-left: 0in;"&gt;&lt;span style="font-family: consolas; font-size: 8pt; color: green;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //Use base function to compare the values&lt;/span&gt;&lt;/p&gt;
&lt;p style="border:medium none; margin-bottom: 0in; line-height: normal; border-image: initial; padding-top: 0in; padding-right: 0in; padding-bottom: 0in; padding-left: 0in;"&gt;&lt;span style="font-family: consolas; font-size: 8pt;"&gt;&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="color: blue;"&gt;return&lt;/span&gt; &lt;span style="color: blue;"&gt;this&lt;/span&gt;.Compare(user.Nationality, Nationality);&lt;/span&gt;&lt;/p&gt;
&lt;p style="border:medium none; margin-bottom: 0in; line-height: normal; border-image: initial; padding-top: 0in; padding-right: 0in; padding-bottom: 0in; padding-left: 0in;"&gt;&lt;span style="font-family: consolas; font-size: 8pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/span&gt;&lt;/p&gt;
&lt;p style="border:medium none; margin-bottom: 0in; line-height: normal; border-image: initial; padding-top: 0in; padding-right: 0in; padding-bottom: 0in; padding-left: 0in;"&gt;&lt;span style="font-family: consolas; font-size: 8pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/span&gt;&lt;/p&gt;
&lt;span style="line-height: 115%; font-family: consolas; font-size: 8pt;"&gt;}&lt;/span&gt;&lt;br /&gt;
&lt;/div&gt;
&lt;br /&gt;
&lt;span&gt;After a build of the solution, we need to register this new condition in Sitecore and copy the output dll file to the website&amp;rsquo;s bin directory (if using a separate project). Open Sitecore&amp;rsquo;s content editor and navigate to the location: &lt;strong&gt;/sitecore/system/Settings/Rules/Conditional Renderings/Conditions &lt;/strong&gt;and create a new folder:&lt;/span&gt;&lt;br /&gt;
&lt;div&gt;&lt;span&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;
&lt;div style="text-align: center;"&gt;&lt;span&gt;&lt;img alt="" src="/blogResources/JuanAriasPosts/5 Sitecore DMS Rules Engine (1).png" style="border:0px;  border-image: initial;" /&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;Then we create a new condition:&lt;br /&gt;
&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;
&lt;div style="text-align: center;"&gt;&lt;span style="border-style: initial; border-color: initial; border-image: initial;"&gt;&lt;img alt="" src="/blogResources/JuanAriasPosts/5 Sitecore DMS Rules Engine (2).png" style="border:0px;  border-image: initial;" /&gt;&lt;/span&gt;&lt;span style="font-family: calibri, sans-serif;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style="line-height: 115%; font-family: calibri, sans-serif; font-size: 11pt;"&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;The Text field is the content that will be shown to the editor when selecting this condition, we put the following text:&lt;/div&gt;
&lt;div style="border:1pt solid windowtext;border-image: initial; padding-top: 1pt; padding-right: 4pt; padding-bottom: 1pt; padding-left: 4pt; background-color: white;"&gt;
&lt;p style="text-align: justify;"&gt;&lt;span style="font-family: consolas; font-size: 8pt;"&gt;where the user's nationality [operatorid,StringOperator,,compares to] [Nationality,Text,,nationality name]&lt;/span&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;p style="text-align: justify;"&gt;Notice that it has some special content surrounded by square brackets. This tag has four parameters: the first is the name of the a property in the condition, the second parameter is the name of the sitecore's item also known as &lt;em&gt;macro&lt;/em&gt; (located in &lt;strong&gt;/Sitecore/System/Settings/Rules/Common/Macros&lt;/strong&gt;), the third parameter is a parameter that will be sent to the macro item selected in the second parameter, and the fourth parameter is the text shown to the editor before he enters a value for the condition. In our case we have:
&lt;/p&gt;
&lt;p style="text-align: justify;"&gt;&lt;span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;table border="1" cellspacing="0" cellpadding="0" style="border: none;  border-image: initial; border-collapse: collapse;"&gt;
    &lt;tbody&gt;
        &lt;tr&gt;
            &lt;td valign="top" style="border:1pt solid windowtext;border-image: initial; width: 1.45in; padding-top: 0in; padding-right: 5.4pt; padding-bottom: 0in; padding-left: 5.4pt;"&gt;
            &lt;p style="text-align: justify;"&gt;&lt;strong&gt;&lt;span style="font-family: arial; font-size: 12px;"&gt;Parameter&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;
            &lt;/td&gt;
            &lt;td valign="top" style="width: 4.75in; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-top-color: windowtext; border-right-color: windowtext; border-bottom-color: windowtext; border-top-width: 1pt; border-right-width: 1pt; border-bottom-width: 1pt; border-left-style: none; border-left-width: initial; border-left-color: initial; padding-top: 0in; padding-right: 5.4pt; padding-bottom: 0in; padding-left: 5.4pt;"&gt;
            &lt;p style="text-align: justify;"&gt;&lt;strong&gt;&lt;span style="font-family: arial; font-size: 12px;"&gt;Object&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;
            &lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td valign="top" style="width: 1.45in; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-right-color: windowtext; border-bottom-color: windowtext; border-left-color: windowtext; border-right-width: 1pt; border-bottom-width: 1pt; border-left-width: 1pt; border-top-style: none; border-top-width: initial; border-top-color: initial; padding-top: 0in; padding-right: 5.4pt; padding-bottom: 0in; padding-left: 5.4pt;"&gt;
            &lt;p style="text-align: justify;"&gt;&lt;span style="font-family: arial; font-size: 12px;"&gt;operatorid&lt;/span&gt;&lt;/p&gt;
            &lt;/td&gt;
            &lt;td valign="top" style="width: 4.75in; border-top-style: none; border-top-width: initial; border-top-color: initial; border-left-style: none; border-left-width: initial; border-left-color: initial; border-bottom-style: solid; border-bottom-color: windowtext; border-bottom-width: 1pt; border-right-style: solid; border-right-color: windowtext; border-right-width: 1pt; padding-top: 0in; padding-right: 5.4pt; padding-bottom: 0in; padding-left: 5.4pt;"&gt;
            &lt;p&gt;&lt;span style="font-family: arial; font-size: 12px;"&gt;Sitecore.Rules.Conditions.StringOperatorCondition.OperatorId&lt;/span&gt;&lt;/p&gt;
            &lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td valign="top" style="width: 1.45in; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-right-color: windowtext; border-bottom-color: windowtext; border-left-color: windowtext; border-right-width: 1pt; border-bottom-width: 1pt; border-left-width: 1pt; border-top-style: none; border-top-width: initial; border-top-color: initial; padding-top: 0in; padding-right: 5.4pt; padding-bottom: 0in; padding-left: 5.4pt;"&gt;
            &lt;p style="text-align: justify;"&gt;&lt;span style="font-family: arial; font-size: 12px;"&gt;StringOperator&lt;/span&gt;&lt;/p&gt;
            &lt;/td&gt;
            &lt;td valign="top" style="width: 4.75in; border-top-style: none; border-top-width: initial; border-top-color: initial; border-left-style: none; border-left-width: initial; border-left-color: initial; border-bottom-style: solid; border-bottom-color: windowtext; border-bottom-width: 1pt; border-right-style: solid; border-right-color: windowtext; border-right-width: 1pt; padding-top: 0in; padding-right: 5.4pt; padding-bottom: 0in; padding-left: 5.4pt;"&gt;
            &lt;p style="text-align: justify;"&gt;&lt;span style="font-family: arial; font-size: 12px;"&gt;/sitecore/system/Settings/Rules/Common/String Operators&lt;/span&gt;&lt;/p&gt;
            &lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td valign="top" style="width: 1.45in; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-right-color: windowtext; border-bottom-color: windowtext; border-left-color: windowtext; border-right-width: 1pt; border-bottom-width: 1pt; border-left-width: 1pt; border-top-style: none; border-top-width: initial; border-top-color: initial; padding-top: 0in; padding-right: 5.4pt; padding-bottom: 0in; padding-left: 5.4pt;"&gt;
            &lt;p style="text-align: justify;"&gt;&lt;span style="font-family: arial; font-size: 12px;"&gt;(empty)&lt;/span&gt;&lt;/p&gt;
            &lt;/td&gt;
            &lt;td valign="top" style="width: 4.75in; border-top-style: none; border-top-width: initial; border-top-color: initial; border-left-style: none; border-left-width: initial; border-left-color: initial; border-bottom-style: solid; border-bottom-color: windowtext; border-bottom-width: 1pt; border-right-style: solid; border-right-color: windowtext; border-right-width: 1pt; padding-top: 0in; padding-right: 5.4pt; padding-bottom: 0in; padding-left: 5.4pt;"&gt;
            &lt;p style="text-align: justify;"&gt;&lt;span style="font-family: arial; font-size: 12px;"&gt;We don&amp;rsquo;t need a parameter&lt;/span&gt;&lt;/p&gt;
            &lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td valign="top" style="width: 1.45in; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-right-color: windowtext; border-bottom-color: windowtext; border-left-color: windowtext; border-right-width: 1pt; border-bottom-width: 1pt; border-left-width: 1pt; border-top-style: none; border-top-width: initial; border-top-color: initial; padding-top: 0in; padding-right: 5.4pt; padding-bottom: 0in; padding-left: 5.4pt;"&gt;
            &lt;p style="text-align: justify;"&gt;&lt;span style="font-family: arial; font-size: 12px;"&gt;compares to&lt;/span&gt;&lt;/p&gt;
            &lt;/td&gt;
            &lt;td valign="top" style="width: 4.75in; border-top-style: none; border-top-width: initial; border-top-color: initial; border-left-style: none; border-left-width: initial; border-left-color: initial; border-bottom-style: solid; border-bottom-color: windowtext; border-bottom-width: 1pt; border-right-style: solid; border-right-color: windowtext; border-right-width: 1pt; padding-top: 0in; padding-right: 5.4pt; padding-bottom: 0in; padding-left: 5.4pt;"&gt;
            &lt;p style="text-align: justify;"&gt;&lt;span style="font-family: arial; font-size: 12px;"&gt;This text will be shown to the editor&lt;/span&gt;&lt;/p&gt;
            &lt;/td&gt;
        &lt;/tr&gt;
    &lt;/tbody&gt;
&lt;/table&gt;
&lt;span&gt;&lt;br /&gt;
&lt;table border="1" cellspacing="0" cellpadding="0" style="border: none;  border-image: initial; border-collapse: collapse;"&gt;
    &lt;tbody&gt;
        &lt;tr&gt;
            &lt;td valign="top" style="border:1pt solid windowtext;border-image: initial; width: 1.45in; padding-top: 0in; padding-right: 5.4pt; padding-bottom: 0in; padding-left: 5.4pt;"&gt;
            &lt;p style="text-align: justify;"&gt;&lt;strong&gt;&lt;span style="font-family: arial; font-size: 12px;"&gt;Parameter&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;
            &lt;/td&gt;
            &lt;td valign="top" style="width: 4.75in; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-top-color: windowtext; border-right-color: windowtext; border-bottom-color: windowtext; border-top-width: 1pt; border-right-width: 1pt; border-bottom-width: 1pt; border-left-style: none; border-left-width: initial; border-left-color: initial; padding-top: 0in; padding-right: 5.4pt; padding-bottom: 0in; padding-left: 5.4pt;"&gt;
            &lt;p style="text-align: justify;"&gt;&lt;strong&gt;&lt;span style="font-family: arial; font-size: 12px;"&gt;Object&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;
            &lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td valign="top" style="width: 1.45in; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-right-color: windowtext; border-bottom-color: windowtext; border-left-color: windowtext; border-right-width: 1pt; border-bottom-width: 1pt; border-left-width: 1pt; border-top-style: none; border-top-width: initial; border-top-color: initial; padding-top: 0in; padding-right: 5.4pt; padding-bottom: 0in; padding-left: 5.4pt;"&gt;
            &lt;p style="text-align: justify;"&gt;&lt;span style="font-family: arial; font-size: 12px;"&gt;Nationality&lt;/span&gt;&lt;/p&gt;
            &lt;/td&gt;
            &lt;td valign="top" style="width: 4.75in; border-top-style: none; border-top-width: initial; border-top-color: initial; border-left-style: none; border-left-width: initial; border-left-color: initial; border-bottom-style: solid; border-bottom-color: windowtext; border-bottom-width: 1pt; border-right-style: solid; border-right-color: windowtext; border-right-width: 1pt; padding-top: 0in; padding-right: 5.4pt; padding-bottom: 0in; padding-left: 5.4pt;"&gt;
            &lt;p&gt;&lt;span style="font-family: arial; font-size: 12px;"&gt;&lt;span style="font-size: 12px;"&gt;Our &lt;/span&gt;&lt;span style="font-size: 12px;"&gt;RulesEngine.Rules.NationalityCondition.Nationality&lt;/span&gt; &lt;/span&gt;&lt;/p&gt;
            &lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td valign="top" style="width: 1.45in; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-right-color: windowtext; border-bottom-color: windowtext; border-left-color: windowtext; border-right-width: 1pt; border-bottom-width: 1pt; border-left-width: 1pt; border-top-style: none; border-top-width: initial; border-top-color: initial; padding-top: 0in; padding-right: 5.4pt; padding-bottom: 0in; padding-left: 5.4pt;"&gt;
            &lt;p style="text-align: justify;"&gt;&lt;span style="font-family: arial; font-size: 12px;"&gt;Text&lt;/span&gt;&lt;/p&gt;
            &lt;/td&gt;
            &lt;td valign="top" style="width: 4.75in; border-top-style: none; border-top-width: initial; border-top-color: initial; border-left-style: none; border-left-width: initial; border-left-color: initial; border-bottom-style: solid; border-bottom-color: windowtext; border-bottom-width: 1pt; border-right-style: solid; border-right-color: windowtext; border-right-width: 1pt; padding-top: 0in; padding-right: 5.4pt; padding-bottom: 0in; padding-left: 5.4pt;"&gt;
            &lt;p style="text-align: justify;"&gt;&lt;span style="font-family: arial; font-size: 12px;"&gt;It will request a single line of text&lt;/span&gt;&lt;/p&gt;
            &lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td valign="top" style="width: 1.45in; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-right-color: windowtext; border-bottom-color: windowtext; border-left-color: windowtext; border-right-width: 1pt; border-bottom-width: 1pt; border-left-width: 1pt; border-top-style: none; border-top-width: initial; border-top-color: initial; padding-top: 0in; padding-right: 5.4pt; padding-bottom: 0in; padding-left: 5.4pt;"&gt;
            &lt;p style="text-align: justify;"&gt;&lt;span style="font-family: arial; font-size: 12px;"&gt;(empty)&lt;/span&gt;&lt;/p&gt;
            &lt;/td&gt;
            &lt;td valign="top" style="width: 4.75in; border-top-style: none; border-top-width: initial; border-top-color: initial; border-left-style: none; border-left-width: initial; border-left-color: initial; border-bottom-style: solid; border-bottom-color: windowtext; border-bottom-width: 1pt; border-right-style: solid; border-right-color: windowtext; border-right-width: 1pt; padding-top: 0in; padding-right: 5.4pt; padding-bottom: 0in; padding-left: 5.4pt;"&gt;
            &lt;p style="text-align: justify;"&gt;&lt;span style="font-family: arial; font-size: 12px;"&gt;We don&amp;rsquo;t need a parameter&lt;/span&gt;&lt;/p&gt;
            &lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td valign="top" style="width: 1.45in; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-right-color: windowtext; border-bottom-color: windowtext; border-left-color: windowtext; border-right-width: 1pt; border-bottom-width: 1pt; border-left-width: 1pt; border-top-style: none; border-top-width: initial; border-top-color: initial; padding-top: 0in; padding-right: 5.4pt; padding-bottom: 0in; padding-left: 5.4pt;"&gt;
            &lt;p style="text-align: justify;"&gt;&lt;span style="font-family: arial; font-size: 12px;"&gt;nationality name&lt;/span&gt;&lt;/p&gt;
            &lt;/td&gt;
            &lt;td valign="top" style="width: 4.75in; border-top-style: none; border-top-width: initial; border-top-color: initial; border-left-style: none; border-left-width: initial; border-left-color: initial; border-bottom-style: solid; border-bottom-color: windowtext; border-bottom-width: 1pt; border-right-style: solid; border-right-color: windowtext; border-right-width: 1pt; padding-top: 0in; padding-right: 5.4pt; padding-bottom: 0in; padding-left: 5.4pt;"&gt;
            &lt;p style="text-align: justify;"&gt;&lt;span style="font-family: arial; font-size: 12px;"&gt;This text will be shown to the editor&lt;/span&gt;&lt;/p&gt;
            &lt;/td&gt;
        &lt;/tr&gt;
    &lt;/tbody&gt;
&lt;/table&gt;
&lt;/span&gt;
&lt;p style="text-align: justify;"&gt;&lt;span&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/p&gt;
&lt;p style="text-align: justify;"&gt;&lt;span&gt;To apply this new rule to our site, we go to the item we want to personalize, then go to Presentation -&amp;gt; Layout Details:&lt;/span&gt;&lt;/p&gt;
&lt;div style="text-align: center;"&gt;&lt;img alt="" src="/blogResources/JuanAriasPosts/5 Sitecore DMS Rules Engine (3).png" style="border:0px;  border-image: initial; width: 490px;" /&gt;&lt;/div&gt;
&lt;p style="text-align: justify;"&gt;Then on the new window, click on Edit:&lt;/p&gt;
&lt;p style="text-align: center;"&gt;&lt;img alt="" src="/blogResources/JuanAriasPosts/5 Sitecore DMS Rules Engine (4).png" style="border:0px;  border-image: initial;" /&gt;&lt;/p&gt;
&lt;p style="text-align: justify;"&gt;Under Controls, select the sublayout and click on Personalize. Notice that this Personalize button only appears once you add DMS to your Sitecore installation:&lt;/p&gt;
&lt;p style="text-align: center;"&gt;&lt;img alt="" src="/blogResources/JuanAriasPosts/5 Sitecore DMS Rules Engine (5).png" style="border:0px;  border-image: initial; width: 490px;" /&gt;&lt;/p&gt;
&lt;p style="text-align: justify;"&gt;Then click on New Condition:&lt;/p&gt;
&lt;p style="text-align: center;"&gt;&lt;img alt="" src="/blogResources/JuanAriasPosts/5 Sitecore DMS Rules Engine (6).png" style="border:0px;  border-image: initial; width: 490px;" /&gt;&lt;/p&gt;
&lt;p style="text-align: justify;"&gt;Enter a name for the condition and then click Edit:&lt;/p&gt;
&lt;p style="text-align: center;"&gt;&lt;img alt="" src="/blogResources/JuanAriasPosts/5 Sitecore DMS Rules Engine (7).png" style="border:0px;  border-image: initial; width: 490px;" /&gt;&lt;/p&gt;
&lt;p style="text-align: justify;"&gt;Now we can select our new condition:&lt;/p&gt;
&lt;p style="text-align: center;"&gt;&lt;img alt="" src="/blogResources/JuanAriasPosts/5 Sitecore DMS Rules Engine (8).png" style="border:0px;  border-image: initial; width: 490px;" /&gt;&lt;/p&gt;
&lt;p style="text-align: justify;"&gt;See part two of this post for how to create conditions that will compare integer, dates and other custom values.&lt;/p&gt;
&lt;p style="text-align: justify;"&gt;&lt;/p&gt;
&lt;p style="text-align: justify;"&gt;&lt;span style="text-align: justify;"&gt;Post created by Juan Arias, Oshyn Inc. employee.&lt;/span&gt;&amp;nbsp;&lt;/p&gt;
</description><link>http://oshyn.com/RSSRetrieve.aspx?ID=2435&amp;A=Link&amp;ObjectID=219383&amp;ObjectType=56&amp;O=http%253a%252f%252foshyn.com%252f_blog%252fWeb_Content_Management%252fpost%252fSitecore_DMS_Part_1_Creating_custom_content%252f</link><guid isPermaLink="true">http://oshyn.com/_blog/Web_Content_Management/post/Sitecore_DMS_Part_1_Creating_custom_content/</guid><pubDate>Wed, 22 Feb 2012 23:05:00 GMT</pubDate></item><item><title>Using WinSCP for SFTP connections from NAnt for Sitecore and EPiServer projects</title><description>&lt;p&gt;Oshyn uses a combination of Jenkins and NAnt to do builds and deployments of our .NET projects (Sitecore and EPiServer). While this has worked great for us, one of the challenges has been the FTP deployments. &amp;nbsp;We had been using the FTPTask from Spin The Moose which was previously found here: &amp;nbsp;&lt;a href="http://www.spinthemoose.com/~ftptask/"&gt;http://www.spinthemoose.com/~ftptask/&lt;/a&gt;. &amp;nbsp;&lt;/p&gt;
&lt;p&gt;The NAnt tasks looked like this:&lt;/p&gt;
&lt;pre class="brush:xml"&gt;&amp;lt;loadtasks assembly="${path::combine(nant-ftptask.dir, 'bin/Release/ftptask.dll')}" /&amp;gt;
    &amp;lt;connection id="ftp-conn" server="${server.ftp}" username="${user.ftp}" password="${password.ftp}" /&amp;gt;
    &amp;lt;connection id="ftp-conn-cd" server="${cd.server.ftp}" username="${cd.user.ftp}" password="${cd.password.ftp}" /&amp;gt;
    &amp;lt;ftp connection="ftp-conn" remotedir="${remotedir.ftp}"&amp;gt;
      &amp;lt;put type="ascii" localdir="${website-source.ftp}" remotedir=""&amp;gt;
        &amp;lt;include name="Web.config" /&amp;gt;
        &amp;lt;include name="Global.asax" /&amp;gt;
        &amp;lt;include name="ClientEventTracker.ashx" /&amp;gt;
        &amp;lt;include name="ClientEventTracker.js" /&amp;gt;
        &amp;lt;include name="LuceneSearch.css" /&amp;gt;
      &amp;lt;/put&amp;gt;
      &amp;lt;!-- Include in the following PUT all DLLs that are not part of the standard Sitecore installation --&amp;gt;
      &amp;lt;put type="bin" localdir="${website-source.ftp}/bin" remotedir="bin" createdirs="true"&amp;gt;
        &amp;lt;include name="*.dll" /&amp;gt;
        &amp;lt;include name="*.xml" /&amp;gt;
      &amp;lt;/put&amp;gt;
      &amp;lt;put type="ascii" localdir="${website-source.ftp}/layouts" remotedir="layouts" createdirs="true"&amp;gt;
        &amp;lt;include name="**.ascx" /&amp;gt;
      &amp;lt;/put&amp;gt;
      &amp;lt;put type="ascii" localdir="${website-source.ftp}/xsl" remotedir="xsl" createdirs="true"&amp;gt;
        &amp;lt;include name="**" /&amp;gt;
      &amp;lt;/put&amp;gt;
      &amp;lt;put type="ascii" localdir="${website-source.ftp}/js" remotedir="js" createdirs="true"&amp;gt;
        &amp;lt;include name="**" /&amp;gt;
      &amp;lt;/put&amp;gt;
      &amp;lt;put type="bin" localdir="${website-source.ftp}/img" remotedir="img" createdirs="true"&amp;gt;
        &amp;lt;include name="**" /&amp;gt;
      &amp;lt;/put&amp;gt;
      &amp;lt;put type="ascii" localdir="${website-source.ftp}/SearchUtils" remotedir="SearchUtils" createdirs="true"&amp;gt;
        &amp;lt;include name="*.aspx" /&amp;gt;
      &amp;lt;/put&amp;gt;
      &amp;lt;put type="ascii" localdir="${website-source.ftp}/WebServices" remotedir="WebServices" createdirs="true"&amp;gt;
        &amp;lt;include name="*.aspx" /&amp;gt;
      &amp;lt;/put&amp;gt;
      &amp;lt;put type="ascii" localdir="${website-source.ftp}/css" remotedir="css" createdirs="true"&amp;gt;
        &amp;lt;include name="**" /&amp;gt;
      &amp;lt;/put&amp;gt;
      &amp;lt;put type="ascii" localdir="${website-source.ftp}/App_Config/Include" remotedir="App_Config/Include" createdirs="true"&amp;gt;
        &amp;lt;include name="Sitecore.Analytics.ExcludeRobots.config" /&amp;gt;
        &amp;lt;include name="Sitecore.Analytics.config" /&amp;gt;
        &amp;lt;include name="ldap.config" /&amp;gt;
      &amp;lt;/put&amp;gt;
      &amp;lt;put type="ascii" localdir="${website-source.ftp}/App_Config/Security" remotedir="App_Config/Security" createdirs="true"&amp;gt;
        &amp;lt;include name="*" /&amp;gt;
      &amp;lt;/put&amp;gt;
      &amp;lt;put type="ascii" localdir="${website-source.ftp}/App_Config" remotedir="App_Config" createdirs="true"&amp;gt;
        &amp;lt;include name="*.config" /&amp;gt;
      &amp;lt;/put&amp;gt;
      &amp;lt;put type="ascii" localdir="${env-config-source.ftp}" remotedir="App_Config/Include" createdirs="true"&amp;gt;
        &amp;lt;include name="Sitecore.Analytics.config" /&amp;gt;
        &amp;lt;include name="ScalabilitySettings.config" /&amp;gt;
        &amp;lt;include name="Forms.config" /&amp;gt;
      &amp;lt;/put&amp;gt;
      &amp;lt;put type="ascii" localdir="${env-config-source.ftp}" remotedir="App_Config"  createdirs="true" unless="${string::contains(environment.param, 'Prod')}"&amp;gt;
        &amp;lt;include name="*.config" /&amp;gt;
      &amp;lt;/put&amp;gt;
      &amp;lt;put type="ascii" localdir="${env-config-source.ftp}/CM" remotedir="App_Config"  createdirs="true" if="${string::contains(environment.param, 'Prod')}"&amp;gt;
        &amp;lt;include name="*.config" /&amp;gt;
      &amp;lt;/put&amp;gt;
    &amp;lt;/ftp&amp;gt;
    &amp;lt;!-- The following FTP transfer is used only for Content Delivery server --&amp;gt;
    &amp;lt;ftp connection="ftp-conn-cd" if="${string::contains(environment.param, 'Prod')}"&amp;gt;
      &amp;lt;put type="ascii" localdir="${env-config-source.ftp}/CD" remotedir="/Include"&amp;gt;
        &amp;lt;include name="SwitchMasterToWeb.config" /&amp;gt;
      &amp;lt;/put&amp;gt;
      &amp;lt;put type="ascii" localdir="${env-config-source.ftp}/CD" remotedir="/"&amp;gt;
        &amp;lt;include name="ConnectionStrings.config" /&amp;gt;
      &amp;lt;/put&amp;gt;
    &amp;lt;/ftp&amp;gt;
&lt;/pre&gt;
&lt;p&gt;However, as you can see if you &lt;a href="http://www.spinthemoose.com/~ftptask/"&gt;followed the link&lt;/a&gt;, Dave Alpert has apparently stopped supporting the task.&lt;/p&gt;
&lt;p&gt;We've been using this task for &lt;strong&gt;FTP &lt;/strong&gt;protocol, but it does not support &lt;strong&gt;SFTP&lt;/strong&gt;. &amp;nbsp;We quickly found there was no NAnt task alternative that did SFTP (at least not in a few hours of googling) so we decided to shell out using the &amp;lt;exec/&amp;gt; command. &amp;nbsp;The options for this were &lt;a href="http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html"&gt;psftp.exe&lt;/a&gt; and &lt;a href="http://winscp.net/eng/index.php"&gt;WinSCP&lt;/a&gt;. &amp;nbsp;PSFTP appeared to be the easier and smaller footprint option so we tried that first. &amp;nbsp;The issue we encountered was how to get the program to not prompt the user to accept the key. &amp;nbsp;If Jenkins is running as SYSTEM service, it is not possible to get it to accept the key automatically. &amp;nbsp;After various attempts with wrapper shell files to redirect "Y" to stdin and registry settings, PSFTP was eventually abandoned.&lt;/p&gt;
&lt;p&gt;WinSCP, it turns out, has a way to send in the key fingerprint &lt;a href="http://winscp.net/eng/docs/commandline"&gt;via the command line&lt;/a&gt;. &amp;nbsp;This proved to work successfully and in fact, makes our NAnt a lot cleaner. &amp;nbsp;There are two steps involved:&lt;/p&gt;
&lt;ol&gt;
    &lt;li&gt;Creating the FTP Command file&lt;/li&gt;
    &lt;li&gt;Executing the FTP Command file&lt;/li&gt;
&lt;/ol&gt;
&lt;h3&gt;Creating the FTP Command File&lt;/h3&gt;
&lt;div&gt;The FTP Command file contains as the first line the connection string including the&lt;strong&gt; -hostkey&lt;/strong&gt; parameter as follows:&lt;/div&gt;
&lt;pre class="brush:xml"&gt;    &amp;lt;property name="connectionString.ftp" value="open sftp://${user.ftp}:${password.ftp}@${server.ftp} -hostkey=&amp;amp;quot;${rsakey.ftp}&amp;amp;quot;"/&amp;gt;
    &amp;lt;echo file="${ftp.command.file}"&amp;gt;
      ${connectionString.ftp}
      option echo off
      option batch on
      option confirm off
      option exclude "*/.svn; *.cs; *.example; *.pdb;"
    &amp;lt;/echo&amp;gt;
    &amp;lt;echo file="${ftp.command.file}" append="true"&amp;gt;
      cd ${remotedir.ftp}
      ascii
      put "${website-source.ftp}\*.config"
      put "${website-source.ftp}\*.as*x"
      put "${website-source.ftp}\*.css"
      put "${website-source.ftp}\*.js"
      put "${website-source.ftp}\layouts"
      put "${website-source.ftp}\xsl"
      put "${website-source.ftp}\js"
      put "${website-source.ftp}\ErrorPages"
      put "${website-source.ftp}\SearchUtils"
      put "${website-source.ftp}\WebServices"
      put "${website-source.ftp}\css"
      put "${website-source.ftp}\App_Config"
      bin
      put "${website-source.ftp}\bin"
      put "${website-source.ftp}\img"
    &amp;lt;/echo&amp;gt;
    &amp;lt;echo file="${ftp.command.file}" append="true"&amp;gt;
      ascii
      cd /${remotedir.ftp}/App_Config
      put "${env-config-source.ftp}\*.config"
    &amp;lt;/echo&amp;gt;
    &amp;lt;echo file="${ftp.command.file}" append="true"&amp;gt;
      exit
    &amp;lt;/echo&amp;gt;
&lt;/pre&gt;
&lt;h3&gt;Executing the &lt;strong&gt;ftp.command.file&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;The next step is to execute the FTP Command file using the &amp;lt;exec/&amp;gt; task. &amp;nbsp;Use the &lt;strong&gt;WinSCP.com&lt;/strong&gt; executable instead of &lt;strong&gt;WinSCP.exe&lt;/strong&gt; as that is the one intended for use in batch/non-interactive programs:
&lt;/p&gt;
&lt;pre class="brush:xml"&gt;    &amp;lt;exec program="WinSCP.com" basedir="${sftp.exec.dir}" &amp;gt;
      &amp;lt;arg value="/script=${ftp.command.file}"/&amp;gt;
    &amp;lt;/exec&amp;gt;&lt;/pre&gt;
&lt;p&gt;The only other challenge is to grab the Fingerprint key to be used as input for the &lt;strong&gt;-hostkey &lt;/strong&gt;parameter.  This can be done by connecting to the SFTP server from the WinSCP console interface and copying it using the "&lt;strong&gt;Copy Key&lt;/strong&gt;" button below:
&lt;/p&gt;
&lt;p&gt;&lt;img alt="Click Copy Key Button" style="width: 500px; height: 144px; border-width: 0px; border-style: solid;" src="/blogResources/cburne/winscpFingerprintKey.png" /&gt;&lt;/p&gt;
</description><link>http://oshyn.com/RSSRetrieve.aspx?ID=2435&amp;A=Link&amp;ObjectID=218725&amp;ObjectType=56&amp;O=http%253a%252f%252foshyn.com%252f_blog%252fWeb_Content_Management%252fpost%252fUsing_WinSCP_for_SFTP_connections_from_NAnt%252f</link><guid isPermaLink="true">http://oshyn.com/_blog/Web_Content_Management/post/Using_WinSCP_for_SFTP_connections_from_NAnt/</guid><pubDate>Mon, 13 Feb 2012 19:23:00 GMT</pubDate></item><item><title>Securing Sitecore Content for Logged In Users</title><description>&lt;p&gt;&lt;img alt="Sitecore Secure Content" style="width: 200px; height: 170px; float: right; margin-right: 0px; margin-left: 5px;        border-width: 0px;border-style: solid;" src="http://oshyn.com/blogResources/AlexandraBarcelona/Sitecore-Secure-Content_250.png" /&gt;Securing content for a user that is logged in is a common request for sites where users enter sensitive information. With this in mind, we created a simple module that will always push the user to the secure version of the site when they are logged into Sitecore. All of this done is in the server side. Here is the code for this module:&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &lt;/p&gt;
&lt;p&gt;using Sitecore.Pipelines.HttpRequest;&lt;/p&gt;
&lt;p&gt;using Sitecore.Web;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;namespace Oshyn.Sitecore.Pipeline.Security&lt;/p&gt;
&lt;p&gt;{&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;public class SSLResolver : HttpRequestProcessor&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;{&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;private bool _activeSSL;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;public virtual bool ActiveSSL&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;{&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;get { return this._activeSSL; }&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;set { this._activeSSL = value; }&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;}&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;public override void Process(HttpRequestArgs args)&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;{&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;if (ActiveSSL &amp;amp;&amp;amp; !args.Context.Request.IsSecureConnection &amp;amp;&amp;amp; Sitecore.Context.PageMode.IsNormal)&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;{&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;WebUtil.Redirect(args.Context.Request.Url.AbsoluteUri.Replace("http://", "https://"));&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;}&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;}&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;}&lt;/p&gt;
&lt;p&gt;}&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Once this is compiled in a library, the following configuration must be added to your web.config file in the &amp;lt;httpRequestBegin&amp;gt; pileine after the &amp;lt;processor type="Sitecore.Pipelines.HttpRequest.ItemResolver, Sitecore.Kernel"/&amp;gt; line:&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;processor type="Oshyn.Sitecore.Pipeline.Security.SSLResolver, Oshyn.Sitecore"&amp;gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&amp;nbsp; &lt;/span&gt;&amp;lt;ActiveSSL&amp;gt;false&amp;lt;/ActiveSSL&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;/processor&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;This is a simple module, built with the intention that you will add further improvements in order to make it fit your specific business rules. For example, you could configure it so it does not affect the editors of your site. Multiple options exist, but this module should be simple enough to allow you to add any functionality you need.&lt;/p&gt;
</description><link>http://oshyn.com/RSSRetrieve.aspx?ID=2435&amp;A=Link&amp;ObjectID=218719&amp;ObjectType=56&amp;O=http%253a%252f%252foshyn.com%252f_blog%252fWeb_Content_Management%252fpost%252fSecuring_Sitecore_Content_for_Logged_In_Users%252f</link><guid isPermaLink="true">http://oshyn.com/_blog/Web_Content_Management/post/Securing_Sitecore_Content_for_Logged_In_Users/</guid><pubDate>Thu, 01 Mar 2012 23:34:00 GMT</pubDate></item></channel></rss>
