<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss xmlns:atom="http://www.w3.org/2005/Atom" xmlns:openSearch="http://a9.com/-/spec/opensearch/1.1/" xmlns:georss="http://www.georss.org/georss" xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr="http://purl.org/syndication/thread/1.0" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0"><channel><atom:id>tag:blogger.com,1999:blog-8226131871889846724</atom:id><lastBuildDate>Fri, 17 Feb 2012 00:12:55 +0000</lastBuildDate><category>crmForm.SetFieldReqLevel</category><category>innerText</category><category>innerHTML</category><category>Object doesn't support this property or method</category><category>plugin plug-in fail failing not firing error</category><category>SetFieldReqLevel</category><category>SoapException Server was unable to process request</category><category>Field level security in Crm hide print</category><category>Pre Post Images Image Plugin Plug in Plug-in</category><category>The specified organization is disabled All default</category><category>Showing and hiding fields based on another field Crm4</category><category>firstChild</category><category>crm4 crm DynamicEntity Null Properties</category><category>FetchXml SOAP headers FetchXmlToQueryExpressionRequest RetrieveMultipleRequest BusinessEntityCollection RetrieveMultipleResponse</category><category>Relationship names change when importing customizations to a new Crm Install prefix  import automatically appends a</category><category>The request failed with HTTP status 401: Unauthorized Plugin throws CrmService Execute</category><category>crm4 crm 2011 4 crm2011 blog paul reyneke</category><title>Paul Reyneke MS CRM4.0</title><description>Paul Reyneke's CRM4.0 Blog</description><link>http://paulreyneke.blogspot.com/</link><managingEditor>noreply@blogger.com (Paul Reyneke)</managingEditor><generator>Blogger</generator><openSearch:totalResults>13</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/PaulReynekeMsCrm40" /><feedburner:info uri="paulreynekemscrm40" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><item><guid isPermaLink="false">tag:blogger.com,1999:blog-8226131871889846724.post-896662952573359337</guid><pubDate>Mon, 14 Mar 2011 20:00:00 +0000</pubDate><atom:updated>2011-03-15T09:03:12.975+13:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">crm4 crm 2011 4 crm2011 blog paul reyneke</category><title>Crm 2011 Blog</title><description>Hi everyone,&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;It has been a while since I posted on this CRM 4 .0 blog. I have now started a new blog for Crm 2011, where I will progressively add new entries:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;a href="http://paulreyneke-crm2011.blogspot.com/"&gt;http://paulreyneke-crm2011.blogspot.com/&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Thanks&lt;/div&gt;&lt;div&gt;Paul&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8226131871889846724-896662952573359337?l=paulreyneke.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><link>http://feedproxy.google.com/~r/PaulReynekeMsCrm40/~3/OTGdxEmXyHI/crm-2011-blog.html</link><author>noreply@blogger.com (Paul Reyneke)</author><thr:total>0</thr:total><feedburner:origLink>http://paulreyneke.blogspot.com/2011/03/crm-2011-blog.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-8226131871889846724.post-147239132365820974</guid><pubDate>Thu, 29 Jan 2009 19:49:00 +0000</pubDate><atom:updated>2010-01-22T15:33:44.826+13:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Relationship names change when importing customizations to a new Crm Install prefix  import automatically appends a</category><title>Relationship names change when importing customizations to a new Crm Install</title><description>&lt;strong&gt;Problem&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;After reading about this issue on a forum recently I decided to post my experience and workaround for the problem. The problem is that the schema names of relationships change when they are imported to a new Crm install (call it live) from an existing Crm (call it dev). The most common naming problem is that the prefix "new" is added to the relationship name. This causes several issues:&lt;br /&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;When making changes on dev and then trying to roll it out again you get the following error: &lt;em&gt;"Failure: &lt;span style="color:#3366ff;"&gt;abc_entity1_abc_entity2&lt;/span&gt;: An attribute with the specified name already exists. Please specify a unique name."&lt;/em&gt; When you open up the relationship from the customizations section in Crm, you see that the above relationship is now called &lt;em&gt;&lt;span style="color:#3366ff;"&gt;new_abc_entity1_abc_entity2&lt;/span&gt;&lt;span style="color:#000000;"&gt;.&lt;/span&gt;&lt;/em&gt;&lt;/li&gt;&lt;li&gt;When using code to retrieve records based on their ManyToMany relationships, as stated in the SDK, you need the linking entity name to be this name that has changed to &lt;span style="color:#3366ff;"&gt;new_abc_entity1_abc_entity2&lt;/span&gt;&lt;span style="color:#000000;"&gt;. If this link name changes then your code will also through an error saying that the relationship "&lt;span style="color:#3366ff;"&gt;abc_entity1_abc_entity2&lt;/span&gt;" does not exist.&lt;/span&gt;&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;It has to be said that this naming problem occurs across all the custom relationships imported. I have tracked down the problem to be caused by the order that things get imported into Crm. All entities and relationships get created before the "General system settings" get imported. I can only assume that at this point the new Crm still thinks that it's prefix should be "new" instead of "abc" in the above example.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Solution&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;I have found two ways to combat this, one proactive and one reactive. Please read through it carefully before doing and make sure you understand what happens and the risks involved.&lt;/p&gt;&lt;p&gt;The first way is to import all the customizations of type "Settings" first, and then import the whole file. The "Settings" nodes will be exported when all customizations are exported. So when importing customizations, simply order the grid by type and select all the settings entitie and click "Import Selected Customizations" (it may be worth while to then go into your Crm's system settings and make sure the prefix is now correct). Once this is done, to a full import of the same customization file. I have not tested this thoroughly yet, but the few occasions I tested it, it solved my problem.&lt;/p&gt;&lt;p&gt;The second one is if, after the first solution, there are still some wrong relationship names OR the first step was never implemented. For this you will have to manually change the relationship names in SQL. Please adapt each of the sql statements to reflect your system, and maybe even do it for each individual relationship one at a time to make sure you don't break anything.&lt;/p&gt;&lt;p&gt;DISCLAIMER: MAKE SURE YOUR DATABASE IS BACKED UP BEFORE DOING THIS AS THIS COULD BREAK YOUR CRM IF NOT DONE RIGHT. DON NOT RUN IT ON A LIVE SYSTEM UNLESS IT IS PROPERLY TESTED.&lt;/p&gt;&lt;p&gt;Inside SQL management studio, back up your sql database and run the following query to see if the correct values are displayed. If your naming convention was non-standard you may need to adapt some sql statements to suit:&lt;/p&gt;&lt;p&gt;&lt;em&gt;select substring(SchemaName,1,4) as oldPrefix, substring(SchemaName,5,999) as noPrefix, 'abc_'+substring(SchemaName,5,999) as withNewPrefix from MetadataSchema.EntityRelationship where SchemaName like 'new_%'&lt;/em&gt;&lt;/p&gt;&lt;p&gt;If the resultset is as expected, run the following which will update the customization relationship names so that customizations can be imported, note that it may be worth testing it on one entity import first by adapting the where clause:&lt;/p&gt;&lt;p&gt;&lt;em&gt;update MetadataSchema.EntityRelationship set SchemaName = 'abc_'+substring(SchemaName,5,999) where SchemaName like 'new_%'&lt;/em&gt;&lt;/p&gt;&lt;p&gt;Problem is now that the above breaks all the associated views, but this can be fixed by using the following sql statement, once again, please test it on one entity first because it could have adverse effects: &lt;/p&gt;&lt;p&gt;&lt;em&gt;update MetadataSchema.Relationship set Name = 'abc_'+substring(Name,5,999) where Name like 'new_%'&lt;/em&gt;&lt;/p&gt;&lt;p&gt;Thanks and please post any questions or comments so that I can adapt this post accordingly.&lt;/p&gt;&lt;p&gt;Bossie&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8226131871889846724-147239132365820974?l=paulreyneke.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><link>http://feedproxy.google.com/~r/PaulReynekeMsCrm40/~3/x1D6UU9Nxns/relationship-names-change-when.html</link><author>noreply@blogger.com (Paul Reyneke)</author><thr:total>1</thr:total><feedburner:origLink>http://paulreyneke.blogspot.com/2009/01/relationship-names-change-when.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-8226131871889846724.post-1984125766911244831</guid><pubDate>Wed, 17 Dec 2008 04:12:00 +0000</pubDate><atom:updated>2011-07-28T16:03:42.990+12:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">FetchXml SOAP headers FetchXmlToQueryExpressionRequest RetrieveMultipleRequest BusinessEntityCollection RetrieveMultipleResponse</category><title>Complex Queries in Crm 4</title><description>Hi All,&lt;br /&gt;&lt;br /&gt;I am not normally a big fan of FetchXml. It is messy and since it is often passed in as a string, it can be prone to syntax errors. But over the years, people have been using Fiddler to extract the SOAP headers to the Crm server in order to catch the FetchXml query. There is nothing new here and it is quite handy if you accept the fact that data will also be returned in xml format, meaning it will have to be iterated to get the needed information. Which can really be a pain. I have spent time writing methods to parse the result xml into a dictionary that I can easily access. But even this can be painful at times.&lt;br /&gt;&lt;br /&gt;So the other day I discovered a class called &lt;em&gt;FetchXmlToQueryExpressionRequest. &lt;/em&gt;This class can be used to convert any fetchXml to a &lt;em&gt;QueryBase&lt;/em&gt; object, that can be fed into a &lt;em&gt;RetrieveMultipleRequest.&lt;/em&gt; The beauty of this lies in the fact that it is the best of both worlds. You can use advanced find to build complex queries without having to confuse yourself with linked entities etc AND you can then retrieve the data as a BusinessEntityCollection.&lt;br /&gt;&lt;br /&gt;Here's some sample code:&lt;br /&gt;&lt;br /&gt;string fetch = @"&lt;br /&gt;&lt;fetch distinct="'false'" mapping="'logical'" version="'1.0'" format="'xml-platform'"&gt;&amp;lt;fetch version='1.0' output-format='xml-platform' mapping='logical' distinct='false'&amp;gt;&lt;br /&gt;  &amp;lt;entity name='contact'&amp;gt;&lt;br /&gt;     &amp;lt;attribute name='mobilephone'/&amp;gt;&lt;br /&gt;     &amp;lt;attribute name='lastname'/&amp;gt;&lt;br /&gt;     &amp;lt;attribute name='firstname'/&amp;gt;&lt;br /&gt;     &amp;lt;attribute name='emailaddress1'/&amp;gt;&lt;br /&gt;     &amp;lt;attribute name='contactid'/&amp;gt;&lt;br /&gt;     &amp;lt;order attribute='lastname' descending='false'/&amp;gt;&lt;br /&gt;  &amp;lt;/entity&amp;gt;&lt;br /&gt;&amp;lt;/fetch&amp;gt;";&lt;/fetch&gt;";&lt;br /&gt;&lt;br /&gt;&lt;pre name="code" class="csharp"&gt;&lt;br /&gt;FetchXmlToQueryExpressionRequest fetchReq = new FetchXmlToQueryExpressionRequest();&lt;br /&gt;&lt;br /&gt;FetchReq.FetchXml = fetch;&lt;br /&gt;&lt;br /&gt;FetchXmlToQueryExpressionResponse res = (FetchXmlToQueryExpressionResponse)service.Execute(fetchReq);&lt;br /&gt;&lt;br /&gt;RetrieveMultipleRequest req = new RetrieveMultipleRequest();&lt;br /&gt;&lt;br /&gt;req.Query = res.Query;&lt;br /&gt;&lt;br /&gt;req.ReturnDynamicEntities = true;&lt;br /&gt;&lt;br /&gt;RetrieveMultipleResponse recordSet = (RetrieveMultipleResponse)service.Execute(req);&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Have a nice day&lt;br /&gt;Paul Reyneke&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8226131871889846724-1984125766911244831?l=paulreyneke.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><link>http://feedproxy.google.com/~r/PaulReynekeMsCrm40/~3/6t6eGOaYhUI/conplex-queries-in-crm-4.html</link><author>noreply@blogger.com (Paul Reyneke)</author><thr:total>0</thr:total><feedburner:origLink>http://paulreyneke.blogspot.com/2008/12/conplex-queries-in-crm-4.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-8226131871889846724.post-841467865233827318</guid><pubDate>Wed, 03 Dec 2008 19:24:00 +0000</pubDate><atom:updated>2008-12-04T08:34:29.797+13:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">The specified organization is disabled All default</category><title>The specified organization is disabled</title><description>I ran into a little problem on my development server today. I was playing round with a windows service that I wrote to run timed events. At one point the Windows service ran into an infinite loop and "End Task" wouldn't kill it, so the only way I could break out of it was to restart ISS. All of a sudden the windows service would no longer start. After a while I tried to log into the crm incarnation of the organization I'm working on and I kept on getting a "The specified organization is disabled" error. This made me panick a bit because I thought I'd corrupted the DB. After more time trying to figure it out, I also tried each of the other organizations (there are 10+ of these) on the crm server and they all had the same problem, "The specified organization is disabled".&lt;br /&gt;&lt;br /&gt;Googling the problem kept on coming back to an issue with disabling the default organization form within Deployment Manager. But since I had not done this, I just ignored it's advice and kept on trying to find BD corruption. But after a while I had a look at Deployment manager, and sure enough, the default organization was disabled. This puzzled me a bit, until I remembered that I did infact disable it weeks ago. So I had a look at this link:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://support.microsoft.com/kb/946618/enus$"&gt;http://support.microsoft.com/kb/946618/enus$&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;It was clear that, by pure bad luck, I had not restarted IIS since the default organization got disabled, which was weeks ago. So, re-enabled the default organization, restarted IIS and everything was working again. But 4 hours was wasted on this problem.&lt;br /&gt;&lt;br /&gt;Moral of the story, the most obvious cause/solution is often the most likely.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8226131871889846724-841467865233827318?l=paulreyneke.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><link>http://feedproxy.google.com/~r/PaulReynekeMsCrm40/~3/x1lVFxfb48U/specified-organization-is-disabled.html</link><author>noreply@blogger.com (Paul Reyneke)</author><thr:total>1</thr:total><feedburner:origLink>http://paulreyneke.blogspot.com/2008/12/specified-organization-is-disabled.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-8226131871889846724.post-8952779723633293223</guid><pubDate>Thu, 25 Sep 2008 22:15:00 +0000</pubDate><atom:updated>2008-09-26T10:28:23.653+12:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">The request failed with HTTP status 401: Unauthorized Plugin throws CrmService Execute</category><title>Plugin throws "The request failed with HTTP status 401: Unauthorized" error</title><description>Right, I ran into this a while ago but completely forgot about it until now. After digging around a bit I found that there wasn't much documentation on this outside of the forums. So here goes:&lt;br /&gt;&lt;br /&gt;This error occurs the first time the CrmService (or ICrmService) is envolked using a command like "Execute" or "Retrieve". What is meant to happen is that the service should connect to Crm based on it's "Unique Name", but a bug forces it to use the "Fieldly Name" instead. So consider this. You created a new organization on your Crm server called "My Crm Server", this is the friendly name, the Deployment Manager then auto-creates a unique name based on this, but without the spaces "MyCrmServer". Note that you can overwrite the unique name to make it anything else, so long as it doesn't contain non alphanumerics.&lt;br /&gt;&lt;br /&gt;It seems to the end user that the organization got created without any problems and everything goes fine.&lt;br /&gt;&lt;br /&gt;You write your first plug-in for the organization and deploy it. Your surprised to receive the "The request failed with HTTP status 401: Unauthorized" error and cannot find the cause of this error. Then, after you do a lot of debugging, you realize that it is in fact a Crm bug and not a bug in your code.&lt;br /&gt;&lt;br /&gt;To fix this, there are one of two options.&lt;br /&gt;&lt;br /&gt;The Workaround&lt;br /&gt;1. From the deployment manager, disable the organisation and rename the friendly name to be identical to the unique name and then re-enable the org.&lt;br /&gt;&lt;br /&gt;The Patch&lt;br /&gt;2. Install the patch: &lt;a href="http://support.microsoft.com/kb/948746" target="_blank" rel="nofollow"&gt;http://support.microsoft.com/kb/948746&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Hopefully this helps those who, like me, struggled hours to figure this out.&lt;br /&gt;&lt;br /&gt;Thanks&lt;br /&gt;Bossie&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8226131871889846724-8952779723633293223?l=paulreyneke.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><link>http://feedproxy.google.com/~r/PaulReynekeMsCrm40/~3/IFAwiMsomao/plugin-throws-request-failed-with-http.html</link><author>noreply@blogger.com (Paul Reyneke)</author><thr:total>1</thr:total><feedburner:origLink>http://paulreyneke.blogspot.com/2008/09/plugin-throws-request-failed-with-http.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-8226131871889846724.post-4348981088080732934</guid><pubDate>Mon, 25 Aug 2008 20:00:00 +0000</pubDate><atom:updated>2008-08-26T08:23:33.398+12:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Field level security in Crm hide print</category><title>Field level security in Crm</title><description>There are no supported way to enforce field level security in Crm. What is often done is that the field or tab is hidden on the form. This has a number of weaknesses.&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Firstly, when you print the form, all the hidden fields will be printed out too. Now you can simply hide the print button too, but this can be overcome in the same way as the next bullet point.&lt;/li&gt;&lt;li&gt;Any user with a little bit of javascript knowledge could easily unhide these fields by using a tool such as the IE Dev Toolbar&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;The second option is to create a child entity that hangs off the entity that the sensitive fields live on and then to move these sensitive fields to this new entity. This will allow you to use the Crm out of the box security on this child entity. This will work fine, but it does mean that each record you create, you'll have to also create a child record, which can be a pain.&lt;/p&gt;&lt;p&gt;The final, and most complicated, way is to do a combination of both the above. Now this is a little hard to explain, so bear with me. Note that for this part I do assume that the user has a reasonable grasp on writing plugins and javascript as well as knowledge of how to do a webservice call to the crmService via javascript.&lt;/p&gt;&lt;p&gt;For this example, I will use the account entity, and assume a new bankaccount field is the sensitive field. &lt;/p&gt;&lt;p&gt;I create the bankaccount field on the account form and show and hide it based on whether the user is in the "Manager" security role &lt;em&gt;(note that determining the security role of a user is covered by other blogs and out of scope for this entry, if anyone needs more information, email me&lt;/em&gt;).&lt;/p&gt;&lt;p&gt;Next I create a new entity called bankaccount, and create a 1:N relationship with account. This entity only has one field, "bankaccount". Assign security to this entity so that only users in the "Manager" security role can use it (read, write, create etc) and no one else can see it.&lt;/p&gt;&lt;p&gt;Now, onCreate of an entity, if the bankaccount field is filled in I create a bankaccount record that hangs off the account entity. &lt;strong&gt;Also in this plugin I clear the value of the bankaccount field on the account form, so it is essencially empty.&lt;/strong&gt; Note that you may even put something like "bank account hidden" as the bankaccount in in the plugin.&lt;/p&gt;&lt;p&gt;So now when a user opens this new account and does not have rights to see the bankaccount details, the field is &lt;strong&gt;both hidden and empty&lt;/strong&gt;, so even if they do try and unhide it, it won't show the correct value. &lt;/p&gt;&lt;p&gt;Finally, if a user has rights to see the bank acount, use a crm soap call (&lt;em&gt;also covered on blogs elsewhere, and is similar to retrieving the user role, email me if you need more info&lt;/em&gt;) to retrieve the bankaccount from the child record and populate the field accordingly. &lt;/p&gt;&lt;p&gt;Now you could also create an onUpdate plugin to compare the account.bankaccount field with the bankaccount.bankaccount field and update the bankaccount.bankaccount accordingly.&lt;/p&gt;&lt;p&gt;This was rather hard to explain, so feel free to post questions and I'll answer them.&lt;/p&gt;&lt;p&gt;Thanks&lt;/p&gt;&lt;p&gt;Bossie&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8226131871889846724-4348981088080732934?l=paulreyneke.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><link>http://feedproxy.google.com/~r/PaulReynekeMsCrm40/~3/TJ3euyFVD8s/field-level-security-in-crm.html</link><author>noreply@blogger.com (Paul Reyneke)</author><thr:total>0</thr:total><feedburner:origLink>http://paulreyneke.blogspot.com/2008/08/field-level-security-in-crm.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-8226131871889846724.post-5543224259723746646</guid><pubDate>Sun, 17 Aug 2008 22:14:00 +0000</pubDate><atom:updated>2008-08-18T10:34:24.129+12:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Showing and hiding fields based on another field Crm4</category><title>Showing and hiding fields based on another field</title><description>Hi All,&lt;br /&gt;&lt;br /&gt;This is not a new topic, but it does creep up in the forums from time to time. I thought it may be easier to write a blog entry on the topic.&lt;br /&gt;&lt;br /&gt;So here is the scenario, you have a picklist (or any other field) and you want to show and hide other fields based on this. Let's say your picklist field is called "mypicklist" and you have two other fields, one is a text field called "mytextfield" and one is a lookup called "mylookup". The values in the picklist are "Show Text Field", with a value of 1 and "Show Lookup Field" with a value of 2. You want to show/hide the fields accordingly.&lt;br /&gt;&lt;br /&gt;Firstly you need to write the following code in the mypicklist onChange event:&lt;br /&gt;&lt;br /&gt;&lt;span style="color:#999999;"&gt;if (crmForm.all.mypicklist.DataValue == 1) //show text field&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#999999;"&gt;{&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#999999;"&gt;   //hide the lookup&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#999999;"&gt;   crmForm.all.mylookup.style.display = 'none';&lt;br /&gt;   crmForm.all.mylookup_c.style.display = 'none'; //note the _c&lt;br /&gt;   crmForm.all.mylookup_d.style.display = 'none'; //note the _d, only required for lookups&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#999999;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#999999;"&gt;  //show the text field&lt;br /&gt;   crmForm.all.mytextfield.style.display = 'inline';   &lt;/span&gt;&lt;br /&gt;&lt;span style="color:#999999;"&gt;   crmForm.all.mytextfield_c.style.display = 'inline'; //note the _c&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#999999;"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#999999;"&gt;else if (crmForm.all.mypicklist.DataValue == 2) //show loookup&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#999999;"&gt;{&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#999999;"&gt;   //hide the lookup&lt;br /&gt;   crmForm.all.mylookup.style.display = 'inline';&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#999999;"&gt;   crmForm.all.mylookup_c.style.display = 'inline'; //note the _c&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#999999;"&gt;   crmForm.all.mylookup_d.style.display = 'inline'; //note the _d, only required for lookups&lt;br /&gt;&lt;br /&gt;  //show the text field   &lt;/span&gt;&lt;br /&gt;&lt;span style="color:#999999;"&gt;   crmForm.all.mytextfield.style.display = 'none';&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#999999;"&gt;   crmForm.all.mytextfield_c.style.display = 'none'; //note the _c&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#999999;"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#999999;"&gt;else // hide all&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#999999;"&gt;{&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#999999;"&gt;   //hide the lookup   crmForm.all.mylookup.style.display = 'none';&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#999999;"&gt;   crmForm.all.mylookup_c.style.display = 'none'; //note the _c&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#999999;"&gt;   crmForm.all.mylookup_d.style.display = 'none'; //note the _d, only required for lookups   &lt;/span&gt;&lt;br /&gt;&lt;span style="color:#999999;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#999999;"&gt;   //show the text field  &lt;br /&gt;   crmForm.all.mytextfield.style.display = 'none';&lt;br /&gt;   crmForm.all.mytextfield_c.style.display = 'none'; //note the _c&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#999999;"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;As you can see, each field has two (three for lookups) sections that has to be hidden, the first section is identified by the field schema name and represents the textbox area. The second, represented by the fieldname following by an "_c" represents the label area. Lookups also has an additional area, replresented by the fieldname followed by an "_d" which represents the lookup button. Each of these sections needs to be shown/hidden individually.&lt;br /&gt;&lt;br /&gt;The second part is ensuring these are hidden/shown after they are saved, so the exact same code above needs to be placed in the form load event too. It may also make your life easier to create a global function in the onload event and then call this function from both within the onload event and the picklist onchange event. Something like:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:arial;color:#999999;"&gt;ShowHideField = function()&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;color:#999999;"&gt;{&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;color:#999999;"&gt;   //all the above code goes in here&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;color:#999999;"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;color:#999999;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;color:#999999;"&gt;// then call the above in both the onload and the relevent onchange event&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;color:#999999;"&gt;ShowHideField();&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;The above goes for most field types and you can also show or hide fields based on whether they contain data or not with the following:&lt;br /&gt;&lt;br /&gt;&lt;span style="color:#999999;"&gt;if (crmForm.all.mypicklist.DataValue != null) //show text field&lt;br /&gt;{&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#999999;"&gt; ...&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#999999;"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Hope this helps&lt;br /&gt;&lt;br /&gt;Bossie&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8226131871889846724-5543224259723746646?l=paulreyneke.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><link>http://feedproxy.google.com/~r/PaulReynekeMsCrm40/~3/O_bdZsTKC6Y/showing-and-hiding-fields-based-on.html</link><author>noreply@blogger.com (Paul Reyneke)</author><thr:total>0</thr:total><feedburner:origLink>http://paulreyneke.blogspot.com/2008/08/showing-and-hiding-fields-based-on.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-8226131871889846724.post-337115205174400830</guid><pubDate>Mon, 28 Jul 2008 01:44:00 +0000</pubDate><atom:updated>2008-07-28T13:55:02.005+12:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">crm4 crm DynamicEntity Null Properties</category><title>Clearing a value from a DynamicEntity object</title><description>Hi all,&lt;br /&gt;&lt;br /&gt;This was by no means something I discovered myself, Patrick Verbeeten suggested this as a solution to a problem I had in the forums. I thought it would be a good idea to pass on the information though.&lt;br /&gt;&lt;br /&gt;Lets say you have a DynamicEntity object and you need to clear one of the values in a plugin, for example the parentid of a contact. Normally, to add an attribute to a DynamicEntity you would use the entity.Properties.Add(...) method, but the problem is that CRM only processes values that has a value.&lt;br /&gt;&lt;br /&gt;What I tried initially was to remove the value using the entity.Properties.Remove(attributename) method. This did delete the attribute, but on saving the DynamicEntity, it did not save this attribute to the server but instead left it the way it was.&lt;br /&gt;&lt;br /&gt;What Patrick suggested was to use the null value coupled with each crm attribute type, example CrmDateTime.Null or CrmNumber.Null. So what I did was to add the null value to the PropertyBag and set the acctual value to null.&lt;br /&gt;&lt;br /&gt;entity.Properties.Add(new CrmDateTimeProperty(CrmDateTime.Null));&lt;br /&gt;&lt;br /&gt;What is very important here is that each attribute type has it's own Null value, you cannot interchange CrmDateTime.Null and CrmNumber.Null.&lt;br /&gt;&lt;br /&gt;The only exception to this seems to be a string type attribute, you only need to assign the value as an empty string "". Note that you may also be able to use the String.Empty method, I have not tried this yes but would say that this should also work.&lt;br /&gt;&lt;br /&gt;Thanks&lt;br /&gt;&lt;br /&gt;Paul Reyneke&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8226131871889846724-337115205174400830?l=paulreyneke.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><link>http://feedproxy.google.com/~r/PaulReynekeMsCrm40/~3/4hdaaGg15WY/clearing-value-from-dynamicentity.html</link><author>noreply@blogger.com (Paul Reyneke)</author><thr:total>0</thr:total><feedburner:origLink>http://paulreyneke.blogspot.com/2008/07/clearing-value-from-dynamicentity.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-8226131871889846724.post-5882141189926993611</guid><pubDate>Thu, 12 Jun 2008 02:54:00 +0000</pubDate><atom:updated>2008-06-12T15:23:35.932+12:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">SoapException Server was unable to process request</category><title>Decrypting the Soap Exceptions thrown by CRM 4.0</title><description>I know this has been covered a million times before, but for those new to CRM, here's how to get around the unhelpful soap exception "Server was unable to process request".&lt;br /&gt;&lt;br /&gt;Make sure you catch the soap exception, not just the standard System.Exception, this will open up an object called Details that has a property called InnerText. This will give you some more information surrounding the actual cause of the exception. But make sure you catch the System.Exception too, just in case.&lt;br /&gt;&lt;br /&gt;So:&lt;br /&gt;&lt;br /&gt;try&lt;br /&gt;{&lt;br /&gt;...&lt;br /&gt;}&lt;br /&gt;catch (System.Web.Services.Protocols.SoapException ex)  &lt;br /&gt;{   &lt;br /&gt;   throw new InvalidPluginExecutionException(ex.Message+", "+ex.Detail.InnerText);  &lt;br /&gt;}&lt;br /&gt;catch (System.Exception ex)&lt;br /&gt;{&lt;br /&gt;   throw new InvalidPluginExecutionException(ex.Message);  &lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;Have fun,&lt;br /&gt;Bossie&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8226131871889846724-5882141189926993611?l=paulreyneke.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><link>http://feedproxy.google.com/~r/PaulReynekeMsCrm40/~3/Y3JP1DUHW8o/decrypting-soap-exceptions-thrown-by.html</link><author>noreply@blogger.com (Paul Reyneke)</author><thr:total>2</thr:total><feedburner:origLink>http://paulreyneke.blogspot.com/2008/06/decrypting-soap-exceptions-thrown-by.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-8226131871889846724.post-1454848594877969200</guid><pubDate>Tue, 03 Jun 2008 22:34:00 +0000</pubDate><atom:updated>2008-06-04T10:52:00.567+12:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">plugin plug-in fail failing not firing error</category><title>Steps to isolate why a plugin is not firing</title><description>Hi,&lt;br /&gt;&lt;br /&gt;This list is more for myself, but other people may benefit from it too. I am compiling a list of steps to go through if a plugin is not firing. This really only covers problems with your assembly being loaded, if the plugin does actually execute some of your code then this will not help you. This list will grow in time as more common pitfalls are uncovered. So check back regularly.&lt;br /&gt;&lt;br /&gt;1. Is the assembly signed?&lt;br /&gt;&lt;br /&gt;2. Does the assembly reference an external assembly (perhaps an assembly that stores all your common code)? If this is the case, the 2 (or more) assemblies needs to be merged using IL Merge. George wrote an extensive explanation of this here &lt;a href="http://crm.georged.id.au/post/2008/02/22/Packaging-plugins.aspx"&gt;http://crm.georged.id.au/post/2008/02/22/Packaging-plugins.aspx&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;3. In the plugin registration tool, did you misspell the step message and entity?&lt;br /&gt;&lt;br /&gt;4. Are you trying to reference a pre-image on Create or a post-image on Delete? Neither of these will be accessible and your plugin will fail before it even tries to execute any code.&lt;br /&gt;&lt;br /&gt;5. Did you install the assembly to disk? If so you need to make sure you copy the assembly to the assembly\bin directory. The assembly gets loaded from this location every time it is initialized if it is installed to disk.&lt;br /&gt;&lt;br /&gt;6. Is this crm server an upgrade form CRM3 to CRM4 or are you still using CRM3 style callouts? It seems that old style callouts get called before plugins, so ensure that there are not any failing callouts in the assembly\bin\callout.config file.&lt;br /&gt;&lt;br /&gt;That's it for now, more to follow&lt;br /&gt;&lt;br /&gt;Thanks&lt;br /&gt;Bossie&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8226131871889846724-1454848594877969200?l=paulreyneke.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><link>http://feedproxy.google.com/~r/PaulReynekeMsCrm40/~3/HN5GXrQROzs/steps-to-isolate-why-plugin-is-not.html</link><author>noreply@blogger.com (Paul Reyneke)</author><thr:total>0</thr:total><feedburner:origLink>http://paulreyneke.blogspot.com/2008/06/steps-to-isolate-why-plugin-is-not.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-8226131871889846724.post-956758906598454407</guid><pubDate>Mon, 02 Jun 2008 21:25:00 +0000</pubDate><atom:updated>2008-06-03T09:31:03.853+12:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Pre Post Images Image Plugin Plug in Plug-in</category><title>Pre and Post Images</title><description>Hi all,&lt;br /&gt;&lt;br /&gt;I am probably stating the obvious here, but it does seem to be a recurring theme accross the forums, so I decided to post this.&lt;br /&gt;&lt;br /&gt;When the plugin action is a Create then you can only have a Post Image because Pre Image does not exist.&lt;br /&gt;&lt;br /&gt;When the plugin action is a Delete then you can only have a Pre Image because the Post Image does not exist.&lt;br /&gt;&lt;br /&gt;If you try to use a Pre Image on Create or a Post Image on Delete the plugin will fail before it even reaches your code.&lt;br /&gt;&lt;br /&gt;In all the rest you should be able to have both the Pre and Post Images available.&lt;br /&gt;&lt;br /&gt;Thanks&lt;br /&gt;&lt;br /&gt;Bossie&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8226131871889846724-956758906598454407?l=paulreyneke.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><link>http://feedproxy.google.com/~r/PaulReynekeMsCrm40/~3/em071UvnNek/pre-and-post-images.html</link><author>noreply@blogger.com (Paul Reyneke)</author><thr:total>0</thr:total><feedburner:origLink>http://paulreyneke.blogspot.com/2008/06/pre-and-post-images.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-8226131871889846724.post-8958962501339416263</guid><pubDate>Thu, 08 May 2008 04:07:00 +0000</pubDate><atom:updated>2008-05-08T17:01:26.622+12:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">innerHTML</category><category domain="http://www.blogger.com/atom/ns#">SetFieldReqLevel</category><category domain="http://www.blogger.com/atom/ns#">innerText</category><category domain="http://www.blogger.com/atom/ns#">firstChild</category><category domain="http://www.blogger.com/atom/ns#">crmForm.SetFieldReqLevel</category><category domain="http://www.blogger.com/atom/ns#">Object doesn't support this property or method</category><title>crmForm.SetFieldReqLevel throws error when label got renamed</title><description>Hi All,&lt;br /&gt;&lt;br /&gt;I came accross an interesting little problem today that took me a while to figure out. This happens in CRM4, but I am fairly sure the same will happen in CRM3.&lt;br /&gt;&lt;br /&gt;I have a lookup field to contact called nzi_clientid with a label of Client, I want to rename it to Contact under certain conditions but leave it as Client under other other conditions.&lt;br /&gt;&lt;br /&gt;To rename a field on a form has been documented online as:&lt;br /&gt;&lt;em&gt;crmForm.all.nzi_clientid_c.innerText = "Client";&lt;/em&gt;&lt;br /&gt;&lt;em&gt;&lt;/em&gt;&lt;br /&gt;The problem is that if you rename the field using this method, the well documented way to make a field required (&lt;em&gt;crmForm.SetFieldReqLevel("nzi_clientid", 1)&lt;/em&gt;) does not work, and it throws an error, "Object doesn't support this property or method".&lt;br /&gt;&lt;br /&gt;I had to delve into the html to see what was happening. It turns out that using the above method to rename the field label overwrites more than the label. Before the rename the innerHTML looks like this:&lt;br /&gt;&lt;br /&gt;&lt;td class=" ms-crm-Field-Normal" id="nzi_clientid_c" title="Client" style="DISPLAY: inline"&gt;&lt;label for="nzi_clientid"&gt;&amp;lt;TD class=" ms-crm-Field-Normal" id="nzi_clientid_c" title="Client" style="DISPLAY: inline"&amp;gt;&lt;/label&gt;&lt;br /&gt;&lt;label for="nzi_clientid"&gt;&amp;lt;LABEL for="nzi_clientid"&amp;gt;&lt;/label&gt;&lt;br /&gt;&lt;label for="nzi_clientid"&gt;Client&amp;lt;img style="DISPLAY: none" alt="Required" src="&lt;a href="http://localhost:5555/_imgs/frm_required.gif"&gt;http://localhost:5555/_imgs/frm_required.gif&lt;/a&gt;" /&amp;gt; &lt;/label&gt;&lt;br /&gt;&lt;label for="nzi_clientid"&gt;&amp;lt;/LABEL&amp;gt;&amp;lt;/TD&amp;gt;&lt;/label&gt;&lt;br /&gt;&lt;br /&gt;The rename replaces this entire xml section with the new name e.g. "Contact". We don't want this because the &lt;em&gt;crmForm.SetFieldReqLevel&lt;/em&gt; cannot find the field any longer because the LABEL node has been overwritten and replaced with "Contact".&lt;br /&gt;&lt;br /&gt;&amp;lt;TD class=" ms-crm-Field-Normal" id="nzi_clientid_c" title="Client" style="DISPLAY: inline"&amp;gt;&lt;br /&gt;Contact&lt;br /&gt;&amp;lt;/TD&amp;gt;&lt;br /&gt;&lt;br /&gt;Two ways to fix this is to either to a text replace of the word "Client" in the innerHTML and replace it with "Contact", but this is more than the one or two lines and makes it too complicated.&lt;br /&gt;&lt;br /&gt;Second way is to overwrite the firstChild with the new label "Contact". This will mean that the original LABEL node still exists, but the img that shows whether the field is required or not, is gone, even though the field is technically still required. Since I analyse the field right after this and set whether it is required or not, this is not an issue for me.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;crmForm.all.nzi_clientid_c.firstChild.innerText = "Client";&lt;br /&gt;if (isRequired)&lt;br /&gt;{&lt;br /&gt;crmForm.SetFieldReqLevel("nzi_clientid", 1)&lt;br /&gt;}&lt;br /&gt;else&lt;br /&gt;{&lt;br /&gt;crmForm.SetFieldReqLevel("nzi_clientid", 0)&lt;br /&gt;}&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8226131871889846724-8958962501339416263?l=paulreyneke.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><link>http://feedproxy.google.com/~r/PaulReynekeMsCrm40/~3/NMbKQzF2SiE/crmformsetfieldreqlevel-throws-error.html</link><author>noreply@blogger.com (Paul Reyneke)</author><thr:total>0</thr:total><feedburner:origLink>http://paulreyneke.blogspot.com/2008/05/crmformsetfieldreqlevel-throws-error.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-8226131871889846724.post-4860769831163548670</guid><pubDate>Mon, 18 Feb 2008 02:27:00 +0000</pubDate><atom:updated>2008-02-18T15:56:08.046+13:00</atom:updated><title>Reassign a primary entity also reassigns activities.</title><description>&lt;a name="msg_ef7aab31451bc148"&gt;&lt;/a&gt;Hi all,&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;I have found a little annoying feature on CRM 4.0 (also in CRM3.0) that reassigns all the activities attached to an entity when the entity is reassigned. Now this may not normally be a problem, but consider the following example.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;We have three users called &lt;strong&gt;Account Manager1&lt;/strong&gt;, &lt;strong&gt;Account Manager2&lt;/strong&gt; and &lt;strong&gt;Office Admin&lt;/strong&gt;. &lt;strong&gt;Account Manager1&lt;/strong&gt; manages an account &lt;em&gt;Account1&lt;/em&gt; and creates a task for &lt;strong&gt;Office Admin&lt;/strong&gt; to do something (e.g. update address details). This task sets the regarding object to be&lt;em&gt; Account1&lt;/em&gt; and the owner to be &lt;strong&gt;Office Admin&lt;/strong&gt;. Now let us assume this &lt;em&gt;Account1 &lt;/em&gt;is now reassigned to &lt;strong&gt;Account Manager2&lt;/strong&gt; by reassigning the account to &lt;strong&gt;Account Manager2&lt;/strong&gt;. Ok, simple stuff so far.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;The problem is now that not only does the &lt;em&gt;Account1 &lt;/em&gt;get assigned to &lt;strong&gt;Account Manager2&lt;/strong&gt;, but so does this task assigned to &lt;strong&gt;Office Admin&lt;/strong&gt; without any regard for its original owner. This also goes for ALL other activities against Account1, it doesn't matter who the activities were assigned too initially (i.e. the account owner or someone esle), they all get reassigned automatically in a "don't care" fashion.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;In this example we do not want the Task assigned to the &lt;strong&gt;Office Admin&lt;/strong&gt; to be reassigned when the parent account gets reassigned.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;It seems that the relationship between an activity and its parent entity is parental by default for ALL activities. This can be changed by setting the relationship between the entity and the activity (Account and Taks in this case) to "Configurable Cascading" and setting the drop down for "Assigned" to the required Cascading level.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;The main annoyance comes in the fact that it has to be changed for every entity-activity relationship. So assume the basic entities (Account, Contact etc) multiplied by the 8 different types of activities (Task, PhoneCall etc). This means that for a standard project I need to potentially go and change more than 100 relationships (depending on your project usage) to the cascading level required.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;I have not found an easier way to do this yet, but will post any updates when I find them&lt;br /&gt;&lt;br /&gt;Bossie&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8226131871889846724-4860769831163548670?l=paulreyneke.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><link>http://feedproxy.google.com/~r/PaulReynekeMsCrm40/~3/Nnjlho-6VSU/reassign-primary-entity-also-reassigns.html</link><author>noreply@blogger.com (Paul Reyneke)</author><thr:total>1</thr:total><feedburner:origLink>http://paulreyneke.blogspot.com/2008/02/reassign-primary-entity-also-reassigns.html</feedburner:origLink></item></channel></rss>

