<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://k2underground.com/utility/FeedStylesheets/atom.xsl" media="screen"?><feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en"><title type="html">Ramble On</title><subtitle type="html" /><id>http://k2underground.com/blogs/rambleon/atom.aspx</id><link rel="alternate" type="text/html" href="http://k2underground.com/blogs/rambleon/default.aspx" /><link rel="self" type="application/atom+xml" href="http://k2underground.com/blogs/rambleon/atom.aspx" /><generator uri="http://communityserver.org" version="4.1.40407.4157">Community Server</generator><updated>2008-11-14T13:03:00Z</updated><entry><title>Changing the 'Created By' user in SharePoint</title><link rel="alternate" type="text/html" href="/blogs/rambleon/archive/2010/02/19/changing-the-created-by-user-in-sharepoint.aspx" /><link rel="enclosure" type="application/force-download" length="506093" href="http://k2underground.com/cfs-file.ashx/__key/CommunityServer.Components.PostAttachments/00.00.03.54.72/CreatedBy.zip" /><id>/blogs/rambleon/archive/2010/02/19/changing-the-created-by-user-in-sharepoint.aspx</id><published>2010-02-19T10:39:00Z</published><updated>2010-02-19T10:39:00Z</updated><content type="html">&lt;p&gt;This is something that comes up quite often. You write a document to a list or library using the K2 &amp;lsquo;SharePoint Documents&amp;rsquo; wizard and the default &amp;lsquo;Created By&amp;rsquo; and &amp;lsquo;Modified&amp;rsquo; by will show as the user running the K2HostServer Windows service. This is because essentially the workflow created the document and not the user. &lt;/p&gt;
&lt;p&gt;&lt;a href="http://k2underground.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/rambleon/3808.1.jpg"&gt;&lt;img src="http://k2underground.com/resized-image.ashx/__size/550x0/__key/CommunityServer.Blogs.Components.WeblogFiles/rambleon/3808.1.jpg" border="0" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;See image above, the document is shown as uploaded by the system account, that is not very helpful to the end user.&lt;/p&gt;
&lt;p&gt;If you would like to show that in fact the workflow originator is the creator of the document, it can be done in many ways other than the approach explained below. But in certain instances it may be what you require.&lt;/p&gt;
&lt;p&gt;In your workflow you will need to add a reference to the CreatedByUpdater.dll in the &lt;a title="solution below" href="http://k2underground.com/cfs-file.ashx/__key/CommunityServer.Components.PostAttachments/00.00.03.54.72/CreatedBy.zip"&gt;solution below&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://k2underground.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/rambleon/2045.2.jpg"&gt;&lt;img src="http://k2underground.com/resized-image.ashx/__size/550x0/__key/CommunityServer.Blogs.Components.WeblogFiles/rambleon/2045.2.jpg" border="0" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Note, this code is by no means production ready; it is just an illustration of what is possible and a good starting point if you would like to extend the functionality. The class has two methods, one to update all documents in a document library/custom list and another to update a specific item in a document library or list.&lt;/p&gt;
&lt;p&gt;Before the &amp;lsquo;SharePoint Documents&amp;rsquo; event wizard use a datamapper and set a datafield with the originators details in the format [DOMAIN]\[USERNAME]. After the &amp;lsquo;SharePoint Documents&amp;rsquo; use a K2 reference event and call the relevant constructor.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://k2underground.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/rambleon/1106.3.jpg"&gt;&lt;img src="http://k2underground.com/resized-image.ashx/__size/550x0/__key/CommunityServer.Blogs.Components.WeblogFiles/rambleon/1106.3.jpg" border="0" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;In this instance I want to update a specific document. Now set the required parameters.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://k2underground.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/rambleon/5344.c.jpg"&gt;&lt;img src="http://k2underground.com/resized-image.ashx/__size/550x0/__key/CommunityServer.Blogs.Components.WeblogFiles/rambleon/5344.c.jpg" border="0" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Note don&amp;#39;t have any spaces in fields such as &amp;lsquo;listorlibrary&amp;rsquo; name. Your process will now look something like this.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://k2underground.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/rambleon/7140.process.jpg"&gt;&lt;img src="http://k2underground.com/resized-image.ashx/__size/550x0/__key/CommunityServer.Blogs.Components.WeblogFiles/rambleon/7140.process.jpg" border="0" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;And now when a document gets created it will be more visible who the document owner is for that document. See the difference between the first document and the second? Much better!!!&lt;/p&gt;
&lt;p&gt;&lt;a href="http://k2underground.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/rambleon/6406.seenamechanged.jpg"&gt;&lt;img src="http://k2underground.com/resized-image.ashx/__size/550x0/__key/CommunityServer.Blogs.Components.WeblogFiles/rambleon/6406.seenamechanged.jpg" border="0" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Things to note:&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;- It is not the easiest thing to get the document Id for the newly created document. There are many ways to do it which can be discussed with your regional K2 contacts.&lt;br /&gt;-Code is not production ready and K2 takes no responsibility for use of this code in production. I am not even sure if this would be considered best practise, the idea is to show what is possible.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://k2underground.com/aggbug.aspx?PostID=35472" width="1" height="1"&gt;</content><author><name>nicholas.kotze@k2workflow.com</name><uri>http://k2underground.com/members/nicholas.kotze_4000_k2workflow.com/default.aspx</uri></author></entry><entry><title>Adding colon separated sting value of users to a SharePoint group</title><link rel="alternate" type="text/html" href="/blogs/rambleon/archive/2010/02/16/reference-event-adding-colon-separated-sting-value-of-users-to-a-sharepoint-group.aspx" /><link rel="enclosure" type="application/x-zip-compressed" length="508062" href="http://k2underground.com/cfs-file.ashx/__key/CommunityServer.Components.PostAttachments/00.00.03.54.30/CreateSharePointGroupUsers.zip" /><id>/blogs/rambleon/archive/2010/02/16/reference-event-adding-colon-separated-sting-value-of-users-to-a-sharepoint-group.aspx</id><published>2010-02-16T14:18:00Z</published><updated>2010-02-16T14:18:00Z</updated><content type="html">&lt;p class="MsoNormal" style="margin:0cm 0cm 0pt;"&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;The code attached does work, but doesn&amp;rsquo;t take into account any exception handling, so use at own risk. The main objective is for your developer to see how to create a reference event in blackpoint to do custom functionality.&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0cm 0cm 0pt;"&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0cm 0cm 0pt;"&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;Steps to register if you would like to use the service:&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0cm 0cm 0pt;"&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoListParagraph" style="text-indent:-18pt;margin:0cm 0cm 0pt 36pt;mso-list:l0 level1 lfo1;"&gt;&lt;span style="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="font-family:Calibri;font-size:small;"&gt;Extract the zip file attached.&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoListParagraph" style="text-indent:-18pt;margin:0cm 0cm 0pt 36pt;mso-list:l0 level1 lfo1;"&gt;&lt;span style="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="font-family:Calibri;font-size:small;"&gt;In K2 studio in the process designer add a Reference to the .dll found in the solution attached. .dll located at CreateSharePointGroupUsers\CreatedBy\bin\Debug\ called &amp;lsquo;CreateSharePointGroupUser.dll&amp;rsquo;. You will see References at the top menu bar.&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoListParagraph" style="text-indent:-18pt;margin:0cm 0cm 0pt 36pt;mso-list:l0 level1 lfo1;"&gt;&lt;span style="mso-fareast-font-family:Calibri;"&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;Use the &amp;lsquo;Reference Event&amp;rsquo; wizard and a reference to the constructor located under &amp;lsquo;CreateSharePointUser&amp;rsquo;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoListParagraph" style="text-indent:-18pt;margin:0cm 0cm 0pt 36pt;mso-list:l0 level1 lfo1;"&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoListParagraph" style="text-indent:-18pt;margin:0cm 0cm 0pt 36pt;mso-list:l0 level1 lfo1;"&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;&lt;a href="http://k2underground.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/rambleon/2161.reference-event.jpg"&gt;&lt;img src="http://k2underground.com/resized-image.ashx/__size/550x0/__key/CommunityServer.Blogs.Components.WeblogFiles/rambleon/2161.reference-event.jpg" border="0" alt="" /&gt;&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoListParagraph" style="text-indent:-18pt;margin:0cm 0cm 0pt 36pt;mso-list:l0 level1 lfo1;"&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoListParagraph" style="text-indent:-18pt;margin:0cm 0cm 0pt 36pt;mso-list:l0 level1 lfo1;"&gt;&lt;span style="mso-fareast-font-family:Calibri;"&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;Add the relevant parameters(it takes the users datafield representing users only from a multi-value SharePoint column, groupname &amp;ndash; the name of the group you want to add the users to in SharePoint and SharePoint URL &amp;ndash; in the format &lt;/span&gt;&lt;a href="http://[yoursitename][portnumberifapplicable"&gt;&lt;span style="font-family:Calibri;color:#0000ff;font-size:small;"&gt;http://[yoursitename]:[portnumberifapplicable&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;]&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoListParagraph" style="text-indent:-18pt;margin:0cm 0cm 0pt 36pt;mso-list:l0 level1 lfo1;"&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoListParagraph" style="text-indent:-18pt;margin:0cm 0cm 0pt 36pt;mso-list:l0 level1 lfo1;"&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoListParagraph" style="text-indent:-18pt;margin:0cm 0cm 0pt 36pt;mso-list:l0 level1 lfo1;"&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;&lt;a href="http://k2underground.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/rambleon/0121.parameters.jpg"&gt;&lt;img src="http://k2underground.com/resized-image.ashx/__size/550x0/__key/CommunityServer.Blogs.Components.WeblogFiles/rambleon/0121.parameters.jpg" border="0" alt="" /&gt;&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0cm 0cm 0pt;"&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0cm 0cm 0pt;"&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;The sourcecode for the full solution is available as an &lt;a target="_blank" href="http://k2underground.com/cfs-file.ashx/__key/CommunityServer.Components.PostAttachments/00.00.03.54.30/CreateSharePointGroupUsers.zip" title="attachment below"&gt;attachment below&lt;/a&gt;.&lt;/span&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://k2underground.com/aggbug.aspx?PostID=35430" width="1" height="1"&gt;</content><author><name>nicholas.kotze@k2workflow.com</name><uri>http://k2underground.com/members/nicholas.kotze_4000_k2workflow.com/default.aspx</uri></author></entry><entry><title>K2 blackpearl and Microsoft Dynamics CRM 4 Integration - Chapter 3</title><link rel="alternate" type="text/html" href="/blogs/rambleon/archive/2010/02/10/k2-blackpearl-and-microsoft-dynamics-crm-4-integration-chapter-3.aspx" /><id>/blogs/rambleon/archive/2010/02/10/k2-blackpearl-and-microsoft-dynamics-crm-4-integration-chapter-3.aspx</id><published>2010-02-10T19:46:03Z</published><updated>2010-02-10T19:46:03Z</updated><content type="html">&lt;p&gt;In this chapter of our CRM series we are going to be building an end to end K2 blackpearl process that integrates with Microsoft Dynamics CRM.&lt;/p&gt;  &lt;p&gt;The scenario that we are building is a simple lead validation process where for each lead that is captured in CRM we would like to have a process that ensures that a sales person is assigned the a task to review the lead and choose whether to accept the lead or assign to the global sales team to review and reallocate. &lt;/p&gt;  &lt;p&gt;The key technical areas that we will be looking to demonstrate are:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Starting a K2 process on an event within Dynamics CRM&lt;/li&gt;    &lt;li&gt;Assigning a task to a CRM user and using the native CRM forms as the client pages for that K2 task.&lt;/li&gt;    &lt;li&gt;Adding and modifying CRM information via K2 SmartObjects&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h2&gt;Step 0 – Installing the Prerequisites &lt;/h2&gt;  &lt;p&gt;Before we can start building our solution we must ensure that we have the necessary components installed. Obviously we need an environment with K2 blackpearl and Dynamics CRM 4 as a bare minimum. Additionally we need to;&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Install the custom workflow activity for K2 that we discussed in &lt;a href="http://www.k2underground.com/blogs/rambleon/archive/2009/02/04/k2-blackpearl-and-microsoft-dynamics-crm-4-integration-chapter-1.aspx"&gt;Chapter 1&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;Install the &lt;a href="http://www.k2underground.com/groups/microsoft_dynamics_crm_4_service_broker/default.aspx"&gt;Dynamics CRM 4 Service Broker&lt;/a&gt; that is available on blackmarket&lt;/li&gt;    &lt;li&gt;Download the &lt;a href="http://www.k2underground.com/groups/microsoft_dynamics_crm_4_-_blackpearl_integration/default.aspx"&gt;K2 CRM web services&lt;/a&gt; from blackmarket. &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Firstly let’s start by installing the K2 CRM web service that you downloaded from blackmarket. Create a website (mine is localhost:9993) and ensure that the K2CRMService.asmx service is available. Six methods should be exposed.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://k2underground.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/rambleon.metablogapi/6811.clip_5F00_image002_5F00_4A5C4940.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/rambleon.metablogapi/5353.clip_5F00_image002_5F00_thumb_5F00_48AB7D6C.jpg" width="228" height="244" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;We’ll use these services later when using the CRM forms as client pages in our process.&lt;/p&gt;  &lt;p&gt;Secondly we need to install the Dynamics CRM 4 Service Broker.&lt;/p&gt;  &lt;p&gt;Once you have downloaded the Service Broker and extracted its contents you will need to copy the following two files to the ServiceBroker directory in K2 (usually found at C:\Program Files (x86)\K2 blackpearl\ServiceBroker)&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;K2.GlobalAlliances.Prototypes.DynamicsCRMServices.dll&lt;/li&gt;    &lt;li&gt;K2.GlobalAlliances.Prototypes.DynamicsCRMServices.dll.config&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Once there edit the config file and include the details of your CRM administration user or similar. This user is the default user under which the service broker will execute. The reason that it is defined in the service is to eliminate the need give the K2 service account permissions to Dynamics CRM. In future versions of the broker this configuration information will moved out of the configuration file and into the service instance.&lt;/p&gt;  &lt;p&gt;The service broker is built atop of the CRM web services and as such has the ability to do impersonation (&lt;a href="http://msdn.microsoft.com/en-us/library/cc151052.aspx"&gt;CRM SDK on impersonation&lt;/a&gt;). If you wish to use the impersonation feature you will need to ensure that the user specified in the config file is a member of the PrivUsersGroup.&lt;/p&gt;  &lt;p&gt;Now it’s time to register an instance of the service type. I’m going to use the SmartObject Service Tester application to do this. You can find this application in the ServiceBroker directory or if you are using 4.5 in the ..\K2 blackpearl\bin directory.&lt;/p&gt;  &lt;p&gt;Click on the Register ServiceType button at the top of the screen. In the dialog select the DynamicsCRMServices namespace in the dropdown. Define a System Name and a Display Name then click Add.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://k2underground.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/rambleon.metablogapi/5661.clip_5F00_image004_5F00_795E8517.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/rambleon.metablogapi/1057.clip_5F00_image004_5F00_thumb_5F00_50DFA303.jpg" width="469" height="219" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Now that our Service Type is in place we can create an instance of it that points at our CRM organisation. &lt;/p&gt;  &lt;p&gt;Click the Register ServiceInstance button at the top of screen. Select the newly defined Service Type from the Service Types dropdown.&lt;/p&gt;  &lt;p&gt;In the Service Keys section define the following:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;b&gt;CRM Server&lt;/b&gt; – the base URL to your CRM website e.g. &lt;a href="http://localhost:6666"&gt;http://localhost:6666&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;b&gt;Organisation&lt;/b&gt; – the name of your organisation the system name, not the friendly name e.g. K2Demo&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;a href="http://k2underground.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/rambleon.metablogapi/8360.clip_5F00_image006_5F00_2F13CA72.jpg"&gt;&lt;img style="border-bottom:0px;border-left:0px;display:inline;border-top:0px;border-right:0px;" title="clip_image006" border="0" alt="clip_image006" src="http://k2underground.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/rambleon.metablogapi/6710.clip_5F00_image006_5F00_thumb_5F00_6DF52540.jpg" width="459" height="298" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;NOTE:&lt;/b&gt; If you leave the impersonation box ticked the service will use the user details specified in the config file to conduct the discovery of CRM. If you want to use a different user to do the service instance discovery then uncheck the Impersonate checkbox and in the User Name text box enter a domain\user and the user’s password in the password text box.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://k2underground.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/rambleon.metablogapi/2500.clip_5F00_image008_5F00_6C44596C.jpg"&gt;&lt;img style="border-bottom:0px;border-left:0px;display:inline;border-top:0px;border-right:0px;" title="clip_image008" border="0" alt="clip_image008" src="http://k2underground.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/rambleon.metablogapi/6131.clip_5F00_image008_5F00_thumb_5F00_11CDD6CE.jpg" width="456" height="294" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;The service instance will then go and discover the entity structure in the selected CRM Organisation. Once complete you will be able to expand the tree under the newly created Service Instance to see a list of the entities (both OOB and custom) in CRM. &lt;/p&gt;  &lt;p&gt;&lt;a href="http://k2underground.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/rambleon.metablogapi/6574.clip_5F00_image010_5F00_77213AB4.jpg"&gt;&lt;img style="border-bottom:0px;border-left:0px;display:inline;border-top:0px;border-right:0px;" title="clip_image010" border="0" alt="clip_image010" src="http://k2underground.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/rambleon.metablogapi/8168.clip_5F00_image010_5F00_thumb_5F00_412C1FCD.jpg" width="244" height="147" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;With this in place you can now create SmartObjects from your CRM entities.&lt;/p&gt;  &lt;p&gt;If you have multiple organisations you can create an instance of the service for each organisation.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h2&gt;Step 1 – Create CRM SmartObjects&lt;/h2&gt;  &lt;p&gt;With the prerequisites in place we can now start building our solution. For this simple solution we are going to create two SmartObjects, one for our Lead entity and another for our Note entity.&lt;/p&gt;  &lt;p&gt;Entities in CRM tend to have a large number of attributes some well in excess of 150. For example the Lead entity has 163 attributes exposed by the service. When creating CRM SmartObjects I tend to remove those attributes that I know I will not use. For example when creating a Lead SmartObject I don’t map the any of the Address 2 : xxx fields.&lt;/p&gt;  &lt;p&gt;The service exposes 6 methods for each SmartObject. The names for these methods are self-explanatory except for perhaps Query List. This is a list method that takes a FetchXML string as an input parameter and will return a list of entity instances matching the criteria. &lt;/p&gt;  &lt;p&gt;&lt;a href="http://k2underground.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/rambleon.metablogapi/5432.clip_5F00_image012_5F00_7BA71FA1.jpg"&gt;&lt;img style="border-bottom:0px;border-left:0px;display:inline;border-top:0px;border-right:0px;" title="clip_image012" border="0" alt="clip_image012" src="http://k2underground.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/rambleon.metablogapi/1323.clip_5F00_image012_5F00_thumb_5F00_6504D15A.jpg" width="494" height="194" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Each service method has two optional input properties, CRM Read Type and Impersonate CRM User.&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;· &lt;b&gt;CRM Read Type&lt;/b&gt; – Due to the complex nature of CRM data and its interrelationships a field can often have both a display and reference value. For example the Modified By column can return both the display name of the user who last modified the entity e.g. Jonathan King, as well as the Guid that represents that user in the systemuser entity in CRM. The CRM Read Type property determines the type of information returned from the read of list method. Accepted values are: complex, reference &amp;amp; values (default)&lt;/li&gt;    &lt;ul&gt;     &lt;li&gt;&lt;b&gt;values&lt;/b&gt; – returns the display value e.g. Jonathan King&lt;/li&gt;      &lt;li&gt;&lt;b&gt;reference &lt;/b&gt;– return the reference value e.g. {172B60F4-E8DC-DE11-9B83-00155D010709}&lt;/li&gt;      &lt;li&gt;&lt;b&gt;complex&lt;/b&gt; – will return a # separated values e.g. {172B60F4-E8DC-DE11-9B83-00155D010709}#Jonathan King&lt;/li&gt;   &lt;/ul&gt;    &lt;li&gt;&lt;b&gt;Impersonate CRM User&lt;/b&gt; – this input property takes a Guid that represents a user in the CRM systemuser entity. By passing in the Guid that represents a user the service will impersonate as that user when executing the method. &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;With our SmartObjects created we can now start building our process.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h2&gt;Step 2 – Create the K2 Process &lt;/h2&gt;  &lt;p&gt;We’ll start by creating a new process called K2 Lead Review.&lt;/p&gt;  &lt;p&gt;The first thing we’ll do with our process is create two data fields. These two data fields are important when designing processes that are started from events in CRM as they will hold the Guid of the entity instance that started the process, in this case the ID of the Lead, and the name of the type of entity it is e.g. lead.&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Entity Id (string) &lt;/li&gt;    &lt;li&gt;Entity Name (string)&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;a href="http://k2underground.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/rambleon.metablogapi/2843.clip_5F00_image014_5F00_7C4FD5CB.jpg"&gt;&lt;img style="border-bottom:0px;border-left:0px;display:inline;border-top:0px;border-right:0px;" title="clip_image014" border="0" alt="clip_image014" src="http://k2underground.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/rambleon.metablogapi/3362.clip_5F00_image014_5F00_thumb_5F00_527C350B.jpg" width="191" height="196" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Once created you can build out the rest of the process until it looks like the following.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://k2underground.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/rambleon.metablogapi/2318.clip_5F00_image016_5F00_7805B26C.jpg"&gt;&lt;img style="border-bottom:0px;border-left:0px;display:inline;border-top:0px;border-right:0px;" title="clip_image016" border="0" alt="clip_image016" src="http://k2underground.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/rambleon.metablogapi/5367.clip_5F00_image016_5F00_thumb_5F00_04EF6CB1.jpg" width="479" height="360" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;For the remainder of this blog post we will be completing the Sales Person Review &amp;amp; Lead Accepted activities.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h2&gt;Step 3 – Preparing CRM for the Sales Person Review Activity&lt;/h2&gt;  &lt;p&gt;The Sales Person Review activity will hold a single Client Event that will assign a task to a user and provide them a user experience to action the task. In our example today that user experience will be the native CRM form for our Lead.&lt;/p&gt;  &lt;p&gt;There are many benefits to using the forms experience provided by CRM as our client page. For an end user who is comfortable with CRM and perhaps spends a large portion of their day working in CRM we shouldn’t force them into a new user experience simply to complete a task assigned to them from a K2 process. We want to ensure their can work in an environment they know and are comfortable with. &lt;/p&gt;  &lt;p&gt;From a technical standpoint, Dynamics CRM provides a fantastic platform on which to build solutions. One element of that platform is an easy to use, browser based forms experience that can be customised very quickly with a minimum of effort. Why build an ASP.NET form when we have this tremendous asset already in place.&lt;/p&gt;  &lt;p&gt;That being said, in future posts we will look at using custom forms such as Silverlight, ASP.NET &amp;amp; InfoPath.&lt;/p&gt;  &lt;p&gt;In order to use the native CRM form for our lead we have to make a few changes to the Lead entity to accommodate our integration.&lt;/p&gt;  &lt;p&gt;Open a browser and go into Dynamics CRM. Head to the Settings tab and Customizations. Select the Customize Entities.&lt;/p&gt;  &lt;p&gt;From the list of entities find Lead and double click on it. &lt;/p&gt;  &lt;p&gt;&lt;a href="http://k2underground.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/rambleon.metablogapi/4212.clip_5F00_image018_5F00_151B34AA.jpg"&gt;&lt;img style="border-bottom:0px;border-left:0px;display:inline;border-top:0px;border-right:0px;" title="clip_image018" border="0" alt="clip_image018" src="http://k2underground.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/rambleon.metablogapi/4274.clip_5F00_image018_5F00_thumb_5F00_7A6E9890.jpg" width="494" height="355" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;In customising the Lead entity we are going to:&lt;/p&gt;  &lt;p&gt;Add two new attributes. &lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;b&gt;new_k2actions&lt;/b&gt; – will hold the available actions for a give client event      &lt;br /&gt;Display Name: K2 Actions      &lt;br /&gt;Type: picklist      &lt;br /&gt;Items: 1 – Not Applicable (these will be dynamically loaded by the web service)      &lt;br /&gt;&lt;a href="http://k2underground.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/rambleon.metablogapi/5661.clip_5F00_image020_5F00_48372279.jpg"&gt;&lt;img style="border-bottom:0px;border-left:0px;display:inline;border-top:0px;border-right:0px;" title="clip_image020" border="0" alt="clip_image020" src="http://k2underground.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/rambleon.metablogapi/0827.clip_5F00_image020_5F00_thumb_5F00_7473A95D.jpg" width="492" height="232" /&gt;&lt;/a&gt;      &lt;br /&gt;&lt;/li&gt;    &lt;li&gt;&lt;b&gt;new_k2serialnumber&lt;/b&gt; – will hold the serial number of the client event      &lt;br /&gt;Display Name: K2 Serial Number      &lt;br /&gt;Type: nvarchar&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Then modify the main application form.&lt;/p&gt;  &lt;p&gt;Add the K2 Actions attribute to the Name section of the General tab. Really you can place it where you like on the form. &lt;/p&gt;  &lt;p&gt;&lt;a href="http://k2underground.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/rambleon.metablogapi/8863.clip_5F00_image022_5F00_2BC994BF.jpg"&gt;&lt;img style="border-bottom:0px;border-left:0px;display:inline;border-top:0px;border-right:0px;" title="clip_image022" border="0" alt="clip_image022" src="http://k2underground.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/rambleon.metablogapi/7183.clip_5F00_image022_5F00_thumb_5F00_7101EBE8.jpg" width="486" height="139" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;With the attribute added to the form we now need to add some plumbing. &lt;/p&gt;  &lt;p&gt;What we want to happen is that when a user opens a worklist item for Sales Person Review task is that this form opens and displays the related actions in the K2 Actions picklist. To action the worklist item they will select a suitable action and save the form.&lt;/p&gt;  &lt;p&gt;In order to achieve this we need:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;pass the form the serial number (SN) that represents the K2 worklist item&lt;/li&gt;    &lt;li&gt;retrieve the list of available actions for that worklist item&lt;/li&gt;    &lt;li&gt;send the selected action back to the K2 server when the Lead is saved&lt;/li&gt; &lt;/ul&gt;  &lt;h3&gt;Serial Number&lt;/h3&gt;  &lt;p&gt;As you would be aware, in a normal K2 client event the serial number (SN) is added as a query string property to the URL. The same approach can be used when working with native CRM forms as they are after all just ASP.NET pages. There is one caveat. For security reason CRM doesn’t allow you to pass arbitrary query string values to a form. Any query string property must have a matching field defined in the entity. The field doesn’t necessarily have to be displayed on the form however. This is why we have added the K2 Serial Number attribute to our Lead but do not display it on the form. &lt;/p&gt;  &lt;p&gt;We will go into how we get the serial number to the form in Step 4.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h3&gt;Retrieving Actions&lt;/h3&gt;  &lt;p&gt;Now when the form opens we want to retrieve the client event actions relevant to the current user. To do this we use a web service call (K2CRMService.asmx – see Step 0 - Installing Prerequisites) that passes the serial number to the K2 server that in turn returns a list of actions.&lt;/p&gt;  &lt;p&gt;Click on Form Properties and edit the OnLoad event.&lt;/p&gt;  &lt;p&gt;The Onload event is going a number of things that I’ll outline in bullet points. You can go through source code in your own time. &lt;a href="http://www.k2underground.com/groups/microsoft_dynamics_crm_4_-_blackpearl_integration/default.aspx"&gt;Download the JavaScript here&lt;/a&gt;.&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Retrieve the query string value of new_k2serialnumber (we’ll set this later on in Step 4)&lt;/li&gt;    &lt;li&gt;If you are using pre 4.5 it will extract the superfluous SN= &lt;/li&gt;    &lt;li&gt;It will then call the web service &amp;quot;/K2CRMService.asmx/GetWorklistItem” passing in serial number and the entityid&lt;/li&gt;    &lt;li&gt;Using the result of the web service populate the K2 Actions picklist.&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;a href="http://k2underground.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/rambleon.metablogapi/7608.clip_5F00_image024_5F00_3A4490E4.jpg"&gt;&lt;img style="border-bottom:0px;border-left:0px;display:inline;border-top:0px;border-right:0px;" title="clip_image024" border="0" alt="clip_image024" src="http://k2underground.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/rambleon.metablogapi/2308.clip_5F00_image024_5F00_thumb_5F00_7F7CE80D.jpg" width="405" height="415" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h3&gt;Actioning the Worklist Item&lt;/h3&gt;  &lt;p&gt;In order to action the worklist item when the user saves the form we need to add some JavaScript to the OnSave event. &lt;/p&gt;  &lt;p&gt;Click on Form Properties and edit the OnSave event.&lt;/p&gt;  &lt;p&gt;What happens in this event is:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;We check that an action has been selected in K2 Actions picklist&lt;/li&gt;    &lt;li&gt;We call the web service &amp;quot;/K2CRMService.asmx/ ActionClientEvent” passing in serial number, the action the entityid and entity name&lt;/li&gt;    &lt;li&gt;The K2 Actions picklist and K2 Serial Number attribute are cleared&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;a href="http://k2underground.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/rambleon.metablogapi/2313.clip_5F00_image026_5F00_718A5678.jpg"&gt;&lt;img style="border-bottom:0px;border-left:0px;display:inline;border-top:0px;border-right:0px;" title="clip_image026" border="0" alt="clip_image026" src="http://k2underground.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/rambleon.metablogapi/4885.clip_5F00_image026_5F00_thumb_5F00_489F416F.jpg" width="399" height="411" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;We have now configured the Lead entity so save and close the form and the entity customization. &lt;/p&gt;  &lt;p&gt;Publish the customizations.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h3&gt;Retrieve the Lead Form URL&lt;/h3&gt;  &lt;p&gt;The last step we need to do before going back to design the remainder of our K2 process is to get the URL of our Lead form. Return to the Sales section and Leads. Select and open a Lead. To get the URL press F11 to go to full screen then place your mouse at the top of the screen to reveal the address bar. The URL will look very similar to the one below.&lt;/p&gt;  &lt;p&gt;http://localhost:6666/K2Demo/sfa/leads/edit.aspx?id={852B60F4-E8DC-DE11-9B83-00155D010709}&lt;/p&gt;  &lt;p&gt;Copy and paste the URL to Notepad as we’ll need it very shortly.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h2&gt;Step 4 – Implementing Sales Person Review Activity&lt;/h2&gt;  &lt;p&gt;Return to K2 Designer for Visual Studio and our K2 Lead Review process.&lt;/p&gt;  &lt;p&gt;There’s every chance we’ll build multiple processes against our Lead entity so let’s create a configuration variable for our Lead form URL. Go to the Object Browser and the Environment tab and create a new field.&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;b&gt;Field Name&lt;/b&gt; &lt;b&gt;–&lt;/b&gt; CRM Form – Lead&lt;/li&gt;    &lt;li&gt;&lt;b&gt;Item Type&lt;/b&gt; &lt;b&gt;–&lt;/b&gt; Miscellaneous Field&lt;/li&gt;    &lt;li&gt;&lt;b&gt;Field Value&lt;/b&gt; &lt;b&gt;-&lt;/b&gt; http://localhost:6666/K2Demo/sfa/leads/edit.aspx?id=      &lt;br /&gt;Remove the Guid from the URL you copied in the previous sections. We’ll add that later.&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;a href="http://k2underground.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/rambleon.metablogapi/4010.clip_5F00_image028_5F00_1BA9DE94.jpg"&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/rambleon.metablogapi/2604.clip_5F00_image028_5F00_thumb_5F00_2D764C94.jpg" width="455" height="239" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h3&gt;Creating the Client Event &lt;/h3&gt;  &lt;p&gt;From the Toolbox drag a Default Client Event onto the Sales Person Review Activity.&lt;/p&gt;  &lt;p&gt;In the second page of the Client Event wizard provide a business friendly Event Name. In our case this will be Sales Person Review.&lt;/p&gt;  &lt;p&gt;Tick the Web Page checkbox. &lt;/p&gt;  &lt;p&gt;In the Web Page URL do the following:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;add the &lt;b&gt;CRM Form – Lead&lt;/b&gt; environment variable &lt;/li&gt;    &lt;li&gt;add the &lt;b&gt;Entity ID&lt;/b&gt; data field directly after it (no space)&lt;/li&gt;    &lt;li&gt;the add the string &lt;b&gt;&amp;amp;new_k2serialnumber=&lt;/b&gt;&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;At this point our URL should look like the following.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://k2underground.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/rambleon.metablogapi/4857.clip_5F00_image030_5F00_32E4BD38.jpg"&gt;&lt;img style="border-bottom:0px;border-left:0px;display:inline;border-top:0px;border-right:0px;" title="clip_image030" border="0" alt="clip_image030" src="http://k2underground.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/rambleon.metablogapi/2781.clip_5F00_image030_5F00_thumb_5F00_23CDDE5E.jpg" width="450" height="47" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;I’m going to do the following steps twice. Once for blackpearl pre the 4.5 release and one for blackpearl 4.5 Both result in the same outcome it’s just slightly easier to achieve in 4.5.&lt;/p&gt;  &lt;p&gt;Select the one that is relevant to you.&lt;/p&gt;  &lt;h3&gt;Defining the Client Event Form Pre 4.5&lt;/h3&gt;  &lt;ul&gt;   &lt;li&gt;Ensure that the Append serial number to URL (s) is ticked&lt;/li&gt;    &lt;li&gt;Click the Next button on the Wizard&lt;/li&gt;    &lt;li&gt;On the Event Notification Settings page click the back button to return to the previous page&lt;/li&gt;    &lt;li&gt;You will notice in the URL that there is an &amp;amp; between new_k2serialnumber= and the wizard added serial number. Delete this rogue &amp;amp;.&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Your Web Page URL should now look like this&lt;/p&gt;  &lt;p&gt;&lt;a href="http://k2underground.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/rambleon.metablogapi/8473.clip_5F00_image032_5F00_2289457F.jpg"&gt;&lt;img style="border-bottom:0px;border-left:0px;display:inline;border-top:0px;border-right:0px;" title="clip_image032" border="0" alt="clip_image032" src="http://k2underground.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/rambleon.metablogapi/4670.clip_5F00_image032_5F00_thumb_5F00_11A14F37.jpg" width="454" height="47" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h3&gt;Defining the Client Event Form in 4.5&lt;/h3&gt;  &lt;p&gt;&lt;b&gt;Remember these instructions are only if you are running blackpearl 4.5.&lt;/b&gt;&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Open the K2 Object Browser by clicking the ellipsis button&lt;/li&gt;    &lt;li&gt;After new_k2serialnumber= you want to add the Process Instance ID     &lt;br /&gt;&lt;a href="http://k2underground.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/rambleon.metablogapi/6644.clip_5F00_image034_5F00_45694588.jpg"&gt;&lt;img style="border-bottom:0px;border-left:0px;display:inline;border-top:0px;border-right:0px;" title="clip_image034" border="0" alt="clip_image034" src="http://k2underground.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/rambleon.metablogapi/8132.clip_5F00_image034_5F00_thumb_5F00_6D982C42.jpg" width="179" height="324" /&gt;&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;Then add an underscore _&lt;/li&gt;    &lt;li&gt;Then open the K2 Object Browser again and add the Activity Destination Instance Id&lt;/li&gt;    &lt;li&gt;Make sure the Append serial number to URL (s) checkbox is NOT ticked.&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;This way we create the K2 serial number ourselves and don’t rely upon the wizard doing it for us. Unfortunately this option isn’t available to us pre blackpearl 4.5.&lt;/p&gt;  &lt;p&gt;The end of the Web Page URL should now look like the following.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://k2underground.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/rambleon.metablogapi/4118.clip_5F00_image036_5F00_6ECC9F54.jpg"&gt;&lt;img style="border-bottom:0px;border-left:0px;display:inline;border-top:0px;border-right:0px;" title="clip_image036" border="0" alt="clip_image036" src="http://k2underground.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/rambleon.metablogapi/3056.clip_5F00_image036_5F00_thumb_5F00_46B9F035.jpg" width="434" height="43" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h3&gt;Defining the Remainder of the Client Event&lt;/h3&gt;  &lt;p&gt;We can configure the remainder of the client event like any other.&lt;/p&gt;  &lt;p&gt;In Configure Actions wizard page add two actions.&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Accept Lead&lt;/li&gt;    &lt;li&gt;Redirect to Global Sales&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Finally, add a suitable destination user. In my case I’ve added Administrator to keep things nice and simple. In future posts we can look at retrieving the most suitable user from CRM based upon certain criteria.&lt;/p&gt;  &lt;p&gt;Complete the Client Event wizard and return to the design canvas.&lt;/p&gt;  &lt;p&gt;Drag the Accept Lead line so that it connects with the Lead Accepted activity.&lt;/p&gt;  &lt;p&gt;Drag the Redirect to Global Sales line so that it connects to the Assign to Global Sales activity.&lt;/p&gt;  &lt;p&gt;At this point your process should look like this.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://k2underground.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/rambleon.metablogapi/5826.clip_5F00_image038_5F00_7362AA0E.jpg"&gt;&lt;img style="border-bottom:0px;border-left:0px;display:inline;border-top:0px;border-right:0px;" title="clip_image038" border="0" alt="clip_image038" src="http://k2underground.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/rambleon.metablogapi/2744.clip_5F00_image038_5F00_thumb_5F00_71B1DE3A.jpg" width="432" height="316" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h2&gt;Step 5 – Implementing Lead Accepted&lt;/h2&gt;  &lt;p&gt;To complete our process we want to create a Note that is related with our Lead so we can track actions that have taken place against our Lead. To do this we will use our Demo CRM Note SmartObject that we created in Step 1.&lt;/p&gt;  &lt;p&gt;From the Toolbox drag the SmartObject Event wizard onto the Lead Accepted Activity. &lt;/p&gt;  &lt;p&gt;On page two of the wizard define the Event Name as Create Note and the SmartObject Method open the K2 Object Browser and select the Create method of Demo CRM Note.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://k2underground.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/rambleon.metablogapi/2744.clip_5F00_image040_5F00_40BF0102.jpg"&gt;&lt;img style="border-bottom:0px;border-left:0px;display:inline;border-top:0px;border-right:0px;" title="clip_image040" border="0" alt="clip_image040" src="http://k2underground.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/rambleon.metablogapi/5315.clip_5F00_image040_5F00_thumb_5F00_06638B21.jpg" width="429" height="89" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;On the Input Mapping page map the following values to the Properties.&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;b&gt;Title&lt;/b&gt; – “The assigned Sales person has accepted this lead.”&lt;/li&gt;    &lt;li&gt;&lt;b&gt;Description &lt;/b&gt;– “The assigned Sales person has accepted this lead as part of the [ProcessName]* process”      &lt;br /&gt;* [ProcessName] is a value from the Workflow Context Browser&lt;/li&gt;    &lt;li&gt;&lt;b&gt;Object Type &lt;/b&gt;– [Entity Name]*      &lt;br /&gt;* the data field we created in Step 2&lt;/li&gt;    &lt;li&gt;&lt;b&gt;Regarding &lt;/b&gt;- [Entity Id]#[Entity Name]*      &lt;br /&gt;* the data fields we created in Step 2&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;The Object Type and Regarding fields ensure that the relationship between the Lead and the Note are established. &lt;/p&gt;  &lt;p&gt;Complete the SmartObject wizard and we’re done building our process. &lt;/p&gt;  &lt;p&gt;&lt;a href="http://k2underground.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/rambleon.metablogapi/3386.clip_5F00_image042_5F00_702D6FCE.jpg"&gt;&lt;img style="border-bottom:0px;border-left:0px;display:inline;border-top:0px;border-right:0px;" title="clip_image042" border="0" alt="clip_image042" src="http://k2underground.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/rambleon.metablogapi/6825.clip_5F00_image042_5F00_thumb_5F00_0FCC23CA.jpg" width="389" height="307" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Deploy the process and then configure you Process Rights.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h2&gt;Step 6 – Starting the Process from CRM&lt;/h2&gt;  &lt;p&gt;Our process is now in place and ready to run. All we need to do now is to configure CRM so that an event in CRM starts our K2 process. &lt;/p&gt;  &lt;p&gt;Remember this scenario is only one approach to how you can achieve K2 blackpearl and Dynamisc CRM integration. For this scenario we have chosen a CRM only environment. It is just as easy to build K2 solutions that start outside of CRM and then move into CRM and vice versa.&lt;/p&gt;  &lt;p&gt;Dynamics CRM gives us two options for starting a K2 process based upon an event, CRM workflow or plug-ins.&lt;/p&gt;  &lt;p&gt;In our example we are going to be using a simple CRM workflow to start our K2 process.&lt;/p&gt;  &lt;p&gt;In Dynamics CRM we go to the Settings and then Workflow. We’ll create a new workflow that is called K2 Lead Review and is associated with the Lead entity.&lt;/p&gt;  &lt;p&gt;We’ll have the workflow start when a Records is Created and well make it available On demand. The workflow itself will only have one step so click on Add Step and you should see the following if you have successfully registered the K2 custom workflow activity from Step 0.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://k2underground.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/rambleon.metablogapi/7827.clip_5F00_image044_5F00_26AAF546.jpg"&gt;&lt;img style="border-bottom:0px;border-left:0px;display:inline;border-top:0px;border-right:0px;" title="clip_image044" border="0" alt="clip_image044" src="http://k2underground.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/rambleon.metablogapi/6646.clip_5F00_image044_5F00_thumb_5F00_3D1D93CD.jpg" width="309" height="271" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Provide a nice description, something along the lines of Start K2 Process and then select the Set Properties button. We can now configure the properties of the K2 process we wish to start. &lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;b&gt;Process Folder – &lt;/b&gt;CRM Demo      &lt;br /&gt;This is the name of your project in K2 Designer for VS&lt;/li&gt;    &lt;li&gt;&lt;b&gt;Process Name –&lt;/b&gt; K2 Lead Review      &lt;br /&gt;The name of your K2 process, the kprx file&lt;/li&gt;    &lt;li&gt;&lt;b&gt;Process Datafields –&lt;/b&gt; [not required in this example]&lt;/li&gt;    &lt;li&gt;&lt;b&gt;Entity ID Datafield –&lt;/b&gt; Entity Id      &lt;br /&gt;The name of the datafield you created in the process to hold the entity Id. &lt;/li&gt;    &lt;li&gt;&lt;b&gt;Entity Name Datafield –&lt;/b&gt; Entity Name      &lt;br /&gt;The name of the datafield you created in the process to hold the entity name&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;a href="http://k2underground.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/rambleon.metablogapi/7380.clip_5F00_image046_5F00_4488B7A0.jpg"&gt;&lt;img style="border-bottom:0px;border-left:0px;display:inline;border-top:0px;border-right:0px;" title="clip_image046" border="0" alt="clip_image046" src="http://k2underground.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/rambleon.metablogapi/1856.clip_5F00_image046_5F00_thumb_5F00_376E8BF5.jpg" width="510" height="177" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Save and close the configuration window. &lt;/p&gt;  &lt;p&gt;When your CRM workflow looks like the following you can publish it.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://k2underground.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/rambleon.metablogapi/8306.clip_5F00_image048_5F00_291FED38.jpg"&gt;&lt;img style="border-bottom:0px;border-left:0px;display:inline;border-top:0px;border-right:0px;" title="clip_image048" border="0" alt="clip_image048" src="http://k2underground.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/rambleon.metablogapi/1447.clip_5F00_image048_5F00_thumb_5F00_555C741C.jpg" width="507" height="255" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://k2underground.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/rambleon.metablogapi/2043.clip_5F00_image050_5F00_0CC2854B.jpg"&gt;&lt;img style="border-bottom:0px;border-left:0px;display:inline;border-top:0px;border-right:0px;" title="clip_image050" border="0" alt="clip_image050" src="http://k2underground.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/rambleon.metablogapi/0876.clip_5F00_image050_5F00_thumb_5F00_0B7DEC6C.jpg" width="501" height="35" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Now that everything is in place we can test out our K2 + Dynamics CRM solution.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h2&gt;Step 6 – K2 + Dynamics CRM in Action&lt;/h2&gt;  &lt;p&gt;So let’s see the end result.&lt;/p&gt;  &lt;p&gt;I’m going to go to my Sales area and view my Open Leads and open an existing Lead. You’ll notice that the K2 Actions field is disabled as this Lead is not involved in a K2 process.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://k2underground.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/rambleon.metablogapi/1803.clip_5F00_image052_5F00_031A1715.jpg"&gt;&lt;img style="border-bottom:0px;border-left:0px;display:inline;border-top:0px;border-right:0px;" title="clip_image052" border="0" alt="clip_image052" src="http://k2underground.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/rambleon.metablogapi/1212.clip_5F00_image052_5F00_thumb_5F00_6ED08924.jpg" width="513" height="115" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;To start our process I select the Run Workflow button at the top of the Lead, select K2 Lead Review and click OK. Our K2 Lead Review process has now begun. When it reaches the Sales Person Review activity it will assign our destination user a worklist item and wait for their decision. &lt;/p&gt;  &lt;p&gt;I can open my K2 worklist to see this task.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://k2underground.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/rambleon.metablogapi/1212.clip_5F00_image054_5F00_222C4C81.jpg"&gt;&lt;img style="border-bottom:0px;border-left:0px;display:inline;border-top:0px;border-right:0px;" title="clip_image054" border="0" alt="clip_image054" src="http://k2underground.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/rambleon.metablogapi/3750.clip_5F00_image054_5F00_thumb_5F00_52DF542C.jpg" width="511" height="82" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Clicking on the worklist item will open a new window that contains the CRM Lead form. When we open the Lead this time however we see that K2 Actions field is now enabled and contains the available actions for this user as defined by the process.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://k2underground.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/rambleon.metablogapi/6505.clip_5F00_image056_5F00_317FAE90.jpg"&gt;&lt;img style="border-bottom:0px;border-left:0px;display:inline;border-top:0px;border-right:0px;" title="clip_image056" border="0" alt="clip_image056" src="http://k2underground.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/rambleon.metablogapi/7607.clip_5F00_image056_5F00_thumb_5F00_3671C672.jpg" width="513" height="143" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;NOTE:&lt;/b&gt; If you are the destination user and you open the Lead directly through CRM you will get the same result. You do not have to open the item via the K2 worklist. If you are not the destination user and you open the Lead then the K2 actions field will be disabled.&lt;/p&gt;  &lt;p&gt;I can now select my action which in this case will be Accept Lead and click Save &amp;amp; Close. This will result in saving any changes that I have made to the Lead and actioning my worklist item. In this example I have included an alert to indicate that the worklist item has been completed.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://k2underground.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/rambleon.metablogapi/1234.clip_5F00_image058_5F00_3FEA84E8.jpg"&gt;&lt;img style="border-bottom:0px;border-left:0px;display:inline;border-top:0px;border-right:0px;" title="clip_image058" border="0" alt="clip_image058" src="http://k2underground.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/rambleon.metablogapi/0160.clip_5F00_image058_5F00_thumb_5F00_3E39B914.jpg" width="505" height="190" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Finally we’ll go back to our Lead and to the Notes section to see that the K2 process has completed successfully and that it’s added a Note against our Lead.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://k2underground.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/rambleon.metablogapi/5140.clip_5F00_image060_5F00_238D1CFB.jpg"&gt;&lt;img style="border-bottom:0px;border-left:0px;display:inline;border-top:0px;border-right:0px;" title="clip_image060" border="0" alt="clip_image060" src="http://k2underground.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/rambleon.metablogapi/7450.clip_5F00_image060_5F00_thumb_5F00_7C32882B.jpg" width="493" height="130" /&gt;&lt;/a&gt;#&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h2&gt;Conclusion&lt;/h2&gt;  &lt;p&gt;So there you have it. We’ve created a solution that combines Dynamics CRM and K2 blackpearl. This is just one example of a solution you could build with K2 blackpearl and CRM. In future posts we’ll look at;&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;working with different CRM entities through K2 SmartObjects&lt;/li&gt;    &lt;li&gt;surfacing CRM information in other solutions and processes via K2 SmartObject &lt;/li&gt;    &lt;li&gt;using other forms technologies to action client both in and out of CRM&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Jonno&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://k2underground.com/aggbug.aspx?PostID=35360" width="1" height="1"&gt;</content><author><name>jonno</name><uri>http://k2underground.com/members/jonno/default.aspx</uri></author><category term="CRM4.0" scheme="http://k2underground.com/blogs/rambleon/archive/tags/CRM4.0/default.aspx" /><category term="CRM4Series" scheme="http://k2underground.com/blogs/rambleon/archive/tags/CRM4Series/default.aspx" /></entry><entry><title>blackpoint error - Microsoft.SharePoint.Portal.Analytics.UI.ReportViewerMessages... does not implement IReportViewerMessages </title><link rel="alternate" type="text/html" href="/blogs/rambleon/archive/2010/02/02/blackpoint-error-microsoft-sharepoint-portal-analytics-ui-reportviewermessages-does-not-implement-ireportviewermessages.aspx" /><id>/blogs/rambleon/archive/2010/02/02/blackpoint-error-microsoft-sharepoint-portal-analytics-ui-reportviewermessages-does-not-implement-ireportviewermessages.aspx</id><published>2010-02-02T12:36:00Z</published><updated>2010-02-02T12:36:00Z</updated><content type="html">&lt;p&gt;If you get the following error when trying to run a k2 blackpoint report for the first time:&lt;/p&gt;
&lt;p&gt;&amp;#39;Microsoft.SharePoint.Portal.Analytics.UI.ReportViewerMessages, Microsoft.SharePoint.Portal, Version=12.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c&amp;#39; does not implement IReportViewerMessages&amp;#39;&lt;br /&gt;&lt;br /&gt;Please add the following line to the system.web/httpHandlers section of the Reporting Sites&amp;rsquo; web.config file : &lt;br /&gt;&lt;br /&gt;&amp;lt;add verb=&amp;quot;*&amp;quot; path=&amp;quot;Reserved.ReportViewerWebControl.axd&amp;quot; type = &amp;quot;Microsoft.Reporting.WebForms.HttpHandler, Microsoft.ReportViewer.WebForms, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a&amp;quot; /&amp;gt; &lt;br /&gt;&lt;br /&gt;&lt;b&gt;And remove the following line from the web.config:&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;add key=&amp;quot;ReportViewerMessages&amp;quot; value=&amp;quot;Microsoft.SharePoint.Portal.Analytics.UI.ReportViewerMessages, Microsoft.SharePoint.Portal, Version=12.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c&amp;quot; /&amp;gt;&lt;br /&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://k2underground.com/aggbug.aspx?PostID=35232" width="1" height="1"&gt;</content><author><name>nicholas.kotze@k2workflow.com</name><uri>http://k2underground.com/members/nicholas.kotze_4000_k2workflow.com/default.aspx</uri></author></entry><entry><title>blackpoint - SourceCode.SmartObjects.Client.SmartObjectException</title><link rel="alternate" type="text/html" href="/blogs/rambleon/archive/2010/02/02/blackpoint-sourcecode-smartobjects-client-smartobjectexception.aspx" /><id>/blogs/rambleon/archive/2010/02/02/blackpoint-sourcecode-smartobjects-client-smartobjectexception.aspx</id><published>2010-02-02T12:09:00Z</published><updated>2010-02-02T12:09:00Z</updated><content type="html">&lt;p&gt;Hi Guys&lt;/p&gt;
&lt;p&gt;When running blackpoint reports and you get the above error message in SharePoint.&lt;/p&gt;
&lt;p&gt;
This will happen when your machine&amp;#39;s Regional Settings
is set to one format, and your SharePoint Site where you want to view the
reports are set to a different format.&lt;/p&gt;
&lt;p&gt;Example:&lt;/p&gt;
&lt;p&gt;
The K2Server machine has regional settings to
English(UK) that has a short date of dd/mm/yyyy. &lt;br /&gt;
The regional setting of the MOSS site is set to
English(US) and it has a short date as mm/dd/yyyy. &lt;br /&gt;&lt;br /&gt;This is
already logged as a bug and is fixed for K2 blackpoint 4.5&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://k2underground.com/aggbug.aspx?PostID=35231" width="1" height="1"&gt;</content><author><name>nicholas.kotze@k2workflow.com</name><uri>http://k2underground.com/members/nicholas.kotze_4000_k2workflow.com/default.aspx</uri></author></entry><entry><title>Adding an Attachment to a List Item - blackpoint</title><link rel="alternate" type="text/html" href="/blogs/rambleon/archive/2009/11/18/adding-an-attachment-to-a-list-item-blackpoint.aspx" /><id>/blogs/rambleon/archive/2009/11/18/adding-an-attachment-to-a-list-item-blackpoint.aspx</id><published>2009-11-18T15:56:13Z</published><updated>2009-11-18T15:56:13Z</updated><content type="html">&lt;p&gt;In K2 blackpoint you can attach one or more documents to a list item in SharePoint.&lt;/p&gt;  &lt;p&gt;What you need to do is the following.&lt;/p&gt;  &lt;p&gt;1) In your list go to Advanced settings and confirm that Attachments are enabled.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://k2underground.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/rambleon.metablogapi/3681.clip_5F00_image002_5F00_4C0813E2.jpg"&gt;&lt;img style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;" title="clip_image002" border="0" alt="clip_image002" src="http://k2underground.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/rambleon.metablogapi/5165.clip_5F00_image002_5F00_thumb_5F00_5CA00ED0.jpg" width="244" height="30" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;2) In site that your list resides go to Site Actions and select the K2 Site Settings menu option&lt;/p&gt;  &lt;p&gt;&lt;a href="http://k2underground.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/rambleon.metablogapi/0066.clip_5F00_image004_5F00_4DF562EB.jpg"&gt;&lt;img style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;" title="clip_image004" border="0" alt="clip_image004" src="http://k2underground.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/rambleon.metablogapi/8461.clip_5F00_image004_5F00_thumb_5F00_39FBD055.jpg" width="164" height="244" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;3) Select SmartObject Service Management from the Integration Management list.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://k2underground.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/rambleon.metablogapi/3678.clip_5F00_image006_5F00_7161E183.jpg"&gt;&lt;img style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;" title="clip_image006" border="0" alt="clip_image006" src="http://k2underground.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/rambleon.metablogapi/7888.clip_5F00_image006_5F00_thumb_5F00_44D8B19D.jpg" width="194" height="100" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;4) Select the checkbox next to the list that you want to attach a file to. In this example I am using the Approved Leave Requests custom list.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://k2underground.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/rambleon.metablogapi/5734.clip_5F00_image008_5F00_439418BE.jpg"&gt;&lt;img style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;" title="clip_image008" border="0" alt="clip_image008" src="http://k2underground.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/rambleon.metablogapi/6646.clip_5F00_image008_5F00_thumb_5F00_22A0A617.jpg" width="200" height="82" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Check the Use dynamic URLs if you are moving between environments. &lt;/p&gt;  &lt;p&gt;&lt;a href="http://k2underground.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/rambleon.metablogapi/6724.clip_5F00_image010_5F00_1AA903B5.jpg"&gt;&lt;img style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;" title="clip_image010" border="0" alt="clip_image010" src="http://k2underground.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/rambleon.metablogapi/1537.clip_5F00_image010_5F00_thumb_5F00_527B47D8.jpg" width="244" height="22" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Then click the Create button.&lt;/p&gt;  &lt;p&gt;This will create a K2 SmartObject for this list.&lt;/p&gt;  &lt;p&gt;5) In the Object Browser in K2 Studio when you expand the SmartObject Servers node you will now see your new SmartObject for the list.&lt;/p&gt;  &lt;p&gt;The SmartObject will have a number of methods listed including Add Attachment.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://k2underground.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/rambleon.metablogapi/2117.clip_5F00_image012_5F00_43D09BF3.jpg"&gt;&lt;img style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;" title="clip_image012" border="0" alt="clip_image012" src="http://k2underground.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/rambleon.metablogapi/1537.clip_5F00_image012_5F00_thumb_5F00_0255E99A.jpg" width="192" height="244" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;6) To use this method go to the Event Wizards panel and drag the SmartObject Event wizard onto the design canvas.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://k2underground.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/rambleon.metablogapi/5228.clip_5F00_image014_5F00_1602D32E.jpg"&gt;&lt;img style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;" title="clip_image014" border="0" alt="clip_image014" src="http://k2underground.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/rambleon.metablogapi/0042.clip_5F00_image014_5F00_thumb_5F00_1C49A9BC.jpg" width="132" height="26" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;7) Provide an Event Name and select the Add Attachment method for your SmartObject from the Context Browser.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://k2underground.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/rambleon.metablogapi/7206.clip_5F00_image015_5F00_0D9EFDD7.jpg"&gt;&lt;img style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;" title="clip_image015" border="0" alt="clip_image015" src="http://k2underground.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/rambleon.metablogapi/3678.clip_5F00_image015_5F00_thumb_5F00_5E00DF4A.jpg" width="244" height="177" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;8) On the Input Mapping page of the wizard add the necessary information.&lt;/p&gt;  &lt;p&gt;&lt;b&gt;Attachment.Content&lt;/b&gt; – the file you wish to attach to the list item (must be Base64)&lt;/p&gt;  &lt;p&gt;&lt;b&gt;Attachment.FileName&lt;/b&gt; – The filename you wish to give to the file&lt;/p&gt;  &lt;p&gt;&lt;b&gt;ID&lt;/b&gt; – The ID of the list item you are attaching the document to&lt;/p&gt;  &lt;p&gt;&lt;b&gt;SharePoint URL&lt;/b&gt; – the SharePoint site that the list resides in. You should be able to select this from your Environment Library. This field will only appear if you selected the Use dynamic URLs option in Step 4.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://k2underground.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/rambleon.metablogapi/3582.clip_5F00_image016_5F00_1CF25FE6.jpg"&gt;&lt;img style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;" title="clip_image016" border="0" alt="clip_image016" src="http://k2underground.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/rambleon.metablogapi/5635.clip_5F00_image016_5F00_thumb_5F00_6949F387.jpg" width="244" height="221" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;In K2 blackpearl the same functionality is available you just need to create the SmartObject slightly differently.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Enjoy &lt;/p&gt;  &lt;p&gt;Jonno&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://k2underground.com/aggbug.aspx?PostID=34364" width="1" height="1"&gt;</content><author><name>jonno</name><uri>http://k2underground.com/members/jonno/default.aspx</uri></author><category term="SharePoint" scheme="http://k2underground.com/blogs/rambleon/archive/tags/SharePoint/default.aspx" /><category term="blackpoint" scheme="http://k2underground.com/blogs/rambleon/archive/tags/blackpoint/default.aspx" /></entry><entry><title>Infopath Administrator-Approved Forms and K2 processes</title><link rel="alternate" type="text/html" href="/blogs/rambleon/archive/2009/11/12/infopath-administrator-approved-forms-and-k2-processes.aspx" /><id>/blogs/rambleon/archive/2009/11/12/infopath-administrator-approved-forms-and-k2-processes.aspx</id><published>2009-11-12T09:01:00Z</published><updated>2009-11-12T09:01:00Z</updated><content type="html">&lt;p&gt;... or what is behind the &amp;quot;&lt;strong&gt;Publish to: Local or Network Location&lt;/strong&gt;&amp;quot; in the Infopath Integration Wizard.&lt;/p&gt;
&lt;p&gt;In some cases (forms with code behind, or TimeOut on deployement...), it can be interesting to be able to deploy Infopath Forms for a K2 process as Administrator-approved forms in Sharepoint. Here you will find the steps you need to do (or check) in K2 designer, MOSS central administration and in your MOSS site collection to ensure the compliance of your K2 Infopath Form for an execution in your web browser. This article is an additional reading ressource for the excellent HOW TO video on &amp;quot;&lt;a target="_blank" href="http://k2underground.com/blogs/howtok2/archive/2009/06/29/using-code-behind-with-infopath-forms-sharepoint-and-k2.aspx" title="HOW TO Blog post"&gt;Using &amp;#39;code behind&amp;#39; with InfoPath forms, SharePoint and K2&lt;/a&gt;&amp;quot; published on the HOW TO K2 blog.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;[&lt;strong&gt;Using the K2 designer&lt;/strong&gt;] 
&lt;ul&gt;
&lt;li&gt;Change the template deployment location to be on the file system, by loading the Infopath Integration Process Wizard and editing configuration of your attached form:&lt;br /&gt;&lt;a href="http://k2underground.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/rambleon/7840.01.jpg"&gt;&lt;img src="http://k2underground.com/resized-image.ashx/__size/550x0/__key/CommunityServer.Blogs.Components.WeblogFiles/rambleon/7840.01.jpg" border="0" alt="" /&gt;&lt;/a&gt;&lt;/li&gt;
&lt;br /&gt;
&lt;li&gt;The preceding step allows the K2 Designer to prepare the URL to access worklistitem from your K2 Worklist component. And as we now use a local path, all MOSS configuration needed to access the worklistitem using the web-browser will disappear, so we need to do some updates in each Infopath Client events of the process. To perform this, we need to update the code behind each Infopath Client&amp;nbsp;configuration: 
&lt;ul&gt;
&lt;li&gt;First I propose to create 3 environnements fields (1 Sharepoint Server URL for registering the site you will use, and 2 miscellaneous: one to store the name of the Form Library and the other to store if you want to open the form with the web-browser), as per as the screenshot bellow:&lt;br /&gt;&lt;a href="http://k2underground.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/rambleon/8640.K2ObjectBrowser.jpg"&gt;&lt;img src="http://k2underground.com/resized-image.ashx/__size/550x0/__key/CommunityServer.Blogs.Components.WeblogFiles/rambleon/8640.K2ObjectBrowser.jpg" border="0" alt="" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;em&gt;In my example: Infopath FormLib=test, Infopath OpenAsWebPage=True, Sharepoint HR Site URL=http://portal.denallix.com/sites/hr&lt;/em&gt;&lt;/li&gt;
&lt;br /&gt;
&lt;li&gt;Second, you need to update the code of each client event. To do this, right click on your Infopath Client event &amp;gt;&amp;gt; View Code &amp;gt;&amp;gt; Event Item, then in the code, browse to the SetWorklistUrl method and adapt the following code to your own configuration (see bellow an example):&lt;br /&gt;&lt;a href="http://k2underground.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/rambleon/8233.Code.jpg"&gt;&lt;img src="http://k2underground.com/resized-image.ashx/__size/550x0/__key/CommunityServer.Blogs.Components.WeblogFiles/rambleon/8233.Code.jpg" border="0" alt="" /&gt;&lt;/a&gt;&lt;/li&gt;
&lt;br /&gt;
&lt;li&gt;You can re-launch your Infopath Client Event wizards without any fear, your updated code will not be deleted.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;br /&gt;
&lt;li&gt;[&lt;strong&gt;Using the Infopath Designer&lt;/strong&gt;] Then, enable your form to be filled out by the browser. To achieve this, still using the Infopath Integration Process Wizard, launch the &amp;ldquo;Design&amp;rdquo; feature and: 
&lt;ul&gt;
&lt;li&gt;Go to the &amp;ldquo;Tools&amp;rdquo; menu and select &amp;ldquo;Form options&amp;hellip;&amp;rdquo;, make some changes in the categories &amp;ldquo;Compatibility&amp;rdquo; and &amp;ldquo;Browser&amp;rdquo; as per the screenshots below:&lt;br /&gt;Ensure your form is browser compatible:&lt;br /&gt;&lt;a href="http://k2underground.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/rambleon/6813.02.jpg"&gt;&lt;img src="http://k2underground.com/resized-image.ashx/__size/550x0/__key/CommunityServer.Blogs.Components.WeblogFiles/rambleon/6813.02.jpg" border="0" alt="" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Ensure, you will have some menu buttons (optional if you create your own one):&lt;br /&gt;&lt;a href="http://k2underground.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/rambleon/2311.03.jpg"&gt;&lt;img src="http://k2underground.com/resized-image.ashx/__size/550x0/__key/CommunityServer.Blogs.Components.WeblogFiles/rambleon/2311.03.jpg" border="0" alt="" /&gt;&lt;/a&gt;&lt;/li&gt;
&lt;br /&gt;
&lt;li&gt;Once this is finished, you can close your form, then you can close the K2 Infopath Integration Process Wizard, and &lt;strong&gt;you can deploy your K2 process&lt;/strong&gt;.&lt;/li&gt;
&lt;br /&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;[&lt;strong&gt;Using the Infopath Designer&lt;/strong&gt;] Now, you must deploy your local Infopath form with correct data connections: 
&lt;ul&gt;
&lt;li&gt;Browse to the deployment location selected in step 1&lt;/li&gt;
&lt;li&gt;Find your XSN file, righ-click and then select &amp;ldquo;Design&amp;rdquo;&lt;/li&gt;
&lt;li&gt;To convert all the K2 Data Connections to Universal Data Connection files (your K2 designer do this on its own when it deploys the form to a Sharepoint Library, but here you need to do this manually). 
&lt;ul&gt;
&lt;li&gt;In the &amp;ldquo;tools&amp;rdquo; menu, select &amp;ldquo;Data Connections&amp;hellip;&amp;rdquo;&lt;/li&gt;
&lt;li&gt;Then for each data connections in the list, click on &amp;ldquo;Convert&amp;hellip;&amp;rdquo;&lt;br /&gt;&lt;a href="http://k2underground.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/rambleon/5100.04.jpg"&gt;&lt;img src="http://k2underground.com/resized-image.ashx/__size/550x0/__key/CommunityServer.Blogs.Components.WeblogFiles/rambleon/5100.04.jpg" border="0" alt="" /&gt;&lt;/a&gt;&lt;/li&gt;
&lt;br /&gt;
&lt;li&gt;And create your UDCX files in the site collection you want to deploy your form. You will obtain something like:&lt;br /&gt;&lt;a href="http://k2underground.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/rambleon/6644.05.jpg"&gt;&lt;img src="http://k2underground.com/resized-image.ashx/__size/550x0/__key/CommunityServer.Blogs.Components.WeblogFiles/rambleon/6644.05.jpg" border="0" alt="" /&gt;&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;br /&gt;
&lt;li&gt;Now you can publish your form: 
&lt;ul&gt;
&lt;li&gt;In the &amp;ldquo;file&amp;rdquo; menu, select &amp;ldquo;publish&amp;hellip;&amp;rdquo;&lt;/li&gt;
&lt;li&gt;When asked where you want to publish your form, choose &amp;ldquo;To a SharePoint Server with or without InfoPath Forms Services&amp;rdquo; and click Next. &lt;br /&gt;&lt;a href="http://k2underground.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/rambleon/7268.06.jpg"&gt;&lt;img src="http://k2underground.com/resized-image.ashx/__size/550x0/__key/CommunityServer.Blogs.Components.WeblogFiles/rambleon/7268.06.jpg" border="0" alt="" /&gt;&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
&lt;li&gt;Paste the URL of the document library that you created and click Next.&lt;/li&gt;
&lt;li&gt;In the following page you must select the &amp;ldquo;enable this form to be filled out by using a browser&amp;rdquo; box and the &amp;ldquo;Administrator Approved form template&amp;rdquo;. Click Next.&lt;/li&gt;
&lt;li&gt;Browse to the location you saved your file to and select it. Click Next twice.&lt;/li&gt;
&lt;li&gt;Click &amp;ldquo;publish&amp;rdquo;&lt;/li&gt;
&lt;li&gt;You will see a message that confirms your form has been published successfully and remind you to give your SharePoint Administrator the information listed on the screen.&lt;/li&gt;
&lt;li&gt;Click &amp;ldquo;close&amp;rdquo;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;br /&gt;
&lt;li&gt;Close Infopath.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;br /&gt;
&lt;li&gt;[&lt;strong&gt;Using MOSS Central Administration&lt;/strong&gt;] If you are a SharePoint Administrator with access to SharePoint Central Administration, navigate to the Central Administration web site: 
&lt;ul&gt;
&lt;li&gt;Choose &amp;ldquo;Application Management&amp;rdquo;&lt;/li&gt;
&lt;li&gt;Under InfoPath Forms Services, choose &amp;ldquo;Manage form templates&amp;rdquo;.&amp;nbsp;&lt;/li&gt;
&lt;li&gt;On the Manage form templates page, click &amp;ldquo;Upload form template&amp;rdquo;.&lt;/li&gt;
&lt;li&gt;On the &amp;ldquo;Upload Form Template&amp;rdquo; page, browse to the location where the template has been saved to (in step 3. before publishing) and select it.&lt;br /&gt;&lt;a href="http://k2underground.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/rambleon/3034.07.jpg"&gt;&lt;img src="http://k2underground.com/resized-image.ashx/__size/550x0/__key/CommunityServer.Blogs.Components.WeblogFiles/rambleon/3034.07.jpg" border="0" alt="" /&gt;&lt;/a&gt;&lt;/li&gt;
&lt;br /&gt;
&lt;li&gt;Click &amp;ldquo;Upload&amp;rdquo;&amp;nbsp;&lt;/li&gt;
&lt;li&gt;On the following screen, check that it uploaded successfully, then click &amp;ldquo;OK&amp;rdquo;&lt;/li&gt;
&lt;li&gt;On the &amp;ldquo;Manage form templates&amp;rdquo; page, locate your xsn form and wait for the &amp;ldquo;ready&amp;rdquo; status (if the status is still &amp;ldquo;installing&amp;rdquo;, be sure the SPTimer service is running &amp;ndash; you can perform a &amp;ldquo;net start SPTimerV3&amp;rdquo; cmd to launch it, and if necessary a &amp;ldquo;net start SPAdmin&amp;rdquo; cmd).&lt;/li&gt;
&lt;li&gt;When it&amp;rsquo;s &amp;ldquo;ready&amp;rdquo; on the template that you just uploaded, click the drop-down box and select &amp;ldquo;activate to a site collection&amp;rdquo;.&lt;br /&gt;&lt;a href="http://k2underground.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/rambleon/1513.08.jpg"&gt;&lt;img src="http://k2underground.com/resized-image.ashx/__size/550x0/__key/CommunityServer.Blogs.Components.WeblogFiles/rambleon/1513.08.jpg" border="0" alt="" /&gt;&lt;/a&gt;&lt;/li&gt;
&lt;br /&gt;
&lt;li&gt;On the Activate Form Template, choose the correct Site Collection to activate it to and click OK.&lt;/li&gt;
&lt;li&gt;You can now close Central Administration.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;br /&gt;
&lt;li&gt;[&lt;strong&gt;Using Settings of your site collection&lt;/strong&gt;] Navigate to your Sharepoint site: 
&lt;ul&gt;
&lt;li&gt;Browse to your form library.&lt;/li&gt;
&lt;li&gt;Then click on &amp;ldquo;form library settings&amp;rdquo;.&lt;/li&gt;
&lt;li&gt;In the &amp;ldquo;Customize&amp;rdquo; page of your library under &amp;ldquo;General Settings&amp;rdquo;, click &amp;ldquo;Advanced Settings&amp;rdquo;.&lt;/li&gt;
&lt;li&gt;In the Advanced Settings Page, select &amp;ldquo;Yes&amp;rdquo; under &amp;ldquo;Allow management of content types&amp;rdquo;, check if the &amp;ldquo;Display as Web page&amp;rdquo; option is checked, and click OK.&lt;/li&gt;
&lt;li&gt;Back on the Library Settings Page, you should now see a section called &amp;ldquo;Content Types&amp;rdquo;. Choose the link &amp;ldquo;Add from existing site content types&amp;rdquo;.&lt;br /&gt;&lt;a href="http://k2underground.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/rambleon/7024.09.jpg"&gt;&lt;img src="http://k2underground.com/resized-image.ashx/__size/550x0/__key/CommunityServer.Blogs.Components.WeblogFiles/rambleon/7024.09.jpg" border="0" alt="" /&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;On the Add Content Types page, change the selection on the Select site content types from drop-down menu to Microsoft Office InfoPath.&lt;/li&gt;
&lt;li&gt;Select the Content Type of your new Administrator Approved form and click the &amp;ldquo;Add&amp;rdquo; button, then click OK.&lt;/li&gt;
&lt;li&gt;You should now see your new content type listed in the content types list. Optionally you can delete the other content type(s) in the list to avoid confusion regarding&amp;nbsp; what form should be stored there.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;br /&gt;
&lt;li&gt;Now when users click the &amp;ldquo;New&amp;rdquo; button in the document library, your Administrator-Enabled form will launch in browser mode and when you will submit it the K2 process will be executed. &lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;br /&gt;I hope this will help you to create better K2 web applications ;-).&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;&lt;span style="font-size:xx-small;"&gt;-- by &lt;a target="_blank" href="http://k2underground.com/members/jan/default.aspx" title="Jean&amp;#39;s profil"&gt;Jean Cadeau&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://k2underground.com/aggbug.aspx?PostID=34267" width="1" height="1"&gt;</content><author><name>jan</name><uri>http://k2underground.com/members/jan/default.aspx</uri></author><category term="InfoPath" scheme="http://k2underground.com/blogs/rambleon/archive/tags/InfoPath/default.aspx" /><category term="MOSS" scheme="http://k2underground.com/blogs/rambleon/archive/tags/MOSS/default.aspx" /><category term="Forms Server" scheme="http://k2underground.com/blogs/rambleon/archive/tags/Forms+Server/default.aspx" /><category term="SharePoint" scheme="http://k2underground.com/blogs/rambleon/archive/tags/SharePoint/default.aspx" /></entry><entry><title>How to access to standard K2 reports in your web application?</title><link rel="alternate" type="text/html" href="/blogs/rambleon/archive/2009/10/14/how-to-access-to-a-standard-k2-reports-in-your-web-application.aspx" /><id>/blogs/rambleon/archive/2009/10/14/how-to-access-to-a-standard-k2-reports-in-your-web-application.aspx</id><published>2009-10-14T15:32:00Z</published><updated>2009-10-14T15:32:00Z</updated><content type="html">&lt;p&gt;Let&amp;rsquo;s assume you want to display a standard K2 report (for example &amp;ldquo;Activity Statistics&amp;rdquo;) in your web application without doing any redirection to the K2 Workspace.&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;SSRS (SQL Server Reporting Services) has many great built-in features, but accessing them from external components can be tricky. What if you want to pass reports parameters directly within a URL? Wouldn&amp;#39;t it be great if you could, from a website or an email,&amp;nbsp; point to&amp;nbsp; a URL that renders a report directly in PDF? You may also need to display a K2 report without the reporting toolbar.&amp;nbsp; Let&amp;#39;s take a look at these items as well as a few others. Here are the steps:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Find the URL of your report. Browse your reportserver web application (e.g. on Denallix: &lt;a href="http://www.denallix.com/reportserver"&gt;http://www.denallix.com/reportserver&lt;/a&gt;), then click on &amp;ldquo;Standard Reports &amp;gt;&amp;gt; Hidden&amp;rdquo;, here you have all the out-of-the-box K2 reports. Nota: replace &lt;a href="http://www.denallix.com"&gt;www.denallix.com&lt;/a&gt; by your own SSRS web server DNS address. &lt;br /&gt;&lt;a href="http://k2underground.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/rambleon/1108.RambleOn_2D00_Jan_2D00_SSRS01.jpg"&gt;&lt;img src="http://k2underground.com/resized-image.ashx/__size/550x0/__key/CommunityServer.Blogs.Components.WeblogFiles/rambleon/1108.RambleOn_2D00_Jan_2D00_SSRS01.jpg" border="0" alt="" /&gt;&lt;/a&gt;&lt;/li&gt;
&lt;br /&gt;
&lt;li&gt;Select your report (e.g.: &amp;ldquo;Activity Statitics Column3D&amp;rdquo;) to display the parameters you can play with. Copy the current URL (here &lt;a href="http://www.denallix.com/reportserver/?%2fStandard+Reports%2fHidden%2fActivity+Statistics+Column3D&amp;amp;rs:Commande=Render"&gt;http://www.denallix.com/reportserver/?%2fStandard+Reports%2fHidden%2fActivity+Statistics+Column3D&amp;amp;rs:Commande=Render&lt;/a&gt;)&lt;br /&gt;&lt;br /&gt;&lt;a href="http://k2underground.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/rambleon/7065.RambleOn_2D00_Jan_2D00_SSRS02.jpg"&gt;&lt;img src="http://k2underground.com/resized-image.ashx/__size/550x0/__key/CommunityServer.Blogs.Components.WeblogFiles/rambleon/7065.RambleOn_2D00_Jan_2D00_SSRS02.jpg" border="0" alt="" /&gt;&lt;/a&gt;&lt;/li&gt;
&lt;br /&gt;
&lt;li&gt;Build your URL using the K2 parameters:&lt;br /&gt;a.&amp;nbsp;FullName: &amp;lt;Folder&amp;gt;\&amp;lt;ProcessName&amp;gt;&lt;br /&gt;b.&amp;nbsp;Version: &amp;lt;int_Version&amp;gt;&lt;br /&gt;c.&amp;nbsp;ValueType: 0 to have average duration, 1 to have the instance numbers&lt;br /&gt;d.&amp;nbsp;FromDate: start date for the report &amp;lt;YYYY/MM/DD&amp;gt;&lt;br /&gt;e.&amp;nbsp;ToDate: end date for the report &amp;lt;YYYY/MM/DD&amp;gt;&lt;br /&gt;f.&amp;nbsp;Status: 2 for Active, 4 for Completed&lt;br /&gt;g.&amp;nbsp;EventType: 0 for all events, 1 to exclude Server Events&lt;br /&gt;&lt;br /&gt;Thus, assuming we want to display the average completion duration of the activities from the last version of the Purchase Request instances in the last 2 years, we will add the following string to our URL&lt;strong&gt;: &amp;amp;FullName=DenallixBP\PurchaseRequest&amp;amp;Version=20&amp;amp;ValueType=0&lt;br /&gt;&amp;amp;FromDate=2007/10/14&amp;amp;ToDate=2009/10/14&amp;amp;Status=4&amp;amp;EventType=1&lt;/strong&gt;.&lt;/li&gt;
&lt;br /&gt;
&lt;li&gt;Add some SSRS options to your URL :&lt;br /&gt;a.&amp;nbsp;To hide the parameter bar, append this string to&amp;nbsp; the URL: &lt;strong&gt;&amp;amp;rc:Parameters=false&lt;/strong&gt;&lt;br /&gt;b.&amp;nbsp;To hide the toolbar, append this string to the URL: &lt;strong&gt;&amp;amp;rc:Toolbar=false&lt;/strong&gt;&lt;br /&gt;c.&amp;nbsp;To control the report format, you can append the following string to directly save the report to your local file system in the specified file format to: &lt;strong&gt;&amp;amp;rs:Format=Excel&lt;/strong&gt; or &lt;strong&gt;&amp;amp;rs:Format=PDF&lt;/strong&gt;&lt;/li&gt;
&lt;br /&gt;
&lt;li&gt;The complete, final URL can be something like &lt;a href="http://www.denallix.com/reportserver/?%2fStandard+Reports%2fHidden%2fActivity+Statistics+Column3D&amp;lt;br%20&amp;gt;&amp;lt;/a&amp;gt;&amp;amp;rs:Commande=Render&amp;amp;FullName=DenallixBP\PurchaseRequest&amp;amp;Version=20&amp;amp;ValueType=0&amp;amp;FromDate=2007/10/14&amp;amp;ToDate=2009/10/14&amp;amp;Status=4&amp;amp;EventType=1&amp;amp;rc:Parameters=false&amp;amp;rc:Toolbar=false"&gt;http://www.denallix.com/reportserver/?%2fStandard+Reports%2fHidden%2fActivity+Statistics+Column3D&amp;amp;rs:Commande=Render&amp;amp;FullName=DenallixBP\PurchaseRequest&lt;br /&gt;&amp;amp;Version=20&amp;amp;ValueType=0&amp;amp;FromDate=2007/10/14&amp;amp;ToDate=2009/10/14&amp;amp;Status=4&amp;amp;EventType=1&lt;br /&gt;&amp;amp;rc:Parameters=false&amp;amp;rc:Toolbar=false&lt;/a&gt; and will generate this:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://k2underground.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/rambleon/1261.RambleOn_2D00_Jan_2D00_SSRS03.jpg"&gt;&lt;img src="http://k2underground.com/resized-image.ashx/__size/550x0/__key/CommunityServer.Blogs.Components.WeblogFiles/rambleon/1261.RambleOn_2D00_Jan_2D00_SSRS03.jpg" border="0" alt="" /&gt;&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;br /&gt;I hope this will help you to create better K2 web applications ;-).&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;&lt;span style="font-size:xx-small;"&gt;-- by Jean Cadeau&lt;/span&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://k2underground.com/aggbug.aspx?PostID=33711" width="1" height="1"&gt;</content><author><name>jan</name><uri>http://k2underground.com/members/jan/default.aspx</uri></author><category term="Reports" scheme="http://k2underground.com/blogs/rambleon/archive/tags/Reports/default.aspx" /><category term="Reporting Services" scheme="http://k2underground.com/blogs/rambleon/archive/tags/Reporting+Services/default.aspx" /></entry><entry><title>K2 blackpearl and Microsoft Dynamics CRM 4 Integration - Chapter 2</title><link rel="alternate" type="text/html" href="/blogs/rambleon/archive/2009/06/29/k2-blackpearl-and-microsoft-dynamics-crm-4-integration-chapter-2.aspx" /><id>/blogs/rambleon/archive/2009/06/29/k2-blackpearl-and-microsoft-dynamics-crm-4-integration-chapter-2.aspx</id><published>2009-06-29T13:12:28Z</published><updated>2009-06-29T13:12:28Z</updated><content type="html">&lt;h2&gt;Adding the K2 Worklist to Dynamics CRM&lt;/h2&gt;  &lt;p&gt;In this chapter of our ongoing (read: drawn out) series on K2 blackpearl integration with Microsoft Dynamics CRM we are going to integrate the K2 Worklist into the CRM user experience so that users can access their K2 tasks directly from CRM.&lt;/p&gt;  &lt;p&gt;This article assumes that you have a basic understanding of CRM and CRM customisations in particular modifying the Site Map entity. In this example I will be editing it by hand though if you are interested you can check out the &lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=634508DC-1762-40D6-B745-B3BDE05D7012&amp;amp;displaylang=en"&gt;Microsoft Dynamics CRM Demonstration Tools (for Microsoft Dynamics CRM 4.0)&lt;/a&gt; for a visual editor.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Step 0 – The Necessary Pieces&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;There are a couple of prerequisites for this chapter and as per usual they can be downloaded from &lt;a href="http://k2underground.com/k2/ProjectHome.aspx?ProjectID=80"&gt;Microsoft Dynamics CRM 4 - blackpearl Integration&lt;/a&gt; project in &lt;a href="http://k2underground.com/k2/ProjectLanding.aspx"&gt;blackmarket&lt;/a&gt; on &lt;a href="http://k2underground.com/"&gt;K2Underground.com&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;The prerequisites are as follows:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;K2 icons for the site menu &lt;/li&gt;    &lt;li&gt;K2 Worklist web application &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;In this example we are going to use the out of the box K2 Worklist control hosted in a simple web solution. I am doing this for the sake of simplicity. In a production quality solution I would strongly recommend that you look at developing your own custom K2 Worklist rather than reusing this control. &lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Step 1 – Setup&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Once you have downloaded the components from K2Underground.com you will need to copy the two image files K2_28.gif &lt;a href="http://k2underground.com/blogs/rambleon/K2_28_56D44F2F.gif"&gt;&lt;img style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;" title="K2_28" border="0" alt="K2_28" src="http://k2underground.com/blogs/rambleon/K2_28_thumb_2AB7523E.gif" width="25" height="25" /&gt;&lt;/a&gt;and K2_16.gif &lt;a href="http://k2underground.com/blogs/rambleon/K2_16_6361FC4B.gif"&gt;&lt;img style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;" title="K2_16" border="0" alt="K2_16" src="http://k2underground.com/blogs/rambleon/K2_16_thumb_6E1F53A0.gif" width="17" height="17" /&gt;&lt;/a&gt; to the CRM directory e.g. C:\Program Files\Microsoft Dynamics CRM Server\CRMWeb\_imgs&lt;/p&gt;  &lt;p&gt;You will then need to setup a new web site or virtual directory to host the K2 Worklist. In our example my worklist is hosted at &lt;a href="http://localhost/K2%20OOB%20Worklist"&gt;http://localhost/K2%20OOB%20Worklist&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://k2underground.com/blogs/rambleon/K2OOBWorklistsmall_3BBB8021.png"&gt;&lt;img style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;" title="K2 OOB Worklist small" border="0" alt="K2 OOB Worklist small" src="http://k2underground.com/blogs/rambleon/K2OOBWorklistsmall_thumb_6C8E11BF.png" width="636" height="151" /&gt;&lt;/a&gt;&amp;#160; &lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Step 2 – Export Customisations&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Now that the necessary prerequisites are in place it is time to start customising Dynamics CRM to include the K2 Worklist. The first step is to go to the Settings tab in CRM and select Customizations.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://k2underground.com/blogs/rambleon/CRMCustomizationsPage_61A10AAA.png"&gt;&lt;img style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;" title="CRM Customizations Page" border="0" alt="CRM Customizations Page" src="http://k2underground.com/blogs/rambleon/CRMCustomizationsPage_thumb_73D9AB9F.png" width="604" height="459" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Select Export Customizations. Scroll down and select the Site Map entity. Once selected click on the Export Selected Customizations from the menu bar.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://k2underground.com/blogs/rambleon/image_3D0C2ACE.png"&gt;&lt;img style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;" title="image" border="0" alt="image" src="http://k2underground.com/blogs/rambleon/image_thumb_5D8344B3.png" width="604" height="459" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Save the customizations.zip file to a location of your choice. Once saved you will need to extract the customizations.xml file. It is the customizations.xml that we will modify to include the K2 Worklist. &lt;/p&gt;  &lt;p&gt;We are going to make two additions to the CRM Site Map. We are going to include a new group in the Workplace area and a new Process Management area that will include a link to the K2 Worklist and some custom process reports to demonstrate that we can include not only the worklist but other key process related information as well.&lt;/p&gt;  &lt;p&gt;Open the customizations.xml file in your XML editor of choice. Find the Workspace area node and add the following Group node to where you wish the K2 Worklist menu option to area.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;table style="border-bottom:#000000 1px solid;border-left:#000000 1px solid;border-top:#000000 1px solid;border-right:#000000 1px solid;" cellspacing="0" cellpadding="2"&gt;     &lt;tr&gt;       &lt;td&gt;         &lt;pre class="code"&gt;        &lt;span style="color:blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;Group &lt;/span&gt;&lt;span style="color:red;"&gt;Id&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;K2&lt;/span&gt;&amp;quot; &lt;span style="color:red;"&gt;ResourceId&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;K2Resource&lt;/span&gt;&amp;quot; &lt;span style="color:red;"&gt;Title&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;My Processes&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;&amp;gt;
          &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;SubArea &lt;/span&gt;&lt;span style="color:red;"&gt;Id&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;K2Worklist&lt;/span&gt;&amp;quot; &lt;span style="color:red;"&gt;Url&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;http://localhost/K2%20OOB%20Worklist/Default.aspx&lt;/span&gt;&amp;quot; &lt;span style="color:red;"&gt;Icon&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;/_imgs/K2_16.gif&lt;/span&gt;&amp;quot; &lt;span style="color:red;"&gt;Title&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;K2 Worklist&lt;/span&gt;&amp;quot; &lt;span style="color:blue;"&gt;/&amp;gt;
        &amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515;"&gt;Group&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;
&lt;/span&gt;&lt;/pre&gt;
      &lt;/td&gt;
    &lt;/tr&gt;
  &lt;/table&gt;

&lt;p&gt;&amp;#160;&lt;/p&gt;

&lt;p&gt;After the Workspace area we are going to add the Process Management area. Between the Workplace and Sales areas (assuming you have a vanilla CRM installation) add the code below. Remember I have included an additional link to some custom K2 reports that you can exclude from your example.&lt;/p&gt;

&lt;p&gt;&amp;#160;&lt;/p&gt;

&lt;table style="border-bottom:#000000 1px solid;border-left:#000000 1px solid;border-top:#000000 1px solid;border-right:#000000 1px solid;" cellspacing="0" cellpadding="2"&gt;
    &lt;tr&gt;
      &lt;td&gt;
        &lt;pre class="code"&gt;      &lt;span style="color:blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;Area &lt;/span&gt;&lt;span style="color:red;"&gt;Id&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;K2&lt;/span&gt;&amp;quot; &lt;span style="color:red;"&gt;Title&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;Process Management&lt;/span&gt;&amp;quot; &lt;span style="color:red;"&gt;Icon&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;/_imgs/K2_28.gif&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;&amp;gt;
        &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;Group &lt;/span&gt;&lt;span style="color:red;"&gt;Id&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;K2&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;&amp;gt;
          &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;SubArea &lt;/span&gt;&lt;span style="color:red;"&gt;Id&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;K2Worklist&lt;/span&gt;&amp;quot; &lt;span style="color:red;"&gt;Url&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;http://localhost/K2%20OOB%20Worklist/Default.aspx&lt;/span&gt;&amp;quot; &lt;span style="color:red;"&gt;Icon&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;/_imgs/K2_16.gif&lt;/span&gt;&amp;quot; &lt;span style="color:red;"&gt;Title&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;K2 Worklist&lt;/span&gt;&amp;quot; &lt;span style="color:blue;"&gt;/&amp;gt;
          &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;SubArea &lt;/span&gt;&lt;span style="color:red;"&gt;Id&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;K2OOBReports&lt;/span&gt;&amp;quot; &lt;span style="color:red;"&gt;Url&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;http://localhost:9999/ChartingExamplesTestPage.aspx&lt;/span&gt;&amp;quot; &lt;span style="color:red;"&gt;Icon&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;/_imgs/ico_16_1038.gif&lt;/span&gt;&amp;quot; &lt;span style="color:red;"&gt;Title&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;Performance Reports&lt;/span&gt;&amp;quot; &lt;span style="color:blue;"&gt;/&amp;gt;
        &amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515;"&gt;Group&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;
      &amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515;"&gt;Area&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;
&lt;/span&gt;&lt;/pre&gt;
        &lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;&lt;/td&gt;
    &lt;/tr&gt;
  &lt;/table&gt;

&lt;p&gt;&amp;#160;&lt;/p&gt;

&lt;p&gt;Now that you have modified the customizations.xml file it is time to import it back into CRM. Open Dynamics CRM and go to Customizations in the Settings area and select Import Customizations. Browse to your newly modified customizations.xml file and upload it. Once it has been uploaded you will see an screen like the one below.&lt;/p&gt;

&lt;p&gt;&lt;a href="http://k2underground.com/blogs/rambleon/CRMImportCustomizationsPagesmall_4D83DA22.png"&gt;&lt;img style="border-bottom:0px;border-left:0px;display:inline;border-top:0px;border-right:0px;" title="CRM Import Customizations Page small" border="0" alt="CRM Import Customizations Page small" src="http://k2underground.com/blogs/rambleon/CRMImportCustomizationsPagesmall_thumb_083B5D2C.png" width="604" height="459" /&gt;&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;Click the Import Selected Customizations on the menu bar and click OK on the prompt. Now that the customizations have been imported successfully we can refresh your browser and see the changes are now live or if you have Outlook integration enabled you can see the new menu options there too.&lt;/p&gt;

&lt;p&gt;&lt;a href="http://k2underground.com/blogs/rambleon/CRMWorkplaceK2Worklistsmall_1D1CB9D2.png"&gt;&lt;img style="border-bottom:0px;border-left:0px;display:inline;border-top:0px;border-right:0px;" title="CRM Workplace - K2 Worklist small" border="0" alt="CRM Workplace - K2 Worklist small" src="http://k2underground.com/blogs/rambleon/CRMWorkplaceK2Worklistsmall_thumb_179E2361.png" width="604" height="459" /&gt;&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="http://k2underground.com/blogs/rambleon/OutlookProcessManagementK2Worklistsmall_7053B45E.png"&gt;&lt;img style="border-bottom:0px;border-left:0px;display:inline;border-top:0px;border-right:0px;" title="Outlook Process Management - K2 Worklist small" border="0" alt="Outlook Process Management - K2 Worklist small" src="http://k2underground.com/blogs/rambleon/OutlookProcessManagementK2Worklistsmall_thumb_2B0B3768.png" width="607" height="424" /&gt;&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;&amp;#160;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Things to Consider&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;So in this example we have see a very simple way of introducing the K2 Worklist into CRM and making it available in both the browser and Outlook user experiences. There are obviously a number of limitations with this approach some of which include;&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;No offline access to tasks&lt;/li&gt;

  &lt;li&gt;Duplicate task lists – one for CRM and the other for K2&lt;/li&gt;

  &lt;li&gt;Theme inconsistencies&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;To take this solution further I would start by looking at creating a CMR themed custom K2 Worklist rather than simply using the OOB worklist control. Beyond that I would then start looking at integrating the tasks with the Tasks activity type so that you can get a single view of all your CRM and K2 related tasks. We may have a look at both of these topics in future posts.&lt;/p&gt;

&lt;p&gt;&amp;#160;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Next Up&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;In the next post we are going to create a K2 blackpearl process that integrates with Dynamics CRM, that uses the CRM user experience for client events and much more. &lt;/p&gt;

&lt;p&gt;If you have any questions or comments please &lt;a href="http://k2underground.com/forums/AddPost.aspx?ForumID=0&amp;amp;UserId=4432"&gt;send me a message&lt;/a&gt; through K2Underground.com.&lt;/p&gt;

&lt;p&gt;&amp;#160;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Jonno&lt;/strong&gt;&lt;/p&gt;&lt;img src="http://k2underground.com/aggbug.aspx?PostID=31713" width="1" height="1"&gt;</content><author><name>jonno</name><uri>http://k2underground.com/members/jonno/default.aspx</uri></author><category term="CRM4.0" scheme="http://k2underground.com/blogs/rambleon/archive/tags/CRM4.0/default.aspx" /><category term="CRM4Series" scheme="http://k2underground.com/blogs/rambleon/archive/tags/CRM4Series/default.aspx" /></entry><entry><title>K2 blackpearl and Microsoft Dynamics CRM 4 Integration - Chapter 1</title><link rel="alternate" type="text/html" href="/blogs/rambleon/archive/2009/02/04/k2-blackpearl-and-microsoft-dynamics-crm-4-integration-chapter-1.aspx" /><id>/blogs/rambleon/archive/2009/02/04/k2-blackpearl-and-microsoft-dynamics-crm-4-integration-chapter-1.aspx</id><published>2009-02-04T17:00:05Z</published><updated>2009-02-04T17:00:05Z</updated><content type="html">&lt;h2&gt;Initiating K2 blackpearl Processes&lt;/h2&gt;  &lt;p&gt;In this first chapter of our series on integrating K2 blackpearl and Microsoft Dynamic CRM 4 we will be looking at ways in which you can initiate, or start, a K2 blackpearl process based upon a user interacting with a Dynamics CRM 4. &lt;/p&gt;  &lt;p&gt;During the course of this series we will be developing a solution based upon the creation, review and approval of a new lead. The scenario will see:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;a inside sales staffer identifies and capture a new lead in CRM 4 &lt;/li&gt;    &lt;li&gt;a K2 blackpearl is process initiated &lt;/li&gt;    &lt;li&gt;the process will provision a SharePoint site to manage all documents and collaboration concerning the lead &lt;/li&gt;    &lt;li&gt;it will assign a task to the Sales Team to review the lead in CRM and make a decision on it's potential &lt;/li&gt;    &lt;li&gt;based upon the Sales Team decision the process will conduct some further integration with CRM &amp;amp; SharePoint. &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;It is intentionally a simple scenario to begin with aimed at demonstrating the ability to drive a K2 blackpearl process through Dynamics CRM 4 and having such a process span multiple line of business systems and people within the organisation. Over the course of the series we may look to evolve the scenario further.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h2&gt;Where to Start&lt;/h2&gt;  &lt;p&gt;Dynamics CRM 4 provides two key mechanisms to add additional business logic and functionality to the platform, Plug-ins and Workflow. The description of these and when and where to use one versus the other is beyond the scope of this post. If you do need some information on the topic I recommend that you have a look at the following:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://www.microsoft.com/DOWNLOADS/details.aspx?familyid=82E632A7-FAF9-41E0-8EC1-A2662AAE9DFB&amp;amp;displaylang=en"&gt;Dynamics CRM 4 SDK&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://blogs.msdn.com/lezamax/archive/2008/04/02/plug-in-or-workflow.aspx"&gt;Plug-in or Workflow&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://billoncrmtech.blogspot.com/2008/07/differences-between-workflow-and.html"&gt;Differences between Workflow and Plugins in CRM 4.0&lt;/a&gt; &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;For our example we will be using Workflows and in particular developing a custom workflow activity specifically for initiating our K2 blackpearl process. It is worth pointing out that you could use either approach, Plug-ins or Workflows, to start a K2 process. I have chosen to use Workflows in this example to allow users to have greater control as to when a process is started and to demonstrate how we can leverage and extend the existing workflow platform in CRM 4.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;In this chapter the basics of building a custom workflow activity for CRM 4 is out of scope. If you'd like to learn how to build a custom workflow activity then have a look at the following tutorial - &lt;a href="http://www.stunnware.com/crm2/topic.aspx?id=CustomWorkflowActivity"&gt;Developing Custom Workflow Activities for Microsoft Dynamics CRM 4.0&lt;/a&gt;. What we will be focusing is the key elements within that activity that enable it to start a K2 blackpearl process.&lt;/p&gt;  &lt;p&gt;All source code for this post and all other posts in this series can be found in the &lt;a href="http://k2underground.com/k2/ProjectHome.aspx?ProjectID=80"&gt;Microsoft Dynamics CRM 4 - blackpearl Integration&lt;/a&gt;&amp;#160;&lt;a href="http://k2underground.com/k2/ProjectLanding.aspx"&gt;blackmarket&lt;/a&gt; project on &lt;a href="http://k2underground.com/"&gt;K2 Underground&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h2&gt;Step 0 – The Necessary Pieces&lt;/h2&gt;  &lt;p&gt;From this point forward I am going to assume that you have set up the base requirements for a custom workflow activity;&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Created a new Workflow Activity Library project &lt;/li&gt;    &lt;li&gt;Added a reference to &lt;em&gt;Microsoft.Crm.Sdk.dll&lt;/em&gt; and &lt;em&gt;Microsoft.Crm.SdkTypeProxy.dll&lt;/em&gt; &lt;/li&gt;    &lt;li&gt;Renamed the generated class file (no spaces) &lt;/li&gt;    &lt;li&gt;Annotated the class with the .NET attribute &lt;i&gt;CrmWorkflowActivity&lt;/i&gt; and overriden the &lt;i&gt;Execute&lt;/i&gt; method &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Again, if you need assistance in this area a create reference is &lt;a href="http://www.stunnware.com/crm2/topic.aspx?id=CustomWorkflowActivity"&gt;Developing Custom Workflow Activities for Microsoft Dynamics CRM 4.0&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h2&gt;Step 1 – Inputs and Outputs&lt;/h2&gt;  &lt;p&gt;Now we need to define the input and output properties for the Activity. For our simple demonstration activity we will have four input properties that will allow the user to configure which K2 blackpearl process to start and which data fields to pass key entity information. Our input properties are:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Process Folder – The folder or project name in which our K2 blackpearl process resides. &lt;/li&gt;    &lt;li&gt;Process Name – The name of the K2 blackpearl process we wish to start. &lt;/li&gt;    &lt;li&gt;Entity ID Datafield – The name of the data field in our process that will hold the ID of the CRM entity that started the process. &lt;/li&gt;    &lt;li&gt;Entity Name Datafield -&amp;#160; The name of the data field in our process that will hold the entity type name for the CRM entity that started the process. &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;The first two properties are obvious if you have worked with the K2 Workflow API before. You need to know the name of the process and its folder in which it resides to start an instance of that process. The second two properties, Entity ID Datafield and Entity Name Datafield, are less obvious. When we use this activity inside CRM they will take in the name of K2 blackpearl process data fields that will receive the ID and the type name (e.g. lead, account, etc) for the CRM entity against which the workflow has been initiated. By passing these two values to the K2 blackpearl process you can use the CRM web service or as we will see in later chapters the Dynamics CRM 4 Service Broker to access CRM entity information from within our process.&lt;/p&gt;  &lt;p&gt;Our output property will simply be the the ID of the initiated K2 blackpearl process.&lt;/p&gt;  &lt;p&gt;Defining an input property for Process Name.&lt;/p&gt;  &lt;table style="border-right:#000000 1px solid;border-top:#000000 1px solid;border-left:#000000 1px solid;border-bottom:#000000 1px solid;" cellspacing="0" cellpadding="2"&gt;     &lt;tr&gt;       &lt;td&gt;         &lt;pre class="code"&gt;&lt;span style="color:blue;"&gt;public static &lt;/span&gt;&lt;span style="color:#2b91af;"&gt;DependencyProperty &lt;/span&gt;ProcessNameProperty = &lt;span style="color:#2b91af;"&gt;DependencyProperty&lt;/span&gt;.Register(&lt;span style="color:#a31515;"&gt;&amp;quot;ProcessName&amp;quot;&lt;/span&gt;, &lt;span style="color:blue;"&gt;typeof&lt;/span&gt;(&lt;span style="color:#2b91af;"&gt;String&lt;/span&gt;), &lt;span style="color:blue;"&gt;typeof&lt;/span&gt;(&lt;span style="color:#2b91af;"&gt;DemoK2CRMStartActivity&lt;/span&gt;));

[&lt;span style="color:#2b91af;"&gt;CrmInput&lt;/span&gt;(&lt;span style="color:#a31515;"&gt;&amp;quot;Process Name&amp;quot;&lt;/span&gt;)]
&lt;span style="color:blue;"&gt;public string &lt;/span&gt;ProcessName
{
    &lt;span style="color:blue;"&gt;get
    &lt;/span&gt;{
        &lt;span style="color:blue;"&gt;return this&lt;/span&gt;.GetValue(ProcessNameProperty).ToString();
    }
    &lt;span style="color:blue;"&gt;set &lt;/span&gt;{ 
        &lt;span style="color:blue;"&gt;this&lt;/span&gt;.SetValue(ProcessNameProperty, &lt;span style="color:blue;"&gt;value&lt;/span&gt;); 
    }
}&lt;/pre&gt;
        &lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;&lt;/td&gt;
    &lt;/tr&gt;
  &lt;/table&gt;

&lt;p&gt;&amp;#160;&lt;/p&gt;

&lt;h2&gt;Step 2 – Who Starts The Process&lt;/h2&gt;

&lt;p&gt;Now that we defined the input and output properties we can begin to flesh out the functionality of the &lt;em&gt;Execute&lt;/em&gt; method. The first thing that we need to do is to get access to the CRM context and to the CRM web service. &lt;/p&gt;

&lt;table style="border-right:#000000 1px solid;border-top:#000000 1px solid;border-left:#000000 1px solid;border-bottom:#000000 1px solid;" cellspacing="0" cellpadding="2"&gt;
    &lt;tr&gt;
      &lt;td&gt;
        &lt;pre class="code"&gt;&lt;span style="color:green;"&gt;// Get the context service.
&lt;/span&gt;&lt;span style="color:#2b91af;"&gt;IContextService &lt;/span&gt;contextService = (&lt;span style="color:#2b91af;"&gt;IContextService&lt;/span&gt;)executionContext.GetService(&lt;span style="color:blue;"&gt;typeof&lt;/span&gt;(&lt;span style="color:#2b91af;"&gt;IContextService&lt;/span&gt;));
&lt;span style="color:#2b91af;"&gt;IWorkflowContext &lt;/span&gt;context = contextService.Context;

&lt;span style="color:green;"&gt;// Use the context service to create an instance of CrmService.
&lt;/span&gt;&lt;span style="color:#2b91af;"&gt;ICrmService &lt;/span&gt;crmService = context.CreateCrmService(&lt;span style="color:blue;"&gt;true&lt;/span&gt;);&lt;/pre&gt;
      &lt;/td&gt;
    &lt;/tr&gt;
  &lt;/table&gt;

&lt;p&gt;&amp;#160;&lt;/p&gt;

&lt;p&gt;Using this context information we now need to retrieve the user who started the CRM workflow so that same user can start the K2 blackpearl process. We can do this easily using the CRM service and doing a look up on the &lt;em&gt;systemuser&lt;/em&gt; entity. We get initiating user’s ID via &lt;em&gt;context.UserId&lt;/em&gt; which returns a GUID which is the key value to the user’s instance of the &lt;em&gt;systemuser&lt;/em&gt; entity. Using this GUID we can retrieve the &lt;em&gt;systemuser&lt;/em&gt; entity instance and retrieve the user’s domain details. We will use the domain details in the next step.&lt;/p&gt;

&lt;table style="border-right:#000000 1px solid;border-top:#000000 1px solid;border-left:#000000 1px solid;border-bottom:#000000 1px solid;" cellspacing="0" cellpadding="2"&gt;
    &lt;tr&gt;
      &lt;td&gt;
        &lt;pre class="code"&gt;&lt;span style="color:green;"&gt;// Retrieve the user who started the process
&lt;/span&gt;&lt;span style="color:blue;"&gt;string&lt;/span&gt;[] cols = &lt;span style="color:blue;"&gt;new string&lt;/span&gt;[] { &lt;span style="color:#a31515;"&gt;&amp;quot;domainname&amp;quot;&lt;/span&gt;, &lt;span style="color:#a31515;"&gt;&amp;quot;yomifullname&amp;quot; &lt;/span&gt;};
Microsoft.Crm.Sdk.Query.&lt;span style="color:#2b91af;"&gt;ColumnSet &lt;/span&gt;myColumnSet = &lt;span style="color:blue;"&gt;new &lt;/span&gt;Microsoft.Crm.Sdk.Query.&lt;span style="color:#2b91af;"&gt;ColumnSet&lt;/span&gt;(cols);

&lt;span style="color:#2b91af;"&gt;systemuser &lt;/span&gt;su = (&lt;span style="color:#2b91af;"&gt;systemuser&lt;/span&gt;)crmService.Retrieve(&lt;span style="color:#2b91af;"&gt;EntityName&lt;/span&gt;.systemuser.ToString(), context.UserId, myColumnSet);
&lt;span style="color:blue;"&gt;string &lt;/span&gt;username = su.domainname;&lt;/pre&gt;
      &lt;/td&gt;
    &lt;/tr&gt;
  &lt;/table&gt;

&lt;p&gt;&amp;#160;&lt;/p&gt;

&lt;h2&gt;Step 3 – Starting the K2 blackpearl Process&lt;/h2&gt;

&lt;p&gt;Now that we have the user who needs to start the K2 blackpearl process we can dive into the K2 Workflow API. Well before diving into coding we need to add a reference &lt;em&gt;SourceCode.Workflow.Client&lt;/em&gt; which can be found in C:\Program Files\k2 blackpearl\Host Server\Bin.&lt;/p&gt;

&lt;table style="border-right:#000000 1px solid;border-top:#000000 1px solid;border-left:#000000 1px solid;border-bottom:#000000 1px solid;" cellspacing="0" cellpadding="2"&gt;
    &lt;tr&gt;
      &lt;td&gt;
        &lt;pre class="code"&gt;&lt;span style="color:green;"&gt;// Using the K2 blackpearl API start a process
&lt;/span&gt;SourceCode.Workflow.Client.&lt;span style="color:#2b91af;"&gt;Connection &lt;/span&gt;k2Con = &lt;span style="color:blue;"&gt;new &lt;/span&gt;SourceCode.Workflow.Client.&lt;span style="color:#2b91af;"&gt;Connection&lt;/span&gt;();
SourceCode.Workflow.Client.&lt;span style="color:#2b91af;"&gt;ProcessInstance &lt;/span&gt;k2Pi;

&lt;span style="color:blue;"&gt;try
&lt;/span&gt;{
    &lt;span style="color:green;"&gt;// Open a connection to the K2 blackpearl server
    &lt;/span&gt;k2Con.Open(System.Configuration.&lt;span style="color:#2b91af;"&gt;ConfigurationSettings&lt;/span&gt;.AppSettings[&lt;span style="color:#a31515;"&gt;&amp;quot;blackpearlServer&amp;quot;&lt;/span&gt;]);

    &lt;span style="color:green;"&gt;// Create a process instance based upon the input values of the WF Activity
    &lt;/span&gt;k2Pi = k2Con.CreateProcessInstance(&lt;span style="color:blue;"&gt;this&lt;/span&gt;.ProcessFolder + &lt;span style="color:#a31515;"&gt;@&amp;quot;\&amp;quot; &lt;/span&gt;+ &lt;span style="color:blue;"&gt;this&lt;/span&gt;.ProcessName);

    &lt;span style="color:green;"&gt;// Impersonate as the user who started the WF in CRM
    &lt;/span&gt;k2Con.ImpersonateUser(crmUser);

    
    &lt;span style="color:green;"&gt;// Assign CRM Entity GUID to the process datafield
    &lt;/span&gt;&lt;span style="color:blue;"&gt;if &lt;/span&gt;(&lt;span style="color:blue;"&gt;this&lt;/span&gt;.EntityIDDatafield.Trim().Length &amp;gt; 0)
    {
        k2Pi.DataFields[&lt;span style="color:blue;"&gt;this&lt;/span&gt;.EntityIDDatafield].Value = context.PrimaryEntityId.ToString();
    }

    &lt;span style="color:green;"&gt;// Assign CRM Entity Name to the process datafield
    &lt;/span&gt;&lt;span style="color:blue;"&gt;if &lt;/span&gt;(&lt;span style="color:blue;"&gt;this&lt;/span&gt;.EntityNameDatafield.Trim().Length &amp;gt; 0)
    {
        k2Pi.DataFields[&lt;span style="color:blue;"&gt;this&lt;/span&gt;.EntityNameDatafield].Value = context.PrimaryEntityName;
    }                

    &lt;span style="color:green;"&gt;// Start K2 blackpearl process
    &lt;/span&gt;k2Con.StartProcessInstance(k2Pi);

    &lt;span style="color:green;"&gt;// set the WF Activity Output paramater
    &lt;/span&gt;&lt;span style="color:blue;"&gt;this&lt;/span&gt;.ProcessInstanceId = k2Pi.ID.ToString();

}
&lt;span style="color:blue;"&gt;catch &lt;/span&gt;(&lt;span style="color:#2b91af;"&gt;Exception &lt;/span&gt;ex)
{
    &lt;span style="color:blue;"&gt;throw&lt;/span&gt;;
}
&lt;span style="color:blue;"&gt;finally
&lt;/span&gt;{
    &lt;span style="color:blue;"&gt;if &lt;/span&gt;(k2Con != &lt;span style="color:blue;"&gt;null&lt;/span&gt;)
        k2Con.Close();
}&lt;/pre&gt;
      &lt;/td&gt;
    &lt;/tr&gt;
  &lt;/table&gt;

&lt;p&gt;&amp;#160;&lt;/p&gt;

&lt;p&gt;The code here is standard Workflow API code using the &lt;em&gt;Connection &lt;/em&gt;object to get a connection to the K2 blackpearl server and the &lt;em&gt;ProcessInstance&lt;/em&gt; object to start a new instance of the process. There are a couple of interesting elements to this code. &lt;/p&gt;

&lt;p&gt;We use the &lt;em&gt;ImpersonateUser&lt;/em&gt; method in combination of the user’s domain name that we retrieved from CRM so that we can start the process as the same user who initiated the CRM workflow. We use &lt;em&gt;ImpersonateUser&lt;/em&gt; rather &lt;em&gt;Connection.Open&lt;/em&gt; because we know who the user is but do not have access to their password so we connect to the blackpearl server as the service account and then impersonate as the respective CRM user. &lt;/p&gt;

&lt;p&gt;The other interesting element is the assignment of the entity name and entity ID to the process data fields. Here you see how we use the input properties to determine which data fields in the process these values will be stored in.&lt;/p&gt;

&lt;p&gt;&amp;#160;&lt;/p&gt;

&lt;h2&gt;Step 4 – Deployment&lt;/h2&gt;

&lt;p&gt;Now that we’ve developed our custom workflow activity it is time to deploy it. I chose to use the Plugin Registration tool that is available with the CRM SDK (..\SDK\tools\pluginregistration) &lt;/p&gt;

&lt;p&gt;&lt;a href="http://k2underground.com/blogs/rambleon/image_5BDCA174.png"&gt;&lt;img title="image" style="border-top-width:0px;display:inline;border-left-width:0px;border-bottom-width:0px;border-right-width:0px;" height="298" alt="image" src="http://k2underground.com/blogs/rambleon/image_thumb_470AA8F4.png" width="385" border="0" /&gt;&lt;/a&gt;&amp;#160;&lt;a href="http://k2underground.com/blogs/rambleon/image_29491E35.png"&gt;&lt;img title="image" style="border-top-width:0px;display:inline;border-left-width:0px;border-bottom-width:0px;border-right-width:0px;" height="299" alt="image" src="http://k2underground.com/blogs/rambleon/image_thumb_356A985C.png" width="367" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;&amp;#160;&lt;/p&gt;

&lt;h2&gt;Step 5 – Create a blackpearl Process&lt;/h2&gt;

&lt;p&gt;Now that we’ve got our custom workflow activity deployed into CRM we are all set to use it….. but before we can we need a K2 blackpearl process. I’m sure you are all well versed in building K2 blackpearl processes and building one for CRM is no different. The only prerequisite is the two process data fields that will ultimately hold the entity name and entity ID. As a rule I generally create data fields of type string called &lt;em&gt;CRM Entity ID&lt;/em&gt; and &lt;em&gt;CRM Entity Name&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="http://k2underground.com/blogs/rambleon/image_7383B30D.png"&gt;&lt;img title="image" style="border-top-width:0px;display:inline;border-left-width:0px;border-bottom-width:0px;border-right-width:0px;" height="217" alt="image" src="http://k2underground.com/blogs/rambleon/image_thumb_2B55F731.png" width="235" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;In Chapter 3 we go into detail about how to use CRM forms as client event pages in processes.&lt;/p&gt;

&lt;p&gt;&amp;#160;&lt;/p&gt;

&lt;h2&gt;Step 6 – Putting it to the Test&lt;/h2&gt;

&lt;p&gt;Now it’s time to dive in to CRM and configure a workflow that starts out K2 blackpearl process. Open CRM and go to the Settings tab and then Workflows. Click the New button and when prompted provide a name and select the CRM entity your workflow will be associated with. Now you can define your CRM workflow (nothing like the visual modelling experience you get with K2 blackpearl), when you click the Add Step button you will see a K2 blackpearl option and the Start K2 blackpearl Process activity.&lt;/p&gt;

&lt;p&gt;&lt;a href="http://k2underground.com/blogs/rambleon/image_3F02E0C5.png"&gt;&lt;img title="image" style="border-top-width:0px;display:inline;border-left-width:0px;border-bottom-width:0px;border-right-width:0px;" height="460" alt="image" src="http://k2underground.com/blogs/rambleon/image_thumb_22A578D8.png" width="695" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;&lt;/p&gt;

&lt;p&gt;&lt;/p&gt;

&lt;p&gt;&lt;/p&gt;

&lt;p&gt;Select this activity. Now provide a nice label for this step in the workflow and then click the Set Properties button. You will now be able to configure the input properties that we defined in our custom workflow activity.&lt;/p&gt;

&lt;p&gt;&lt;a href="http://k2underground.com/blogs/rambleon/image_1ED7AE3B.png"&gt;&lt;img title="image" style="border-top-width:0px;display:inline;border-left-width:0px;border-bottom-width:0px;border-right-width:0px;" height="207" alt="image" src="http://k2underground.com/blogs/rambleon/image_thumb_6ECD5CB9.png" width="512" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;Once you’re done save and publish the CRM workflow and we’re all done. You now have a CRM workflow that when it’s kicked off with initiate a K2 blackpearl process giving you the full benefits of an dedicated business process management platform.&lt;/p&gt;

&lt;p&gt;&amp;#160;&lt;/p&gt;

&lt;h2&gt;Next Up&lt;/h2&gt;

&lt;p&gt;In the next chapter we’ll be adding the K2 Worklist to Dynamics CRM so that users can access all of their K2 blackpearl tasks straight from CRM.&lt;/p&gt;

&lt;p&gt;As I mentioned, all source code for this post and all other posts in this series can be found in the &lt;a href="http://k2underground.com/k2/ProjectHome.aspx?ProjectID=80"&gt;Microsoft Dynamics CRM 4 - blackpearl Integration&lt;/a&gt;&amp;#160;&lt;a href="http://k2underground.com/k2/ProjectLanding.aspx"&gt;blackmarket&lt;/a&gt; project on &lt;a href="http://k2underground.com/"&gt;K2 Underground&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Jonno&lt;/strong&gt;&lt;/p&gt;&lt;img src="http://k2underground.com/aggbug.aspx?PostID=28577" width="1" height="1"&gt;</content><author><name>jonno</name><uri>http://k2underground.com/members/jonno/default.aspx</uri></author><category term="CRM4.0" scheme="http://k2underground.com/blogs/rambleon/archive/tags/CRM4.0/default.aspx" /><category term="CRM4Series" scheme="http://k2underground.com/blogs/rambleon/archive/tags/CRM4Series/default.aspx" /></entry><entry><title>The K2 Book: Professional K2 blackpearl</title><link rel="alternate" type="text/html" href="/blogs/rambleon/archive/2009/01/25/the-k2-book-professional-k2-blackpearl.aspx" /><id>/blogs/rambleon/archive/2009/01/25/the-k2-book-professional-k2-blackpearl.aspx</id><published>2009-01-25T15:00:00Z</published><updated>2009-01-25T15:00:00Z</updated><content type="html">&lt;P&gt;Hi All, &lt;/P&gt;
&lt;P&gt;Just to let you know that the K2 book is now officially available:&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Professional K2 blackpearl&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;IMG title="Professional K2 blackpearl" style="WIDTH:296px;HEIGHT:375px;" height=375 alt="Professional K2 blackpearl" src="http://www.k2underground.com/photos/images/images/28403/296x375.aspx" width=296&gt;&lt;/P&gt;
&lt;P&gt;A brief description of Professional K2 blackpearl is below:&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;EM&gt;Built on Microsoft technologies including Microsoft Office SharePoint Server, SQL Server, Microsoft Office 2007, and Visual Studio 2005 and 2008, the latest K2 [blackpearl] release provides you with mature workflow management systems that can automate processes or pull together people, services, and systems. You’ll get an introduction to workflow and business processes management, planning and administering a K2 infrastructure, and building processes and workflow.&lt;/EM&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Get Your Copy Now&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;Click on the link below:&lt;/P&gt;
&lt;P&gt;You can find more details on the below link:&lt;/P&gt;
&lt;P&gt;&lt;A href="http://www.k2.com/k2book"&gt;http://www.k2.com/k2book&lt;/A&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Enjoy!&lt;/P&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://k2underground.com/aggbug.aspx?PostID=28404" width="1" height="1"&gt;</content><author><name>Shaun</name><uri>http://k2underground.com/members/Shaun/default.aspx</uri></author></entry><entry><title>Server was unable to process request. ---&gt; Object reference not set to an instance of an object.</title><link rel="alternate" type="text/html" href="/blogs/rambleon/archive/2009/01/16/server-was-unable-to-process-request-object-reference-not-set-to-an-instance-of-an-object.aspx" /><id>/blogs/rambleon/archive/2009/01/16/server-was-unable-to-process-request-object-reference-not-set-to-an-instance-of-an-object.aspx</id><published>2009-01-16T14:34:00Z</published><updated>2009-01-16T14:34:00Z</updated><content type="html">&lt;P&gt;Often you will find when working with InfoPath processes you will run into this error on deployment of the K2 process. &lt;/P&gt;
&lt;P&gt;Before you tear your process apart to find the cause of the problem I suggest going into InfoPath (IP), run the Design Checker and make sure there are no IP errors.&lt;/P&gt;
&lt;P&gt;If there are errors&amp;nbsp;fix them before your next deploy. Hopefully that sorts you out!&lt;/P&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://k2underground.com/aggbug.aspx?PostID=28229" width="1" height="1"&gt;</content><author><name>nicholas.kotze@k2workflow.com</name><uri>http://k2underground.com/members/nicholas.kotze_4000_k2workflow.com/default.aspx</uri></author></entry><entry><title>K2 blackpearl French WebCast and LiveMeeting online</title><link rel="alternate" type="text/html" href="/blogs/rambleon/archive/2008/12/11/k2-blackpearl-french-webcast-online.aspx" /><id>/blogs/rambleon/archive/2008/12/11/k2-blackpearl-french-webcast-online.aspx</id><published>2008-12-11T18:08:00Z</published><updated>2008-12-11T18:08:00Z</updated><content type="html">&lt;P&gt;&lt;EM&gt;English bellow&lt;/EM&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Bonjour à tous,&lt;/P&gt;
&lt;P&gt;Une fois n'est pas coutume, je me permets de poster en français pour vous annoncer la mise en ligne de 2 courtes WebCast et&amp;nbsp;1 LiveMeeting en français sur K2 blackpearl sur le site des Microsoft Technet (Windows Live Id requis, si vous n'avez pas de compte,&amp;nbsp;&lt;A class="" href="mailto:jean.cadeau@k2.com" target=_blank&gt;contactez-moi&lt;/A&gt; pour pouvoir les télécharger).&lt;/P&gt;
&lt;OL&gt;
&lt;LI&gt;&lt;A class="" href="http://www.microsoft.com/france/vision/WebcastTechnet.aspx?eid=319d7d5c-4dcd-4a7f-b3d4-857cc960945a" target=_blank&gt;Présentation courte de K2 blackpearl.&lt;/A&gt;&amp;nbsp;(8 minutes)&lt;/LI&gt;
&lt;LI&gt;&lt;A class="" href="http://www.microsoft.com/france/vision/WebcastTechnet.aspx?eid=1f3b351d-aa71-44e3-bfd1-4c7315a3b1a4" target=_blank&gt;Démonstration courte de K2 blackpearl.&lt;/A&gt;&amp;nbsp;(13 minutes)&lt;/LI&gt;
&lt;LI&gt;&lt;A class="" href="https://msevents.microsoft.com/CUI/WebCastEventDetails.aspx?EventID=1032394606&amp;amp;EventCategory=5&amp;amp;culture=fr-FR&amp;amp;CountryCode=FR" target=_blank&gt;Enregistrement du LiveMeeting du 20 Novembre 2008&lt;/A&gt;&amp;nbsp;(45 minutes)&lt;/LI&gt;&lt;/OL&gt;
&lt;DIV id=result_box&gt;English translation ;-)&lt;/DIV&gt;
&lt;DIV&gt;Hello all,&lt;/DIV&gt;
&lt;DIV&gt;Just for once, let me post in French to announce the launch of 2 short French WebCast and 1 LiveMeeting&amp;nbsp;on K2 blackpearl on the&amp;nbsp;Microsoft Technet site (Windows Live Id required, if you do not have an account, please &lt;A class="" href="mailto:jean.cadeau@k2.com" target=_blank&gt;contact me&lt;/A&gt; to download).&lt;/DIV&gt;
&lt;OL&gt;
&lt;LI&gt;
&lt;DIV&gt;&lt;A class="" href="http://www.microsoft.com/france/vision/WebcastTechnet.aspx?eid=319d7d5c-4dcd-4a7f-b3d4-857cc960945a" target=_blank&gt;Quick K2&amp;nbsp;blackpearl presentation.&lt;/A&gt;&amp;nbsp;(8 minutes)&lt;/DIV&gt;&lt;/LI&gt;
&lt;LI&gt;
&lt;DIV&gt;&lt;A class="" href="http://www.microsoft.com/france/vision/WebcastTechnet.aspx?eid=1f3b351d-aa71-44e3-bfd1-4c7315a3b1a4" target=_blank&gt;Quick K2&amp;nbsp;blackpearl demonstration.&lt;/A&gt;&amp;nbsp;(13 minutes)&lt;/DIV&gt;&lt;/LI&gt;
&lt;LI&gt;
&lt;DIV&gt;&lt;A class="" href="https://msevents.microsoft.com/CUI/WebCastEventDetails.aspx?EventID=1032394606&amp;amp;EventCategory=5&amp;amp;culture=fr-FR&amp;amp;CountryCode=FR" target=_blank&gt;20th November 2008, LiveMeeting Record&lt;/A&gt;. (45 minutes)&lt;/DIV&gt;&lt;/LI&gt;&lt;/OL&gt;
&lt;P&gt;&lt;FONT size=1&gt;-- by Jean Cadeau&lt;/FONT&gt;&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=27697" width="1" height="1"&gt;</content><author><name>jan</name><uri>http://k2underground.com/members/jan/default.aspx</uri></author><category term="general" scheme="http://k2underground.com/blogs/rambleon/archive/tags/general/default.aspx" /></entry><entry><title>Email Enabling a Document Library in SharePoint</title><link rel="alternate" type="text/html" href="/blogs/rambleon/archive/2008/12/03/email-enabling-a-document-library-in-sharepoint.aspx" /><id>/blogs/rambleon/archive/2008/12/03/email-enabling-a-document-library-in-sharepoint.aspx</id><published>2008-12-03T11:36:00Z</published><updated>2008-12-03T11:36:00Z</updated><content type="html">&lt;SPAN style="FONT-SIZE:10pt;FONT-FAMILY:'Arial','sans-serif';"&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;"&gt;&lt;SPAN style="FONT-FAMILY:'Calibri','sans-serif';mso-bidi-font-family:Arial;mso-fareast-language:EN-GB;"&gt;&lt;FONT size=3&gt;This is quite a useful feature of SharePoint if you would like to start a K2 process based on the retrieval of an email. SharePoint even allows you to manage the attachments of the email with one of the following options:&lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:'Calibri','sans-serif';mso-bidi-font-family:Arial;mso-fareast-language:EN-GB;"&gt;&lt;o:p&gt;&lt;FONT size=3&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI class=MsoNormal style="MARGIN:0cm 0cm 0pt;mso-list:l0 level1 lfo1;tab-stops:list 36.0pt;mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;"&gt;&lt;SPAN style="FONT-FAMILY:'Calibri','sans-serif';mso-bidi-font-family:Arial;mso-fareast-language:EN-GB;"&gt;&lt;FONT size=3&gt;Save all attachments in root folder&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI class=MsoNormal style="MARGIN:0cm 0cm 0pt;mso-list:l0 level1 lfo1;tab-stops:list 36.0pt;mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;"&gt;&lt;SPAN style="FONT-FAMILY:'Calibri','sans-serif';mso-bidi-font-family:Arial;mso-fareast-language:EN-GB;"&gt;&lt;FONT size=3&gt;Save all attachments in folders grouped by e-mail subject&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI class=MsoNormal style="MARGIN:0cm 0cm 0pt;mso-list:l0 level1 lfo1;tab-stops:list 36.0pt;mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;"&gt;&lt;SPAN style="FONT-FAMILY:'Calibri','sans-serif';mso-bidi-font-family:Arial;mso-fareast-language:EN-GB;"&gt;&lt;FONT size=3&gt;Save all attachments in folders grouped by e-mail sender &lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/LI&gt;&lt;/UL&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;"&gt;&lt;SPAN style="FONT-SIZE:12pt;FONT-FAMILY:'Calibri','sans-serif';mso-bidi-font-family:Arial;mso-fareast-font-family:'Times New Roman';mso-ansi-language:EN-US;mso-fareast-language:EN-GB;mso-bidi-language:AR-SA;"&gt;Follow these easy steps to email&amp;nbsp;enable your&amp;nbsp;SharePoint document library.&lt;/SPAN&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;SPAN style="FONT-SIZE:12pt;FONT-FAMILY:'Calibri','sans-serif';mso-bidi-font-family:Arial;mso-fareast-font-family:'Times New Roman';mso-ansi-language:EN-US;mso-fareast-language:EN-GB;mso-bidi-language:AR-SA;"&gt;&lt;SPAN style="FONT-FAMILY:'Calibri','sans-serif';mso-bidi-font-family:Arial;mso-fareast-language:EN-GB;"&gt;Ensure the Windows SharePoint Services Timer (owstimer.exe) Service is running&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE:12pt;FONT-FAMILY:'Calibri','sans-serif';mso-bidi-font-family:Arial;mso-fareast-font-family:'Times New Roman';mso-ansi-language:EN-US;mso-fareast-language:EN-GB;mso-bidi-language:AR-SA;"&gt;&lt;SPAN style="FONT-FAMILY:'Calibri','sans-serif';mso-bidi-font-family:Arial;mso-fareast-language:EN-GB;"&gt;&amp;nbsp;&lt;IMG title="Start service" style="WIDTH:650px;HEIGHT:571px;" height=571 alt="Start service" src="http://www.kotze.com/emailenable0.jpg" width=650&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;SPAN style="FONT-SIZE:12pt;FONT-FAMILY:'Calibri','sans-serif';mso-bidi-font-family:Arial;mso-fareast-font-family:'Times New Roman';mso-ansi-language:EN-US;mso-fareast-language:EN-GB;mso-bidi-language:AR-SA;"&gt;&lt;SPAN style="FONT-FAMILY:'Calibri','sans-serif';mso-bidi-font-family:Arial;mso-fareast-language:EN-GB;"&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:'Calibri','sans-serif';mso-bidi-font-family:Arial;mso-fareast-language:EN-GB;"&gt;Open SharePoint Central Administration&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;SPAN style="FONT-SIZE:12pt;FONT-FAMILY:'Calibri','sans-serif';mso-bidi-font-family:Arial;mso-fareast-font-family:'Times New Roman';mso-ansi-language:EN-US;mso-fareast-language:EN-GB;mso-bidi-language:AR-SA;"&gt;&lt;SPAN style="FONT-FAMILY:'Calibri','sans-serif';mso-bidi-font-family:Arial;mso-fareast-language:EN-GB;"&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:'Calibri','sans-serif';mso-bidi-font-family:Arial;mso-fareast-language:EN-GB;"&gt;Go to the Operations, Incoming E-mail Settings&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;SPAN style="FONT-SIZE:12pt;FONT-FAMILY:'Calibri','sans-serif';mso-bidi-font-family:Arial;mso-fareast-font-family:'Times New Roman';mso-ansi-language:EN-US;mso-fareast-language:EN-GB;mso-bidi-language:AR-SA;"&gt;&lt;SPAN style="FONT-FAMILY:'Calibri','sans-serif';mso-bidi-font-family:Arial;mso-fareast-language:EN-GB;"&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:'Calibri','sans-serif';mso-bidi-font-family:Arial;mso-fareast-language:EN-GB;"&gt;Enable Incoming E-mail, Settings Mode: Advanced&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;SPAN style="FONT-SIZE:12pt;FONT-FAMILY:'Calibri','sans-serif';mso-bidi-font-family:Arial;mso-fareast-font-family:'Times New Roman';mso-ansi-language:EN-US;mso-fareast-language:EN-GB;mso-bidi-language:AR-SA;"&gt;&lt;SPAN style="FONT-FAMILY:'Calibri','sans-serif';mso-bidi-font-family:Arial;mso-fareast-language:EN-GB;"&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:'Calibri','sans-serif';mso-bidi-font-family:Arial;mso-fareast-language:EN-GB;"&gt;Set E-mail Drop Folder to c:\inetpub\mailroot\drop&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE:12pt;FONT-FAMILY:'Calibri','sans-serif';mso-bidi-font-family:Arial;mso-fareast-font-family:'Times New Roman';mso-ansi-language:EN-US;mso-fareast-language:EN-GB;mso-bidi-language:AR-SA;"&gt;&lt;SPAN style="FONT-FAMILY:'Calibri','sans-serif';mso-bidi-font-family:Arial;mso-fareast-language:EN-GB;"&gt;&lt;IMG src="http://www.kotze.com/emailenable1.jpg"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;SPAN style="FONT-SIZE:12pt;FONT-FAMILY:'Calibri','sans-serif';mso-bidi-font-family:Arial;mso-fareast-font-family:'Times New Roman';mso-ansi-language:EN-US;mso-fareast-language:EN-GB;mso-bidi-language:AR-SA;"&gt;&lt;SPAN style="FONT-FAMILY:'Calibri','sans-serif';mso-bidi-font-family:Arial;mso-fareast-language:EN-GB;"&gt;Open Internet Information Services (IIS) Manager&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;SPAN style="FONT-SIZE:12pt;FONT-FAMILY:'Calibri','sans-serif';mso-bidi-font-family:Arial;mso-fareast-font-family:'Times New Roman';mso-ansi-language:EN-US;mso-fareast-language:EN-GB;mso-bidi-language:AR-SA;"&gt;&lt;SPAN style="FONT-FAMILY:'Calibri','sans-serif';mso-bidi-font-family:Arial;mso-fareast-language:EN-GB;"&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:'Calibri','sans-serif';mso-bidi-font-family:Arial;"&gt;Right click on Default SMTP Virtual Server and select Properties&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;SPAN style="FONT-SIZE:12pt;FONT-FAMILY:'Calibri','sans-serif';mso-bidi-font-family:Arial;mso-fareast-font-family:'Times New Roman';mso-ansi-language:EN-US;mso-fareast-language:EN-GB;mso-bidi-language:AR-SA;"&gt;&lt;SPAN style="FONT-FAMILY:'Calibri','sans-serif';mso-bidi-font-family:Arial;"&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:'Calibri','sans-serif';mso-bidi-font-family:Arial;"&gt;Go to the Access Tab&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;SPAN style="FONT-SIZE:12pt;FONT-FAMILY:'Calibri','sans-serif';mso-bidi-font-family:Arial;mso-fareast-font-family:'Times New Roman';mso-ansi-language:EN-US;mso-fareast-language:EN-GB;mso-bidi-language:AR-SA;"&gt;&lt;SPAN style="FONT-FAMILY:'Calibri','sans-serif';mso-bidi-font-family:Arial;"&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:'Calibri','sans-serif';mso-bidi-font-family:Arial;"&gt;In both Connection Control and Relay Restrictions ensure that “All except the list below” is selected&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;SPAN style="FONT-SIZE:12pt;FONT-FAMILY:'Calibri','sans-serif';mso-bidi-font-family:Arial;mso-fareast-font-family:'Times New Roman';mso-ansi-language:EN-US;mso-fareast-language:EN-GB;mso-bidi-language:AR-SA;"&gt;&lt;SPAN style="FONT-FAMILY:'Calibri','sans-serif';mso-bidi-font-family:Arial;"&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:'Calibri','sans-serif';mso-bidi-font-family:Arial;"&gt;Go to your List or Document library Settings, select Incoming e-mail settings&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE:12pt;FONT-FAMILY:'Calibri','sans-serif';mso-bidi-font-family:Arial;mso-fareast-font-family:'Times New Roman';mso-ansi-language:EN-US;mso-fareast-language:EN-GB;mso-bidi-language:AR-SA;"&gt;&lt;SPAN style="FONT-FAMILY:'Calibri','sans-serif';mso-bidi-font-family:Arial;"&gt;&amp;nbsp;&lt;IMG src="http://www.kotze.com/emailenable2.jpg"&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;SPAN style="FONT-SIZE:12pt;FONT-FAMILY:'Calibri','sans-serif';mso-bidi-font-family:Arial;mso-fareast-font-family:'Times New Roman';mso-ansi-language:EN-US;mso-fareast-language:EN-GB;mso-bidi-language:AR-SA;"&gt;&lt;SPAN style="FONT-FAMILY:'Calibri','sans-serif';mso-bidi-font-family:Arial;"&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:'Calibri','sans-serif';mso-bidi-font-family:Arial;"&gt;Allow this document library to receive e-mail? Yes&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;SPAN style="FONT-SIZE:12pt;FONT-FAMILY:'Calibri','sans-serif';mso-bidi-font-family:Arial;mso-fareast-font-family:'Times New Roman';mso-ansi-language:EN-US;mso-fareast-language:EN-GB;mso-bidi-language:AR-SA;"&gt;&lt;SPAN style="FONT-FAMILY:'Calibri','sans-serif';mso-bidi-font-family:Arial;"&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:'Calibri','sans-serif';mso-bidi-font-family:Arial;mso-fareast-language:EN-GB;"&gt;Specify e-mail address&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE:12pt;FONT-FAMILY:'Calibri','sans-serif';mso-bidi-font-family:Arial;mso-fareast-font-family:'Times New Roman';mso-ansi-language:EN-US;mso-fareast-language:EN-GB;mso-bidi-language:AR-SA;"&gt;&lt;SPAN style="FONT-FAMILY:'Calibri','sans-serif';mso-bidi-font-family:Arial;mso-fareast-language:EN-GB;"&gt;&lt;IMG src="http://www.kotze.com/emailenable3.jpg"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;"&gt;&lt;SPAN style="FONT-FAMILY:'Calibri','sans-serif';mso-bidi-font-family:Arial;"&gt;It's true that email enabled lists is an option in WSS 3.0 not just MOSS 2007. But be cautious as to the limitations of SharePoint and do thorough research as to the reasons you want to email enable your list in SharePoint. Here are some sites to use as a starting point:&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;"&gt;&lt;SPAN style="FONT-FAMILY:'Calibri','sans-serif';mso-bidi-font-family:Arial;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;"&gt;&lt;SPAN style="FONT-FAMILY:'Calibri','sans-serif';mso-bidi-font-family:Arial;"&gt;&lt;A href="http://blogs.msdn.com/joelo/archive/2007/10/23/email-enabled-lists-and-inbound-email.aspx"&gt;http://blogs.msdn.com/joelo/archive/2007/10/23/email-enabled-lists-and-inbound-email.aspx&lt;/A&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;"&gt;&lt;SPAN style="FONT-FAMILY:'Calibri','sans-serif';mso-bidi-font-family:Arial;"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;"&gt;&lt;SPAN style="FONT-FAMILY:'Calibri','sans-serif';mso-bidi-font-family:Arial;"&gt;&lt;A href="http://www.combined-knowledge.com/Downloads/How%20to%20configure%20Email%20Enabled%20Lists%20in%20Moss2007%20RTM%20using%20Exchange%202003.pdf"&gt;http://www.combined-knowledge.com/Downloads/How%20to%20configure%20Email%20Enabled%20Lists%20in%20Moss2007%20RTM%20using%20Exchange%202003.pdf&lt;/A&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE:10pt;FONT-FAMILY:'Arial','sans-serif';"&gt;&lt;SPAN style="FONT-SIZE:11pt;FONT-FAMILY:'Calibri','sans-serif';mso-bidi-font-family:'Times New Roman';mso-fareast-font-family:Calibri;mso-ansi-language:EN-GB;mso-fareast-language:EN-GB;mso-bidi-language:AR-SA;mso-fareast-theme-font:minor-latin;"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;"&gt;&lt;BR style="mso-special-character:line-break;"&gt;&lt;/P&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;"&gt;&lt;SPAN style="FONT-SIZE:10pt;FONT-FAMILY:'Arial','sans-serif';"&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;"&gt;&lt;SPAN style="FONT-SIZE:10pt;FONT-FAMILY:'Arial','sans-serif';"&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;"&gt;&lt;SPAN style="FONT-SIZE:10pt;FONT-FAMILY:'Arial','sans-serif';"&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/P&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://k2underground.com/aggbug.aspx?PostID=27570" width="1" height="1"&gt;</content><author><name>nicholas.kotze@k2workflow.com</name><uri>http://k2underground.com/members/nicholas.kotze_4000_k2workflow.com/default.aspx</uri></author><category term="SharePoint" scheme="http://k2underground.com/blogs/rambleon/archive/tags/SharePoint/default.aspx" /></entry><entry><title>TechEd EMEA 2008 Competition Winners</title><link rel="alternate" type="text/html" href="/blogs/rambleon/archive/2008/11/14/teched-emea-2008-competition-winners.aspx" /><id>/blogs/rambleon/archive/2008/11/14/teched-emea-2008-competition-winners.aspx</id><published>2008-11-14T13:03:00Z</published><updated>2008-11-14T13:03:00Z</updated><content type="html">&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;"&gt;&lt;SPAN style="FONT-FAMILY:'Calibri','sans-serif';mso-ascii-theme-font:minor-latin;mso-hansi-theme-font:minor-latin;"&gt;&lt;FONT size=3&gt;TechEd 2008 comes to an end and we wrapped up the final day by announcing the competition winner Anders Mikkelsen from Carlsberg IT. It was a great turn out with many of the delegates showing their support for K2 by wearing their K2 branded shirts. &lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;"&gt;&lt;SPAN style="FONT-FAMILY:'Calibri','sans-serif';mso-ascii-theme-font:minor-latin;mso-hansi-theme-font:minor-latin;"&gt;&lt;o:p&gt;&lt;FONT size=3&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;"&gt;&lt;SPAN style="FONT-FAMILY:'Calibri','sans-serif';mso-ascii-theme-font:minor-latin;mso-hansi-theme-font:minor-latin;"&gt;&lt;FONT size=3&gt;It was a very successful event and we hope to see you at TechEd 2009 in Berlin.&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;"&gt;&lt;SPAN style="FONT-FAMILY:'Calibri','sans-serif';mso-ascii-theme-font:minor-latin;mso-hansi-theme-font:minor-latin;"&gt;&lt;FONT size=3&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;"&gt;&lt;SPAN style="FONT-FAMILY:'Calibri','sans-serif';mso-ascii-theme-font:minor-latin;mso-hansi-theme-font:minor-latin;"&gt;&lt;FONT size=3&gt;&lt;IMG title="Competition Winner" style="WIDTH:599px;HEIGHT:505px;" height=505 alt="Competition Winner" src="http://www.kotze.com/competition.jpg" width=599&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://k2underground.com/aggbug.aspx?PostID=27278" width="1" height="1"&gt;</content><author><name>nicholas.kotze@k2workflow.com</name><uri>http://k2underground.com/members/nicholas.kotze_4000_k2workflow.com/default.aspx</uri></author></entry></feed>