<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://www.crowehorwath.com/cs/utility/FeedStylesheets/atom.xsl" media="screen"?><feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en"><title type="html">CRM Blog</title><subtitle type="html">We will be aiming to be just a little different with this blog. We will cover everything around CRM technology with a focus on Microsoft CRM but more importantly we will also be covering the CRM business and processes around it. CRM, when implemented correctly can be a great asset to an organization and in contrast when implemented badly can simply become an expensive and underutilized contact management system. 

A blog is only as successful as its audience or readership, therefore please feel free to post feedback about anything we post. If there is an area about CRM you would like to see discussed let us know and maybe one of our bloggers can post an article about it. 
Keep reading the blog as we go beyond the technology and discuss what it takes to implement a successful CRM solution. 

Thanks for stopping by and don&amp;#39;t forget to subscribe.
</subtitle><id>http://www.crowehorwath.com/cs/blogs/crm/atom.aspx</id><link rel="alternate" type="text/html" href="http://www.crowehorwath.com/cs/blogs/crm/default.aspx" /><link rel="self" type="application/atom+xml" href="http://www.crowehorwath.com/cs/blogs/crm/atom.aspx" /><generator uri="http://communityserver.org" version="3.0.20611.960">Community Server</generator><updated>2009-01-15T15:08:00Z</updated><entry><title>The Other Blue Screen of Death: the Blank Report Pre-Filter</title><link rel="alternate" type="text/html" href="http://www.crowehorwath.com/cs/blogs/crm/archive/2009/04/16/the-other-blue-screen-of-death-the-blank-report-pre-filter.aspx" /><id>http://www.crowehorwath.com/cs/blogs/crm/archive/2009/04/16/the-other-blue-screen-of-death-the-blank-report-pre-filter.aspx</id><published>2009-04-16T17:06:00Z</published><updated>2009-04-16T17:06:00Z</updated><content type="html">&lt;p&gt;Upon opening a report with a pre-filter, you expect to be presented with a query builder that will allow you to search for accounts, contacts or other CRM entity&amp;nbsp;by location, owner, or any other field on the respective entity. Something that looks like this:&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.crowehorwath.com/cs/blogs/crm/slane/bsod/non_bsod.jpg"&gt;&lt;/a&gt;&lt;a href="http://www.crowehorwath.com/cs/blogs/crm/slane/bsod/bsod.jpg"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.crowehorwath.com/cs/blogs/crm/slane/bsod/non_bsod.jpg"&gt;&lt;img src="http://www.crowehorwath.com/cs/blogs/crm/slane/bsod/non_bsod.jpg" border="0" alt="" /&gt;&lt;/a&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;What do you do then, when instead you see this (and only this. Nothing&amp;#39;s loading. It&amp;#39;s &amp;quot;Done.&amp;quot;):&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.crowehorwath.com/cs/blogs/crm/slane/bsod/bsod.jpg"&gt;&lt;img src="http://www.crowehorwath.com/cs/blogs/crm/slane/bsod/bsod.jpg" border="0" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;The pre-filter is blank and there doesn&amp;#39;t seem to be an error anywhere. Attempting to &amp;quot;Edit the&amp;nbsp;default filter...&amp;quot; results in the same empty, blue screen. In this case, the filter was loading correctly in the past, but now something is clearly wrong.&lt;/p&gt;
&lt;p&gt;Let&amp;#39;s go back to what the pre-filted &lt;em&gt;&lt;strong&gt;should&lt;/strong&gt;&lt;/em&gt; look like. It &lt;em&gt;&lt;strong&gt;should&lt;/strong&gt;&lt;/em&gt; allow users to filter Accounts&amp;nbsp;by specific Account, Address 1, Category, or a custom attribute called Rating.&amp;nbsp;After minutes of trying to connect the mental dots,&amp;nbsp;I realized that I&amp;nbsp;intentionally deleted one of the Rating attribute because it was no longer needed. Ah ha!&lt;/p&gt;
&lt;p&gt;Turns out that, although CRM will not allow you to delete attributes that are on a published form, you are able to delete an attribute that is used on a report pre-filter. However, the fact that the attribute has been deleted keeps the pre-filter from being rendered.&lt;/p&gt;
&lt;p&gt;To fix this, there are a couple of options. &lt;/p&gt;
&lt;p&gt;If you know the name of the attribute the filter can&amp;#39;t find, you can simply create a dummy attribute with that name, publish the entity with your attribute, edit the report&amp;#39;s default filter and remove the dummy attribute from the report pre-filtered. Delete the dummy attribute from the entity and all it well again.&lt;/p&gt;
&lt;p&gt;If you don&amp;#39;t know the name of the attribute or would just like an excuse to dig around in the database, you can also edit the report filter&amp;#39;s XML.&lt;/p&gt;
&lt;p&gt;In your organization&amp;#39;s CRM database, there is a table called ReportBase. Opening that table, you&amp;#39;ll find all of the versions of the reports that are available or were available. To figure out which report you&amp;#39;re working with, grab the GUID from the URL of the report pre-filter and query the ReportBase table for the record with that ReportId. That record will have a DefaultFilter field, which contains the pre-filter&amp;#39;s XML. Once formatted correctly, it should look something like this:&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.crowehorwath.com/cs/blogs/crm/slane/bsod/xml.png"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.crowehorwath.com/cs/blogs/crm/slane/bsod/xml.png"&gt;&lt;img src="http://www.crowehorwath.com/cs/blogs/crm/slane/bsod/xml.png" border="0" alt="" /&gt;&lt;/a&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;To get the my report pre-filter to render, I can remove the element specifying the deleted attribute as a condition, in this case the line containing &amp;quot;new_rating.&amp;quot; Once I&amp;#39;ve done that I can simply copy the XML back into the DefaultFilter field for that report and the pre-filter will render.&lt;/p&gt;
&lt;p&gt;Although this fix is a little in-depth and should only be attempted by those very comfortable with the CRM database, it is a workaround if you&amp;#39;re in a bind and do not want to have to re-create a report.&lt;/p&gt;&lt;img src="http://www.crowehorwath.com/cs/aggbug.aspx?PostID=18172" width="1" height="1"&gt;</content><author><name>LANESR</name><uri>http://www.crowehorwath.com/cs/members/LANESR.aspx</uri></author><category term="Technical Tips" scheme="http://www.crowehorwath.com/cs/blogs/crm/archive/tags/Technical+Tips/default.aspx" /></entry><entry><title>Example Of Deactivating An Entity</title><link rel="alternate" type="text/html" href="http://www.crowehorwath.com/cs/blogs/crm/archive/2009/03/06/example-of-deactivating-an-entity.aspx" /><id>http://www.crowehorwath.com/cs/blogs/crm/archive/2009/03/06/example-of-deactivating-an-entity.aspx</id><published>2009-03-06T23:12:00Z</published><updated>2009-03-06T23:12:00Z</updated><content type="html">&lt;p style="FONT-SIZE:11pt;MARGIN:0in;FONT-FAMILY:Calibri;"&gt;One of the least published example of CRM code is deactivating an entity, probably because it&amp;#39;s not used as often as creating, updating or retrieving entities.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;Below is an example I&amp;#39;ve used on several occasions to deactivate an entity:&lt;/p&gt;
&lt;p style="FONT-SIZE:11pt;MARGIN:0in;FONT-FAMILY:Calibri;"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="FONT-SIZE:11pt;MARGIN:0in;FONT-FAMILY:Calibri;"&gt;public void DeactivateEntity(Guid entityId)&lt;/p&gt;
&lt;p style="FONT-SIZE:11pt;MARGIN:0in;FONT-FAMILY:Calibri;"&gt;{&lt;/p&gt;
&lt;p style="FONT-SIZE:11pt;MARGIN:0in 0in 0in 0.375in;COLOR:green;FONT-FAMILY:Calibri;"&gt;//variable initialization&lt;/p&gt;
&lt;p style="FONT-SIZE:11pt;MARGIN:0in;FONT-FAMILY:Calibri;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;SetStateDynamicEntityRequest deactivateReq = new SetStateDynamicEntityRequest();&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/p&gt;
&lt;p style="FONT-SIZE:11pt;MARGIN:0in;FONT-FAMILY:Calibri;"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="FONT-SIZE:11pt;MARGIN:0in;FONT-FAMILY:Calibri;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="COLOR:green;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&lt;/span&gt;//deactivate the cloned assignment&lt;/span&gt;&lt;/p&gt;
&lt;p style="FONT-SIZE:11pt;MARGIN:0in;FONT-FAMILY:Calibri;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;deactivateReq = new SetStateDynamicEntityRequest();&lt;/p&gt;
&lt;p style="FONT-SIZE:11pt;MARGIN:0in;FONT-FAMILY:Calibri;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;deactivateReq.State = &amp;quot;Inactive&amp;quot;;&lt;/p&gt;
&lt;p style="FONT-SIZE:11pt;MARGIN:0in;FONT-FAMILY:Calibri;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;deactivateReq.Status = 2;&lt;/p&gt;
&lt;p style="FONT-SIZE:11pt;MARGIN:0in;FONT-FAMILY:Calibri;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;deactivateReq.Entity = new Moniker();&lt;/p&gt;
&lt;p style="FONT-SIZE:11pt;MARGIN:0in;FONT-FAMILY:Calibri;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;deactivateReq.Entity.Name = &amp;lt;entity name&amp;gt;&lt;/p&gt;
&lt;p style="FONT-SIZE:11pt;MARGIN:0in;FONT-FAMILY:Calibri;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;deactivateReq.Entity.Id = entityId;&lt;/p&gt;
&lt;p style="FONT-SIZE:11pt;MARGIN:0in;FONT-FAMILY:Calibri;"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="FONT-SIZE:11pt;MARGIN:0in 0in 0in 0.375in;COLOR:green;FONT-FAMILY:Calibri;"&gt;//execute the deactivation request&lt;/p&gt;
&lt;p style="FONT-SIZE:11pt;MARGIN:0in;FONT-FAMILY:Calibri;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;service.Execute(deactivateReq);&lt;/p&gt;
&lt;p style="FONT-SIZE:11pt;MARGIN:0in;FONT-FAMILY:Calibri;"&gt;}&lt;/p&gt;&lt;img src="http://www.crowehorwath.com/cs/aggbug.aspx?PostID=14081" width="1" height="1"&gt;</content><author><name>VARGHESED</name><uri>http://www.crowehorwath.com/cs/members/VARGHESED.aspx</uri></author><category term="Technical Tips" scheme="http://www.crowehorwath.com/cs/blogs/crm/archive/tags/Technical+Tips/default.aspx" /></entry><entry><title>Example of Dynamic Entity Update</title><link rel="alternate" type="text/html" href="http://www.crowehorwath.com/cs/blogs/crm/archive/2009/03/05/example-of-dynamic-entity-update.aspx" /><id>http://www.crowehorwath.com/cs/blogs/crm/archive/2009/03/05/example-of-dynamic-entity-update.aspx</id><published>2009-03-05T23:11:00Z</published><updated>2009-03-05T23:11:00Z</updated><content type="html">&lt;p style="FONT-SIZE:11pt;MARGIN:0in;FONT-FAMILY:Calibri;"&gt;I have seen numerous requests on other blogs about sample code to on how to update entities in CRM.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;One way is to use the CRM web service to update business entities, however by doing so, you&amp;#39;re only limited to out-of-the-box entities with system attributes.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;To retrieve anything more &amp;quot;dynamic,&amp;quot; you&amp;#39;ll have to employ other methods.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;Please remember that in order to update any record, you must have the proper permissions on that entity.&lt;/p&gt;
&lt;p style="FONT-SIZE:11pt;MARGIN:0in;FONT-FAMILY:Calibri;"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="FONT-SIZE:11pt;MARGIN:0in;FONT-FAMILY:Calibri;"&gt;Below is a code example of how to update a record:&lt;/p&gt;
&lt;p style="FONT-SIZE:11pt;MARGIN:0in;FONT-FAMILY:Calibri;"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="FONT-SIZE:11pt;MARGIN:0in;FONT-FAMILY:Calibri;"&gt;public void UpdateEntity(ICrmService service)&lt;/p&gt;
&lt;p style="FONT-SIZE:11pt;MARGIN:0in;FONT-FAMILY:Calibri;"&gt;{&lt;/p&gt;
&lt;p style="FONT-SIZE:11pt;MARGIN:0in 0in 0in 0.375in;COLOR:green;FONT-FAMILY:Calibri;"&gt;//variable initialization&lt;/p&gt;
&lt;p style="FONT-SIZE:11pt;MARGIN:0in;FONT-FAMILY:Calibri;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;DynamicEntity entity = new DynamicEntity();&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="COLOR:green;"&gt;//target entity to update&lt;/span&gt;&lt;/p&gt;
&lt;p style="FONT-SIZE:11pt;MARGIN:0in;FONT-FAMILY:Calibri;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;TargetUpdateDynamic targetUpdate = new TargetUpdateDynamic();&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="COLOR:green;"&gt;//used to update entity&lt;/span&gt;&lt;/p&gt;
&lt;p style="FONT-SIZE:11pt;MARGIN:0in;FONT-FAMILY:Calibri;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;UpdateRequest updateRequest = new UpdateRequest();&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="COLOR:green;"&gt;//request to update entity&lt;/span&gt;&lt;/p&gt;
&lt;p style="FONT-SIZE:11pt;MARGIN:0in;FONT-FAMILY:Calibri;"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="FONT-SIZE:11pt;MARGIN:0in 0in 0in 0.375in;FONT-FAMILY:Calibri;"&gt;entity.Name = &amp;lt;entity name&amp;gt;&lt;/p&gt;
&lt;p style="FONT-SIZE:11pt;MARGIN:0in;FONT-FAMILY:Calibri;"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="FONT-SIZE:11pt;MARGIN:0in 0in 0in 0.375in;COLOR:green;FONT-FAMILY:Calibri;"&gt;//add the properties you want to update on the entity&lt;/p&gt;
&lt;p style="FONT-SIZE:11pt;MARGIN:0in 0in 0in 0.375in;FONT-FAMILY:Calibri;"&gt;entity.Properties.Add(&amp;lt;property1&amp;gt;);&lt;/p&gt;
&lt;p style="FONT-SIZE:11pt;MARGIN:0in 0in 0in 0.375in;FONT-FAMILY:Calibri;"&gt;entity.Properties.Add(&amp;lt;property2&amp;gt;);&lt;/p&gt;
&lt;p style="FONT-SIZE:11pt;MARGIN:0in 0in 0in 0.375in;FONT-FAMILY:Calibri;"&gt;entity.Properties.Add(&amp;lt;property3&amp;gt;);&lt;/p&gt;
&lt;p style="FONT-SIZE:11pt;MARGIN:0in;FONT-FAMILY:Calibri;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/p&gt;
&lt;p style="FONT-SIZE:11pt;MARGIN:0in 0in 0in 0.375in;COLOR:green;FONT-FAMILY:Calibri;"&gt;//set the target to update, and the request to update for&lt;/p&gt;
&lt;p style="FONT-SIZE:11pt;MARGIN:0in 0in 0in 0.375in;FONT-FAMILY:Calibri;"&gt;targetUpdate.Entity = entity;&lt;/p&gt;
&lt;p style="FONT-SIZE:11pt;MARGIN:0in 0in 0in 0.375in;FONT-FAMILY:Calibri;"&gt;updateRequest.Target = targetUpdate;&lt;/p&gt;
&lt;p style="FONT-SIZE:11pt;MARGIN:0in;FONT-FAMILY:Calibri;"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="FONT-SIZE:11pt;MARGIN:0in 0in 0in 0.375in;COLOR:green;FONT-FAMILY:Calibri;"&gt;//execute the update request&lt;/p&gt;
&lt;p style="FONT-SIZE:11pt;MARGIN:0in 0in 0in 0.375in;FONT-FAMILY:Calibri;"&gt;service.Execute(updateRequest);&lt;/p&gt;
&lt;p style="FONT-SIZE:11pt;MARGIN:0in;FONT-FAMILY:Calibri;"&gt;}&lt;/p&gt;&lt;img src="http://www.crowehorwath.com/cs/aggbug.aspx?PostID=14080" width="1" height="1"&gt;</content><author><name>VARGHESED</name><uri>http://www.crowehorwath.com/cs/members/VARGHESED.aspx</uri></author><category term="Technical Tips" scheme="http://www.crowehorwath.com/cs/blogs/crm/archive/tags/Technical+Tips/default.aspx" /></entry><entry><title>E-mail Field - Open In Outlook or E-mail Activity</title><link rel="alternate" type="text/html" href="http://www.crowehorwath.com/cs/blogs/crm/archive/2009/03/04/e-mail-field-open-in-outlook-or-e-mail-activity.aspx" /><id>http://www.crowehorwath.com/cs/blogs/crm/archive/2009/03/04/e-mail-field-open-in-outlook-or-e-mail-activity.aspx</id><published>2009-03-04T23:09:00Z</published><updated>2009-03-04T23:09:00Z</updated><content type="html">&lt;p style="FONT-SIZE:11pt;MARGIN:0in;FONT-FAMILY:Calibri;"&gt;Here&amp;#39;s a simple JavaScript customization to enable an e-mail field, once filled in, have a user double-click it and open your default e-mail client with the address in the &amp;quot;To&amp;quot; field.&lt;/p&gt;
&lt;p style="FONT-SIZE:11pt;MARGIN:0in;FONT-FAMILY:Calibri;"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="FONT-SIZE:11pt;MARGIN:0in;FONT-FAMILY:Calibri;"&gt;if(crmForm.FormType == 1 || crmForm.FormType == 2)&lt;/p&gt;
&lt;p style="FONT-SIZE:11pt;MARGIN:0in;FONT-FAMILY:Calibri;"&gt;{&lt;/p&gt;
&lt;p style="FONT-SIZE:11pt;MARGIN:0in;FONT-FAMILY:Calibri;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; crmForm.all.emailaddress1.ondblclick = function() &lt;/p&gt;
&lt;p style="FONT-SIZE:11pt;MARGIN:0in;FONT-FAMILY:Calibri;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/p&gt;
&lt;p style="FONT-SIZE:11pt;MARGIN:0in;FONT-FAMILY:Calibri;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; var email = crmForm.all.emailaddress1.DataValue;&lt;/p&gt;
&lt;p style="FONT-SIZE:11pt;MARGIN:0in;FONT-FAMILY:Calibri;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if ((email != null) &amp;amp;&amp;amp; (email.length &amp;gt; 0)) &lt;/p&gt;
&lt;p style="FONT-SIZE:11pt;MARGIN:0in;FONT-FAMILY:Calibri;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/p&gt;
&lt;p style="FONT-SIZE:11pt;MARGIN:0in;FONT-FAMILY:Calibri;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="FONT-WEIGHT:bold;COLOR:red;"&gt;window.navigate(&amp;quot;mailto:&amp;quot; + email);&lt;/span&gt;&lt;/p&gt;
&lt;p style="FONT-SIZE:11pt;MARGIN:0in;FONT-FAMILY:Calibri;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/p&gt;
&lt;p style="FONT-SIZE:11pt;MARGIN:0in;FONT-FAMILY:Calibri;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/p&gt;
&lt;p style="FONT-SIZE:11pt;MARGIN:0in;FONT-FAMILY:Calibri;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/p&gt;
&lt;p style="FONT-SIZE:11pt;MARGIN:0in;FONT-FAMILY:Calibri;"&gt;}&lt;/p&gt;
&lt;p style="FONT-SIZE:11pt;MARGIN:0in;FONT-FAMILY:Calibri;"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="FONT-SIZE:11pt;MARGIN:0in;FONT-FAMILY:Calibri;"&gt;Now if you want to make CRM open an e-mail activity instead of the default e-mail client, you can use the following code (when sending the email, CRM will use email address 1 regardless of what field was dobule clicked):&lt;/p&gt;
&lt;p style="FONT-SIZE:11pt;MARGIN:0in;FONT-FAMILY:Calibri;"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="FONT-SIZE:11pt;MARGIN:0in;FONT-FAMILY:Calibri;"&gt;if(crmForm.FormType == 1 || crmForm.FormType == 2)&lt;/p&gt;
&lt;p style="FONT-SIZE:11pt;MARGIN:0in;FONT-FAMILY:Calibri;"&gt;{&lt;/p&gt;
&lt;p style="FONT-SIZE:11pt;MARGIN:0in;FONT-FAMILY:Calibri;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; crmForm.all.emailaddress1.ondblclick = function() &lt;/p&gt;
&lt;p style="FONT-SIZE:11pt;MARGIN:0in;FONT-FAMILY:Calibri;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/p&gt;
&lt;p style="FONT-SIZE:11pt;MARGIN:0in;FONT-FAMILY:Calibri;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; var email = crmForm.all.emailaddress1.DataValue;&lt;/p&gt;
&lt;p style="FONT-SIZE:11pt;MARGIN:0in;FONT-FAMILY:Calibri;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if ((email != null) &amp;amp;&amp;amp; (email.length &amp;gt; 0)) &lt;/p&gt;
&lt;p style="FONT-SIZE:11pt;MARGIN:0in;FONT-FAMILY:Calibri;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/p&gt;
&lt;p style="FONT-SIZE:11pt;MARGIN:0in;FONT-FAMILY:Calibri;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="FONT-WEIGHT:bold;COLOR:red;"&gt;window.execScript(locAddActTo(4202))&lt;/span&gt;&lt;/p&gt;
&lt;p style="FONT-SIZE:11pt;MARGIN:0in;FONT-FAMILY:Calibri;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/p&gt;
&lt;p style="FONT-SIZE:11pt;MARGIN:0in;FONT-FAMILY:Calibri;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/p&gt;
&lt;p style="FONT-SIZE:11pt;MARGIN:0in;FONT-FAMILY:Calibri;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/p&gt;
&lt;p style="FONT-SIZE:11pt;MARGIN:0in;FONT-FAMILY:Calibri;"&gt;}&lt;/p&gt;&lt;img src="http://www.crowehorwath.com/cs/aggbug.aspx?PostID=14078" width="1" height="1"&gt;</content><author><name>VARGHESED</name><uri>http://www.crowehorwath.com/cs/members/VARGHESED.aspx</uri></author><category term="Technical Tips" scheme="http://www.crowehorwath.com/cs/blogs/crm/archive/tags/Technical+Tips/default.aspx" /></entry><entry><title>Example of Dynamic Entity Create</title><link rel="alternate" type="text/html" href="http://www.crowehorwath.com/cs/blogs/crm/archive/2009/03/04/example-of-dynamic-entity-create.aspx" /><id>http://www.crowehorwath.com/cs/blogs/crm/archive/2009/03/04/example-of-dynamic-entity-create.aspx</id><published>2009-03-04T23:08:00Z</published><updated>2009-03-04T23:08:00Z</updated><content type="html">&lt;p style="FONT-SIZE:11pt;MARGIN:0in;FONT-FAMILY:Calibri;"&gt;There have been numerous requests on other blogs about sample code to on how to create entities in CRM.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;One way is to use the CRM web service to create business entities, however by doing so, you&amp;#39;re only limited to out-of-the-box entities with system attributes.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;To retrieve anything more &amp;quot;dynamic,&amp;quot; you&amp;#39;ll have to employ other methods.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;Please remember that in order to create any record, you must have the proper permissions on that entity.&lt;/p&gt;
&lt;p style="FONT-SIZE:11pt;MARGIN:0in;FONT-FAMILY:Calibri;"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="FONT-SIZE:11pt;MARGIN:0in;FONT-FAMILY:Calibri;"&gt;Below is a code example of how to create a record using dynamic entities:&lt;/p&gt;
&lt;p style="FONT-SIZE:11pt;MARGIN:0in;FONT-FAMILY:Calibri;"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="FONT-SIZE:11pt;MARGIN:0in;FONT-FAMILY:Calibri;"&gt;public void CreateEntity(ICrmService service)&lt;/p&gt;
&lt;p style="FONT-SIZE:11pt;MARGIN:0in;FONT-FAMILY:Calibri;"&gt;{&lt;/p&gt;
&lt;p style="FONT-SIZE:11pt;MARGIN:0in 0in 0in 0.375in;COLOR:green;FONT-FAMILY:Calibri;"&gt;//variable initialization&lt;/p&gt;
&lt;p style="FONT-SIZE:11pt;MARGIN:0in 0in 0in 0.375in;FONT-FAMILY:Calibri;"&gt;DynamicEntity entity = new DynamicEntity();&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="COLOR:green;"&gt;//target entity to update&lt;/span&gt;&lt;/p&gt;
&lt;p style="FONT-SIZE:11pt;MARGIN:0in 0in 0in 0.375in;FONT-FAMILY:Calibri;"&gt;TargetCreateDynamic targetCreate = new TargetCreateDynamic();&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="COLOR:green;"&gt;//used to update entity&lt;/span&gt;&lt;/p&gt;
&lt;p style="FONT-SIZE:11pt;MARGIN:0in 0in 0in 0.375in;FONT-FAMILY:Calibri;"&gt;CreateRequest createRequest = new CreateRequest();&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="COLOR:green;"&gt;//request to create entity&lt;/span&gt;&lt;/p&gt;
&lt;p style="FONT-SIZE:11pt;MARGIN:0in;FONT-FAMILY:Calibri;"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="FONT-SIZE:11pt;MARGIN:0in 0in 0in 0.375in;FONT-FAMILY:Calibri;"&gt;entity.Name = &amp;lt;entity name&amp;gt;&lt;/p&gt;
&lt;p style="FONT-SIZE:11pt;MARGIN:0in;FONT-FAMILY:Calibri;"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="FONT-SIZE:11pt;MARGIN:0in 0in 0in 0.375in;FONT-FAMILY:Calibri;"&gt;&lt;span style="COLOR:green;"&gt;//add the properties&lt;/span&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/p&gt;
&lt;p style="FONT-SIZE:11pt;MARGIN:0in 0in 0in 0.375in;FONT-FAMILY:Calibri;"&gt;entity.Properties.Add(&amp;lt;property&amp;gt;);&lt;/p&gt;
&lt;p style="FONT-SIZE:11pt;MARGIN:0in 0in 0in 0.375in;FONT-FAMILY:Calibri;"&gt;Entity.Properties.Add(&amp;lt;property&amp;gt;);&lt;/p&gt;
&lt;p style="FONT-SIZE:11pt;MARGIN:0in;FONT-FAMILY:Calibri;"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="FONT-SIZE:11pt;MARGIN:0in 0in 0in 0.375in;COLOR:green;FONT-FAMILY:Calibri;"&gt;//set the target to update, and the request to update for&lt;/p&gt;
&lt;p style="FONT-SIZE:11pt;MARGIN:0in 0in 0in 0.375in;FONT-FAMILY:Calibri;"&gt;targetCreate.Entity = entity;&lt;/p&gt;
&lt;p style="FONT-SIZE:11pt;MARGIN:0in 0in 0in 0.375in;FONT-FAMILY:Calibri;"&gt;createRequest.Target = targetCreate;&lt;/p&gt;
&lt;p style="FONT-SIZE:11pt;MARGIN:0in;FONT-FAMILY:Calibri;"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="FONT-SIZE:11pt;MARGIN:0in 0in 0in 0.375in;COLOR:green;FONT-FAMILY:Calibri;"&gt;//execute the update request&lt;/p&gt;
&lt;p style="FONT-SIZE:11pt;MARGIN:0in 0in 0in 0.375in;FONT-FAMILY:Calibri;"&gt;service.Execute(createRequest);&lt;/p&gt;
&lt;p style="FONT-SIZE:11pt;MARGIN:0in;FONT-FAMILY:Calibri;"&gt;}&lt;/p&gt;
&lt;p style="FONT-SIZE:11pt;MARGIN:0in;FONT-FAMILY:Calibri;"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="FONT-SIZE:11pt;MARGIN:0in;FONT-FAMILY:Calibri;"&gt;Hope this helps, happy coding!&lt;/p&gt;&lt;img src="http://www.crowehorwath.com/cs/aggbug.aspx?PostID=14077" width="1" height="1"&gt;</content><author><name>VARGHESED</name><uri>http://www.crowehorwath.com/cs/members/VARGHESED.aspx</uri></author><category term="Technical Tips" scheme="http://www.crowehorwath.com/cs/blogs/crm/archive/tags/Technical+Tips/default.aspx" /></entry><entry><title>Debugging CRM Plug-ins, Stored Procedures &amp; Custom Workflow Activities</title><link rel="alternate" type="text/html" href="http://www.crowehorwath.com/cs/blogs/crm/archive/2009/02/24/debugging-crm-plug-ins-stored-procedures-amp-custom-workflow-activities.aspx" /><id>http://www.crowehorwath.com/cs/blogs/crm/archive/2009/02/24/debugging-crm-plug-ins-stored-procedures-amp-custom-workflow-activities.aspx</id><published>2009-02-25T02:30:00Z</published><updated>2009-02-25T02:30:00Z</updated><content type="html">&lt;p style="FONT-SIZE:11pt;MARGIN:0in;FONT-FAMILY:Calibri;"&gt;Whether it&amp;#39;s developing CRM plug-ins, custom workflow activities, or writing stored procedures against the CRM database, the most useful tool I&amp;#39;ve used is the Microsoft Visual Studio Debugger.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;The debugger allows developers to step through the code for the above mentioned scenarios and has saved me hours!&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;&lt;/p&gt;
&lt;p style="FONT-SIZE:11pt;MARGIN:0in;FONT-FAMILY:Calibri;"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="FONT-SIZE:11pt;MARGIN:0in;FONT-FAMILY:Calibri;"&gt;Microsoft has phenomenal documentation on how to setup remote debugging:&lt;/p&gt;
&lt;p style="FONT-SIZE:11pt;MARGIN:0in;FONT-FAMILY:Calibri;"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="FONT-SIZE:11pt;MARGIN:0in;FONT-FAMILY:Calibri;"&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/bt727f1t.aspx"&gt;http://msdn.microsoft.com/en-us/library/bt727f1t.aspx&lt;/a&gt;&lt;/p&gt;
&lt;p style="FONT-SIZE:11pt;MARGIN:0in;FONT-FAMILY:Calibri;"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="FONT-SIZE:11pt;MARGIN:0in;FONT-FAMILY:Calibri;"&gt;The biggest issues I&amp;#39;ve had trying to setup the debugger has always been with permissions.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;I would recommend paying especially close attention to this section.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;The next biggest issue I had was trying to attach the debugger to a running process: &lt;a href="http://msdn.microsoft.com/en-us/library/c6wf8e4z.aspx"&gt;http://msdn.microsoft.com/en-us/library/c6wf8e4z.aspx&lt;/a&gt;&lt;/p&gt;
&lt;p style="FONT-SIZE:11pt;MARGIN:0in;FONT-FAMILY:Calibri;"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="FONT-SIZE:11pt;MARGIN:0in;FONT-FAMILY:Calibri;"&gt;Once you&amp;#39;ve setup Visual Studio debugger, you can attach the following processes for the following CRM components:&lt;/p&gt;
&lt;p style="FONT-SIZE:11pt;MARGIN:0in;FONT-FAMILY:Calibri;"&gt;&amp;nbsp;&lt;/p&gt;
&lt;ol style="MARGIN-TOP:0in;FONT-SIZE:11pt;MARGIN-BOTTOM:0in;MARGIN-LEFT:0.75in;DIRECTION:ltr;FONT-FAMILY:Calibri;unicode-bidi:embed;"&gt;
&lt;li style="MARGIN-TOP:0px;MARGIN-BOTTOM:0px;VERTICAL-ALIGN:middle;"&gt;&lt;span style="FONT-SIZE:11pt;FONT-FAMILY:Calibri;"&gt;For plug-ins, attach the debugger to the w3wp.exe process.&lt;/span&gt;&lt;/li&gt;
&lt;li style="MARGIN-TOP:0px;MARGIN-BOTTOM:0px;VERTICAL-ALIGN:middle;"&gt;&lt;span style="FONT-SIZE:11pt;FONT-FAMILY:Calibri;"&gt;For custom workflow activities, attach the debugger to MSCRMAsyncService.exe&lt;/span&gt;&lt;/li&gt;
&lt;li style="MARGIN-TOP:0px;MARGIN-BOTTOM:0px;VERTICAL-ALIGN:middle;"&gt;&lt;span style="FONT-SIZE:11pt;FONT-FAMILY:Calibri;"&gt;For stored procedures, attach the debugger to sqlserver.exe&lt;/span&gt;&lt;/li&gt;&lt;/ol&gt;
&lt;p style="FONT-SIZE:11pt;MARGIN:0in 0in 0in 0.75in;FONT-FAMILY:Calibri;"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="FONT-SIZE:11pt;MARGIN:0in;FONT-FAMILY:Calibri;"&gt;Once the debugger has been attached, you must set a breakpoint in the code (either the .NET or T-SQL code).&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;After the breakpoint is set, to test, do the following:&lt;/p&gt;
&lt;p style="FONT-SIZE:11pt;MARGIN:0in;FONT-FAMILY:Calibri;"&gt;&amp;nbsp;&lt;/p&gt;
&lt;ol style="MARGIN-TOP:0in;FONT-SIZE:11pt;MARGIN-BOTTOM:0in;MARGIN-LEFT:0.75in;DIRECTION:ltr;FONT-FAMILY:Calibri;unicode-bidi:embed;"&gt;
&lt;li style="MARGIN-TOP:0px;MARGIN-BOTTOM:0px;VERTICAL-ALIGN:middle;"&gt;&lt;span style="FONT-SIZE:11pt;FONT-FAMILY:Calibri;"&gt;For plug-ins, login to CRM and execute actions that will trigger the plug-in, such as create/update/assign a record.&lt;/span&gt;&lt;/li&gt;
&lt;li style="MARGIN-TOP:0px;MARGIN-BOTTOM:0px;VERTICAL-ALIGN:middle;"&gt;&lt;span style="FONT-SIZE:11pt;FONT-FAMILY:Calibri;"&gt;For custom workflow activities, login to CRM and perform actions that will trigger the workflow.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;With this, being that it&amp;#39;s an asynchronous service, you&amp;#39;ll have to wait until that service runs, and then Visual Studio will let you step through the code.&lt;/span&gt;&lt;/li&gt;
&lt;li style="MARGIN-TOP:0px;MARGIN-BOTTOM:0px;VERTICAL-ALIGN:middle;"&gt;&lt;span style="FONT-SIZE:11pt;FONT-FAMILY:Calibri;"&gt;For the stored procedure, just execute the stored procedure in Visual Studio and it will go right to the breakpoint.&lt;/span&gt;&lt;/li&gt;&lt;/ol&gt;
&lt;p style="FONT-SIZE:11pt;MARGIN:0in 0in 0in 0.75in;FONT-FAMILY:Calibri;"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="FONT-SIZE:11pt;MARGIN:0in;FONT-FAMILY:Calibri;"&gt;I hope this post will help CRM developers save time and effort.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;I use the debugger every time I develop now to test and it&amp;#39;s saved me tremendous amount of maintenance time and effort after the code has been deployed.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;Happy debugging!&lt;/p&gt;&lt;img src="http://www.crowehorwath.com/cs/aggbug.aspx?PostID=11128" width="1" height="1"&gt;</content><author><name>VARGHESED</name><uri>http://www.crowehorwath.com/cs/members/VARGHESED.aspx</uri></author><category term="Technical Tips" scheme="http://www.crowehorwath.com/cs/blogs/crm/archive/tags/Technical+Tips/default.aspx" /></entry><entry><title>CRM 4.0 Plug-in Registration Tool Walkthrough</title><link rel="alternate" type="text/html" href="http://www.crowehorwath.com/cs/blogs/crm/archive/2009/02/21/crm-4-0-plug-in-registration-tool-walkthrough.aspx" /><id>http://www.crowehorwath.com/cs/blogs/crm/archive/2009/02/21/crm-4-0-plug-in-registration-tool-walkthrough.aspx</id><published>2009-02-21T23:14:00Z</published><updated>2009-02-21T23:14:00Z</updated><content type="html">&lt;p style="FONT-SIZE:11pt;MARGIN:0in;FONT-FAMILY:Calibri;"&gt;The CRM 4.0 Plug-in registration tool is Microsoft&amp;#39;s tool to register any plug-in developed for CRM 4.0 and callouts that were developed for CRM 3.0, but need to be upgraded to 4.0.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;In this article, I&amp;#39;d like to take a step by step walkthrough of the tool including any interesting facts or issues I&amp;#39;ve run into during this process.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;Those will highlighted in the &amp;quot;&lt;span style="FONT-WEIGHT:bold;COLOR:red;"&gt;NOTE&amp;quot;&lt;/span&gt; section.&lt;/p&gt;
&lt;p style="FONT-SIZE:11pt;MARGIN:0in;FONT-FAMILY:Calibri;"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="FONT-SIZE:11pt;MARGIN:0in;FONT-FAMILY:Calibri;"&gt;To download the tool, please visit: &lt;a href="http://code.msdn.microsoft.com/crmplugin"&gt;http://code.msdn.microsoft.com/crmplugin&lt;/a&gt; for the latest version.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;The tool also comes packaged when you download the CRM 4.0 SDK, which you can do from: &lt;a href="http://www.microsoft.com/DOWNLOADS/details.aspx?familyid=82E632A7-FAF9-41E0-8EC1-A2662AAE9DFB&amp;amp;displaylang=en"&gt;http://www.microsoft.com/DOWNLOADS/details.aspx?familyid=82E632A7-FAF9-41E0-8EC1-A2662AAE9DFB&amp;amp;displaylang=en&lt;/a&gt;.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;&lt;/p&gt;
&lt;p style="FONT-SIZE:11pt;MARGIN:0in;FONT-FAMILY:Calibri;"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="FONT-WEIGHT:bold;FONT-SIZE:16pt;MARGIN:0in;FONT-FAMILY:Calibri;"&gt;Building The Plug-in Registration Tool&lt;/p&gt;
&lt;p style="FONT-SIZE:11pt;MARGIN:0in;FONT-FAMILY:Calibri;"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="FONT-SIZE:11pt;MARGIN:0in;FONT-FAMILY:Calibri;"&gt;Either way, the download will contain Visual Studio project files that will need to be built.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;Mitch Kett in his blog has outlined how to do this: &lt;a href="http://www.crowehorwath.com/cs/blogs/crm/archive/2008/03/19/incorporating-custom-entities-into-a-plugin-revised.aspx"&gt;http://www.crowehorwath.com/cs/blogs/crm/archive/2008/03/19/incorporating-custom-entities-into-a-plugin-revised.aspx&lt;/a&gt;.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;&lt;/p&gt;
&lt;p style="FONT-SIZE:11pt;MARGIN:0in;FONT-FAMILY:Calibri;"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="FONT-SIZE:11pt;MARGIN:0in;FONT-FAMILY:Calibri;"&gt;&lt;span style="FONT-WEIGHT:bold;COLOR:red;"&gt;**NOTE:&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;The CRM SDK provides great information on what each service provides for the user:&lt;/p&gt;
&lt;p style="FONT-SIZE:11pt;MARGIN:0in;FONT-FAMILY:Calibri;"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="FONT-SIZE:11pt;MARGIN:0in;FONT-FAMILY:Calibri;"&gt;The &lt;span style="FONT-STYLE:italic;"&gt;CRM Web service&lt;/span&gt; provides strongly typed access to all entities in Microsoft Dynamics CRM, including custom entities and attributes. This Web service also allows execution of all supported operations, including those with built-in business logic as well as specialized operations. It provides a valid Web Services Description Language (WSDL) that is dynamically generated on the server to include the latest customizations and provides a single endpoint for your code.&lt;/p&gt;
&lt;p style="FONT-SIZE:11pt;MARGIN:0in;FONT-FAMILY:Calibri;"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="FONT-SIZE:11pt;MARGIN:0in;FONT-FAMILY:Calibri;"&gt;The &lt;span style="FONT-STYLE:italic;"&gt;Discovery Web service&lt;/span&gt; is a mechanism to find the correct CrmService endpoint for your organization or to obtain a CRM ticket for Internet-facing deployment (IFD) or for Microsoft Dynamics CRM Online.&lt;/p&gt;
&lt;p style="FONT-SIZE:11pt;MARGIN:0in;FONT-FAMILY:Calibri;"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="FONT-SIZE:11pt;MARGIN:0in;FONT-FAMILY:Calibri;"&gt;The &lt;span style="FONT-STYLE:italic;"&gt;Metadata Web service&lt;/span&gt; provides methods to read and write the metadata for an organization. This includes the definitions for entities, attributes, and relationships.&lt;span style="FONT-WEIGHT:bold;COLOR:red;"&gt;**&lt;/span&gt;&lt;/p&gt;
&lt;p style="FONT-SIZE:11pt;MARGIN:0in;FONT-FAMILY:Calibri;"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="FONT-SIZE:11pt;MARGIN:0in;FONT-FAMILY:Calibri;"&gt;&lt;span style="FONT-WEIGHT:bold;COLOR:red;"&gt;**NOTE:&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;If you don&amp;#39;t place the assembly files mentioned in step (8) of Mitch&amp;#39;s instructions, when you go to run the plug-in registration tool, you might get an error: &amp;quot;...Could Not Find Dependency…&amp;quot;&lt;span style="FONT-WEIGHT:bold;COLOR:red;"&gt;**&lt;/span&gt;&lt;/p&gt;
&lt;p style="FONT-SIZE:11pt;MARGIN:0in;FONT-FAMILY:Calibri;"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="FONT-WEIGHT:bold;FONT-SIZE:16pt;MARGIN:0in;FONT-FAMILY:Calibri;"&gt;Using The Plug-in Registration Tool&lt;/p&gt;
&lt;p style="FONT-WEIGHT:bold;FONT-SIZE:16pt;MARGIN:0in;FONT-FAMILY:Calibri;"&gt;&amp;nbsp;&lt;/p&gt;
&lt;ol style="MARGIN-TOP:0in;FONT-SIZE:11pt;MARGIN-BOTTOM:0in;MARGIN-LEFT:0.75in;DIRECTION:ltr;FONT-FAMILY:Calibri;unicode-bidi:embed;"&gt;
&lt;li style="MARGIN-TOP:0px;MARGIN-BOTTOM:0px;VERTICAL-ALIGN:middle;"&gt;&lt;span style="FONT-SIZE:11pt;FONT-FAMILY:Calibri;"&gt;You can launch the tool by either running the executable built from the project mentioned in the steps above, or if you&amp;#39;ve configured Visual Studio with a shortcut, you can launch it from that menu.&lt;/span&gt;&lt;/li&gt;&lt;/ol&gt;
&lt;p style="MARGIN-TOP:0px;MARGIN-BOTTOM:0px;VERTICAL-ALIGN:middle;"&gt;&lt;span style="FONT-SIZE:11pt;FONT-FAMILY:Calibri;"&gt;&lt;img style="WIDTH:262px;HEIGHT:381px;" height="381" src="http://crowechizek.com/cs/blogs/crm/dvarghese/pluginRegister/Screenshot1.jpg" width="262" align="middle" alt="" /&gt;&lt;/span&gt;&lt;/p&gt;&lt;span style="FONT-SIZE:11pt;FONT-FAMILY:Calibri;"&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:11pt;FONT-FAMILY:Calibri;"&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:11pt;FONT-FAMILY:Calibri;"&gt;
&lt;ol style="MARGIN-TOP:0in;FONT-SIZE:11pt;MARGIN-BOTTOM:0in;MARGIN-LEFT:0.75in;DIRECTION:ltr;FONT-FAMILY:Calibri;unicode-bidi:embed;"&gt;
&lt;li style="MARGIN-TOP:0px;MARGIN-BOTTOM:0px;VERTICAL-ALIGN:middle;"&gt;&lt;span style="FONT-SIZE:11pt;FONT-FAMILY:Calibri;"&gt;Once the screen is loaded, click on &lt;/span&gt;&lt;span style="FONT-WEIGHT:bold;FONT-SIZE:11pt;FONT-FAMILY:Calibri;"&gt;Create New Connection&lt;/span&gt;&lt;span style="FONT-SIZE:11pt;FONT-FAMILY:Calibri;"&gt;.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;Enter a simple label for the connection, the server in which CRM is installed on, port, domain and user name.&lt;/span&gt;&lt;/li&gt;&lt;/ol&gt;
&lt;p style="MARGIN-TOP:0px;MARGIN-BOTTOM:0px;VERTICAL-ALIGN:middle;"&gt;&lt;span style="FONT-SIZE:11pt;FONT-FAMILY:Calibri;"&gt;&lt;/span&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="MARGIN-TOP:0px;MARGIN-BOTTOM:0px;VERTICAL-ALIGN:middle;"&gt;&lt;span style="FONT-SIZE:11pt;FONT-FAMILY:Calibri;"&gt;&lt;img style="WIDTH:894px;HEIGHT:694px;" height="694" src="http://crowechizek.com/cs/blogs/crm/dvarghese/pluginRegister/Screenshot2.jpg" width="894" align="middle" alt="" /&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN-TOP:0px;MARGIN-BOTTOM:0px;VERTICAL-ALIGN:middle;"&gt;&lt;span style="FONT-SIZE:11pt;FONT-FAMILY:Calibri;"&gt;&lt;/span&gt;&amp;nbsp;&lt;/p&gt;&lt;span style="FONT-SIZE:11pt;FONT-FAMILY:Calibri;"&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:11pt;FONT-FAMILY:Calibri;"&gt;
&lt;p style="FONT-SIZE:11pt;MARGIN:0in;FONT-FAMILY:Calibri;"&gt;&lt;span style="FONT-WEIGHT:bold;COLOR:red;"&gt;**NOTE:&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;There are security restrictions on the user that can register plug-ins.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;According to the SDK, the user account registering the plug-ins must exist in the Deployment Administrators group or must be a System Administrator.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;If the user is not part of at least one of those groups, you will get an error along the lines of &amp;quot;…Not have enough privilege to complete Create operation for an SDK entity…&amp;quot;&lt;span style="FONT-WEIGHT:bold;COLOR:red;"&gt;**&lt;/span&gt;&lt;/p&gt;
&lt;p style="FONT-WEIGHT:bold;FONT-SIZE:11pt;MARGIN:0in;COLOR:red;FONT-FAMILY:Calibri;"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="FONT-SIZE:11pt;MARGIN:0in;FONT-FAMILY:Calibri;"&gt;&lt;span style="FONT-WEIGHT:bold;COLOR:red;"&gt;**NOTE:&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;If you don&amp;#39;t enter a username and password, it will use the windows default credentials you used to login.&lt;span style="FONT-WEIGHT:bold;COLOR:red;"&gt;**&lt;/span&gt;&lt;/p&gt;
&lt;p style="FONT-WEIGHT:bold;FONT-SIZE:11pt;MARGIN:0in;COLOR:red;FONT-FAMILY:Calibri;"&gt;&amp;nbsp;&lt;/p&gt;
&lt;ol style="MARGIN-TOP:0in;FONT-SIZE:11pt;MARGIN-BOTTOM:0in;MARGIN-LEFT:0.75in;DIRECTION:ltr;FONT-FAMILY:Calibri;unicode-bidi:embed;"&gt;
&lt;li style="MARGIN-TOP:0px;MARGIN-BOTTOM:0px;VERTICAL-ALIGN:middle;"&gt;&lt;span style="FONT-SIZE:11pt;FONT-FAMILY:Calibri;"&gt;Click on &lt;/span&gt;&lt;span style="FONT-WEIGHT:bold;FONT-SIZE:11pt;FONT-FAMILY:Calibri;"&gt;Connect&lt;/span&gt;&lt;span style="FONT-SIZE:11pt;FONT-FAMILY:Calibri;"&gt;.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;Once connected, you will see a new screen with various menu options.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;Let&amp;#39;s dive deeper into each of these options.&lt;/span&gt;&lt;/li&gt;&lt;/ol&gt;
&lt;p style="MARGIN-TOP:0px;MARGIN-BOTTOM:0px;VERTICAL-ALIGN:middle;"&gt;&lt;span style="FONT-SIZE:11pt;FONT-FAMILY:Calibri;"&gt;&lt;/span&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="MARGIN-TOP:0px;MARGIN-BOTTOM:0px;VERTICAL-ALIGN:middle;"&gt;&lt;span style="FONT-SIZE:11pt;FONT-FAMILY:Calibri;"&gt;&lt;img style="WIDTH:494px;HEIGHT:26px;" height="26" src="http://crowechizek.com/cs/blogs/crm/dvarghese/pluginRegister/Screenshot3.jpg" width="494" align="middle" alt="" /&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN-TOP:0px;MARGIN-BOTTOM:0px;VERTICAL-ALIGN:middle;"&gt;&lt;span style="FONT-SIZE:11pt;FONT-FAMILY:Calibri;"&gt;&lt;/span&gt;&amp;nbsp;&lt;/p&gt;&lt;span style="FONT-SIZE:11pt;FONT-FAMILY:Calibri;"&gt;
&lt;ol style="MARGIN-TOP:0in;FONT-SIZE:11pt;MARGIN-BOTTOM:0in;MARGIN-LEFT:1.125in;DIRECTION:ltr;FONT-FAMILY:Calibri;unicode-bidi:embed;"&gt;
&lt;li style="MARGIN-TOP:0px;MARGIN-BOTTOM:0px;VERTICAL-ALIGN:middle;"&gt;&lt;span style="FONT-WEIGHT:bold;FONT-SIZE:11pt;FONT-FAMILY:Calibri;"&gt;Register&lt;/span&gt;&lt;/li&gt;
&lt;ol style="MARGIN-TOP:0in;FONT-SIZE:11pt;MARGIN-BOTTOM:0in;MARGIN-LEFT:0.375in;DIRECTION:ltr;FONT-FAMILY:Calibri;unicode-bidi:embed;"&gt;
&lt;li style="MARGIN-TOP:0px;MARGIN-BOTTOM:0px;VERTICAL-ALIGN:middle;"&gt;&lt;span style="FONT-SIZE:11pt;FONT-STYLE:italic;FONT-FAMILY:Calibri;"&gt;Register New Assembly&lt;/span&gt;&lt;span style="FONT-SIZE:11pt;FONT-FAMILY:Calibri;"&gt; - you can register a new assembly that contains the plug-in execution code.&lt;/span&gt;&lt;/li&gt;
&lt;li style="MARGIN-TOP:0px;MARGIN-BOTTOM:0px;VERTICAL-ALIGN:middle;"&gt;&lt;span style="FONT-SIZE:11pt;FONT-STYLE:italic;FONT-FAMILY:Calibri;"&gt;Register New Step&lt;/span&gt;&lt;span style="FONT-SIZE:11pt;FONT-FAMILY:Calibri;"&gt; - allows you to configure the event that triggers the execution of the code.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;For example, this is where you can configure to fire a specific code after/before a record is created, updated, etc.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;This is equivalent&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;to specifying a &amp;quot;PostUpdate,&amp;quot; &amp;quot;PostCreate,&amp;quot; in an xml configuration file for CRM 3.0 callouts.&lt;/span&gt;&lt;/li&gt;
&lt;li style="MARGIN-TOP:0px;MARGIN-BOTTOM:0px;VERTICAL-ALIGN:middle;"&gt;&lt;span style="FONT-SIZE:11pt;FONT-STYLE:italic;FONT-FAMILY:Calibri;"&gt;Register New Image&lt;/span&gt;&lt;span style="FONT-SIZE:11pt;FONT-FAMILY:Calibri;"&gt; - you can register an xml image of an entity.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;This can be used to find out what the values of a record is before and/or after the record is created, updated, etc.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;You can also specify which attributes of that record you want to pass into the execution context.&lt;/span&gt;&lt;/li&gt;&lt;/ol&gt;&lt;/ol&gt;
&lt;ol style="MARGIN-TOP:0in;FONT-SIZE:11pt;MARGIN-BOTTOM:0in;MARGIN-LEFT:1.125in;DIRECTION:ltr;FONT-FAMILY:Calibri;unicode-bidi:embed;"&gt;
&lt;li style="MARGIN-TOP:0px;MARGIN-BOTTOM:0px;VERTICAL-ALIGN:middle;"&gt;&lt;span style="FONT-WEIGHT:bold;FONT-SIZE:11pt;FONT-FAMILY:Calibri;"&gt;Import/Export&lt;/span&gt;&lt;/li&gt;
&lt;ol style="MARGIN-TOP:0in;FONT-SIZE:11pt;MARGIN-BOTTOM:0in;MARGIN-LEFT:0.375in;DIRECTION:ltr;FONT-FAMILY:Calibri;unicode-bidi:embed;"&gt;
&lt;li style="MARGIN-TOP:0px;MARGIN-BOTTOM:0px;VERTICAL-ALIGN:middle;"&gt;&lt;span style="FONT-SIZE:11pt;FONT-STYLE:italic;FONT-FAMILY:Calibri;"&gt;Export Solution Xml&lt;/span&gt;&lt;span style="FONT-SIZE:11pt;FONT-FAMILY:Calibri;"&gt; - allows a user to export an xml file that contains the assembly names, steps and/or images registered previously.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;This allows for configuration of the plug-ins to be setup once and then migrated to other environments.&lt;/span&gt;&lt;/li&gt;
&lt;li style="MARGIN-TOP:0px;MARGIN-BOTTOM:0px;VERTICAL-ALIGN:middle;"&gt;&lt;span style="FONT-SIZE:11pt;FONT-STYLE:italic;FONT-FAMILY:Calibri;"&gt;Import Solution Xml&lt;/span&gt;&lt;span style="FONT-SIZE:11pt;FONT-FAMILY:Calibri;"&gt; - allows user to import the xml file mentioned above in (3bi).&lt;/span&gt;&lt;/li&gt;&lt;/ol&gt;&lt;/ol&gt;
&lt;p style="FONT-SIZE:11pt;MARGIN:0in 0in 0in 1.125in;FONT-FAMILY:Calibri;"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="FONT-SIZE:11pt;MARGIN:0in 0in 0in 1.125in;FONT-FAMILY:Calibri;"&gt;&lt;span style="FONT-WEIGHT:bold;COLOR:red;"&gt;NOTE:&lt;/span&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;According to a document walking through the registration tool published by Ajith Gande the &amp;quot;Import Export has some limitations and design assumptions&lt;/p&gt;
&lt;ul style="MARGIN-TOP:0in;MARGIN-BOTTOM:0in;MARGIN-LEFT:1.875in;DIRECTION:ltr;unicode-bidi:embed;"&gt;
&lt;li style="MARGIN-TOP:0px;MARGIN-BOTTOM:0px;VERTICAL-ALIGN:middle;"&gt;&lt;span style="FONT-SIZE:11pt;FONT-FAMILY:Calibri;"&gt;If a plug-in is impersonated on user MyDomain\crmUser and imported in an organization with different domain, it tries to map the user bases on the domain user name (crmuser)&lt;/span&gt;&lt;/li&gt;
&lt;li style="MARGIN-TOP:0px;MARGIN-BOTTOM:0px;VERTICAL-ALIGN:middle;"&gt;&lt;span style="FONT-SIZE:11pt;FONT-FAMILY:Calibri;"&gt;Plug-in assembly DLL’s are not exported in the Xml. When Import is in progress, you need to copy the assemblies to the same location as the .xml file&lt;/span&gt;&lt;/li&gt;
&lt;li style="MARGIN-TOP:0px;MARGIN-BOTTOM:0px;VERTICAL-ALIGN:middle;"&gt;&lt;span style="FONT-SIZE:11pt;FONT-FAMILY:Calibri;"&gt;Import overwrites the assemblies, plug-in, steps, images in the target organization if any other entity exists with same Guid, else it creates them&lt;/span&gt;&lt;/li&gt;
&lt;li style="MARGIN-TOP:0px;MARGIN-BOTTOM:0px;VERTICAL-ALIGN:middle;"&gt;&lt;span style="FONT-SIZE:11pt;FONT-FAMILY:Calibri;"&gt;It is recommended to import assemblies, plug-in, and a step all at once to avoid a lot of overwrites. So delete any existing assemblies with same name on target org. But the tool supports updating or adding a step to the existing plug-in using the import.&amp;quot;&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;
&lt;p style="FONT-SIZE:11pt;MARGIN:0in 0in 0in 1.125in;FONT-FAMILY:Calibri;"&gt;This was referenced from: &lt;/p&gt;
&lt;p style="FONT-SIZE:11pt;MARGIN:0in 0in 0in 1.125in;FONT-FAMILY:Calibri;"&gt;&lt;a href="http://code.msdn.microsoft.com/Project/Download/FileDownload.aspx?ProjectName=crmplugin&amp;amp;DownloadId=320"&gt;http://code.msdn.microsoft.com/Project/Download/FileDownload.aspx?ProjectName=crmplugin&amp;amp;DownloadId=320&lt;/a&gt;&lt;span style="FONT-WEIGHT:bold;COLOR:red;"&gt;**&lt;/span&gt;&lt;/p&gt;
&lt;ol style="MARGIN-TOP:0in;FONT-SIZE:11pt;MARGIN-BOTTOM:0in;MARGIN-LEFT:1.125in;DIRECTION:ltr;FONT-FAMILY:Calibri;unicode-bidi:embed;"&gt;
&lt;li style="MARGIN-TOP:0px;MARGIN-BOTTOM:0px;VERTICAL-ALIGN:middle;"&gt;&lt;span style="FONT-WEIGHT:bold;FONT-SIZE:11pt;FONT-FAMILY:Calibri;"&gt;View&lt;/span&gt;&lt;/li&gt;
&lt;ol style="MARGIN-TOP:0in;FONT-SIZE:11pt;MARGIN-BOTTOM:0in;MARGIN-LEFT:0.375in;DIRECTION:ltr;FONT-FAMILY:Calibri;unicode-bidi:embed;"&gt;
&lt;li style="MARGIN-TOP:0px;MARGIN-BOTTOM:0px;VERTICAL-ALIGN:middle;"&gt;&lt;span style="FONT-SIZE:11pt;FONT-STYLE:italic;FONT-FAMILY:Calibri;"&gt;Display By Assembly&lt;/span&gt;&lt;span style="FONT-SIZE:11pt;FONT-FAMILY:Calibri;"&gt; - this is the default view, showing all registered plug-ins by assembly name.&lt;/span&gt;&lt;/li&gt;
&lt;li style="MARGIN-TOP:0px;MARGIN-BOTTOM:0px;VERTICAL-ALIGN:middle;"&gt;&lt;span style="FONT-SIZE:11pt;FONT-STYLE:italic;FONT-FAMILY:Calibri;"&gt;Display By Entity&lt;/span&gt;&lt;span style="FONT-SIZE:11pt;FONT-FAMILY:Calibri;"&gt; - shows all registered plug-ins filtered by the entities they&amp;#39;re registered for.&lt;/span&gt;&lt;/li&gt;
&lt;li style="MARGIN-TOP:0px;MARGIN-BOTTOM:0px;VERTICAL-ALIGN:middle;"&gt;&lt;span style="FONT-SIZE:11pt;FONT-STYLE:italic;FONT-FAMILY:Calibri;"&gt;Display By Message&lt;/span&gt;&lt;span style="FONT-SIZE:11pt;FONT-FAMILY:Calibri;"&gt; - organizes the plug-ins registered by messages or events such as Create, Update, etc.&lt;/span&gt;&lt;/li&gt;&lt;/ol&gt;&lt;/ol&gt;
&lt;ol style="MARGIN-TOP:0in;FONT-SIZE:11pt;MARGIN-BOTTOM:0in;MARGIN-LEFT:1.125in;DIRECTION:ltr;FONT-FAMILY:Calibri;unicode-bidi:embed;"&gt;
&lt;li style="MARGIN-TOP:0px;MARGIN-BOTTOM:0px;VERTICAL-ALIGN:middle;"&gt;&lt;span style="FONT-WEIGHT:bold;FONT-SIZE:11pt;FONT-FAMILY:Calibri;"&gt;Unregister, Refresh &amp;amp; Search&lt;/span&gt;&lt;span style="FONT-SIZE:11pt;FONT-FAMILY:Calibri;"&gt; (all self-explanatory)&lt;/span&gt;&lt;/li&gt;&lt;/ol&gt;
&lt;p style="MARGIN-TOP:0px;MARGIN-BOTTOM:0px;VERTICAL-ALIGN:middle;"&gt;&lt;span style="FONT-SIZE:11pt;FONT-FAMILY:Calibri;"&gt;&lt;/span&gt;&amp;nbsp;&lt;/p&gt;
&lt;ol style="MARGIN-TOP:0in;FONT-SIZE:11pt;MARGIN-BOTTOM:0in;MARGIN-LEFT:0.75in;DIRECTION:ltr;FONT-FAMILY:Calibri;unicode-bidi:embed;"&gt;
&lt;li style="MARGIN-TOP:0px;MARGIN-BOTTOM:0px;VERTICAL-ALIGN:middle;"&gt;&lt;span style="FONT-SIZE:11pt;FONT-FAMILY:Calibri;"&gt;Click on &lt;/span&gt;&lt;span style="FONT-WEIGHT:bold;FONT-SIZE:11pt;FONT-FAMILY:Calibri;"&gt;Register&lt;/span&gt;&lt;span style="FONT-SIZE:11pt;FONT-FAMILY:Calibri;"&gt; --&amp;gt; &lt;/span&gt;&lt;span style="FONT-WEIGHT:bold;FONT-SIZE:11pt;FONT-FAMILY:Calibri;"&gt;Register New Assembly&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:11pt;FONT-FAMILY:Calibri;"&gt;--&amp;gt; Complete the steps below and press &lt;/span&gt;&lt;span style="FONT-WEIGHT:bold;FONT-SIZE:11pt;FONT-FAMILY:Calibri;"&gt;Register Selected Plugins&lt;/span&gt;&lt;span style="FONT-SIZE:11pt;FONT-FAMILY:Calibri;"&gt; --&amp;gt; Click on &lt;strong&gt;Close&lt;/strong&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ol&gt;
&lt;p style="MARGIN-TOP:0px;MARGIN-BOTTOM:0px;VERTICAL-ALIGN:middle;"&gt;&lt;span style="FONT-SIZE:11pt;FONT-FAMILY:Calibri;"&gt;&lt;/span&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="MARGIN-TOP:0px;MARGIN-BOTTOM:0px;VERTICAL-ALIGN:middle;"&gt;&lt;span style="FONT-SIZE:11pt;FONT-FAMILY:Calibri;"&gt;&lt;img style="WIDTH:434px;HEIGHT:481px;" height="481" src="http://crowechizek.com/cs/blogs/crm/dvarghese/pluginRegister/Screenshot4.jpg" width="434" align="middle" alt="" /&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN-TOP:0px;MARGIN-BOTTOM:0px;VERTICAL-ALIGN:middle;"&gt;&lt;span style="FONT-SIZE:11pt;FONT-FAMILY:Calibri;"&gt;&lt;/span&gt;&amp;nbsp;&lt;/p&gt;&lt;span style="FONT-SIZE:11pt;FONT-FAMILY:Calibri;"&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:11pt;FONT-FAMILY:Calibri;"&gt;
&lt;ol style="MARGIN-TOP:0in;FONT-SIZE:11pt;MARGIN-BOTTOM:0in;MARGIN-LEFT:1.125in;DIRECTION:ltr;FONT-FAMILY:Calibri;unicode-bidi:embed;"&gt;
&lt;li style="MARGIN-TOP:0px;MARGIN-BOTTOM:0px;VERTICAL-ALIGN:middle;"&gt;&lt;span style="FONT-SIZE:11pt;FONT-STYLE:italic;FONT-FAMILY:Calibri;"&gt;Step 1&lt;/span&gt;&lt;span style="FONT-SIZE:11pt;FONT-FAMILY:Calibri;"&gt;- Allows you to browse to a location and select the assembly you want to upload.&lt;/span&gt;&lt;/li&gt;
&lt;li style="MARGIN-TOP:0px;MARGIN-BOTTOM:0px;VERTICAL-ALIGN:middle;"&gt;&lt;span style="FONT-SIZE:11pt;FONT-STYLE:italic;FONT-FAMILY:Calibri;"&gt;Step 2&lt;/span&gt;&lt;span style="FONT-SIZE:11pt;FONT-FAMILY:Calibri;"&gt; - This is not shown on the screenshot, but you now have to click &lt;/span&gt;&lt;span style="FONT-WEIGHT:bold;FONT-SIZE:11pt;FONT-FAMILY:Calibri;"&gt;Load Assembly&lt;/span&gt;&lt;/li&gt;
&lt;li style="MARGIN-TOP:0px;MARGIN-BOTTOM:0px;VERTICAL-ALIGN:middle;"&gt;&lt;span style="FONT-SIZE:11pt;FONT-STYLE:italic;FONT-FAMILY:Calibri;"&gt;Step 3&lt;/span&gt;&lt;span style="FONT-SIZE:11pt;FONT-FAMILY:Calibri;"&gt; - Select where the assembly should be stored for execution&lt;/span&gt;&lt;/li&gt;
&lt;ol style="MARGIN-TOP:0in;FONT-SIZE:11pt;MARGIN-BOTTOM:0in;MARGIN-LEFT:0.375in;DIRECTION:ltr;FONT-FAMILY:Calibri;unicode-bidi:embed;"&gt;
&lt;li style="MARGIN-TOP:0px;MARGIN-BOTTOM:0px;VERTICAL-ALIGN:middle;"&gt;&lt;span style="FONT-SIZE:11pt;FONT-FAMILY:Calibri;"&gt;Database - Storing the files on the database allows users to update the assembly file through this wizard as many times as they want without having to perform an &amp;quot;iisreset,&amp;quot; as you had to in CRM 3.0.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;Advantage #2 is now the server\bin\assembly folder will not become cluttered if you have numerous&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;plug-ins.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;Finally, this makes migration from different environments much easier because there are less files to move. &lt;/span&gt;&lt;/li&gt;&lt;/ol&gt;&lt;/ol&gt;
&lt;p style="FONT-SIZE:11pt;MARGIN:0in 0in 0in 1.5in;FONT-FAMILY:Calibri;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="FONT-WEIGHT:bold;COLOR:red;"&gt;**NOTE: &lt;/span&gt;If you want to debug the assembly files, you will need to place the symbols file (.pdb) in &amp;lt;crm installation directory&amp;gt;\Server\bin\assembly folder. &lt;span style="FONT-WEIGHT:bold;COLOR:red;"&gt;**&lt;/span&gt;&lt;/p&gt;
&lt;ol style="MARGIN-TOP:0in;FONT-SIZE:11pt;MARGIN-BOTTOM:0in;MARGIN-LEFT:1.5in;DIRECTION:ltr;FONT-FAMILY:Calibri;unicode-bidi:embed;"&gt;
&lt;li style="MARGIN-TOP:0px;MARGIN-BOTTOM:0px;VERTICAL-ALIGN:middle;"&gt;&lt;span style="FONT-SIZE:11pt;FONT-FAMILY:Calibri;"&gt;Disk - This option allows you to store the assembly file as you did in CRM 3.0 under the &amp;lt;crm installation directory&amp;gt;\Server\bin\assembly directory.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;For debugging purposes, the symbols file (.pdb) must also be in this directory.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;If you store files here, an &amp;quot;iisreset&amp;quot; will be needed anytime any changes are made to the assembly.&lt;/span&gt;&lt;/li&gt;
&lt;li style="MARGIN-TOP:0px;MARGIN-BOTTOM:0px;VERTICAL-ALIGN:middle;"&gt;&lt;span style="FONT-SIZE:11pt;FONT-FAMILY:Calibri;"&gt;GAC - (Global Assembly Cache), for more information on this, please see my other post: &lt;/span&gt;&lt;a href="http://www.crowehorwath.com/cs/blogs/crm/archive/2008/03/05/gac-it-developing-portable-code-for-microsoft-crm.aspx"&gt;&lt;span style="FONT-SIZE:11pt;FONT-FAMILY:Calibri;"&gt;http://www.crowehorwath.com/cs/blogs/crm/archive/2008/03/05/gac-it-developing-portable-code-for-microsoft-crm.aspx&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;&lt;/ol&gt;
&lt;ol style="MARGIN-TOP:0in;FONT-SIZE:11pt;MARGIN-BOTTOM:0in;MARGIN-LEFT:0.75in;DIRECTION:ltr;FONT-FAMILY:Calibri;unicode-bidi:embed;"&gt;
&lt;li style="MARGIN-TOP:0px;MARGIN-BOTTOM:0px;VERTICAL-ALIGN:middle;"&gt;&lt;span style="FONT-SIZE:11pt;FONT-FAMILY:Calibri;"&gt;Once you&amp;#39;ve registered your plug-in, click on &lt;/span&gt;&lt;span style="FONT-WEIGHT:bold;FONT-SIZE:11pt;FONT-FAMILY:Calibri;"&gt;Register&lt;/span&gt;&lt;span style="FONT-SIZE:11pt;FONT-FAMILY:Calibri;"&gt; --&amp;gt;&lt;/span&gt;&lt;span style="FONT-WEIGHT:bold;FONT-SIZE:11pt;FONT-FAMILY:Calibri;"&gt; &lt;/span&gt;&lt;span style="FONT-SIZE:11pt;FONT-FAMILY:Calibri;"&gt;fill in the steps outline below --&amp;gt; &lt;strong&gt;Register New Step&lt;/strong&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ol&gt;
&lt;p style="MARGIN-TOP:0px;MARGIN-BOTTOM:0px;VERTICAL-ALIGN:middle;"&gt;&lt;span style="FONT-SIZE:11pt;FONT-FAMILY:Calibri;"&gt;&lt;/span&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="MARGIN-TOP:0px;MARGIN-BOTTOM:0px;VERTICAL-ALIGN:middle;"&gt;&lt;span style="FONT-SIZE:11pt;FONT-FAMILY:Calibri;"&gt;&lt;img style="WIDTH:717px;HEIGHT:388px;" height="388" src="http://crowechizek.com/cs/blogs/crm/dvarghese/pluginRegister/Screenshot5.jpg" width="717" align="middle" alt="" /&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN-TOP:0px;MARGIN-BOTTOM:0px;VERTICAL-ALIGN:middle;"&gt;&lt;span style="FONT-SIZE:11pt;FONT-FAMILY:Calibri;"&gt;&lt;/span&gt;&amp;nbsp;&lt;/p&gt;&lt;span style="FONT-SIZE:11pt;FONT-FAMILY:Calibri;"&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:11pt;FONT-FAMILY:Calibri;"&gt;
&lt;ol style="MARGIN-TOP:0in;FONT-SIZE:11pt;MARGIN-BOTTOM:0in;MARGIN-LEFT:1.125in;DIRECTION:ltr;FONT-FAMILY:Calibri;unicode-bidi:embed;"&gt;
&lt;li style="MARGIN-TOP:0px;MARGIN-BOTTOM:0px;VERTICAL-ALIGN:middle;"&gt;&lt;span style="FONT-SIZE:11pt;FONT-STYLE:italic;FONT-FAMILY:Calibri;"&gt;Message&lt;/span&gt;&lt;span style="FONT-SIZE:11pt;FONT-FAMILY:Calibri;"&gt; - In CRM 3.0, you had to configure the callout.xml file to specify if the plug-in was to be triggered via and update, create, assign, etc.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;Now you can configure this at this step.&lt;/span&gt;&lt;/li&gt;
&lt;li style="MARGIN-TOP:0px;MARGIN-BOTTOM:0px;VERTICAL-ALIGN:middle;"&gt;&lt;span style="FONT-SIZE:11pt;FONT-STYLE:italic;FONT-FAMILY:Calibri;"&gt;Primary Entity&lt;/span&gt;&lt;span style="FONT-SIZE:11pt;FONT-FAMILY:Calibri;"&gt; - The entity that will trigger the plug-in&lt;/span&gt;&lt;/li&gt;
&lt;li style="MARGIN-TOP:0px;MARGIN-BOTTOM:0px;VERTICAL-ALIGN:middle;"&gt;&lt;span style="FONT-SIZE:11pt;FONT-STYLE:italic;FONT-FAMILY:Calibri;"&gt;Secondary Entity&lt;/span&gt;&lt;span style="FONT-SIZE:11pt;FONT-FAMILY:Calibri;"&gt; - You should enter this only when the plug-in should be triggered for an event requiring two entities like the &amp;quot;SetRelated&amp;quot; message.&lt;/span&gt;&lt;/li&gt;
&lt;li style="MARGIN-TOP:0px;MARGIN-BOTTOM:0px;VERTICAL-ALIGN:middle;"&gt;&lt;span style="FONT-SIZE:11pt;FONT-STYLE:italic;FONT-FAMILY:Calibri;"&gt;Filtering Attributes&lt;/span&gt;&lt;span style="FONT-SIZE:11pt;FONT-FAMILY:Calibri;"&gt; - This allows you to filter which attributes of the entity will allow the triggering of the plug-in.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;For example if on the account you want the plug-in to fire only when the name gets updated, but not the account type, then you in your filter you can remove the account type.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;By default, all attributes are selected.&lt;/span&gt;&lt;/li&gt;
&lt;li style="MARGIN-TOP:0px;MARGIN-BOTTOM:0px;VERTICAL-ALIGN:middle;"&gt;&lt;span style="FONT-SIZE:11pt;FONT-STYLE:italic;FONT-FAMILY:Calibri;"&gt;Plugin&lt;/span&gt;&lt;span style="FONT-SIZE:11pt;FONT-FAMILY:Calibri;"&gt; - Select the assembly, and class you wish to associate to this step.&lt;/span&gt;&lt;/li&gt;
&lt;li style="MARGIN-TOP:0px;MARGIN-BOTTOM:0px;VERTICAL-ALIGN:middle;"&gt;&lt;span style="FONT-SIZE:11pt;FONT-STYLE:italic;FONT-FAMILY:Calibri;"&gt;Run In Users Context&lt;/span&gt;&lt;span style="FONT-SIZE:11pt;FONT-FAMILY:Calibri;"&gt; - By default it&amp;#39;s set to calling user, which means the plug-in will be fired with the current users credentials.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;This is to control security so a user w/o the proper permissions won&amp;#39;t have a plug-in fire to create/update/etc.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;any records.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;You can specify other users to run the context in.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;The list will pre-populate with all account names from the CRM installation.&lt;/span&gt;&lt;/li&gt;
&lt;li style="MARGIN-TOP:0px;MARGIN-BOTTOM:0px;VERTICAL-ALIGN:middle;"&gt;&lt;span style="FONT-SIZE:11pt;FONT-STYLE:italic;FONT-FAMILY:Calibri;"&gt;Execution order&lt;/span&gt;&lt;span style="FONT-SIZE:11pt;FONT-FAMILY:Calibri;"&gt; - Sometimes asynchronous operations on dependant on others asynchronous operations to complete.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;The execution order allows you to specify when this plug-in is supposed to fire.&lt;/span&gt;&lt;/li&gt;
&lt;li style="MARGIN-TOP:0px;MARGIN-BOTTOM:0px;VERTICAL-ALIGN:middle;"&gt;&lt;span style="FONT-SIZE:11pt;FONT-STYLE:italic;FONT-FAMILY:Calibri;"&gt;Event Sate&lt;/span&gt;&lt;span style="FONT-SIZE:11pt;FONT-FAMILY:Calibri;"&gt; - Specifies if the plug-in should be fired before or after an event.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;In&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;CRM 3.0, this is similar to configuring a &amp;quot;PostUpdate,&amp;quot; &amp;quot;PostCreate,&amp;quot; &amp;quot;PreUpdate,&amp;quot; etc.&lt;/span&gt;&lt;/li&gt;
&lt;li style="MARGIN-TOP:0px;MARGIN-BOTTOM:0px;VERTICAL-ALIGN:middle;"&gt;&lt;span style="FONT-SIZE:11pt;FONT-STYLE:italic;FONT-FAMILY:Calibri;"&gt;Execution Mode&lt;/span&gt;&lt;span style="FONT-SIZE:11pt;FONT-FAMILY:Calibri;"&gt; - A new feature which allows the plug-in to execute asynchronously or synchronously.&lt;/span&gt;&lt;/li&gt;
&lt;li style="MARGIN-TOP:0px;MARGIN-BOTTOM:0px;VERTICAL-ALIGN:middle;"&gt;&lt;span style="FONT-SIZE:11pt;FONT-STYLE:italic;FONT-FAMILY:Calibri;"&gt;Step Deployment&lt;/span&gt;&lt;span style="FONT-SIZE:11pt;FONT-FAMILY:Calibri;"&gt; - If you want the plug-in to be deployed (not registered) on the server and/or offline (Outlook client).&lt;/span&gt;&lt;/li&gt;
&lt;li style="MARGIN-TOP:0px;MARGIN-BOTTOM:0px;VERTICAL-ALIGN:middle;"&gt;&lt;span style="FONT-SIZE:11pt;FONT-STYLE:italic;FONT-FAMILY:Calibri;"&gt;Triggering Pipeline&lt;/span&gt;&lt;span style="FONT-SIZE:11pt;FONT-FAMILY:Calibri;"&gt; - For example, if you have an account with activities and you re-assign that account.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;If the plug-in was registered an activity, then it does not get fired because the activity is getting updated as part of another operation.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;To trigger the plug-in in that case you have to set the pipeline to &amp;quot;Child Pipeline&amp;quot;&lt;/span&gt;&lt;/li&gt;&lt;/ol&gt;
&lt;p style="FONT-SIZE:11pt;MARGIN:0in 0in 0in 0.75in;FONT-FAMILY:Calibri;"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="FONT-SIZE:11pt;MARGIN:0in 0in 0in 0.75in;FONT-FAMILY:Calibri;"&gt;&lt;span style="FONT-WEIGHT:bold;COLOR:red;"&gt;**NOTE:&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;According to the SDK, If you want your plug-in to run regardless of whether a Web service call or an (internal) platform call initiated the pipeline, register your plug-in in a child pipeline. However, do not use the IPluginExecutionContext.CreateCrmService or IPluginExecutionContext.CreateMetatdataService methods if you are writing code for a plug-in in that is used in a child pipeline. In a child pipeline, you must instantiate the CrmService or MetadataService manually.&lt;span style="FONT-WEIGHT:bold;COLOR:red;"&gt;**&lt;/span&gt;&lt;/p&gt;
&lt;ol style="MARGIN-TOP:0in;FONT-SIZE:11pt;MARGIN-BOTTOM:0in;MARGIN-LEFT:1.125in;DIRECTION:ltr;FONT-FAMILY:Calibri;unicode-bidi:embed;"&gt;
&lt;li style="MARGIN-TOP:0px;MARGIN-BOTTOM:0px;VERTICAL-ALIGN:middle;"&gt;&lt;span style="FONT-SIZE:11pt;FONT-STYLE:italic;FONT-FAMILY:Calibri;"&gt;Unsecure Configuration&lt;/span&gt;&lt;span style="FONT-SIZE:11pt;FONT-FAMILY:Calibri;"&gt; - if you don&amp;#39;t want to hardcode any values and the plug-in needs certain configuration values (that may change based on deployment environments) you can specify the values here.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;For example, the CRM server url.&lt;/span&gt;&lt;/li&gt;
&lt;li style="MARGIN-TOP:0px;MARGIN-BOTTOM:0px;VERTICAL-ALIGN:middle;"&gt;&lt;span style="FONT-SIZE:11pt;FONT-STYLE:italic;FONT-FAMILY:Calibri;"&gt;Secure Configuration&lt;/span&gt;&lt;span style="FONT-SIZE:11pt;FONT-FAMILY:Calibri;"&gt; - same concept as above, but you could place more secure configurations like user credentials.&lt;/span&gt;&lt;/li&gt;&lt;/ol&gt;
&lt;p style="FONT-SIZE:11pt;MARGIN:0in 0in 0in 1.125in;FONT-FAMILY:Calibri;"&gt;&amp;nbsp;&lt;/p&gt;
&lt;ol style="MARGIN-TOP:0in;FONT-SIZE:11pt;MARGIN-BOTTOM:0in;MARGIN-LEFT:0.75in;DIRECTION:ltr;FONT-FAMILY:Calibri;unicode-bidi:embed;"&gt;
&lt;li style="MARGIN-TOP:0px;MARGIN-BOTTOM:0px;VERTICAL-ALIGN:middle;"&gt;&lt;span style="FONT-SIZE:11pt;FONT-FAMILY:Calibri;"&gt;(Optional) Click on &lt;/span&gt;&lt;span style="FONT-WEIGHT:bold;FONT-SIZE:11pt;FONT-FAMILY:Calibri;"&gt;Register New Image&lt;/span&gt;&lt;span style="FONT-SIZE:11pt;FONT-FAMILY:Calibri;"&gt;.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;I say this step is optional because you may not need this step at all times.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;This is equivalent to the pre and post image entity xml&amp;#39;s in CRM 3.0.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;You can register an xml image of what the entity attributes were before and after an event.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;For example, if you&amp;#39;ve registered a post-update event on an account and you want to check what the value of a field was before the update, you could register a pre-update image.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;Furthermore, on this image, you can select which attributes you want the xml to contain.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;This allows users to help performance (all be it, just a tiny bit) but cutting down unnecessary fields.&lt;/span&gt;&lt;/li&gt;&lt;/ol&gt;
&lt;p style="FONT-SIZE:11pt;MARGIN:0in 0in 0in 0.75in;FONT-FAMILY:Calibri;"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="FONT-SIZE:11pt;MARGIN:0in 0in 0in 0.75in;FONT-FAMILY:Calibri;"&gt;&lt;span style="FONT-WEIGHT:bold;COLOR:red;"&gt;**NOTE: &lt;/span&gt;You can not register a pre-create image since there were no attributes for a specific record because it hasn&amp;#39;t been created yet.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;You will get an error if you try this.&lt;span style="FONT-WEIGHT:bold;COLOR:red;"&gt;**&lt;/span&gt;&lt;/p&gt;
&lt;p style="FONT-WEIGHT:bold;FONT-SIZE:11pt;MARGIN:0in 0in 0in 0.75in;COLOR:red;FONT-FAMILY:Calibri;"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="FONT-SIZE:11pt;MARGIN:0in;FONT-FAMILY:Calibri;"&gt;This concludes my in-depth look at the plug-in registration tool.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;All the notes I&amp;#39;ve added have been experiences I&amp;#39;ve had registering plug-ins.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;I hope this was informative and helps save you some time developing!&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;Happy coding!&lt;/p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;img src="http://www.crowehorwath.com/cs/aggbug.aspx?PostID=11033" width="1" height="1"&gt;</content><author><name>VARGHESED</name><uri>http://www.crowehorwath.com/cs/members/VARGHESED.aspx</uri></author><category term="Technical Tips" scheme="http://www.crowehorwath.com/cs/blogs/crm/archive/tags/Technical+Tips/default.aspx" /></entry><entry><title>Publishing Microsoft CRM 4.0 through ISA Server 2006</title><link rel="alternate" type="text/html" href="http://www.crowehorwath.com/cs/blogs/crm/archive/2009/02/21/publishing-microsoft-crm-4-0-through-isa-server-2006.aspx" /><id>http://www.crowehorwath.com/cs/blogs/crm/archive/2009/02/21/publishing-microsoft-crm-4-0-through-isa-server-2006.aspx</id><published>2009-02-21T23:08:00Z</published><updated>2009-02-21T23:08:00Z</updated><content type="html">&lt;p style="FONT-SIZE:11pt;MARGIN:0in;FONT-FAMILY:Calibri;"&gt;Here is a great article that illustrates how to publish Microsoft CRM 4.0 through ISA Server 2006: &lt;a href="http://blogs.technet.com/isablog/archive/2008/07/23/publishing-microsoft-crm-4-0-through-isa-server-2006.aspx"&gt;http://blogs.technet.com/isablog/archive/2008/07/23/publishing-microsoft-crm-4-0-through-isa-server-2006.aspx&lt;/a&gt;&lt;/p&gt;
&lt;p style="FONT-SIZE:11pt;MARGIN:0in;FONT-FAMILY:Calibri;"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="FONT-SIZE:11pt;MARGIN:0in;FONT-FAMILY:Calibri;"&gt;The article is broken up into the following sections:&lt;/p&gt;
&lt;p style="FONT-SIZE:11pt;MARGIN:0in;FONT-FAMILY:Calibri;"&gt;&amp;nbsp;&lt;/p&gt;
&lt;ol style="MARGIN-TOP:0in;FONT-SIZE:11pt;MARGIN-BOTTOM:0in;MARGIN-LEFT:0.75in;DIRECTION:ltr;FONT-FAMILY:Calibri;unicode-bidi:embed;"&gt;
&lt;li style="MARGIN-TOP:0px;MARGIN-BOTTOM:0px;VERTICAL-ALIGN:middle;"&gt;&lt;span style="FONT-SIZE:11pt;FONT-FAMILY:Calibri;"&gt;Adjusting CRM Server For External Publishing&lt;/span&gt;&lt;/li&gt;
&lt;ol style="MARGIN-TOP:0in;FONT-SIZE:11pt;MARGIN-BOTTOM:0in;MARGIN-LEFT:0.375in;DIRECTION:ltr;FONT-FAMILY:Calibri;unicode-bidi:embed;"&gt;
&lt;li style="MARGIN-TOP:0px;MARGIN-BOTTOM:0px;VERTICAL-ALIGN:middle;"&gt;&lt;span style="FONT-SIZE:11pt;FONT-FAMILY:Calibri;"&gt;General Considerations&lt;/span&gt;&lt;/li&gt;
&lt;li style="MARGIN-TOP:0px;MARGIN-BOTTOM:0px;VERTICAL-ALIGN:middle;"&gt;&lt;span style="FONT-SIZE:11pt;FONT-FAMILY:Calibri;"&gt;IFD Configuraiton&lt;/span&gt;&lt;/li&gt;&lt;/ol&gt;&lt;/ol&gt;
&lt;ol style="MARGIN-TOP:0in;FONT-SIZE:11pt;MARGIN-BOTTOM:0in;MARGIN-LEFT:0.75in;DIRECTION:ltr;FONT-FAMILY:Calibri;unicode-bidi:embed;"&gt;
&lt;li style="MARGIN-TOP:0px;MARGIN-BOTTOM:0px;VERTICAL-ALIGN:middle;"&gt;&lt;span style="FONT-SIZE:11pt;FONT-FAMILY:Calibri;"&gt;Configuring ISA Server 2006 Web publishing rule&lt;/span&gt;&lt;/li&gt;
&lt;li style="MARGIN-TOP:0px;MARGIN-BOTTOM:0px;VERTICAL-ALIGN:middle;"&gt;&lt;span style="FONT-SIZE:11pt;FONT-FAMILY:Calibri;"&gt;Troubleshooting Tips&lt;/span&gt;&lt;/li&gt;&lt;/ol&gt;
&lt;p style="FONT-SIZE:11pt;MARGIN:0in 0in 0in 0.75in;FONT-FAMILY:Calibri;"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="FONT-SIZE:11pt;MARGIN:0in;FONT-FAMILY:Calibri;"&gt;For those who need some information on Microsoft ISA Server: &lt;a href="http://en.wikipedia.org/wiki/ISA_Server"&gt;http://en.wikipedia.org/wiki/ISA_Server&lt;/a&gt;&lt;/p&gt;&lt;img src="http://www.crowehorwath.com/cs/aggbug.aspx?PostID=11032" width="1" height="1"&gt;</content><author><name>VARGHESED</name><uri>http://www.crowehorwath.com/cs/members/VARGHESED.aspx</uri></author><category term="Technical Tips" scheme="http://www.crowehorwath.com/cs/blogs/crm/archive/tags/Technical+Tips/default.aspx" /></entry><entry><title>Rules To Better Microsoft CRM &amp; SSRS</title><link rel="alternate" type="text/html" href="http://www.crowehorwath.com/cs/blogs/crm/archive/2009/02/21/rules-to-better-microsoft-crm-amp-ssrs.aspx" /><id>http://www.crowehorwath.com/cs/blogs/crm/archive/2009/02/21/rules-to-better-microsoft-crm-amp-ssrs.aspx</id><published>2009-02-21T23:07:00Z</published><updated>2009-02-21T23:07:00Z</updated><content type="html">&lt;p style="FONT-SIZE:11pt;MARGIN:0in;FONT-FAMILY:Calibri;"&gt;Below are some very useful links on standards for Microsoft CRM and SQL Server Reporting Services:&lt;/p&gt;
&lt;p style="FONT-SIZE:11pt;MARGIN:0in;FONT-FAMILY:Calibri;"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="MARGIN:0in;"&gt;&lt;a href="http://www.ssw.com.au/ssw/Standards/Rules/RulestoBetterMicrosoftCRM.aspx"&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:Verdana;"&gt;http://www.ssw.com.au/ssw/Standards/Rules/RulestoBetterMicrosoftCRM.aspx&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p style="FONT-SIZE:10pt;MARGIN:0in;FONT-FAMILY:Verdana;"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="MARGIN:0in;"&gt;&lt;a href="http://www.ssw.com.au/ssw/Standards/Rules/RulesToBetterSQLReportingServices.aspx"&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:Verdana;"&gt;http://www.ssw.com.au/ssw/Standards/Rules/RulesToBetterSQLReportingServices.aspx&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p style="FONT-SIZE:11pt;MARGIN:0in;FONT-FAMILY:Calibri;"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="FONT-SIZE:11pt;MARGIN:0in;FONT-FAMILY:Calibri;"&gt;Enjoy! &lt;/p&gt;&lt;img src="http://www.crowehorwath.com/cs/aggbug.aspx?PostID=11031" width="1" height="1"&gt;</content><author><name>VARGHESED</name><uri>http://www.crowehorwath.com/cs/members/VARGHESED.aspx</uri></author><category term="Business Solutions" scheme="http://www.crowehorwath.com/cs/blogs/crm/archive/tags/Business+Solutions/default.aspx" /><category term="Technical Tips" scheme="http://www.crowehorwath.com/cs/blogs/crm/archive/tags/Technical+Tips/default.aspx" /></entry><entry><title>Adding A Filtered Lookup In CRM</title><link rel="alternate" type="text/html" href="http://www.crowehorwath.com/cs/blogs/crm/archive/2009/02/03/adding-a-filtered-lookup-in-crm.aspx" /><id>http://www.crowehorwath.com/cs/blogs/crm/archive/2009/02/03/adding-a-filtered-lookup-in-crm.aspx</id><published>2009-02-04T01:16:00Z</published><updated>2009-02-04T01:16:00Z</updated><content type="html">&lt;p style="FONT-SIZE:11pt;MARGIN:0in;FONT-FAMILY:Calibri;"&gt;Another common question I see in blogs from users are is there a way to add filtered lookups?&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;That is only allow users to &amp;quot;lookup&amp;quot; certain records that related to that particular one.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;Here&amp;#39;s a real life example:&lt;/p&gt;
&lt;p style="FONT-SIZE:11pt;MARGIN:0in;FONT-FAMILY:Calibri;"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="FONT-SIZE:11pt;MARGIN:0in;FONT-FAMILY:Calibri;"&gt;Say you have an account that has a 1:N parental relationship with entity A.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;Now let&amp;#39;s say there&amp;#39;s another entity B that has N:1 referential relationships with both account, and entity A.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;There is a way on entity B so that after you select, on the lookup, a record of the account you want to relate to it, to filter the second lookup of entity A to only those related to the account you just selected.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;i.e.&lt;/p&gt;
&lt;p style="FONT-SIZE:11pt;MARGIN:0in;FONT-FAMILY:Calibri;"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="FONT-SIZE:11pt;MARGIN:0in;FONT-FAMILY:Calibri;"&gt;Parental Relationship&lt;/p&gt;
&lt;p style="FONT-SIZE:11pt;MARGIN:0in;FONT-FAMILY:Calibri;"&gt;Account --&amp;gt; Entity A&lt;/p&gt;
&lt;p style="FONT-SIZE:11pt;MARGIN:0in;FONT-FAMILY:Calibri;"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="FONT-SIZE:11pt;MARGIN:0in;FONT-FAMILY:Calibri;"&gt;Referential Relationship&lt;/p&gt;
&lt;p style="FONT-SIZE:11pt;MARGIN:0in;FONT-FAMILY:Calibri;"&gt;Entity B -- Account&lt;/p&gt;
&lt;p style="FONT-SIZE:11pt;MARGIN:0in;FONT-FAMILY:Calibri;"&gt;Entity B -- Entity A&lt;/p&gt;
&lt;p style="FONT-SIZE:11pt;MARGIN:0in;FONT-FAMILY:Calibri;"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="FONT-SIZE:11pt;MARGIN:0in;FONT-FAMILY:Calibri;"&gt;With simple JavaScript, when a user selects the lookup value for the account, the lookup for Entity A can be filtered to point to only those entity A&amp;#39;s that are related to the account you just chose.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;Here&amp;#39;s the code to place on the form of Entity B:&lt;/p&gt;
&lt;p style="FONT-SIZE:11pt;MARGIN:0in;FONT-FAMILY:Calibri;"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="FONT-SIZE:11pt;MARGIN:0in;FONT-FAMILY:Calibri;"&gt;crmForm.all.&amp;lt;lookup field for entity A&amp;gt;.additionalparams = &amp;#39;search=&amp;#39; + encodeURIComponent(crmForm.all.&amp;lt;lookup field for account&amp;gt;.DataValue[0].name);&lt;/p&gt;
&lt;p style="FONT-SIZE:11pt;MARGIN:0in;FONT-FAMILY:Calibri;"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="FONT-SIZE:11pt;MARGIN:0in;FONT-FAMILY:Calibri;"&gt;That&amp;#39;s it!&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;Simple, yet effective.&lt;/p&gt;&lt;img src="http://www.crowehorwath.com/cs/aggbug.aspx?PostID=8373" width="1" height="1"&gt;</content><author><name>VARGHESED</name><uri>http://www.crowehorwath.com/cs/members/VARGHESED.aspx</uri></author><category term="Technical Tips" scheme="http://www.crowehorwath.com/cs/blogs/crm/archive/tags/Technical+Tips/default.aspx" /></entry><entry><title>Example of Dynamic Entity Retrieval</title><link rel="alternate" type="text/html" href="http://www.crowehorwath.com/cs/blogs/crm/archive/2009/01/31/example-of-dynamic-entity-retrieval.aspx" /><id>http://www.crowehorwath.com/cs/blogs/crm/archive/2009/01/31/example-of-dynamic-entity-retrieval.aspx</id><published>2009-02-01T01:10:00Z</published><updated>2009-02-01T01:10:00Z</updated><content type="html">&lt;p style="FONT-SIZE:11pt;MARGIN:0in;FONT-FAMILY:Calibri;"&gt;There have been numerous requests on other blogs about sample code to on how to retrieve entities in CRM.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;One way is to use the CRM web service to retrieve business entities, however by doing so, you&amp;#39;re only limited to out-of-the-box entities with system attributes.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;To retrieve anything more &amp;quot;dynamic,&amp;quot; you&amp;#39;ll have to employ other methods.&amp;nbsp; Please remember that in order to retrieve any record, you must have the proper permissions on that entity.&lt;/p&gt;
&lt;p style="FONT-SIZE:11pt;MARGIN:0in;FONT-FAMILY:Calibri;"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="FONT-SIZE:11pt;MARGIN:0in;FONT-FAMILY:Calibri;"&gt;Below is a code example of how to retrieve a record with an id using dynamic entity retrieve:&lt;/p&gt;
&lt;p style="FONT-SIZE:11pt;MARGIN:0in;FONT-FAMILY:Calibri;"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="FONT-SIZE:11pt;MARGIN:0in;FONT-FAMILY:Calibri;"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="FONT-SIZE:11pt;MARGIN:0in;FONT-FAMILY:Calibri;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&lt;/span&gt;public DynamicEntity RetrieveEntity()&lt;/p&gt;
&lt;p style="FONT-SIZE:11pt;MARGIN:0in;FONT-FAMILY:Calibri;"&gt;{&lt;/p&gt;
&lt;p style="FONT-SIZE:11pt;MARGIN:0in;FONT-FAMILY:Calibri;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#009900"&gt; &lt;/font&gt;&lt;/span&gt;&lt;font color="#009900"&gt;//variable initialization&lt;/font&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/p&gt;
&lt;p style="FONT-SIZE:11pt;MARGIN:0in;FONT-FAMILY:Calibri;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;TargetRetrieveDynamic target = new TargetRetrieveDynamic();&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/p&gt;
&lt;p style="FONT-SIZE:11pt;MARGIN:0in;FONT-FAMILY:Calibri;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;RetrieveRequest retrieveRequest = new RetrieveRequest();&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/p&gt;
&lt;p style="FONT-SIZE:11pt;MARGIN:0in;FONT-FAMILY:Calibri;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;RetrieveResponse retrieveResponse = null;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/p&gt;
&lt;p style="FONT-SIZE:11pt;MARGIN:0in 0in 0in 0.375in;FONT-FAMILY:Calibri;"&gt;DynamicEntity entity = null;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/p&gt;
&lt;p style="FONT-SIZE:11pt;MARGIN:0in 0in 0in 0.375in;FONT-FAMILY:Calibri;"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="FONT-SIZE:11pt;MARGIN:0in;FONT-FAMILY:Calibri;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;target.EntityName = &amp;lt;name of entity here&amp;gt;&lt;/p&gt;
&lt;p style="FONT-SIZE:11pt;MARGIN:0in;FONT-FAMILY:Calibri;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;target.EntityId = &amp;lt;id of entity here&amp;gt;&lt;/p&gt;
&lt;p style="FONT-SIZE:11pt;MARGIN:0in;FONT-FAMILY:Calibri;"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="FONT-SIZE:11pt;MARGIN:0in;FONT-FAMILY:Calibri;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;font color="#009900"&gt;//initialize request parameters&lt;/font&gt;&lt;/p&gt;
&lt;p style="FONT-SIZE:11pt;MARGIN:0in;FONT-FAMILY:Calibri;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;retrieveRequest.ColumnSet = new AllColumns();&lt;/p&gt;
&lt;p style="FONT-SIZE:11pt;MARGIN:0in;FONT-FAMILY:Calibri;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;retrieveRequest.ReturnDynamicEntities = true;&lt;/p&gt;
&lt;p style="FONT-SIZE:11pt;MARGIN:0in;FONT-FAMILY:Calibri;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;retrieveRequest.Target = target;&lt;/p&gt;
&lt;p style="FONT-SIZE:11pt;MARGIN:0in;FONT-FAMILY:Calibri;"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="FONT-SIZE:11pt;MARGIN:0in;FONT-FAMILY:Calibri;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;font color="#009900"&gt;//build the response object&lt;/font&gt;&lt;/p&gt;
&lt;p style="FONT-SIZE:11pt;MARGIN:0in;FONT-FAMILY:Calibri;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;retrieveResponse = (RetrieveResponse)GetCrmService().Execute(retrieveRequest);&lt;/p&gt;
&lt;p style="FONT-SIZE:11pt;MARGIN:0in;FONT-FAMILY:Calibri;"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="FONT-SIZE:11pt;MARGIN:0in;FONT-FAMILY:Calibri;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;font color="#009900"&gt;//retrieve the service order item from the response&lt;/font&gt;&lt;/p&gt;
&lt;p style="FONT-SIZE:11pt;MARGIN:0in;FONT-FAMILY:Calibri;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;entity = (DynamicEntity)retrieveResponse.BusinessEntity;&lt;/p&gt;
&lt;p style="FONT-SIZE:11pt;MARGIN:0in;FONT-FAMILY:Calibri;"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="FONT-SIZE:11pt;MARGIN:0in;FONT-FAMILY:Calibri;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;return entity;&lt;/p&gt;
&lt;p style="FONT-SIZE:11pt;MARGIN:0in;FONT-FAMILY:Calibri;"&gt;}&lt;/p&gt;
&lt;p style="FONT-SIZE:11pt;MARGIN:0in;FONT-FAMILY:Calibri;"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="FONT-SIZE:11pt;MARGIN:0in;FONT-FAMILY:Calibri;"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="FONT-SIZE:11pt;MARGIN:0in;FONT-FAMILY:Calibri;"&gt;The above example is a simple one, but the example below retrieves all contacts that have an account id = some id, and also retrieve the records with only a certain attributes.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;This is probably a more robust example encompassing many retrieval options:&lt;/p&gt;
&lt;p style="FONT-SIZE:11pt;MARGIN:0in;FONT-FAMILY:Calibri;"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="FONT-SIZE:11pt;MARGIN:0in;FONT-FAMILY:Calibri;"&gt;private ArrayList RetrieveMultipleContacts(ICrmService crmService, Guid parentAccountId)&lt;/p&gt;
&lt;p style="FONT-SIZE:11pt;MARGIN:0in;FONT-FAMILY:Calibri;"&gt;{&lt;/p&gt;
&lt;p style="FONT-SIZE:11pt;MARGIN:0in 0in 0in 0.375in;FONT-FAMILY:Calibri;"&gt;&lt;font color="#009900"&gt;//variable initialization&lt;/font&gt;&lt;/p&gt;
&lt;p style="FONT-SIZE:11pt;MARGIN:0in 0in 0in 0.375in;FONT-FAMILY:Calibri;"&gt;ConditionExpression condition = new ConditionBLOCKED EXPRESSION;&lt;/p&gt;
&lt;p style="FONT-SIZE:11pt;MARGIN:0in 0in 0in 0.375in;FONT-FAMILY:Calibri;"&gt;FilterExpression filter = new FilterBLOCKED EXPRESSION;&lt;/p&gt;
&lt;p style="FONT-SIZE:11pt;MARGIN:0in 0in 0in 0.375in;FONT-FAMILY:Calibri;"&gt;QueryExpression query = new QueryBLOCKED EXPRESSION;&lt;/p&gt;
&lt;p style="FONT-SIZE:11pt;MARGIN:0in 0in 0in 0.375in;FONT-FAMILY:Calibri;"&gt;RetrieveMultipleRequest request = new RetrieveMultipleRequest();&lt;/p&gt;
&lt;p style="FONT-SIZE:11pt;MARGIN:0in 0in 0in 0.375in;FONT-FAMILY:Calibri;"&gt;ColumnSet cols = new ColumnSet();&lt;/p&gt;
&lt;p style="FONT-SIZE:11pt;MARGIN:0in 0in 0in 0.375in;FONT-FAMILY:Calibri;"&gt;RetrieveMultipleResponse response = null;&lt;/p&gt;
&lt;p style="FONT-SIZE:11pt;MARGIN:0in 0in 0in 0.375in;FONT-FAMILY:Calibri;"&gt;ArrayList contacts = new ArrayList();&lt;/p&gt;
&lt;p style="FONT-SIZE:11pt;MARGIN:0in;FONT-FAMILY:Calibri;"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="FONT-SIZE:11pt;MARGIN:0in 0in 0in 0.375in;FONT-FAMILY:Calibri;"&gt;&lt;font color="#009900"&gt;//Set the condition for retrieval&lt;/font&gt;&lt;/p&gt;
&lt;p style="FONT-SIZE:11pt;MARGIN:0in 0in 0in 0.375in;FONT-FAMILY:Calibri;"&gt;condition.AttributeName = &amp;quot;parentcustomerid&amp;quot;;&lt;/p&gt;
&lt;p style="FONT-SIZE:11pt;MARGIN:0in 0in 0in 0.375in;FONT-FAMILY:Calibri;"&gt;condition.Operator = ConditionOperator.Equal;&lt;/p&gt;
&lt;p style="FONT-SIZE:11pt;MARGIN:0in 0in 0in 0.375in;FONT-FAMILY:Calibri;"&gt;condition.Values = new string[] { parentAccountId.ToString() };&lt;/p&gt;
&lt;p style="FONT-SIZE:11pt;MARGIN:0in;FONT-FAMILY:Calibri;"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="FONT-SIZE:11pt;MARGIN:0in 0in 0in 0.375in;FONT-FAMILY:Calibri;"&gt;&lt;font color="#009900"&gt;//Set the properties of the filter.&lt;/font&gt;&lt;/p&gt;
&lt;p style="FONT-SIZE:11pt;MARGIN:0in 0in 0in 0.375in;FONT-FAMILY:Calibri;"&gt;filter.FilterOperator = LogicalOperator.And;&lt;/p&gt;
&lt;p style="FONT-SIZE:11pt;MARGIN:0in 0in 0in 0.375in;FONT-FAMILY:Calibri;"&gt;filter.AddCondition(condition);&lt;/p&gt;
&lt;p style="FONT-SIZE:11pt;MARGIN:0in;FONT-FAMILY:Calibri;"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="FONT-SIZE:11pt;MARGIN:0in 0in 0in 0.375in;FONT-FAMILY:Calibri;"&gt;&lt;font color="#009900"&gt;//Set the attributes needed to be returned.&lt;/font&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;&lt;strong&gt;&lt;font color="#cc0000"&gt;NOTE:&lt;/font&gt;&lt;/strong&gt; &lt;font color="#009900"&gt;The CRM Sdk has an erroneous example&lt;/font&gt;&lt;/p&gt;
&lt;p style="FONT-SIZE:11pt;MARGIN:0in 0in 0in 0.375in;FONT-FAMILY:Calibri;"&gt;&lt;font color="#009900"&gt;//of how to set the attributes for retrieval. &lt;/font&gt;&lt;/p&gt;
&lt;p style="FONT-SIZE:11pt;MARGIN:0in 0in 0in 0.375in;FONT-FAMILY:Calibri;"&gt;cols.Attributes.Add(&amp;quot;address1_line1&amp;quot;);&lt;/p&gt;
&lt;p style="FONT-SIZE:11pt;MARGIN:0in 0in 0in 0.375in;FONT-FAMILY:Calibri;"&gt;cols.Attributes.Add(&amp;quot;address1_line2&amp;quot;);&lt;/p&gt;
&lt;p style="FONT-SIZE:11pt;MARGIN:0in 0in 0in 0.375in;FONT-FAMILY:Calibri;"&gt;cols.Attributes.Add(&amp;quot;address1_line3&amp;quot;);&lt;/p&gt;
&lt;p style="FONT-SIZE:11pt;MARGIN:0in 0in 0in 0.375in;FONT-FAMILY:Calibri;"&gt;cols.Attributes.Add(&amp;quot;address1_city&amp;quot;);&lt;/p&gt;
&lt;p style="FONT-SIZE:11pt;MARGIN:0in 0in 0in 0.375in;FONT-FAMILY:Calibri;"&gt;cols.Attributes.Add(&amp;quot;address1_stateorprovince&amp;quot;);&lt;/p&gt;
&lt;p style="FONT-SIZE:11pt;MARGIN:0in 0in 0in 0.375in;FONT-FAMILY:Calibri;"&gt;cols.Attributes.Add(&amp;quot;address1_postalcode&amp;quot;);&lt;/p&gt;
&lt;p style="FONT-SIZE:11pt;MARGIN:0in 0in 0in 0.375in;FONT-FAMILY:Calibri;"&gt;cols.Attributes.Add(&amp;quot;address1_country&amp;quot;);&lt;/p&gt;
&lt;p style="FONT-SIZE:11pt;MARGIN:0in 0in 0in 0.375in;FONT-FAMILY:Calibri;"&gt;cols.Attributes.Add(&amp;quot;telephone1&amp;quot;);&lt;/p&gt;
&lt;p style="FONT-SIZE:11pt;MARGIN:0in 0in 0in 0.375in;FONT-FAMILY:Calibri;"&gt;cols.Attributes.Add(&amp;quot;fax&amp;quot;);&lt;/p&gt;
&lt;p style="FONT-SIZE:11pt;MARGIN:0in;FONT-FAMILY:Calibri;"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="FONT-SIZE:11pt;MARGIN:0in 0in 0in 0.375in;FONT-FAMILY:Calibri;"&gt;&lt;font color="#009900"&gt;//Set the properties of the QueryExpression object.&lt;/font&gt;&lt;/p&gt;
&lt;p style="FONT-SIZE:11pt;MARGIN:0in 0in 0in 0.375in;FONT-FAMILY:Calibri;"&gt;query.EntityName = EntityName.contact.ToString();&lt;/p&gt;
&lt;p style="FONT-SIZE:11pt;MARGIN:0in 0in 0in 0.375in;FONT-FAMILY:Calibri;"&gt;query.ColumnSet = cols;&lt;/p&gt;
&lt;p style="FONT-SIZE:11pt;MARGIN:0in 0in 0in 0.375in;FONT-FAMILY:Calibri;"&gt;query.Criteria = filter;&lt;/p&gt;
&lt;p style="FONT-SIZE:11pt;MARGIN:0in 0in 0in 0.375in;FONT-FAMILY:Calibri;"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="FONT-SIZE:11pt;MARGIN:0in 0in 0in 0.375in;FONT-FAMILY:Calibri;"&gt;&lt;font color="#009900"&gt;//Set the query for the request and set the flag to return&lt;/font&gt;&lt;/p&gt;
&lt;p style="FONT-SIZE:11pt;MARGIN:0in 0in 0in 0.375in;FONT-FAMILY:Calibri;"&gt;&lt;font color="#009900"&gt;//dynamic entities&lt;/font&gt;&lt;/p&gt;
&lt;p style="FONT-SIZE:11pt;MARGIN:0in 0in 0in 0.375in;FONT-FAMILY:Calibri;"&gt;request.Query = query;&lt;/p&gt;
&lt;p style="FONT-SIZE:11pt;MARGIN:0in;FONT-FAMILY:Calibri;"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="FONT-SIZE:11pt;MARGIN:0in 0in 0in 0.375in;FONT-FAMILY:Calibri;"&gt;&lt;font color="#009900"&gt;//retrieve the contacts&lt;/font&gt;&lt;/p&gt;
&lt;p style="FONT-SIZE:11pt;MARGIN:0in 0in 0in 0.375in;FONT-FAMILY:Calibri;"&gt;response = (RetrieveMultipleResponse)crmService.Execute(request);&lt;/p&gt;
&lt;p style="FONT-SIZE:11pt;MARGIN:0in;FONT-FAMILY:Calibri;"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="FONT-SIZE:11pt;MARGIN:0in 0in 0in 0.375in;FONT-FAMILY:Calibri;"&gt;foreach (BusinessEntity cont in response.BusinessEntityCollection.BusinessEntities)&lt;/p&gt;
&lt;p style="FONT-SIZE:11pt;MARGIN:0in 0in 0in 0.375in;FONT-FAMILY:Calibri;"&gt;{&lt;/p&gt;
&lt;p style="FONT-SIZE:11pt;MARGIN:0in 0in 0in 0.75in;FONT-FAMILY:Calibri;"&gt;contacts.Add(cont);&lt;/p&gt;
&lt;p style="FONT-SIZE:11pt;MARGIN:0in 0in 0in 0.375in;FONT-FAMILY:Calibri;"&gt;}&lt;/p&gt;
&lt;p style="FONT-SIZE:11pt;MARGIN:0in 0in 0in 0.375in;FONT-FAMILY:Calibri;"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="FONT-SIZE:11pt;MARGIN:0in 0in 0in 0.375in;FONT-FAMILY:Calibri;"&gt;return contacts;&lt;/p&gt;
&lt;p style="FONT-SIZE:11pt;MARGIN:0in;FONT-FAMILY:Calibri;"&gt;}&lt;/p&gt;
&lt;p style="FONT-SIZE:11pt;MARGIN:0in;FONT-FAMILY:Calibri;"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="FONT-SIZE:11pt;MARGIN:0in;FONT-FAMILY:Calibri;"&gt;I hope these examples help someone, happy coding!&lt;/p&gt;&lt;img src="http://www.crowehorwath.com/cs/aggbug.aspx?PostID=8372" width="1" height="1"&gt;</content><author><name>VARGHESED</name><uri>http://www.crowehorwath.com/cs/members/VARGHESED.aspx</uri></author><category term="Technical Tips" scheme="http://www.crowehorwath.com/cs/blogs/crm/archive/tags/Technical+Tips/default.aspx" /></entry><entry><title>Open vs. Scheduled Appointments In CRM</title><link rel="alternate" type="text/html" href="http://www.crowehorwath.com/cs/blogs/crm/archive/2009/01/23/open-vs-scheduled-appointments-in-crm.aspx" /><id>http://www.crowehorwath.com/cs/blogs/crm/archive/2009/01/23/open-vs-scheduled-appointments-in-crm.aspx</id><published>2009-01-23T19:15:00Z</published><updated>2009-01-23T19:15:00Z</updated><content type="html">&lt;p style="FONT-SIZE:11pt;MARGIN:0in;FONT-FAMILY:Calibri;"&gt;In CRM, when creating appointments, you can set the status to Open or Scheduled.&amp;nbsp; But why would a user set the status to one or the other?&lt;/p&gt;
&lt;p style="FONT-SIZE:11pt;MARGIN:0in;FONT-FAMILY:Calibri;"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="FONT-SIZE:11pt;MARGIN:0in;FONT-FAMILY:Calibri;"&gt;According to the SDK, the status and state codes are different:&lt;/p&gt;
&lt;p style="FONT-SIZE:11pt;MARGIN:0in;FONT-FAMILY:Calibri;"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="FONT-SIZE:11pt;MARGIN:0in;FONT-FAMILY:Calibri;"&gt;&lt;img style="WIDTH:893px;HEIGHT:266px;" height="235" src="http://crowechizek.com/cs/blogs/crm/dvarghese/appointmentStatus/sdkPicture.jpg" width="982" alt="" /&gt;&lt;/p&gt;
&lt;p style="FONT-SIZE:11pt;MARGIN:0in;FONT-FAMILY:Calibri;"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="FONT-SIZE:11pt;MARGIN:0in;FONT-FAMILY:Calibri;"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="FONT-SIZE:11pt;MARGIN:0in;FONT-FAMILY:Calibri;"&gt;For CRM Outlook users, the only real difference seems to be the scheduling.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;When other users look at your calendar during this time period, if the appointment was marked Open, the time block will be marked as &amp;quot;tentative.&amp;quot;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;If the appointment was marked Scheduled, the time will show up as &amp;quot;busy&amp;quot; in Outlook.&lt;/p&gt;&lt;img src="http://www.crowehorwath.com/cs/aggbug.aspx?PostID=8301" width="1" height="1"&gt;</content><author><name>VARGHESED</name><uri>http://www.crowehorwath.com/cs/members/VARGHESED.aspx</uri></author><category term="Technical Tips" scheme="http://www.crowehorwath.com/cs/blogs/crm/archive/tags/Technical+Tips/default.aspx" /></entry><entry><title>Using CRM Workflow To Create Audit Trail</title><link rel="alternate" type="text/html" href="http://www.crowehorwath.com/cs/blogs/crm/archive/2009/01/20/using-crm-workflow-to-create-audit-trail.aspx" /><id>http://www.crowehorwath.com/cs/blogs/crm/archive/2009/01/20/using-crm-workflow-to-create-audit-trail.aspx</id><published>2009-01-20T13:29:00Z</published><updated>2009-01-20T13:29:00Z</updated><content type="html">&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="FONT-SIZE:11pt;MARGIN:0in;FONT-FAMILY:Calibri;"&gt;There&amp;#39;s an excellent post on the MSDN CRM blog on how to create an audit trail using the CRM 4.0 workflow.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;I&amp;#39;ve had numerous customer requests for an audit trail of entities when a field changes.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;Clients want to know when certain fields change, and who made the change.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;&lt;/p&gt;
&lt;p style="FONT-SIZE:11pt;MARGIN:0in;FONT-FAMILY:Calibri;"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="FONT-SIZE:11pt;MARGIN:0in;FONT-FAMILY:Calibri;"&gt;The MSDN post gives a great example of using out of the box CRM workflow functionality to meet their needs: &lt;a href="http://blogs.msdn.com/crm/archive/2008/04/10/using-workflow-to-maintain-an-audit-log.aspx"&gt;http://blogs.msdn.com/crm/archive/2008/04/10/using-workflow-to-maintain-an-audit-log.aspx&lt;/a&gt;.&lt;/p&gt;&lt;img src="http://www.crowehorwath.com/cs/aggbug.aspx?PostID=7592" width="1" height="1"&gt;</content><author><name>VARGHESED</name><uri>http://www.crowehorwath.com/cs/members/VARGHESED.aspx</uri></author><category term="Business Solutions" scheme="http://www.crowehorwath.com/cs/blogs/crm/archive/tags/Business+Solutions/default.aspx" /><category term="Technical Tips" scheme="http://www.crowehorwath.com/cs/blogs/crm/archive/tags/Technical+Tips/default.aspx" /><category term="CRM News" scheme="http://www.crowehorwath.com/cs/blogs/crm/archive/tags/CRM+News/default.aspx" /></entry><entry><title>Infinite Loop In CRM Workflow Custom Assembly</title><link rel="alternate" type="text/html" href="http://www.crowehorwath.com/cs/blogs/crm/archive/2009/01/19/infinite-loop-in-crm-workflow-custom-assembly.aspx" /><id>http://www.crowehorwath.com/cs/blogs/crm/archive/2009/01/19/infinite-loop-in-crm-workflow-custom-assembly.aspx</id><published>2009-01-19T16:19:00Z</published><updated>2009-01-19T16:19:00Z</updated><content type="html">&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="FONT-WEIGHT:bold;FONT-SIZE:11pt;MARGIN:0in;FONT-FAMILY:Calibri;"&gt;Business Requirement&lt;/p&gt;
&lt;p style="FONT-SIZE:11pt;MARGIN:0in;FONT-FAMILY:Calibri;"&gt;I recently had a requirement where if an account&amp;#39;s address was updated, all associated contact&amp;#39;s addresses needed to be updated as well.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;Likewise, if a contact gets re-associated to another account, i.e. the parentcustomerid field gets changed, then update that contact&amp;#39;s address.&lt;/p&gt;
&lt;p style="FONT-SIZE:11pt;MARGIN:0in;FONT-FAMILY:Calibri;"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="FONT-WEIGHT:bold;FONT-SIZE:11pt;MARGIN:0in;FONT-FAMILY:Calibri;"&gt;Initial Development&lt;/p&gt;
&lt;p style="FONT-SIZE:11pt;MARGIN:0in;FONT-FAMILY:Calibri;"&gt;I thought we could use a CRM custom workflow activity to handle this because it gives the business user the ability to configure the workflow.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;So I created two separate workflows that would call a custom workflow activity assembly.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;The trigger to call the account workflow was if any of the address attributes changed, and for contact was if the parentcustomerid was set/changed.&lt;/p&gt;
&lt;p style="FONT-SIZE:11pt;MARGIN:0in;FONT-FAMILY:Calibri;"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="FONT-SIZE:11pt;MARGIN:0in;FONT-FAMILY:Calibri;"&gt;The assembly itself first checked the workflow context to see what the primary entity was (to handle being called from the account or contact workflow).&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;Then the required business logic was performed, and the CRM web service update was called to update the contact entity.&lt;/p&gt;
&lt;p style="FONT-SIZE:11pt;MARGIN:0in;FONT-FAMILY:Calibri;"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="FONT-WEIGHT:bold;FONT-SIZE:11pt;MARGIN:0in;FONT-FAMILY:Calibri;"&gt;Test Results&lt;/p&gt;
&lt;p style="FONT-SIZE:11pt;MARGIN:0in;FONT-FAMILY:Calibri;"&gt;After I registered the assembly and started unit testing, it looked as if everything worked. Then looking at the history of workflows for the test contact record, I noticed about six entries for the workflow I just configured.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;Then I used a VPC and tested the assembly by using Visual Studio debugger, attaching it to the CRM Asynchronous&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;Service process,&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;and found that there was an infinite loop occurring.&lt;/p&gt;
&lt;p style="FONT-SIZE:11pt;MARGIN:0in;FONT-FAMILY:Calibri;"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="FONT-SIZE:11pt;MARGIN:0in;FONT-FAMILY:Calibri;"&gt;When the contact record was re-associated to another account, the workflow kicked off and executed the custom assembly.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;Within the code, it set only the address properties on that record and then called the CRM service update method.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;Right after that update was made, a new workflow instance was called again.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;To make sure, I commented out the update call in the code and…no more loops!&lt;/p&gt;
&lt;p style="FONT-SIZE:11pt;MARGIN:0in;FONT-FAMILY:Calibri;"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="FONT-WEIGHT:bold;FONT-SIZE:11pt;MARGIN:0in;FONT-FAMILY:Calibri;"&gt;Final Thoughts&lt;/p&gt;
&lt;p style="FONT-SIZE:11pt;MARGIN:0in;FONT-FAMILY:Calibri;"&gt;Some technologies have flags for attributes to determine if that particular attribute has been updated or not.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;When the CRM web service update was called, even though I only set the address fields, it seems to &amp;quot;flag&amp;quot; that all attributes have been updated.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;Either that, or the workflow conditions were never checked.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;&lt;/p&gt;
&lt;p style="FONT-SIZE:11pt;MARGIN:0in;FONT-FAMILY:Calibri;"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="FONT-SIZE:11pt;MARGIN:0in;FONT-FAMILY:Calibri;"&gt;I even tried to add some sort of check to make sure even if the workflow was called the code wasn&amp;#39;t executed.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;However, unlike plug-ins, workflows don&amp;#39;t have functionality to check the values before and after an update.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;I also tried putting a global counter to update after the first run, and check if the method was called again.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;However, the entire workflow was called again, which created another instance of the class, thus the counter idea didn&amp;#39;t work.&lt;/p&gt;
&lt;p style="FONT-SIZE:11pt;MARGIN:0in;FONT-FAMILY:Calibri;"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="FONT-WEIGHT:bold;FONT-SIZE:11pt;MARGIN:0in;FONT-FAMILY:Calibri;"&gt;Solution&lt;/p&gt;
&lt;p style="FONT-SIZE:11pt;MARGIN:0in;FONT-FAMILY:Calibri;"&gt;I finally ended up using a plug-in, which you can configure to run asynchronously if you heart desires.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;In the future, I now know that a workflow should not be setup to call a custom assembly that updates that same record.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;The CRM web service update will cause infinite loops, and is better handled via a plug-in.&lt;/p&gt;&lt;img src="http://www.crowehorwath.com/cs/aggbug.aspx?PostID=7591" width="1" height="1"&gt;</content><author><name>VARGHESED</name><uri>http://www.crowehorwath.com/cs/members/VARGHESED.aspx</uri></author><category term="Technical Tips" scheme="http://www.crowehorwath.com/cs/blogs/crm/archive/tags/Technical+Tips/default.aspx" /></entry><entry><title>CRM WebService Error: Only one usage of each socket address (protocol/network address/port) is normally permitted</title><link rel="alternate" type="text/html" href="http://www.crowehorwath.com/cs/blogs/crm/archive/2009/01/15/crm-webservice-error-only-one-usage-of-each-socket-address-protocol-network-address-port-is-normally-permitted.aspx" /><id>http://www.crowehorwath.com/cs/blogs/crm/archive/2009/01/15/crm-webservice-error-only-one-usage-of-each-socket-address-protocol-network-address-port-is-normally-permitted.aspx</id><published>2009-01-15T20:08:00Z</published><updated>2009-01-15T20:08:00Z</updated><content type="html">&lt;p&gt;When performing a data integration or migration into CRM, it is very common to create a .Net application that transforms the data, then pushes the records into CRM using the WebServices.&amp;nbsp; At times, however, the load of data being pushed to IIS can be more than is acceptable to the default settings in an IIS implementation.&amp;nbsp; At these high load times, the server might post an error&amp;nbsp;stating &amp;quot;Only one usage of each socket address (protocol/network address/port) is normally permitted (typically under load).&amp;quot;&lt;/p&gt;
&lt;p&gt;What is happening, is that connections are being repeatedly opened and closed on the webserver.&amp;nbsp; When a connection is closed, the connection goes into a TIME_WAIT state for 240 seconds.&amp;nbsp; This is the default setting.&amp;nbsp; In this case, the IP being used is typically fixed, which means that the variable is the local port.&amp;nbsp; By default ports 1024-5000 are available to be used, which means that using default setting you have approximately 4000 ports to be used during a 4 minute span (240 seconds).&amp;nbsp; So if your code is making more than 16 webservice calls per second, you will exhaust all of the available ports!&lt;/p&gt;
&lt;p&gt;&amp;nbsp;To fix this problem, you can make 2 different registry changes on the CRM Application Server.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;div&gt;Increase the dynamic port range.&amp;nbsp; As stated above, the default is 5000 but this can be raised up to 65534.&lt;/div&gt;&lt;/li&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;div&gt;Using Regedit, navigate to&amp;nbsp; HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Tcpip\Parameters\MaxUserPort (if this key does not exist, create it as DWORD value)&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;Set the value to 65534, or a value of your choice&lt;/div&gt;&lt;/li&gt;&lt;/ul&gt;
&lt;li&gt;
&lt;div&gt;Reduce the amount of time that the connection is in a TIME_WAIT state.&lt;/div&gt;&lt;/li&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;div&gt;
&lt;div&gt;Using Regedit, navigate to&amp;nbsp; HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Tcpip\Parameters\TCPTimedWaitDelay (if this key does not exist, create it as DWORD value)&lt;/div&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;
&lt;div&gt;Set the value to 30&lt;/div&gt;&lt;/div&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/ol&gt;
&lt;p&gt;
&lt;div&gt;&amp;nbsp;By performing the actions above, you are allowing the server to use a far larger number of available ports, and you also allow the server to recycle them faster.&amp;nbsp; Problem solved!&lt;/div&gt;&lt;img src="http://www.crowehorwath.com/cs/aggbug.aspx?PostID=7824" width="1" height="1"&gt;</content><author><name>SIMPSONLA</name><uri>http://www.crowehorwath.com/cs/members/SIMPSONLA.aspx</uri></author><category term="Technical Tips" scheme="http://www.crowehorwath.com/cs/blogs/crm/archive/tags/Technical+Tips/default.aspx" /></entry></feed>