<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://k2underground.com/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>Pitchblack</title><link>http://k2underground.com/blogs/pitchblack/default.aspx</link><description /><dc:language>en</dc:language><generator>CommunityServer 2008.5 SP2 (Build: 40407.4157)</generator><item><title>Manually installing the SOURCECODE data source in SSRS2008 and Windows server 2008</title><link>http://k2underground.com/blogs/pitchblack/archive/2010/05/07/manually-installing-the-sourcecode-data-source-in-ssrs2008-and-windows-server-2008.aspx</link><pubDate>Fri, 07 May 2010 14:59:00 GMT</pubDate><guid isPermaLink="false">1c9bda6b-c6e6-4e79-8d32-b70ad0011ef7:36323</guid><dc:creator>NeilM</dc:creator><slash:comments>5</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://k2underground.com/blogs/pitchblack/rsscomments.aspx?PostID=36323</wfw:commentRss><comments>http://k2underground.com/blogs/pitchblack/archive/2010/05/07/manually-installing-the-sourcecode-data-source-in-ssrs2008-and-windows-server-2008.aspx#comments</comments><description>&lt;p&gt;As you probably know, K2 4.5 allows you to run the K2 reports without requiring a SSRS installation. This is all good if you are only using the standard reports, but what happens if you have custom reports that require that the SOURCECODE data source is installed on your SSRS server? &lt;/p&gt;
&lt;p&gt;well, while you CAN install the Reporting Services component on the SSRS server using the K2 installer, this may have unintended side effects, since it will also deploy the standard K2 reports to your SSRS server, &lt;span style="text-decoration:line-through;"&gt;and (as far as I can tell) will reconfig workspace to point to the reports deployed on SSRS&lt;/span&gt;. If you can live with this, then good. if not, then read on....&lt;/p&gt;
&lt;p&gt;So, here&amp;#39;s what you have to do to manually register the SOURCECODE data provider in SSRS 2008. (Note: this will probably work for SSRS 2005 as well, and Server 2003. I just&amp;nbsp;completed these steps&amp;nbsp;on a SSRS2008 and Server 2008 environment.)&lt;/p&gt;
&lt;p&gt;WARNING: because you have manually installed the data source in SSRS, when you upgrade K2 to a newer version, you will probably have to update these assemblies and potentially the assembly registration manually as well. Don&amp;#39;t say I didn&amp;#39;t warn you! :) &lt;/p&gt;
&lt;p&gt;OK, first, you have to copy some assemblies from your K2 server. Head over to the K2 install directory (by default something like C:\program files\K2 BlackPearl\Bin) and copy the following assemblies to a temporary location:&lt;/p&gt;
&lt;p&gt;- SourceCode.Data.SmartObjectsClient.dll&lt;br /&gt;- SourceCode.Categories.Client.dll&lt;br /&gt;- SourceCode.HostClientAPI.dll (Please see 64-bit note below!)&lt;br /&gt;- SourceCode.SmartObjects.Client.dll&lt;br /&gt;- SourceCode.SmartObjects.Management.dll&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Note for 64-bit operating systems&lt;/b&gt;: The SourceCode.HostClientAPI.dll is compiled to target a specific CPU platform. If you are running a 64-bit operating system in your SSRS environment, you HAVE to copy the correct HostClientAPI.dll file FROM THE GAC on the K2 server. It will be located in a directory like C:\Windows\Assembly\&lt;i&gt;[GAC_64\AMD_64]\&lt;/i&gt;SourceCode.HostClientAPI\&lt;i&gt;[4.0.0.0_16a2c5aaaa1b130d]&lt;/i&gt;&lt;/p&gt;
&lt;p&gt;If you copy the wrong HostClientAPI.dll, you will get an error like &amp;#39;attempted to load a program with an incorrect format&amp;#39;&lt;/p&gt;
&lt;p&gt;OK, the next step is to register these assemblies in the GAC of the SSRS server. On Windows 2003, you can probably just drag+drop the files into the Windows\Assembly folder. On Windows server 2008, it ain&amp;#39;t that easy. &lt;/p&gt;
&lt;p&gt;If you have the gacutil.exe utility installed on your Windows server, you can continue to adding the assemblies to the GAC. If you do not, you will need to download the windows 7 SDK from Microsoft in order to get GACUtil installed (you can probably hack it and try to install it manually, but at this stage I was done with hacking installs, didn&amp;#39;t need the extra overhead of hacking a MS install as well). You can find the Windows 7 SDK installer from here: &lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=c17ba869-9671-4330-a63e-1fd44e0e2505&amp;amp;displaylang=en"&gt;http://www.microsoft.com/downloads/details.aspx?FamilyID=c17ba869-9671-4330-a63e-1fd44e0e2505&amp;amp;displaylang=en&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;OK, so now you have gacutil.exe installed on your SSRS server. Next, open the SDK command prompt or a windows command prompt (NOTE: use the &amp;#39;Run as Administrator&amp;#39; option to launch the command line, otherwise...yup, you guessed it -&amp;nbsp;it ain&amp;#39;t gonna work) and execute Gacutil to register each of the copied assemblies in the SSRS server&amp;#39;s GAC. For reference, the commands will be:&lt;/p&gt;
&lt;p&gt;- gacutil -i SourceCode.Data.SmartObjectsClient.dll&lt;br /&gt;- gacutil -i SourceCode.Categories.Client.dll&lt;br /&gt;- gacutil -i SourceCode.HostClientAPI.dll&lt;br /&gt;- gacutil -i SourceCode.SmartObjects.Client.dll&lt;br /&gt;- gacutil -i SourceCode.SmartObjects.Management.dll&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Whew, OK. Hang in there, still a few more things to do.&lt;/p&gt;
&lt;p&gt;next up, we need to register the SourceCode data source in SSRS. Head to your SSRS install directory (this will depend on your environment, but it will be something like C:\Program Files\Microsoft SQL Server\MSRS10.MSSQLSERVER\Reporting Services). &lt;/p&gt;
&lt;p&gt;Locate the file rsreportserver.config and make a backup of it. Next, edit the file with a text editor and add the SOURCECODE data source. You will add the following line in the &amp;lt;Extensions&amp;gt;&amp;lt;Data&amp;gt; section of this config file. &lt;/p&gt;
&lt;p&gt;&lt;b&gt;&amp;lt;Extension Name=&amp;quot;SOURCECODE&amp;quot; Type=&amp;quot;SourceCode.Data.SmartObjectsClient.SOConnection,SourceCode.Data.SmartObjectsClient, Version=4.0.0.0, Culture=neutral, PublicKeyToken=16a2c5aaaa1b130d&amp;quot; /&amp;gt;&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;That should be it. Restart your Reporting Services service, perform an IISReset, and then browse to SSRS and attempt to register a new data source using the SOURCECODE data provider. Provide a relevant connection string for the provider,&amp;nbsp;and you&amp;#39;re good to go. &lt;/p&gt;
&lt;p&gt;(At this stage, you may be thinking: what on earth is a &amp;#39;relevant connection string?!&amp;#39; here are samples - you&amp;#39;ll need to modify them for your environment, of course&lt;/p&gt;
&lt;p&gt;&lt;i&gt;Integrated=True;IsPrimaryLogin=True;Authenticate=True;EncryptedPassword=False;Host=blackpearl;Port=5555;UserID=K2Student;WindowsDomain=Denallix;Password=K2pass!;SecurityLabelName=K2&lt;/i&gt;&lt;/p&gt;
&lt;p&gt;or&lt;/p&gt;
&lt;p&gt;&lt;i&gt;Integrated=True;Authenticate=True;Host=blackpearl;Port=5555&lt;/i&gt;&lt;/p&gt;
&lt;p&gt;Your next step will probably be to resolve the Kerberos authentication issues that will crop up. If your SSRS server and K2 server are on different machines, you will need to set up kerberos delegation to allow SSRS to impersonate users when connecting to SSRS. Or, alternatively, you can edit the connection string of the SOURCECODE data provider to use specific user credentials. if you can live with the security hole this represents.&lt;/p&gt;
&lt;p&gt;Hope that helped!&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://k2underground.com/aggbug.aspx?PostID=36323" width="1" height="1"&gt;</description><category domain="http://k2underground.com/blogs/pitchblack/archive/tags/2008/default.aspx">2008</category><category domain="http://k2underground.com/blogs/pitchblack/archive/tags/2005/default.aspx">2005</category><category domain="http://k2underground.com/blogs/pitchblack/archive/tags/Data+Source/default.aspx">Data Source</category><category domain="http://k2underground.com/blogs/pitchblack/archive/tags/SSRS/default.aspx">SSRS</category><category domain="http://k2underground.com/blogs/pitchblack/archive/tags/2003/default.aspx">2003</category></item><item><title>Reporting Services Fails to connect to K2 Data Source</title><link>http://k2underground.com/blogs/pitchblack/archive/2009/12/02/reporting-services-fails-to-connect-to-k2-datasource.aspx</link><pubDate>Wed, 02 Dec 2009 14:30:00 GMT</pubDate><guid isPermaLink="false">1c9bda6b-c6e6-4e79-8d32-b70ad0011ef7:34514</guid><dc:creator>Murphy</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://k2underground.com/blogs/pitchblack/rsscomments.aspx?PostID=34514</wfw:commentRss><comments>http://k2underground.com/blogs/pitchblack/archive/2009/12/02/reporting-services-fails-to-connect-to-k2-datasource.aspx#comments</comments><description>&lt;p&gt;In the world of reporting services there are many things that can go wrong. I was dealing with the following error when trying to run a report which was using a K2 data source.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;This manifested itself as:&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Cannot create a connection to data source &amp;lsquo;BLACKPEARL&amp;rsquo;.&lt;/p&gt;
&lt;p&gt;A connection attempt failed because the connected party did not properly respond after a period of time.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://k2underground.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/pitchblack.metablogapi/5287.image_5F00_173A0F17.png"&gt;&lt;img height="263" width="513" src="http://k2underground.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/pitchblack.metablogapi/6758.image_5F00_thumb_5F00_2DCC3791.png" alt="image" border="0" title="image" style="border-bottom:0px;border-left:0px;display:inline;border-top:0px;border-right:0px;" /&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Troubleshooting:&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;A very useful tool here is to try and telnet to the k2 server from the machine that cannot connect &lt;/p&gt;
&lt;p&gt;1)&amp;nbsp;&amp;nbsp;&amp;nbsp; Run command prompt   &lt;br /&gt;2)&amp;nbsp;&amp;nbsp;&amp;nbsp; telnet k2servername 5555&lt;/p&gt;
&lt;p&gt;If you cannot connect then it is more underlying windows com problem (possibly a firewall) and its not even worth looking at ssrs until this is resolved.&lt;/p&gt;
&lt;p&gt;If telnet is not installed then you can install it by following details on this link &lt;/p&gt;
&lt;p&gt;&lt;a href="http://technet.microsoft.com/en-us/library/cc771275(WS.10).aspx"&gt;http://technet.microsoft.com/en-us/library/cc771275(WS.10).aspx&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Resolution:&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;In my case telnet showed that I could not connect, therefore I looked for any firewall that were in the way and found that Windows Firewall was turned on on the K2 Server.&lt;/p&gt;
&lt;p&gt;Add an Exception rule to allow port 5555 (and port 5252 for other operations) as these are the ports K2 uses for communications (unless you specified different ports in the install).&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://k2underground.com/aggbug.aspx?PostID=34514" width="1" height="1"&gt;</description></item><item><title>Unable to Connect to SQL Server (Error is 18456, Severity: 14, State: 11)</title><link>http://k2underground.com/blogs/pitchblack/archive/2009/12/02/unable-to-connect-to-sql-server-error-is-18456-severity-14-state-11.aspx</link><pubDate>Wed, 02 Dec 2009 14:18:08 GMT</pubDate><guid isPermaLink="false">1c9bda6b-c6e6-4e79-8d32-b70ad0011ef7:34513</guid><dc:creator>Murphy</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://k2underground.com/blogs/pitchblack/rsscomments.aspx?PostID=34513</wfw:commentRss><comments>http://k2underground.com/blogs/pitchblack/archive/2009/12/02/unable-to-connect-to-sql-server-error-is-18456-severity-14-state-11.aspx#comments</comments><description>&lt;p&gt;I have recently spent some time looking into an issue where my K2Workspace account was not able to connect to SQL Server. &lt;/p&gt;  &lt;p&gt;&lt;strong&gt;This manifested itself as:&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;In the workspace the following error:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;- Membership could not be verified&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;In SQL Management Logs as:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;- Error is 18456, Severity: 14, State: 11&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;&lt;strong&gt;Resolution:&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;To resolve this issue we first looked to validate that connect rights were given to &lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;The account itself&lt;/li&gt;    &lt;li&gt;The roles the users were members Of&lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;Finally it turned out that the public role did not have Connect rights for TCP communication as shown below&lt;/p&gt;  &lt;p&gt;&lt;a href="http://k2underground.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/pitchblack.metablogapi/4722.image_5F00_720CE2F2.png"&gt;&lt;img style="border-bottom:0px;border-left:0px;display:inline;border-top:0px;border-right:0px;" title="image" border="0" alt="image" src="http://k2underground.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/pitchblack.metablogapi/8623.image_5F00_thumb_5F00_1FCA85EB.png" width="244" height="220" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;I hope this helps someone&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://k2underground.com/aggbug.aspx?PostID=34513" width="1" height="1"&gt;</description></item><item><title>Complex Preceding rule: No Code</title><link>http://k2underground.com/blogs/pitchblack/archive/2009/11/24/complex-preceding-rule-no-code.aspx</link><pubDate>Tue, 24 Nov 2009 12:10:41 GMT</pubDate><guid isPermaLink="false">1c9bda6b-c6e6-4e79-8d32-b70ad0011ef7:34436</guid><dc:creator>Willem</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://k2underground.com/blogs/pitchblack/rsscomments.aspx?PostID=34436</wfw:commentRss><comments>http://k2underground.com/blogs/pitchblack/archive/2009/11/24/complex-preceding-rule-no-code.aspx#comments</comments><description>&lt;p&gt;&lt;b&gt;Business Requirement&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;A typical business process that may branch to several parallel activities&lt;/p&gt;  &lt;p&gt;On completion of the parallel activities, all lines should join up to continue processing with a single instance&lt;/p&gt;  &lt;p&gt;Parallel activities may vary and are determined by runtime business rules (Scenario 1 &amp;amp; 2 following)&lt;/p&gt;  &lt;p&gt;&lt;a href="http://k2underground.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/pitchblack.metablogapi/5353.clip_5F00_image0028_5F00_01144675.gif"&gt;&lt;img style="border-bottom:0px;border-left:0px;display:inline;border-top:0px;border-right:0px;" title="clip_image002[8]" border="0" alt="clip_image002[8]" src="http://k2underground.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/pitchblack.metablogapi/2133.clip_5F00_image0028_5F00_thumb_5F00_63BEEEAA.gif" width="240" height="216" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Scenario 1&lt;/p&gt;  &lt;p&gt;&lt;a href="http://k2underground.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/pitchblack.metablogapi/3108.clip_5F00_image0045_5F00_77D80B33.gif"&gt;&lt;img style="border-bottom:0px;border-left:0px;display:inline;border-top:0px;border-right:0px;" title="clip_image004[5]" border="0" alt="clip_image004[5]" src="http://k2underground.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/pitchblack.metablogapi/4111.clip_5F00_image0045_5F00_thumb_5F00_6F7435DC.gif" width="240" height="216" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Scenario 2&lt;/p&gt;  &lt;p&gt;&lt;a href="http://k2underground.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/pitchblack.metablogapi/4111.clip_5F00_image0065_5F00_677C937A.gif"&gt;&lt;img style="border-bottom:0px;border-left:0px;display:inline;border-top:0px;border-right:0px;" title="clip_image006[5]" border="0" alt="clip_image006[5]" src="http://k2underground.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/pitchblack.metablogapi/4505.clip_5F00_image0065_5F00_thumb_5F00_5B0E7051.gif" width="240" height="212" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;Technical challenges&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;· &lt;u&gt;Variable parallel activities&lt;/u&gt;. In this business case one (1) or more activities may execute at the same time, and is only determined during runtime execution and business logic validation.&lt;/p&gt;  &lt;p&gt;· &lt;u&gt;No code&lt;/u&gt;. The process is being developed by a ‘empowered’ business user who understands the business process and is able to create workflows, infopath forms and SmartObjects.&lt;/p&gt;  &lt;p&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;     &lt;br /&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;Activity Statuses&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;· To achieve the requirement of knowing when various independent activities completed a SmartObject is required per logical grouping&lt;/p&gt;  &lt;p&gt;· Each activity executed in parallel is represented by a property in the SmartObject&lt;/p&gt;  &lt;p&gt;· A single row in the SmartObject represents an instance of the process being executed &lt;/p&gt;  &lt;p&gt;· All property values for the row being executed needs to be ‘0’, indicating that there are no activities being processed&lt;/p&gt;  &lt;p&gt;&lt;a href="http://k2underground.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/pitchblack.metablogapi/4111.clip_5F00_image0084_5F00_0C2DAAF2.jpg"&gt;&lt;img style="border-bottom:0px;border-left:0px;display:inline;border-top:0px;border-right:0px;" title="clip_image008[4]" border="0" alt="clip_image008[4]" src="http://k2underground.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/pitchblack.metablogapi/7725.clip_5F00_image0084_5F00_thumb_5F00_3C747FA8.jpg" width="244" height="159" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;     &lt;br /&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;K2 Process Design&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;· The process design at first glance may appear clunky but is not. This process design caters for all of the destination types with regards to slots: ‘Plan just once’, ‘Create 1 slot’ and ‘Create a slot for each destination’&lt;/p&gt;  &lt;p&gt;&lt;a href="http://k2underground.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/pitchblack.metablogapi/0550.clip_5F00_image0104_5F00_1B14DA0C.jpg"&gt;&lt;img style="border-bottom:0px;border-left:0px;display:inline;border-top:0px;border-right:0px;" title="clip_image010[4]" border="0" alt="clip_image010[4]" src="http://k2underground.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/pitchblack.metablogapi/2626.clip_5F00_image0104_5F00_thumb_5F00_6E1F7730.jpg" width="244" height="136" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;How it works: [Create Status Instance]&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://k2underground.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/pitchblack.metablogapi/5340.clip_5F00_image0124_5F00_37CE4F21.jpg"&gt;&lt;img style="border-bottom:0px;border-left:0px;display:inline;border-top:0px;border-right:0px;" title="clip_image012[4]" border="0" alt="clip_image012[4]" src="http://k2underground.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/pitchblack.metablogapi/5756.clip_5F00_image0124_5F00_thumb_5F00_1953E86B.jpg" width="237" height="76" /&gt;&lt;/a&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;· This activity is the activity that creates a single record in the SmartObject.&lt;/p&gt;  &lt;p&gt;· For each activity the initial status is set to ‘0’. This is required since some activities may not be executed and will as a result not be able to set a completed (‘0’) status flag.&lt;/p&gt;  &lt;p&gt;· The ‘itemId’ returned will be used to update all subsequent calls to the DB&lt;/p&gt;  &lt;p&gt;· Once this activity finished processing the ‘Preceding Rule’ Smartobject record will look like this:&lt;/p&gt;  &lt;p&gt;&lt;u&gt;activityONEstatus activityTWOstatus activityTHREEstatus activityFOURstatus&lt;/u&gt;&lt;/p&gt;  &lt;p&gt;0 0 0 0&lt;/p&gt;  &lt;p&gt;&lt;b&gt;How it works: [I am busy ...]&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://k2underground.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/pitchblack.metablogapi/1537.clip_5F00_image0144_5F00_0632BBBF.jpg"&gt;&lt;img style="border-bottom:0px;border-left:0px;display:inline;border-top:0px;border-right:0px;" title="clip_image014[4]" border="0" alt="clip_image014[4]" src="http://k2underground.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/pitchblack.metablogapi/2526.clip_5F00_image0144_5F00_thumb_5F00_4FE193AF.jpg" width="244" height="28" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;· These steps indicate per activity whether or not a specific activity received scope to be executed&lt;/p&gt;  &lt;p&gt;· Each activity invokes the ‘Preceding Rule’ Smartobject and sets the value for the related column to ‘1’, this indicates that the activity is ‘busy’&lt;/p&gt;  &lt;p&gt;· Why the extra activity?&lt;/p&gt;  &lt;p&gt;&lt;u&gt;Performance&lt;/u&gt; – in most cases, the activity behaviour with regards to destinations creates a single slot with multiple destinations and ‘Plan-just-once’ is not enabled. If we were to add this event in the event with multiple destinations, a number of unnecessary updates will be executed against the smartobject – one for each destination.&lt;/p&gt;  &lt;p&gt;&lt;b&gt;How it works: [I am done ...]&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://k2underground.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/pitchblack.metablogapi/7713.clip_5F00_image0164_5F00_7CF6807D.jpg"&gt;&lt;img style="border-bottom:0px;border-left:0px;display:inline;border-top:0px;border-right:0px;" title="clip_image016[4]" border="0" alt="clip_image016[4]" src="http://k2underground.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/pitchblack.metablogapi/1121.clip_5F00_image0164_5F00_thumb_5F00_429B0A9C.jpg" width="244" height="21" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;· Once an activity (ONE, TWO, THREE or FOUR) has completed, it has to indicate that by setting the related column value in the ‘Preceding Rule’ SmartObject to’0’.&lt;/p&gt;  &lt;p&gt;· Why the extra activity?&lt;/p&gt;  &lt;p&gt;&lt;u&gt;Performance&lt;/u&gt; – same applies as per [I am busy ...]&lt;/p&gt;  &lt;p&gt;&lt;u&gt;Incorrect status value&lt;/u&gt; – if the event in this activity was added to the activity (ONE, TWO, THREE or FOUR) with multiple destinations multiple slots, the first person to complete his/her work would update the item status to complete, then when the ‘Continue Processing’ activity preceding rule executes it would evaluate to ‘true’ where in fact it should be false.&lt;/p&gt;  &lt;p&gt;How it works: [Continue processing]&lt;/p&gt;  &lt;p&gt;&lt;a href="http://k2underground.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/pitchblack.metablogapi/3108.clip_5F00_image0184_5F00_7AD981B4.jpg"&gt;&lt;img style="border-bottom:0px;border-left:0px;display:inline;border-top:0px;border-right:0px;" title="clip_image018[4]" border="0" alt="clip_image018[4]" src="http://k2underground.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/pitchblack.metablogapi/5756.clip_5F00_image0184_5F00_thumb_5F00_39CB0250.jpg" width="211" height="86" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;· For each line connected to this activity, the preceding rule will evaluate all column values for this instance. Since we already set the columns values for activities to ‘complete’ even though those activities never got scope, stock standard K2 blackpearl functionality could be used to resolve the preceding rule.&lt;/p&gt;  &lt;p&gt;· The configured preceding rule:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://k2underground.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/pitchblack.metablogapi/5353.clip_5F00_image0204_5F00_6A7E09FB.jpg"&gt;&lt;img style="border-bottom:0px;border-left:0px;display:inline;border-top:0px;border-right:0px;" title="clip_image020[4]" border="0" alt="clip_image020[4]" src="http://k2underground.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/pitchblack.metablogapi/7206.clip_5F00_image0204_5F00_thumb_5F00_5DA3B3DD.jpg" width="244" height="153" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;Sample illustrated&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&lt;i&gt;[Create Status Instance] - PrecedingRule SmartObject data&lt;/i&gt;&lt;/p&gt;  &lt;p&gt;&lt;u&gt;activityONEstatus activityTWOstatus activityTHREEstatus activityFOURstatus&lt;/u&gt;&lt;/p&gt;  &lt;p&gt;0 0 0 0&lt;/p&gt;  &lt;p&gt;&lt;a href="http://k2underground.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/pitchblack.metablogapi/6232.clip_5F00_image0225_5F00_27528BCE.gif"&gt;&lt;img style="border-bottom:0px;border-left:0px;display:inline;border-top:0px;border-right:0px;" title="clip_image022[5]" border="0" alt="clip_image022[5]" src="http://k2underground.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/pitchblack.metablogapi/0363.clip_5F00_image0225_5F00_thumb_5F00_538F12B2.gif" width="240" height="132" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;i&gt;&lt;/i&gt;&lt;/p&gt;  &lt;p&gt;&lt;i&gt;[I am busy ...] &lt;/i&gt;&lt;/p&gt;  &lt;p&gt;PrecedingRule SmartObject data each activity sets the relevant SmartObject property&lt;/p&gt;  &lt;p&gt;&lt;u&gt;activityONEstatus activityTWOstatus activityTHREEstatus activityFOURstatus&lt;/u&gt;&lt;/p&gt;  &lt;p&gt;1 0 1 0&lt;/p&gt;  &lt;p&gt;&lt;a href="http://k2underground.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/pitchblack.metablogapi/3583.clip_5F00_image0244_5F00_7984C308.gif"&gt;&lt;img style="border-bottom:0px;border-left:0px;display:inline;border-top:0px;border-right:0px;" title="clip_image024[4]" border="0" alt="clip_image024[4]" src="http://k2underground.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/pitchblack.metablogapi/1033.clip_5F00_image0244_5F00_thumb_5F00_29CB97BF.gif" width="240" height="149" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;i&gt;&lt;/i&gt;&lt;/p&gt;  &lt;p&gt;&lt;i&gt;[I am done ...] &lt;/i&gt;&lt;/p&gt;  &lt;p&gt;· For each of the activities ONE... to FOUR, once they finish execution they set their underlying execution status to 0&lt;/p&gt;  &lt;p&gt;· When THREE finishes before ONE the status table will look like this:&lt;/p&gt;  &lt;p&gt;&lt;u&gt;activityONEstatus activityTWOstatus activityTHREEstatus activityFOURstatus&lt;/u&gt;&lt;/p&gt;  &lt;p&gt;1 0 0 0&lt;/p&gt;  &lt;p&gt;&lt;a href="http://k2underground.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/pitchblack.metablogapi/3583.clip_5F00_image0264_5F00_68BD185A.gif"&gt;&lt;img style="border-bottom:0px;border-left:0px;display:inline;border-top:0px;border-right:0px;" title="clip_image026[4]" border="0" alt="clip_image026[4]" src="http://k2underground.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/pitchblack.metablogapi/1856.clip_5F00_image0264_5F00_thumb_5F00_2DF56F84.gif" width="240" height="135" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;i&gt;[Continue processing]&lt;/i&gt;&lt;/p&gt;  &lt;p&gt;Only when ONE finishes does the preceding rule in ‘Continue Processing evaluate to true&lt;/p&gt;  &lt;p&gt;&lt;u&gt;activityONEstatus activityTWOstatus activityTHREEstatus activityFOURstatus&lt;/u&gt;&lt;/p&gt;  &lt;p&gt;1 0 0 0&lt;/p&gt;  &lt;p&gt;&lt;a href="http://k2underground.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/pitchblack.metablogapi/0044.clip_5F00_image0284_5F00_33D0131D.gif"&gt;&lt;img style="border-bottom:0px;border-left:0px;display:inline;border-top:0px;border-right:0px;" title="clip_image028[4]" border="0" alt="clip_image028[4]" src="http://k2underground.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/pitchblack.metablogapi/5241.clip_5F00_image0284_5F00_thumb_5F00_6416E7D3.gif" width="240" height="154" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://k2underground.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/pitchblack.metablogapi/7140.clip_5F00_image028_5F00_5E6DF5D5.gif"&gt;&lt;img style="border-bottom:0px;border-left:0px;display:inline;border-top:0px;border-right:0px;" title="clip_image028" border="0" alt="clip_image028" src="http://k2underground.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/pitchblack.metablogapi/3833.clip_5F00_image028_5F00_thumb_5F00_6F05F0C3.gif" width="240" height="93" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://k2underground.com/aggbug.aspx?PostID=34436" width="1" height="1"&gt;</description></item><item><title>Generic Send Mail K2 Exception Handler (Send mail on process error/exception)</title><link>http://k2underground.com/blogs/pitchblack/archive/2009/11/24/generic-send-mail-k2-exception-handler-send-mail-on-process-error-exception.aspx</link><pubDate>Tue, 24 Nov 2009 08:26:00 GMT</pubDate><guid isPermaLink="false">1c9bda6b-c6e6-4e79-8d32-b70ad0011ef7:34430</guid><dc:creator>hoshy</dc:creator><slash:comments>1</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://k2underground.com/blogs/pitchblack/rsscomments.aspx?PostID=34430</wfw:commentRss><comments>http://k2underground.com/blogs/pitchblack/archive/2009/11/24/generic-send-mail-k2-exception-handler-send-mail-on-process-error-exception.aspx#comments</comments><description>&lt;p&gt;Hi,&lt;/p&gt;
&lt;p&gt;For the last couple of years I&amp;#39;ve been recommending this as, if not best practice, then minimum practice - i.e. the very least you should be doing when developing processes.&amp;nbsp; &lt;/p&gt;
&lt;p&gt;I realise that many out there are building no-code solutions and thus don&amp;#39;t / can&amp;#39;t benefit from the above advice.&amp;nbsp; Just recently on an internal K2 mailing list one of the guys sent around a
useful copy&amp;amp;paste block of code to safely attempt sending an email
if a process falls to error state.&amp;nbsp;&amp;nbsp; I can&amp;#39;t take credit for this but I wanted to post it here so that all K2 folks who both do and don&amp;#39;t do code can benefit.&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;The ideal location for this code is in the process level exception handler - please see the screen shots below:&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;First access the process level exception handler wizard:&lt;/p&gt;
&lt;p&gt;&lt;a href="http://k2underground.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/pitchblack/5315.exception_5F00_handler1.jpg"&gt;&lt;img src="http://k2underground.com/resized-image.ashx/__size/550x0/__key/CommunityServer.Blogs.Components.WeblogFiles/pitchblack/5315.exception_5F00_handler1.jpg" border="0" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Then enable the Exception handler, tell K2 to log any unhandled exception and put the process instance in to error state - tick all boxes, then access the code view by clicking View Code:&lt;/p&gt;
&lt;p&gt;&lt;a href="http://k2underground.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/pitchblack/5078.exception_5F00_handler2.jpg"&gt;&lt;img src="http://k2underground.com/resized-image.ashx/__size/550x0/__key/CommunityServer.Blogs.Components.WeblogFiles/pitchblack/5078.exception_5F00_handler2.jpg" border="0" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Expand theExecuteCode section:&lt;/p&gt;
&lt;p&gt;&lt;a href="http://k2underground.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/pitchblack/1616.exception_5F00_handler3.jpg"&gt;&lt;img src="http://k2underground.com/resized-image.ashx/__size/550x0/__key/CommunityServer.Blogs.Components.WeblogFiles/pitchblack/1616.exception_5F00_handler3.jpg" border="0" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Remove the highlighted code:&lt;/p&gt;
&lt;p&gt;&lt;a href="http://k2underground.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/pitchblack/5657.exception_5F00_handler4.jpg"&gt;&lt;img src="http://k2underground.com/resized-image.ashx/__size/550x0/__key/CommunityServer.Blogs.Components.WeblogFiles/pitchblack/5657.exception_5F00_handler4.jpg" border="0" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;And paste in the code from the bottom of this blog post:&lt;/p&gt;
&lt;p&gt;&lt;a href="http://k2underground.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/pitchblack/0841.exception_5F00_handler5.jpg"&gt;&lt;img src="http://k2underground.com/resized-image.ashx/__size/550x0/__key/CommunityServer.Blogs.Components.WeblogFiles/pitchblack/0841.exception_5F00_handler5.jpg" border="0" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Make sure you update the email addresses highlighted in red.&lt;/p&gt;
&lt;p&gt;Full credit goes to Eugene Jones for the code for this.&lt;/p&gt;
&lt;p&gt;Ashley.&lt;/p&gt;
&lt;p&gt;Code:&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; const string fromAddress = &amp;quot;Administrator@k2demo.local&amp;quot;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; const string toAddress = &amp;quot;BPUser@k2demo.local&amp;quot;;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; bool _bFlag = true;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; string _sMessage = string.Empty;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Exception ex = new Exception(&amp;quot;K2Exception&amp;quot;);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; object _exContext = null;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; System.Web.Mail.MailMessage _expMail = null;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; try&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; K2.AddToErrorLog = K2.Configuration.IsErrorLog;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; K2.AddToServerLog = K2.Configuration.IsServerLog;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; System.Web.Mail.SmtpMail.SmtpServer = K2.StringTable[&amp;quot;Mail Server&amp;quot;];&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; _expMail = new System.Web.Mail.MailMessage();&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; _expMail.From = fromAddress;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; _expMail.To = toAddress;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Get the process details&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; _expMail.Subject = &amp;quot;Process &amp;quot; + K2.ProcessInstance.Folio + &amp;quot; has gone into error state&amp;quot;;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; _sMessage = &amp;quot;Process Folio: &amp;quot; + K2.ProcessInstance.Folio + System.Environment.NewLine + System.Environment.NewLine;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; _sMessage += &amp;quot;Process ID: &amp;quot; + K2.ProcessInstance.ID.ToString() + System.Environment.NewLine + System.Environment.NewLine;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; _sMessage += &amp;quot;Process Fullname: &amp;quot; + K2.ProcessInstance.Process.FullName + System.Environment.NewLine + System.Environment.NewLine;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; _sMessage += &amp;quot;Process Start Date: &amp;quot; + K2.ProcessInstance.StartDate.ToString() + System.Environment.NewLine + System.Environment.NewLine;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; _sMessage += &amp;quot;Process Originator: &amp;quot; + K2.ProcessInstance.Originator.Name + System.Environment.NewLine + System.Environment.NewLine;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; _sMessage += &amp;quot;Process Data: &amp;quot; + System.Environment.NewLine + System.Environment.NewLine;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; foreach (SourceCode.KO.DataField _data in K2.ProcessInstance.DataFields)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; _sMessage += &amp;quot;Field name: &amp;quot; + _data.Name + &amp;quot;\t&amp;quot; + &amp;quot;Field type: &amp;quot; + _data.FieldType.ToString() + &amp;quot;\t&amp;quot; + &amp;quot;Field value: &amp;quot; + _data.Value.ToString() + System.Environment.NewLine;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; _sMessage += System.Environment.NewLine + System.Environment.NewLine;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Get Context and details to the component that threw the exception&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; switch (K2.ContextType)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; case SourceCode.KO.ContextType.ClientEvent:&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; _sMessage += &amp;quot;Exception thrown by: &amp;quot; + K2.ContextType.ToString() + System.Environment.NewLine + System.Environment.NewLine;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; _exContext = K2.ContextObject;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; _sMessage += &amp;quot;Activity Name: &amp;quot; + ((SourceCode.KO.ClientEventContext)_exContext).ActivityInstanceDestination.Activity.Name + System.Environment.NewLine + System.Environment.NewLine;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; _sMessage += &amp;quot;Event Name: &amp;quot; + ((SourceCode.KO.ClientEventContext)_exContext).Event.Name + System.Environment.NewLine;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; break;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; case SourceCode.KO.ContextType.DestinationRule:&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; _sMessage += &amp;quot;Exception thrown by: &amp;quot; + K2.ContextType.ToString() + System.Environment.NewLine + System.Environment.NewLine;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; _exContext = K2.ContextObject;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; _sMessage += &amp;quot;Activity Name: &amp;quot; + ((SourceCode.KO.DestinationRuleContext)_exContext).ActivityInstance.Activity.Name + System.Environment.NewLine + System.Environment.NewLine;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; _sMessage += &amp;quot;Destinations: &amp;quot;;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; foreach (SourceCode.KO.Destination _dest in ((SourceCode.KO.DestinationRuleContext)_exContext).Destinations)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; _sMessage += _dest.Name + &amp;quot; [&amp;quot; + _dest.Type.ToString() + &amp;quot;], &amp;quot;;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; _sMessage = _sMessage.Substring(0, _sMessage.Length - 2) + System.Environment.NewLine + System.Environment.NewLine;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; _sMessage += &amp;quot;Slot data: &amp;quot;;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; foreach (string _slotdata in ((SourceCode.KO.DestinationRuleContext)_exContext).SlotInstanceData)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; _sMessage += _slotdata + &amp;quot;, &amp;quot;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; _sMessage = _sMessage.Substring(0, _sMessage.Length - 2) + System.Environment.NewLine + System.Environment.NewLine;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; _sMessage += &amp;quot;Dynamic Queues: &amp;quot; + ((SourceCode.KO.DestinationRuleContext)_exContext).DynamicQueues.ToString() + System.Environment.NewLine + System.Environment.NewLine;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; _sMessage += &amp;quot;Resolve Queues To Users: &amp;quot; + ((SourceCode.KO.DestinationRuleContext)_exContext).ResolveQueuesToUsers.ToString() + System.Environment.NewLine + System.Environment.NewLine;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; _sMessage += &amp;quot;Single Instance: &amp;quot; + ((SourceCode.KO.DestinationRuleContext)_exContext).SingleInstance.ToString() + System.Environment.NewLine + System.Environment.NewLine;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; _sMessage += &amp;quot;Number of slots: &amp;quot; + ((SourceCode.KO.DestinationRuleContext)_exContext).Slots.ToString() + System.Environment.NewLine;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; break;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; case SourceCode.KO.ContextType.EscalationAction:&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; _sMessage += &amp;quot;Exception thrown by: &amp;quot; + K2.ContextType.ToString() + System.Environment.NewLine + System.Environment.NewLine;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; _exContext = K2.ContextObject;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; _sMessage += &amp;quot;Activity Name: &amp;quot; + ((SourceCode.KO.EscalationActionContext)_exContext).ActivityInstance.Activity.Name + System.Environment.NewLine + System.Environment.NewLine;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; _sMessage += &amp;quot;Redirect: &amp;quot; + ((SourceCode.KO.EscalationActionContext)_exContext).Redirect.ToString() + System.Environment.NewLine + System.Environment.NewLine;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; break;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; case SourceCode.KO.ContextType.EscalationRule:&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; _sMessage += &amp;quot;Exception thrown by: &amp;quot; + K2.ContextType.ToString() + System.Environment.NewLine + System.Environment.NewLine;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; _exContext = K2.ContextObject;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; _sMessage += &amp;quot;Activity Name: &amp;quot; + ((SourceCode.KO.EscalationRuleContext)_exContext).ActivityInstance.Activity.Name + System.Environment.NewLine + System.Environment.NewLine;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; break;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; case SourceCode.KO.ContextType.EventEscalationAction:&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; _sMessage += &amp;quot;Exception thrown by: &amp;quot; + K2.ContextType.ToString() + System.Environment.NewLine + System.Environment.NewLine;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; _exContext = K2.ContextObject;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; _sMessage += &amp;quot;Activity Name: &amp;quot; + ((SourceCode.KO.EventEscalationActionContext)_exContext).EventInstance.ActivityInstanceDestination.Activity.Name + System.Environment.NewLine + System.Environment.NewLine;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; _sMessage += &amp;quot;Event Name: &amp;quot; + ((SourceCode.KO.EventEscalationActionContext)_exContext).EventInstance.Event.Name + System.Environment.NewLine + System.Environment.NewLine;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; break;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; case SourceCode.KO.ContextType.EventEscalationRule:&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; _sMessage += &amp;quot;Exception thrown by: &amp;quot; + K2.ContextType.ToString() + System.Environment.NewLine + System.Environment.NewLine;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; _exContext = K2.ContextObject;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; _sMessage += &amp;quot;Activity Name: &amp;quot; + ((SourceCode.KO.EventEscalationRuleContext)_exContext).EventInstance.ActivityInstanceDestination.Activity.Name + System.Environment.NewLine + System.Environment.NewLine;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; _sMessage += &amp;quot;Event Name: &amp;quot; + ((SourceCode.KO.EventEscalationRuleContext)_exContext).EventInstance.Event.Name + System.Environment.NewLine + System.Environment.NewLine;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; break;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; case SourceCode.KO.ContextType.EventSucceedingRule:&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; _sMessage += &amp;quot;Exception thrown by: &amp;quot; + K2.ContextType.ToString() + System.Environment.NewLine + System.Environment.NewLine;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; _exContext = K2.ContextObject;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; _sMessage += &amp;quot;Activity Name: &amp;quot; + ((SourceCode.KO.EventSucceedingRuleContext)_exContext).EventInstance.ActivityInstanceDestination.Activity.Name + System.Environment.NewLine + System.Environment.NewLine;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; _sMessage += &amp;quot;Event Name: &amp;quot; + ((SourceCode.KO.EventSucceedingRuleContext)_exContext).EventInstance.Event.Name + System.Environment.NewLine + System.Environment.NewLine;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; _sMessage += &amp;quot;Succeeding Rule: &amp;quot; + ((SourceCode.KO.EventSucceedingRuleContext)_exContext).SucceedingRule.ToString() + System.Environment.NewLine + System.Environment.NewLine;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; break;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; case SourceCode.KO.ContextType.IPCEvent:&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; _sMessage += &amp;quot;Exception thrown by: &amp;quot; + K2.ContextType.ToString() + System.Environment.NewLine + System.Environment.NewLine;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; _exContext = K2.ContextObject;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; _sMessage += &amp;quot;Activity Name: &amp;quot; + ((SourceCode.KO.IPCEventContext)_exContext).ActivityInstanceDestination.Activity.Name + System.Environment.NewLine + System.Environment.NewLine;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; _sMessage += &amp;quot;Event Name: &amp;quot; + ((SourceCode.KO.IPCEventContext)_exContext).Event.Name + System.Environment.NewLine + System.Environment.NewLine;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; _sMessage += &amp;quot;IPC Process: &amp;quot; + ((SourceCode.KO.IPCEventContext)_exContext).Process + System.Environment.NewLine + System.Environment.NewLine;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; _sMessage += &amp;quot;IPC Connection String: &amp;quot; + ((SourceCode.KO.IPCEventContext)_exContext).ConnectionString + System.Environment.NewLine + System.Environment.NewLine;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; break;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; case SourceCode.KO.ContextType.LineRule:&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; _sMessage += &amp;quot;Exception thrown by: &amp;quot; + K2.ContextType.ToString() + System.Environment.NewLine + System.Environment.NewLine;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; _exContext = K2.ContextObject;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; _sMessage += &amp;quot;Start Activity Name: &amp;quot; + ((SourceCode.KO.LineRuleContext)_exContext).LineInstance.StartActivityInstance.Activity.Name + System.Environment.NewLine + System.Environment.NewLine;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; _sMessage += &amp;quot;Finish Activity Name: &amp;quot; + ((SourceCode.KO.LineRuleContext)_exContext).LineInstance.FinishActivityInstance.Activity.Name + System.Environment.NewLine + System.Environment.NewLine;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; _sMessage += &amp;quot;Line Name: &amp;quot; + ((SourceCode.KO.LineRuleContext)_exContext).LineInstance.Line.Name + System.Environment.NewLine + System.Environment.NewLine;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; _sMessage += &amp;quot;Line Rule: &amp;quot; + ((SourceCode.KO.LineRuleContext)_exContext).LineRule.ToString() + System.Environment.NewLine + System.Environment.NewLine;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; break;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; case SourceCode.KO.ContextType.PrecedingRule:&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; _sMessage += &amp;quot;Exception thrown by: &amp;quot; + K2.ContextType.ToString() + System.Environment.NewLine + System.Environment.NewLine;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; _exContext = K2.ContextObject;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; _sMessage += &amp;quot;Activity Name: &amp;quot; + ((SourceCode.KO.PrecedingRuleContext)_exContext).ActivityInstance.Activity.Name + System.Environment.NewLine + System.Environment.NewLine;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; _sMessage += &amp;quot;Preceeding Rule: &amp;quot; + ((SourceCode.KO.PrecedingRuleContext)_exContext).PrecedingRule.ToString() + System.Environment.NewLine + System.Environment.NewLine;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; break;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; case SourceCode.KO.ContextType.ProcessEscalationAction:&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; case SourceCode.KO.ContextType.ProcessEscalationRule:&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; case SourceCode.KO.ContextType.ProcessFinishRule:&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; _sMessage += &amp;quot;Exception thrown by: &amp;quot; + K2.ContextType.ToString() + System.Environment.NewLine + System.Environment.NewLine;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; _exContext = K2.ContextObject;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; break;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; case SourceCode.KO.ContextType.ProcessStartRule:&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; _sMessage += &amp;quot;Exception thrown by: &amp;quot; + K2.ContextType.ToString() + System.Environment.NewLine + System.Environment.NewLine;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; _sMessage += &amp;quot;Message: &amp;quot; + ((SourceCode.KO.ProcessStartRuleContext)_exContext).Message + System.Environment.NewLine + System.Environment.NewLine;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; _sMessage += &amp;quot;Start: &amp;quot; + ((SourceCode.KO.ProcessStartRuleContext)_exContext).Start.ToString() + System.Environment.NewLine + System.Environment.NewLine;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; _exContext = K2.ContextObject;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; break;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; case SourceCode.KO.ContextType.ServerEvent:&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; _sMessage += &amp;quot;Exception thrown by: &amp;quot; + K2.ContextType.ToString() + System.Environment.NewLine + System.Environment.NewLine;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; _exContext = K2.ContextObject;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; _sMessage += &amp;quot;Activity Name: &amp;quot; + ((SourceCode.KO.ServerEventContext)_exContext).ActivityInstanceDestination.Activity.Name + System.Environment.NewLine + System.Environment.NewLine;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; _sMessage += &amp;quot;Event Name: &amp;quot; + ((SourceCode.KO.ServerEventContext)_exContext).Event.Name + System.Environment.NewLine + System.Environment.NewLine;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; break;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; case SourceCode.KO.ContextType.StartRule:&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; _sMessage += &amp;quot;Exception thrown by: &amp;quot; + K2.ContextType.ToString() + System.Environment.NewLine + System.Environment.NewLine;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; _exContext = K2.ContextObject;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; _sMessage += &amp;quot;Activity Name: &amp;quot; + ((SourceCode.KO.StartRuleContext)_exContext).ActivityInstance.Activity.Name + System.Environment.NewLine + System.Environment.NewLine;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; break;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; case SourceCode.KO.ContextType.SucceedingRule:&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; _sMessage += &amp;quot;Exception thrown by: &amp;quot; + K2.ContextType.ToString() + System.Environment.NewLine + System.Environment.NewLine;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; _exContext = K2.ContextObject;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; _sMessage += &amp;quot;Activity Name: &amp;quot; + ((SourceCode.KO.SucceedingRuleContext)_exContext).ActivityInstance.Activity.Name + System.Environment.NewLine + System.Environment.NewLine;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; _sMessage += &amp;quot;Succeeding Rule: &amp;quot; + ((SourceCode.KO.SucceedingRuleContext)_exContext).SucceedingRule.ToString() + System.Environment.NewLine + System.Environment.NewLine;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; break;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; default:&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; break;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; _sMessage += System.Environment.NewLine + &amp;quot;Exception: &amp;quot; + System.Environment.NewLine;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Get the actual exception thrown&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ex = (Exception)K2.ExceptionObject;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; while (_bFlag == true)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (ex.InnerException != null)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ex = ex.InnerException;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; else&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; _sMessage += &amp;quot;\tMessage: &amp;quot; + ex.Message + System.Environment.NewLine;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; _sMessage += &amp;quot;Stack Trace:&amp;quot; + System.Environment.NewLine;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; _sMessage += &amp;quot;\t&amp;quot; + &amp;quot;\t&amp;quot; + ex.StackTrace + System.Environment.NewLine + System.Environment.NewLine;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; _bFlag = false;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; _expMail.Body = _sMessage;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; System.Web.Mail.SmtpMail.Send(_expMail);&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Rethrow the original exception to make sure the process goes into error state&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; throw new Exception(ex.Message);&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; catch (Exception ex2)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; throw new Exception(ex2.Message);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; finally&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ex = null;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; _exContext = null;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; _expMail = null;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://k2underground.com/aggbug.aspx?PostID=34430" width="1" height="1"&gt;</description><category domain="http://k2underground.com/blogs/pitchblack/archive/tags/Exception+Email+Error/default.aspx">Exception Email Error</category></item><item><title>K2 Good Practice: SmartObject Naming and Organisation</title><link>http://k2underground.com/blogs/pitchblack/archive/2009/11/20/k2-good-practice-smartobject-naming-and-organisation.aspx</link><pubDate>Fri, 20 Nov 2009 09:11:22 GMT</pubDate><guid isPermaLink="false">1c9bda6b-c6e6-4e79-8d32-b70ad0011ef7:34399</guid><dc:creator>Murphy</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://k2underground.com/blogs/pitchblack/rsscomments.aspx?PostID=34399</wfw:commentRss><comments>http://k2underground.com/blogs/pitchblack/archive/2009/11/20/k2-good-practice-smartobject-naming-and-organisation.aspx#comments</comments><description>&lt;p&gt;SmartObjects are just like any other item you will create in Visual Studio and you should be looking to make sure that you keep them well named and structured in your solutions. This will give you many benefits including:&lt;/p&gt;  &lt;p&gt;1) Good naming will ensure that you do not confuse your SmartObjects with another with the same name in a shared platform. Consider if you have a SmartObject called Person in you project and you are deploying to a shared K2 server, it is very possible that someone with another project will also have a SmartObject called Person. As SmartObjects are uniquely identified by their name you now have a clash. &lt;/p&gt;  &lt;p&gt;Consider using a namespace notation e.g ProjectName.Person&lt;/p&gt;  &lt;p&gt;*Note when you do this if you are coding against the SmartObject API then the SmartObject name will be ProjectName_Person.&lt;/p&gt;  &lt;p&gt;&lt;b&gt;Sample Project Structure&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://k2underground.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/pitchblack.metablogapi/6278.clip_5F00_image002_5F00_47DF2690.jpg"&gt;&lt;img style="border-bottom:0px;border-left:0px;display:inline;border-top:0px;border-right:0px;" title="clip_image002" border="0" alt="clip_image002" src="http://k2underground.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/pitchblack.metablogapi/5773.clip_5F00_image002_5F00_thumb_5F00_267F80F4.jpg" width="334" height="170" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;2) Implement good organisation by placing your SmartObjects into folders in you project. This will &lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Ensure that if you have a large number of SmartObjects you project they are easy to find in Visual Studio.&lt;/li&gt;    &lt;li&gt;When you deploy the SmartObject to K2 it will be placed in a category structure that matches your folder structure. This makes locating the SmartObject when using the tools like the SmartObject Tester easy.&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;strong&gt;SmartObjects as seen through the SmartObjectTester Tool&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://k2underground.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/pitchblack.metablogapi/4135.clip_5F00_image004_5F00_1E1BAB9D.jpg"&gt;&lt;img style="border-bottom:0px;border-left:0px;display:inline;border-top:0px;border-right:0px;" title="clip_image004" border="0" alt="clip_image004" src="http://k2underground.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/pitchblack.metablogapi/0815.clip_5F00_image004_5F00_thumb_5F00_15B7D646.jpg" width="520" height="172" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;*Note that SmartObjects are placed in Categories directly related the project folder structure and not the project name, therefore if you want to change it then change the folder(s) of your project.&lt;/p&gt;  &lt;p&gt;For further good practices make sure that you see the &lt;a href="http://help.k2.com/en/KB000352.aspx"&gt;K2 blackpearl Best Practices&lt;/a&gt; knowledgebase article.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://k2underground.com/aggbug.aspx?PostID=34399" width="1" height="1"&gt;</description></item><item><title>Simple batch scripts to restart your K2 Service, or to launch console mode</title><link>http://k2underground.com/blogs/pitchblack/archive/2009/10/12/simple-batch-scripts-to-restart-your-k2-service-or-to-launch-console-mode.aspx</link><pubDate>Mon, 12 Oct 2009 14:02:00 GMT</pubDate><guid isPermaLink="false">1c9bda6b-c6e6-4e79-8d32-b70ad0011ef7:33662</guid><dc:creator>NeilM</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://k2underground.com/blogs/pitchblack/rsscomments.aspx?PostID=33662</wfw:commentRss><comments>http://k2underground.com/blogs/pitchblack/archive/2009/10/12/simple-batch-scripts-to-restart-your-k2-service-or-to-launch-console-mode.aspx#comments</comments><description>&lt;p&gt;Sometimes, it is necessary to recycle your K2 BlackPearl Service, for example when you want to update service type assemblies in the ServiceBroker folder.You could go into the services management console and stop and start the service, or you could create a small batch file that would do it for you.&lt;/p&gt;
&lt;p&gt;This script will restart your K2 service - nte that thre is a built-in delay to wait for resources to be released, before starting the service again. Copy this text into a text file, and save it as a .bat file anywhere on your K2 server. When you run the batch file, your K2 service will be restarted.&lt;/p&gt;
&lt;p&gt;REM SCRIPT STARTS HERE&lt;/p&gt;
&lt;p&gt;@echo off&lt;br /&gt;echo This batch will stop and start the K2 server service,&lt;br /&gt;pause&lt;br /&gt;echo Stopping the BlackPearl service (ignore errors stating that the service is stopped)&lt;br /&gt;net stop &amp;quot;K2 blackpearl Server&amp;quot;&lt;br /&gt;echo wait for 30 seconds to ensure resources are released&lt;br /&gt;ping -n 30 localhost &amp;gt; nul &lt;br /&gt;net start &amp;quot;K2 blackpearl Server&amp;quot;&lt;br /&gt;echo if no errors were reported, you may close this window&lt;br /&gt;pause&lt;/p&gt;
&lt;p&gt;REM SCRIPT ENDS HERE&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;It is also quite common to run your K2 server in console mode during development. As you know, you should run your K2 server .exe process as the K2 Service account when in console mode, to ensure that the security context is the same as when the service is running in &amp;#39;normal&amp;#39; mode.&lt;/p&gt;
&lt;p&gt;Utilities such as BetterRunAs and PsExec allow yo to launch applications under differnet user credentials. The batch file example below assumes you have BetterRunAs copied on your local machine. &lt;/p&gt;
&lt;p&gt;The script will stop the K2 server service, then launch the K2 server in console mode, and finally, when you have closed the console window, restart the K2 service&lt;/p&gt;
&lt;p&gt;REM SCRIPT STARTS HERE&lt;/p&gt;
&lt;p&gt;@echo off&lt;br /&gt;rem ---------------------------&lt;br /&gt;rem Usage: BetterRunAs.exe &amp;quot;application&amp;quot; &amp;quot;domain&amp;quot; &amp;quot;userid&amp;quot; &amp;quot;password&amp;quot;&lt;br /&gt;rem ---------------------------&lt;br /&gt;echo This batch will stop the K2 server service, and start K2 in console mode.&lt;br /&gt;pause&lt;br /&gt;echo Stopping the BlackPearl service (ignore errors stating that the service is stopped)&lt;br /&gt;net stop &amp;quot;K2 blackpearl Server&amp;quot;&lt;br /&gt;echo remember to restart the K2 service after you are finished&lt;br /&gt;echo running it in console mode. &lt;br /&gt;echo wait for 20 seconds to ensure resources are released&lt;br /&gt;ping -n 20 localhost &amp;gt; nul &lt;br /&gt;echo Start the blackpearl service as the service user in console mode&lt;br /&gt;REM 64-bit systems: use the following line&lt;br /&gt;REM &amp;quot;C:\Program Files (x86)\runas\BetterRunAs.exe&amp;quot; &amp;quot;C:\Program Files (x86)\K2 blackpearl\Host Server\Bin\K2HostServer.exe&amp;quot; [DOMAIN] [K2SERVICEACCOUNT] [K2SERVICEACCOUNTPASSWORD]&lt;br /&gt;REM 32-bit Systems use the following line&lt;br /&gt;&amp;quot;C:\Program Files\runas\BetterRunAs.exe&amp;quot; &amp;quot;C:\Program Files\K2 blackpearl\Host Server\Bin\K2HostServer.exe&amp;quot; [DOMAIN] [K2SERVICEACCOUNT] [K2SERVICEACCOUNTPASSWORD]&lt;br /&gt;echo *If you wish, leave this window open, and once you close the K2 console window,&lt;br /&gt;echo press enter to restart the K2 service automatically&lt;br /&gt;echo (close the K2 console window first!)&lt;br /&gt;pause&lt;br /&gt;echo wait for 20 seconds to ensure resources are released&lt;br /&gt;ping -n 20 localhost &amp;gt; nul&lt;br /&gt;echo Starting the BlackPearl service&lt;br /&gt;echo if any errors are reported, please check them&lt;br /&gt;net start &amp;quot;K2 blackpearl Server&amp;quot;&lt;br /&gt;echo if no errors were reported, you may close this window&lt;br /&gt;pause&lt;/p&gt;
&lt;p&gt;REM SCRIPT ENDS HERE&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://k2underground.com/aggbug.aspx?PostID=33662" width="1" height="1"&gt;</description></item><item><title>How to implement a ASP.NET Security Provider for K2 blackpearl</title><link>http://k2underground.com/blogs/pitchblack/archive/2009/06/17/how-to-implement-a-asp-net-security-provider-for-k2-blackpearl.aspx</link><pubDate>Wed, 17 Jun 2009 11:18:00 GMT</pubDate><guid isPermaLink="false">1c9bda6b-c6e6-4e79-8d32-b70ad0011ef7:31548</guid><dc:creator>arno</dc:creator><slash:comments>7</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://k2underground.com/blogs/pitchblack/rsscomments.aspx?PostID=31548</wfw:commentRss><comments>http://k2underground.com/blogs/pitchblack/archive/2009/06/17/how-to-implement-a-asp-net-security-provider-for-k2-blackpearl.aspx#comments</comments><description>&lt;p style="MARGIN:0cm 0cm 10pt;" class="MsoNormal"&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;The example below takes you through the steps to use the ASP.NET Authentication Provider with K2 blackpearl.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;A typical scenario where you might use the ASP.NET Security Provider is when your Web Application requires a user to login in order to view restricted content.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;This includes a K2 Worklist.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;This article shows how to take advantage of the out-of-box ASP.NET security components and how to extend it to enable successful integration with K2 blackpearl.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;The code (&amp;#39;ASPNetSecManager.zip&amp;#39;) for this blog post can be downloaded from&amp;nbsp;&lt;/span&gt;&lt;a href="http://www.k2underground.com/groups/k2_blackpearl_custom_security_provider/media/p/31588.aspx"&gt;http://www.k2underground.com/groups/k2_blackpearl_custom_security_provider/media/p/31588.aspx&lt;/a&gt;&lt;span&gt;.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;&lt;strong&gt;Please ensure you login the Underground before accessing the link.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;Please also note the accompanying readme.txt&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="mso-ascii-font-family:Calibri;mso-hansi-font-family:Calibri;"&gt;&lt;span style="font-family:Calibri;"&gt;&lt;em&gt;
&lt;p style="MARGIN:0cm 0cm 10pt;" class="MsoNormal"&gt;&lt;em&gt;&lt;span style="FONT-FAMILY:&amp;#39;Calibri&amp;#39;,&amp;#39;sans-serif&amp;#39;;mso-bidi-font-family:&amp;#39;Times New Roman&amp;#39;;mso-bidi-theme-font:minor-bidi;"&gt;&lt;span style="font-size:small;"&gt;Note:&amp;nbsp; Full visibility of some images might be suppressed due to auto&amp;nbsp;cropping.&amp;nbsp; Simply right-click the image and paste the URL in a new browser window in order to view the complete image&lt;/span&gt;&lt;/span&gt;&lt;/em&gt;&lt;/p&gt;
&lt;/em&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN:0cm 0cm 10pt;" class="MsoNormal"&gt;&lt;span style="mso-ascii-font-family:Calibri;mso-hansi-font-family:Calibri;"&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Calibri;"&gt;Let&amp;rsquo;s get started:&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN:0cm 0cm 0pt 36pt;TEXT-INDENT:-18pt;mso-list:l1 level1 lfo1;" class="MsoListParagraphCxSpFirst"&gt;&lt;span style="mso-bidi-font-family:Calibri;mso-ascii-font-family:Calibri;mso-hansi-font-family:Calibri;mso-fareast-font-family:Calibri;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;1.&lt;/span&gt;&lt;span style="FONT:7pt &amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="mso-ascii-font-family:Calibri;mso-hansi-font-family:Calibri;"&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Calibri;"&gt;Ensure K2 Host Server is stopped.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;(Start &amp;gt; Run &amp;gt;Services.msc, find &amp;lsquo;K2 blackpearl Server&amp;rsquo;, right click and select &amp;lsquo;All Tasks &amp;gt; Stop&amp;rsquo;)&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN:0cm 0cm 0pt 36pt;" class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="mso-ascii-font-family:Calibri;mso-hansi-font-family:Calibri;"&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN:0cm 0cm 0pt 36pt;" class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="mso-ascii-font-family:Calibri;mso-hansi-font-family:Calibri;"&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;&lt;/span&gt;&lt;/span&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="MARGIN:0cm 0cm 10pt 36pt;TEXT-INDENT:-18pt;mso-list:l1 level1 lfo1;" class="MsoListParagraphCxSpLast"&gt;&lt;span style="mso-bidi-font-family:Calibri;mso-ascii-font-family:Calibri;mso-hansi-font-family:Calibri;mso-fareast-font-family:Calibri;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;2.&lt;/span&gt;&lt;span style="FONT:7pt &amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="mso-ascii-font-family:Calibri;mso-hansi-font-family:Calibri;"&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Calibri;"&gt;Create a Folder where your solution will be created in.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;Let&amp;rsquo;s name this &amp;ldquo;ASPSec&amp;rdquo;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p align="center" style="MARGIN:0cm 0cm 10pt;TEXT-ALIGN:center;" class="MsoNormal"&gt;&lt;span style="mso-fareast-language:EN-GB;mso-no-proof:yes;"&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;&lt;img src="http://i272.photobucket.com/albums/jj162/K2Underground/ArnoAspSecProvIMG/001.jpg" alt="" /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN:0cm 0cm 0pt 36pt;TEXT-INDENT:-18pt;mso-list:l1 level1 lfo1;" class="MsoListParagraphCxSpFirst"&gt;&lt;span style="mso-bidi-font-family:Calibri;mso-bidi-theme-font:minor-latin;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="MARGIN:0cm 0cm 0pt 36pt;TEXT-INDENT:-18pt;mso-list:l1 level1 lfo1;" class="MsoListParagraphCxSpFirst"&gt;&lt;span style="mso-bidi-font-family:Calibri;mso-bidi-theme-font:minor-latin;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="MARGIN:0cm 0cm 0pt 36pt;TEXT-INDENT:-18pt;mso-list:l1 level1 lfo1;" class="MsoListParagraphCxSpFirst"&gt;&lt;span style="mso-bidi-font-family:Calibri;mso-bidi-theme-font:minor-latin;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;3.&lt;/span&gt;&lt;span style="FONT:7pt &amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;Create a containing folder for the Web Applications we will use.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;(We will create 2 Web Applications; one for the User Manager and one that will enable us to test the Workflow)&lt;/span&gt;&lt;/p&gt;
&lt;p align="center" style="MARGIN:0cm 0cm 0pt 36pt;TEXT-ALIGN:center;" class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="mso-fareast-language:EN-GB;mso-no-proof:yes;"&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;&lt;img src="http://i272.photobucket.com/albums/jj162/K2Underground/ArnoAspSecProvIMG/002.jpg" alt="" /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p align="center" style="MARGIN:0cm 0cm 0pt 36pt;TEXT-ALIGN:center;" class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN:0cm 0cm 0pt 36pt;TEXT-INDENT:-18pt;mso-list:l1 level1 lfo1;" class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="mso-bidi-font-family:Calibri;mso-bidi-theme-font:minor-latin;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="MARGIN:0cm 0cm 0pt 36pt;TEXT-INDENT:-18pt;mso-list:l1 level1 lfo1;" class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="mso-bidi-font-family:Calibri;mso-bidi-theme-font:minor-latin;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;4.&lt;/span&gt;&lt;span style="FONT:7pt &amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;Create the 2 Web Application Folders&lt;/span&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p align="center" style="MARGIN:0cm 0cm 0pt 36pt;TEXT-ALIGN:center;" class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="mso-fareast-language:EN-GB;mso-no-proof:yes;"&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;&lt;img src="http://i272.photobucket.com/albums/jj162/K2Underground/ArnoAspSecProvIMG/003.jpg" alt="" /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN:0cm 0cm 0pt 36pt;" class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN:0cm 0cm 0pt 36pt;TEXT-INDENT:-18pt;mso-list:l1 level1 lfo1;" class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="mso-bidi-font-family:Calibri;mso-bidi-theme-font:minor-latin;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="MARGIN:0cm 0cm 0pt 36pt;TEXT-INDENT:-18pt;mso-list:l1 level1 lfo1;" class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="mso-bidi-font-family:Calibri;mso-bidi-theme-font:minor-latin;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;5.&lt;/span&gt;&lt;span style="FONT:7pt &amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;Extract the &amp;ldquo;ASPNetSecManager.zip&amp;rdquo; to a favourite location&lt;/span&gt;&lt;/p&gt;
&lt;p align="center" style="MARGIN:0cm 0cm 0pt 36pt;TEXT-ALIGN:center;" class="MsoListParagraphCxSpMiddle"&gt;&lt;img src="http://i272.photobucket.com/albums/jj162/K2Underground/ArnoAspSecProvIMG/004.jpg" alt="" /&gt;&lt;/p&gt;
&lt;p style="MARGIN:0cm 0cm 0pt 36pt;" class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN:0cm 0cm 0pt 36pt;" class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;&lt;/span&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="MARGIN:0cm 0cm 0pt 36pt;TEXT-INDENT:-18pt;mso-list:l1 level1 lfo1;" class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="mso-bidi-font-family:Calibri;mso-bidi-theme-font:minor-latin;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;6.&lt;/span&gt;&lt;span style="FONT:7pt &amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;Copy and Paste the contents of &amp;ldquo;www&amp;rdquo; to the folder indicated in the image&lt;/span&gt;&lt;/p&gt;
&lt;p align="center" style="MARGIN:0cm 0cm 0pt 36pt;TEXT-ALIGN:center;" class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;&lt;img src="http://i272.photobucket.com/albums/jj162/K2Underground/ArnoAspSecProvIMG/005.jpg" alt="" /&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN:0cm 0cm 0pt 36pt;" class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN:0cm 0cm 0pt 36pt;" class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;&lt;/span&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="MARGIN:0cm 0cm 0pt 36pt;TEXT-INDENT:-18pt;mso-list:l1 level1 lfo1;" class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="mso-bidi-font-family:Calibri;mso-bidi-theme-font:minor-latin;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;7.&lt;/span&gt;&lt;span style="FONT:7pt &amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;Copy and Paste the contents of &amp;ldquo;wwwSecManager&amp;rdquo; to the folder indicated in the image&lt;/span&gt;&lt;/p&gt;
&lt;p align="center" style="MARGIN:0cm 0cm 0pt 36pt;TEXT-ALIGN:center;" class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="mso-fareast-language:EN-GB;mso-no-proof:yes;"&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;&lt;img src="http://i272.photobucket.com/albums/jj162/K2Underground/ArnoAspSecProvIMG/006.jpg" alt="" /&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p align="center" style="MARGIN:0cm 0cm 0pt 36pt;TEXT-ALIGN:center;" class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="mso-fareast-language:EN-GB;mso-no-proof:yes;"&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;&lt;/span&gt;&lt;/span&gt;&amp;nbsp;&lt;/p&gt;
&lt;p align="center" style="MARGIN:0cm 0cm 0pt 36pt;TEXT-ALIGN:center;" class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="mso-fareast-language:EN-GB;mso-no-proof:yes;"&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;&lt;img src="http://i272.photobucket.com/albums/jj162/K2Underground/ArnoAspSecProvIMG/007.jpg" alt="" /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN:0cm 0cm 0pt 36pt;" class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN:0cm 0cm 0pt 36pt;" class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;&lt;/span&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="MARGIN:0cm 0cm 0pt 36pt;TEXT-INDENT:-18pt;mso-list:l1 level1 lfo1;" class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="mso-bidi-font-family:Calibri;mso-bidi-theme-font:minor-latin;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;8.&lt;/span&gt;&lt;span style="FONT:7pt &amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;Open SQL Management Studio and create a Blank database that will be extended with the ASP.NET Security Provider artifacts.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;Name it &amp;lsquo;ASPSec&amp;rsquo;&lt;/span&gt;&lt;/p&gt;
&lt;p align="center" style="MARGIN:0cm 0cm 0pt 36pt;TEXT-ALIGN:center;" class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="mso-fareast-language:EN-GB;mso-no-proof:yes;"&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;&lt;img src="http://i272.photobucket.com/albums/jj162/K2Underground/ArnoAspSecProvIMG/008.jpg" alt="" /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN:0cm 0cm 0pt 36pt;" class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN:0cm 0cm 0pt 36pt;" class="MsoListParagraphCxSpMiddle"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="MARGIN:0cm 0cm 0pt 36pt;TEXT-INDENT:-18pt;mso-list:l1 level1 lfo1;" class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="mso-bidi-font-family:Calibri;mso-bidi-theme-font:minor-latin;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;9.&lt;/span&gt;&lt;span style="FONT:7pt &amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;Create a new SQL Account that will be used to connect to the ASPSec database by the SecurityProvider&lt;/span&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p align="center" style="MARGIN:0cm 0cm 0pt 36pt;TEXT-ALIGN:center;" class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="mso-fareast-language:EN-GB;mso-no-proof:yes;"&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;&lt;img src="http://i272.photobucket.com/albums/jj162/K2Underground/ArnoAspSecProvIMG/009.jpg" alt="" /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN:0cm 0cm 0pt 36pt;TEXT-INDENT:-18pt;mso-list:l1 level1 lfo1;" class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="mso-bidi-font-family:Calibri;mso-bidi-theme-font:minor-latin;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="MARGIN:0cm 0cm 0pt 36pt;TEXT-INDENT:-18pt;mso-list:l1 level1 lfo1;" class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="mso-bidi-font-family:Calibri;mso-bidi-theme-font:minor-latin;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="MARGIN:0cm 0cm 0pt 36pt;TEXT-INDENT:-18pt;mso-list:l1 level1 lfo1;" class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="mso-bidi-font-family:Calibri;mso-bidi-theme-font:minor-latin;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;10.&lt;/span&gt;&lt;span style="FONT:7pt &amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;Ensure to grant the permissions below&lt;/span&gt;&lt;/p&gt;
&lt;p align="center" style="MARGIN:0cm 0cm 0pt 36pt;TEXT-ALIGN:center;" class="MsoListParagraphCxSpMiddle"&gt;&lt;img src="http://i272.photobucket.com/albums/jj162/K2Underground/ArnoAspSecProvIMG/010.jpg" alt="" /&gt;&lt;/p&gt;
&lt;p style="MARGIN:0cm 0cm 0pt 36pt;" class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN:0cm 0cm 0pt 36pt;" class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;(Tip: After creating the account, click on the &amp;lsquo;Connect&amp;rsquo; icon in Management Studio and enter your newly created account details.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;This will ensure any SQL Policies (i.e. &amp;lsquo;Change account on next login&amp;rsquo; issues can be resolved at this stage)&lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN:0cm 0cm 0pt 36pt;" class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;&lt;/span&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="MARGIN:0cm 0cm 0pt 36pt;" class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="mso-spacerun:yes;"&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;&lt;/span&gt;&lt;/span&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="MARGIN:0cm 0cm 0pt 36pt;TEXT-INDENT:-18pt;mso-list:l1 level1 lfo1;" class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="mso-bidi-font-family:Calibri;mso-bidi-theme-font:minor-latin;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;11.&lt;/span&gt;&lt;span style="FONT:7pt &amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;Let&amp;rsquo;s extend the database with the ASP.NET Membership artifacts.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;Open VS Command prompt&lt;/span&gt;&lt;/p&gt;
&lt;p align="center" style="MARGIN:0cm 0cm 0pt 36pt;TEXT-ALIGN:center;" class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="mso-fareast-language:EN-GB;mso-no-proof:yes;"&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;&lt;img src="http://i272.photobucket.com/albums/jj162/K2Underground/ArnoAspSecProvIMG/011.jpg" alt="" /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN:0cm 0cm 10pt 36pt;TEXT-INDENT:-18pt;mso-list:l1 level1 lfo1;" class="MsoListParagraphCxSpLast"&gt;&lt;span style="mso-bidi-font-family:Calibri;mso-bidi-theme-font:minor-latin;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="MARGIN:0cm 0cm 10pt 36pt;TEXT-INDENT:-18pt;mso-list:l1 level1 lfo1;" class="MsoListParagraphCxSpLast"&gt;&lt;span style="mso-bidi-font-family:Calibri;mso-bidi-theme-font:minor-latin;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;12.&lt;/span&gt;&lt;span style="FONT:7pt &amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;Run the aspnet_regsql command&lt;/span&gt;&lt;span style="mso-fareast-language:EN-GB;mso-no-proof:yes;"&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;&lt;img src="http://i272.photobucket.com/albums/jj162/K2Underground/ArnoAspSecProvIMG/012.jpg" alt="" /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN:0cm 0cm 0pt 36pt;TEXT-INDENT:-18pt;mso-list:l1 level1 lfo1;" class="MsoListParagraphCxSpFirst"&gt;&lt;span style="mso-bidi-font-family:Calibri;mso-bidi-theme-font:minor-latin;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="MARGIN:0cm 0cm 0pt 36pt;TEXT-INDENT:-18pt;mso-list:l1 level1 lfo1;" class="MsoListParagraphCxSpFirst"&gt;&lt;span style="mso-bidi-font-family:Calibri;mso-bidi-theme-font:minor-latin;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;13.&lt;/span&gt;&lt;span style="FONT:7pt &amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;Select the 1&lt;sup&gt;st&lt;/sup&gt; option and click Next&lt;/span&gt;&lt;/p&gt;
&lt;p align="center" style="MARGIN:0cm 0cm 0pt 36pt;TEXT-ALIGN:center;" class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="mso-fareast-language:EN-GB;mso-no-proof:yes;"&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;&lt;img src="http://i272.photobucket.com/albums/jj162/K2Underground/ArnoAspSecProvIMG/013.jpg" alt="" /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p align="center" style="MARGIN:0cm 0cm 0pt 36pt;TEXT-ALIGN:center;" class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN:0cm 0cm 0pt 36pt;TEXT-INDENT:-18pt;mso-list:l1 level1 lfo1;" class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="mso-bidi-font-family:Calibri;mso-bidi-theme-font:minor-latin;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="MARGIN:0cm 0cm 0pt 36pt;TEXT-INDENT:-18pt;mso-list:l1 level1 lfo1;" class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="mso-bidi-font-family:Calibri;mso-bidi-theme-font:minor-latin;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;14.&lt;/span&gt;&lt;span style="FONT:7pt &amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;Select the Membership Store to extend and finish the wizard&lt;/span&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN:0cm 0cm 0pt 36pt;" class="MsoListParagraphCxSpMiddle"&gt;&lt;img src="http://i272.photobucket.com/albums/jj162/K2Underground/ArnoAspSecProvIMG/014.jpg" alt="" /&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="MARGIN:0cm 0cm 0pt 36pt;" class="MsoListParagraphCxSpMiddle"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="MARGIN:0cm 0cm 0pt 36pt;" class="MsoListParagraphCxSpMiddle"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="MARGIN:0cm 0cm 0pt 36pt;TEXT-INDENT:-18pt;mso-list:l1 level1 lfo1;" class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="mso-bidi-font-family:Calibri;mso-bidi-theme-font:minor-latin;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;15.&lt;/span&gt;&lt;span style="FONT:7pt &amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;Execute the following SQL Command against the ASPSec database&lt;/span&gt;&lt;/p&gt;
&lt;p align="center" style="MARGIN:0cm 0cm 0pt 36pt;TEXT-ALIGN:center;" class="MsoListParagraphCxSpMiddle"&gt;&lt;img src="http://i272.photobucket.com/albums/jj162/K2Underground/ArnoAspSecProvIMG/015.jpg" alt="" /&gt;&lt;/p&gt;
&lt;p style="MARGIN:0cm 0cm 0pt 36pt;" class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN:0cm 0cm 0pt 36pt;" class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;&lt;/span&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="MARGIN:0cm 0cm 0pt 36pt;TEXT-INDENT:-18pt;mso-list:l1 level1 lfo1;" class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="mso-bidi-font-family:Calibri;mso-bidi-theme-font:minor-latin;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;16.&lt;/span&gt;&lt;span style="FONT:7pt &amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;Let&amp;rsquo;s configure the User Manager and Workflow test Web Applications.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;I will do the Workflow test Web App first.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;Open IIS and configure a new virtual directory&lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN:0cm 0cm 0pt 36pt;" class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;&lt;img src="http://i272.photobucket.com/albums/jj162/K2Underground/ArnoAspSecProvIMG/016.jpg" alt="" /&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN:0cm 0cm 0pt 36pt;" class="MsoListParagraphCxSpMiddle"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="MARGIN:0cm 0cm 0pt 36pt;TEXT-INDENT:-18pt;mso-list:l1 level1 lfo1;" class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="mso-bidi-font-family:Calibri;mso-bidi-theme-font:minor-latin;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="MARGIN:0cm 0cm 0pt 36pt;TEXT-INDENT:-18pt;mso-list:l1 level1 lfo1;" class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="mso-bidi-font-family:Calibri;mso-bidi-theme-font:minor-latin;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;17.&lt;/span&gt;&lt;span style="FONT:7pt &amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;Enter the details below.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;Note the name is the same as the value we inserted into the &amp;lsquo;aspnet_Applications&amp;rsquo;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;table earlier&lt;/span&gt;&lt;/p&gt;
&lt;p align="center" style="MARGIN:0cm 0cm 0pt 36pt;TEXT-ALIGN:center;" class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="mso-fareast-language:EN-GB;mso-no-proof:yes;"&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;&lt;img src="http://i272.photobucket.com/albums/jj162/K2Underground/ArnoAspSecProvIMG/017.jpg" alt="" /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN:0cm 0cm 0pt 36pt;" class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN:0cm 0cm 0pt 36pt;" class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;&lt;/span&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="MARGIN:0cm 0cm 0pt 36pt;TEXT-INDENT:-18pt;mso-list:l1 level1 lfo1;" class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="mso-bidi-font-family:Calibri;mso-bidi-theme-font:minor-latin;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;18.&lt;/span&gt;&lt;span style="FONT:7pt &amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;Enter the path to the source files&lt;/span&gt;&lt;/p&gt;
&lt;p align="center" style="MARGIN:0cm 0cm 0pt 36pt;TEXT-ALIGN:center;" class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="mso-fareast-language:EN-GB;mso-no-proof:yes;"&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;&lt;img src="http://i272.photobucket.com/albums/jj162/K2Underground/ArnoAspSecProvIMG/018.jpg" alt="" /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN:0cm 0cm 0pt 36pt;" class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN:0cm 0cm 0pt 36pt;" class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;&lt;/span&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="MARGIN:0cm 0cm 0pt 36pt;TEXT-INDENT:-18pt;mso-list:l1 level1 lfo1;" class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="mso-bidi-font-family:Calibri;mso-bidi-theme-font:minor-latin;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;19.&lt;/span&gt;&lt;span style="FONT:7pt &amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;Set the Virtual Directory values&lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN:0cm 0cm 0pt 36pt;" class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="mso-fareast-language:EN-GB;mso-no-proof:yes;"&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;&lt;img src="http://i272.photobucket.com/albums/jj162/K2Underground/ArnoAspSecProvIMG/019.jpg" alt="" /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN:0cm 0cm 0pt 36pt;" class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN:0cm 0cm 0pt 36pt;" class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;&lt;/span&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="MARGIN:0cm 0cm 0pt 36pt;TEXT-INDENT:-18pt;mso-list:l1 level1 lfo1;" class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="mso-bidi-font-family:Calibri;mso-bidi-theme-font:minor-latin;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;20.&lt;/span&gt;&lt;span style="FONT:7pt &amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;Set Anonymous access only.&lt;/span&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN:0cm 0cm 0pt 36pt;" class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="mso-fareast-language:EN-GB;mso-no-proof:yes;"&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;&lt;img src="http://i272.photobucket.com/albums/jj162/K2Underground/ArnoAspSecProvIMG/020.jpg" alt="" /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN:0cm 0cm 0pt 36pt;" class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN:0cm 0cm 0pt 36pt;" class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;&lt;/span&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="MARGIN:0cm 0cm 0pt 36pt;TEXT-INDENT:-18pt;mso-list:l1 level1 lfo1;" class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="mso-bidi-font-family:Calibri;mso-bidi-theme-font:minor-latin;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;21.&lt;/span&gt;&lt;span style="FONT:7pt &amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;Let&amp;rsquo;s configure the User Manager Web App now.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;Create a new virtual directory in IIS&lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN:0cm 0cm 0pt 36pt;" class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="mso-fareast-language:EN-GB;mso-no-proof:yes;"&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;&lt;img src="http://i272.photobucket.com/albums/jj162/K2Underground/ArnoAspSecProvIMG/021.jpg" alt="" /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN:0cm 0cm 0pt 36pt;" class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN:0cm 0cm 0pt 36pt;" class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;&lt;/span&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="MARGIN:0cm 0cm 0pt 36pt;TEXT-INDENT:-18pt;mso-list:l1 level1 lfo1;" class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="mso-bidi-font-family:Calibri;mso-bidi-theme-font:minor-latin;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;22.&lt;/span&gt;&lt;span style="FONT:7pt &amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;Enter the virtual folder name below&lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN:0cm 0cm 0pt 36pt;" class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="mso-fareast-language:EN-GB;mso-no-proof:yes;"&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;&lt;img src="http://i272.photobucket.com/albums/jj162/K2Underground/ArnoAspSecProvIMG/022.jpg" alt="" /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN:0cm 0cm 0pt 36pt;TEXT-INDENT:-18pt;mso-list:l1 level1 lfo1;" class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="mso-bidi-font-family:Calibri;mso-bidi-theme-font:minor-latin;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="MARGIN:0cm 0cm 0pt 36pt;TEXT-INDENT:-18pt;mso-list:l1 level1 lfo1;" class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="mso-bidi-font-family:Calibri;mso-bidi-theme-font:minor-latin;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="MARGIN:0cm 0cm 0pt 36pt;TEXT-INDENT:-18pt;mso-list:l1 level1 lfo1;" class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="mso-bidi-font-family:Calibri;mso-bidi-theme-font:minor-latin;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;23.&lt;/span&gt;&lt;span style="FONT:7pt &amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;Set the path&lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN:0cm 0cm 0pt 36pt;" class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="mso-fareast-language:EN-GB;mso-no-proof:yes;"&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;&lt;img src="http://i272.photobucket.com/albums/jj162/K2Underground/ArnoAspSecProvIMG/023.jpg" alt="" /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN:0cm 0cm 0pt 36pt;" class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN:0cm 0cm 0pt 36pt;TEXT-INDENT:-18pt;mso-list:l1 level1 lfo1;" class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="mso-bidi-font-family:Calibri;mso-bidi-theme-font:minor-latin;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="MARGIN:0cm 0cm 0pt 36pt;TEXT-INDENT:-18pt;mso-list:l1 level1 lfo1;" class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="mso-bidi-font-family:Calibri;mso-bidi-theme-font:minor-latin;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;24.&lt;/span&gt;&lt;span style="FONT:7pt &amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;Set the Properties&lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN:0cm 0cm 0pt 36pt;" class="MsoListParagraphCxSpMiddle"&gt;&lt;img src="http://i272.photobucket.com/albums/jj162/K2Underground/ArnoAspSecProvIMG/024.jpg" alt="" /&gt;&lt;/p&gt;
&lt;p style="MARGIN:0cm 0cm 0pt 36pt;" class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN:0cm 0cm 0pt 36pt;TEXT-INDENT:-18pt;mso-list:l1 level1 lfo1;" class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="mso-bidi-font-family:Calibri;mso-bidi-theme-font:minor-latin;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="MARGIN:0cm 0cm 0pt 36pt;TEXT-INDENT:-18pt;mso-list:l1 level1 lfo1;" class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="mso-bidi-font-family:Calibri;mso-bidi-theme-font:minor-latin;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;25.&lt;/span&gt;&lt;span style="FONT:7pt &amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;Enable Integrated Authentication Only&lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN:0cm 0cm 0pt 36pt;" class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="mso-fareast-language:EN-GB;mso-no-proof:yes;"&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;&lt;img src="http://i272.photobucket.com/albums/jj162/K2Underground/ArnoAspSecProvIMG/025.jpg" alt="" /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN:0cm 0cm 0pt 36pt;" class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN:0cm 0cm 0pt 36pt;TEXT-INDENT:-18pt;mso-list:l1 level1 lfo1;" class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="mso-bidi-font-family:Calibri;mso-bidi-theme-font:minor-latin;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="MARGIN:0cm 0cm 0pt 36pt;TEXT-INDENT:-18pt;mso-list:l1 level1 lfo1;" class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="mso-bidi-font-family:Calibri;mso-bidi-theme-font:minor-latin;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;26.&lt;/span&gt;&lt;span style="FONT:7pt &amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;Set the default content page to &amp;lsquo;Home.aspx&amp;rsquo;&lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN:0cm 0cm 0pt 36pt;" class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="mso-fareast-language:EN-GB;mso-no-proof:yes;"&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;&lt;img src="http://i272.photobucket.com/albums/jj162/K2Underground/ArnoAspSecProvIMG/026.jpg" alt="" /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN:0cm 0cm 0pt 36pt;" class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN:0cm 0cm 0pt 36pt;" class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;&lt;/span&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="MARGIN:0cm 0cm 0pt 36pt;TEXT-INDENT:-18pt;mso-list:l1 level1 lfo1;" class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="mso-bidi-font-family:Calibri;mso-bidi-theme-font:minor-latin;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;27.&lt;/span&gt;&lt;span style="FONT:7pt &amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;Let&amp;rsquo;s create a blank Visual Studio Solution and add out Web Projects to it.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;We will also add an example K2 Security Provider project and a K2 Workflow Process to the solution&lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN:0cm 0cm 0pt 36pt;" class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="mso-fareast-language:EN-GB;mso-no-proof:yes;"&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;&lt;img src="http://i272.photobucket.com/albums/jj162/K2Underground/ArnoAspSecProvIMG/027.jpg" alt="" /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN:0cm 0cm 0pt 36pt;" class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN:0cm 0cm 0pt 36pt;TEXT-INDENT:-18pt;mso-list:l1 level1 lfo1;" class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="mso-bidi-font-family:Calibri;mso-bidi-theme-font:minor-latin;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="MARGIN:0cm 0cm 0pt 36pt;TEXT-INDENT:-18pt;mso-list:l1 level1 lfo1;" class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="mso-bidi-font-family:Calibri;mso-bidi-theme-font:minor-latin;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;28.&lt;/span&gt;&lt;span style="FONT:7pt &amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;Let&amp;rsquo;s add the 2 Web Applications 1&lt;sup&gt;st&lt;/sup&gt;.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;Add an existing website&lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN:0cm 0cm 0pt 36pt;" class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="mso-fareast-language:EN-GB;mso-no-proof:yes;"&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;&lt;img src="http://i272.photobucket.com/albums/jj162/K2Underground/ArnoAspSecProvIMG/028.jpg" alt="" /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN:0cm 0cm 0pt 36pt;" class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN:0cm 0cm 0pt 36pt;TEXT-INDENT:-18pt;mso-list:l1 level1 lfo1;" class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="mso-bidi-font-family:Calibri;mso-bidi-theme-font:minor-latin;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="MARGIN:0cm 0cm 0pt 36pt;TEXT-INDENT:-18pt;mso-list:l1 level1 lfo1;" class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="mso-bidi-font-family:Calibri;mso-bidi-theme-font:minor-latin;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;29.&lt;/span&gt;&lt;span style="FONT:7pt &amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;Browse and add the &amp;lsquo;Local IIS&amp;rsquo; &amp;lsquo;ASPSecWeb&amp;rsquo; Application&lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN:0cm 0cm 0pt 36pt;" class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="mso-fareast-language:EN-GB;mso-no-proof:yes;"&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;&lt;img src="http://i272.photobucket.com/albums/jj162/K2Underground/ArnoAspSecProvIMG/029.jpg" alt="" /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN:0cm 0cm 0pt 36pt;" class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN:0cm 0cm 0pt 36pt;TEXT-INDENT:-18pt;mso-list:l1 level1 lfo1;" class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="mso-bidi-font-family:Calibri;mso-bidi-theme-font:minor-latin;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="MARGIN:0cm 0cm 0pt 36pt;TEXT-INDENT:-18pt;mso-list:l1 level1 lfo1;" class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="mso-bidi-font-family:Calibri;mso-bidi-theme-font:minor-latin;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;30.&lt;/span&gt;&lt;span style="FONT:7pt &amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;Repeat the steps for the &amp;lsquo;ASPSecMan&amp;rsquo; Web Application&lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN:0cm 0cm 0pt 36pt;" class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="mso-fareast-language:EN-GB;mso-no-proof:yes;"&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;&lt;img src="http://i272.photobucket.com/albums/jj162/K2Underground/ArnoAspSecProvIMG/030.jpg" alt="" /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN:0cm 0cm 0pt 36pt;" class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN:0cm 0cm 0pt 36pt;" class="MsoListParagraphCxSpMiddle"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="MARGIN:0cm 0cm 0pt 36pt;TEXT-INDENT:-18pt;mso-list:l1 level1 lfo1;" class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="mso-bidi-font-family:Calibri;mso-bidi-theme-font:minor-latin;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;31.&lt;/span&gt;&lt;span style="FONT:7pt &amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;Now, let&amp;rsquo;s copy the Security Provider project to our solution folder&lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN:0cm 0cm 0pt 36pt;" class="MsoListParagraphCxSpMiddle"&gt;&lt;img src="http://i272.photobucket.com/albums/jj162/K2Underground/ArnoAspSecProvIMG/031.jpg" alt="" /&gt;&lt;/p&gt;
&lt;p style="MARGIN:0cm 0cm 0pt 36pt;" class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN:0cm 0cm 0pt 36pt;" class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="mso-fareast-language:EN-GB;mso-no-proof:yes;"&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;&lt;img src="http://i272.photobucket.com/albums/jj162/K2Underground/ArnoAspSecProvIMG/031b.jpg" alt="" /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN:0cm 0cm 0pt 36pt;" class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN:0cm 0cm 0pt 36pt;TEXT-INDENT:-18pt;mso-list:l1 level1 lfo1;" class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="mso-bidi-font-family:Calibri;mso-bidi-theme-font:minor-latin;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="MARGIN:0cm 0cm 0pt 36pt;TEXT-INDENT:-18pt;mso-list:l1 level1 lfo1;" class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="mso-bidi-font-family:Calibri;mso-bidi-theme-font:minor-latin;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;32.&lt;/span&gt;&lt;span style="FONT:7pt &amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;Do the same foe the Test K2 Process. Copy the code from the source folder&lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN:0cm 0cm 10pt 18pt;" class="MsoNormal"&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;&lt;img src="http://i272.photobucket.com/albums/jj162/K2Underground/ArnoAspSecProvIMG/032.jpg" alt="" /&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN:0cm 0cm 0pt 36pt;TEXT-INDENT:-18pt;mso-list:l1 level1 lfo1;" class="MsoListParagraphCxSpFirst"&gt;&lt;span style="mso-bidi-font-family:Calibri;mso-bidi-theme-font:minor-latin;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="MARGIN:0cm 0cm 0pt 36pt;TEXT-INDENT:-18pt;mso-list:l1 level1 lfo1;" class="MsoListParagraphCxSpFirst"&gt;&lt;span style="mso-bidi-font-family:Calibri;mso-bidi-theme-font:minor-latin;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;33.&lt;/span&gt;&lt;span style="FONT:7pt &amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;Create the destination folder and paste the contents into it&lt;/span&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN:0cm 0cm 0pt 36pt;" class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="mso-fareast-language:EN-GB;mso-no-proof:yes;"&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;&lt;img src="http://i272.photobucket.com/albums/jj162/K2Underground/ArnoAspSecProvIMG/033.jpg" alt="" /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN:0cm 0cm 0pt 36pt;" class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN:0cm 0cm 0pt 36pt;" class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN:0cm 0cm 0pt 36pt;" class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;&lt;/span&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="MARGIN:0cm 0cm 0pt 36pt;TEXT-INDENT:-18pt;mso-list:l1 level1 lfo1;" class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="mso-bidi-font-family:Calibri;mso-bidi-theme-font:minor-latin;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;34.&lt;/span&gt;&lt;span style="FONT:7pt &amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;We are ready to add the Security Provider and the K2 Process to our solution.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;Add the Security Provider 1&lt;sup&gt;st&lt;/sup&gt; by adding an existing project and browsing to the solution folder where we pasted the files&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;earlier&lt;/span&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN:0cm 0cm 0pt 36pt;" class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;&lt;img src="http://i272.photobucket.com/albums/jj162/K2Underground/ArnoAspSecProvIMG/034.jpg" alt="" /&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN:0cm 0cm 0pt 36pt;TEXT-INDENT:-18pt;mso-list:l1 level1 lfo1;" class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="mso-bidi-font-family:Calibri;mso-bidi-theme-font:minor-latin;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="MARGIN:0cm 0cm 0pt 36pt;TEXT-INDENT:-18pt;mso-list:l1 level1 lfo1;" class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="mso-bidi-font-family:Calibri;mso-bidi-theme-font:minor-latin;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="MARGIN:0cm 0cm 0pt 36pt;TEXT-INDENT:-18pt;mso-list:l1 level1 lfo1;" class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="mso-bidi-font-family:Calibri;mso-bidi-theme-font:minor-latin;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;35.&lt;/span&gt;&lt;span style="FONT:7pt &amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;...and the same for the K2 Process&lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN:0cm 0cm 0pt 36pt;" class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="mso-fareast-language:EN-GB;mso-no-proof:yes;"&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;&lt;img src="http://i272.photobucket.com/albums/jj162/K2Underground/ArnoAspSecProvIMG/035.jpg" alt="" /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN:0cm 0cm 0pt 36pt;" class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN:0cm 0cm 0pt 36pt;TEXT-INDENT:-18pt;mso-list:l1 level1 lfo1;" class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="mso-bidi-font-family:Calibri;mso-bidi-theme-font:minor-latin;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="MARGIN:0cm 0cm 0pt 36pt;TEXT-INDENT:-18pt;mso-list:l1 level1 lfo1;" class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="mso-bidi-font-family:Calibri;mso-bidi-theme-font:minor-latin;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;36.&lt;/span&gt;&lt;span style="FONT:7pt &amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Calibri;"&gt;Open &amp;lsquo;Home.aspx&amp;rsquo; in the security manager and note the URL.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;If you create your own Web Application, ensure the settings are reflected in the querystring.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;This example manager is the one that ships with .NET and are used for demonstration purposes only.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN:0cm 0cm 0pt 36pt;" class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="mso-fareast-language:EN-GB;mso-no-proof:yes;"&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;&lt;img src="http://i272.photobucket.com/albums/jj162/K2Underground/ArnoAspSecProvIMG/036.jpg" alt="" /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN:0cm 0cm 0pt 36pt;" class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN:0cm 0cm 0pt 36pt;TEXT-INDENT:-18pt;mso-list:l1 level1 lfo1;" class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="mso-bidi-font-family:Calibri;mso-bidi-theme-font:minor-latin;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="MARGIN:0cm 0cm 0pt 36pt;TEXT-INDENT:-18pt;mso-list:l1 level1 lfo1;" class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="mso-bidi-font-family:Calibri;mso-bidi-theme-font:minor-latin;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;37.&lt;/span&gt;&lt;span style="FONT:7pt &amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Calibri;"&gt;Open the Web.Config of the&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;&amp;lsquo;ASPSecWeb&amp;rsquo;.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;Note we configured the connectionstring node to include our SQL Login Details.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN:0cm 0cm 0pt 36pt;" class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="mso-fareast-language:EN-GB;mso-no-proof:yes;"&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;&lt;img src="http://i272.photobucket.com/albums/jj162/K2Underground/ArnoAspSecProvIMG/037.jpg" alt="" /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN:0cm 0cm 0pt 36pt;" class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN:0cm 0cm 0pt 36pt;TEXT-INDENT:-18pt;mso-list:l1 level1 lfo1;" class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="mso-bidi-font-family:Calibri;mso-bidi-theme-font:minor-latin;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="MARGIN:0cm 0cm 0pt 36pt;TEXT-INDENT:-18pt;mso-list:l1 level1 lfo1;" class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="mso-bidi-font-family:Calibri;mso-bidi-theme-font:minor-latin;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;38.&lt;/span&gt;&lt;span style="FONT:7pt &amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;Let&amp;rsquo;s compile the Security provider now.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;Ensure you sign the Assembly.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;Save and compile the project&lt;/span&gt;&amp;nbsp;&lt;img src="http://i272.photobucket.com/albums/jj162/K2Underground/ArnoAspSecProvIMG/037b.jpg" alt="" /&gt;&lt;/p&gt;
&lt;p style="MARGIN:0cm 0cm 0pt 36pt;" class="MsoListParagraphCxSpMiddle"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="MARGIN:0cm 0cm 0pt 36pt;" class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="mso-fareast-language:EN-GB;mso-no-proof:yes;"&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;&lt;img src="http://i272.photobucket.com/albums/jj162/K2Underground/ArnoAspSecProvIMG/038.jpg" alt="" /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN:0cm 0cm 0pt 36pt;" class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN:0cm 0cm 0pt 36pt;" class="MsoListParagraphCxSpMiddle"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="MARGIN:0cm 0cm 0pt 36pt;TEXT-INDENT:-18pt;mso-list:l1 level1 lfo1;" class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="mso-bidi-font-family:Calibri;mso-bidi-theme-font:minor-latin;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;39.&lt;/span&gt;&lt;span style="FONT:7pt &amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;We need the Public Key token of the Compiled Security Assembly.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;Launch the VS Command Prompt and execute the &amp;lsquo;sn &amp;ndash;T&amp;rsquo; command to extract the value&lt;/span&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN:0cm 0cm 0pt 36pt;" class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="mso-fareast-language:EN-GB;mso-no-proof:yes;"&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;&lt;img src="http://i272.photobucket.com/albums/jj162/K2Underground/ArnoAspSecProvIMG/038b.jpg" alt="" /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN:0cm 0cm 0pt 36pt;" class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="mso-fareast-language:EN-GB;mso-no-proof:yes;"&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;&lt;/span&gt;&lt;/span&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="MARGIN:0cm 0cm 0pt 36pt;" class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="mso-fareast-language:EN-GB;mso-no-proof:yes;"&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;&lt;img src="http://i272.photobucket.com/albums/jj162/K2Underground/ArnoAspSecProvIMG/039b.jpg" alt="" /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN:0cm 0cm 0pt 36pt;" class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN:0cm 0cm 0pt 36pt;" class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN:0cm 0cm 0pt 36pt;TEXT-INDENT:-18pt;mso-list:l1 level1 lfo1;" class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="mso-bidi-font-family:Calibri;mso-bidi-theme-font:minor-latin;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;40.&lt;/span&gt;&lt;span style="FONT:7pt &amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;Copy the &amp;lsquo;ArnIT.ASPNetSecurity.Library&amp;rsquo; Assembly to the &amp;lsquo;securityproviders&amp;rsquo; folder in the K2 Program files&lt;/span&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN:0cm 0cm 0pt 36pt;" class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="mso-fareast-language:EN-GB;mso-no-proof:yes;"&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;&lt;img src="http://i272.photobucket.com/albums/jj162/K2Underground/ArnoAspSecProvIMG/040.jpg" alt="" /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN:0cm 0cm 0pt 36pt;" class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN:0cm 0cm 0pt 36pt;" class="MsoListParagraphCxSpMiddle"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="MARGIN:0cm 0cm 10pt 36pt;TEXT-INDENT:-18pt;mso-list:l1 level1 lfo1;" class="MsoListParagraphCxSpLast"&gt;&lt;span style="mso-bidi-font-family:Calibri;mso-bidi-theme-font:minor-latin;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;41.&lt;/span&gt;&lt;span style="FONT:7pt &amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;With K2 Host Server still stopped, execute the following SQL Command against the HostServer database.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;Ensure your public key token is used in the script&amp;rsquo;s&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;3&lt;sup&gt;rd&lt;/sup&gt; parameter&lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN:0cm 0cm 10pt;" class="MsoNormal"&gt;&lt;span style="mso-fareast-language:EN-GB;mso-no-proof:yes;"&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;&lt;img src="http://i272.photobucket.com/albums/jj162/K2Underground/ArnoAspSecProvIMG/041.jpg" alt="" /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN:0cm 0cm 0pt 36pt;TEXT-INDENT:-18pt;mso-list:l1 level1 lfo1;" class="MsoListParagraphCxSpFirst"&gt;&lt;span style="mso-bidi-font-family:Calibri;mso-bidi-theme-font:minor-latin;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="MARGIN:0cm 0cm 0pt 36pt;TEXT-INDENT:-18pt;mso-list:l1 level1 lfo1;" class="MsoListParagraphCxSpFirst"&gt;&lt;span style="mso-bidi-font-family:Calibri;mso-bidi-theme-font:minor-latin;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;42.&lt;/span&gt;&lt;span style="FONT:7pt &amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;Open the K2HostServer.config file and set the &amp;lsquo;useassemblyregistration&amp;rsquo;s value attribute to &amp;lsquo;true&amp;rsquo;&lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN:0cm 0cm 0pt 36pt;" class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="mso-fareast-language:EN-GB;mso-no-proof:yes;"&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN:0cm 0cm 0pt 36pt;" class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;&lt;img src="http://i272.photobucket.com/albums/jj162/K2Underground/ArnoAspSecProvIMG/041b.jpg" alt="" /&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN:0cm 0cm 0pt 36pt;TEXT-INDENT:-18pt;mso-list:l1 level1 lfo1;" class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="mso-bidi-font-family:Calibri;mso-bidi-theme-font:minor-latin;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="MARGIN:0cm 0cm 0pt 36pt;TEXT-INDENT:-18pt;mso-list:l1 level1 lfo1;" class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="mso-bidi-font-family:Calibri;mso-bidi-theme-font:minor-latin;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="MARGIN:0cm 0cm 0pt 36pt;TEXT-INDENT:-18pt;mso-list:l1 level1 lfo1;" class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="mso-bidi-font-family:Calibri;mso-bidi-theme-font:minor-latin;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;43.&lt;/span&gt;&lt;span style="FONT:7pt &amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;Start K2 Host Server.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;Host Server will register the new provider assembly and insert an entry into the &amp;lsquo;HostServer.SecurityProviders&amp;rsquo; table automatically&lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN:0cm 0cm 0pt 36pt;" class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="mso-fareast-language:EN-GB;mso-no-proof:yes;"&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;&lt;img src="http://i272.photobucket.com/albums/jj162/K2Underground/ArnoAspSecProvIMG/042.jpg" alt="" /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN:0cm 0cm 0pt 36pt;" class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN:0cm 0cm 10pt 36pt;TEXT-INDENT:-18pt;mso-list:l1 level1 lfo1;" class="MsoListParagraphCxSpLast"&gt;&lt;span style="mso-bidi-font-family:Calibri;mso-bidi-theme-font:minor-latin;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="MARGIN:0cm 0cm 10pt 36pt;TEXT-INDENT:-18pt;mso-list:l1 level1 lfo1;" class="MsoListParagraphCxSpLast"&gt;&lt;span style="mso-bidi-font-family:Calibri;mso-bidi-theme-font:minor-latin;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;44.&lt;/span&gt;&lt;span style="FONT:7pt &amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;Wait a few moments and execute the following SQL Statement against the HostServer database.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;This script is available from &amp;lsquo;regSQL.txt&amp;rsquo; in the accompanied download zip file.&lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN:0cm 0cm 10pt;" class="MsoNormal"&gt;&lt;img src="http://i272.photobucket.com/albums/jj162/K2Underground/ArnoAspSecProvIMG/043.jpg" alt="" /&gt;&lt;/p&gt;
&lt;p style="MARGIN:0cm 0cm 0pt 36pt;TEXT-INDENT:-18pt;mso-list:l1 level1 lfo1;" class="MsoListParagraphCxSpFirst"&gt;&lt;span style="mso-bidi-font-family:Calibri;mso-bidi-theme-font:minor-latin;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="MARGIN:0cm 0cm 0pt 36pt;TEXT-INDENT:-18pt;mso-list:l1 level1 lfo1;" class="MsoListParagraphCxSpFirst"&gt;&lt;span style="mso-bidi-font-family:Calibri;mso-bidi-theme-font:minor-latin;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="MARGIN:0cm 0cm 0pt 36pt;TEXT-INDENT:-18pt;mso-list:l1 level1 lfo1;" class="MsoListParagraphCxSpFirst"&gt;&lt;span style="mso-bidi-font-family:Calibri;mso-bidi-theme-font:minor-latin;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;45.&lt;/span&gt;&lt;span style="FONT:7pt &amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Calibri;"&gt;STOP K2 host server and open the K2HostServer.config file again.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN:0cm 0cm 0pt 36pt;" class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="mso-fareast-language:EN-GB;mso-no-proof:yes;"&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;&lt;img src="http://i272.photobucket.com/albums/jj162/K2Underground/ArnoAspSecProvIMG/045.jpg" alt="" /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN:0cm 0cm 0pt 36pt;" class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN:0cm 0cm 0pt 36pt;" class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;&lt;/span&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="MARGIN:0cm 0cm 0pt 36pt;TEXT-INDENT:-18pt;mso-list:l1 level1 lfo1;" class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="mso-bidi-font-family:Calibri;mso-bidi-theme-font:minor-latin;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;46.&lt;/span&gt;&lt;span style="FONT:7pt &amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;Delete the encrypted connectionStrings section after you have learned the replacement values&lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN:0cm 0cm 0pt 36pt;" class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN:0cm 0cm 0pt 36pt;" class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="mso-fareast-language:EN-GB;mso-no-proof:yes;"&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;&lt;img src="http://i272.photobucket.com/albums/jj162/K2Underground/ArnoAspSecProvIMG/046.jpg" alt="" /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN:0cm 0cm 0pt 36pt;" class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN:0cm 0cm 0pt 36pt;" class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;&lt;/span&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="MARGIN:0cm 0cm 0pt 36pt;TEXT-INDENT:-18pt;mso-list:l1 level1 lfo1;" class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="mso-bidi-font-family:Calibri;mso-bidi-theme-font:minor-latin;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;47.&lt;/span&gt;&lt;span style="FONT:7pt &amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;Enter the replacement values&lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN:0cm 0cm 0pt 36pt;" class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="mso-fareast-language:EN-GB;mso-no-proof:yes;"&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;&lt;img src="http://i272.photobucket.com/albums/jj162/K2Underground/ArnoAspSecProvIMG/047.jpg" alt="" /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN:0cm 0cm 0pt 36pt;" class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN:0cm 0cm 0pt 36pt;TEXT-INDENT:-18pt;mso-list:l1 level1 lfo1;" class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="mso-bidi-font-family:Calibri;mso-bidi-theme-font:minor-latin;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="MARGIN:0cm 0cm 0pt 36pt;TEXT-INDENT:-18pt;mso-list:l1 level1 lfo1;" class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="mso-bidi-font-family:Calibri;mso-bidi-theme-font:minor-latin;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;48.&lt;/span&gt;&lt;span style="FONT:7pt &amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;Enter the following Membership Specific section in the config file (you can copy this section from the &amp;lsquo;ASPSecWeb&amp;rsquo;s&amp;rsquo; web.config file).&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;Remember to save the config file only if you are happy that you have a backup and that the contents are correct!&lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN:0cm 0cm 0pt 36pt;" class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN:0cm 0cm 0pt 36pt;" class="MsoListParagraphCxSpMiddle"&gt;&lt;img src="http://i272.photobucket.com/albums/jj162/K2Underground/ArnoAspSecProvIMG/048.jpg" alt="" /&gt;&lt;/p&gt;
&lt;p style="MARGIN:0cm 0cm 0pt 36pt;" class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN:0cm 0cm 10pt 36pt;TEXT-INDENT:-18pt;mso-list:l1 level1 lfo1;" class="MsoListParagraphCxSpLast"&gt;&lt;span style="mso-bidi-font-family:Calibri;mso-bidi-theme-font:minor-latin;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="MARGIN:0cm 0cm 10pt 36pt;TEXT-INDENT:-18pt;mso-list:l1 level1 lfo1;" class="MsoListParagraphCxSpLast"&gt;&lt;span style="mso-bidi-font-family:Calibri;mso-bidi-theme-font:minor-latin;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;49.&lt;/span&gt;&lt;span style="FONT:7pt &amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;So far so good.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;The registration is complete and you can start K2 HostServer again.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;If you start it in Console mode, you should see the provider registration information text during startup&lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN:0cm 0cm 10pt;" class="MsoNormal"&gt;&lt;span style="mso-fareast-language:EN-GB;mso-no-proof:yes;"&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;&lt;img src="http://i272.photobucket.com/albums/jj162/K2Underground/ArnoAspSecProvIMG/049.jpg" alt="" /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN:0cm 0cm 10pt;" class="MsoNormal"&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN:0cm 0cm 10pt;" class="MsoNormal"&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;Let&amp;rsquo;s test our work.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;We will firstly create a new user using our Membership Administration Web Application.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;We will then configure the K2 destination rule in our test K2 process to point to that user and we will test the lot using the &amp;lsquo;ASPSecWeb&amp;rsquo; application by logging in using our user and starting a new process and auctioning a worklist item&lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN:0cm 0cm 0pt 36pt;TEXT-INDENT:-18pt;mso-list:l1 level1 lfo1;" class="MsoListParagraphCxSpFirst"&gt;&lt;span style="mso-bidi-font-family:Calibri;mso-bidi-theme-font:minor-latin;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;50.&lt;/span&gt;&lt;span style="FONT:7pt &amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;Launch the Membership Administration Application&lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN:0cm 0cm 0pt 36pt;" class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN:0cm 0cm 0pt 36pt;" class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;&lt;img src="http://i272.photobucket.com/albums/jj162/K2Underground/ArnoAspSecProvIMG/050.jpg" alt="" /&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN:0cm 0cm 0pt 36pt;TEXT-INDENT:-18pt;mso-list:l1 level1 lfo1;" class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="mso-bidi-font-family:Calibri;mso-bidi-theme-font:minor-latin;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="MARGIN:0cm 0cm 0pt 36pt;TEXT-INDENT:-18pt;mso-list:l1 level1 lfo1;" class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="mso-bidi-font-family:Calibri;mso-bidi-theme-font:minor-latin;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;51.&lt;/span&gt;&lt;span style="FONT:7pt &amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;Click on &amp;lsquo;Create User&amp;rsquo;&lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN:0cm 0cm 0pt 36pt;" class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN:0cm 0cm 0pt 36pt;" class="MsoListParagraphCxSpMiddle"&gt;&lt;img src="http://i272.photobucket.com/albums/jj162/K2Underground/ArnoAspSecProvIMG/051.jpg" alt="" /&gt;&lt;/p&gt;
&lt;p style="MARGIN:0cm 0cm 0pt 36pt;" class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN:0cm 0cm 0pt 36pt;TEXT-INDENT:-18pt;mso-list:l1 level1 lfo1;" class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="mso-bidi-font-family:Calibri;mso-bidi-theme-font:minor-latin;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="MARGIN:0cm 0cm 0pt 36pt;TEXT-INDENT:-18pt;mso-list:l1 level1 lfo1;" class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="mso-bidi-font-family:Calibri;mso-bidi-theme-font:minor-latin;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;52.&lt;/span&gt;&lt;span style="FONT:7pt &amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;Enter the user details and click &amp;lsquo;Create User&amp;rsquo;&lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN:0cm 0cm 0pt 36pt;" class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="mso-fareast-language:EN-GB;mso-no-proof:yes;"&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;&lt;img src="http://i272.photobucket.com/albums/jj162/K2Underground/ArnoAspSecProvIMG/052.jpg" alt="" /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN:0cm 0cm 0pt 36pt;" class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN:0cm 0cm 0pt 36pt;" class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN:0cm 0cm 0pt 36pt;TEXT-INDENT:-18pt;mso-list:l1 level1 lfo1;" class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="mso-bidi-font-family:Calibri;mso-bidi-theme-font:minor-latin;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="MARGIN:0cm 0cm 0pt 36pt;TEXT-INDENT:-18pt;mso-list:l1 level1 lfo1;" class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="mso-bidi-font-family:Calibri;mso-bidi-theme-font:minor-latin;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;53.&lt;/span&gt;&lt;span style="FONT:7pt &amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;Create an example role.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;Although we won&amp;rsquo;t use this, its good to demonstrate you can use the roles as well&lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN:0cm 0cm 0pt 36pt;" class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN:0cm 0cm 0pt 36pt;" class="MsoListParagraphCxSpMiddle"&gt;&lt;img src="http://i272.photobucket.com/albums/jj162/K2Underground/ArnoAspSecProvIMG/053.jpg" alt="" /&gt;&lt;/p&gt;
&lt;p style="MARGIN:0cm 0cm 0pt 36pt;" class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN:0cm 0cm 0pt 36pt;" class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN:0cm 0cm 0pt 36pt;TEXT-INDENT:-18pt;mso-list:l1 level1 lfo1;" class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="mso-bidi-font-family:Calibri;mso-bidi-theme-font:minor-latin;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;54.&lt;/span&gt;&lt;span style="FONT:7pt &amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;Add our newly created user to the created role&lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN:0cm 0cm 0pt 36pt;" class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="mso-fareast-language:EN-GB;mso-no-proof:yes;"&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;&lt;img src="http://i272.photobucket.com/albums/jj162/K2Underground/ArnoAspSecProvIMG/054.jpg" alt="" /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN:0cm 0cm 0pt 36pt;" class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN:0cm 0cm 0pt 36pt;TEXT-INDENT:-18pt;mso-list:l1 level1 lfo1;" class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="mso-bidi-font-family:Calibri;mso-bidi-theme-font:minor-latin;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="MARGIN:0cm 0cm 0pt 36pt;TEXT-INDENT:-18pt;mso-list:l1 level1 lfo1;" class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="mso-bidi-font-family:Calibri;mso-bidi-theme-font:minor-latin;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;55.&lt;/span&gt;&lt;span style="FONT:7pt &amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;Open the destination rule of the &amp;lsquo;CustomerResponse&amp;rsquo; K2 process&lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN:0cm 0cm 0pt 36pt;" class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="mso-fareast-language:EN-GB;mso-no-proof:yes;"&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;&lt;img src="http://i272.photobucket.com/albums/jj162/K2Underground/ArnoAspSecProvIMG/055.jpg" alt="" /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN:0cm 0cm 0pt 36pt;" class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN:0cm 0cm 0pt 36pt;" class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;&lt;/span&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="MARGIN:0cm 0cm 0pt 36pt;TEXT-INDENT:-18pt;mso-list:l1 level1 lfo1;" class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="mso-bidi-font-family:Calibri;mso-bidi-theme-font:minor-latin;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;56.&lt;/span&gt;&lt;span style="FONT:7pt &amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;Remove all the existing users&lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN:0cm 0cm 0pt 36pt;" class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="mso-fareast-language:EN-GB;mso-no-proof:yes;"&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;&lt;img src="http://i272.photobucket.com/albums/jj162/K2Underground/ArnoAspSecProvIMG/056.jpg" alt="" /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN:0cm 0cm 0pt 36pt;" class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN:0cm 0cm 10pt 36pt;TEXT-INDENT:-18pt;mso-list:l1 level1 lfo1;" class="MsoListParagraphCxSpLast"&gt;&lt;span style="mso-bidi-font-family:Calibri;mso-bidi-theme-font:minor-latin;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="MARGIN:0cm 0cm 10pt 36pt;TEXT-INDENT:-18pt;mso-list:l1 level1 lfo1;" class="MsoListParagraphCxSpLast"&gt;&lt;span style="mso-bidi-font-family:Calibri;mso-bidi-theme-font:minor-latin;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;57.&lt;/span&gt;&lt;span style="FONT:7pt &amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;Add a new user.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;Note our users and groups are available in the Context Browser.&lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN:0cm 0cm 10pt;" class="MsoNormal"&gt;&lt;span style="mso-fareast-language:EN-GB;mso-no-proof:yes;"&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;&lt;img src="http://i272.photobucket.com/albums/jj162/K2Underground/ArnoAspSecProvIMG/057.jpg" alt="" /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN:0cm 0cm 10pt;" class="MsoNormal"&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN:0cm 0cm 0pt 36pt;TEXT-INDENT:-18pt;mso-list:l1 level1 lfo1;" class="MsoListParagraphCxSpFirst"&gt;&lt;span style="mso-bidi-font-family:Calibri;mso-bidi-theme-font:minor-latin;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;58.&lt;/span&gt;&lt;span style="FONT:7pt &amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;Add the user as indicated&lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN:0cm 0cm 0pt 36pt;" class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN:0cm 0cm 0pt 36pt;" class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="mso-fareast-language:EN-GB;mso-no-proof:yes;"&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;&lt;img src="http://i272.photobucket.com/albums/jj162/K2Underground/ArnoAspSecProvIMG/058.jpg" alt="" /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN:0cm 0cm 0pt 36pt;" class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN:0cm 0cm 0pt 36pt;TEXT-INDENT:-18pt;mso-list:l1 level1 lfo1;" class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="mso-bidi-font-family:Calibri;mso-bidi-theme-font:minor-latin;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="MARGIN:0cm 0cm 0pt 36pt;TEXT-INDENT:-18pt;mso-list:l1 level1 lfo1;" class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="mso-bidi-font-family:Calibri;mso-bidi-theme-font:minor-latin;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;59.&lt;/span&gt;&lt;span style="FONT:7pt &amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;Deploy the project&lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN:0cm 0cm 0pt 36pt;" class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="mso-fareast-language:EN-GB;mso-no-proof:yes;"&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;&lt;img src="http://i272.photobucket.com/albums/jj162/K2Underground/ArnoAspSecProvIMG/059.jpg" alt="" /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN:0cm 0cm 0pt 36pt;" class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN:0cm 0cm 0pt 36pt;TEXT-INDENT:-18pt;mso-list:l1 level1 lfo1;" class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="mso-bidi-font-family:Calibri;mso-bidi-theme-font:minor-latin;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="MARGIN:0cm 0cm 0pt 36pt;TEXT-INDENT:-18pt;mso-list:l1 level1 lfo1;" class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="mso-bidi-font-family:Calibri;mso-bidi-theme-font:minor-latin;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;60.&lt;/span&gt;&lt;span style="FONT:7pt &amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;Assign &amp;lsquo;Start Permissions&amp;rsquo; to our user&lt;/span&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN:0cm 0cm 0pt 36pt;" class="MsoListParagraphCxSpMiddle"&gt;&lt;img src="http://i272.photobucket.com/albums/jj162/K2Underground/ArnoAspSecProvIMG/060.jpg" alt="" /&gt;&lt;/p&gt;
&lt;p style="MARGIN:0cm 0cm 0pt 36pt;" class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN:0cm 0cm 0pt 36pt;" class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;&lt;/span&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="MARGIN:0cm 0cm 0pt 36pt;TEXT-INDENT:-18pt;mso-list:l1 level1 lfo1;" class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="mso-bidi-font-family:Calibri;mso-bidi-theme-font:minor-latin;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;61.&lt;/span&gt;&lt;span style="FONT:7pt &amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;Finally, lets play with our implementation.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;Browse the &amp;lsquo;Default.aspx&amp;rsquo; file in the &amp;lsquo;ASPSecWeb&amp;rsquo; web application&lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN:0cm 0cm 0pt 36pt;" class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="mso-fareast-language:EN-GB;mso-no-proof:yes;"&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;&lt;img src="http://i272.photobucket.com/albums/jj162/K2Underground/ArnoAspSecProvIMG/061.jpg" alt="" /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN:0cm 0cm 0pt 36pt;" class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="mso-fareast-language:EN-GB;mso-no-proof:yes;"&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;&lt;/span&gt;&lt;/span&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="MARGIN:0cm 0cm 0pt 36pt;TEXT-INDENT:-18pt;mso-list:l1 level1 lfo1;" class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="mso-bidi-font-family:Calibri;mso-bidi-theme-font:minor-latin;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="MARGIN:0cm 0cm 0pt 36pt;TEXT-INDENT:-18pt;mso-list:l1 level1 lfo1;" class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="mso-bidi-font-family:Calibri;mso-bidi-theme-font:minor-latin;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;62.&lt;/span&gt;&lt;span style="FONT:7pt &amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;Enter our user&amp;rsquo;s username and password.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;Note, this is the ASP.NET login control.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;You can use the &amp;lsquo;Password Reminder&amp;rsquo;, &amp;lsquo;Registration&amp;rsquo; or any other controls in your application now.&lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN:0cm 0cm 0pt 36pt;" class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN:0cm 0cm 0pt 36pt;" class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;&lt;img src="http://i272.photobucket.com/albums/jj162/K2Underground/ArnoAspSecProvIMG/062.jpg" alt="" /&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN:0cm 0cm 0pt 36pt;TEXT-INDENT:-18pt;mso-list:l1 level1 lfo1;" class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="mso-bidi-font-family:Calibri;mso-bidi-theme-font:minor-latin;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="MARGIN:0cm 0cm 0pt 36pt;TEXT-INDENT:-18pt;mso-list:l1 level1 lfo1;" class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="mso-bidi-font-family:Calibri;mso-bidi-theme-font:minor-latin;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;63.&lt;/span&gt;&lt;span style="FONT:7pt &amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;Start a new Process by clicking on &amp;lsquo;Start Random Request&amp;rsquo;&lt;/span&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN:0cm 0cm 0pt 36pt;" class="MsoListParagraphCxSpMiddle"&gt;&lt;img src="http://i272.photobucket.com/albums/jj162/K2Underground/ArnoAspSecProvIMG/063.jpg" alt="" /&gt;&lt;/p&gt;
&lt;p style="MARGIN:0cm 0cm 0pt 36pt;" class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN:0cm 0cm 0pt 36pt;TEXT-INDENT:-18pt;mso-list:l1 level1 lfo1;" class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="mso-bidi-font-family:Calibri;mso-bidi-theme-font:minor-latin;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="MARGIN:0cm 0cm 0pt 36pt;TEXT-INDENT:-18pt;mso-list:l1 level1 lfo1;" class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="mso-bidi-font-family:Calibri;mso-bidi-theme-font:minor-latin;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;64.&lt;/span&gt;&lt;span style="FONT:7pt &amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;Click on &amp;lsquo;View Worklist&amp;rsquo; to inspect the result.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;You should have a new worklist item&lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN:0cm 0cm 0pt 36pt;" class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="mso-fareast-language:EN-GB;mso-no-proof:yes;"&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN:0cm 0cm 0pt 36pt;" class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;&lt;img src="http://i272.photobucket.com/albums/jj162/K2Underground/ArnoAspSecProvIMG/064.jpg" alt="" /&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN:0cm 0cm 0pt 36pt;" class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN:0cm 0cm 0pt 36pt;TEXT-INDENT:-18pt;mso-list:l1 level1 lfo1;" class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="mso-bidi-font-family:Calibri;mso-bidi-theme-font:minor-latin;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="MARGIN:0cm 0cm 0pt 36pt;TEXT-INDENT:-18pt;mso-list:l1 level1 lfo1;" class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="mso-bidi-font-family:Calibri;mso-bidi-theme-font:minor-latin;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;65.&lt;/span&gt;&lt;span style="FONT:7pt &amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;Browse to &amp;lsquo;Instances&amp;rsquo; in K2 Workspace and ensure the process has started.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;Note the &amp;lsquo;Originator&amp;rsquo; value &lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN:0cm 0cm 0pt 36pt;" class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN:0cm 0cm 0pt 36pt;" class="MsoListParagraphCxSpMiddle"&gt;&lt;img src="http://i272.photobucket.com/albums/jj162/K2Underground/ArnoAspSecProvIMG/065.jpg" alt="" /&gt;&lt;/p&gt;
&lt;p style="MARGIN:0cm 0cm 10pt 36pt;" class="MsoListParagraphCxSpLast"&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN:0cm 0cm 10pt;" class="MsoNormal"&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Calibri;"&gt;Go ahead and finish the Worklist item.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN:0cm 0cm 10pt;" class="MsoNormal"&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN:0cm 0cm 10pt;" class="MsoNormal"&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;A few final thoughts:&lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN:0cm 0cm 0pt 36pt;TEXT-INDENT:-18pt;mso-list:l0 level1 lfo2;" class="MsoListParagraphCxSpFirst"&gt;&lt;span style="FONT-FAMILY:Symbol;mso-bidi-font-family:Symbol;mso-fareast-font-family:Symbol;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;span style="font-size:small;"&gt;&amp;middot;&lt;/span&gt;&lt;span style="FONT:7pt &amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;You can use all the standard ASP.NET Membership controls (registration, password reminder ect.) &lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN:0cm 0cm 0pt 36pt;TEXT-INDENT:-18pt;mso-list:l0 level1 lfo2;" class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="FONT-FAMILY:Symbol;mso-bidi-font-family:Symbol;mso-fareast-font-family:Symbol;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;span style="font-size:small;"&gt;&amp;middot;&lt;/span&gt;&lt;span style="FONT:7pt &amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;The provider implementation is an example only, and you should re-visit the implementation to streamline the code&lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN:0cm 0cm 0pt 36pt;TEXT-INDENT:-18pt;mso-list:l0 level1 lfo2;" class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="FONT-FAMILY:Symbol;mso-bidi-font-family:Symbol;mso-fareast-font-family:Symbol;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;span style="font-size:small;"&gt;&amp;middot;&lt;/span&gt;&lt;span style="FONT:7pt &amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;Hosting of the Provider in K2 Host Server could be made more dynamic by taking advantage of the &amp;lsquo;AuthInit&amp;rsquo; field in the SecurityLabels table in the HostServer database&lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN:0cm 0cm 0pt 36pt;TEXT-INDENT:-18pt;mso-list:l0 level1 lfo2;" class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="FONT-FAMILY:Symbol;mso-bidi-font-family:Symbol;mso-fareast-font-family:Symbol;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;span style="font-size:small;"&gt;&amp;middot;&lt;/span&gt;&lt;span style="FONT:7pt &amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;You can create your own Membership Administration UI and use the Microsoft Membership objects in your implementations&lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN:0cm 0cm 0pt 36pt;TEXT-INDENT:-18pt;mso-list:l0 level1 lfo2;" class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="FONT-FAMILY:Symbol;mso-bidi-font-family:Symbol;mso-fareast-font-family:Symbol;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;span style="font-size:small;"&gt;&amp;middot;&lt;/span&gt;&lt;span style="FONT:7pt &amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;A good idea is to create Membership Groups (i.e. Approvers) and use this is as source for your K2 Role that is used as part of your Destination designing in K2 Designer for Visual Studio.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;This ensures dynamic destinations&lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN:0cm 0cm 10pt 36pt;TEXT-INDENT:-18pt;mso-list:l0 level1 lfo2;" class="MsoListParagraphCxSpLast"&gt;&lt;span style="FONT-FAMILY:Symbol;mso-bidi-font-family:Symbol;mso-fareast-font-family:Symbol;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;span style="font-size:small;"&gt;&amp;middot;&lt;/span&gt;&lt;span style="FONT:7pt &amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;You might want to implement a &amp;lsquo;trusted&amp;rsquo; model between your Web Application and K2, which means you don&amp;rsquo;t pass the users password to the K2 Security provider for secondary authentication.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;If you do require secondary authentication, ensure all passwords are hashed and encrypted&lt;/span&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://k2underground.com/aggbug.aspx?PostID=31548" width="1" height="1"&gt;</description></item><item><title>Asynchronous server event processing between processes (Or, IPC's without the IPC-bit in the middle)</title><link>http://k2underground.com/blogs/pitchblack/archive/2009/05/12/asynchronous-server-event-processing-between-processes-or-ipc-s-without-the-ipc-bit-in-the-middle.aspx</link><pubDate>Tue, 12 May 2009 21:36:00 GMT</pubDate><guid isPermaLink="false">1c9bda6b-c6e6-4e79-8d32-b70ad0011ef7:30758</guid><dc:creator>NeilM</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://k2underground.com/blogs/pitchblack/rsscomments.aspx?PostID=30758</wfw:commentRss><comments>http://k2underground.com/blogs/pitchblack/archive/2009/05/12/asynchronous-server-event-processing-between-processes-or-ipc-s-without-the-ipc-bit-in-the-middle.aspx#comments</comments><description>&lt;p&gt;So recently I had an interesting design challenge.I had a 'child' workflow which may or may not start before it's 'Parent' workflow, but at some stage, I needed the parent workflow to wait for the child workflow to complete. &lt;/p&gt;&lt;p&gt;Now I couldn't use a standard IPC event,since the parent workflow may not exist at the time the child workflow starts, and I also could not pass the K2 event serialnumber to the child process as one would normally do with an asynchronous server event, since the child workflow may be at some indeterminate point or not even exist, at the point when the parent workflow got to where it had to wait for the child to complete. &lt;/p&gt;&lt;p&gt;Hmmm...&lt;/p&gt;&lt;p&gt;If only there were some place to store the server event serial number, until the client event could pick up the serial number and finish the asynchronous server event task. Smartobjects to the rescue!&lt;/p&gt;&lt;p&gt;To make sense of all this, open up the attached K2 solution, and consider the two processes.&amp;nbsp; &lt;span style="font-style:italic;"&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-style:italic;"&gt;'AsynchronousProcess'&lt;/span&gt; is the parent process, and after starting, it will wait at the &lt;span style="font-style:italic;"&gt;'Wait here for a signal to continue'&lt;/span&gt; activity. In the activity, there is an event '&lt;i&gt;Add async server event entry&lt;/i&gt;'. Note the &lt;/p&gt;&lt;p&gt;K2.Synchronous = false;&amp;nbsp; &lt;/p&gt;&lt;p&gt;line in this event - that is the bit that tells K2 not to compete the event, but to wait for an API call from outside to finish the event. This event creates the SmartObject record, and then waits for the child workflow to come around and tell it to complete.&lt;br&gt;&lt;/p&gt;&lt;p&gt;The process &lt;i&gt;'ProcessThatCompletesAsyncProcess'&lt;/i&gt; then starts, and once you finish the client event &lt;span style="font-style:italic;"&gt;'Some client event', &lt;/span&gt;the 'child' workflow will go to the SmartObject, find any outstanding server items with a specific Unique Identifier, and then finish them off. &lt;/p&gt;&lt;p&gt;The nice thing about this approach is that there is no dependency on which process starts first, and nothing prevents the child workflow from finishing multiple parent workflows. As long as the child workflow can find the tasks it needs to finish (I use the 'Identifier' and 'Event Name' values in the SmartObject for this), you're all set.&lt;/p&gt;&lt;p&gt;Now, a couple of notes:&lt;/p&gt;&lt;p&gt;1) I made the sample as simple as possible, but you probably will want to delete or otherwise change the AsyncServerItems SmartObject record in the SmartBox database after the async server event has finished, to prevent errors when other child workflows find, and try to finish, a server event that no longer exists.&lt;/p&gt;&lt;p&gt;2) Yes,I know it is BAD practice to reference the workflow client .dll in a K2 process. In this case, it is OK though, since the&amp;nbsp; child workflow will not attempt to interact with itself through the API, so the risk of deadlock is minimal. That said, a better option would probably be to call a asynchronous web service method to finish the server event, but again, I tried to keep the sample as simple as possible, And hey, it works :) &lt;/p&gt;&lt;p&gt;&amp;nbsp;3)&amp;nbsp; If it DOESN'T work, and you get the '26033 worklist item not open' error while running 807 update 370, you need to obtain and install the patch described in KB000384 (http://kb.k2workflow.com/articles/kb000384.aspx)&lt;/p&gt;&lt;p&gt;Feel free to have a play with the concept - you may find it useful in future...&lt;br&gt;&lt;/p&gt;&lt;p&gt;Cheerio&lt;/p&gt;&lt;p&gt;Neil &lt;br&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://k2underground.com/aggbug.aspx?PostID=30758" width="1" height="1"&gt;</description><enclosure url="http://k2underground.com/cfs-file.ashx/__key/CommunityServer.Components.PostAttachments/00.00.03.07.58/AsyncServerItemsSample.zip" length="721364" type="application/zip" /><category domain="http://k2underground.com/blogs/pitchblack/archive/tags/asynchronous+server+events+IPC/default.aspx">asynchronous server events IPC</category></item><item><title>K2 and Firewalled Domains</title><link>http://k2underground.com/blogs/pitchblack/archive/2009/03/02/k2-and-firewalled-domains.aspx</link><pubDate>Mon, 02 Mar 2009 16:37:00 GMT</pubDate><guid isPermaLink="false">1c9bda6b-c6e6-4e79-8d32-b70ad0011ef7:29172</guid><dc:creator>Murphy</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://k2underground.com/blogs/pitchblack/rsscomments.aspx?PostID=29172</wfw:commentRss><comments>http://k2underground.com/blogs/pitchblack/archive/2009/03/02/k2-and-firewalled-domains.aspx#comments</comments><description>&lt;P style="MARGIN:0cm 0cm 10pt;" class=MsoNormal&gt;&lt;FONT size=3 face=Calibri&gt;Hi all I found myself involved in troubleshooting how to enable K2 to retrieve and authenticate users from a different domain sitting behind a firewall.&lt;/FONT&gt;&lt;/P&gt;
&lt;P style="TEXT-INDENT:-18pt;MARGIN:0cm 0cm 0pt 36pt;mso-list:l0 level1 lfo1;" class=MsoListParagraphCxSpFirst&gt;&lt;SPAN style="mso-bidi-font-family:Calibri;mso-ascii-font-family:Calibri;mso-hansi-font-family:Calibri;mso-fareast-font-family:Calibri;"&gt;&lt;SPAN style="mso-list:Ignore;"&gt;&lt;FONT size=3 face=Calibri&gt;-&lt;/FONT&gt;&lt;SPAN style="FONT:7pt 'Times New Roman';"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;FONT size=3 face=Calibri&gt;The first step is easy and I am sure you all know, if you are running blackpearl 807 then you can open the workspace select ‘Management’ tab -&amp;gt; ‘User Managers’ -&amp;gt; ‘Domains’ and add your domain with a valid LDAP path.&lt;/FONT&gt;&lt;/P&gt;
&lt;P style="MARGIN:0cm 0cm 0pt 36pt;" class=MsoListParagraphCxSpMiddle&gt;&lt;o:p&gt;&lt;FONT size=3 face=Calibri&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P style="TEXT-INDENT:-18pt;MARGIN:0cm 0cm 0pt 36pt;mso-list:l0 level1 lfo1;" class=MsoListParagraphCxSpMiddle&gt;&lt;SPAN style="mso-bidi-font-family:Calibri;mso-ascii-font-family:Calibri;mso-hansi-font-family:Calibri;mso-fareast-font-family:Calibri;"&gt;&lt;SPAN style="mso-list:Ignore;"&gt;&lt;FONT size=3 face=Calibri&gt;-&lt;/FONT&gt;&lt;SPAN style="FONT:7pt 'Times New Roman';"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;FONT size=3 face=Calibri&gt;There are several pre requisites&lt;/FONT&gt;&lt;/P&gt;
&lt;P style="MARGIN:0cm 0cm 0pt 36pt;" class=MsoListParagraphCxSpMiddle&gt;&lt;o:p&gt;&lt;FONT size=3 face=Calibri&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P style="TEXT-INDENT:-18pt;MARGIN:0cm 0cm 0pt 72pt;mso-list:l0 level2 lfo1;mso-add-space:auto;" class=MsoListParagraphCxSpMiddle&gt;&lt;SPAN style="FONT-FAMILY:'Courier New';mso-fareast-font-family:'Courier New';"&gt;&lt;SPAN style="mso-list:Ignore;"&gt;&lt;FONT size=3&gt;o&lt;/FONT&gt;&lt;SPAN style="FONT:7pt 'Times New Roman';"&gt;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;FONT size=3 face=Calibri&gt;There must be trust between the domains&lt;/FONT&gt;&lt;/P&gt;
&lt;P style="TEXT-INDENT:-18pt;MARGIN:0cm 0cm 0pt 72pt;mso-list:l0 level2 lfo1;mso-add-space:auto;" class=MsoListParagraphCxSpMiddle&gt;&lt;SPAN style="FONT-FAMILY:'Courier New';mso-fareast-font-family:'Courier New';"&gt;&lt;SPAN style="mso-list:Ignore;"&gt;&lt;FONT size=3&gt;o&lt;/FONT&gt;&lt;SPAN style="FONT:7pt 'Times New Roman';"&gt;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;FONT size=3 face=Calibri&gt;The firewall must have enough ports open for the LDAP call to be made, the ports we found were required are:&lt;/FONT&gt;&lt;/P&gt;
&lt;P style="TEXT-INDENT:-18pt;MARGIN:0cm 0cm 0pt 108pt;mso-list:l0 level3 lfo1;mso-add-space:auto;" class=MsoListParagraphCxSpMiddle&gt;&lt;SPAN style="FONT-FAMILY:Wingdings;mso-bidi-font-family:Wingdings;mso-fareast-font-family:Wingdings;"&gt;&lt;SPAN style="mso-list:Ignore;"&gt;&lt;FONT size=3&gt;§&lt;/FONT&gt;&lt;SPAN style="FONT:7pt 'Times New Roman';"&gt;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;FONT size=3 face=Calibri&gt;RPC &lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&lt;/SPAN&gt;endpoint mapper: 135/tcp, 135/udp&lt;/FONT&gt;&lt;/P&gt;
&lt;P style="TEXT-INDENT:-18pt;MARGIN:0cm 0cm 0pt 108pt;mso-list:l0 level3 lfo1;mso-add-space:auto;" class=MsoListParagraphCxSpMiddle&gt;&lt;SPAN style="FONT-FAMILY:Wingdings;mso-bidi-font-family:Wingdings;mso-fareast-font-family:Wingdings;"&gt;&lt;SPAN style="mso-list:Ignore;"&gt;&lt;FONT size=3&gt;§&lt;/FONT&gt;&lt;SPAN style="FONT:7pt 'Times New Roman';"&gt;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;FONT face=Calibri&gt;&lt;FONT size=3&gt;RPC randomly allocated high TCP ports TCP 1024 - 65535* &lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P style="TEXT-INDENT:-18pt;MARGIN:0cm 0cm 0pt 108pt;mso-list:l0 level3 lfo1;mso-add-space:auto;" class=MsoListParagraphCxSpMiddle&gt;&lt;SPAN style="FONT-FAMILY:Wingdings;mso-bidi-font-family:Wingdings;mso-fareast-font-family:Wingdings;"&gt;&lt;SPAN style="mso-list:Ignore;"&gt;&lt;FONT size=3&gt;§&lt;/FONT&gt;&lt;SPAN style="FONT:7pt 'Times New Roman';"&gt;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;FONT size=3 face=Calibri&gt;* For more information about how to customize this port see &lt;/FONT&gt;&lt;A href="http://support.microsoft.com/kb/224196/"&gt;&lt;FONT size=3 face=Calibri&gt;http://support.microsoft.com/kb/224196/&lt;/FONT&gt;&lt;/A&gt;&lt;/P&gt;
&lt;P style="TEXT-INDENT:-18pt;MARGIN:0cm 0cm 0pt 108pt;mso-list:l0 level3 lfo1;mso-add-space:auto;" class=MsoListParagraphCxSpMiddle&gt;&lt;SPAN style="FONT-FAMILY:Wingdings;mso-bidi-font-family:Wingdings;mso-fareast-font-family:Wingdings;"&gt;&lt;SPAN style="mso-list:Ignore;"&gt;&lt;FONT size=3&gt;§&lt;/FONT&gt;&lt;SPAN style="FONT:7pt 'Times New Roman';"&gt;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;FONT size=3 face=Calibri&gt;445/tcp, 445/udp&lt;/FONT&gt;&lt;/P&gt;
&lt;P style="TEXT-INDENT:-18pt;MARGIN:0cm 0cm 0pt 108pt;mso-list:l0 level3 lfo1;mso-add-space:auto;" class=MsoListParagraphCxSpMiddle&gt;&lt;SPAN style="FONT-FAMILY:Wingdings;mso-bidi-font-family:Wingdings;mso-fareast-font-family:Wingdings;"&gt;&lt;SPAN style="mso-list:Ignore;"&gt;&lt;FONT size=3&gt;§&lt;/FONT&gt;&lt;SPAN style="FONT:7pt 'Times New Roman';"&gt;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;FONT size=3 face=Calibri&gt;LDAP: 389/tcp/389/udp&lt;/FONT&gt;&lt;/P&gt;
&lt;P style="TEXT-INDENT:-18pt;MARGIN:0cm 0cm 0pt 108pt;mso-list:l0 level3 lfo1;mso-add-space:auto;" class=MsoListParagraphCxSpMiddle&gt;&lt;SPAN style="FONT-FAMILY:Wingdings;mso-bidi-font-family:Wingdings;mso-fareast-font-family:Wingdings;"&gt;&lt;SPAN style="mso-list:Ignore;"&gt;&lt;FONT size=3&gt;§&lt;/FONT&gt;&lt;SPAN style="FONT:7pt 'Times New Roman';"&gt;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;FONT size=3 face=Calibri&gt;Kerberos: 88/tcp, 88/udp&lt;/FONT&gt;&lt;/P&gt;
&lt;P style="TEXT-INDENT:-18pt;MARGIN:0cm 0cm 0pt 108pt;mso-list:l0 level3 lfo1;mso-add-space:auto;" class=MsoListParagraphCxSpMiddle&gt;&lt;SPAN style="FONT-FAMILY:Wingdings;mso-bidi-font-family:Wingdings;mso-fareast-font-family:Wingdings;"&gt;&lt;SPAN style="mso-list:Ignore;"&gt;&lt;FONT size=3&gt;§&lt;/FONT&gt;&lt;SPAN style="FONT:7pt 'Times New Roman';"&gt;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;FONT size=3 face=Calibri&gt;DNS: 53/tcp1, 53/udp&lt;/FONT&gt;&lt;/P&gt;
&lt;P style="TEXT-INDENT:-18pt;MARGIN:0cm 0cm 10pt 36pt;mso-list:l0 level1 lfo1;" class=MsoListParagraphCxSpLast&gt;&lt;SPAN style="mso-bidi-font-family:Calibri;mso-ascii-font-family:Calibri;mso-hansi-font-family:Calibri;mso-fareast-font-family:Calibri;"&gt;&lt;SPAN style="mso-list:Ignore;"&gt;&lt;FONT size=3 face=Calibri&gt;-&lt;/FONT&gt;&lt;SPAN style="FONT:7pt 'Times New Roman';"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;FONT size=3 face=Calibri&gt;Note: There is a good Microsoft KB articles which also covers ldap ports in more detail which is: &lt;/FONT&gt;&lt;A href="http://support.microsoft.com/kb/832017/"&gt;&lt;FONT size=3 face=Calibri&gt;http://support.microsoft.com/kb/832017/&lt;/FONT&gt;&lt;/A&gt;&lt;/P&gt;
&lt;P style="MARGIN:0cm 0cm 10pt;" class=MsoNormal&gt;&lt;B style="mso-bidi-font-weight:normal;"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;Testing the Setup&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/B&gt;&lt;/P&gt;
&lt;P style="MARGIN:0cm 0cm 10pt;" class=MsoNormal&gt;&lt;FONT size=3 face=Calibri&gt;If you run up the K2 workspace and browse for users in the alternate domain and you get a list back well that’s great you are off to a good start. If not then here are a few things you can do:&lt;/FONT&gt;&lt;/P&gt;
&lt;P style="TEXT-INDENT:-18pt;MARGIN:0cm 0cm 0pt 36pt;mso-list:l0 level1 lfo1;" class=MsoListParagraphCxSpFirst&gt;&lt;SPAN style="mso-bidi-font-family:Calibri;mso-ascii-font-family:Calibri;mso-hansi-font-family:Calibri;mso-fareast-font-family:Calibri;"&gt;&lt;SPAN style="mso-list:Ignore;"&gt;&lt;FONT size=3 face=Calibri&gt;-&lt;/FONT&gt;&lt;SPAN style="FONT:7pt 'Times New Roman';"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;FONT size=3 face=Calibri&gt;Look in the blackpearl\hostserver\bin\ directory for a file called ADUM.txt, open this file to see if any errors have been logged and the detail.&lt;/FONT&gt;&lt;/P&gt;
&lt;P style="TEXT-INDENT:-18pt;MARGIN:0cm 0cm 0pt 36pt;mso-list:l0 level1 lfo1;" class=MsoListParagraphCxSpMiddle&gt;&lt;SPAN style="mso-bidi-font-family:Calibri;mso-ascii-font-family:Calibri;mso-hansi-font-family:Calibri;mso-fareast-font-family:Calibri;"&gt;&lt;SPAN style="mso-list:Ignore;"&gt;&lt;FONT size=3 face=Calibri&gt;-&lt;/FONT&gt;&lt;SPAN style="FONT:7pt 'Times New Roman';"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;FONT size=3 face=Calibri&gt;Get back to basics, do not use K2, run Microsoft’s ADSI edit and try and connect to the domain, this is a great idea as it moves the testing out of the K2 arena.&lt;/FONT&gt;&lt;/P&gt;
&lt;P style="TEXT-INDENT:-18pt;MARGIN:0cm 0cm 0pt 36pt;mso-list:l0 level1 lfo1;" class=MsoListParagraphCxSpMiddle&gt;&lt;SPAN style="mso-bidi-font-family:Calibri;mso-ascii-font-family:Calibri;mso-hansi-font-family:Calibri;mso-fareast-font-family:Calibri;"&gt;&lt;SPAN style="mso-list:Ignore;"&gt;&lt;FONT size=3 face=Calibri&gt;-&lt;/FONT&gt;&lt;SPAN style="FONT:7pt 'Times New Roman';"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;FONT size=3 face=Calibri&gt;Check your event logs, resolve any issues you may find&lt;/FONT&gt;&lt;/P&gt;
&lt;P style="TEXT-INDENT:-18pt;MARGIN:0cm 0cm 0pt 36pt;mso-list:l0 level1 lfo1;" class=MsoListParagraphCxSpMiddle&gt;&lt;SPAN style="mso-bidi-font-family:Calibri;mso-ascii-font-family:Calibri;mso-hansi-font-family:Calibri;mso-fareast-font-family:Calibri;"&gt;&lt;SPAN style="mso-list:Ignore;"&gt;&lt;FONT size=3 face=Calibri&gt;-&lt;/FONT&gt;&lt;SPAN style="FONT:7pt 'Times New Roman';"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;FONT size=3 face=Calibri&gt;Get the firewall logs (filter them to be relevant for traffic from the server you are using) and review what has been blocked and try and relate this back to whether it is a requirement for the LDAP lookup.&lt;/FONT&gt;&lt;/P&gt;
&lt;P style="TEXT-INDENT:-18pt;MARGIN:0cm 0cm 10pt 36pt;mso-list:l0 level1 lfo1;" class=MsoListParagraphCxSpLast&gt;&lt;SPAN style="mso-bidi-font-family:Calibri;mso-ascii-font-family:Calibri;mso-hansi-font-family:Calibri;mso-fareast-font-family:Calibri;"&gt;&lt;SPAN style="mso-list:Ignore;"&gt;&lt;FONT size=3 face=Calibri&gt;-&lt;/FONT&gt;&lt;SPAN style="FONT:7pt 'Times New Roman';"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;FONT size=3 face=Calibri&gt;Use a tool like PortQry to validate that the firewall ports you have asked to be opened can be communicated on (sometimes people think they have opened a port but have got it wrong, missed one ect..)&lt;/FONT&gt;&lt;/P&gt;
&lt;P style="MARGIN:0cm 0cm 10pt;" class=MsoNormal&gt;&lt;FONT size=3 face=Calibri&gt;Once this is done, start a process which sends a client event to a user in this domain and test that they are able to open and action the worklist item.&lt;/FONT&gt;&lt;/P&gt;
&lt;P style="MARGIN:0cm 0cm 10pt 18pt;" class=MsoNormal&gt;&lt;FONT size=3 face=Calibri&gt;Issues I came across:&lt;/FONT&gt;&lt;/P&gt;
&lt;P style="TEXT-INDENT:-18pt;MARGIN:0cm 0cm 0pt 36pt;mso-list:l0 level1 lfo1;" class=MsoListParagraphCxSpFirst&gt;&lt;SPAN style="mso-bidi-font-family:Calibri;mso-ascii-font-family:Calibri;mso-hansi-font-family:Calibri;mso-fareast-font-family:Calibri;"&gt;&lt;SPAN style="mso-list:Ignore;"&gt;&lt;FONT size=3 face=Calibri&gt;-&lt;/FONT&gt;&lt;SPAN style="FONT:7pt 'Times New Roman';"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;FONT size=3 face=Calibri&gt;Kerberos port was not opened&lt;/FONT&gt;&lt;/P&gt;
&lt;P style="TEXT-INDENT:-18pt;MARGIN:0cm 0cm 0pt 36pt;mso-list:l0 level1 lfo1;" class=MsoListParagraphCxSpMiddle&gt;&lt;SPAN style="mso-bidi-font-family:Calibri;mso-ascii-font-family:Calibri;mso-hansi-font-family:Calibri;mso-fareast-font-family:Calibri;"&gt;&lt;SPAN style="mso-list:Ignore;"&gt;&lt;FONT size=3 face=Calibri&gt;-&lt;/FONT&gt;&lt;SPAN style="FONT:7pt 'Times New Roman';"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;FONT size=3 face=Calibri&gt;Kerberos packet fragmentation was occurring (see kb &lt;/FONT&gt;&lt;A href="http://support.microsoft.com/kb/244474"&gt;&lt;FONT color=#0000ff size=3 face=Calibri&gt;http://support.microsoft.com/kb/244474&lt;/FONT&gt;&lt;/A&gt;&lt;FONT size=3 face=Calibri&gt; )&lt;/FONT&gt;&lt;/P&gt;
&lt;P style="TEXT-INDENT:-18pt;MARGIN:0cm 0cm 10pt 36pt;mso-list:l0 level1 lfo1;" class=MsoListParagraphCxSpLast&gt;&lt;SPAN style="mso-bidi-font-family:Calibri;mso-ascii-font-family:Calibri;mso-hansi-font-family:Calibri;mso-fareast-font-family:Calibri;"&gt;&lt;SPAN style="mso-list:Ignore;"&gt;&lt;FONT size=3 face=Calibri&gt;-&lt;/FONT&gt;&lt;SPAN style="FONT:7pt 'Times New Roman';"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;FONT size=3 face=Calibri&gt;UDP port for LDAP was not opened, this needs to be opened as it looks like UDP is used to do the initial ping to find available DC’s ect..&lt;/FONT&gt;&lt;/P&gt;
&lt;P style="MARGIN:0cm 0cm 10pt;" class=MsoNormal&gt;&lt;B style="mso-bidi-font-weight:normal;"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;Interesting point:&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/B&gt;&lt;/P&gt;
&lt;P style="MARGIN:0cm 0cm 10pt;" class=MsoNormal&gt;&lt;FONT size=3 face=Calibri&gt;We were able to connect to the domain using ADSI edit if we specified specific user credentials as part of the connection string even without opening the Kerberos ports and LDAP UDP, however using integrated authentication failed. This is an important point to note as K2 will require integrated authentication and some tools may show they can retrieve users but this may only be due to the fact that they have entered specific credentials for the LDAP connection.&lt;/FONT&gt;&lt;/P&gt;
&lt;P style="MARGIN:0cm 0cm 10pt;" class=MsoNormal&gt;&lt;FONT size=3 face=Calibri&gt;Well that is it from me, I hope that this post proves helpful to someone, also I am keen to receive comments on this blog, my knowledge in this area is limited and I am keen to be corrected, advised on any items in this post.&lt;/FONT&gt;&lt;/P&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://k2underground.com/aggbug.aspx?PostID=29172" width="1" height="1"&gt;</description></item><item><title>Load balanced Destinations with Smart objects (NO code)</title><link>http://k2underground.com/blogs/pitchblack/archive/2009/02/11/load-balanced-destinations-with-smart-objects-no-code.aspx</link><pubDate>Wed, 11 Feb 2009 20:16:00 GMT</pubDate><guid isPermaLink="false">1c9bda6b-c6e6-4e79-8d32-b70ad0011ef7:28692</guid><dc:creator>Willem</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://k2underground.com/blogs/pitchblack/rsscomments.aspx?PostID=28692</wfw:commentRss><comments>http://k2underground.com/blogs/pitchblack/archive/2009/02/11/load-balanced-destinations-with-smart-objects-no-code.aspx#comments</comments><description>&lt;p&gt;&lt;strong&gt;Overview&lt;/strong&gt;&lt;br /&gt;A client of K2 asked me what load balancing capabilities we have with regards to destinations. The initial answer would typically be &amp;lsquo;None&amp;rsquo; out of the box, but this is not entirely true.&lt;br /&gt;We do have load balancing capabilities for destination groups Out-Of-The-Box: it is just not configured yet when you install K2.&lt;/p&gt;
&lt;p&gt;In this document I will discuss load balancing capabilities with Smartobjects and destination rules without writing a line of code. I have created a pattern that utilizes stock standard ootb K2 Smartobjects with no need to write a service object.&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;In this article there are 3 Smartobjects included in this article and an InfoPath document to start and test some features.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Smartobjects&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="text-decoration:underline;"&gt;DestinationGroupBalanced.sodx&lt;/span&gt;&lt;br /&gt;This is the Smartobject to be called from your process. The required input properties are the process name and the activity name for which you require (and have configured) load balanced groups.&lt;/p&gt;
&lt;p&gt;Fields&lt;br /&gt;&lt;strong&gt;Processname&lt;/strong&gt;&amp;nbsp;Identifies the process level grouping since each process has multiple activities, each of these may be required to be load balanced. Process name was also chosen as an identifier since the process name is available for selection from the object browser thus limiting any additional coding to pass in parameter detail&lt;br /&gt;&lt;strong&gt;Activityname&lt;/strong&gt;&amp;nbsp;Per process each activity is unique. This is the second identifier required to determine which groups to assign for load balancing. As for process name, activity is available from the context browser&lt;br /&gt;&lt;strong&gt;Groupname&lt;/strong&gt;&amp;nbsp;This is the actual destination rule name. Typically &amp;lsquo;mygroupname&amp;rsquo; would be assigned to K2 destinations and therefore the name used in groupname should be a valid destination name.&lt;br /&gt;&lt;strong&gt;Nextgroupid&lt;/strong&gt;&amp;nbsp;When using multiple groups and you want to split the load between those groups, each group must have the id of another group in the same &amp;lsquo;process activity&amp;rsquo; pairing.&lt;br /&gt;In the context of this Smartoject it is used internally and you should not concern yourself with this value during runtime.&lt;br /&gt;&lt;strong&gt;Currentassignedgroupid&lt;/strong&gt;&amp;nbsp;This is the value returned from &amp;lsquo;NextGroupID.sodx&amp;rsquo; and is used for filtering. Once again, do not reference this value during runtime.&lt;br /&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;&lt;span style="text-decoration:underline;"&gt;LoadBalanceGroups.sodx&lt;/span&gt;&lt;br /&gt;This Smartobject is used to return a single group name where the group name is the destination name&lt;/p&gt;
&lt;p&gt;Fields:&lt;br /&gt;&lt;strong&gt;Groupid&lt;/strong&gt;&amp;nbsp;Each group name in this object requires a unique id.&lt;br /&gt;&lt;strong&gt;Groupname&lt;/strong&gt;&amp;nbsp;This is the actual destination name. this value will be assigned to the destination rule for an event.&lt;br /&gt;&lt;strong&gt;Nextgroupid&lt;/strong&gt;&amp;nbsp;For multiple groups at an activity each group will indicate the next group to be assigned as the destination. Since all work is guaranteed to be distribiuted evenly with this pattern there is no need to worry about which group is first and which is last.&lt;br /&gt;Care has to be taken though:&amp;nbsp; The group names and the link (nextgroupid) shoud match the destinations required in the process activity pairing.&lt;br /&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;&lt;span style="text-decoration:underline;"&gt;NextGroupID.sodx&lt;/span&gt;&lt;br /&gt;This object tracks the last assigned group. Once the last assigned group id is returned by this object, an update is made to this object to indicate the next object assigned for a destination.&lt;/p&gt;
&lt;p&gt;Fields:&lt;br /&gt;&lt;strong&gt;Processname&lt;/strong&gt;&amp;nbsp;The process for which the next group name should be retrieved&lt;br /&gt;&lt;strong&gt;Activityname&lt;/strong&gt;&amp;nbsp;The activity for the process where the next available group name is required&lt;br /&gt;&lt;strong&gt;CurrentAssignedGroupID&lt;/strong&gt;&amp;nbsp;The group id of the group name to be used as the next destination&lt;br /&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;emsp;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Data&lt;/strong&gt;&lt;br /&gt;LoadBalanceGroups and NextGroupID together determine the next group name to be returned.&lt;br /&gt;Please study the following two data sets:&lt;/p&gt;
&lt;p&gt;1-&amp;nbsp;&lt;strong&gt;NextGroupID&lt;/strong&gt;&lt;br /&gt;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&lt;br /&gt;2-&amp;nbsp;&lt;strong&gt;LoadBalanceGroups&lt;/strong&gt;&lt;br /&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;In the &lt;strong&gt;LoadBalanceGroups&lt;/strong&gt; list Group One, Group Two, Group Three are all linked by the &amp;lsquo;Next Group ID&amp;rsquo; field and the same for Group AAA and Group BBB.&lt;/p&gt;
&lt;p&gt;In the &lt;strong&gt;NextGroupID&lt;/strong&gt; list, the group with id &amp;lsquo;1&amp;rsquo; will be assigned as the next destination, once Group One is returned, the &amp;lsquo;Next Group ID&amp;rsquo; for Group One is used to update the &amp;lsquo;Last Assigned Group ID&amp;rsquo; that will in turn become the next destination to be assigned.&lt;/p&gt;
&lt;p&gt;When &lt;strong&gt;DestinationGroupBalanced&lt;/strong&gt; is executed, Process name and activity name will now be passed and the relevant group name is returned to the interface.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Setup&lt;/strong&gt;&lt;br /&gt;1-&amp;nbsp;To implement this pattern in your environment, deploy the smartobjects in this article to your environment.&lt;br /&gt;2-&amp;nbsp;You then have to integrate the smartobjects assigned to the InfoPath form. The current data sources will not work in your environment since my objects point to a new server. Refresh these references.&lt;br /&gt;3-&amp;nbsp;Add some dummy data via the InfoPath form to test the concept. Initial configured data is required.&lt;br /&gt;4-&amp;nbsp;Replace the dummy values above with actual destination names and test in a process.&lt;/p&gt;
&lt;p&gt;If you cannot get the infopath form to work, use the &lt;span style="text-decoration:underline;"&gt;SmartObject Service Tester.exe&lt;/span&gt; &lt;br /&gt;([k2installdrive]\Program Files\K2 blackpearl\ServiceBroker) to populate LoadBalanceGroups and NextGroupID with data as above, then execute DestinationGroupBalanced&lt;/p&gt;
&lt;p&gt;This pattern could cater for more complex scenarios but I think for a start it is not too bad.&lt;/p&gt;
&lt;p&gt;Hope this helps&lt;/p&gt;
&lt;p&gt;Willem Buchling&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://k2underground.com/aggbug.aspx?PostID=28692" width="1" height="1"&gt;</description></item><item><title>Collation error in the workspace after upgrading to 807</title><link>http://k2underground.com/blogs/pitchblack/archive/2008/11/19/collation-error-in-the-workspace-after-upgrading-to-807.aspx</link><pubDate>Wed, 19 Nov 2008 16:44:00 GMT</pubDate><guid isPermaLink="false">1c9bda6b-c6e6-4e79-8d32-b70ad0011ef7:27344</guid><dc:creator>Keif</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://k2underground.com/blogs/pitchblack/rsscomments.aspx?PostID=27344</wfw:commentRss><comments>http://k2underground.com/blogs/pitchblack/archive/2008/11/19/collation-error-in-the-workspace-after-upgrading-to-807.aspx#comments</comments><description>&lt;P&gt;I've been working on a client site and one of the things I am working on is planning and testing for an upgrade to K2 [blackpearl] version 807 from version 803. The upgrade testing has gone smoothly so far except for an error we experienced in the workspace. The error is "cannot resolve the collation conflict between Latin1_General_CI_AS and SQL_Latin1_General_CP1_CI_AS in the like operation".&lt;/P&gt;
&lt;P&gt;&lt;IMG title="Collation Error in Workspace" style="WIDTH:998px;HEIGHT:641px;" height=641 alt="Collation Error in Workspace" src="http://i272.photobucket.com/albums/jj162/K2Underground/CollationError.jpg" width=998&gt;&lt;/P&gt;
&lt;P&gt;I did some investigation and this not a K2 [blackpearl] error. In effect this boiled down to the SQL server's collation being changed at some point in time after K2[blackpearl] was installed. There is a temporary table being used in generating a work-list in the workspace for 807 and these two facts combined to mean that the tempdb has a different collation to the columns in the K2 server DB and hence the error.&lt;/P&gt;
&lt;P&gt;I decided the best resolution to this issue was to massage the collation on all the columns in the K2Server DB.&lt;/P&gt;
&lt;P&gt;To do this I wrote a SQL script which I have attached to this blog post. All my initial testing with the client suggests this resolves the collation issue.&lt;/P&gt;
&lt;P&gt;Hopefully anyone else running into this issue will benefit from this solution.&lt;/P&gt;
&lt;P&gt;The attached script is supplied as is, I encourage you to back up any databases you apply this to and to test the script rigorously before applying this in production. The script is only attended to change the K2Server database, however the core could be adapter for other collation manipulate needs.&amp;nbsp;&lt;/P&gt;
&lt;P&gt;25th November, 2008 - Update:&lt;/P&gt;
&lt;P&gt;I've update the attached script to a zip file containing scripts for all the K2 databases. I've excluded the SmartBox database as it's indexes are different for each customer's specific implementation, however the scripts supplied can form a model for which a custom SmartBox migration script can be created. I have also included a script for the Workspace database, however the index drop and create statements will need to be customised for your specific database as the index names are not the same for all implementations. I have also updated the scripts to include a statement to alter the default collation on the database itself and not just the columns within the database.&lt;/P&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://k2underground.com/aggbug.aspx?PostID=27344" width="1" height="1"&gt;</description><enclosure url="http://k2underground.com/cfs-file.ashx/__key/CommunityServer.Components.PostAttachments/00.00.02.73.44/Collation-Change.zip" length="14718" type="application/x-zip-compressed" /></item><item><title>how to nicely end a workflow - programatically</title><link>http://k2underground.com/blogs/pitchblack/archive/2008/10/31/how-to-nicely-end-a-workflow-programatically.aspx</link><pubDate>Fri, 31 Oct 2008 16:21:00 GMT</pubDate><guid isPermaLink="false">1c9bda6b-c6e6-4e79-8d32-b70ad0011ef7:27005</guid><dc:creator>chalama</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://k2underground.com/blogs/pitchblack/rsscomments.aspx?PostID=27005</wfw:commentRss><comments>http://k2underground.com/blogs/pitchblack/archive/2008/10/31/how-to-nicely-end-a-workflow-programatically.aspx#comments</comments><description>&lt;P&gt;You can find case where a user start a process that goes in sevral approval setps etc ... but he wants to withdraw (end) the process.&lt;/P&gt;
&lt;P&gt;To do that you will need to design your process so it does have a "end" activity and we will use the Gotoactivity API function.&lt;/P&gt;
&lt;P&gt;You will need the following reference:&lt;/P&gt;
&lt;P&gt;using SourceCode.Hosting.Client.BaseAPI;&lt;BR&gt;using SourceCode.Workflow.Management;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;Here is a sample code that will do that :&lt;/P&gt;
&lt;P&gt;try&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // create a connection string&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; SourceCode.Hosting.Client.BaseAPI.SCConnectionStringBuilder connBldr =&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; new SourceCode.Hosting.Client.BaseAPI.SCConnectionStringBuilder();&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // force the connection string to a specific credential of k2 server admin&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; SCConnectionStringBuilder cb = new SCConnectionStringBuilder();&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; cb.Host = "athena";&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; cb.Port = 5555;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; cb.SecurityLabelName = "SH";&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; cb.UserID = "orion";&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; cb.WindowsDomain = "";&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; cb.Password = "passe";&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; cb.Integrated = false;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; cb.IsPrimaryLogin = true;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // instantiate a connection with this connection string&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; SourceCode.Workflow.Management.WorkflowManagementServer server = new&amp;nbsp;&amp;nbsp;&amp;nbsp; SourceCode.Workflow.Management.WorkflowManagementServer(cb.Host, cb.Port);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; server.CreateConnection();&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; server.Connection.Open(cb.ToString());&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; foreach (SourceCode.Workflow.Management.ProcessSet ps in server.GetProcSets())&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //if (ps.FullName == "K2WorkflowProject1\\Process1")&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Response.Write("Process : " + ps.FullName + "&amp;lt;br /&amp;gt; " );&lt;/P&gt;
&lt;P&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; foreach (SourceCode.Workflow.Management.ProcessInstance itemProc in server.GetProcessInstances(ps.ProcID))&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //if (itemProc.Originator == "SH:sponsor")&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Response.Write("proc ID = " + itemProc.ID.ToString() + " Folio =" + itemProc.Folio + " Originator = " + itemProc.Originator + "&amp;lt;br&amp;gt;");&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (itemProc.ID == 6){&lt;/P&gt;
&lt;P&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //Connect to Workflow Server&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; SourceCode.Workflow.Client.Connection wfConnection = new SourceCode.Workflow.Client.Connection();&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; cb.Port = 5252;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; wfConnection.Open("athena", cb.ToString());&lt;/P&gt;
&lt;P&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //Get ProcessInstance&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; SourceCode.Workflow.Client.ProcessInstance proc = wfConnection.OpenProcessInstance(itemProc.ID);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; proc.DataFields["EndByUser"].Value = "Sponsor";&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; proc.Update();&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; server.GotoActivity(itemProc.ID, "End");&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // close the connection&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; server.Connection.Close();&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; catch(Exception ex)&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/P&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://k2underground.com/aggbug.aspx?PostID=27005" width="1" height="1"&gt;</description><category domain="http://k2underground.com/blogs/pitchblack/archive/tags/Process/default.aspx">Process</category><category domain="http://k2underground.com/blogs/pitchblack/archive/tags/Activity/default.aspx">Activity</category><category domain="http://k2underground.com/blogs/pitchblack/archive/tags/End+workflow/default.aspx">End workflow</category><category domain="http://k2underground.com/blogs/pitchblack/archive/tags/API/default.aspx">API</category><category domain="http://k2underground.com/blogs/pitchblack/archive/tags/GotoActivity/default.aspx">GotoActivity</category></item><item><title>Simple Dynamic Decision tree - example of how to implement it</title><link>http://k2underground.com/blogs/pitchblack/archive/2008/10/30/simple-dynamic-decision-tree-example-of-how-to-implement-it.aspx</link><pubDate>Thu, 30 Oct 2008 10:02:00 GMT</pubDate><guid isPermaLink="false">1c9bda6b-c6e6-4e79-8d32-b70ad0011ef7:26984</guid><dc:creator>chalama</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://k2underground.com/blogs/pitchblack/rsscomments.aspx?PostID=26984</wfw:commentRss><comments>http://k2underground.com/blogs/pitchblack/archive/2008/10/30/simple-dynamic-decision-tree-example-of-how-to-implement-it.aspx#comments</comments><description>&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Recently at client site I have been ask to create a dynamic decison tree. &lt;/P&gt;
&lt;P&gt;A process that will be able to ask multiple departement to vote on a something knowing that the number of deprtement is unkonw before the start of the process and number of level of decision is also unkonw. The decison process needs to be run in paralell in all departement.&lt;/P&gt;
&lt;P&gt;That decison process is looking like that :&lt;/P&gt;
&lt;P&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Start&lt;/P&gt;
&lt;P&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&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;/P&gt;
&lt;P&gt;Departement 1/Approval Level 1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Departement 2/Approval Level 1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Departement 3/Approval Level 1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ----- Department N&lt;/P&gt;
&lt;P&gt;Departement 1/Approval Level 2&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Departement 3/Approval Level 2&lt;/P&gt;
&lt;P&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Departement 3/Approval Level 3&lt;/P&gt;
&lt;P&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Departement 3/Approval M&lt;/P&gt;
&lt;P&gt;So we need to be able to dynamically creates N branches (one per department) and dynamically create M approval steps (one for each level of approval).&lt;/P&gt;
&lt;P&gt;A solution for that will have 2 processes 1 to create parallel branches for each department and one that will handle the M approval steps.&lt;/P&gt;
&lt;P&gt;Inside the K2 this will look like that:&lt;/P&gt;
&lt;P&gt;&lt;IMG style="WIDTH:1024px;HEIGHT:372px;" height=372 src="http://i272.photobucket.com/albums/jj162/K2Underground/1.jpg" width=1024 align=left&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;The Parent process is called "NBranches" and the child process is called "Mapprovalsteps".&lt;/P&gt;
&lt;P&gt;"NBranches" call the "Mapprovalsteps" using an IPC event and passing it the number of approval step to create:&lt;/P&gt;
&lt;P&gt;&lt;IMG style="WIDTH:1024px;HEIGHT:449px;" height=449 src="http://i272.photobucket.com/albums/jj162/K2Underground/2.jpg" width=1024 align=left&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;That call must be in synch since we do want all the branches to complete their approval steps then collect all the final decision taken.&lt;/P&gt;
&lt;P&gt;The parallel processing of the branches is done using a destination rule (plan per slot no destination) &amp;nbsp;in which we specify a variable for the number of branch we want:&lt;/P&gt;
&lt;P&gt;&lt;IMG style="WIDTH:1024px;HEIGHT:453px;" height=453 src="http://i272.photobucket.com/albums/jj162/K2Underground/3-1.jpg" width=1024 align=left&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;There are 2 others event in the only activity of the "NBranches" process see below: &lt;/P&gt;
&lt;P&gt;&lt;IMG style="WIDTH:1024px;HEIGHT:259px;" height=259 src="http://i272.photobucket.com/albums/jj162/K2Underground/4.jpg" width=1024 align=left&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;The "Increment Branch counter" will increment locally a counter that will allow us to have the ID of the current Branch we are dealing with the code is at follow:&lt;/P&gt;
&lt;P&gt;K2.ActivityInstanceDestination.DataFields["branchnum"].Value = Convert.ToInt32(K2.ProcessInstance.DataFields["branchescounter"].Value.ToString()) + 1;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;K2.ProcessInstance.DataFields["branchescounter"].Value = K2.ActivityInstanceDestination.DataFields["branchnum"].Value;&lt;/P&gt;
&lt;P&gt;Where the "branchnum" is a activity datafields and the "branchescounter" is a process datafields.&lt;/P&gt;
&lt;P&gt;The "concatDecision" is saving the branch decision into the global decision variable, the code for that is the following:&lt;/P&gt;
&lt;P&gt;K2.ProcessInstance.DataFields["decisions"].Value = K2.ProcessInstance.DataFields["decisions"].Value + "//" + K2.ActivityInstanceDestination.DataFields["retbranchdecision"].Value;&lt;/P&gt;
&lt;P&gt;Where "decision"&amp;nbsp; is the holder of all the decision taken by all the branches and "retbranchdecision" the decision taken by the current branches.&lt;/P&gt;
&lt;P&gt;Here are the datafields for the "Nbranches" process :&lt;/P&gt;
&lt;P&gt;&lt;IMG style="WIDTH:1024px;HEIGHT:331px;" height=331 src="http://i272.photobucket.com/albums/jj162/K2Underground/5.jpg" width=1024 align=left&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Here is the data mapping when calling the "Mapprovalsteps" process:&lt;/P&gt;
&lt;P&gt;&lt;IMG style="WIDTH:1024px;HEIGHT:457px;" height=457 src="http://i272.photobucket.com/albums/jj162/K2Underground/6.jpg" width=1024 align=left&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;The "Mapprovalsteps" process is looking like that:&lt;/P&gt;
&lt;P&gt;&lt;IMG style="WIDTH:1024px;HEIGHT:269px;" height=269 src="http://i272.photobucket.com/albums/jj162/K2Underground/7.jpg" width=1024 align=left&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;The "Approval" is where the users takes decision , then if the if there is another level of approval the process goes to "Route approval to next approval step" and then generate another "Apprpoval" activity.&lt;/P&gt;
&lt;P&gt;To decision to either end or loop back to "approval" is done using Line rules here are the rules:&lt;/P&gt;
&lt;P&gt;&lt;IMG style="WIDTH:1024px;HEIGHT:368px;" height=368 src="http://i272.photobucket.com/albums/jj162/K2Underground/8.jpg" width=1024 align=left&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Line rule that goes to the "End" activity.&lt;/P&gt;
&lt;P&gt;&lt;IMG style="WIDTH:1024px;HEIGHT:394px;" height=394 src="http://i272.photobucket.com/albums/jj162/K2Underground/10.jpg" width=1024 align=left&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Rule that goes the "Route approval to next approval step" activity.&lt;/P&gt;
&lt;P&gt;The only thing that happen inside the "Route approval to next approval step" is the an operation that decrement a the number of approval step:&lt;/P&gt;
&lt;P&gt;K2.ProcessInstance.DataFields["numberofDecisionStep"].Value = Convert.ToInt32(K2.ProcessInstance.DataFields["numberofDecisionStep"].Value.ToString()) - 1;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;"numberofDecisionStep" is a process datafields.&lt;/P&gt;
&lt;P&gt;In the "End" activity we populate the final decision so we can return the it to the parent process, hre is the code:&lt;/P&gt;
&lt;P&gt;K2.ProcessInstance.DataFields["BranchDecision"].Value = "DecisionTakenByBranchNum=" + K2.ProcessInstance.DataFields["BranchNum"].Value.ToString ();&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&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;/P&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://k2underground.com/aggbug.aspx?PostID=26984" width="1" height="1"&gt;</description><category domain="http://k2underground.com/blogs/pitchblack/archive/tags/Create+Dynamic+process++dynamic+slot+parallel+processing+ipc/default.aspx">Create Dynamic process  dynamic slot parallel processing ipc</category></item><item><title>InfoPath – Designing with performance in mind</title><link>http://k2underground.com/blogs/pitchblack/archive/2008/10/22/infopath-designing-with-performance-in-mind.aspx</link><pubDate>Wed, 22 Oct 2008 14:04:00 GMT</pubDate><guid isPermaLink="false">1c9bda6b-c6e6-4e79-8d32-b70ad0011ef7:26810</guid><dc:creator>Murphy</dc:creator><slash:comments>1</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://k2underground.com/blogs/pitchblack/rsscomments.aspx?PostID=26810</wfw:commentRss><comments>http://k2underground.com/blogs/pitchblack/archive/2008/10/22/infopath-designing-with-performance-in-mind.aspx#comments</comments><description>&lt;P style="MARGIN:0cm 0cm 10pt;" class=MsoNormal&gt;&lt;FONT size=3 face=Calibri&gt;Firstly apologies, there are no nice pictures in this blog just text but useful none the less I hope.&lt;/FONT&gt;&lt;/P&gt;
&lt;P style="MARGIN:0cm 0cm 10pt;" class=MsoNormal&gt;&lt;FONT size=3 face=Calibri&gt;My colleagues and I have recently been involved in a project that requires the use of InfoPath and in particular Form Services (InfoPath running through MOSS form services to provide a browser based form). What’s new about that I hear you ask, well nothing really, however the functional requirements and data dependencies were very high and InfoPath struggled massively. &lt;/FONT&gt;&lt;/P&gt;
&lt;P style="MARGIN:0cm 0cm 10pt;" class=MsoNormal&gt;&lt;FONT size=3 face=Calibri&gt;With this in mind I thought that I would share some of the key areas were we managed to make significant performance savings. Some are obvious and require little effort; others require more effort to implement but are worth the time.&lt;/FONT&gt;&lt;/P&gt;
&lt;P style="MARGIN:0cm 0cm 0pt 36pt;TEXT-INDENT:-18pt;mso-list:l0 level1 lfo1;" class=MsoListParagraphCxSpFirst&gt;&lt;B style="mso-bidi-font-weight:normal;"&gt;&lt;SPAN style="mso-bidi-font-family:Calibri;mso-bidi-theme-font:minor-latin;"&gt;&lt;SPAN style="mso-list:Ignore;"&gt;&lt;FONT size=3 face=Calibri&gt;1)&lt;/FONT&gt;&lt;SPAN style="FONT:7pt 'Times New Roman';"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/B&gt;&lt;B style="mso-bidi-font-weight:normal;"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;Reduce the size of your images &lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/B&gt;&lt;/P&gt;
&lt;P style="MARGIN:0cm 0cm 0pt 36pt;" class=MsoListParagraphCxSpMiddle&gt;&lt;FONT size=3 face=Calibri&gt;Our graphics legend at the UK K2 offices managed to reduce the size of the images we were using by 60% without losing too much quality.&lt;/FONT&gt;&lt;/P&gt;
&lt;P style="MARGIN:0cm 0cm 0pt 36pt;" class=MsoListParagraphCxSpMiddle&gt;&amp;nbsp;&lt;/P&gt;
&lt;P style="MARGIN:0cm 0cm 0pt 36pt;TEXT-INDENT:-18pt;mso-list:l0 level1 lfo1;" class=MsoListParagraphCxSpMiddle&gt;&lt;B style="mso-bidi-font-weight:normal;"&gt;&lt;SPAN style="mso-bidi-font-family:Calibri;mso-bidi-theme-font:minor-latin;"&gt;&lt;SPAN style="mso-list:Ignore;"&gt;&lt;FONT size=3 face=Calibri&gt;2)&lt;/FONT&gt;&lt;SPAN style="FONT:7pt 'Times New Roman';"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/B&gt;&lt;B style="mso-bidi-font-weight:normal;"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;Limit the number of external calls to SmartObject methods (web services).&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/B&gt;&lt;/P&gt;
&lt;P style="MARGIN:0cm 0cm 0pt 36pt;" class=MsoListParagraphCxSpMiddle&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;Each time you make a call to a web service this takes time to broker the transaction, apply any rules you have in the form and then re-render the form. It is possible that 3 web service calls will result in the page and your rules being run three times, with a large complex form this can be time consuming.&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P style="MARGIN:0cm 0cm 0pt 36pt;" class=MsoListParagraphCxSpMiddle&gt;&lt;o:p&gt;&lt;FONT size=3 face=Calibri&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P style="MARGIN:0cm 0cm 0pt 36pt;" class=MsoListParagraphCxSpMiddle&gt;&lt;FONT size=3 face=Calibri&gt;K2 provides a great mechanism help with this: Composite SmartObjects! If you are making several calls to load/save data (not lists of data) then why not create a Composite smart object that passes/returns all your data in one web service call. This will prevent unnecessary form renders.&lt;/FONT&gt;&lt;/P&gt;
&lt;P style="MARGIN:0cm 0cm 0pt 36pt;" class=MsoListParagraphCxSpMiddle&gt;&lt;o:p&gt;&lt;FONT size=3 face=Calibri&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P style="MARGIN:0cm 0cm 0pt 36pt;TEXT-INDENT:-18pt;mso-list:l0 level1 lfo1;" class=MsoListParagraphCxSpMiddle&gt;&lt;B style="mso-bidi-font-weight:normal;"&gt;&lt;SPAN style="mso-bidi-font-family:Calibri;mso-bidi-theme-font:minor-latin;"&gt;&lt;SPAN style="mso-list:Ignore;"&gt;&lt;FONT size=3 face=Calibri&gt;3)&lt;/FONT&gt;&lt;SPAN style="FONT:7pt 'Times New Roman';"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/B&gt;&lt;B style="mso-bidi-font-weight:normal;"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;Limit the use of Conditional formatting&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/B&gt;&lt;/P&gt;
&lt;P style="MARGIN:0cm 0cm 0pt 36pt;" class=MsoListParagraphCxSpMiddle&gt;&lt;FONT size=3 face=Calibri&gt;InfoPath provides the ability to apply conditional formatting to page elements i.e. hide/make visible controls. Form services will not always be able to work out client side if it should apply the format and how. This can result in a post back to the server, again a costly operation if this is a large form.&lt;/FONT&gt;&lt;/P&gt;
&lt;P style="MARGIN:0cm 0cm 0pt 36pt;" class=MsoListParagraphCxSpMiddle&gt;&lt;o:p&gt;&lt;FONT size=3 face=Calibri&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P style="MARGIN:0cm 0cm 0pt 36pt;TEXT-INDENT:-18pt;mso-list:l0 level1 lfo1;" class=MsoListParagraphCxSpMiddle&gt;&lt;SPAN style="mso-bidi-font-family:Calibri;mso-bidi-theme-font:minor-latin;"&gt;&lt;SPAN style="mso-list:Ignore;"&gt;&lt;FONT size=3 face=Calibri&gt;4)&lt;/FONT&gt;&lt;SPAN style="FONT:7pt 'Times New Roman';"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;B style="mso-bidi-font-weight:normal;"&gt;&lt;FONT size=3 face=Calibri&gt;Limit the number of cosmetic options you have in form&lt;/FONT&gt;&lt;/B&gt;&lt;/P&gt;
&lt;P style="MARGIN:0cm 0cm 0pt 36pt;" class=MsoListParagraphCxSpMiddle&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&lt;/SPAN&gt;By this I mean items such as changing the heading &lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&lt;/SPAN&gt;text of a table based on a user selection, as again these can result in a post back.&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P style="MARGIN:0cm 0cm 0pt 36pt;" class=MsoListParagraphCxSpMiddle&gt;&lt;o:p&gt;&lt;FONT size=3 face=Calibri&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P style="MARGIN:0cm 0cm 0pt 36pt;TEXT-INDENT:-18pt;mso-list:l0 level1 lfo1;" class=MsoListParagraphCxSpMiddle&gt;&lt;B style="mso-bidi-font-weight:normal;"&gt;&lt;SPAN style="mso-bidi-font-family:Calibri;mso-bidi-theme-font:minor-latin;"&gt;&lt;SPAN style="mso-list:Ignore;"&gt;&lt;FONT size=3 face=Calibri&gt;5)&lt;/FONT&gt;&lt;SPAN style="FONT:7pt 'Times New Roman';"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/B&gt;&lt;B style="mso-bidi-font-weight:normal;"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;Limit the amount of data held in the form&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/B&gt;&lt;/P&gt;
&lt;P style="MARGIN:0cm 0cm 0pt 36pt;" class=MsoListParagraphCxSpMiddle&gt;&lt;FONT size=3 face=Calibri&gt;The more data your form holds the slower it will be to render, only return what you need. This is particularly true when showing data in repeating tables and sections as form services creates quite a lot of html to render these.&lt;/FONT&gt;&lt;/P&gt;
&lt;P style="MARGIN:0cm 0cm 0pt 36pt;" class=MsoListParagraphCxSpMiddle&gt;&lt;o:p&gt;&lt;FONT size=3 face=Calibri&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P style="MARGIN:0cm 0cm 0pt 36pt;TEXT-INDENT:-18pt;mso-list:l0 level1 lfo1;" class=MsoListParagraphCxSpMiddle&gt;&lt;B style="mso-bidi-font-weight:normal;"&gt;&lt;SPAN style="mso-bidi-font-family:Calibri;mso-bidi-theme-font:minor-latin;"&gt;&lt;SPAN style="mso-list:Ignore;"&gt;&lt;FONT size=3 face=Calibri&gt;6)&lt;/FONT&gt;&lt;SPAN style="FONT:7pt 'Times New Roman';"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/B&gt;&lt;B style="mso-bidi-font-weight:normal;"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;Be careful with Drop-Down list boxes&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/B&gt;&lt;/P&gt;
&lt;P style="MARGIN:0cm 0cm 0pt 36pt;" class=MsoListParagraphCxSpMiddle&gt;&lt;FONT size=3 face=Calibri&gt;It is quite easy to bind a drop down list box to an external data source to get the list and forget the actual volume of data that may be returned. In particular if you select the option to ‘Show only entries with unique display names’. Form services uses a piece of script to manage this functionality, if the list is large this script takes a long time and is run each post back, this can cause massive delays. Filter your data server side to take this burden away from form services.&lt;/FONT&gt;&lt;/P&gt;
&lt;P style="MARGIN:0cm 0cm 0pt 36pt;" class=MsoListParagraphCxSpMiddle&gt;&lt;o:p&gt;&lt;FONT size=3 face=Calibri&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P style="MARGIN:0cm 0cm 0pt 36pt;TEXT-INDENT:-18pt;mso-list:l0 level1 lfo1;" class=MsoListParagraphCxSpMiddle&gt;&lt;B style="mso-bidi-font-weight:normal;"&gt;&lt;SPAN style="mso-bidi-font-family:Calibri;mso-bidi-theme-font:minor-latin;"&gt;&lt;SPAN style="mso-list:Ignore;"&gt;&lt;FONT size=3 face=Calibri&gt;7)&lt;/FONT&gt;&lt;SPAN style="FONT:7pt 'Times New Roman';"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/B&gt;&lt;B style="mso-bidi-font-weight:normal;"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;Upgrade the Browser&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/B&gt;&lt;/P&gt;
&lt;P style="MARGIN:0cm 0cm 10pt 36pt;" class=MsoListParagraphCxSpLast&gt;&lt;FONT size=3 face=Calibri&gt;IE6 can produce a horrible flicker as the page renders, IE7 appears to be much better at rendering the page.&lt;/FONT&gt;&lt;/P&gt;
&lt;P style="MARGIN:0cm 0cm 10pt;" class=MsoNormal&gt;&lt;FONT size=3 face=Calibri&gt;There are other items that you can consider but the above are a good starting point.&lt;/FONT&gt;&lt;/P&gt;
&lt;P style="MARGIN:0cm 0cm 10pt;" class=MsoNormal&gt;&lt;FONT size=3 face=Calibri&gt;An additional question to ask:&amp;nbsp;Is InfoPath correct for you? you should consider very carefully if InfoPath is right for your project, the initial perceived time savings soon disappear as the functional and performance &lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&lt;/SPAN&gt;requirements of the UI increase.&lt;/FONT&gt;&lt;/P&gt;
&lt;P style="MARGIN:0cm 0cm 10pt;" class=MsoNormal&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;And one small thanks to Hoshy who pointed out I should not use ‘Designing Peformant InfoPath Forms’ as the title for my blog post as although the IT world use the term Performant a lot it is not actually a word &lt;/FONT&gt;&lt;SPAN style="FONT-FAMILY:Wingdings;mso-ascii-font-family:Calibri;mso-ascii-theme-font:minor-latin;mso-hansi-font-family:Calibri;mso-hansi-theme-font:minor-latin;mso-char-type:symbol;mso-symbol-font-family:Wingdings;"&gt;&lt;SPAN style="mso-char-type:symbol;mso-symbol-font-family:Wingdings;"&gt;J&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://k2underground.com/aggbug.aspx?PostID=26810" width="1" height="1"&gt;</description></item></channel></rss>