<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-702659527316624506</id><updated>2011-12-05T06:39:13.836-05:00</updated><category term='IFD'/><category term='Activities'/><category term='Customizing'/><category term='Test Environment'/><category term='CRM On-premise'/><category term='SQL 2008'/><category term='workflow'/><category term='Exchange'/><category term='Adapter'/><category term='dashboards'/><category term='BizTalk'/><category term='Customization'/><category term='offline'/><category term='Webpart'/><category term='conversion'/><category term='SQL 2005'/><category term='Queues'/><category term='Plug-ins'/><category term='Data Export'/><category term='Screen Security'/><category term='AutoUpdate'/><category term='CRM 4.0'/><category term='Cache Tool'/><category term='Accelerators'/><category term='RSS'/><category term='Virtual Server 2005'/><category term='Organization'/><category term='Marketing'/><category term='Rollups'/><category term='guides'/><category term='performance'/><category term='Change User Name'/><category term='Mobile'/><category term='Reports'/><category term='Outlook Client'/><category term='Updates'/><category term='CRM'/><category term='tool'/><category term='security'/><category term='Rollup 3'/><category term='SQL Integration Services'/><category term='SharePoint'/><category term='registry entries'/><category term='videos'/><category term='CRM Upgrade'/><category term='Connector'/><category term='SQL Snipplets'/><category term='Email Router'/><category term='importing'/><category term='Phone'/><category term='Dynamic Entities'/><category term='Data Migration'/><category term='SDK'/><category term='C#'/><category term='visual studio'/><category term='Views'/><category term='VPC'/><category term='Marketing List'/><category term='Bulk Delete'/><category term='Installing'/><category term='crm 5.0'/><category term='Active Directory'/><category term='Maint'/><category term='coding'/><category term='Upgrading to 4.0'/><category term='JavaScript'/><category term='Hotfixes'/><category term='Training'/><category term='Tips and Tricks'/><category term='CRM On-line'/><category term='CRM 3.0'/><title type='text'>Bill Owens on Microsoft Dynamics CRM - Technical Version</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://billoncrmtech.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/702659527316624506/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://billoncrmtech.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><link rel='next' type='application/atom+xml' href='http://www.blogger.com/feeds/702659527316624506/posts/default?start-index=101&amp;max-results=100'/><author><name>Bill Owens</name><uri>http://www.blogger.com/profile/17898790776516318212</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_WyzF5zDnkqY/SavOqTyUHgI/AAAAAAAAABs/Fuc1b2uESVY/S220/me.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>223</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-702659527316624506.post-1971079428747199673</id><published>2010-05-25T16:43:00.001-04:00</published><updated>2010-05-25T16:43:01.928-04:00</updated><title type='text'>My Blog has moved</title><content type='html'>&lt;p&gt;Many people have asked where my post are for the first half of 2010, my company had me posting to another blog and maintain two was near impossible. I am now down to just this blog one blog and I have moved it to I have moved my blog to &lt;a href="http://blog.aresgrp.com/crm"&gt;http://blog.aresgrp.com/crm&lt;/a&gt;. Now that I am down to done, I will have a couple of new entries posted before the end of May. I will not be posting to this blog any more. Please update your feeds.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/702659527316624506-1971079428747199673?l=billoncrmtech.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://billoncrmtech.blogspot.com/feeds/1971079428747199673/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=702659527316624506&amp;postID=1971079428747199673' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/702659527316624506/posts/default/1971079428747199673'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/702659527316624506/posts/default/1971079428747199673'/><link rel='alternate' type='text/html' href='http://billoncrmtech.blogspot.com/2010/05/my-blog-has-moved.html' title='My Blog has moved'/><author><name>Bill Owens</name><uri>http://www.blogger.com/profile/17898790776516318212</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_WyzF5zDnkqY/SavOqTyUHgI/AAAAAAAAABs/Fuc1b2uESVY/S220/me.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-702659527316624506.post-3363578416834300550</id><published>2009-10-31T10:15:00.001-04:00</published><updated>2010-05-07T20:54:46.751-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Customization'/><category scheme='http://www.blogger.com/atom/ns#' term='Customizing'/><category scheme='http://www.blogger.com/atom/ns#' term='CRM 4.0'/><category scheme='http://www.blogger.com/atom/ns#' term='coding'/><title type='text'>ISV Utilities for Comparing Customizations and Transferring Configuration Data</title><content type='html'>&lt;p&gt;Inna Agranov&lt;br /&gt;&lt;br/&gt;&lt;br /&gt;Microsoft Corporation&lt;/p&gt;&lt;br /&gt;&lt;p&gt;February 2009&lt;/p&gt;&lt;br /&gt;&lt;h4&gt;Summary&lt;/h4&gt;&lt;br /&gt;&lt;p&gt;Learn how to build and use two new powerful tools developed for Microsoft Dynamics CRM. The Customization Comparison Utility lets you compare the customization files between two Microsoft Dynamics CRM systems and the Configuration Data Utility lets you transfer custom configuration data from one Microsoft Dynamics CRM system to another.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Download the Visual Studio 2008 and Visual C# code samples for this article:&lt;/p&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;&lt;a href="http://go.microsoft.com/fwlink/?LinkID=141482"&gt;CustomizationComparisonUtility.exe&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;a href="http://go.microsoft.com/fwlink/?LinkID=141483"&gt;ConfigurationDataUtility.exe&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;&lt;p&gt;The Readme.doc files that are included with the sample code contain information about how to set up and build the sample applications. The user guides contain detailed information about how to use the sample applications and view the results. You can find the Readme.doc files and user guides in the project folder for each utility.&lt;/p&gt;&lt;br /&gt;&lt;h4&gt;Applies To&lt;/h4&gt;&lt;br /&gt;&lt;p&gt;Microsoft Dynamics CRM 4.0&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Microsoft Visual Studio 2008&lt;/p&gt;&lt;br /&gt;&lt;h4&gt;Introduction&lt;/h4&gt;&lt;br /&gt;&lt;p&gt;Microsoft Dynamics CRM is a highly customizable system. Not only you can modify different sections of the product, you can also create new components to address business needs. The Microsoft Dynamics CRM platform offers a robust set of tools, APIs, and documentation that helps you build custom business applications. As the applications built on the Microsoft Dynamics CRM platform become more and more complex, a need for specialized support tools grows. In this article you will learn about two very useful tools that help you analyze the impact of customizations on the system and maintain consistent configuration data across multiple Microsoft Dynamics CRM systems.&lt;/p&gt;&lt;br /&gt;&lt;h4&gt;Evaluating the Impact of Customizations with the Customization Comparison Utility&lt;/h4&gt;&lt;br /&gt;&lt;p&gt;To evaluate the impact of customizations, it is helpful to compare customization files between the source and the target systems before you import customizations. The Customization Comparison Utility helps you accomplish this task.&lt;/p&gt;&lt;br /&gt;&lt;h6&gt;Analyzing Customizations&lt;/h6&gt;&lt;br /&gt;&lt;p&gt;Often you have to export custom components from one Microsoft Dynamics CRM environment and import them into another, for example, from development into test or production. However, before you import customizations, it is very helpful to assess the impact of customizations on the target system. The system where you import customizations may have been changed since the last installation. You have to consider the extent of the changes and how they may affect the new installation. While some of the changes, such as renaming of the attributes or adding new attributes, are minor, other modifications, such as deletion of entities or changes in the forms may have a significant effect on the system.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Analyzing and understanding the system customizations may result in more successful deployment of a new version of the application. This analysis minimizes the risk of overwriting important customization data in the target system. For example, if only several attribute names have changed, you may be able to do a plain import using the import/export functionality built into Microsoft Dynamics CRM. However, if some key components were deleted, such as entity forms, you may have to merge the customizations with the changes in the target system. Comparing customization files between the two systems helps you determine which approach will result in more successful deployment. This is also very useful when you are diagnosing the problems between two systems. By comparing the customization files, you can often identify possible causes of the existing problems.&lt;/p&gt;&lt;br /&gt;&lt;h6&gt;Using the Customization Comparison Utility&lt;/h6&gt;&lt;br /&gt;&lt;p&gt;The Customization Comparison utility lets you easily compare two Microsoft Dynamics CRM customization.xml files. Unlike other XML comparison tools, this utility can read and understand Microsoft Dynamics CRM schema. The results of comparison show the differences in entities, attributes, forms, views, workflows, security roles, entity maps, and relationships. You can use this tool before you import customizations into a system to evaluate the effect they will have on the system.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Use the tool to compare XML customizations files between the source and the target systems. If you use a zipped customization file, make sure that it contains only one customization XML file. The following illustration shows the results of comparison between two customization files. The compared items include entities, roles, workflows, entity maps, and relationships. You can drill down into each item to see more details. From the entities, you can view the changes in attributes, forms, and system views. You can easily see the changes in source and target. It shows the items that are present in the source file and not present in the target file and the items that are present in the target file, but not in the source file.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;img src="http://i.msdn.microsoft.com/Dd442453.a7338331-120b-4f29-ab17-1c94b85e014b(en-us,MSDN.10).gif" alt="Dd442453.a7338331-120b-4f29-ab17-1c94b85e014b(en-us,MSDN.10).gif" height="415" width="714"/&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;In addition to reviewing the results of the comparison in the grid, the tool includes a report that you can easily export to Microsoft Office Excel for additional analysis.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;For more information about how to use the tool, see the Customization Comparison user's guide included in the download package for this utility.&lt;/p&gt;&lt;br /&gt;&lt;h4&gt;Transferring Configuration Data with the Configuration Data Utility&lt;/h4&gt;&lt;br /&gt;&lt;p&gt;When you work with multiple environments, such as development, test, and production, or multiple Microsoft Dynamics CRM organizations, keeping consistent configuration data across all systems can be very important. The Configuration Data Utility helps you achieve this. It lets you export custom configuration data from a source Microsoft Dynamics CRM system and import it to a target Microsoft Dynamics CRM system.&lt;/p&gt;&lt;br /&gt;&lt;h6&gt;Storing Configuration Data in Custom Entities&lt;/h6&gt;&lt;br /&gt;&lt;p&gt;In Microsoft Dynamics CRM you often use custom entities to store business information. However, you could also use custom entities to store system configuration data. For example, if an application integrates Microsoft Dynamics CRM with a third-party system, you could create a configuration entity with attributes such as pollingtime, url, and retries to store the configuration data needed for the integration. This is very convenient because the data stored in the configuration entity can be used by the system administrators to configure a new application or update an existing application. To keep the configuration data up to date, you may have to frequently upload the new data, or have an automated task to do it.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Using the Configuration Data Utility gives you a simple and efficient way to transfer custom configuration data from one system to another. One of the main benefits of this utility is that you can import configuration data from multiple custom entities at the same time. While it only imports and exports data for custom entities, the tool can handle useful scenarios, such as importing records that reference other records that are also being imported.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;img src="http://i.msdn.microsoft.com/Dd442453.Important(en-us,MSDN.10).gif" alt="Dd442453.Important(en-us,MSDN.10).gif" height="10" width="10"/&gt;Important&lt;/p&gt;&lt;br /&gt;&lt;p&gt;For the tool to work correctly, the schema for the source entities and the target entities must be identical.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;img src="http://i.msdn.microsoft.com/Dd442453.note(en-us,MSDN.10).gif" alt="Dd442453.note(en-us,MSDN.10).gif" height="10" width="10"/&gt;Note&lt;/p&gt;&lt;br /&gt;&lt;p&gt;In more complex cases, use the Microsoft Dynamics CRM data export and import tools or Data Migration Manager to transfer data for custom and system entities.&lt;br /&gt;&lt;br/&gt;&lt;br /&gt;For more information about these tools, see Microsoft Dynamics CRM online Help.&lt;/p&gt;&lt;br /&gt;&lt;h6&gt;Using the Configuration Data Utility&lt;/h6&gt;&lt;br /&gt;&lt;p&gt;Use the Configuration Data Utility to export the source system configuration data and import it into a target system. The tool provides a convenient interface that lets you select the custom entities that contain the configuration data in the source system, save the data into a data file, and then import the records from the data file into a target system.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;To run the tool, you must be a system administrator with appropriate privileges to create, read, and update entity instances.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;The following illustration shows the entities in the source system that are selected for export.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;img src="http://i.msdn.microsoft.com/Dd442453.0b8f0a81-1a17-4d77-9419-1cdc12427223(en-us,MSDN.10).gif" alt="Dd442453.0b8f0a81-1a17-4d77-9419-1cdc12427223(en-us,MSDN.10).gif" height="322" width="382"/&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;For import, specify the target server where you import the configuration data and the data file that you created during export, as shown in following illustrations.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;img src="http://i.msdn.microsoft.com/Dd442453.9436a94c-f84f-4151-8d85-edc09ecaa422(en-us,MSDN.10).gif" alt="Dd442453.9436a94c-f84f-4151-8d85-edc09ecaa422(en-us,MSDN.10).gif" height="278" width="311"/&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;img src="http://i.msdn.microsoft.com/Dd442453.5841695f-63ff-4ebb-a3b4-143657a9f759(en-us,MSDN.10).gif" alt="Dd442453.5841695f-63ff-4ebb-a3b4-143657a9f759(en-us,MSDN.10).gif" height="278" width="311"/&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;The tool offers a command line version that you can run from a command prompt.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;For more information about how to use the tool, see the Configuration Data Utility user's guide included in the download package for this utility.&lt;/p&gt;&lt;br /&gt;&lt;h4&gt;Additional Information&lt;/h4&gt;&lt;br /&gt;&lt;p&gt;Download the &lt;a href="http://go.microsoft.com/fwlink/?LinkID=102966"&gt;Microsoft Dynamics CRM 4.0 Software Development Kit (SDK)&lt;/a&gt; from the Microsoft Download Center.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;For more information about custom entities, see &lt;a href="http://msdn.microsoft.com/en-us/library/cc151162.aspx"&gt;Entity Customization&lt;/a&gt;.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/702659527316624506-3363578416834300550?l=billoncrmtech.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://billoncrmtech.blogspot.com/feeds/3363578416834300550/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=702659527316624506&amp;postID=3363578416834300550' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/702659527316624506/posts/default/3363578416834300550'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/702659527316624506/posts/default/3363578416834300550'/><link rel='alternate' type='text/html' href='http://billoncrmtech.blogspot.com/2009/10/isv-utilities-for-comparing.html' title='ISV Utilities for Comparing Customizations and Transferring Configuration Data'/><author><name>Bill Owens</name><uri>http://www.blogger.com/profile/17898790776516318212</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_WyzF5zDnkqY/SavOqTyUHgI/AAAAAAAAABs/Fuc1b2uESVY/S220/me.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-702659527316624506.post-2169462072221988955</id><published>2009-10-31T10:12:00.001-04:00</published><updated>2009-10-31T10:12:14.818-04:00</updated><title type='text'>Buy vs Build</title><content type='html'>&lt;p&gt;&lt;a href="http://blogs.msdn.com/jonasd/archive/2009/08/31/xrm-many-applications.aspx" target="_blank"&gt;Jonas Deibe - Dynamics CRM, C#, JS wrote this&lt;/a&gt;&lt;/p&gt;  &lt;hr /&gt;&lt;form id="aspnetForm" method="post" name="aspnetForm" action="http://blogs.msdn.com/jonasd/archive/2009/08/31/xrm-many-applications.aspx"&gt;   &lt;div id="wrapper"&gt;     &lt;div id="container"&gt;       &lt;div id="contentwrapper"&gt;         &lt;div id="content"&gt;           &lt;div id="content2"&gt;             &lt;div class="post"&gt;               &lt;div class="postview"&gt;                 &lt;p style="margin: 0cm 0cm 10pt" class="MsoNormal"&gt;&lt;span style="mso-ansi-language: en-us" lang="EN-US"&gt;&lt;font size="3"&gt;&lt;font face="Calibri"&gt;Buy versus build judge yourself! I would think xRM as a way of accelerate application development. &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;                  &lt;p&gt;                   &lt;table style="border-bottom: medium none; border-left: medium none; border-collapse: collapse; border-top: medium none; border-right: medium none; mso-yfti-tbllook: 1184; mso-padding-alt: 0cm 5.4pt 0cm 5.4pt; mso-border-alt: solid black .5pt; mso-border-themecolor: text1" class="MsoTableGrid" border="1" cellspacing="0" cellpadding="0"&gt;&lt;tbody&gt;                       &lt;tr style="mso-yfti-irow: 0; mso-yfti-firstrow: yes"&gt;                         &lt;td style="border-bottom: black 1pt solid; border-left: black 1pt solid; padding-bottom: 0cm; background-color: transparent; padding-left: 5.4pt; width: 153.5pt; padding-right: 5.4pt; border-top: black 1pt solid; border-right: black 1pt solid; padding-top: 0cm; mso-border-alt: solid black .5pt; mso-border-themecolor: text1" valign="top" width="205"&gt;                           &lt;p style="line-height: normal; margin: 0cm 0cm 0pt" class="MsoNormal"&gt;&lt;span style="mso-ansi-language: en-us" lang="EN-US"&gt;&lt;/span&gt;&lt;/p&gt;                            &lt;p&gt;&lt;font size="3" face="Calibri"&gt;&amp;#160;&lt;/font&gt;&lt;/p&gt;                            &lt;p&gt;&lt;/p&gt;                            &lt;p&gt;&lt;/p&gt;                         &lt;/td&gt;                          &lt;td style="border-bottom: black 1pt solid; padding-bottom: 0cm; background-color: transparent; padding-left: 5.4pt; width: 153.55pt; padding-right: 5.4pt; border-left-color: #f0f0f0; border-top: black 1pt solid; border-right: black 1pt solid; padding-top: 0cm; mso-border-alt: solid black .5pt; mso-border-themecolor: text1; mso-border-left-alt: solid black .5pt; mso-border-left-themecolor: text1" valign="top" width="205"&gt;                           &lt;p style="line-height: normal; margin: 0cm 0cm 0pt" class="MsoNormal"&gt;&lt;b style="mso-bidi-font-weight: normal"&gt;&lt;span style="mso-ansi-language: en-us" lang="EN-US"&gt;&lt;font size="3"&gt;&lt;font face="Calibri"&gt;Costs &lt;/font&gt;&lt;/font&gt;                                  &lt;p&gt;&lt;/p&gt;                               &lt;/span&gt;&lt;/b&gt;&lt;/p&gt;                            &lt;p&gt;&lt;/p&gt;                            &lt;p&gt;&lt;/p&gt;                         &lt;/td&gt;                          &lt;td style="border-bottom: black 1pt solid; padding-bottom: 0cm; background-color: transparent; padding-left: 5.4pt; width: 153.55pt; padding-right: 5.4pt; border-left-color: #f0f0f0; border-top: black 1pt solid; border-right: black 1pt solid; padding-top: 0cm; mso-border-alt: solid black .5pt; mso-border-themecolor: text1; mso-border-left-alt: solid black .5pt; mso-border-left-themecolor: text1" valign="top" width="205"&gt;                           &lt;p style="line-height: normal; margin: 0cm 0cm 0pt" class="MsoNormal"&gt;&lt;b style="mso-bidi-font-weight: normal"&gt;&lt;span style="mso-ansi-language: en-us" lang="EN-US"&gt;&lt;font size="3"&gt;&lt;font face="Calibri"&gt;Benefits &lt;/font&gt;&lt;/font&gt;                                  &lt;p&gt;&lt;/p&gt;                               &lt;/span&gt;&lt;/b&gt;&lt;/p&gt;                            &lt;p&gt;&lt;/p&gt;                            &lt;p&gt;&lt;/p&gt;                         &lt;/td&gt;                       &lt;/tr&gt;                        &lt;tr style="mso-yfti-irow: 1"&gt;                         &lt;td style="border-bottom: black 1pt solid; border-left: black 1pt solid; padding-bottom: 0cm; background-color: transparent; border-top-color: #f0f0f0; padding-left: 5.4pt; width: 153.5pt; padding-right: 5.4pt; border-right: black 1pt solid; padding-top: 0cm; mso-border-alt: solid black .5pt; mso-border-themecolor: text1; mso-border-top-alt: solid black .5pt; mso-border-top-themecolor: text1" valign="top" width="205"&gt;                           &lt;p style="line-height: normal; margin: 0cm 0cm 0pt" class="MsoNormal"&gt;&lt;span style="mso-ansi-language: en-us" lang="EN-US"&gt;&lt;font size="3"&gt;&lt;font face="Calibri"&gt;Buy (xRM)&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;                         &lt;/td&gt;                          &lt;td style="border-bottom: black 1pt solid; padding-bottom: 0cm; background-color: transparent; border-top-color: #f0f0f0; padding-left: 5.4pt; width: 153.55pt; padding-right: 5.4pt; border-left-color: #f0f0f0; border-right: black 1pt solid; padding-top: 0cm; mso-border-alt: solid black .5pt; mso-border-themecolor: text1; mso-border-left-alt: solid black .5pt; mso-border-left-themecolor: text1; mso-border-top-alt: solid black .5pt; mso-border-top-themecolor: text1; mso-border-bottom-themecolor: text1; mso-border-right-themecolor: text1" valign="top" width="205"&gt;                           &lt;p style="line-height: normal; margin: 0cm 0cm 0pt" class="MsoNormal"&gt;&lt;span style="mso-ansi-language: en-us" lang="EN-US"&gt;&lt;font size="3"&gt;&lt;font face="Calibri"&gt;Locked to vendor &lt;/font&gt;&lt;/font&gt;                                &lt;p&gt;&lt;/p&gt;                             &lt;/span&gt;&lt;/p&gt;                            &lt;p&gt;&lt;/p&gt;                            &lt;p&gt;&lt;/p&gt;                            &lt;p style="line-height: normal; margin: 0cm 0cm 0pt" class="MsoNormal"&gt;&lt;span style="mso-ansi-language: en-us" lang="EN-US"&gt;&lt;font size="3"&gt;&lt;font face="Calibri"&gt;Locked to vender schedules &lt;/font&gt;&lt;/font&gt;                                &lt;p&gt;&lt;/p&gt;                             &lt;/span&gt;&lt;/p&gt;                            &lt;p&gt;&lt;/p&gt;                            &lt;p&gt;&lt;/p&gt;                            &lt;p style="line-height: normal; margin: 0cm 0cm 0pt" class="MsoNormal"&gt;&lt;span style="mso-ansi-language: en-us" lang="EN-US"&gt;&lt;font size="3"&gt;&lt;font face="Calibri"&gt;Customizations to fill GAPs (if any) &lt;/font&gt;&lt;/font&gt;                                &lt;p&gt;&lt;/p&gt;                             &lt;/span&gt;&lt;/p&gt;                            &lt;p&gt;&lt;/p&gt;                            &lt;p&gt;&lt;/p&gt;                            &lt;p style="line-height: normal; margin: 0cm 0cm 0pt" class="MsoNormal"&gt;&lt;span style="mso-ansi-language: en-us" lang="EN-US"&gt;&lt;font size="3"&gt;&lt;font face="Calibri"&gt;Licenses &lt;/font&gt;&lt;/font&gt;                                &lt;p&gt;&lt;/p&gt;                             &lt;/span&gt;&lt;/p&gt;                            &lt;p&gt;&lt;/p&gt;                            &lt;p&gt;&lt;/p&gt;                            &lt;p style="line-height: normal; margin: 0cm 0cm 0pt" class="MsoNormal"&gt;&lt;span style="mso-ansi-language: en-us" lang="EN-US"&gt;&lt;/span&gt;&lt;/p&gt;                            &lt;p&gt;&lt;font size="3" face="Calibri"&gt;&amp;#160;&lt;/font&gt;&lt;/p&gt;                            &lt;p&gt;&lt;/p&gt;                            &lt;p&gt;&lt;/p&gt;                            &lt;p style="line-height: normal; margin: 0cm 0cm 0pt" class="MsoNormal"&gt;&lt;span style="mso-ansi-language: en-us" lang="EN-US"&gt;&lt;/span&gt;&lt;/p&gt;                            &lt;p&gt;&lt;font size="3" face="Calibri"&gt;&amp;#160;&lt;/font&gt;&lt;/p&gt;                            &lt;p&gt;&lt;/p&gt;                            &lt;p&gt;&lt;/p&gt;                         &lt;/td&gt;                          &lt;td style="border-bottom: black 1pt solid; padding-bottom: 0cm; background-color: transparent; border-top-color: #f0f0f0; padding-left: 5.4pt; width: 153.55pt; padding-right: 5.4pt; border-left-color: #f0f0f0; border-right: black 1pt solid; padding-top: 0cm; mso-border-alt: solid black .5pt; mso-border-themecolor: text1; mso-border-left-alt: solid black .5pt; mso-border-left-themecolor: text1; mso-border-top-alt: solid black .5pt; mso-border-top-themecolor: text1; mso-border-bottom-themecolor: text1; mso-border-right-themecolor: text1" valign="top" width="205"&gt;                           &lt;p style="line-height: normal; margin: 0cm 0cm 0pt" class="MsoNormal"&gt;&lt;span style="mso-ansi-language: en-us" lang="EN-US"&gt;&lt;font size="3"&gt;&lt;font face="Calibri"&gt;Configuration more than development &lt;/font&gt;&lt;/font&gt;                                &lt;p&gt;&lt;/p&gt;                             &lt;/span&gt;&lt;/p&gt;                            &lt;p&gt;&lt;/p&gt;                            &lt;p&gt;&lt;/p&gt;                            &lt;p style="line-height: normal; margin: 0cm 0cm 0pt" class="MsoNormal"&gt;&lt;span style="mso-ansi-language: en-us" lang="EN-US"&gt;&lt;font size="3"&gt;&lt;font face="Calibri"&gt;Faster go to market &lt;/font&gt;&lt;/font&gt;                                &lt;p&gt;&lt;/p&gt;                             &lt;/span&gt;&lt;/p&gt;                            &lt;p&gt;&lt;/p&gt;                            &lt;p&gt;&lt;/p&gt;                            &lt;p style="line-height: normal; margin: 0cm 0cm 0pt" class="MsoNormal"&gt;&lt;span style="mso-ansi-language: en-us" lang="EN-US"&gt;&lt;font size="3"&gt;&lt;font face="Calibri"&gt;Use vender enhancements &lt;/font&gt;&lt;/font&gt;                                &lt;p&gt;&lt;/p&gt;                             &lt;/span&gt;&lt;/p&gt;                            &lt;p&gt;&lt;/p&gt;                            &lt;p&gt;&lt;/p&gt;                            &lt;p style="line-height: normal; margin: 0cm 0cm 0pt" class="MsoNormal"&gt;&lt;span style="mso-ansi-language: en-us" lang="EN-US"&gt;&lt;font size="3"&gt;&lt;font face="Calibri"&gt;“Standard” &lt;/font&gt;&lt;/font&gt;                                &lt;p&gt;&lt;/p&gt;                             &lt;/span&gt;&lt;/p&gt;                            &lt;p&gt;&lt;/p&gt;                            &lt;p&gt;&lt;/p&gt;                            &lt;p style="line-height: normal; margin: 0cm 0cm 0pt" class="MsoNormal"&gt;&lt;span style="mso-ansi-language: en-us" lang="EN-US"&gt;&lt;font size="3"&gt;&lt;font face="Calibri"&gt;Shop GAP’s as modules or vertical solutions &lt;/font&gt;&lt;/font&gt;                                &lt;p&gt;&lt;/p&gt;                             &lt;/span&gt;&lt;/p&gt;                            &lt;p&gt;&lt;/p&gt;                            &lt;p&gt;&lt;/p&gt;                         &lt;/td&gt;                       &lt;/tr&gt;                        &lt;tr style="mso-yfti-irow: 2; mso-yfti-lastrow: yes"&gt;                         &lt;td style="border-bottom: black 1pt solid; border-left: black 1pt solid; padding-bottom: 0cm; background-color: transparent; border-top-color: #f0f0f0; padding-left: 5.4pt; width: 153.5pt; padding-right: 5.4pt; border-right: black 1pt solid; padding-top: 0cm; mso-border-alt: solid black .5pt; mso-border-themecolor: text1; mso-border-top-alt: solid black .5pt; mso-border-top-themecolor: text1" valign="top" width="205"&gt;                           &lt;p style="line-height: normal; margin: 0cm 0cm 0pt" class="MsoNormal"&gt;&lt;span style="mso-ansi-language: en-us" lang="EN-US"&gt;&lt;font size="3"&gt;&lt;font face="Calibri"&gt;Build (.Net or any other langauges)&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;                         &lt;/td&gt;                          &lt;td style="border-bottom: black 1pt solid; padding-bottom: 0cm; background-color: transparent; border-top-color: #f0f0f0; padding-left: 5.4pt; width: 153.55pt; padding-right: 5.4pt; border-left-color: #f0f0f0; border-right: black 1pt solid; padding-top: 0cm; mso-border-alt: solid black .5pt; mso-border-themecolor: text1; mso-border-left-alt: solid black .5pt; mso-border-left-themecolor: text1; mso-border-top-alt: solid black .5pt; mso-border-top-themecolor: text1; mso-border-bottom-themecolor: text1; mso-border-right-themecolor: text1" valign="top" width="205"&gt;                           &lt;p style="line-height: normal; margin: 0cm 0cm 0pt" class="MsoNormal"&gt;&lt;span style="mso-ansi-language: en-us" lang="EN-US"&gt;&lt;font size="3"&gt;&lt;font face="Calibri"&gt;Expensive &lt;/font&gt;&lt;/font&gt;                                &lt;p&gt;&lt;/p&gt;                             &lt;/span&gt;&lt;/p&gt;                            &lt;p&gt;&lt;/p&gt;                            &lt;p&gt;&lt;/p&gt;                            &lt;p style="line-height: normal; margin: 0cm 0cm 0pt" class="MsoNormal"&gt;&lt;span style="mso-ansi-language: en-us" lang="EN-US"&gt;&lt;font size="3"&gt;&lt;font face="Calibri"&gt;Longer delivery cycles &lt;/font&gt;&lt;/font&gt;                                &lt;p&gt;&lt;/p&gt;                             &lt;/span&gt;&lt;/p&gt;                            &lt;p&gt;&lt;/p&gt;                            &lt;p&gt;&lt;/p&gt;                            &lt;p style="line-height: normal; margin: 0cm 0cm 0pt" class="MsoNormal"&gt;&lt;span style="mso-ansi-language: en-us" lang="EN-US"&gt;&lt;font size="3"&gt;&lt;font face="Calibri"&gt;Harder to rapidly change &lt;/font&gt;&lt;/font&gt;                                &lt;p&gt;&lt;/p&gt;                             &lt;/span&gt;&lt;/p&gt;                            &lt;p&gt;&lt;/p&gt;                            &lt;p&gt;&lt;/p&gt;                            &lt;p style="line-height: normal; margin: 0cm 0cm 0pt" class="MsoNormal"&gt;&lt;span style="mso-ansi-language: en-us" lang="EN-US"&gt;&lt;font size="3"&gt;&lt;font face="Calibri"&gt;Innovation &lt;/font&gt;&lt;/font&gt;                                &lt;p&gt;&lt;/p&gt;                             &lt;/span&gt;&lt;/p&gt;                            &lt;p&gt;&lt;/p&gt;                            &lt;p&gt;&lt;/p&gt;                         &lt;/td&gt;                          &lt;td style="border-bottom: black 1pt solid; padding-bottom: 0cm; background-color: transparent; border-top-color: #f0f0f0; padding-left: 5.4pt; width: 153.55pt; padding-right: 5.4pt; border-left-color: #f0f0f0; border-right: black 1pt solid; padding-top: 0cm; mso-border-alt: solid black .5pt; mso-border-themecolor: text1; mso-border-left-alt: solid black .5pt; mso-border-left-themecolor: text1; mso-border-top-alt: solid black .5pt; mso-border-top-themecolor: text1; mso-border-bottom-themecolor: text1; mso-border-right-themecolor: text1" valign="top" width="205"&gt;                           &lt;p style="line-height: normal; margin: 0cm 0cm 0pt" class="MsoNormal"&gt;&lt;span style="mso-ansi-language: en-us" lang="EN-US"&gt;&lt;font size="3"&gt;&lt;font face="Calibri"&gt;Tailor application bit by bit &lt;/font&gt;&lt;/font&gt;                                &lt;p&gt;&lt;/p&gt;                             &lt;/span&gt;&lt;/p&gt;                            &lt;p&gt;&lt;/p&gt;                            &lt;p&gt;&lt;/p&gt;                            &lt;p style="line-height: normal; margin: 0cm 0cm 0pt" class="MsoNormal"&gt;&lt;span style="mso-ansi-language: en-us" lang="EN-US"&gt;&lt;font size="3"&gt;&lt;font face="Calibri"&gt;Re-use existing infrastructure &lt;/font&gt;&lt;/font&gt;                                &lt;p&gt;&lt;/p&gt;                             &lt;/span&gt;&lt;/p&gt;                            &lt;p&gt;&lt;/p&gt;                            &lt;p&gt;&lt;/p&gt;                            &lt;p style="line-height: normal; margin: 0cm 0cm 0pt" class="MsoNormal"&gt;&lt;span style="mso-ansi-language: en-us" lang="EN-US"&gt;&lt;font size="3"&gt;&lt;font face="Calibri"&gt;Better control over developer process &lt;/font&gt;&lt;/font&gt;                                &lt;p&gt;&lt;/p&gt;                             &lt;/span&gt;&lt;/p&gt;                            &lt;p&gt;&lt;/p&gt;                            &lt;p&gt;&lt;/p&gt;                            &lt;p style="line-height: normal; margin: 0cm 0cm 0pt" class="MsoNormal"&gt;&lt;span style="mso-ansi-language: en-us" lang="EN-US"&gt;&lt;/span&gt;&lt;/p&gt;                            &lt;p&gt;&lt;font size="3" face="Calibri"&gt;&amp;#160;&lt;/font&gt;&lt;/p&gt;                            &lt;p&gt;&lt;/p&gt;                            &lt;p&gt;&lt;/p&gt;                         &lt;/td&gt;                       &lt;/tr&gt;                     &lt;/tbody&gt;&lt;/table&gt;                 &lt;/p&gt;                 &lt;span style="color: black; mso-ansi-language: en-us; mso-bidi-font-family: calibri; mso-bidi-theme-font: minor-latin" lang="EN-US"&gt;                   &lt;p&gt;&lt;/p&gt;                   &lt;font size="3"&gt;&lt;font face="Calibri"&gt;&lt;span style="mso-ansi-language: en-us; mso-bidi-font-family: calibri; mso-bidi-theme-font: minor-latin" lang="EN-US"&gt;Checkout the introduction to xRM for some inspiration &lt;/span&gt;&lt;span style="mso-bidi-font-family: calibri; mso-bidi-theme-font: minor-latin"&gt;&lt;a href="http://www.youtube.com/watch?v=Yru5CkANOKA"&gt;&lt;span style="mso-ansi-language: en-us" lang="EN-US"&gt;http://www.youtube.com/watch?v=Yru5CkANOKA&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;                   &lt;div class="postfoot"&gt;Published Monday, August 31, 2009 8:19 AM by &lt;a id="ctl00___ctl00___ctl01___Entry___AuthorLink" href="http://blogs.msdn.com/user/Profile.aspx?UserID=54683"&gt;Jonas Deibe&lt;/a&gt; &lt;/div&gt;               &lt;/div&gt;             &lt;/div&gt;           &lt;/div&gt;         &lt;/div&gt;       &lt;/div&gt;     &lt;/div&gt;   &lt;/div&gt; &lt;/form&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/702659527316624506-2169462072221988955?l=billoncrmtech.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://billoncrmtech.blogspot.com/feeds/2169462072221988955/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=702659527316624506&amp;postID=2169462072221988955' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/702659527316624506/posts/default/2169462072221988955'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/702659527316624506/posts/default/2169462072221988955'/><link rel='alternate' type='text/html' href='http://billoncrmtech.blogspot.com/2009/10/buy-vs-build_31.html' title='Buy vs Build'/><author><name>Bill Owens</name><uri>http://www.blogger.com/profile/17898790776516318212</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_WyzF5zDnkqY/SavOqTyUHgI/AAAAAAAAABs/Fuc1b2uESVY/S220/me.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-702659527316624506.post-1770679823329689665</id><published>2009-10-31T10:11:00.001-04:00</published><updated>2009-10-31T10:11:52.642-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='CRM 4.0'/><title type='text'>Buy vs Build</title><content type='html'>&lt;p&gt;&lt;a href="http://blogs.msdn.com/jonasd/archive/2009/08/31/xrm-many-applications.aspx" target="_blank"&gt;Jonas Deibe - Dynamics CRM, C#, JS wrote this&lt;/a&gt;&lt;/p&gt;  &lt;hr /&gt;&lt;form id="aspnetForm" method="post" name="aspnetForm" action="http://blogs.msdn.com/jonasd/archive/2009/08/31/xrm-many-applications.aspx"&gt;   &lt;div id="wrapper"&gt;     &lt;div id="container"&gt;       &lt;div id="contentwrapper"&gt;         &lt;div id="content"&gt;           &lt;div id="content2"&gt;             &lt;div class="post"&gt;               &lt;div class="postview"&gt;                 &lt;p style="margin: 0cm 0cm 10pt" class="MsoNormal"&gt;&lt;span style="mso-ansi-language: en-us" lang="EN-US"&gt;&lt;font size="3"&gt;&lt;font face="Calibri"&gt;Buy versus build judge yourself! I would think xRM as a way of accelerate application development. &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;                  &lt;p&gt;                   &lt;table style="border-bottom: medium none; border-left: medium none; border-collapse: collapse; border-top: medium none; border-right: medium none; mso-yfti-tbllook: 1184; mso-padding-alt: 0cm 5.4pt 0cm 5.4pt; mso-border-alt: solid black .5pt; mso-border-themecolor: text1" class="MsoTableGrid" border="1" cellspacing="0" cellpadding="0"&gt;&lt;tbody&gt;                       &lt;tr style="mso-yfti-irow: 0; mso-yfti-firstrow: yes"&gt;                         &lt;td style="border-bottom: black 1pt solid; border-left: black 1pt solid; padding-bottom: 0cm; background-color: transparent; padding-left: 5.4pt; width: 153.5pt; padding-right: 5.4pt; border-top: black 1pt solid; border-right: black 1pt solid; padding-top: 0cm; mso-border-alt: solid black .5pt; mso-border-themecolor: text1" valign="top" width="205"&gt;                           &lt;p style="line-height: normal; margin: 0cm 0cm 0pt" class="MsoNormal"&gt;&lt;span style="mso-ansi-language: en-us" lang="EN-US"&gt;                               &lt;p&gt;&lt;font size="3" face="Calibri"&gt;&amp;#160;&lt;/font&gt;&lt;/p&gt;                             &lt;/span&gt;&lt;/p&gt;                         &lt;/td&gt;                          &lt;td style="border-bottom: black 1pt solid; padding-bottom: 0cm; background-color: transparent; padding-left: 5.4pt; width: 153.55pt; padding-right: 5.4pt; border-left-color: #f0f0f0; border-top: black 1pt solid; border-right: black 1pt solid; padding-top: 0cm; mso-border-alt: solid black .5pt; mso-border-themecolor: text1; mso-border-left-alt: solid black .5pt; mso-border-left-themecolor: text1" valign="top" width="205"&gt;                           &lt;p style="line-height: normal; margin: 0cm 0cm 0pt" class="MsoNormal"&gt;&lt;b style="mso-bidi-font-weight: normal"&gt;&lt;span style="mso-ansi-language: en-us" lang="EN-US"&gt;&lt;font size="3"&gt;&lt;font face="Calibri"&gt;Costs                                     &lt;p&gt;&lt;/p&gt;                                   &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;                         &lt;/td&gt;                          &lt;td style="border-bottom: black 1pt solid; padding-bottom: 0cm; background-color: transparent; padding-left: 5.4pt; width: 153.55pt; padding-right: 5.4pt; border-left-color: #f0f0f0; border-top: black 1pt solid; border-right: black 1pt solid; padding-top: 0cm; mso-border-alt: solid black .5pt; mso-border-themecolor: text1; mso-border-left-alt: solid black .5pt; mso-border-left-themecolor: text1" valign="top" width="205"&gt;                           &lt;p style="line-height: normal; margin: 0cm 0cm 0pt" class="MsoNormal"&gt;&lt;b style="mso-bidi-font-weight: normal"&gt;&lt;span style="mso-ansi-language: en-us" lang="EN-US"&gt;&lt;font size="3"&gt;&lt;font face="Calibri"&gt;Benefits                                     &lt;p&gt;&lt;/p&gt;                                   &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;                         &lt;/td&gt;                       &lt;/tr&gt;                        &lt;tr style="mso-yfti-irow: 1"&gt;                         &lt;td style="border-bottom: black 1pt solid; border-left: black 1pt solid; padding-bottom: 0cm; background-color: transparent; border-top-color: #f0f0f0; padding-left: 5.4pt; width: 153.5pt; padding-right: 5.4pt; border-right: black 1pt solid; padding-top: 0cm; mso-border-alt: solid black .5pt; mso-border-themecolor: text1; mso-border-top-alt: solid black .5pt; mso-border-top-themecolor: text1" valign="top" width="205"&gt;                           &lt;p style="line-height: normal; margin: 0cm 0cm 0pt" class="MsoNormal"&gt;&lt;span style="mso-ansi-language: en-us" lang="EN-US"&gt;&lt;font size="3"&gt;&lt;font face="Calibri"&gt;Buy (xRM)&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;                         &lt;/td&gt;                          &lt;td style="border-bottom: black 1pt solid; padding-bottom: 0cm; background-color: transparent; border-top-color: #f0f0f0; padding-left: 5.4pt; width: 153.55pt; padding-right: 5.4pt; border-left-color: #f0f0f0; border-right: black 1pt solid; padding-top: 0cm; mso-border-alt: solid black .5pt; mso-border-themecolor: text1; mso-border-left-alt: solid black .5pt; mso-border-left-themecolor: text1; mso-border-top-alt: solid black .5pt; mso-border-top-themecolor: text1; mso-border-bottom-themecolor: text1; mso-border-right-themecolor: text1" valign="top" width="205"&gt;                           &lt;p style="line-height: normal; margin: 0cm 0cm 0pt" class="MsoNormal"&gt;&lt;span style="mso-ansi-language: en-us" lang="EN-US"&gt;&lt;font size="3"&gt;&lt;font face="Calibri"&gt;Locked to vendor                                   &lt;p&gt;&lt;/p&gt;                                 &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;                            &lt;p style="line-height: normal; margin: 0cm 0cm 0pt" class="MsoNormal"&gt;&lt;span style="mso-ansi-language: en-us" lang="EN-US"&gt;&lt;font size="3"&gt;&lt;font face="Calibri"&gt;Locked to vender schedules                                   &lt;p&gt;&lt;/p&gt;                                 &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;                            &lt;p style="line-height: normal; margin: 0cm 0cm 0pt" class="MsoNormal"&gt;&lt;span style="mso-ansi-language: en-us" lang="EN-US"&gt;&lt;font size="3"&gt;&lt;font face="Calibri"&gt;Customizations to fill GAPs (if any)                                   &lt;p&gt;&lt;/p&gt;                                 &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;                            &lt;p style="line-height: normal; margin: 0cm 0cm 0pt" class="MsoNormal"&gt;&lt;span style="mso-ansi-language: en-us" lang="EN-US"&gt;&lt;font size="3"&gt;&lt;font face="Calibri"&gt;Licenses                                   &lt;p&gt;&lt;/p&gt;                                 &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;                            &lt;p style="line-height: normal; margin: 0cm 0cm 0pt" class="MsoNormal"&gt;&lt;span style="mso-ansi-language: en-us" lang="EN-US"&gt;                               &lt;p&gt;&lt;font size="3" face="Calibri"&gt;&amp;#160;&lt;/font&gt;&lt;/p&gt;                             &lt;/span&gt;&lt;/p&gt;                            &lt;p style="line-height: normal; margin: 0cm 0cm 0pt" class="MsoNormal"&gt;&lt;span style="mso-ansi-language: en-us" lang="EN-US"&gt;                               &lt;p&gt;&lt;font size="3" face="Calibri"&gt;&amp;#160;&lt;/font&gt;&lt;/p&gt;                             &lt;/span&gt;&lt;/p&gt;                         &lt;/td&gt;                          &lt;td style="border-bottom: black 1pt solid; padding-bottom: 0cm; background-color: transparent; border-top-color: #f0f0f0; padding-left: 5.4pt; width: 153.55pt; padding-right: 5.4pt; border-left-color: #f0f0f0; border-right: black 1pt solid; padding-top: 0cm; mso-border-alt: solid black .5pt; mso-border-themecolor: text1; mso-border-left-alt: solid black .5pt; mso-border-left-themecolor: text1; mso-border-top-alt: solid black .5pt; mso-border-top-themecolor: text1; mso-border-bottom-themecolor: text1; mso-border-right-themecolor: text1" valign="top" width="205"&gt;                           &lt;p style="line-height: normal; margin: 0cm 0cm 0pt" class="MsoNormal"&gt;&lt;span style="mso-ansi-language: en-us" lang="EN-US"&gt;&lt;font size="3"&gt;&lt;font face="Calibri"&gt;Configuration more than development                                   &lt;p&gt;&lt;/p&gt;                                 &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;                            &lt;p style="line-height: normal; margin: 0cm 0cm 0pt" class="MsoNormal"&gt;&lt;span style="mso-ansi-language: en-us" lang="EN-US"&gt;&lt;font size="3"&gt;&lt;font face="Calibri"&gt;Faster go to market                                   &lt;p&gt;&lt;/p&gt;                                 &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;                            &lt;p style="line-height: normal; margin: 0cm 0cm 0pt" class="MsoNormal"&gt;&lt;span style="mso-ansi-language: en-us" lang="EN-US"&gt;&lt;font size="3"&gt;&lt;font face="Calibri"&gt;Use vender enhancements                                   &lt;p&gt;&lt;/p&gt;                                 &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;                            &lt;p style="line-height: normal; margin: 0cm 0cm 0pt" class="MsoNormal"&gt;&lt;span style="mso-ansi-language: en-us" lang="EN-US"&gt;&lt;font size="3"&gt;&lt;font face="Calibri"&gt;“Standard”                                   &lt;p&gt;&lt;/p&gt;                                 &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;                            &lt;p style="line-height: normal; margin: 0cm 0cm 0pt" class="MsoNormal"&gt;&lt;span style="mso-ansi-language: en-us" lang="EN-US"&gt;&lt;font size="3"&gt;&lt;font face="Calibri"&gt;Shop GAP’s as modules or vertical solutions                                   &lt;p&gt;&lt;/p&gt;                                 &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;                         &lt;/td&gt;                       &lt;/tr&gt;                        &lt;tr style="mso-yfti-irow: 2; mso-yfti-lastrow: yes"&gt;                         &lt;td style="border-bottom: black 1pt solid; border-left: black 1pt solid; padding-bottom: 0cm; background-color: transparent; border-top-color: #f0f0f0; padding-left: 5.4pt; width: 153.5pt; padding-right: 5.4pt; border-right: black 1pt solid; padding-top: 0cm; mso-border-alt: solid black .5pt; mso-border-themecolor: text1; mso-border-top-alt: solid black .5pt; mso-border-top-themecolor: text1" valign="top" width="205"&gt;                           &lt;p style="line-height: normal; margin: 0cm 0cm 0pt" class="MsoNormal"&gt;&lt;span style="mso-ansi-language: en-us" lang="EN-US"&gt;&lt;font size="3"&gt;&lt;font face="Calibri"&gt;Build (.Net or any other langauges)&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;                         &lt;/td&gt;                          &lt;td style="border-bottom: black 1pt solid; padding-bottom: 0cm; background-color: transparent; border-top-color: #f0f0f0; padding-left: 5.4pt; width: 153.55pt; padding-right: 5.4pt; border-left-color: #f0f0f0; border-right: black 1pt solid; padding-top: 0cm; mso-border-alt: solid black .5pt; mso-border-themecolor: text1; mso-border-left-alt: solid black .5pt; mso-border-left-themecolor: text1; mso-border-top-alt: solid black .5pt; mso-border-top-themecolor: text1; mso-border-bottom-themecolor: text1; mso-border-right-themecolor: text1" valign="top" width="205"&gt;                           &lt;p style="line-height: normal; margin: 0cm 0cm 0pt" class="MsoNormal"&gt;&lt;span style="mso-ansi-language: en-us" lang="EN-US"&gt;&lt;font size="3"&gt;&lt;font face="Calibri"&gt;Expensive                                   &lt;p&gt;&lt;/p&gt;                                 &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;                            &lt;p style="line-height: normal; margin: 0cm 0cm 0pt" class="MsoNormal"&gt;&lt;span style="mso-ansi-language: en-us" lang="EN-US"&gt;&lt;font size="3"&gt;&lt;font face="Calibri"&gt;Longer delivery cycles                                   &lt;p&gt;&lt;/p&gt;                                 &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;                            &lt;p style="line-height: normal; margin: 0cm 0cm 0pt" class="MsoNormal"&gt;&lt;span style="mso-ansi-language: en-us" lang="EN-US"&gt;&lt;font size="3"&gt;&lt;font face="Calibri"&gt;Harder to rapidly change                                   &lt;p&gt;&lt;/p&gt;                                 &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;                            &lt;p style="line-height: normal; margin: 0cm 0cm 0pt" class="MsoNormal"&gt;&lt;span style="mso-ansi-language: en-us" lang="EN-US"&gt;&lt;font size="3"&gt;&lt;font face="Calibri"&gt;Innovation                                   &lt;p&gt;&lt;/p&gt;                                 &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;                         &lt;/td&gt;                          &lt;td style="border-bottom: black 1pt solid; padding-bottom: 0cm; background-color: transparent; border-top-color: #f0f0f0; padding-left: 5.4pt; width: 153.55pt; padding-right: 5.4pt; border-left-color: #f0f0f0; border-right: black 1pt solid; padding-top: 0cm; mso-border-alt: solid black .5pt; mso-border-themecolor: text1; mso-border-left-alt: solid black .5pt; mso-border-left-themecolor: text1; mso-border-top-alt: solid black .5pt; mso-border-top-themecolor: text1; mso-border-bottom-themecolor: text1; mso-border-right-themecolor: text1" valign="top" width="205"&gt;                           &lt;p style="line-height: normal; margin: 0cm 0cm 0pt" class="MsoNormal"&gt;&lt;span style="mso-ansi-language: en-us" lang="EN-US"&gt;&lt;font size="3"&gt;&lt;font face="Calibri"&gt;Tailor application bit by bit                                   &lt;p&gt;&lt;/p&gt;                                 &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;                            &lt;p style="line-height: normal; margin: 0cm 0cm 0pt" class="MsoNormal"&gt;&lt;span style="mso-ansi-language: en-us" lang="EN-US"&gt;&lt;font size="3"&gt;&lt;font face="Calibri"&gt;Re-use existing infrastructure                                   &lt;p&gt;&lt;/p&gt;                                 &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;                            &lt;p style="line-height: normal; margin: 0cm 0cm 0pt" class="MsoNormal"&gt;&lt;span style="mso-ansi-language: en-us" lang="EN-US"&gt;&lt;font size="3"&gt;&lt;font face="Calibri"&gt;Better control over developer process                                   &lt;p&gt;&lt;/p&gt;                                 &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;                            &lt;p style="line-height: normal; margin: 0cm 0cm 0pt" class="MsoNormal"&gt;&lt;span style="mso-ansi-language: en-us" lang="EN-US"&gt;                               &lt;p&gt;&lt;font size="3" face="Calibri"&gt;&amp;#160;&lt;/font&gt;&lt;/p&gt;                             &lt;/span&gt;&lt;/p&gt;                         &lt;/td&gt;                       &lt;/tr&gt;                     &lt;/tbody&gt;&lt;/table&gt;                 &lt;/p&gt;                 &lt;span style="color: black; mso-ansi-language: en-us; mso-bidi-font-family: calibri; mso-bidi-theme-font: minor-latin" lang="EN-US"&gt;                   &lt;p&gt;&lt;/p&gt;                   &lt;font size="3"&gt;&lt;font face="Calibri"&gt;&lt;span style="mso-ansi-language: en-us; mso-bidi-font-family: calibri; mso-bidi-theme-font: minor-latin" lang="EN-US"&gt;Checkout the introduction to xRM for some inspiration &lt;/span&gt;&lt;span style="mso-bidi-font-family: calibri; mso-bidi-theme-font: minor-latin"&gt;&lt;a href="http://www.youtube.com/watch?v=Yru5CkANOKA"&gt;&lt;span style="mso-ansi-language: en-us" lang="EN-US"&gt;http://www.youtube.com/watch?v=Yru5CkANOKA&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;                  &lt;div class="postfoot"&gt;Published Monday, August 31, 2009 8:19 AM by &lt;a id="ctl00___ctl00___ctl01___Entry___AuthorLink" href="http://blogs.msdn.com/user/Profile.aspx?UserID=54683"&gt;Jonas Deibe&lt;/a&gt; &lt;/div&gt;               &lt;/div&gt;             &lt;/div&gt;           &lt;/div&gt;         &lt;/div&gt;       &lt;/div&gt;     &lt;/div&gt;   &lt;/div&gt; &lt;/form&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/702659527316624506-1770679823329689665?l=billoncrmtech.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://billoncrmtech.blogspot.com/feeds/1770679823329689665/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=702659527316624506&amp;postID=1770679823329689665' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/702659527316624506/posts/default/1770679823329689665'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/702659527316624506/posts/default/1770679823329689665'/><link rel='alternate' type='text/html' href='http://billoncrmtech.blogspot.com/2009/10/buy-vs-build.html' title='Buy vs Build'/><author><name>Bill Owens</name><uri>http://www.blogger.com/profile/17898790776516318212</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_WyzF5zDnkqY/SavOqTyUHgI/AAAAAAAAABs/Fuc1b2uESVY/S220/me.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-702659527316624506.post-39937344287283711</id><published>2009-10-31T10:08:00.001-04:00</published><updated>2009-10-31T10:08:15.314-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='CRM 4.0'/><category scheme='http://www.blogger.com/atom/ns#' term='coding'/><title type='text'>The Microsoft Dynamics CRM Developer Toolkit</title><content type='html'>&lt;p&gt;For CRM developers, aligning the engineering delivery and process quality of their CRM projects can substantially increase overall productivity. In addition, by documenting, communicating, and following a consistent process for implementing CRM in Enterprise scenarios, developers can scale projects more quickly and efficiently by adding and ramping up consultants regardless of their previous experience with any specific project.   &lt;br /&gt;To provide developers with the ability to create and manage on-premise CRM solutions in an integrated Visual Studio environment, the Microsoft Dynamics CRM Engineering for Enterprise (CRM E2) team initiated and sponsored the development of the &lt;i&gt;Microsoft Dynamics CRM Developer Toolkit&lt;/i&gt;. The Toolkit has been designed to make it easier for developers to customize, extend, and maintain an on-premise CRM solution, all from within an integrated Visual Studio environment. Key benefits for developers include the ability to:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;i&gt;View All CRM Entities&lt;/i&gt; - Displays a listing of CRM entities that are dynamically available from the CRM Explorer within Visual Studio 2008 &lt;/li&gt;    &lt;li&gt;&lt;i&gt;Create and Update CRM Entities&lt;/i&gt; - Allows for creating new entities and updating existing entities from within the CRM Explorer experience &lt;/li&gt;    &lt;li&gt;&lt;i&gt;Create a Wrapper Class&lt;/i&gt; - Provides the ability to auto-generate wrapper classes for entities, which exposes the CRM entities and their corresponding attributes as classes and properties respectively to enable development of code to interact with the entities &lt;/li&gt;    &lt;li&gt;&lt;i&gt;Generate Plug-in Code&lt;/i&gt; - Enumerates the available Plug-ins for an entity and generates the code necessary to jumpstart the plug-in development process &lt;/li&gt;    &lt;li&gt;&lt;i&gt;Integrate the Build and Deploy Process&lt;/i&gt; - Simplifies the process of building and deploying a CRM solution &lt;/li&gt;    &lt;li&gt;&lt;i&gt;Deploy Across Multiple Servers&lt;/i&gt; - Assists in deployment and maintenance of Windows installer packages across multiple environments &lt;/li&gt; &lt;/ul&gt;  &lt;br /&gt;&lt;b&gt;Important&lt;/b&gt;: &lt;b&gt;CRM DevToolkit Installers v1.1&lt;/b&gt; (released on 04/16/09) addresses the following minor issues, which were discovered in the initial release of the CRM Solution Framework:  &lt;ul&gt;   &lt;li&gt;The code-generated RetrieveDynamicEntity did not work on any derived classes because it did not know which entity to reference. &lt;/li&gt;    &lt;li&gt;A static field returned the same ID for any (and every) instance of any entity type (i.e. creating 5 phone calls and retrieving the ID of the record and resulted in the same ID). &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://code.msdn.microsoft.com/E2DevTkt" target="_blank"&gt;Check it out here&lt;/a&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/702659527316624506-39937344287283711?l=billoncrmtech.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://billoncrmtech.blogspot.com/feeds/39937344287283711/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=702659527316624506&amp;postID=39937344287283711' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/702659527316624506/posts/default/39937344287283711'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/702659527316624506/posts/default/39937344287283711'/><link rel='alternate' type='text/html' href='http://billoncrmtech.blogspot.com/2009/10/microsoft-dynamics-crm-developer.html' title='The Microsoft Dynamics CRM Developer Toolkit'/><author><name>Bill Owens</name><uri>http://www.blogger.com/profile/17898790776516318212</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_WyzF5zDnkqY/SavOqTyUHgI/AAAAAAAAABs/Fuc1b2uESVY/S220/me.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-702659527316624506.post-6424815823238586841</id><published>2009-10-31T10:05:00.001-04:00</published><updated>2010-05-07T21:13:06.580-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SharePoint'/><category scheme='http://www.blogger.com/atom/ns#' term='dashboards'/><category scheme='http://www.blogger.com/atom/ns#' term='CRM 4.0'/><title type='text'>CRM, Performance Point and MOSS (CRM+PPS+MOSS)</title><content type='html'>&lt;p&gt;&lt;a href="http://blogs.msdn.com/jonasd/archive/2008/10/21/crm-performance-point-and-moss-crm-pps-moss.aspx" target="_blank"&gt;Jonas Deibe - Dynamics CRM, C#, JS&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;&lt;hr/&gt;&lt;br /&gt;&lt;p&gt;Extending CRM with BI capacity has been on the radar for a while and with the new BI &lt;a href="http://blogs.msdn.com/crm/archive/tags/Accelerators/default.aspx."&gt;accelerators&lt;/a&gt; this will be an easy customization. The same applies to CRM and MOSS integrations. Since I have spent some time in this very interesting area I tough why not share some parts (screen captures). My goals was to build an application with Sales support (CRM) extend it with document management/collaboration (WSS/MOSS) and analyses, drilldown reporting plus dashboards (PPS)&lt;br /&gt;&lt;br/&gt;&lt;br /&gt;The end application would be fully integrated and user navigation will be from the CRM client. Since its all installed on-premise authentication is single sign on (SSO). One very important goal is to let the end user not to know what underlying product she is using, it just doesn't matter as long it works and supports the end-users business/processes.&lt;br /&gt;&lt;br/&gt;&lt;br /&gt;The first step to do is to install the software. I use two servers and a client in my lab.&lt;br /&gt;&lt;br/&gt;&lt;br /&gt;• Installation domain controller and Exchange (Server1)&lt;br /&gt;&lt;br/&gt;&lt;br /&gt;• Installation SQL Server, AS for OLAP's, Reporting Service (default port 80), CRM server (port 5555), MOSS Server (random port NOT default web 80), Performance Point Server (Monitoring), Visual studio (Server2)&lt;br /&gt;&lt;br/&gt;&lt;br /&gt;• Installation of Client with Office package, Visual Studio (Client)&lt;br /&gt;&lt;br/&gt;&lt;br /&gt;The installation process might take some time so don't expect to install it all on an afternoon.&lt;br /&gt;&lt;br/&gt;&lt;br /&gt;Details on how-to configure each product is not in scope of the blogs post (might be a later post)&lt;br /&gt;&lt;br/&gt;&lt;br /&gt;The end result is a very powerfull application; below you see some screen shoots&lt;br /&gt;&lt;br/&gt;&lt;br /&gt;&lt;a href="http://blogs.msdn.com/photos/jonadeimicrosoftcom/images/9010291/original.aspx"&gt;&lt;img src="http://blogs.msdn.com/photos/jonadeimicrosoftcom/images/9010291/573x480.aspx" alt="Dashboard - Click to enlarge" height="480" title="Dashboard - Click to enlarge" width="573"/&gt;&lt;/a&gt;&lt;br /&gt;&lt;br/&gt;&lt;br /&gt;&lt;em&gt;CRM Webclient, Sharepoint site and PPS webparts rendering Dashboards from OLAP cube&lt;/em&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;em&gt;&lt;a href="http://blogs.msdn.com/photos/jonadeimicrosoftcom/images/9010307/original.aspx"&gt;&lt;img src="http://blogs.msdn.com/photos/jonadeimicrosoftcom/images/9010307/640x386.aspx" alt="Sharepoint Document Library" height="386" title="Sharepoint Document Library" width="640"/&gt;&lt;/a&gt;&lt;br /&gt;&lt;br/&gt;&lt;br /&gt;Sharepoint Document Library. Context menu about to open workflows on current document.&lt;/em&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;em&gt;&lt;a href="http://blogs.msdn.com/photos/jonadeimicrosoftcom/images/9010312/original.aspx"&gt;&lt;img src="http://blogs.msdn.com/photos/jonadeimicrosoftcom/images/9010312/573x480.aspx" height="480" width="573"/&gt;&lt;/a&gt;&lt;br /&gt;&lt;br/&gt;&lt;br /&gt;Drill down to product from opportunities, all depending how the cube has been designed&lt;/em&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;PerformancePoint Monitoring SDK&lt;br /&gt;&lt;br/&gt;&lt;br /&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/bb848116.aspx"&gt;http://msdn.microsoft.com/en-us/library/bb848116.aspx&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Working with Online Analytical Processing (OLAP)&lt;br /&gt;&lt;br/&gt;&lt;br /&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/ms175367.aspx"&gt;http://msdn.microsoft.com/en-us/library/ms175367.aspx&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;MOSS Developer center&lt;br /&gt;&lt;br/&gt;&lt;br /&gt;&lt;a href="http://msdn.microsoft.com/en-us/office/aa905503.aspx"&gt;http://msdn.microsoft.com/en-us/office/aa905503.aspx&lt;/a&gt;&lt;br /&gt;&lt;br/&gt;&lt;br /&gt;CRM 4.0 sdk&lt;br /&gt;&lt;br/&gt;&lt;br /&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/aa477293.aspx"&gt;http://msdn.microsoft.com/en-us/library/aa477293.aspx&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Published Tuesday, October 21, 2008 10:00 PM by &lt;a href="http://blogs.msdn.com/user/Profile.aspx?UserID=54683"&gt;Jonas Deibe&lt;/a&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/702659527316624506-6424815823238586841?l=billoncrmtech.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://billoncrmtech.blogspot.com/feeds/6424815823238586841/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=702659527316624506&amp;postID=6424815823238586841' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/702659527316624506/posts/default/6424815823238586841'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/702659527316624506/posts/default/6424815823238586841'/><link rel='alternate' type='text/html' href='http://billoncrmtech.blogspot.com/2009/10/crm-performance-point-and-moss.html' title='CRM, Performance Point and MOSS (CRM+PPS+MOSS)'/><author><name>Bill Owens</name><uri>http://www.blogger.com/profile/17898790776516318212</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_WyzF5zDnkqY/SavOqTyUHgI/AAAAAAAAABs/Fuc1b2uESVY/S220/me.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-702659527316624506.post-4487141757511896001</id><published>2009-10-31T10:03:00.001-04:00</published><updated>2009-10-31T10:03:05.742-04:00</updated><title type='text'>It’s baaa-aaack! For a Limited Time – The Big Easy 3.0!!</title><content type='html'>&lt;p&gt;Great news for Microsoft CRM partners and customers; from November 1st, 2009 through January 2nd, 2010 you can take advantage of one of our most popular promotions ever.&amp;#160; Applicable to Open, Open Value and Open Value Subscription license types, both Corporate and Government customers are provided with partner subsidy funds to help with the implementation of their Microsoft solution.&amp;#160; The following product groups are included:&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;The Big Easy Offer 3.0 Product Groups:&lt;a href="http://blogs.msdn.com/blogfiles/midatlanticcrm/WindowsLiveWriter/ItsbaaaaaackForaLimitedTimeTheBigEasy3.0_AD20/BEO3_logo_o_2.png"&gt;&lt;img title="BEO3_logo_o" border="0" alt="BEO3_logo_o" align="right" src="http://blogs.msdn.com/blogfiles/midatlanticcrm/WindowsLiveWriter/ItsbaaaaaackForaLimitedTimeTheBigEasy3.0_AD20/BEO3_logo_o_thumb.png" width="367" height="187" /&gt;&lt;/a&gt; &lt;/strong&gt;&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Developer and Designer Tools &lt;/li&gt;    &lt;li&gt;Dynamics CRM &lt;/li&gt;    &lt;li&gt;Exchange Server &lt;/li&gt;    &lt;li&gt;Forefront &lt;/li&gt;    &lt;li&gt;Office Communications Server &lt;/li&gt;    &lt;li&gt;Office System &lt;/li&gt;    &lt;li&gt;Project and Visio &lt;/li&gt;    &lt;li&gt;SharePoint Server &lt;/li&gt;    &lt;li&gt;SQL Server &lt;/li&gt;    &lt;li&gt;System Center &lt;/li&gt;    &lt;li&gt;Windows Server System &lt;/li&gt;    &lt;li&gt;Windows Server Solutions &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Get more details here: &lt;a href="https://partner.microsoft.com/US/bigeasyoffer"&gt;https://partner.microsoft.com/US/bigeasyoffer&lt;/a&gt;&amp;#160;&amp;#160; A Windows Live ID linked to your partner organization is required.&lt;/p&gt;  &lt;p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9913005" width="1" height="1" /&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/702659527316624506-4487141757511896001?l=billoncrmtech.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://billoncrmtech.blogspot.com/feeds/4487141757511896001/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=702659527316624506&amp;postID=4487141757511896001' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/702659527316624506/posts/default/4487141757511896001'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/702659527316624506/posts/default/4487141757511896001'/><link rel='alternate' type='text/html' href='http://billoncrmtech.blogspot.com/2009/10/its-baaa-aaack-for-limited-time-big.html' title='It’s baaa-aaack! For a Limited Time – The Big Easy 3.0!!'/><author><name>Bill Owens</name><uri>http://www.blogger.com/profile/17898790776516318212</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_WyzF5zDnkqY/SavOqTyUHgI/AAAAAAAAABs/Fuc1b2uESVY/S220/me.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-702659527316624506.post-2638114683650971470</id><published>2009-10-31T10:02:00.001-04:00</published><updated>2009-10-31T10:02:22.358-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='BizTalk'/><category scheme='http://www.blogger.com/atom/ns#' term='Accelerators'/><category scheme='http://www.blogger.com/atom/ns#' term='Adapter'/><category scheme='http://www.blogger.com/atom/ns#' term='CRM 4.0'/><title type='text'>Microsoft Dynamics CRM Adapter for Microsoft Dynamics GP Released!!</title><content type='html'>&lt;p&gt;&lt;a href="http://blogs.msdn.com/midatlanticcrm/archive/2009/10/05/microsoft-dynamics-crm-adapter-for-microsoft-dynamics-gp-released.aspx" target="_blank"&gt;East Region Microsoft CRM&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;After months of hard work, a very successful Partner TAP (Technology Adoption Program) as well as a Customer BETA program, this adapter has released and is generally available for US installs of Dynamics GP 10.0 and CRM 4.0.&lt;/p&gt;  &lt;p&gt;This is an entirely new adapter redesigned from the ground up to utilize web services and eConnect and provides “…an out of the box, lightly extensible data integration tool.”&amp;#160; The adapter will be offered to registered Microsoft Dynamics GP Partners at no charge, though it must be ordered through the standard Microsoft Dynamics GP ordering process so we can keep track of who is using the adapter and will therefore want any updates and additional information. &lt;/p&gt;  &lt;p&gt;Here are the main points:&lt;/p&gt;  &lt;p&gt;&lt;b&gt;&lt;i&gt;&lt;u&gt;Easy to Implement&lt;/u&gt;&lt;/i&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;· Wizard driven installation&lt;/p&gt;  &lt;p&gt;· System Preparation Tool&lt;/p&gt;  &lt;p&gt;· Lightweight footprint that utilizes web services and eConnect &lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;-Web Service to web service integration&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;&lt;b&gt;&lt;i&gt;&lt;u&gt;Easy to Use&lt;/u&gt;&lt;/i&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;· Eight out-of-the-box CRM to ERP Mappings&lt;/p&gt;  &lt;p&gt;&lt;b&gt;&lt;i&gt;&lt;u&gt;Easy to Customize&lt;/u&gt;&lt;/i&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;· Wizard driven custom mapping&lt;/p&gt;  &lt;p&gt;&lt;b&gt;&lt;i&gt;Additional Information Regarding the Adapter:&lt;/i&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;For Partners and Microsoft Team Members (Information will be updated as it is available):&lt;/p&gt;  &lt;p&gt;&lt;a href="https://mbs.microsoft.com/partnersource/partneressentials/partnerreadiness/resourcing/MDCRMGPAdapter.htm"&gt;https://mbs.microsoft.com/partnersource/partneressentials/partnerreadiness/resourcing/MDCRMGPAdapter.htm&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;For Existing Customers (Information will be updated as it is available):&lt;/p&gt;  &lt;p&gt;&lt;a href="https://mbs.microsoft.com/customersource/worldwide/us/productinformation/factsheets/MDCRMGPAdapter"&gt;https://mbs.microsoft.com/customersource/worldwide/us/productinformation/factsheets/MDCRMGPAdapter&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;The first Partner Readiness training class is tomorrow; register at the link below:&lt;/p&gt;  &lt;p&gt;&lt;a href="https://training.partner.microsoft.com/learning/app/management/LMS_ActDetails.aspx?UserMode=0&amp;amp;ActivityId=551516"&gt;https://training.partner.microsoft.com/learning/app/management/LMS_ActDetails.aspx?UserMode=0&amp;amp;ActivityId=551516&lt;/a&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/702659527316624506-2638114683650971470?l=billoncrmtech.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://billoncrmtech.blogspot.com/feeds/2638114683650971470/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=702659527316624506&amp;postID=2638114683650971470' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/702659527316624506/posts/default/2638114683650971470'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/702659527316624506/posts/default/2638114683650971470'/><link rel='alternate' type='text/html' href='http://billoncrmtech.blogspot.com/2009/10/microsoft-dynamics-crm-adapter-for.html' title='Microsoft Dynamics CRM Adapter for Microsoft Dynamics GP Released!!'/><author><name>Bill Owens</name><uri>http://www.blogger.com/profile/17898790776516318212</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_WyzF5zDnkqY/SavOqTyUHgI/AAAAAAAAABs/Fuc1b2uESVY/S220/me.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-702659527316624506.post-8868589865615411010</id><published>2009-10-31T10:00:00.001-04:00</published><updated>2009-10-31T10:00:33.571-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='CRM 4.0'/><title type='text'>New Update to the Dynamics CRM Statement of Direction now available!!</title><content type='html'>&lt;h6&gt;Hot off the presses we now have access to the freshest information on &lt;strong&gt;Dynamics CRM, Mobile Express, CRM Accelerators, the CRM Adapter for GP, xRM&lt;/strong&gt; and the highly anticipated release of &lt;strong&gt;CRM “V.next.”&lt;/strong&gt;&lt;/h6&gt;  &lt;p&gt;What an edge-of-your-seat thrill ride!&amp;#160; Sure to be a best-seller – OK, it’s free – but I couldn’t put it down!&amp;#160; Make sure to get your copy today at these fine outlets:&lt;/p&gt;  &lt;p&gt;&lt;b&gt;PartnerSource&lt;/b&gt;:&lt;/p&gt;  &lt;p&gt;&lt;a href="https://mbs.microsoft.com/partnersource/marketing/statementofdirection/MD_CRM_SOD.htm"&gt;https://mbs.microsoft.com/partnersource/marketing/statementofdirection/MD_CRM_SOD.htm&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;CustomerSource:&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;&lt;/b&gt;&lt;a href="https://mbs.microsoft.com/customersource/documentation/whitepapers/MSD_CRM4StatementOfDirection.htm"&gt;https://mbs.microsoft.com/customersource/documentation/whitepapers/MSD_CRM4StatementOfDirection&lt;/a&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/702659527316624506-8868589865615411010?l=billoncrmtech.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://billoncrmtech.blogspot.com/feeds/8868589865615411010/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=702659527316624506&amp;postID=8868589865615411010' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/702659527316624506/posts/default/8868589865615411010'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/702659527316624506/posts/default/8868589865615411010'/><link rel='alternate' type='text/html' href='http://billoncrmtech.blogspot.com/2009/10/new-update-to-dynamics-crm-statement-of.html' title='New Update to the Dynamics CRM Statement of Direction now available!!'/><author><name>Bill Owens</name><uri>http://www.blogger.com/profile/17898790776516318212</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_WyzF5zDnkqY/SavOqTyUHgI/AAAAAAAAABs/Fuc1b2uESVY/S220/me.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-702659527316624506.post-2908423416076187009</id><published>2009-10-30T21:36:00.001-04:00</published><updated>2009-10-30T21:36:20.303-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='dashboards'/><category scheme='http://www.blogger.com/atom/ns#' term='CRM 4.0'/><title type='text'>Creating a Dashboard using MOSS, Excel Web Services, Excel 2007 and Microsoft CRM</title><content type='html'>&lt;p&gt;&lt;a href="http://www.dynamicscare.com/blog/index.php/creating-a-dashboard-using-moss-excel-web-services-excel-2007-and-microsoft-crm/" target="_blank"&gt;Posted Tuesday, June 24th, 2008 by David Pritchett&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Creating a dashboard using SharePoint, Excel Pivot Charts and Microsoft CRM data is nothing new. Perform a Google search and you will receive thousands of results. However, finding information on how to create a live dashboard using the latest components of MOSS 2007, Excel Web Services, Excel 2007 and Microsoft CRM data is a bit more difficult.&lt;/p&gt;  &lt;p&gt;1) Using the old method available in SharePoint 2003 of inserting the Office Pivot Chart web part and connecting to your CRM data source to retrieve the data does not work in MOSS 2007. The Office Pivot Chart web part is not available in this version using MOSS 2007 and Excel 2007.&lt;/p&gt;  &lt;p&gt;2) Setting up Excel Web Services authentication methods (Windows Authentication, Single Sign On, or none) to allow the automatic refresh of the data in the spreadsheets on your dashboard page can be a bit confusing. I will discuss this in more detail later in this post.&lt;/p&gt;  &lt;p&gt;3) Certain items used in Excel spreadsheets are not supported in Excel Web Services.&lt;/p&gt;  &lt;p&gt;4) There is not one document that explains it all from start to finish, with all of the pitfalls highlighted. That is what I am hoping to accomplish with this post. My initial hurdles in getting this to work were all centered on getting the data to refresh with live data every time the page is opened. I kept receiving a data retrieval error saying the connection was unavailable. This was mainly the combination of the following:&lt;/p&gt;  &lt;p&gt;a. Data Authentication&lt;/p&gt;  &lt;p&gt;b. Creating the Excel Report based on a Query table, instead of a Pivot Table and Chart&lt;/p&gt;  &lt;p&gt;c. Publishing the Excel Chart as a Report instead of a dashboard&lt;/p&gt;  &lt;p&gt;This post is written based on the assumption that you have knowledge of MOSS 2007, creating a dashboard page in SharePoint and that the environment has been configured to use Excel Web Services. If not, below are some links that go into detail about how to do this and some other helpful links:&lt;/p&gt;  &lt;p&gt;1) Plan external data connections for Excel Services – This article contain full instructions on how to configure MOSS to use Excel Web Services. &lt;strong&gt;&lt;em&gt;Note: All of the steps in this article should be completed before moving on to building your reports and your dashboard.&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://technet.microsoft.com/en-us/library/cc262899.aspx#section7"&gt;http://technet.microsoft.com/en-us/library/cc262899.aspx#section7&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;2) Using Analysis Services data in Excel Services – This article goes into depth on configuring your servers to use Kerberos Authentication. This is required if you are using Windows authentication as your method of authenticating your spreadsheets to the data source.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.tonstegeman.com/Blog/Lists/Posts/Post.aspx?List=70640fe5%2D28d9%2D464f%2Db1c9%2D91e07c8f7e47&amp;amp;ID=43"&gt;http://www.tonstegeman.com/Blog/Lists/Posts/Post.aspx?List=70640fe5%2D28d9%2D464f%2Db1c9%2D91e07c8f7e47&amp;amp;ID=43&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;3) Excel Services part 12: Unsupported features&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/excel/archive/2005/12/01/499206.aspx"&gt;http://blogs.msdn.com/excel/archive/2005/12/01/499206.aspx&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Before moving on with the rest of this post, a word on authentication; when creating your Excel spreadsheet and connecting to your CRM database to retrieve data, you have to select a method of authentication. There are three options:&lt;/p&gt;  &lt;p&gt;1) Windows Authentication&lt;/p&gt;  &lt;p&gt;2) Single Sign On&lt;/p&gt;  &lt;p&gt;3) None&lt;/p&gt;  &lt;p&gt;All three have their caveats, but the third option of “None” is the easiest to configure and is the one I have chosen to use in this example. The other two options require a much deeper understanding of Kerberos authentication and this will not be addressed in this post. Read the section entitled “Authentication to external data” in the “Plan external data connections for Excel Services” article listed above for a complete explanation on the configuration of each.&lt;/p&gt;  &lt;p&gt;As I noted above, you need to configure your MOSS environment prior to actually creating your spreadsheet and building your page. A synopsis of the steps is listed below and is explained in detail in the “Plan external data connections for Excel Services” article:&lt;/p&gt;  &lt;p&gt;1) Enable MOSS to use Excel Web Services&lt;/p&gt;  &lt;p&gt;2) Add a trusted file location&lt;/p&gt;  &lt;p&gt;3) Enable external data access for a trusted file location&lt;/p&gt;  &lt;p&gt;4) Configure the unattended account settings – This is required if your authentication method is “None.” In this step, you will want the unattended account to be a domain user that is also a user in CRM. In my case, I just used the administrator login used when we installed CRM.&lt;/p&gt;  &lt;p&gt;5) Create a data connection library&lt;/p&gt;  &lt;p&gt;6) Add a data connection library to trusted list&lt;/p&gt;  &lt;p&gt;7) Set a registry key to surface a data connection library in the client – This step is not required, but if you would like the data connection library to show up as a location to select data connections from when building your spreadsheet and creating a connection, you will have to do this. Otherwise, you can still access the location by typing in the path to the URL when browsing for your data connections.&lt;/p&gt;  &lt;p&gt;Once you have completed these steps, you are ready to create your worksheet and integrate it into your website.&lt;/p&gt;  &lt;p&gt;1) Create a new connection within a new Excel spreadsheet.&lt;/p&gt;  &lt;p&gt;· Open Microsoft Excel 2007.&lt;/p&gt;  &lt;p&gt;· Go to the Data tab.&lt;/p&gt;  &lt;p&gt;· Select “From Other Sources.”&lt;/p&gt;  &lt;p&gt;· Select “From Data Connection Wizard.”&lt;/p&gt;  &lt;p&gt;· Select Microsoft SQL Server. Click Next.&lt;/p&gt;  &lt;p&gt;· Enter your server name. It is ok to use Windows Authentication here. Click Next.&lt;/p&gt;  &lt;p&gt;· Select your CRM database and the view in which to use. In this example, I am going to create a simple graph using the Opportunity View. Click Next.&lt;/p&gt;  &lt;p&gt;· Select a file name for your data source that will be saved. We will need to modify the location so that the data connection is stored to the Data Connection Library on the SharePoint site. To do this, click Browse. If you do not have a link to your SharePoint Data Connection Library, you can find this by browsing to your SharePoint site using Internet Explorer and selecting the Data Connection Library link. Copy the location from the Address Bar in IE (All the way through the DataConnections only. Do not include the .aspx ending. Ex. – http://intranet/Department%20Sites/Sales%20%20Marketing/sales_dash/Data%20Connections/) and paste this before the file name you have selected.&lt;/p&gt;  &lt;p&gt;· Select the “Always attempt to use this file to refresh data check box.”&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.dynamicscare.com/blog/wp-content/uploads/2008/06/clip-image00243.jpg"&gt;&lt;img title="clip_image002[4]" border="0" alt="clip_image002[4]" src="http://www.dynamicscare.com/blog/wp-content/uploads/2008/06/clip-image0024-thumb3.jpg" width="244" height="202" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;· Click on the Authentication Settings button.&lt;/p&gt;  &lt;p&gt;· Select your authentication method. In my case, I select “None.” This will trigger the Excel Web Services to use the Unattended Account we set up earlier.&lt;/p&gt;  &lt;p&gt;· Select OK on this dialog and then Finish on the previous dialog.&lt;/p&gt;  &lt;p&gt;· When you are prompted with the Web File Properties dialog, select SharePointLibrary as your Connection Type and ReadWrite as your UDC Purpose.&lt;/p&gt;  &lt;p&gt;· On the Import Data dialog, select PivotChart and PivotTable Report. &lt;strong&gt;&lt;em&gt;Note: Selecting Table will not work. It is called a Query Table and is not an option that is supported in Excel Web Services.&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.dynamicscare.com/blog/wp-content/uploads/2008/06/clip-image00443.jpg"&gt;&lt;img title="clip_image004[4]" border="0" alt="clip_image004[4]" src="http://www.dynamicscare.com/blog/wp-content/uploads/2008/06/clip-image0044-thumb3.jpg" width="244" height="202" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;· Build your Pivot Chart. Here I am performing a simple summation of the Estimated Value of my opportunities in a particular category.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.dynamicscare.com/blog/wp-content/uploads/2008/06/clip-image00643.jpg"&gt;&lt;img title="clip_image006[4]" border="0" alt="clip_image006[4]" src="http://www.dynamicscare.com/blog/wp-content/uploads/2008/06/clip-image0064-thumb3.jpg" width="244" height="160" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;· Click on any area within the Pivot Table, click Data from the top menu bar, then Connection Properties.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.dynamicscare.com/blog/wp-content/uploads/2008/06/clip-image00843.jpg"&gt;&lt;img title="clip_image008[4]" border="0" alt="clip_image008[4]" src="http://www.dynamicscare.com/blog/wp-content/uploads/2008/06/clip-image0084-thumb3.jpg" width="203" height="244" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;· Under the usage tab, select all three of the Data Refresh options.&lt;/p&gt;  &lt;p&gt;· Under the definition tab, select the “Always use the connection file” checkbox.&lt;/p&gt;  &lt;p&gt;· Since we have changed the connection information, we will have to re-save it to the Data Connection Library on the SharePoint site. To do this, click on the Export Connection File button. If your location did not default to the Data Connection Library, browse to it as described in step (h). Click Save to update the Data Connection file.&lt;/p&gt;  &lt;p&gt;· Click OK to close the Connection Properties dialog.&lt;/p&gt;  &lt;p&gt;· We are now ready to publish the spreadsheet to the Reports Library on the SharePoint site. Click on the Office Button in the top left corner, select Publish, then select Excel Services.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.dynamicscare.com/blog/wp-content/uploads/2008/06/clip-image01043.jpg"&gt;&lt;img title="clip_image010[4]" border="0" alt="clip_image010[4]" src="http://www.dynamicscare.com/blog/wp-content/uploads/2008/06/clip-image0104-thumb3.jpg" width="221" height="244" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;· Before saving the file, make sure you are publishing it to the Reports Library on the SharePoint. As in step (h), if you do not have a link to the Reports Library, you can find it by navigating to the Reports Library on your SharePoint site using Internet Explorer. Copy the address and paste it before the file name. (Ex. &lt;a href="http://intranet/Department%20Sites/Sales%20%20Marketing/sales_dash/ReportsLibrary/"&gt;http://intranet/Department%20Sites/Sales%20%20Marketing/sales_dash/ReportsLibrary/&lt;/a&gt;)&lt;/p&gt;  &lt;p&gt;· The next dialog will prompt you with choices of the items you would like to publish. In my case, I only want to display the chart, so from the Show tab, I select Items in the Workbook and Chart 1. You can choose to show any item in the spreadsheet that is support by Excel Web Services. Select OK.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.dynamicscare.com/blog/wp-content/uploads/2008/06/clip-image01243.jpg"&gt;&lt;img title="clip_image012[4]" border="0" alt="clip_image012[4]" src="http://www.dynamicscare.com/blog/wp-content/uploads/2008/06/clip-image0124-thumb3.jpg" width="244" height="152" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;· The next dialog is important as well. Be sure to select Dashboard Page. If you select Report, whatever you intend to publish is only published as a snapshot and the data will not refresh when revisiting the web page containing your data and charts.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.dynamicscare.com/blog/wp-content/uploads/2008/06/clip-image01443.jpg"&gt;&lt;img title="clip_image014[4]" border="0" alt="clip_image014[4]" src="http://www.dynamicscare.com/blog/wp-content/uploads/2008/06/clip-image0144-thumb3.jpg" width="244" height="176" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;· Your published report will be rendered in Internet Explorer. The next step will be to add the report from your Reports Library to your SharePoint Dashboard page.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.dynamicscare.com/blog/wp-content/uploads/2008/06/clip-image01643.jpg"&gt;&lt;img title="clip_image016[4]" border="0" alt="clip_image016[4]" src="http://www.dynamicscare.com/blog/wp-content/uploads/2008/06/clip-image0164-thumb3.jpg" width="244" height="218" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Assuming that your base dashboard page has already been built in SharePoint, I am jumping ahead a few steps to actually adding the new Excel Chart to the page.&lt;/p&gt;  &lt;p&gt;· From your dashboard page, select Add a Web Part.&lt;/p&gt;  &lt;p&gt;· From the dialog box, select the Excel Web Access part.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.dynamicscare.com/blog/wp-content/uploads/2008/06/clip-image01843.jpg"&gt;&lt;img title="clip_image018[4]" border="0" alt="clip_image018[4]" src="http://www.dynamicscare.com/blog/wp-content/uploads/2008/06/clip-image0184-thumb3.jpg" width="244" height="139" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;· After the part is added click on the “Click here to open the tool pane” link.&lt;/p&gt;  &lt;p&gt;· In the “Workbook Display” section of the Properties, select the ellipsis to browse your SharePoint Report Library. Select the Excel file that you uploaded earlier.&lt;/p&gt;  &lt;p&gt;· Go through all of the Properties areas for the web part, adjusting what is displayed and what is not. Once you are done with the Properties, select OK to add your web part to the dashboard page.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.dynamicscare.com/blog/wp-content/uploads/2008/06/clip-image02043.jpg"&gt;&lt;img title="clip_image020[4]" border="0" alt="clip_image020[4]" src="http://www.dynamicscare.com/blog/wp-content/uploads/2008/06/clip-image0204-thumb3.jpg" width="244" height="185" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;There you have it! To build more reports and data connections, simply follow the steps listed above and then add them to your dashboard page. In this example I used the CRM database as my data source, but in reality this will work for any external data source.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/702659527316624506-2908423416076187009?l=billoncrmtech.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://billoncrmtech.blogspot.com/feeds/2908423416076187009/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=702659527316624506&amp;postID=2908423416076187009' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/702659527316624506/posts/default/2908423416076187009'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/702659527316624506/posts/default/2908423416076187009'/><link rel='alternate' type='text/html' href='http://billoncrmtech.blogspot.com/2009/10/creating-dashboard-using-moss-excel-web.html' title='Creating a Dashboard using MOSS, Excel Web Services, Excel 2007 and Microsoft CRM'/><author><name>Bill Owens</name><uri>http://www.blogger.com/profile/17898790776516318212</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_WyzF5zDnkqY/SavOqTyUHgI/AAAAAAAAABs/Fuc1b2uESVY/S220/me.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-702659527316624506.post-2789447617307206383</id><published>2009-10-30T21:33:00.001-04:00</published><updated>2009-10-30T21:33:35.766-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Customization'/><category scheme='http://www.blogger.com/atom/ns#' term='Customizing'/><category scheme='http://www.blogger.com/atom/ns#' term='CRM 4.0'/><title type='text'>SiteMap Privilege Tag</title><content type='html'>&lt;p&gt;&lt;a href="http://dmcrm.blogspot.com/2009/09/sitemap-privilege-tag.html" target="_blank"&gt;Dynamic Methods Microsoft CRM Blog&lt;/a&gt;&lt;/p&gt;  &lt;hr /&gt;  &lt;p&gt;At times there are users who need to read data from entities but those same users should never really see the full list of items of that entity in a place where they could take action against any of the items.   &lt;br /&gt;For example, an entity called &amp;quot;Locations&amp;quot; exists in CRM. Users will need to have the ability to view these Locations in order to enter a Location on a related object form, perhaps an Account. As an administrator you would like to have the list available to you so that you can add to or modify the list for the users. It could be placed in the Settings area and sometimes that is enough to keep people away from the list. But just to be safe you want to guarantee that users cannot do anything to the list.    &lt;br /&gt;This is where SiteMap Privilege tags come in. Within each SubArea tag a Privilege tag can be added. When a Privilege tag is applied, CRM will check on the main page load what privileges the user has to see if that user should be able to see the item. If the user does not have rights, then the item is not shown, if the user does have rights then the item is shown.    &lt;br /&gt;So, following our example from above the following could be inside the SiteMap:    &lt;br /&gt;&amp;lt;SubArea Id=&amp;quot;new_location &amp;quot; Entity=&amp;quot;new_location&amp;quot;&amp;gt;    &lt;br /&gt;&amp;lt;Privilege Entity=&amp;quot;new_location&amp;quot; Privilege=&amp;quot;Write&amp;quot; /&amp;gt;    &lt;br /&gt;&amp;lt;/SubArea&amp;gt;    &lt;br /&gt;By setting the privilege to &amp;quot;Write&amp;quot; only those users that have the write privilege will be able to view the entity from the main CRM page. Multiple privileges may be used as well. Here are the possible values from the SDK:    &lt;br /&gt;All    &lt;br /&gt;AllowQuickCampaign    &lt;br /&gt;Append    &lt;br /&gt;AppendTo    &lt;br /&gt;Assign    &lt;br /&gt;Create    &lt;br /&gt;Delete    &lt;br /&gt;Read    &lt;br /&gt;Share    &lt;br /&gt;Write    &lt;br /&gt;Here's an example with multiple privileges:    &lt;br /&gt;&amp;lt;SubArea Id=&amp;quot;new_location &amp;quot; Entity=&amp;quot;new_location&amp;quot;&amp;gt;    &lt;br /&gt;&amp;lt;Privilege Entity=&amp;quot;new_location&amp;quot; Privilege=&amp;quot;Read,Write,Share&amp;quot; /&amp;gt;    &lt;br /&gt;&amp;lt;/SubArea&amp;gt;    &lt;br /&gt;And finally, get creative. Just because the area is for an entity doesn't mean that the privilege has to be for the same entity. Perhaps the Location entity should only show up to users who have rights to write to the Knowledge Base. The following would be completely legit as well:    &lt;br /&gt;&amp;lt;SubArea Id=&amp;quot;new_location &amp;quot; Entity=&amp;quot;new_location&amp;quot;&amp;gt;    &lt;br /&gt;&amp;lt;Privilege Entity=&amp;quot;kbarticle&amp;quot; Privilege=&amp;quot;Read,Write&amp;quot; /&amp;gt;    &lt;br /&gt;&amp;lt;/SubArea&amp;gt;    &lt;br /&gt;Now your main CRM page can be much more dynamic depending on who you are.    &lt;br /&gt;David Fronk    &lt;br /&gt;Dynamic Methods Inc.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/702659527316624506-2789447617307206383?l=billoncrmtech.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://billoncrmtech.blogspot.com/feeds/2789447617307206383/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=702659527316624506&amp;postID=2789447617307206383' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/702659527316624506/posts/default/2789447617307206383'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/702659527316624506/posts/default/2789447617307206383'/><link rel='alternate' type='text/html' href='http://billoncrmtech.blogspot.com/2009/10/sitemap-privilege-tag.html' title='SiteMap Privilege Tag'/><author><name>Bill Owens</name><uri>http://www.blogger.com/profile/17898790776516318212</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_WyzF5zDnkqY/SavOqTyUHgI/AAAAAAAAABs/Fuc1b2uESVY/S220/me.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-702659527316624506.post-385377350497970491</id><published>2009-10-30T21:13:00.001-04:00</published><updated>2009-10-30T21:13:42.524-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Reports'/><category scheme='http://www.blogger.com/atom/ns#' term='C#'/><category scheme='http://www.blogger.com/atom/ns#' term='CRM 4.0'/><title type='text'>CRM Usage Reporting Unleashed</title><content type='html'>&lt;h3&gt;&lt;a href="http://blogs.msdn.com/crm/default.aspx"&gt;Microsoft Dynamics CRM Team Blog&lt;/a&gt;&lt;/h3&gt;  &lt;p&gt;frequent request we come across is from companies who want to know which users are using CRM and when. The CRM platform provides the facility to gather detailed usage information by writing plug-ins, but a simpler and more general mechanism is to use the Internet Information Services (IIS) logging mechanism.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/crm/archive/2009/04/08/crm-usage-reporting-unleashed.aspx" target="_blank"&gt;Click here to read more&lt;/a&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/702659527316624506-385377350497970491?l=billoncrmtech.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://billoncrmtech.blogspot.com/feeds/385377350497970491/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=702659527316624506&amp;postID=385377350497970491' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/702659527316624506/posts/default/385377350497970491'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/702659527316624506/posts/default/385377350497970491'/><link rel='alternate' type='text/html' href='http://billoncrmtech.blogspot.com/2009/10/crm-usage-reporting-unleashed.html' title='CRM Usage Reporting Unleashed'/><author><name>Bill Owens</name><uri>http://www.blogger.com/profile/17898790776516318212</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_WyzF5zDnkqY/SavOqTyUHgI/AAAAAAAAABs/Fuc1b2uESVY/S220/me.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-702659527316624506.post-5055779555477945555</id><published>2009-10-30T21:07:00.001-04:00</published><updated>2009-10-30T21:07:47.466-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SQL 2005'/><category scheme='http://www.blogger.com/atom/ns#' term='Tips and Tricks'/><category scheme='http://www.blogger.com/atom/ns#' term='SQL 2008'/><category scheme='http://www.blogger.com/atom/ns#' term='CRM 4.0'/><title type='text'>SQL Server: The instance name must be the same as computer name</title><content type='html'>&lt;a href="http://mscrmuk.blogspot.com/2008/10/sql-server-instance-name-must-be-same.html" target="_blank"&gt;Saturday, 11 October 2008   &lt;br /&gt;Posted by David Jennaway at 10:11&lt;/a&gt;  &lt;p&gt;&lt;abbr&gt;&lt;/abbr&gt; &lt;/p&gt;  &lt;p&gt;This is something I’ve posted about on newsgroups, but one of my colleagues encountered it recently, and I think it deserves a blog entry.   &lt;br /&gt;The CRM Environment Diagnostics Wizard may throw the error ‘The instance name must be the same as computer name’. The most common cause of this is if the SQL Server has been renamed after SQL Server was installed. The reason is that, at installation time, SQL Server stores the computer name in a system table, sysservers. This information is not updated when the computer is renamed, and the error from the CRM Environment Diagnostics Wizard indicates that the entry in sysservers does not match the current computer name.    &lt;br /&gt;You can diagnose and resolve this by using some SQL system stored procedures. One of them lists the data in sysservers, the other 2 allow you to modify the data to reflect the current machine name.    &lt;br /&gt;To check if this is the issue, use SQL Management Studio (or Query Analyzer for SQL 2000) to execute the following query:    &lt;br /&gt;sp_helpserver    &lt;br /&gt;This will return output like the following:    &lt;br /&gt;Name,network_name,status,id,collation_name,connect_timeout,query_timeout    &lt;br /&gt;ORGNAME,ORIGNAME,rpc,rpc out,use remote collation,0,null,0,0    &lt;br /&gt;If the value in the name column does not match the current computer name, then you have to use the following SQL stored procedures to fix the problem. Note that sp_helpserver normally returns one record, but can return more records if you have configured linked servers. If this is the case, it is the row with id=0 that matters.    &lt;br /&gt;To change the information you have to first remove the incorrect record, then add the correct one, with the following queries:    &lt;br /&gt;sp_dropserver ‘ORIGNAME’ -- where ORIGNAME is the name returned by sp_helpserver    &lt;br /&gt;sp_addserver ‘CURRENTNAME’, ‘LOCAL’ – where CURRENTNAME is the current computer name    &lt;br /&gt;If you use named instances, refer to them in the form SERVERNAME\INSTANCENAME. It may then be necessary to restart SQL Server after these changes, but I'm not sure of this. It can't harm though if you can.    &lt;br /&gt;There is a KB article about this &lt;a href="http://support.microsoft.com/kb/857505"&gt;here&lt;/a&gt;. This descibes a similar solution, but be warned of a couple of minor issues with the solution - it fails to specify that quotes are required around the parameters to sp_dropserver and sp_addserver, and I have a feeling (though can't provide concrete evidence) that running sp_helpserver is more reliable than select @@servername. &lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/702659527316624506-5055779555477945555?l=billoncrmtech.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://billoncrmtech.blogspot.com/feeds/5055779555477945555/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=702659527316624506&amp;postID=5055779555477945555' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/702659527316624506/posts/default/5055779555477945555'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/702659527316624506/posts/default/5055779555477945555'/><link rel='alternate' type='text/html' href='http://billoncrmtech.blogspot.com/2009/10/sql-server-instance-name-must-be-same.html' title='SQL Server: The instance name must be the same as computer name'/><author><name>Bill Owens</name><uri>http://www.blogger.com/profile/17898790776516318212</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_WyzF5zDnkqY/SavOqTyUHgI/AAAAAAAAABs/Fuc1b2uESVY/S220/me.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-702659527316624506.post-7530165050438369637</id><published>2009-10-30T21:05:00.001-04:00</published><updated>2009-10-30T21:05:08.894-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Tips and Tricks'/><category scheme='http://www.blogger.com/atom/ns#' term='Organization'/><category scheme='http://www.blogger.com/atom/ns#' term='CRM 4.0'/><title type='text'>Renaming Active Directory and Redeploy CRM</title><content type='html'>&lt;p&gt;&lt;a href="http://msdynamicscrm-e.blogspot.com/2009/03/renaming-active-directory-and-redeploy.html" target="_blank"&gt;20:26 3/31/2009, noreply@blogger.com (Darren Liu), Darren's CRM Blog&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;I came across an issue today that the client would like to rename their AD because of some business decisions. They are wondering how to move CRM under the new domain.&amp;#160; Well to move CRM from old domain to the new domain, here are the steps that you can follow:&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;Backup the [Organization]_MSCRM database. &lt;/li&gt;    &lt;li&gt;Backup the custom reports if you have any. &lt;/li&gt;    &lt;li&gt;Uninstall CRM 4.0 from the CRM server. &lt;/li&gt;    &lt;li&gt;Remove the MSCRM_Config database. &lt;/li&gt;    &lt;li&gt;Reinstall CRM 4.0 and choose to setup a new Organization option during the install. &lt;/li&gt;    &lt;li&gt;Restore the existing [Organization]_MSCRM database. &lt;/li&gt;    &lt;li&gt;Logon to the CRM server and launch CRM Deployment Manager. &lt;/li&gt;    &lt;li&gt;Import existing organization and then follow the wizard to remap the users in the new AD. &lt;/li&gt;    &lt;li&gt;Verify that you can logon back to the CRM environment. &lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;That’s it! If you run into any this issue in the future, now you can follow the steps above to redeploy CRM.&lt;/p&gt;  &lt;p&gt;&lt;img src="https://blogger.googleusercontent.com/tracker/6761047543995180644-3728841378728719619?l=msdynamicscrm-e.blogspot.com" width="1" height="1" /&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/702659527316624506-7530165050438369637?l=billoncrmtech.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://billoncrmtech.blogspot.com/feeds/7530165050438369637/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=702659527316624506&amp;postID=7530165050438369637' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/702659527316624506/posts/default/7530165050438369637'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/702659527316624506/posts/default/7530165050438369637'/><link rel='alternate' type='text/html' href='http://billoncrmtech.blogspot.com/2009/10/renaming-active-directory-and-redeploy.html' title='Renaming Active Directory and Redeploy CRM'/><author><name>Bill Owens</name><uri>http://www.blogger.com/profile/17898790776516318212</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_WyzF5zDnkqY/SavOqTyUHgI/AAAAAAAAABs/Fuc1b2uESVY/S220/me.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-702659527316624506.post-4641690538944284498</id><published>2009-10-30T21:03:00.001-04:00</published><updated>2009-10-30T21:03:08.823-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='C#'/><category scheme='http://www.blogger.com/atom/ns#' term='CRM 4.0'/><category scheme='http://www.blogger.com/atom/ns#' term='coding'/><title type='text'>Creating a Birthday Contact List</title><content type='html'>&lt;h3&gt;&lt;a href="http://blogs.msdn.com/crm/archive/2009/02/27/creating-a-birthday-contact-list.aspx" target="_blank"&gt;Microsoft Dynamics CRM Team Blog&lt;/a&gt;&lt;/h3&gt;  &lt;p&gt;&lt;em&gt;Today we welcome our guest blogger &lt;a href="http://www.crowechizek.com/Crowe/News/detail.cfm?id=105"&gt;CRM MVP Darren Liu&lt;/a&gt; from the &lt;/em&gt;&lt;a href="http://www.crowecrm.com/crowe/microsoft/CRM.cfm"&gt;&lt;em&gt;Crowe Horwath&lt;/em&gt;&lt;/a&gt;&lt;em&gt; company.&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;Have you ever been asked by someone to get a list of contacts having birthdays during a certain time period from CRM? If so what have you done to perform this task? Within the application, birthdays are tracked on Contact records as a single date (including year). This causes problems when searching for birthdays in a certain time period as the birth date is evaluated including the year. To illustrate, consider the following example: &lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;· John Dole, 10/1/1980 &lt;/p&gt;    &lt;p&gt;· Adam Smith, 9/1/1970 &lt;/p&gt;    &lt;p&gt;· Mark Francis, 10/10/1960 &lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;Within CRM, searching for date is done by range. There is no easy way to identify from the above contacts all those having birthday in October as any range you choose will include the year. Wildcard functions on date fields are not a workable solution. &lt;/p&gt;  &lt;p&gt;There are several solutions to this problem including JavaScript to parse birthday on the onChange event, a custom report or a plug-in. The desired functionality is to be able to search by birth month, birth day, and/or birth year, allowing the user to quickly identify all birthdays in a certain time period. &lt;/p&gt;  &lt;p&gt;In this blog, I will show you how to use a pre plug-in to parse the birthday field into day, month and year. This way, the users will able to perform searches using Advanced Find. I have chosen the plug-in approach because it will help me parse the birthday field not only when the users update the birthday on the contact form but also when updating the birthday through the CRM web service for data imports and data integration. &lt;/p&gt;  &lt;p&gt;Implement the pre plug-in&lt;/p&gt;  &lt;p&gt;&lt;b&gt;1. Create New Attributes&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;Create three new attribute on the Contact entity form in CRM. After creating the new attributes, publish the Contact customization. &lt;/p&gt;  &lt;p&gt;Display Name&lt;/p&gt;  &lt;p&gt;Schema Name&lt;/p&gt;  &lt;p&gt;Type&lt;/p&gt;  &lt;p&gt;Searchable&lt;/p&gt;  &lt;p&gt;Values&lt;/p&gt;  &lt;p&gt;Birth Month&lt;/p&gt;  &lt;p&gt;new_birthmonth&lt;/p&gt;  &lt;p&gt;Picklist&lt;/p&gt;  &lt;p&gt;Yes&lt;/p&gt;  &lt;p&gt;Jan = 1, Feb = 2, Mar = 3, Apr = 4, May = 5, Jun = 6, Jul = 7, Aug = 8, Sept = 9, Oct = 10, Nov = 11, Dec = 12&lt;/p&gt;  &lt;p&gt;Birth Day&lt;/p&gt;  &lt;p&gt;new_birthday&lt;/p&gt;  &lt;p&gt;Int&lt;/p&gt;  &lt;p&gt;Yes&lt;/p&gt;  &lt;p&gt;Min Value = 1 &lt;/p&gt;  &lt;p&gt;Max Value = 31&lt;/p&gt;  &lt;p&gt;Birth Year&lt;/p&gt;  &lt;p&gt;new_birthyear&lt;/p&gt;  &lt;p&gt;Int&lt;/p&gt;  &lt;p&gt;Yes&lt;/p&gt;  &lt;p&gt;Min Value = 1900 &lt;/p&gt;  &lt;p&gt;Max Value = 9999&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/crm/WindowsLiveWriter/7281dd88be79_801C/clip_image002_2.jpg"&gt;&lt;img title="clip_image002" border="0" alt="clip_image002" src="http://blogs.msdn.com/blogfiles/crm/WindowsLiveWriter/7281dd88be79_801C/clip_image002_thumb.jpg" width="499" height="390" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;2. Create pre plug-in using Visual Studio&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;Create a plug-in project name &lt;b&gt;Crm.Plugin&lt;/b&gt;, copy and paste the following code to your Plug-in project. &lt;/p&gt;  &lt;pre&gt;using System;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;using System.Collections.Generic;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;using System.Text;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;using Microsoft.Crm.Sdk;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;using Microsoft.Crm.SdkTypeProxy;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&amp;#160;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;namespace Crm.Plugin&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;{&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;  public class MonthDayYearContactPlugin : IPlugin&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;  {&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;    public void Execute(IPluginExecutionContext context)&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;    {&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;    DynamicEntity entity = null;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&amp;#160;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;    if (context.InputParameters.Properties.Contains(ParameterName.Target) &amp;amp;&amp;amp;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;        context.InputParameters.Properties[ParameterName.Target] is DynamicEntity)&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;    {&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;        entity = (DynamicEntity)context.InputParameters[ParameterName.Target];&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;        if (entity.Name != EntityName.contact.ToString()) { return; }&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;    }&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;    else&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;    {&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;        return;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;    }&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&amp;#160;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;    try&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;    {&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;        if (entity.Properties.Contains(&amp;quot;birthdate&amp;quot;))&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;        {&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;            CrmDateTime _birthdate = (CrmDateTime)entity[&amp;quot;birthdate&amp;quot;];&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;            if (_birthdate.IsNull)&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;            {&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;                entity[&amp;quot;new_birthday&amp;quot;] = CrmNumber.Null;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;                entity[&amp;quot;new_birthmonth&amp;quot;] = Picklist.Null;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;                entity[&amp;quot;new_birthyear&amp;quot;] = CrmNumber.Null;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;            }&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;            else&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;            {&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;                DateTime birthdayValue = _birthdate.UserTime; &lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;                entity[&amp;quot;new_birthday&amp;quot;] = new CrmNumber(birthdayValue.Day);&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;                entity[&amp;quot;new_birthmonth&amp;quot;] = new Picklist(birthdayValue.Month);&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;                entity[&amp;quot;new_birthyear&amp;quot;] = new CrmNumber(birthdayValue.Year);&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;            }&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;        }&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;    }&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;    catch (Exception ex)&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;    {&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;        throw new InvalidPluginExecutionException(&amp;quot;An error occurred in the Month, Day, Year Plug-in for Contact.&amp;quot;, ex);&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;    }&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;    }&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;  }&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;}&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;b&gt;3. Register the plug-in&lt;/b&gt; The last step is to register the plug-in. To register the plug-in, you may use the &lt;a href="http://code.msdn.microsoft.com/crmplugin/Release/ProjectReleases.aspx?ReleaseId=2010"&gt;Plug-in Registration tool&lt;/a&gt; from the MSDN Code Gallery. After the assembly is uploaded, you need to associate the following steps to the plug-in: &lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;b&gt;Message:&lt;/b&gt; Create &lt;br /&gt;&lt;br /&gt;  &lt;br /&gt;&lt;b&gt;Primary Entity:&lt;/b&gt; contact &lt;br /&gt;&lt;br /&gt;  &lt;br /&gt;&lt;b&gt;Filtering Attributes:&lt;/b&gt; birthdate &lt;br /&gt;&lt;br /&gt;  &lt;br /&gt;&lt;b&gt;Eventing Pipeline Stage of Execution:&lt;/b&gt; Pre Stage &lt;br /&gt;&lt;br /&gt;  &lt;br /&gt;&lt;b&gt;Execution Mode:&lt;/b&gt; Synchronous &lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;b&gt;Triggering Pipeline:&lt;/b&gt; Parent Pipeline&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;b&gt;Message: &lt;/b&gt;Update &lt;br /&gt;&lt;br /&gt;  &lt;br /&gt;&lt;b&gt;Primary Entity:&lt;/b&gt; contact &lt;br /&gt;&lt;br /&gt;  &lt;br /&gt;&lt;b&gt;Filtering Attribute:&lt;/b&gt; birthdate &lt;br /&gt;&lt;br /&gt;  &lt;br /&gt;&lt;b&gt;Eventing Pipeline Stage of Execution:&lt;/b&gt; Pre Stage &lt;br /&gt;&lt;br /&gt;  &lt;br /&gt;&lt;b&gt;Execution Mode:&lt;/b&gt; Synchronous &lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;b&gt;Triggering Pipeline:&lt;/b&gt; Parent Pipeline&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;b&gt;Message:&lt;/b&gt; Create &lt;br /&gt;&lt;br /&gt;  &lt;br /&gt;&lt;b&gt;Primary Entity:&lt;/b&gt; contact &lt;br /&gt;&lt;br /&gt;  &lt;br /&gt;&lt;b&gt;Filtering Attributes:&lt;/b&gt; birthdate &lt;br /&gt;&lt;br /&gt;  &lt;br /&gt;&lt;b&gt;Eventing Pipeline Stage of Execution:&lt;/b&gt; Pre Stage &lt;br /&gt;&lt;br /&gt;  &lt;br /&gt;&lt;b&gt;Execution Mode:&lt;/b&gt; Synchronous &lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;b&gt;Triggering Pipeline:&lt;/b&gt; Child Pipeline&lt;b&gt;&lt;/b&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;b&gt;Message: &lt;/b&gt;Update &lt;br /&gt;&lt;br /&gt;  &lt;br /&gt;&lt;b&gt;Primary Entity:&lt;/b&gt; contact &lt;br /&gt;&lt;br /&gt;  &lt;br /&gt;&lt;b&gt;Filtering Attribute:&lt;/b&gt; birthdate &lt;br /&gt;&lt;br /&gt;  &lt;br /&gt;&lt;b&gt;Eventing Pipeline Stage of Execution:&lt;/b&gt; Pre Stage &lt;br /&gt;&lt;br /&gt;  &lt;br /&gt;&lt;b&gt;Execution Mode:&lt;/b&gt; Synchronous &lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;b&gt;Triggering Pipeline:&lt;/b&gt; Child Pipeline&lt;b&gt;&lt;/b&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;Summary &lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;That’s all there is to it! The users will now be able to use Advanced Find to quickly identify their contacts birthday in a certain time period from now on. For the existing contacts previously stored in CRM, you will need to write a one-time SQL script to update the birthday fields in the MSCRM database in order for CRM to return the correct data back to the users. Hopefully this will help you on your next CRM project. &lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/crm/WindowsLiveWriter/7281dd88be79_801C/clip_image004_2.jpg"&gt;&lt;img title="clip_image004" border="0" alt="clip_image004" src="http://blogs.msdn.com/blogfiles/crm/WindowsLiveWriter/7281dd88be79_801C/clip_image004_thumb.jpg" width="443" height="335" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/crm/WindowsLiveWriter/7281dd88be79_801C/clip_image006_2.jpg"&gt;&lt;img title="clip_image006" border="0" alt="clip_image006" src="http://blogs.msdn.com/blogfiles/crm/WindowsLiveWriter/7281dd88be79_801C/clip_image006_thumb.jpg" width="443" height="335" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;Cheers,&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;a href="http://www.crowechizek.com/Crowe/News/detail.cfm?id=105"&gt;Darren Liu&lt;/a&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/702659527316624506-4641690538944284498?l=billoncrmtech.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://billoncrmtech.blogspot.com/feeds/4641690538944284498/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=702659527316624506&amp;postID=4641690538944284498' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/702659527316624506/posts/default/4641690538944284498'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/702659527316624506/posts/default/4641690538944284498'/><link rel='alternate' type='text/html' href='http://billoncrmtech.blogspot.com/2009/10/creating-birthday-contact-list.html' title='Creating a Birthday Contact List'/><author><name>Bill Owens</name><uri>http://www.blogger.com/profile/17898790776516318212</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_WyzF5zDnkqY/SavOqTyUHgI/AAAAAAAAABs/Fuc1b2uESVY/S220/me.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-702659527316624506.post-6052673242869182639</id><published>2009-10-30T21:01:00.001-04:00</published><updated>2009-10-30T21:01:03.639-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='CRM 4.0'/><title type='text'>CRM 4.0 Build Versions</title><content type='html'>&lt;table border="0" cellspacing="0" cellpadding="0"&gt;&lt;tbody&gt;     &lt;tr&gt;       &lt;td width="126"&gt;Build Number&lt;/td&gt;        &lt;td width="122"&gt;Released&lt;/td&gt;        &lt;td width="249"&gt;Details&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td width="126"&gt;04.00.7333.2138&lt;/td&gt;        &lt;td width="122"&gt;10/22/2009&lt;/td&gt;        &lt;td width="249"&gt;&lt;a href="http://www.microsoft.com/downloads/details.aspx?displaylang=en&amp;amp;FamilyID=a4893988-7804-4e23-ab58-740441cc696e"&gt;Update Rollup 7&lt;/a&gt;&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td width="126"&gt;4.0.7333.1750&lt;/td&gt;        &lt;td width="122"&gt;8/26/2009&lt;/td&gt;        &lt;td width="249"&gt;&lt;a href="http://www.microsoft.com/downloads/details.aspx?familyid=79F90982-C039-41C2-AF8E-3119ECF27790&amp;amp;displaylang=en"&gt;Rollup Update 6&lt;/a&gt;&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td width="126"&gt;4.0.7333.1676&lt;/td&gt;        &lt;td width="122"&gt;7/8/2009&lt;/td&gt;        &lt;td width="249"&gt;&lt;a href="http://www.microsoft.com/downloads/details.aspx?displaylang=en&amp;amp;FamilyID=f592ec6c-f412-4fd5-9a80-cd3bcbd26d8b"&gt;Mobile Express +Rollup 5&lt;/a&gt;&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td width="126"&gt;4.0.7333.1644&lt;/td&gt;        &lt;td width="122"&gt;7/2/2009&lt;/td&gt;        &lt;td width="249"&gt;&lt;a href="http://www.microsoft.com/downloads/details.aspx?familyid=5101D801-976B-4C11-BDFC-000B970EF4A3&amp;amp;displaylang=en"&gt;Rollup Update 5&lt;/a&gt;&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td width="126"&gt;4.0.7333.1551&lt;/td&gt;        &lt;td width="122"&gt;5/7/2009&lt;/td&gt;        &lt;td width="249"&gt;&lt;a href="http://www.microsoft.com/downloads/details.aspx?familyid=0DDF8E83-5D9C-4FE7-9AE6-F2713A024071&amp;amp;displaylang=en"&gt;Rollup Update 4&lt;/a&gt;&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td width="126"&gt;4.0.7333.1408&lt;/td&gt;        &lt;td width="122"&gt;3/12/2009&lt;/td&gt;        &lt;td&gt;&lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyId=05453fa4-9551-4a88-9852-634a9ad0e140&amp;amp;displaylang=en"&gt;Update Rollup 3&lt;/a&gt;&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td width="126"&gt;4.0.7333.1316&lt;/td&gt;        &lt;td width="122"&gt;2/8/2009&lt;/td&gt;        &lt;td width="249"&gt;&lt;a href="http://www.microsoft.com/downloads/details.aspx?familyid=aa671769-61e9-45c4-919f-c88199aa4241&amp;amp;displaylang=en&amp;amp;tm"&gt;Rollup Update #2 (Re-Release)&lt;/a&gt;&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td width="126"&gt;4.0.7333.1312&lt;/td&gt;        &lt;td width="122"&gt;1/15/2009&lt;/td&gt;        &lt;td width="249"&gt;Rollup Update #2 (Original Release)&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td width="126"&gt;4.0.7333.1113&lt;/td&gt;        &lt;td width="122"&gt;11/24/2008&lt;/td&gt;        &lt;td width="249"&gt;&lt;a href="http://www.microsoft.com/downloads/details.aspx?familyid=57C6267B-3B13-49DD-BFED-3CC83633AEA7&amp;amp;displaylang=en"&gt;Rollup Update #1&lt;/a&gt;&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td width="126"&gt;4.0.7333.3&lt;/td&gt;        &lt;td width="122"&gt;12/19/2007&lt;/td&gt;        &lt;td width="249"&gt;&lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=a9c110fd-aac8-4d2a-b401-7801b1866e82&amp;amp;DisplayLang=en"&gt;RTM&lt;/a&gt;&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td width="126"&gt;4.0.7333.2&lt;/td&gt;        &lt;td width="122"&gt;Dec-07&lt;/td&gt;        &lt;td width="249"&gt;RC2 (Internal)&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td width="126"&gt;4.0.7309.0&lt;/td&gt;        &lt;td width="122"&gt;Nov-07&lt;/td&gt;        &lt;td width="249"&gt;RC0 (Limited Release)&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td width="126"&gt;4.0.7219.10&lt;/td&gt;        &lt;td width="122"&gt;Aug-07&lt;/td&gt;        &lt;td width="249"&gt;Beta - CTP3&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td width="126"&gt;4.0.7044.22&lt;/td&gt;        &lt;td width="122"&gt;May-07&lt;/td&gt;        &lt;td width="249"&gt;Beta - CTP2&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td width="126"&gt;4.0.6319.16&lt;/td&gt;        &lt;td width="122"&gt;October 2006 (?)&lt;/td&gt;        &lt;td width="249"&gt;Beta - CTP1&lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt;&lt;/table&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/702659527316624506-6052673242869182639?l=billoncrmtech.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://billoncrmtech.blogspot.com/feeds/6052673242869182639/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=702659527316624506&amp;postID=6052673242869182639' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/702659527316624506/posts/default/6052673242869182639'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/702659527316624506/posts/default/6052673242869182639'/><link rel='alternate' type='text/html' href='http://billoncrmtech.blogspot.com/2009/10/crm-40-build-versions.html' title='CRM 4.0 Build Versions'/><author><name>Bill Owens</name><uri>http://www.blogger.com/profile/17898790776516318212</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_WyzF5zDnkqY/SavOqTyUHgI/AAAAAAAAABs/Fuc1b2uESVY/S220/me.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-702659527316624506.post-8381561987937533937</id><published>2009-10-30T20:55:00.001-04:00</published><updated>2009-10-30T20:55:57.171-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='performance'/><category scheme='http://www.blogger.com/atom/ns#' term='CRM 4.0'/><title type='text'>Improving Microsoft Dynamics CRM Performance and Securing Data with Microsoft SQL Server 2008</title><content type='html'>&lt;p&gt;Microsoft SQL Server® 2008 contains a variety of features that, when implemented properly, can improve the performance of a Microsoft Dynamics® CRM 4.0 implementation and secure the data within that deployment. These Microsoft SQL Server 2008 features include: - Compression - Sparse Columns - Transparent Data Encryption - Backup Compression The MS CRM E2 team, working in conjunction with the Microsoft SQL Server team, recently completed a project that was designed to: 1. Evaluate the new scenarios that these Microsoft SQL Server 2008 features expose 2. Measure the performance impact of implementing these features, both singly and in selected combinations This paper provides an overview of these Microsoft SQL Server 2008 features, together with benchmark results and recommendations for implementation.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=b5bb47a4-5ece-4a2a-a9b5-5435264f627d&amp;amp;DisplayLang=en" target="_blank"&gt;Click here&lt;/a&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/702659527316624506-8381561987937533937?l=billoncrmtech.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://billoncrmtech.blogspot.com/feeds/8381561987937533937/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=702659527316624506&amp;postID=8381561987937533937' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/702659527316624506/posts/default/8381561987937533937'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/702659527316624506/posts/default/8381561987937533937'/><link rel='alternate' type='text/html' href='http://billoncrmtech.blogspot.com/2009/10/improving-microsoft-dynamics-crm.html' title='Improving Microsoft Dynamics CRM Performance and Securing Data with Microsoft SQL Server 2008'/><author><name>Bill Owens</name><uri>http://www.blogger.com/profile/17898790776516318212</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_WyzF5zDnkqY/SavOqTyUHgI/AAAAAAAAABs/Fuc1b2uESVY/S220/me.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-702659527316624506.post-9019666538384196194</id><published>2009-10-30T20:54:00.001-04:00</published><updated>2009-10-30T20:54:17.996-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='C#'/><category scheme='http://www.blogger.com/atom/ns#' term='CRM 4.0'/><category scheme='http://www.blogger.com/atom/ns#' term='coding'/><title type='text'>Create Activities using the Dynamic Entity Way</title><content type='html'>&lt;h4&gt;&lt;a href="http://msdynamicscrm-e.blogspot.com/2008/12/create-activities-using-dynamic-entity.html" target="_blank"&gt;Friday, December 19, 2008 Darren's CRM Blog&lt;/a&gt;&lt;/h4&gt;  &lt;hr /&gt;  &lt;p&gt;I haven't touch CRM SDK for a while since I am working on another project not directly related to CRM. One of my old client required us to populate CRM with some more training data so they can use it for their training. So I have to modify the training processor that my teammates wrote to add activities to CRM. It appears to me that everything in the training processor have used Dynamic Entity for create, update, and delete.&lt;/p&gt;  &lt;p&gt;To create an activities using dynamic entity is pretty straight forward, however I got stuck when I have to deal with the sender and recipient fields on a phone call, email, appointment and fax activity. Sender and Recipient field are ActivityParty type, I have done some research online and I was not able to find a way to associate the two fields to an activity using the dynamic approach. After going through the SDK and I was able to figure it out. I would like to share it since you might have to do the same in your next project.&lt;/p&gt;  &lt;p&gt;Method 1: Not using Dynamic Entity&lt;/p&gt;  &lt;pre&gt;activityparty actParty = new activityparty();&lt;br /&gt;actParty.partyid = new Lookup();&lt;br /&gt;actParty.partyid.Value = new Guid(&amp;quot;ENTER CONTACT GUID&amp;quot;);&lt;br /&gt;actParty.partyid.type = &amp;quot;contact&amp;quot;;&lt;br /&gt;&lt;br /&gt;activityparty actParty2 = new activityparty();&lt;br /&gt;actParty2.partyid = new Lookup();&lt;br /&gt;actParty2.partyid.Value = new Guid(&amp;quot;ENTER USER GUID&amp;quot;);&lt;br /&gt;actParty2.partyid.type = &amp;quot;systemuser&amp;quot;;&lt;br /&gt;&lt;br /&gt;phonecall call = new phonecall();&lt;br /&gt;call.from = new activityparty[] { actParty };&lt;br /&gt;call.to = new activityparty[] { actParty2 };&lt;br /&gt;call.description = &amp;quot;Test&amp;quot;;&lt;br /&gt;&lt;br /&gt;crmService.Create(call);&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;Method 2: Using Dynamic Entity&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;p&gt;Property subject = new StringProperty();&lt;br /&gt;((StringProperty)subject).Name = &amp;quot;subject&amp;quot;;&lt;br /&gt;((StringProperty)subject).Value = &amp;quot;Test&amp;quot;;&lt;br /&gt;&lt;br /&gt;Property description = new StringProperty();&lt;br /&gt;((StringProperty)description).Name = &amp;quot;description&amp;quot;;&lt;br /&gt;((StringProperty)description).Value = &amp;quot;Test&amp;quot;;&lt;br /&gt;&lt;br /&gt;// Create From:&lt;br /&gt;Property party1 = new LookupProperty();&lt;br /&gt;((LookupProperty)party1).Name = &amp;quot;partyid&amp;quot;;&lt;br /&gt;((LookupProperty)party1).Value = new Lookup();&lt;br /&gt;((LookupProperty)party1).Value.type = &amp;quot;contact&amp;quot;;&lt;br /&gt;((LookupProperty)party1).Value.Value = new Guid(&amp;quot;ENTER CONTACT GUID&amp;quot;);&lt;br /&gt;&lt;br /&gt;DynamicEntity actParty1 = new DynamicEntity();&lt;br /&gt;actParty1.Name = &amp;quot;activityparty&amp;quot;;&lt;br /&gt;actParty1.Properties = new Property[] { party1 };&lt;br /&gt;&lt;br /&gt;DynamicEntityArrayProperty from = new DynamicEntityArrayProperty();&lt;br /&gt;((DynamicEntityArrayProperty)from).Name = &amp;quot;from&amp;quot;;&lt;br /&gt;((DynamicEntityArrayProperty)from).Value = new DynamicEntity[] { actParty1 };&lt;br /&gt;&lt;br /&gt;// Create To:&lt;br /&gt;Property party2 = new LookupProperty();&lt;br /&gt;((LookupProperty)party2).Name = &amp;quot;partyid&amp;quot;;&lt;br /&gt;((LookupProperty)party2).Value = new Lookup();&lt;br /&gt;((LookupProperty)party2).Value.type = &amp;quot;systemuser&amp;quot;;&lt;br /&gt;((LookupProperty)party2).Value.Value = new Guid(&amp;quot;ENTER USER GUID&amp;quot;);&lt;br /&gt;&lt;br /&gt;DynamicEntity actParty2 = new DynamicEntity();&lt;br /&gt;actParty2.Name = &amp;quot;activityparty&amp;quot;;&lt;br /&gt;actParty2.Properties = new Property[] { party2 };&lt;br /&gt;&lt;br /&gt;DynamicEntityArrayProperty to = new DynamicEntityArrayProperty();&lt;br /&gt;((DynamicEntityArrayProperty)to).Name = &amp;quot;to&amp;quot;;&lt;br /&gt;((DynamicEntityArrayProperty)to).Value = new DynamicEntity[] { actParty2 };&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&amp;#160;&lt;/p&gt;&lt;p&gt;// Create Phone Call Activity:&lt;br /&gt;DynamicEntity activity = new DynamicEntity();&lt;br /&gt;activity.Name = EntityName.phonecall.ToString();&lt;br /&gt;activity.Properties = new Property[]{subject, description, from, to};&lt;br /&gt;&lt;br /&gt;TargetCreateDynamic target = new TargetCreateDynamic();&lt;br /&gt;target.Entity = activity;&lt;br /&gt;&lt;br /&gt;CreateRequest request = new CreateRequest();&lt;br /&gt;request.Target = target;&lt;br /&gt;&lt;br /&gt;CreateResponse response = (CreateResponse)crmService.Execute(request);&lt;/p&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;That's it! Hope this will help you in your next project! :)&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/702659527316624506-9019666538384196194?l=billoncrmtech.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://billoncrmtech.blogspot.com/feeds/9019666538384196194/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=702659527316624506&amp;postID=9019666538384196194' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/702659527316624506/posts/default/9019666538384196194'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/702659527316624506/posts/default/9019666538384196194'/><link rel='alternate' type='text/html' href='http://billoncrmtech.blogspot.com/2009/10/create-activities-using-dynamic-entity.html' title='Create Activities using the Dynamic Entity Way'/><author><name>Bill Owens</name><uri>http://www.blogger.com/profile/17898790776516318212</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_WyzF5zDnkqY/SavOqTyUHgI/AAAAAAAAABs/Fuc1b2uESVY/S220/me.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-702659527316624506.post-8889035203123555864</id><published>2009-10-30T20:52:00.001-04:00</published><updated>2009-10-30T20:52:01.307-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='CRM 4.0'/><title type='text'>CRM 4.0 List Web Part Available!</title><content type='html'>&lt;p&gt;CRM 4.0 List Web Part is available to download today. The list web part supports Multi-tenancy, IFD, 64bit and many more new enhancements comparing to the previous release.&lt;/p&gt;  &lt;p&gt;System Requirement:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Windows Server 2003 or Windows Server 2008 &lt;/li&gt;    &lt;li&gt;Microsoft Dynamics® CRM 4.0 &lt;/li&gt;    &lt;li&gt;Microsoft Windows® SharePoint® Services 3.0 SP1 &lt;/li&gt;    &lt;li&gt;Microsoft® Office SharePoint® Server (MOSS) 2007 SP1 &lt;/li&gt;    &lt;li&gt;Microsoft® Internet Explorer 6 with SP1 or later versions &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;To download the list web part, click on the link below.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=3b6eb884-ec15-4288-a2a3-d0b47e057458&amp;amp;DisplayLang=en"&gt;http://www.microsoft.com/downloads/details.aspx?FamilyID=3b6eb884-ec15-4288-a2a3-d0b47e057458&amp;amp;DisplayLang=en&lt;/a&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/702659527316624506-8889035203123555864?l=billoncrmtech.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://billoncrmtech.blogspot.com/feeds/8889035203123555864/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=702659527316624506&amp;postID=8889035203123555864' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/702659527316624506/posts/default/8889035203123555864'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/702659527316624506/posts/default/8889035203123555864'/><link rel='alternate' type='text/html' href='http://billoncrmtech.blogspot.com/2009/10/crm-40-list-web-part-available.html' title='CRM 4.0 List Web Part Available!'/><author><name>Bill Owens</name><uri>http://www.blogger.com/profile/17898790776516318212</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_WyzF5zDnkqY/SavOqTyUHgI/AAAAAAAAABs/Fuc1b2uESVY/S220/me.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-702659527316624506.post-7671420438198428384</id><published>2009-10-30T20:51:00.001-04:00</published><updated>2009-10-30T20:51:09.071-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='C#'/><category scheme='http://www.blogger.com/atom/ns#' term='SDK'/><category scheme='http://www.blogger.com/atom/ns#' term='CRM 4.0'/><category scheme='http://www.blogger.com/atom/ns#' term='coding'/><title type='text'>Close Opportunity via SDK</title><content type='html'>&lt;h5&gt;&lt;a href="http://msdynamicscrm-e.blogspot.com/2008/12/close-opportunity-via-sdk.html" target="_blank"&gt;Posted by Darren Liu at 11:19 AM&lt;/a&gt;&lt;/h5&gt;  &lt;hr /&gt;  &lt;p&gt;To close a CRM opportunity is different comparing to other CRM entities. If you want to close an opportunity, you need to use the WinOpportunityRequest and LostOpportunityRequest in the CRM SDK instead of the SetState requests. The code snippet below simply shows you how to set an opportunity to Win status via the CRM SDK.&lt;/p&gt;  &lt;pre&gt;opportunityclose close = new opportunityclose();&lt;br /&gt;close.opportunityid = new Lookup();&lt;br /&gt;close.opportunityid.Value = targetOppId;&lt;br /&gt;&lt;br /&gt;WinOpportunityRequest request = new WinOpportunityRequest();&lt;br /&gt;request.OpportunityClose = close;&lt;br /&gt;// Update the status code according to your environment&lt;br /&gt;request.Status = 1;&lt;br /&gt;&lt;br /&gt;crmService.Execute(request);&lt;/pre&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/702659527316624506-7671420438198428384?l=billoncrmtech.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://billoncrmtech.blogspot.com/feeds/7671420438198428384/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=702659527316624506&amp;postID=7671420438198428384' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/702659527316624506/posts/default/7671420438198428384'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/702659527316624506/posts/default/7671420438198428384'/><link rel='alternate' type='text/html' href='http://billoncrmtech.blogspot.com/2009/10/close-opportunity-via-sdk.html' title='Close Opportunity via SDK'/><author><name>Bill Owens</name><uri>http://www.blogger.com/profile/17898790776516318212</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_WyzF5zDnkqY/SavOqTyUHgI/AAAAAAAAABs/Fuc1b2uESVY/S220/me.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-702659527316624506.post-6651870536357920851</id><published>2009-10-30T20:47:00.001-04:00</published><updated>2009-10-30T20:48:36.438-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Tips and Tricks'/><category scheme='http://www.blogger.com/atom/ns#' term='C#'/><category scheme='http://www.blogger.com/atom/ns#' term='CRM 4.0'/><title type='text'>Example Of Deactivating An Entity</title><content type='html'>&lt;h3&gt;&lt;a href="http://www.crowehorwath.com/cs/blogs/crm/archive/2009/03/06/example-of-deactivating-an-entity.aspx" target="_blank"&gt;by Danny Varghese 03.06.09&lt;/a&gt; &lt;/h3&gt;  &lt;p&gt;One of the least published example of CRM code is deactivating an entity, probably because it's not used as often as creating, updating or retrieving entities. Below is an example I've used on several occasions to deactivate an entity:&lt;/p&gt;  &lt;div id="codeSnippetWrapper"&gt;   &lt;div style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px" id="codeSnippet"&gt;     &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum1"&gt;   1:&lt;/span&gt;&amp;#160; &lt;/pre&gt;&lt;br /&gt;&lt;!--CRLF--&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum2"&gt;   2:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff"&gt;void&lt;/span&gt; DeactivateEntity(Guid entityId)&lt;/pre&gt;&lt;br /&gt;&lt;!--CRLF--&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum3"&gt;   3:&lt;/span&gt; {&lt;/pre&gt;&lt;br /&gt;&lt;!--CRLF--&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum4"&gt;   4:&lt;/span&gt; &lt;span style="color: #008000"&gt;//variable initialization&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;&lt;!--CRLF--&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum5"&gt;   5:&lt;/span&gt; SetStateDynamicEntityRequest deactivateReq = &lt;span style="color: #0000ff"&gt;new&lt;/span&gt; &lt;/pre&gt;&lt;br /&gt;&lt;!--CRLF--&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum6"&gt;   6:&lt;/span&gt; SetStateDynamicEntityRequest();&lt;/pre&gt;&lt;br /&gt;&lt;!--CRLF--&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum7"&gt;   7:&lt;/span&gt; &lt;span style="color: #008000"&gt;//deactivate the cloned assignment&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;&lt;!--CRLF--&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum8"&gt;   8:&lt;/span&gt; deactivateReq = &lt;span style="color: #0000ff"&gt;new&lt;/span&gt; SetStateDynamicEntityRequest();&lt;/pre&gt;&lt;br /&gt;&lt;!--CRLF--&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum9"&gt;   9:&lt;/span&gt; deactivateReq.State = &lt;span style="color: #006080"&gt;&amp;quot;Inactive&amp;quot;&lt;/span&gt;;&lt;/pre&gt;&lt;br /&gt;&lt;!--CRLF--&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum10"&gt;  10:&lt;/span&gt; deactivateReq.Status = 2;&lt;/pre&gt;&lt;br /&gt;&lt;!--CRLF--&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum11"&gt;  11:&lt;/span&gt; deactivateReq.Entity = &lt;span style="color: #0000ff"&gt;new&lt;/span&gt; Moniker();&lt;/pre&gt;&lt;br /&gt;&lt;!--CRLF--&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum12"&gt;  12:&lt;/span&gt; deactivateReq.Entity.Name = &amp;lt;entity name&amp;gt;&lt;/pre&gt;&lt;br /&gt;&lt;!--CRLF--&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum13"&gt;  13:&lt;/span&gt; deactivateReq.Entity.Id = entityId;&lt;/pre&gt;&lt;br /&gt;&lt;!--CRLF--&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum14"&gt;  14:&lt;/span&gt; &lt;span style="color: #008000"&gt;//execute the deactivation request&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;&lt;!--CRLF--&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum15"&gt;  15:&lt;/span&gt; service.Execute(deactivateReq);&lt;/pre&gt;&lt;br /&gt;&lt;!--CRLF--&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum16"&gt;  16:&lt;/span&gt; }&lt;/pre&gt;&lt;br /&gt;&lt;!--CRLF--&gt;&lt;/div&gt;&lt;br /&gt;&lt;/div&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/702659527316624506-6651870536357920851?l=billoncrmtech.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://billoncrmtech.blogspot.com/feeds/6651870536357920851/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=702659527316624506&amp;postID=6651870536357920851' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/702659527316624506/posts/default/6651870536357920851'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/702659527316624506/posts/default/6651870536357920851'/><link rel='alternate' type='text/html' href='http://billoncrmtech.blogspot.com/2009/10/example-of-deactivating-entity.html' title='Example Of Deactivating An Entity'/><author><name>Bill Owens</name><uri>http://www.blogger.com/profile/17898790776516318212</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_WyzF5zDnkqY/SavOqTyUHgI/AAAAAAAAABs/Fuc1b2uESVY/S220/me.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-702659527316624506.post-2155647462839881962</id><published>2009-10-30T20:45:00.001-04:00</published><updated>2009-10-30T20:45:38.977-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Plug-ins'/><category scheme='http://www.blogger.com/atom/ns#' term='SQL 2005'/><category scheme='http://www.blogger.com/atom/ns#' term='SQL Integration Services'/><category scheme='http://www.blogger.com/atom/ns#' term='Tips and Tricks'/><category scheme='http://www.blogger.com/atom/ns#' term='Test Environment'/><category scheme='http://www.blogger.com/atom/ns#' term='SQL 2008'/><category scheme='http://www.blogger.com/atom/ns#' term='C#'/><category scheme='http://www.blogger.com/atom/ns#' term='CRM 4.0'/><category scheme='http://www.blogger.com/atom/ns#' term='workflow'/><title type='text'>Debugging CRM Plug-ins, Stored Procedures &amp; Custom Workflow Activities</title><content type='html'>&lt;h3&gt;&lt;a href="http://www.crowehorwath.com/cs/blogs/crm/archive/2009/02/24/debugging-crm-plug-ins-stored-procedures-amp-custom-workflow-activities.aspx" target="_blank"&gt;by Danny Varghese 02.24.09&lt;/a&gt; &lt;/h3&gt;  &lt;p&gt;Whether it's developing CRM plug-ins, custom workflow activities, or writing stored procedures against the CRM database, the most useful tool I've used is the Microsoft Visual Studio Debugger. The debugger allows developers to step through the code for the above mentioned scenarios and has saved me hours!&lt;/p&gt;  &lt;p&gt;Microsoft has phenomenal documentation on how to setup remote debugging:&lt;/p&gt;  &lt;p&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&gt;The biggest issues I've had trying to setup the debugger has always been with permissions. I would recommend paying especially close attention to this section. 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&gt;Once you've setup Visual Studio debugger, you can attach the following processes for the following CRM components:&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;For plug-ins, attach the debugger to the w3wp.exe process.&lt;/li&gt;    &lt;li&gt;For custom workflow activities, attach the debugger to MSCRMAsyncService.exe&lt;/li&gt;    &lt;li&gt;For stored procedures, attach the debugger to sqlserver.exe&lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;Once the debugger has been attached, you must set a breakpoint in the code (either the .NET or T-SQL code). After the breakpoint is set, to test, do the following:&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;For plug-ins, login to CRM and execute actions that will trigger the plug-in, such as create/update/assign a record.&lt;/li&gt;    &lt;li&gt;For custom workflow activities, login to CRM and perform actions that will trigger the workflow. With this, being that it's an asynchronous service, you'll have to wait until that service runs, and then Visual Studio will let you step through the code.&lt;/li&gt;    &lt;li&gt;For the stored procedure, just execute the stored procedure in Visual Studio and it will go right to the breakpoint.&lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;I hope this post will help CRM developers save time and effort. I use the debugger every time I develop now to test and it's saved me tremendous amount of maintenance time and effort after the code has been deployed. Happy debugging!&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/702659527316624506-2155647462839881962?l=billoncrmtech.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://billoncrmtech.blogspot.com/feeds/2155647462839881962/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=702659527316624506&amp;postID=2155647462839881962' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/702659527316624506/posts/default/2155647462839881962'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/702659527316624506/posts/default/2155647462839881962'/><link rel='alternate' type='text/html' href='http://billoncrmtech.blogspot.com/2009/10/debugging-crm-plug-ins-stored.html' title='Debugging CRM Plug-ins, Stored Procedures &amp;amp; Custom Workflow Activities'/><author><name>Bill Owens</name><uri>http://www.blogger.com/profile/17898790776516318212</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_WyzF5zDnkqY/SavOqTyUHgI/AAAAAAAAABs/Fuc1b2uESVY/S220/me.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-702659527316624506.post-6921654887453390640</id><published>2009-10-30T20:42:00.001-04:00</published><updated>2009-10-30T20:42:55.076-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Plug-ins'/><category scheme='http://www.blogger.com/atom/ns#' term='CRM 4.0'/><title type='text'>CRM 4.0 Plug-in Registration Tool Walkthrough</title><content type='html'>&lt;h3&gt;&lt;a href="http://www.crowehorwath.com/cs/blogs/crm/archive/2009/02/21/crm-4-0-plug-in-registration-tool-walkthrough.aspx" target="_blank"&gt;by Danny Varghese 02.21.09&lt;/a&gt; &lt;/h3&gt;  &lt;p&gt;The CRM 4.0 Plug-in registration tool is Microsoft'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. In this article, I'd like to take a step by step walkthrough of the tool including any interesting facts or issues I've run into during this process. Those will highlighted in the &amp;quot;NOTE&amp;quot; section.&lt;/p&gt;  &lt;p&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. 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;/p&gt;  &lt;p&gt;Building The Plug-in Registration Tool&lt;/p&gt;  &lt;p&gt;Either way, the download will contain Visual Studio project files that will need to be built. 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;/p&gt;  &lt;p&gt;**NOTE: The CRM SDK provides great information on what each service provides for the user:&lt;/p&gt;  &lt;p&gt;The CRM Web service 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&gt;The Discovery Web service 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&gt;The Metadata Web service provides methods to read and write the metadata for an organization. This includes the definitions for entities, attributes, and relationships.**&lt;/p&gt;  &lt;p&gt;**NOTE: If you don't place the assembly files mentioned in step (8) of Mitch'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;/p&gt;  &lt;p&gt;Using The Plug-in Registration Tool&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;You can launch the tool by either running the executable built from the project mentioned in the steps above, or if you've configured Visual Studio with a shortcut, you can launch it from that menu.&lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;&lt;img alt="" align="middle" src="http://crowechizek.com/cs/blogs/crm/dvarghese/pluginRegister/Screenshot1.jpg" width="262" height="381" /&gt;&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;Once the screen is loaded, click on Create New Connection. Enter a simple label for the connection, the server in which CRM is installed on, port, domain and user name.&lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;&lt;img alt="" align="middle" src="http://crowechizek.com/cs/blogs/crm/dvarghese/pluginRegister/Screenshot2.jpg" width="894" height="694" /&gt;&lt;/p&gt;  &lt;p&gt;**NOTE: There are security restrictions on the user that can register plug-ins. According to the SDK, the user account registering the plug-ins must exist in the Deployment Administrators group or must be a System Administrator. 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;/p&gt;  &lt;p&gt;**NOTE: If you don't enter a username and password, it will use the windows default credentials you used to login.**&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;Click on Connect. Once connected, you will see a new screen with various menu options. Let's dive deeper into each of these options.&lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;&lt;img alt="" align="middle" src="http://crowechizek.com/cs/blogs/crm/dvarghese/pluginRegister/Screenshot3.jpg" width="494" height="26" /&gt;&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;Register     &lt;ol&gt;       &lt;li&gt;Register New Assembly - you can register a new assembly that contains the plug-in execution code.&lt;/li&gt;        &lt;li&gt;Register New Step - allows you to configure the event that triggers the execution of the code. For example, this is where you can configure to fire a specific code after/before a record is created, updated, etc. This is equivalent to specifying a &amp;quot;PostUpdate,&amp;quot; &amp;quot;PostCreate,&amp;quot; in an xml configuration file for CRM 3.0 callouts.&lt;/li&gt;        &lt;li&gt;Register New Image - you can register an xml image of an entity. This can be used to find out what the values of a record is before and/or after the record is created, updated, etc. You can also specify which attributes of that record you want to pass into the execution context.&lt;/li&gt;     &lt;/ol&gt;   &lt;/li&gt; &lt;/ol&gt;  &lt;ol&gt;   &lt;li&gt;Import/Export     &lt;ol&gt;       &lt;li&gt;Export Solution Xml - allows a user to export an xml file that contains the assembly names, steps and/or images registered previously. This allows for configuration of the plug-ins to be setup once and then migrated to other environments.&lt;/li&gt;        &lt;li&gt;Import Solution Xml - allows user to import the xml file mentioned above in (3bi).&lt;/li&gt;     &lt;/ol&gt;   &lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;NOTE: 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&gt;   &lt;li&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;/li&gt;    &lt;li&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;/li&gt;    &lt;li&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;/li&gt;    &lt;li&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;/li&gt; &lt;/ul&gt;  &lt;p&gt;This was referenced from: &lt;/p&gt;  &lt;p&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;/p&gt;  &lt;ol&gt;   &lt;li&gt;View     &lt;ol&gt;       &lt;li&gt;Display By Assembly - this is the default view, showing all registered plug-ins by assembly name.&lt;/li&gt;        &lt;li&gt;Display By Entity - shows all registered plug-ins filtered by the entities they're registered for.&lt;/li&gt;        &lt;li&gt;Display By Message - organizes the plug-ins registered by messages or events such as Create, Update, etc.&lt;/li&gt;     &lt;/ol&gt;   &lt;/li&gt; &lt;/ol&gt;  &lt;ol&gt;   &lt;li&gt;Unregister, Refresh &amp;amp; Search (all self-explanatory)&lt;/li&gt; &lt;/ol&gt;  &lt;ol&gt;   &lt;li&gt;Click on Register --&amp;gt; Register New Assembly --&amp;gt; Complete the steps below and press Register Selected Plugins --&amp;gt; Click on &lt;strong&gt;Close&lt;/strong&gt;&lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;&lt;img alt="" align="middle" src="http://crowechizek.com/cs/blogs/crm/dvarghese/pluginRegister/Screenshot4.jpg" width="434" height="481" /&gt;&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;Step 1- Allows you to browse to a location and select the assembly you want to upload.&lt;/li&gt;    &lt;li&gt;Step 2 - This is not shown on the screenshot, but you now have to click Load Assembly&lt;/li&gt;    &lt;li&gt;Step 3 - Select where the assembly should be stored for execution     &lt;ol&gt;       &lt;li&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. Advantage #2 is now the server\bin\assembly folder will not become cluttered if you have numerous plug-ins. Finally, this makes migration from different environments much easier because there are less files to move. &lt;/li&gt;     &lt;/ol&gt;   &lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;**NOTE: 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;/p&gt;  &lt;ol&gt;   &lt;li&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. For debugging purposes, the symbols file (.pdb) must also be in this directory. If you store files here, an &amp;quot;iisreset&amp;quot; will be needed anytime any changes are made to the assembly.&lt;/li&gt;    &lt;li&gt;GAC - (Global Assembly Cache), for more information on this, please see my other post: &lt;a href="http://www.crowehorwath.com/cs/blogs/crm/archive/2008/03/05/gac-it-developing-portable-code-for-microsoft-crm.aspx"&gt;http://www.crowehorwath.com/cs/blogs/crm/archive/2008/03/05/gac-it-developing-portable-code-for-microsoft-crm.aspx&lt;/a&gt;&lt;/li&gt; &lt;/ol&gt;  &lt;ol&gt;   &lt;li&gt;Once you've registered your plug-in, click on Register --&amp;gt; fill in the steps outline below --&amp;gt; &lt;strong&gt;Register New Step&lt;/strong&gt;&lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;&lt;img alt="" align="middle" src="http://crowechizek.com/cs/blogs/crm/dvarghese/pluginRegister/Screenshot5.jpg" width="717" height="388" /&gt;&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;Message - 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. Now you can configure this at this step.&lt;/li&gt;    &lt;li&gt;Primary Entity - The entity that will trigger the plug-in&lt;/li&gt;    &lt;li&gt;Secondary Entity - 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;/li&gt;    &lt;li&gt;Filtering Attributes - This allows you to filter which attributes of the entity will allow the triggering of the plug-in. 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. By default, all attributes are selected.&lt;/li&gt;    &lt;li&gt;Plugin - Select the assembly, and class you wish to associate to this step.&lt;/li&gt;    &lt;li&gt;Run In Users Context - By default it's set to calling user, which means the plug-in will be fired with the current users credentials. This is to control security so a user w/o the proper permissions won't have a plug-in fire to create/update/etc. any records. You can specify other users to run the context in. The list will pre-populate with all account names from the CRM installation.&lt;/li&gt;    &lt;li&gt;Execution order - Sometimes asynchronous operations on dependant on others asynchronous operations to complete. The execution order allows you to specify when this plug-in is supposed to fire.&lt;/li&gt;    &lt;li&gt;Event Sate - Specifies if the plug-in should be fired before or after an event. In 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;/li&gt;    &lt;li&gt;Execution Mode - A new feature which allows the plug-in to execute asynchronously or synchronously.&lt;/li&gt;    &lt;li&gt;Step Deployment - If you want the plug-in to be deployed (not registered) on the server and/or offline (Outlook client).&lt;/li&gt;    &lt;li&gt;Triggering Pipeline - For example, if you have an account with activities and you re-assign that account. 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. To trigger the plug-in in that case you have to set the pipeline to &amp;quot;Child Pipeline&amp;quot;&lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;**NOTE: 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;/p&gt;  &lt;ol&gt;   &lt;li&gt;Unsecure Configuration - if you don'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. For example, the CRM server url.&lt;/li&gt;    &lt;li&gt;Secure Configuration - same concept as above, but you could place more secure configurations like user credentials.&lt;/li&gt; &lt;/ol&gt;  &lt;ol&gt;   &lt;li&gt;(Optional) Click on Register New Image. I say this step is optional because you may not need this step at all times. This is equivalent to the pre and post image entity xml's in CRM 3.0. You can register an xml image of what the entity attributes were before and after an event. For example, if you'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. Furthermore, on this image, you can select which attributes you want the xml to contain. This allows users to help performance (all be it, just a tiny bit) but cutting down unnecessary fields.&lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;**NOTE: You can not register a pre-create image since there were no attributes for a specific record because it hasn't been created yet. You will get an error if you try this.**&lt;/p&gt;  &lt;p&gt;This concludes my in-depth look at the plug-in registration tool. All the notes I've added have been experiences I've had registering plug-ins. I hope this was informative and helps save you some time developing! Happy coding&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/702659527316624506-6921654887453390640?l=billoncrmtech.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://billoncrmtech.blogspot.com/feeds/6921654887453390640/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=702659527316624506&amp;postID=6921654887453390640' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/702659527316624506/posts/default/6921654887453390640'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/702659527316624506/posts/default/6921654887453390640'/><link rel='alternate' type='text/html' href='http://billoncrmtech.blogspot.com/2009/10/crm-40-plug-in-registration-tool.html' title='CRM 4.0 Plug-in Registration Tool Walkthrough'/><author><name>Bill Owens</name><uri>http://www.blogger.com/profile/17898790776516318212</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_WyzF5zDnkqY/SavOqTyUHgI/AAAAAAAAABs/Fuc1b2uESVY/S220/me.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-702659527316624506.post-2036604514080348964</id><published>2009-10-30T20:41:00.001-04:00</published><updated>2009-10-30T20:41:24.895-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='IFD'/><category scheme='http://www.blogger.com/atom/ns#' term='CRM 4.0'/><title type='text'>Publishing Microsoft CRM 4.0 through ISA Server 2006</title><content type='html'>&lt;h3&gt;&lt;a href="http://www.crowehorwath.com/cs/blogs/crm/archive/2009/02/21/publishing-microsoft-crm-4-0-through-isa-server-2006.aspx" target="_blank"&gt;by Danny Varghese 02.21.09&lt;/a&gt; &lt;/h3&gt;  &lt;p&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&gt;The article is broken up into the following sections:&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;Adjusting CRM Server For External Publishing     &lt;ol&gt;       &lt;li&gt;General Considerations&lt;/li&gt;        &lt;li&gt;IFD Configuraiton&lt;/li&gt;     &lt;/ol&gt;   &lt;/li&gt; &lt;/ol&gt;  &lt;ol&gt;   &lt;li&gt;Configuring ISA Server 2006 Web publishing rule&lt;/li&gt;    &lt;li&gt;Troubleshooting Tips&lt;/li&gt; &lt;/ol&gt;  &lt;p&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;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/702659527316624506-2036604514080348964?l=billoncrmtech.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://billoncrmtech.blogspot.com/feeds/2036604514080348964/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=702659527316624506&amp;postID=2036604514080348964' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/702659527316624506/posts/default/2036604514080348964'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/702659527316624506/posts/default/2036604514080348964'/><link rel='alternate' type='text/html' href='http://billoncrmtech.blogspot.com/2009/10/publishing-microsoft-crm-40-through-isa.html' title='Publishing Microsoft CRM 4.0 through ISA Server 2006'/><author><name>Bill Owens</name><uri>http://www.blogger.com/profile/17898790776516318212</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_WyzF5zDnkqY/SavOqTyUHgI/AAAAAAAAABs/Fuc1b2uESVY/S220/me.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-702659527316624506.post-2302812436657026705</id><published>2009-10-30T20:40:00.001-04:00</published><updated>2009-10-30T20:40:09.678-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Reports'/><category scheme='http://www.blogger.com/atom/ns#' term='CRM 4.0'/><title type='text'>Rules To Better Microsoft CRM &amp; SSRS</title><content type='html'>&lt;h3&gt;&lt;a href="http://www.crowehorwath.com/cs/blogs/crm/archive/2009/02/21/rules-to-better-microsoft-crm-amp-ssrs.aspx" target="_blank"&gt;by Danny Varghese 02.21.09&lt;/a&gt;&lt;/h3&gt;  &lt;p&gt;Below are some very useful links on standards for Microsoft CRM and SQL Server Reporting Services:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.ssw.com.au/ssw/Standards/Rules/RulestoBetterMicrosoftCRM.aspx"&gt;http://www.ssw.com.au/ssw/Standards/Rules/RulestoBetterMicrosoftCRM.aspx&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.ssw.com.au/ssw/Standards/Rules/RulesToBetterSQLReportingServices.aspx"&gt;http://www.ssw.com.au/ssw/Standards/Rules/RulesToBetterSQLReportingServices.aspx&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Enjoy! &lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/702659527316624506-2302812436657026705?l=billoncrmtech.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://billoncrmtech.blogspot.com/feeds/2302812436657026705/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=702659527316624506&amp;postID=2302812436657026705' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/702659527316624506/posts/default/2302812436657026705'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/702659527316624506/posts/default/2302812436657026705'/><link rel='alternate' type='text/html' href='http://billoncrmtech.blogspot.com/2009/10/rules-to-better-microsoft-crm-ssrs.html' title='Rules To Better Microsoft CRM &amp;amp; SSRS'/><author><name>Bill Owens</name><uri>http://www.blogger.com/profile/17898790776516318212</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_WyzF5zDnkqY/SavOqTyUHgI/AAAAAAAAABs/Fuc1b2uESVY/S220/me.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-702659527316624506.post-1332281937785631603</id><published>2009-10-30T20:37:00.001-04:00</published><updated>2009-10-30T20:39:01.357-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='C#'/><category scheme='http://www.blogger.com/atom/ns#' term='CRM 4.0'/><category scheme='http://www.blogger.com/atom/ns#' term='coding'/><title type='text'>Example of Dynamic Entity Retrieval</title><content type='html'>&lt;h3&gt;&lt;a href="http://www.crowehorwath.com/cs/blogs/crm/archive/2009/01/31/example-of-dynamic-entity-retrieval.aspx" target="_blank"&gt;by Danny Varghese 01.31.09&lt;/a&gt; &lt;/h3&gt; &lt;hr&gt;  &lt;p&gt;There have been numerous requests on other blogs about sample code to on how to retrieve entities in CRM. One way is to use the CRM web service to retrieve business entities, however by doing so, you're only limited to out-of-the-box entities with system attributes. To retrieve anything more "dynamic," you'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&gt;Below is a code example of how to retrieve a record with an id using dynamic entity retrieve: &lt;/p&gt; &lt;div id="codeSnippetWrapper"&gt; &lt;div id="codeSnippet" class="csharpcode"&gt;&lt;pre class="alt"&gt;&amp;nbsp;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;br /&gt;&lt;div id="codeSnippetWrapper"&gt;&lt;br /&gt;&lt;div id="codeSnippet" class="csharpcode"&gt;&lt;br /&gt;&lt;div id="codeSnippetWrapper"&gt;&lt;br /&gt;&lt;div id="codeSnippet" class="csharpcode"&gt;&lt;br /&gt;&lt;div id="codeSnippetWrapper"&gt;&lt;br /&gt;&lt;div style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px" id="codeSnippet"&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum1"&gt;   1:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;public&lt;/span&gt; DynamicEntity RetrieveEntity()&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum2"&gt;   2:&lt;/span&gt; {&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum3"&gt;   3:&lt;/span&gt; &lt;span style="color: #008000"&gt;//variable initialization&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum4"&gt;   4:&lt;/span&gt; TargetRetrieveDynamic target = &lt;span style="color: #0000ff"&gt;new&lt;/span&gt; TargetRetrieveDynamic();&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum5"&gt;   5:&lt;/span&gt; RetrieveRequest retrieveRequest = &lt;span style="color: #0000ff"&gt;new&lt;/span&gt; RetrieveRequest();&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum6"&gt;   6:&lt;/span&gt; RetrieveResponse retrieveResponse = &lt;span style="color: #0000ff"&gt;null&lt;/span&gt;;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum7"&gt;   7:&lt;/span&gt; DynamicEntity entity = &lt;span style="color: #0000ff"&gt;null&lt;/span&gt;;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum8"&gt;   8:&lt;/span&gt; target.EntityName = &amp;lt;name of entity here&amp;gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum9"&gt;   9:&lt;/span&gt; target.EntityId = &amp;lt;id of entity here&amp;gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum10"&gt;  10:&lt;/span&gt; &lt;span style="color: #008000"&gt;//initialize request parameters&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum11"&gt;  11:&lt;/span&gt; retrieveRequest.ColumnSet = &lt;span style="color: #0000ff"&gt;new&lt;/span&gt; AllColumns();&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum12"&gt;  12:&lt;/span&gt; retrieveRequest.ReturnDynamicEntities = &lt;span style="color: #0000ff"&gt;true&lt;/span&gt;;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum13"&gt;  13:&lt;/span&gt; retrieveRequest.Target = target;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum14"&gt;  14:&lt;/span&gt; &lt;span style="color: #008000"&gt;//build the response object&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum15"&gt;  15:&lt;/span&gt; retrieveResponse = &lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum16"&gt;  16:&lt;/span&gt; (RetrieveResponse)GetCrmService().Execute(retrieveRequest);&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum17"&gt;  17:&lt;/span&gt; &lt;span style="color: #008000"&gt;//retrieve the service order item from the response&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum18"&gt;  18:&lt;/span&gt; entity = (DynamicEntity)retrieveResponse.BusinessEntity;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum19"&gt;  19:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;return&lt;/span&gt; entity;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum20"&gt;  20:&lt;/span&gt; }&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;/div&gt;&lt;/div&gt;&lt;pre class="alteven"&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;/div&gt;&lt;/div&gt;&lt;!--CRLF--&gt;&lt;/div&gt;&lt;/div&gt;&lt;pre class="alt"&gt;&amp;nbsp;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;p&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. This is probably a more robust example encompassing many retrieval options: &lt;/p&gt;&lt;br /&gt;&lt;div id="codeSnippetWrapper"&gt;&lt;br /&gt;&lt;div style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px" id="codeSnippet"&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum1"&gt;   1:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum2"&gt;   2:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;private&lt;/span&gt; ArrayList RetrieveMultipleContacts(ICrmService crmService, Guid &lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum3"&gt;   3:&lt;/span&gt; parentAccountId) &lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum4"&gt;   4:&lt;/span&gt; { &lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum5"&gt;   5:&lt;/span&gt; &lt;span style="color: #008000"&gt;//variable initialization &lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum6"&gt;   6:&lt;/span&gt; ConditionExpression condition = &lt;span style="color: #0000ff"&gt;new&lt;/span&gt; ConditionBLOCKED EXPRESSION; &lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum7"&gt;   7:&lt;/span&gt; FilterExpression filter = &lt;span style="color: #0000ff"&gt;new&lt;/span&gt; FilterBLOCKED EXPRESSION; &lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum8"&gt;   8:&lt;/span&gt; QueryExpression query = &lt;span style="color: #0000ff"&gt;new&lt;/span&gt; QueryBLOCKED EXPRESSION; &lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum9"&gt;   9:&lt;/span&gt; RetrieveMultipleRequest request = &lt;span style="color: #0000ff"&gt;new&lt;/span&gt; RetrieveMultipleRequest(); &lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum10"&gt;  10:&lt;/span&gt; ColumnSet cols = &lt;span style="color: #0000ff"&gt;new&lt;/span&gt; ColumnSet(); &lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum11"&gt;  11:&lt;/span&gt; RetrieveMultipleResponse response = &lt;span style="color: #0000ff"&gt;null&lt;/span&gt;; &lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum12"&gt;  12:&lt;/span&gt; ArrayList contacts = &lt;span style="color: #0000ff"&gt;new&lt;/span&gt; ArrayList(); &lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum13"&gt;  13:&lt;/span&gt; &lt;span style="color: #008000"&gt;//Set the condition for retrieval &lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum14"&gt;  14:&lt;/span&gt; condition.AttributeName = &lt;span style="color: #006080"&gt;"parentcustomerid"&lt;/span&gt;; &lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum15"&gt;  15:&lt;/span&gt; condition.Operator = ConditionOperator.Equal; &lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum16"&gt;  16:&lt;/span&gt; condition.Values = &lt;span style="color: #0000ff"&gt;new&lt;/span&gt; &lt;span style="color: #0000ff"&gt;string&lt;/span&gt;[] { parentAccountId.ToString() }; &lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum17"&gt;  17:&lt;/span&gt; &lt;span style="color: #008000"&gt;//Set the properties of the filter. &lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum18"&gt;  18:&lt;/span&gt; filter.FilterOperator = LogicalOperator.And; &lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum19"&gt;  19:&lt;/span&gt; filter.AddCondition(condition); &lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum20"&gt;  20:&lt;/span&gt; &lt;span style="color: #008000"&gt;//Set the attributes needed to be returned. NOTE: The CRM &lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum21"&gt;  21:&lt;/span&gt; Sdk has an erroneous example &lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum22"&gt;  22:&lt;/span&gt; &lt;span style="color: #008000"&gt;//of how to set the attributes for retrieval. &lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum23"&gt;  23:&lt;/span&gt; cols.Attributes.Add(&lt;span style="color: #006080"&gt;"address1_line1"&lt;/span&gt;); &lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum24"&gt;  24:&lt;/span&gt; cols.Attributes.Add(&lt;span style="color: #006080"&gt;"address1_line2"&lt;/span&gt;); &lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum25"&gt;  25:&lt;/span&gt; cols.Attributes.Add(&lt;span style="color: #006080"&gt;"address1_line3"&lt;/span&gt;); &lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum26"&gt;  26:&lt;/span&gt; cols.Attributes.Add(&lt;span style="color: #006080"&gt;"address1_city"&lt;/span&gt;); &lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum27"&gt;  27:&lt;/span&gt; cols.Attributes.Add(&lt;span style="color: #006080"&gt;"address1_stateorprovince"&lt;/span&gt;); &lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum28"&gt;  28:&lt;/span&gt; cols.Attributes.Add(&lt;span style="color: #006080"&gt;"address1_postalcode"&lt;/span&gt;); &lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum29"&gt;  29:&lt;/span&gt; cols.Attributes.Add(&lt;span style="color: #006080"&gt;"address1_country"&lt;/span&gt;); &lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum30"&gt;  30:&lt;/span&gt; cols.Attributes.Add(&lt;span style="color: #006080"&gt;"telephone1"&lt;/span&gt;); &lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum31"&gt;  31:&lt;/span&gt; cols.Attributes.Add(&lt;span style="color: #006080"&gt;"fax"&lt;/span&gt;); &lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum32"&gt;  32:&lt;/span&gt; &lt;span style="color: #008000"&gt;//Set the properties of the QueryExpression object. &lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum33"&gt;  33:&lt;/span&gt; query.EntityName = EntityName.contact.ToString(); &lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum34"&gt;  34:&lt;/span&gt; query.ColumnSet = cols; &lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum35"&gt;  35:&lt;/span&gt; query.Criteria = filter; &lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum36"&gt;  36:&lt;/span&gt; &lt;span style="color: #008000"&gt;//Set the query for the request and set the flag to return &lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum37"&gt;  37:&lt;/span&gt; &lt;span style="color: #008000"&gt;//dynamic entities &lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum38"&gt;  38:&lt;/span&gt; request.Query = query; &lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum39"&gt;  39:&lt;/span&gt; &lt;span style="color: #008000"&gt;//retrieve the contacts &lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum40"&gt;  40:&lt;/span&gt; response = (RetrieveMultipleResponse)crmService.Execute(request); &lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum41"&gt;  41:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;foreach&lt;/span&gt; (BusinessEntity cont &lt;span style="color: #0000ff"&gt;in&lt;/span&gt; &lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum42"&gt;  42:&lt;/span&gt; response.BusinessEntityCollection.BusinessEntities) &lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum43"&gt;  43:&lt;/span&gt; { &lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum44"&gt;  44:&lt;/span&gt; contacts.Add(cont); &lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum45"&gt;  45:&lt;/span&gt; } &lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum46"&gt;  46:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;return&lt;/span&gt; contacts; &lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum47"&gt;  47:&lt;/span&gt; } &lt;/pre&gt;&lt;!--CRLF--&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;p&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;I hope these examples help someone, happy coding! &lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/702659527316624506-1332281937785631603?l=billoncrmtech.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://billoncrmtech.blogspot.com/feeds/1332281937785631603/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=702659527316624506&amp;postID=1332281937785631603' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/702659527316624506/posts/default/1332281937785631603'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/702659527316624506/posts/default/1332281937785631603'/><link rel='alternate' type='text/html' href='http://billoncrmtech.blogspot.com/2009/10/example-of-dynamic-entity-retrieval.html' title='Example of Dynamic Entity Retrieval'/><author><name>Bill Owens</name><uri>http://www.blogger.com/profile/17898790776516318212</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_WyzF5zDnkqY/SavOqTyUHgI/AAAAAAAAABs/Fuc1b2uESVY/S220/me.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-702659527316624506.post-1123898715533643516</id><published>2009-10-30T20:36:00.001-04:00</published><updated>2009-10-30T20:36:35.864-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='JavaScript'/><category scheme='http://www.blogger.com/atom/ns#' term='CRM 4.0'/><title type='text'>Adding A Filtered Lookup In CRM</title><content type='html'>&lt;h3&gt;&lt;a href="http://www.crowehorwath.com/cs/blogs/crm/archive/2009/02/03/adding-a-filtered-lookup-in-crm.aspx" target="_blank"&gt;by Danny Varghese 02.03.09&lt;/a&gt; &lt;/h3&gt;  &lt;p&gt;Another common question I see in blogs from users are is there a way to add filtered lookups? That is only allow users to &amp;quot;lookup&amp;quot; certain records that related to that particular one. Here's a real life example:&lt;/p&gt;  &lt;p&gt;Say you have an account that has a 1:N parental relationship with entity A. Now let's say there's another entity B that has N:1 referential relationships with both account, and entity A. 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. i.e.&lt;/p&gt;  &lt;p&gt;Parental Relationship&lt;/p&gt;  &lt;p&gt;Account --&amp;gt; Entity A&lt;/p&gt;  &lt;p&gt;Referential Relationship&lt;/p&gt;  &lt;p&gt;Entity B -- Account&lt;/p&gt;  &lt;p&gt;Entity B -- Entity A&lt;/p&gt;  &lt;p&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's that are related to the account you just chose. Here's the code to place on the form of Entity B:&lt;/p&gt;  &lt;p&gt;crmForm.all.&amp;lt;lookup field for entity A&amp;gt;.additionalparams = 'search=' + encodeURIComponent(crmForm.all.&amp;lt;lookup field for account&amp;gt;.DataValue[0].name);&lt;/p&gt;  &lt;p&gt;That's it! Simple, yet effective.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/702659527316624506-1123898715533643516?l=billoncrmtech.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://billoncrmtech.blogspot.com/feeds/1123898715533643516/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=702659527316624506&amp;postID=1123898715533643516' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/702659527316624506/posts/default/1123898715533643516'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/702659527316624506/posts/default/1123898715533643516'/><link rel='alternate' type='text/html' href='http://billoncrmtech.blogspot.com/2009/10/adding-filtered-lookup-in-crm.html' title='Adding A Filtered Lookup In CRM'/><author><name>Bill Owens</name><uri>http://www.blogger.com/profile/17898790776516318212</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_WyzF5zDnkqY/SavOqTyUHgI/AAAAAAAAABs/Fuc1b2uESVY/S220/me.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-702659527316624506.post-2580481356307966585</id><published>2009-02-27T16:30:00.001-05:00</published><updated>2009-02-27T16:30:38.427-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='tool'/><category scheme='http://www.blogger.com/atom/ns#' term='Plug-ins'/><category scheme='http://www.blogger.com/atom/ns#' term='Tips and Tricks'/><category scheme='http://www.blogger.com/atom/ns#' term='SDK'/><category scheme='http://www.blogger.com/atom/ns#' term='CRM 4.0'/><category scheme='http://www.blogger.com/atom/ns#' term='coding'/><title type='text'>Creating a Birthday Contact List</title><content type='html'>&lt;p&gt;&lt;em&gt;Today we welcome our guest blogger &lt;a href="http://www.crowechizek.com/Crowe/News/detail.cfm?id=105"&gt;CRM MVP Darren Liu&lt;/a&gt; from the &lt;/em&gt;&lt;a href="http://www.crowecrm.com/crowe/microsoft/CRM.cfm"&gt;&lt;em&gt;Crowe Horwath&lt;/em&gt;&lt;/a&gt;&lt;em&gt; company.&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;Have you ever been asked by someone to get a list of contacts having birthdays during a certain time period from CRM? If so what have you done to perform this task? Within the application, birthdays are tracked on Contact records as a single date (including year). This causes problems when searching for birthdays in a certain time period as the birth date is evaluated including the year. To illustrate, consider the following example: &lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&amp;#183; John Dole, 10/1/1980 &lt;/p&gt;    &lt;p&gt;&amp;#183; Adam Smith, 9/1/1970 &lt;/p&gt;    &lt;p&gt;&amp;#183; Mark Francis, 10/10/1960 &lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;Within CRM, searching for date is done by range. There is no easy way to identify from the above contacts all those having birthday in October as any range you choose will include the year. Wildcard functions on date fields are not a workable solution. &lt;/p&gt;  &lt;p&gt;There are several solutions to this problem including JavaScript to parse birthday on the onChange event, a custom report or a plug-in. The desired functionality is to be able to search by birth month, birth day, and/or birth year, allowing the user to quickly identify all birthdays in a certain time period. &lt;/p&gt;  &lt;p&gt;In this blog, I will show you how to use a pre plug-in to parse the birthday field into day, month and year. This way, the users will able to perform searches using Advanced Find. I have chosen the plug-in approach because it will help me parse the birthday field not only when the users update the birthday on the contact form but also when updating the birthday through the CRM web service for data imports and data integration. &lt;/p&gt;  &lt;p&gt;Implement the pre plug-in&lt;/p&gt;  &lt;p&gt;&lt;b&gt;1. Create New Attributes&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;Create three new attribute on the Contact entity form in CRM. After creating the new attributes, publish the Contact customization. &lt;/p&gt; &lt;form id="aspnetForm" name="aspnetForm" action="http://blogs.msdn.com/crm/archive/2009/02/27/creating-a-birthday-contact-list.aspx" method="post"&gt;   &lt;div id="wrapper"&gt;     &lt;div id="container"&gt;       &lt;div id="contentwrapper"&gt;         &lt;div id="content"&gt;           &lt;div id="content2"&gt;             &lt;div class="post"&gt;               &lt;div class="postview"&gt;                 &lt;p&gt;                   &lt;table cellspacing="0" cellpadding="0" border="1"&gt;&lt;tbody&gt;                       &lt;tr&gt;                         &lt;td valign="top" width="128"&gt;                           &lt;p&gt;Display Name&lt;/p&gt;                         &lt;/td&gt;                          &lt;td valign="top" width="128"&gt;                           &lt;p&gt;Schema Name&lt;/p&gt;                         &lt;/td&gt;                          &lt;td valign="top" width="128"&gt;                           &lt;p&gt;Type&lt;/p&gt;                         &lt;/td&gt;                          &lt;td valign="top" width="128"&gt;                           &lt;p&gt;Searchable&lt;/p&gt;                         &lt;/td&gt;                          &lt;td valign="top" width="128"&gt;                           &lt;p&gt;Values&lt;/p&gt;                         &lt;/td&gt;                       &lt;/tr&gt;                        &lt;tr&gt;                         &lt;td valign="top" width="128"&gt;                           &lt;p&gt;Birth Month&lt;/p&gt;                         &lt;/td&gt;                          &lt;td valign="top" width="128"&gt;                           &lt;p&gt;new_birthmonth&lt;/p&gt;                         &lt;/td&gt;                          &lt;td valign="top" width="128"&gt;                           &lt;p&gt;Picklist&lt;/p&gt;                         &lt;/td&gt;                          &lt;td valign="top" width="128"&gt;                           &lt;p&gt;Yes&lt;/p&gt;                         &lt;/td&gt;                          &lt;td valign="top" width="128"&gt;                           &lt;p&gt;Jan = 1, Feb = 2, Mar = 3, Apr = 4, May = 5, Jun = 6, Jul = 7, Aug = 8, Sept = 9, Oct = 10, Nov = 11, Dec = 12&lt;/p&gt;                         &lt;/td&gt;                       &lt;/tr&gt;                        &lt;tr&gt;                         &lt;td valign="top" width="128"&gt;                           &lt;p&gt;Birth Day&lt;/p&gt;                         &lt;/td&gt;                          &lt;td valign="top" width="128"&gt;                           &lt;p&gt;new_birthday&lt;/p&gt;                         &lt;/td&gt;                          &lt;td valign="top" width="128"&gt;                           &lt;p&gt;Int&lt;/p&gt;                         &lt;/td&gt;                          &lt;td valign="top" width="128"&gt;                           &lt;p&gt;Yes&lt;/p&gt;                         &lt;/td&gt;                          &lt;td valign="top" width="128"&gt;                           &lt;p&gt;Min Value = 1 &lt;/p&gt;                            &lt;p&gt;Max Value = 31&lt;/p&gt;                         &lt;/td&gt;                       &lt;/tr&gt;                        &lt;tr&gt;                         &lt;td valign="top" width="128"&gt;                           &lt;p&gt;Birth Year&lt;/p&gt;                         &lt;/td&gt;                          &lt;td valign="top" width="128"&gt;                           &lt;p&gt;new_birthyear&lt;/p&gt;                         &lt;/td&gt;                          &lt;td valign="top" width="128"&gt;                           &lt;p&gt;Int&lt;/p&gt;                         &lt;/td&gt;                          &lt;td valign="top" width="128"&gt;                           &lt;p&gt;Yes&lt;/p&gt;                         &lt;/td&gt;                          &lt;td valign="top" width="128"&gt;                           &lt;p&gt;Min Value = 1900 &lt;/p&gt;                            &lt;p&gt;Max Value = 9999&lt;/p&gt;                         &lt;/td&gt;                       &lt;/tr&gt;                     &lt;/tbody&gt;&lt;/table&gt;                 &lt;/p&gt;               &lt;/div&gt;               &lt;a href="http://blogs.msdn.com/blogfiles/crm/WindowsLiveWriter/7281dd88be79_801C/clip_image002_2.jpg"&gt;&lt;img title="clip_image002" height="390" alt="clip_image002" src="http://blogs.msdn.com/blogfiles/crm/WindowsLiveWriter/7281dd88be79_801C/clip_image002_thumb.jpg" width="499" border="0" /&gt;&lt;/a&gt;&lt;/div&gt;           &lt;/div&gt;         &lt;/div&gt;       &lt;/div&gt;     &lt;/div&gt;   &lt;/div&gt; &lt;/form&gt;  &lt;p&gt;&lt;b&gt;2. Create pre plug-in using Visual Studio&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;Create a plug-in project name &lt;b&gt;Crm.Plugin&lt;/b&gt;, copy and paste the following code to your Plug-in project. &lt;/p&gt;  &lt;div style="border-right: gray 1px solid; padding-right: 4px; border-top: gray 1px solid; padding-left: 4px; font-size: 8pt; padding-bottom: 4px; margin: 20px 0px 10px; overflow: auto; border-left: gray 1px solid; width: 97.5%; cursor: text; max-height: 200px; line-height: 12pt; padding-top: 4px; border-bottom: gray 1px solid; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; background-color: #f4f4f4"&gt;   &lt;div style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;     &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #0000ff"&gt;using&lt;/span&gt; System;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #0000ff"&gt;using&lt;/span&gt; System.Collections.Generic;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #0000ff"&gt;using&lt;/span&gt; System.Text;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #0000ff"&gt;using&lt;/span&gt; Microsoft.Crm.Sdk;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #0000ff"&gt;using&lt;/span&gt; Microsoft.Crm.SdkTypeProxy;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt; &lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #0000ff"&gt;namespace&lt;/span&gt; Crm.Plugin&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;{&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;  &lt;span style="color: #0000ff"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff"&gt;class&lt;/span&gt; MonthDayYearContactPlugin : IPlugin&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;  {&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;    &lt;span style="color: #0000ff"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff"&gt;void&lt;/span&gt; Execute(IPluginExecutionContext context)&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;    {&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;    DynamicEntity entity = &lt;span style="color: #0000ff"&gt;null&lt;/span&gt;;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt; &lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;    &lt;span style="color: #0000ff"&gt;if&lt;/span&gt; (context.InputParameters.Properties.Contains(ParameterName.Target) &amp;amp;&amp;amp;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;        context.InputParameters.Properties[ParameterName.Target] &lt;span style="color: #0000ff"&gt;is&lt;/span&gt; DynamicEntity)&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;    {&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;        entity = (DynamicEntity)context.InputParameters[ParameterName.Target];&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;        &lt;span style="color: #0000ff"&gt;if&lt;/span&gt; (entity.Name != EntityName.contact.ToString()) { &lt;span style="color: #0000ff"&gt;return&lt;/span&gt;; }&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;    }&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;    &lt;span style="color: #0000ff"&gt;else&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;    {&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;        &lt;span style="color: #0000ff"&gt;return&lt;/span&gt;;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;    }&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt; &lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;    &lt;span style="color: #0000ff"&gt;try&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;    {&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;        &lt;span style="color: #0000ff"&gt;if&lt;/span&gt; (entity.Properties.Contains(&lt;span style="color: #006080"&gt;&amp;quot;birthdate&amp;quot;&lt;/span&gt;))&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;        {&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;            CrmDateTime _birthdate = (CrmDateTime)entity[&lt;span style="color: #006080"&gt;&amp;quot;birthdate&amp;quot;&lt;/span&gt;];&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;            &lt;span style="color: #0000ff"&gt;if&lt;/span&gt; (_birthdate.IsNull)&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;            {&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;                entity[&lt;span style="color: #006080"&gt;&amp;quot;new_birthday&amp;quot;&lt;/span&gt;] = CrmNumber.Null;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;                entity[&lt;span style="color: #006080"&gt;&amp;quot;new_birthmonth&amp;quot;&lt;/span&gt;] = Picklist.Null;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;                entity[&lt;span style="color: #006080"&gt;&amp;quot;new_birthyear&amp;quot;&lt;/span&gt;] = CrmNumber.Null;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;            }&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;            &lt;span style="color: #0000ff"&gt;else&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;            {&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;                DateTime birthdayValue = _birthdate.UserTime; &lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;                entity[&lt;span style="color: #006080"&gt;&amp;quot;new_birthday&amp;quot;&lt;/span&gt;] = &lt;span style="color: #0000ff"&gt;new&lt;/span&gt; CrmNumber(birthdayValue.Day);&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;                entity[&lt;span style="color: #006080"&gt;&amp;quot;new_birthmonth&amp;quot;&lt;/span&gt;] = &lt;span style="color: #0000ff"&gt;new&lt;/span&gt; Picklist(birthdayValue.Month);&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;                entity[&lt;span style="color: #006080"&gt;&amp;quot;new_birthyear&amp;quot;&lt;/span&gt;] = &lt;span style="color: #0000ff"&gt;new&lt;/span&gt; CrmNumber(birthdayValue.Year);&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;            }&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;        }&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;    }&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;    &lt;span style="color: #0000ff"&gt;catch&lt;/span&gt; (Exception ex)&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;    {&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;        &lt;span style="color: #0000ff"&gt;throw&lt;/span&gt; &lt;span style="color: #0000ff"&gt;new&lt;/span&gt; InvalidPluginExecutionException(&lt;span style="color: #006080"&gt;&amp;quot;An error occurred in the Month, Day, Year Plug-in for Contact.&amp;quot;&lt;/span&gt;, ex);&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;    }&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;    }&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;  }&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;}&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&amp;#160;&lt;/pre&gt;&lt;br /&gt;  &lt;/div&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;b&gt;3. Register the plug-in&lt;/b&gt; The last step is to register the plug-in. To register the plug-in, you may use the &lt;a href="http://code.msdn.microsoft.com/crmplugin/Release/ProjectReleases.aspx?ReleaseId=2010"&gt;Plug-in Registration tool&lt;/a&gt; from the MSDN Code Gallery. After the assembly is uploaded, you need to associate the following steps to the plug-in: &lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&amp;#160;&lt;/p&gt;&lt;br /&gt;&lt;form id="aspnetForm" name="aspnetForm" action="http://blogs.msdn.com/crm/archive/2009/02/27/creating-a-birthday-contact-list.aspx" method="post"&gt;&lt;br /&gt;  &lt;div id="wrapper"&gt;&lt;br /&gt;    &lt;div id="container"&gt;&lt;br /&gt;      &lt;div id="contentwrapper"&gt;&lt;br /&gt;        &lt;div id="content"&gt;&lt;br /&gt;          &lt;div id="content2"&gt;&lt;br /&gt;            &lt;div class="post"&gt;&lt;br /&gt;              &lt;div class="postview"&gt;&lt;br /&gt;                &lt;p&gt;&lt;br /&gt;                  &lt;table cellspacing="0" cellpadding="0" border="1"&gt;&lt;tbody&gt;&lt;br /&gt;                      &lt;tr&gt;&lt;br /&gt;                        &lt;td valign="top" width="319"&gt;&lt;br /&gt;                          &lt;p&gt;&lt;b&gt;Message:&lt;/b&gt; Create &lt;br /&gt;&lt;br /&gt;                            &lt;br /&gt;&lt;b&gt;Primary Entity:&lt;/b&gt; contact &lt;br /&gt;&lt;br /&gt;                            &lt;br /&gt;&lt;b&gt;Filtering Attributes:&lt;/b&gt; birthdate &lt;br /&gt;&lt;br /&gt;                            &lt;br /&gt;&lt;b&gt;Eventing Pipeline Stage of Execution:&lt;/b&gt; Pre Stage &lt;br /&gt;&lt;br /&gt;                            &lt;br /&gt;&lt;b&gt;Execution Mode:&lt;/b&gt; Synchronous &lt;/p&gt;&lt;br /&gt;&lt;br /&gt;                          &lt;p&gt;&lt;b&gt;Triggering Pipeline:&lt;/b&gt; Parent Pipeline&lt;/p&gt;&lt;br /&gt;                        &lt;/td&gt;&lt;br /&gt;&lt;br /&gt;                        &lt;td valign="top" width="319"&gt;&lt;br /&gt;                          &lt;p&gt;&lt;b&gt;Message: &lt;/b&gt;Update &lt;br /&gt;&lt;br /&gt;                            &lt;br /&gt;&lt;b&gt;Primary Entity:&lt;/b&gt; contact &lt;br /&gt;&lt;br /&gt;                            &lt;br /&gt;&lt;b&gt;Filtering Attribute:&lt;/b&gt; birthdate &lt;br /&gt;&lt;br /&gt;                            &lt;br /&gt;&lt;b&gt;Eventing Pipeline Stage of Execution:&lt;/b&gt; Pre Stage &lt;br /&gt;&lt;br /&gt;                            &lt;br /&gt;&lt;b&gt;Execution Mode:&lt;/b&gt; Synchronous &lt;/p&gt;&lt;br /&gt;&lt;br /&gt;                          &lt;p&gt;&lt;b&gt;Triggering Pipeline:&lt;/b&gt; Parent Pipeline&lt;/p&gt;&lt;br /&gt;                        &lt;/td&gt;&lt;br /&gt;                      &lt;/tr&gt;&lt;br /&gt;&lt;br /&gt;                      &lt;tr&gt;&lt;br /&gt;                        &lt;td valign="top" width="319"&gt;&lt;br /&gt;                          &lt;p&gt;&lt;b&gt;Message:&lt;/b&gt; Create &lt;br /&gt;&lt;br /&gt;                            &lt;br /&gt;&lt;b&gt;Primary Entity:&lt;/b&gt; contact &lt;br /&gt;&lt;br /&gt;                            &lt;br /&gt;&lt;b&gt;Filtering Attributes:&lt;/b&gt; birthdate &lt;br /&gt;&lt;br /&gt;                            &lt;br /&gt;&lt;b&gt;Eventing Pipeline Stage of Execution:&lt;/b&gt; Pre Stage &lt;br /&gt;&lt;br /&gt;                            &lt;br /&gt;&lt;b&gt;Execution Mode:&lt;/b&gt; Synchronous &lt;/p&gt;&lt;br /&gt;&lt;br /&gt;                          &lt;p&gt;&lt;b&gt;Triggering Pipeline:&lt;/b&gt; Child Pipeline&lt;b&gt;&lt;/b&gt;&lt;/p&gt;&lt;br /&gt;                        &lt;/td&gt;&lt;br /&gt;&lt;br /&gt;                        &lt;td valign="top" width="319"&gt;&lt;br /&gt;                          &lt;p&gt;&lt;b&gt;Message: &lt;/b&gt;Update &lt;br /&gt;&lt;br /&gt;                            &lt;br /&gt;&lt;b&gt;Primary Entity:&lt;/b&gt; contact &lt;br /&gt;&lt;br /&gt;                            &lt;br /&gt;&lt;b&gt;Filtering Attribute:&lt;/b&gt; birthdate &lt;br /&gt;&lt;br /&gt;                            &lt;br /&gt;&lt;b&gt;Eventing Pipeline Stage of Execution:&lt;/b&gt; Pre Stage &lt;br /&gt;&lt;br /&gt;                            &lt;br /&gt;&lt;b&gt;Execution Mode:&lt;/b&gt; Synchronous &lt;/p&gt;&lt;br /&gt;&lt;br /&gt;                          &lt;p&gt;&lt;b&gt;Triggering Pipeline:&lt;/b&gt; Child Pipeline&lt;b&gt;&lt;/b&gt;&lt;/p&gt;&lt;br /&gt;                        &lt;/td&gt;&lt;br /&gt;                      &lt;/tr&gt;&lt;br /&gt;                    &lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;                &lt;/p&gt;&lt;br /&gt;              &lt;/div&gt;&lt;br /&gt;              &lt;strong&gt;Summary &lt;/strong&gt;&lt;/div&gt;&lt;br /&gt;          &lt;/div&gt;&lt;br /&gt;        &lt;/div&gt;&lt;br /&gt;      &lt;/div&gt;&lt;br /&gt;    &lt;/div&gt;&lt;br /&gt;  &lt;/div&gt;&lt;br /&gt;&lt;/form&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;That&amp;#8217;s all there is to it! The users will now be able to use Advanced Find to quickly identify their contacts birthday in a certain time period from now on. For the existing contacts previously stored in CRM, you will need to write a one-time SQL script to update the birthday fields in the MSCRM database in order for CRM to return the correct data back to the users. Hopefully this will help you on your next CRM project. &lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/crm/WindowsLiveWriter/7281dd88be79_801C/clip_image004_2.jpg"&gt;&lt;img title="clip_image004" height="335" alt="clip_image004" src="http://blogs.msdn.com/blogfiles/crm/WindowsLiveWriter/7281dd88be79_801C/clip_image004_thumb.jpg" width="443" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/crm/WindowsLiveWriter/7281dd88be79_801C/clip_image006_2.jpg"&gt;&lt;img title="clip_image006" height="335" alt="clip_image006" src="http://blogs.msdn.com/blogfiles/crm/WindowsLiveWriter/7281dd88be79_801C/clip_image006_thumb.jpg" width="443" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;Cheers,&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;a href="http://www.crowechizek.com/Crowe/News/detail.cfm?id=105"&gt;Darren Liu&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;Published Friday, February 27, 2009 9:26 AM by &lt;a href="http://blogs.msdn.com/user/Profile.aspx?UserID=29375"&gt;crmblog&lt;/a&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/702659527316624506-2580481356307966585?l=billoncrmtech.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://billoncrmtech.blogspot.com/feeds/2580481356307966585/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=702659527316624506&amp;postID=2580481356307966585' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/702659527316624506/posts/default/2580481356307966585'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/702659527316624506/posts/default/2580481356307966585'/><link rel='alternate' type='text/html' href='http://billoncrmtech.blogspot.com/2009/02/creating-birthday-contact-list.html' title='Creating a Birthday Contact List'/><author><name>Bill Owens</name><uri>http://www.blogger.com/profile/17898790776516318212</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_WyzF5zDnkqY/SavOqTyUHgI/AAAAAAAAABs/Fuc1b2uESVY/S220/me.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-702659527316624506.post-8793511330363756968</id><published>2009-02-27T14:04:00.001-05:00</published><updated>2009-02-27T14:04:56.772-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='performance'/><category scheme='http://www.blogger.com/atom/ns#' term='CRM 4.0'/><title type='text'>White Paper: SAMPLE - Performance and Scalability Assessment of Customer Implementation</title><content type='html'>&lt;h6&gt;&amp;#160;&lt;/h6&gt;  &lt;p&gt;&lt;strong&gt;Overview&lt;/strong&gt;&lt;a name="Description"&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Working closely with contacts in a variety of technical, support, and field roles, the MS CRM Engineering for Enterprise (E2) team receives documentation and resources from which the broader CRM community can benefit. This paper provides a sample final report on the results, conclusions, and recommendations from a performance and scalability assessment of a customer's implementation of Microsoft Dynamics CRM. The document provides details of the testing methodology and environment, as well as benchmark testing results. This sample report is intended to serve as a point of reference for other groups or teams that are or plan to perform similar performance and scalability assessments on customer implementations of Microsoft Dynamics CRM.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=e76d8916-81a6-4330-90ae-b24f8263fff8&amp;amp;DisplayLang=en" target="_blank"&gt;Download here&lt;/a&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/702659527316624506-8793511330363756968?l=billoncrmtech.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://billoncrmtech.blogspot.com/feeds/8793511330363756968/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=702659527316624506&amp;postID=8793511330363756968' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/702659527316624506/posts/default/8793511330363756968'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/702659527316624506/posts/default/8793511330363756968'/><link rel='alternate' type='text/html' href='http://billoncrmtech.blogspot.com/2009/02/white-paper-sample-performance-and.html' title='White Paper: SAMPLE - Performance and Scalability Assessment of Customer Implementation'/><author><name>Bill Owens</name><uri>http://www.blogger.com/profile/17898790776516318212</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_WyzF5zDnkqY/SavOqTyUHgI/AAAAAAAAABs/Fuc1b2uESVY/S220/me.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-702659527316624506.post-8196038854642217921</id><published>2009-02-27T14:03:00.001-05:00</published><updated>2009-02-27T14:03:40.971-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Phone'/><category scheme='http://www.blogger.com/atom/ns#' term='Mobile'/><category scheme='http://www.blogger.com/atom/ns#' term='CRM 4.0'/><title type='text'>Demonstrating Mobile Solutions for Microsoft Dynamics CRM</title><content type='html'>&lt;p&gt;The old school method of demonstrating mobile software, using a camera suspended over a device, is expensive and unwieldy. Fortunately it is no longer necessary. There are a few ways to project a mobile Microsoft Dynamics CRM application on to big screen - let me share one that works with our &lt;a href="https://connect.microsoft.com/site/sitehome.aspx?SiteID=624"&gt;Mobile Express for Microsoft Dynamics CRM 4.0 Preview&lt;/a&gt; and a Virtual PC image of Microsoft Dynamics CRM 4.0 - no device required.&lt;/p&gt;  &lt;p&gt;Configure the Virtual PC&lt;/p&gt;  &lt;p&gt;I usually demonstrate Microsoft Dynamics CRM using a Virtual PC image, demonstrating on a fully network connected server is easier but they don&amp;#8217;t always travel well. I think many of us have our VPCs setup with the loopback adapter so I&amp;#8217;ll presume that your VPC is setup to use the loopback adapter for networking with its IP address set to 192.168.0.1. Instructions below presume that you&amp;#8217;ve setup the Mobile Express server on the same VPC to a Web server at &lt;a href="http://192.168.0.1:8888/"&gt;http://192.168.0.1:8888/&lt;/a&gt; .&lt;/p&gt;  &lt;p&gt;Windows Mobile Device with Microsoft Dynamics CRM server on a Virtual PC&lt;/p&gt;  &lt;p&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;Setup Visual Studio&lt;/p&gt;  &lt;p&gt;In cases where no device is available for demonstrations, the Microsoft Device Emulator can be used stand alone. The device emulator is best for demonstrating Mobile Express for Microsoft Dynamics CRM on a Virtual PC or for other self contained demonstration environments. &lt;/p&gt;  &lt;p&gt;Configure the Virtual PC&lt;/p&gt;  &lt;p&gt;1. Install Active Sync 4.5 on your Virtual PC image. Active Sync can be downloaded from microsoft.com at:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=9e641c34-6f7f-404d-a04b-dc09f8141141&amp;amp;DisplayLang=en"&gt;http://www.microsoft.com/downloads/details.aspx?FamilyID=9e641c34-6f7f-404d-a04b-dc09f8141141&amp;amp;DisplayLang=en&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;2. Install the Windows Mobile SDK on to the Virtual PC image from &lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.microsoft.com/downloads/details.aspx?familyid=06111A3A-A651-4745-88EF-3D48091A390B&amp;amp;displaylang=en"&gt;http://www.microsoft.com/downloads/details.aspx?familyid=06111A3A-A651-4745-88EF-3D48091A390B&amp;amp;displaylang=en&lt;/a&gt; ).&lt;/p&gt;  &lt;p&gt;The Windows Mobile SDK requires Visual Studio 2008. The Windows Mobile SDK provides the Device Emulator, the Device Emulator Manager, a set of device types and device skins.&lt;/p&gt;  &lt;p&gt;Connect to the emulated device&lt;/p&gt;  &lt;p&gt;1. Navigate to \Program Files\Microsoft Device Emulator\1.0.&lt;/p&gt;  &lt;p&gt;2. Start the program&lt;b&gt; dvcemumanager&lt;/b&gt; .&lt;/p&gt;  &lt;p&gt;3. Locate the device image that you would like to use. The Windows Mobile Professional VGA Emulator provides a large image for very high resolution displays. The standard Professional Emulator may be better for projected displays.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/crm/WindowsLiveWriter/DemonstratingMobileSolutionsforMicrosoft_9C11/clip_image002_2.jpg"&gt;&lt;img height="227" alt="clip_image002" src="http://blogs.msdn.com/blogfiles/crm/WindowsLiveWriter/DemonstratingMobileSolutionsforMicrosoft_9C11/clip_image002_thumb.jpg" width="333" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;4. Click the Actions menu and select &amp;#8220;Connect&amp;#8221;. The device image will be displayed on screen and will be displayed with a green icon in the emulator manager.&lt;/p&gt;  &lt;p&gt;5. In the Device Emulator Manager select the device and then the Actions menu. Click &amp;#8220;Cradle&amp;#8221;. This will simulate a physical connect from the device to the PC and allow the image to share the host PC&amp;#8217;s network connection.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/crm/WindowsLiveWriter/DemonstratingMobileSolutionsforMicrosoft_9C11/clip_image004_2.jpg"&gt;&lt;img height="293" alt="clip_image004" src="http://blogs.msdn.com/blogfiles/crm/WindowsLiveWriter/DemonstratingMobileSolutionsforMicrosoft_9C11/clip_image004_thumb.jpg" width="325" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;6. Once the device is virtually cradled Active Sync will launch. The first time a given emulator launches you will need to walk through a process of configuring sync for the virtual device.    &lt;br /&gt;Setup sync with which ever options you prefer. Enabling sync of tasks, appointments, contacts and e-mail will enable you to demonstrate a broad range of mobile CRM scenarios.&lt;/p&gt;  &lt;p&gt;7. Within the emulator, click the Start button and launch Pocket Internet Explorer.&lt;/p&gt;  &lt;p&gt;8. Within Internet Explorer enter the URL for the Mobile Express Web server. For a default Mobile Express installation this will be &lt;a href="http://192.168.0.1:8888/MobileApplication/"&gt;http://192.168.0.1:8888/MobileApplication/&lt;/a&gt; .     &lt;br /&gt;Mobile Express for Microsoft Dynamics CRM will be launched.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/crm/WindowsLiveWriter/DemonstratingMobileSolutionsforMicrosoft_9C11/soti_2.jpg"&gt;&lt;img height="261" alt="soti" src="http://blogs.msdn.com/blogfiles/crm/WindowsLiveWriter/DemonstratingMobileSolutionsforMicrosoft_9C11/soti_thumb.jpg" width="141" align="left" border="0" /&gt;&lt;/a&gt; I can&amp;#8217;t go without mentioning a commercial screen projector and remote control application that allows you to connect and control a physical device from a PC. Pocket Controller Pro is a stable application with a huge set of device skins and PC based remote control capabilities &amp;#8211; allowing you to use your mouse and keyboard on your PC to click menus and input data on the device.&lt;/p&gt;  &lt;p&gt;SOTI&amp;#8217;s Pocket Controller Pro can be purchased directly from &lt;a href="http://www.soti.net/"&gt;SOTI.net&lt;/a&gt; for $35.95 USD:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.soti.net/default.asp?Cmd=Products&amp;amp;SubCmd=PCPro"&gt;http://www.soti.net/default.asp?Cmd=Products&amp;amp;SubCmd=PCPro&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;The use of dedicated projector application will provide you with the best looking demo environment and with remote control will provide the most precise of control over the device. &lt;/p&gt;  &lt;p&gt;If folks want more information on how to setup this sort of environment &amp;#8211; give a shout and I&amp;#8217;ll post the step by step.&lt;/p&gt;  &lt;p&gt;Cheers,&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/crm/pages/592394.aspx"&gt;Barry Givens&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Published Thursday, February 19, 2009 11:06 AM by &lt;a href="http://blogs.msdn.com/user/Profile.aspx?UserID=29375"&gt;crmblog&lt;/a&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/702659527316624506-8196038854642217921?l=billoncrmtech.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://billoncrmtech.blogspot.com/feeds/8196038854642217921/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=702659527316624506&amp;postID=8196038854642217921' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/702659527316624506/posts/default/8196038854642217921'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/702659527316624506/posts/default/8196038854642217921'/><link rel='alternate' type='text/html' href='http://billoncrmtech.blogspot.com/2009/02/demonstrating-mobile-solutions-for.html' title='Demonstrating Mobile Solutions for Microsoft Dynamics CRM'/><author><name>Bill Owens</name><uri>http://www.blogger.com/profile/17898790776516318212</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_WyzF5zDnkqY/SavOqTyUHgI/AAAAAAAAABs/Fuc1b2uESVY/S220/me.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-702659527316624506.post-5123485693757833359</id><published>2009-02-27T14:01:00.001-05:00</published><updated>2009-02-27T14:01:17.960-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Tips and Tricks'/><title type='text'>Windows Live ID, a primer</title><content type='html'>&lt;p&gt;&lt;a href="http://www.passport.net"&gt;&lt;img height="163" alt="WLID" src="http://blogs.msdn.com/blogfiles/crm/WindowsLiveWriter/WindowsLiveIDaprimer_6E64/WLID_3.jpg" width="643" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Windows Live ID is the authentication tool that is part of the Windows Live Service. With it you get free email, blog page, photo galleries, document storage, and more. Social networking tools such as Groups are also available. Groups allow you to invite people to participate in discussions, document sharing, events and calendars, and more. &lt;/p&gt;  &lt;p&gt;Microsoft Dynamics CRM Online uses the Windows Live ID ( WLID ) to authentication who the user is.&amp;#160; You can also integrate the Windows Services with your Microsoft Dynamics CRM application. &lt;/p&gt;  &lt;p&gt;Integration with the Windows Live Service can enhance your CRM experience. Using the document storage service, Sky Drive, can allow you to share documents with other users and people not in your CRM system such as customers, business partners, and colleagues. &lt;/p&gt;  &lt;p&gt;I&amp;#8217;ve created a video that will introduce you to Windows Live ID and it&amp;#8217;s services. The video also shows how you can use Windows Live Groups and Document Storage with Microsoft Dynamics CRM. &lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.democrmonline.com/WindowsLiveID/"&gt;Windows Live ID Overview&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;How to integrate your &lt;a href="http://www.democrmonline.com/DocumentManagement/"&gt;Windows Service Storage - SkyDrive&lt;/a&gt; with CRM Online &lt;/p&gt;  &lt;p&gt;Also, you'll want to watch the video by fellow technology specialist Kevin Williamson on how to &lt;a href="http://www.democrmonline.com/AddUsers/"&gt;add users&lt;/a&gt; to Microsoft Dynamics CRM Online. &lt;/p&gt;  &lt;p&gt;Cheers,&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/crm/pages/bio-jon-white.aspx"&gt;Jon White&lt;/a&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/702659527316624506-5123485693757833359?l=billoncrmtech.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://billoncrmtech.blogspot.com/feeds/5123485693757833359/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=702659527316624506&amp;postID=5123485693757833359' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/702659527316624506/posts/default/5123485693757833359'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/702659527316624506/posts/default/5123485693757833359'/><link rel='alternate' type='text/html' href='http://billoncrmtech.blogspot.com/2009/02/windows-live-id-primer.html' title='Windows Live ID, a primer'/><author><name>Bill Owens</name><uri>http://www.blogger.com/profile/17898790776516318212</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_WyzF5zDnkqY/SavOqTyUHgI/AAAAAAAAABs/Fuc1b2uESVY/S220/me.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-702659527316624506.post-8575088805321959566</id><published>2009-02-27T13:56:00.001-05:00</published><updated>2009-02-27T13:56:37.737-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Tips and Tricks'/><category scheme='http://www.blogger.com/atom/ns#' term='CRM 4.0'/><title type='text'>Integrating a Firewalled CRM with your Website</title><content type='html'>&lt;h6&gt;&lt;a href="http://blog.philiprichardson.org/2009/02/17/integrating-a-firewalled-crm-with-your-website/" target="_blank"&gt;Philip Richardson of Business Software in the Cloud&lt;/a&gt;&lt;/h6&gt;  &lt;p&gt;   &lt;hr /&gt;&lt;/p&gt;  &lt;p&gt;A couple of days ago &lt;a href="http://blogs.msdn.com/ceibner/archive/2009/02/13/integrating-with-dynamics-1-integrating-to-crm-4-0-direct-from-aspx-page-calling-a-web-service.aspx"&gt;Catherine Eibner posted a short tutorial&lt;/a&gt; showing how to integrate MSCRM with your Website. This works great if the back end of your website can access your CRM server. Now this isn&amp;#8217;t always the case &amp;#8230; this is where &lt;a href="https://www.microsoft.com/azure/netservices.mspx"&gt;.NET Services&lt;/a&gt; can help.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Scenario&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;em&gt;Contoso has a website which is hosted by a 3rd Party provider (eg. Web Central, Rackspace etc etc). Contoso also has a regular on-premise CRM 4.0 server (which is not exposed to the internet). Contoso wants it&amp;#8217;s website to be able to read/write data from the CRM server in real time.&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;To solve this problem we would use the Service Bus. This service allows us to connect &lt;strong&gt;multiple firewalled&lt;/strong&gt; systems together. A great intro to the Service Bus can be found in this &lt;a href="http://channel9.msdn.com/pdc2008/KYN03/"&gt;PDC keynote&lt;/a&gt; session by Don Box and Chris Anderson. I&amp;#8217;d also recommend this session by John Shewchuk: &lt;a href="http://channel9.msdn.com/pdc2008/BB01/"&gt;A Lap Around the Azure Services Platform&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=83e1e30f-bd9a-4284-80a6-388ba2e768fd&amp;amp;displaylang=en"&gt;Download our SDK&lt;/a&gt; and &lt;a href="https://www.microsoft.com/azure/register.mspx"&gt;Register for our Services&lt;/a&gt; (please note there may be some delays in providing invite codes as we are &amp;#8216;throttling&amp;#8217; access to our services during this phase of the Community Technical Preview).&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/702659527316624506-8575088805321959566?l=billoncrmtech.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://billoncrmtech.blogspot.com/feeds/8575088805321959566/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=702659527316624506&amp;postID=8575088805321959566' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/702659527316624506/posts/default/8575088805321959566'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/702659527316624506/posts/default/8575088805321959566'/><link rel='alternate' type='text/html' href='http://billoncrmtech.blogspot.com/2009/02/integrating-firewalled-crm-with-your.html' title='Integrating a Firewalled CRM with your Website'/><author><name>Bill Owens</name><uri>http://www.blogger.com/profile/17898790776516318212</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_WyzF5zDnkqY/SavOqTyUHgI/AAAAAAAAABs/Fuc1b2uESVY/S220/me.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-702659527316624506.post-3165490031180390541</id><published>2009-02-27T13:50:00.001-05:00</published><updated>2009-02-27T13:50:10.501-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='tool'/><category scheme='http://www.blogger.com/atom/ns#' term='CRM 4.0'/><title type='text'>Round Robin Lead Assignment</title><content type='html'>&lt;p&gt;&lt;a href="http://blogs.infinite-x.net/crm-add-ons/round-robin-lead-assignment/" target="_blank"&gt;Mitch Milam's Microsoft Discussions&lt;/a&gt;    &lt;br /&gt;&lt;/p&gt;  &lt;p&gt;   &lt;hr /&gt;&lt;/p&gt;  &lt;p&gt;   &lt;br /&gt;If you use Microsoft Dynamics CRM and have a sales staff of more than one person, then you have probably encountered to need to assign incoming sales leads equally among your sales staff.&lt;/p&gt;  &lt;p&gt;The Round Robin Lead Assignment solution was created to automatically assign new sales leads to a team of sales people in a round-robin fashion.&lt;/p&gt;  &lt;h5&gt;&lt;/h5&gt;  &lt;h5&gt;Features&lt;/h5&gt;  &lt;p&gt;&lt;strong&gt;Utilizes the built-in features of Dynamics CRM 4.0&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Through the use of Teams and a custom workflow, you can determine how leads are assigned to your sales teams.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Support for an unlimited number of sales teams&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Round-Robin can assign leads to an unlimited number of sales teams, depending on how your sales organization is structured. &lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Virtually maintenance free.&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Once Round-Robin has been installed and configured, the only ongoing maintenance required is for you to maintain the members of the Team (or Teams).&lt;/p&gt;  &lt;h5&gt;How It Works&lt;/h5&gt;  &lt;p&gt;For this discussion, we&amp;#8217;ll use the South Central Sales District Team that contains four members, as shown in the figure below: &lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.infinite-x.net/images/RoundRobinLeadAssignment_918F/image.png"&gt;&lt;img height="322" alt="image" src="http://blogs.infinite-x.net/images/RoundRobinLeadAssignment_918F/image_thumb.png" width="300" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Using the Round-Robin method of assigning new sales Leads, Jose Curry will be the first person to receive a lead. The next Lead would be assigned to Gail, then Alan, then Connie. When the fifth new sales lead arrives, Round-Robin understands that Connie is the last person in the list and will start the Lead assignment process at the beginning with Jose and proceed down the list again. &lt;/p&gt;  &lt;h5&gt;&lt;strong&gt;Pricing&lt;/strong&gt;&lt;/h5&gt;  &lt;p&gt;$125.00USD per CRM Organization.&amp;#160;&amp;#160; Click &lt;a href="https://usd.swreg.org/cgi-bin/s.cgi?s=105125&amp;amp;p=105125-1&amp;amp;v=0&amp;amp;d=0&amp;amp;q=1&amp;amp;t="&gt;here&lt;/a&gt; to order.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/702659527316624506-3165490031180390541?l=billoncrmtech.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://billoncrmtech.blogspot.com/feeds/3165490031180390541/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=702659527316624506&amp;postID=3165490031180390541' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/702659527316624506/posts/default/3165490031180390541'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/702659527316624506/posts/default/3165490031180390541'/><link rel='alternate' type='text/html' href='http://billoncrmtech.blogspot.com/2009/02/round-robin-lead-assignment.html' title='Round Robin Lead Assignment'/><author><name>Bill Owens</name><uri>http://www.blogger.com/profile/17898790776516318212</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_WyzF5zDnkqY/SavOqTyUHgI/AAAAAAAAABs/Fuc1b2uESVY/S220/me.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-702659527316624506.post-6453922606037528272</id><published>2009-02-27T13:47:00.001-05:00</published><updated>2009-02-27T13:47:15.622-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Phone'/><category scheme='http://www.blogger.com/atom/ns#' term='CRM 4.0'/><title type='text'>Bridge2CRM = (Microsoft Dynamics CRM + iPhone)</title><content type='html'>&lt;p&gt;&lt;a href="http://www.tekoppele.com/Blog/post/2009/02/24/Bridge2CRM-3d-(Microsoft-Dynamics-CRM-2b-iPhone).aspx" target="_blank"&gt;by menno 24. February 2009 21:42&lt;/a&gt;     &lt;br /&gt;&lt;/p&gt;  &lt;hr /&gt;  &lt;br /&gt;  &lt;p&gt;As you all might know is that &lt;a href="http://www.tekoppele.com/Blog/post/2008/08/11/I-Have-Sinned!.aspx"&gt;I own an iPhone&lt;/a&gt; and absolutely love it. For me it is the ultimate device of being able to combine business with my personal life. I can view my Exchange email or meetings and at the same time I can listen to my favorite music, update my Twitter or Facebook status all through an easy to use interface!&lt;/p&gt;  &lt;p&gt;Wouldn&amp;#8217;t it be nice to have the ability to update or access Microsoft Dynamics CRM information via your iPhone? Bridge2CRM leverages the iPhone interface by integrating it with the power of Microsoft Dynamics CRM. Make phone calls on your iPhone directly from CRM, get map directions, send emails, and manage your CRM data; all from the easy and intuitive iPhone platform.&lt;/p&gt;  &lt;p&gt;&lt;img title="iphone_splash3" height="303" alt="iphone_splash3" src="http://www.tekoppele.com/Blog/image.axd?picture=iphone_splash3.gif" width="536" border="0" /&gt;&lt;/p&gt;  &lt;p&gt;It works with Microsoft Dynamics CRM Online or with your on-premise deployment. &lt;a href="http://www.softbridgeinc.com/Products.aspx"&gt;For more details or to schedule a demo, please visit SoftBridge&amp;#8217;s web site.&lt;/a&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/702659527316624506-6453922606037528272?l=billoncrmtech.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://billoncrmtech.blogspot.com/feeds/6453922606037528272/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=702659527316624506&amp;postID=6453922606037528272' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/702659527316624506/posts/default/6453922606037528272'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/702659527316624506/posts/default/6453922606037528272'/><link rel='alternate' type='text/html' href='http://billoncrmtech.blogspot.com/2009/02/bridge2crm-microsoft-dynamics-crm.html' title='Bridge2CRM = (Microsoft Dynamics CRM + iPhone)'/><author><name>Bill Owens</name><uri>http://www.blogger.com/profile/17898790776516318212</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_WyzF5zDnkqY/SavOqTyUHgI/AAAAAAAAABs/Fuc1b2uESVY/S220/me.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-702659527316624506.post-1673293381651734647</id><published>2009-02-27T13:45:00.001-05:00</published><updated>2009-02-27T13:45:00.133-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='VPC'/><category scheme='http://www.blogger.com/atom/ns#' term='Virtual Server 2005'/><title type='text'>Expand A Virtual Hard Disk</title><content type='html'>&lt;h5&gt;&lt;a href="http://icu-mscrm.blogspot.com/2009/02/expand-virtual-hard-disk.html" target="_blank"&gt;Posted by Matt Wittemann of ICU-MSCRM&lt;/a&gt;&lt;/h5&gt;  &lt;p&gt;&lt;/p&gt;  &lt;hr /&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;I recently created a new virtual server for development purposes, and made the newbie mistake of leaving the maximum hard drive size set to 16GB. Even though I set it up to be a dynamically expanding hard disk, it was only after I installed Windows Server 2008, SQL Server 2008, CRM, SharePoint, Office, Visual Studio and 25 other tools, that I realized I was about to run out of space on my system drive. As a Microsoft fan, I use Virtual PC 2007, which in this case meant that my toolset was a little limited in managing my VPC images.    &lt;br /&gt;After doing a bit of searching, I came across numerous posts that had a lot of cumbersome ways to expand the system partition on a virtual machine. Laziness being the mother of invention, I was determined to find a simpler way. And I am glad to report that not only did I find an easy way, but it was also totally free. Here's what I did:     &lt;br /&gt;1) Download and install &lt;a href="http://www.vmware.com/products/converter/"&gt;VMWare's VCenter Converter&lt;/a&gt;.     &lt;br /&gt;2) Convert my VHD to a VMWare hard drive. VMWare Converter lets you specify a new size for the new hard drive. I set it to 40GB. The conversion took about 15 minutes, and the result was a 14GB vmdk hard drive file. (No need to boot it up in VMWare).     &lt;br /&gt;3) Downloaded and install the VMDK2VHD utility - also free - from &lt;a href="http://vmtoolkit.com/files/folders/converters/entry8.aspx"&gt;http://vmtoolkit.com/files/folders/converters/entry8.aspx&lt;/a&gt;.     &lt;br /&gt;4) Launched the VMDK2VHD and pointed it at the file I had just created with VM's Converter.     &lt;br /&gt;About 40 minutes later I had a new VHD file. I pointed my original VMC file to use this new VHD file, started it up, kept my fingers crossed, and...voila! I now have a bunch of free space on my image!     &lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/_tyGCYP6ijuY/SaR_9Hy-oQI/AAAAAAAAAEU/aIwv5k103qs/s1600-h/vhd.JPG"&gt;&lt;img alt="" src="http://1.bp.blogspot.com/_tyGCYP6ijuY/SaR_9Hy-oQI/AAAAAAAAAEU/aIwv5k103qs/s320/vhd.JPG" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/702659527316624506-1673293381651734647?l=billoncrmtech.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://billoncrmtech.blogspot.com/feeds/1673293381651734647/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=702659527316624506&amp;postID=1673293381651734647' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/702659527316624506/posts/default/1673293381651734647'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/702659527316624506/posts/default/1673293381651734647'/><link rel='alternate' type='text/html' href='http://billoncrmtech.blogspot.com/2009/02/expand-virtual-hard-disk.html' title='Expand A Virtual Hard Disk'/><author><name>Bill Owens</name><uri>http://www.blogger.com/profile/17898790776516318212</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_WyzF5zDnkqY/SavOqTyUHgI/AAAAAAAAABs/Fuc1b2uESVY/S220/me.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_tyGCYP6ijuY/SaR_9Hy-oQI/AAAAAAAAAEU/aIwv5k103qs/s72-c/vhd.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-702659527316624506.post-3541686459759427668</id><published>2009-02-19T15:00:00.001-05:00</published><updated>2009-02-19T15:00:22.914-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Mobile'/><category scheme='http://www.blogger.com/atom/ns#' term='CRM 4.0'/><title type='text'>Preview: Mobile Express for Microsoft Dynamics CRM 4.0</title><content type='html'>&lt;p&gt;&lt;a href="http://blogs.msdn.com/crm/archive/2009/02/16/preview-mobile-express-for-microsoft-dynamics-crm-4-0.aspx#comments" target="_blank"&gt;Preview: Mobile Express for Microsoft Dynamics CRM 4.0&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;   &lt;hr /&gt;&lt;/p&gt;  &lt;p&gt;We work all the time and everywhere. Getting information, giving information, communicating and keeping up. It is only natural that an application designed for letting businesses connect with their customers should be capable of working anywhere and anytime too.&lt;/p&gt;  &lt;p&gt;This week, we released a preview of Mobile Express for Microsoft Dynamics CRM 4.0. No one should think that this is the start or the finish of Microsoft Dynamics CRM mobility though. As we&amp;#8217;ve looked at the needs for mobile CRM we&amp;#8217;ve see not one experience but many experiences - we think that there are as many ways to take CRM mobile as there are uses of CRM. Mobile Express is one of those experiences. &lt;/p&gt;  &lt;p&gt;Mobile Express for Microsoft Dynamics CRM provides users with a Web based CRM client that works on any HTML rendering device, small or large. The user interface can be customized to show only the types of objects that an organization wants to expose to mobile users. We see this choice working well for organizations with remote users who are frequently connected to a network and who may not need constant access to their CRM data but who want to have the flexibility to call it up when needed. &lt;/p&gt;  &lt;p&gt;One of the interesting things that we&amp;#8217;ve seen over the last few years is the desire to &amp;#8220;never give a laptop computer to a sales person again&amp;#8221; (an actual customer&amp;#8217;s words). For organizations like this, a rich client on a smart device makes a lot of sense. Independent software vendors make full Microsoft Dynamics CRM applications for Windows Mobile (&lt;a href="http://tendigits.com/"&gt;TenDigits&lt;/a&gt;, &lt;a href="http://www.cwrmobility.com/"&gt;CWR Mobility&lt;/a&gt;, &lt;a href="http://www.adctech.com/"&gt;ADC&lt;/a&gt;), RIM Blackberry devices (TenDigits), the iPhone (&lt;a href="http://www.softbridgeinc.com/"&gt;softBridge&lt;/a&gt;) and Nokia phones (&lt;a href="http://www.crmmobileplus.com/"&gt;CRMMobile+&lt;/a&gt;). These applications typically have offline capabilities and can act as full PC replacements for some workers. I love these rich clients because while they have a broad range of CRM capabilities they can also be tailored to the specific needs of the jobs that people are doing with them.&lt;/p&gt;  &lt;p&gt;And while I don&amp;#8217;t expect too many people to be pulling out the &lt;a href="http://www.microsoft.com/downloads/details.aspx?familyid=06111A3A-A651-4745-88EF-3D48091A390B&amp;amp;displaylang=en"&gt;Windows Mobile SDK&lt;/a&gt; to build their own mobile applications, building your own mobile solution may be cost effective and provide you with the best solution. In cases where there is a very limited set of tasks that users need to perform, special device functionality is needed or where you have development expertise in house, a bespoke solution can make sense. The solution could be as simple as e-mail alerts sent to mobile users or as complex as a .NET Compact Framework client. And some organizations are taking a mixed approach here: building an application for some users and purchasing one for others.&lt;/p&gt;  &lt;p&gt;You can download the Mobile Express for Microsoft Dynamics CRM 4.0 Preview and give us feedback through newsgroups at:&lt;/p&gt;  &lt;p&gt;&lt;a href="https://connect.microsoft.com/site/sitehome.aspx?SiteID=624"&gt;https://connect.microsoft.com/site/sitehome.aspx?SiteID=624&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/crm/pages/592394.aspx"&gt;Barry Givens&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Published Monday, February 16, 2009 8:44 AM by &lt;a href="http://blogs.msdn.com/user/Profile.aspx?UserID=29375"&gt;crmblog&lt;/a&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/702659527316624506-3541686459759427668?l=billoncrmtech.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://billoncrmtech.blogspot.com/feeds/3541686459759427668/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=702659527316624506&amp;postID=3541686459759427668' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/702659527316624506/posts/default/3541686459759427668'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/702659527316624506/posts/default/3541686459759427668'/><link rel='alternate' type='text/html' href='http://billoncrmtech.blogspot.com/2009/02/preview-mobile-express-for-microsoft.html' title='Preview: Mobile Express for Microsoft Dynamics CRM 4.0'/><author><name>Bill Owens</name><uri>http://www.blogger.com/profile/17898790776516318212</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_WyzF5zDnkqY/SavOqTyUHgI/AAAAAAAAABs/Fuc1b2uESVY/S220/me.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-702659527316624506.post-2592516742198861129</id><published>2009-02-19T14:04:00.001-05:00</published><updated>2009-02-19T14:04:53.385-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Tips and Tricks'/><category scheme='http://www.blogger.com/atom/ns#' term='CRM 4.0'/><category scheme='http://www.blogger.com/atom/ns#' term='coding'/><title type='text'>Change Activity History to "All" instead of "Last 30 Days"</title><content type='html'>&lt;p&gt;&lt;abbr&gt;&lt;a href="http://dmcrm.blogspot.com/2009/02/change-activity-history-to-all-instead.html" target="_blank"&gt;David Fronk Dynamic Methods Inc. 2/13/2009 09:13:00 AM&lt;/a&gt;      &lt;br /&gt;&lt;/abbr&gt;&lt;/p&gt;  &lt;p&gt;   &lt;hr /&gt;&lt;/p&gt;  &lt;p&gt;While there have been other bloggers out ther who have blogged about this topic (Stunnware, CustomerEffective, etc) this request is made so often and the answer isn't always the easiest to find...so my hope is that if more of us MSCRM bloggers blog about then it should be easier for everyone to find and use. This code snippet comes from Stunnware (&lt;a href="http://stunnware.com/crm2/googlecrmsearchresults.aspx?cx=015532757182912450780%3A40ezlalfqfc&amp;amp;cof=FORID%3A10&amp;amp;q=history+default+last+30+days"&gt;here's the link&lt;/a&gt;).    &lt;br /&gt;Just take the code below and put it in your onLoad script and you should be all set.    &lt;br /&gt;Enjoy!    &lt;br /&gt;&lt;/p&gt;  &lt;div style="border-right: gray 1px solid; padding-right: 4px; border-top: gray 1px solid; padding-left: 4px; font-size: 8pt; padding-bottom: 4px; margin: 20px 0px 10px; overflow: auto; border-left: gray 1px solid; width: 97.5%; cursor: text; max-height: 200px; line-height: 12pt; padding-top: 4px; border-bottom: gray 1px solid; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; background-color: #f4f4f4"&gt;   &lt;div style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;     &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #008000"&gt;/************************************************************** &lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #008000"&gt;* Change the default view of a view selection combo box&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #008000"&gt;**************************************************************/&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;SetDefaultView = &lt;span style="color: #0000ff"&gt;function&lt;/span&gt;(viewCombo, viewName, appGrid) {&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #008000"&gt;/* If the view has already been set, we don't need to do it again. */&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #0000ff"&gt;if&lt;/span&gt; (viewCombo.value != viewName) {&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #008000"&gt;/* Set the new view */&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;viewCombo.value = viewName;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #008000"&gt;/* Call RefreshGridView to run the code in the DHTML control.&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #008000"&gt;* Without this call, only the selection in the combo box changes,&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #008000"&gt;* but not the content of the grid */&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;appGrid.RefreshGridView();&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;}&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;}&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #008000"&gt;/**************************************************************&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #008000"&gt;* Event handler. Called whenever the ready state of the&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #008000"&gt;* areaActivityHistoryFrame changes.&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #008000"&gt;**************************************************************/&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;areaActivityHistoryFrame_OnReadyStateChange = &lt;span style="color: #0000ff"&gt;function&lt;/span&gt;() {&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #008000"&gt;/* Waiting until the frame has finished loading */&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #0000ff"&gt;if&lt;/span&gt; (&lt;span style="color: #0000ff"&gt;this&lt;/span&gt;.readyState == &lt;span style="color: #006080"&gt;&amp;quot;complete&amp;quot;&lt;/span&gt;) {&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #008000"&gt;/* This is the frame we're interested in */&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #0000ff"&gt;var&lt;/span&gt; frame = document.frames(&lt;span style="color: #006080"&gt;&amp;quot;areaActivityHistoryFrame&amp;quot;&lt;/span&gt;);&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #008000"&gt;/* And this is the view combo box */&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #0000ff"&gt;var&lt;/span&gt; viewCombo = frame.document.getElementById(&lt;span style="color: #006080"&gt;&amp;quot;actualend&amp;quot;&lt;/span&gt;);&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #008000"&gt;/* This is the AppGridFilterContainer control we need to refresh the view */&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #0000ff"&gt;var&lt;/span&gt; appGrid = frame.document.getElementById(&lt;span style="color: #006080"&gt;&amp;quot;AppGridFilterContainer&amp;quot;&lt;/span&gt;);&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #008000"&gt;/* The view combo box uses a style sheet that references a HTML&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #008000"&gt;* control. We have to wait until the htc file is loaded,&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #008000"&gt;* otherwise the call to FireOnChange in the SetDefaultView&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #008000"&gt;* method will fail. */&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #0000ff"&gt;if&lt;/span&gt; (viewCombo.readyState == &lt;span style="color: #006080"&gt;&amp;quot;complete&amp;quot;&lt;/span&gt;) {&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #008000"&gt;/* If the control already has finished loading, we can&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #008000"&gt;* directly set the new view. */&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;SetDefaultView(viewCombo, &lt;span style="color: #006080"&gt;&amp;quot;All&amp;quot;&lt;/span&gt;, appGrid);&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;}&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #0000ff"&gt;else&lt;/span&gt; {&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #008000"&gt;/* Otherwise we have to register another event handler&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #008000"&gt;* waiting until all of the include files used by the&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #008000"&gt;* combo box are loaded as well. */&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;viewCombo.onreadystatechange = &lt;span style="color: #0000ff"&gt;function&lt;/span&gt;() {&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #0000ff"&gt;if&lt;/span&gt; (&lt;span style="color: #0000ff"&gt;this&lt;/span&gt;.readyState == &lt;span style="color: #006080"&gt;&amp;quot;complete&amp;quot;&lt;/span&gt;) {&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;SetDefaultView(&lt;span style="color: #0000ff"&gt;this&lt;/span&gt;, &lt;span style="color: #006080"&gt;&amp;quot;All&amp;quot;&lt;/span&gt;, appGrid);&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;}&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;}&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;}&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;}&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;}&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #008000"&gt;/* Set a new onclick event for the History navigation element&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #008000"&gt;* This is where we register the onreadystatechange event handler */&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #0000ff"&gt;if&lt;/span&gt; (document.getElementById(&lt;span style="color: #006080"&gt;'navActivityHistory'&lt;/span&gt;) != &lt;span style="color: #0000ff"&gt;null&lt;/span&gt;) {&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;document.getElementById(&lt;span style="color: #006080"&gt;'navActivityHistory'&lt;/span&gt;).onclick = &lt;span style="color: #0000ff"&gt;function&lt;/span&gt;() {&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;loadArea(&lt;span style="color: #006080"&gt;'areaActivityHistory'&lt;/span&gt;);&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;document.frames(&lt;span style="color: #006080"&gt;'areaActivityHistoryFrame'&lt;/span&gt;).document.onreadystatechange = areaActivityHistoryFrame_OnReadyStateChange;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;}&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;}&lt;/pre&gt;&lt;br /&gt;  &lt;/div&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;  &lt;br /&gt;David Fronk&lt;br /&gt;&lt;br /&gt;  &lt;br /&gt;Dynamic Methods Inc.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/702659527316624506-2592516742198861129?l=billoncrmtech.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://billoncrmtech.blogspot.com/feeds/2592516742198861129/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=702659527316624506&amp;postID=2592516742198861129' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/702659527316624506/posts/default/2592516742198861129'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/702659527316624506/posts/default/2592516742198861129'/><link rel='alternate' type='text/html' href='http://billoncrmtech.blogspot.com/2009/02/change-activity-history-to-instead-of.html' title='Change Activity History to &amp;quot;All&amp;quot; instead of &amp;quot;Last 30 Days&amp;quot;'/><author><name>Bill Owens</name><uri>http://www.blogger.com/profile/17898790776516318212</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_WyzF5zDnkqY/SavOqTyUHgI/AAAAAAAAABs/Fuc1b2uESVY/S220/me.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-702659527316624506.post-4634466914561416048</id><published>2009-02-19T12:07:00.001-05:00</published><updated>2009-02-19T12:07:51.993-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='CRM 4.0'/><title type='text'>CRM 4.0 Build Numbers</title><content type='html'>&lt;div class="entry read" id="article10248"&gt;   &lt;div class="content"&gt;     &lt;table cellspacing="0" cellpadding="2" width="515" border="1"&gt;&lt;tbody&gt;         &lt;tr&gt;           &lt;td valign="top" width="133"&gt;&lt;strong&gt;&lt;font color="#008000"&gt;Build Number&lt;/font&gt;&lt;/strong&gt;&lt;/td&gt;            &lt;td valign="top" width="133"&gt;&lt;strong&gt;&lt;font color="#008000"&gt;Released&lt;/font&gt;&lt;/strong&gt;&lt;/td&gt;            &lt;td valign="top" width="247"&gt;&lt;strong&gt;&lt;font color="#008000"&gt;Details&lt;/font&gt;&lt;/strong&gt;&lt;/td&gt;         &lt;/tr&gt;          &lt;tr&gt;           &lt;td valign="top" width="133"&gt;4.0.7333.1316&lt;/td&gt;            &lt;td valign="top" width="133"&gt;2/8/2009&lt;/td&gt;            &lt;td valign="top" width="247"&gt;&lt;a href="http://www.microsoft.com/downloads/details.aspx?familyid=aa671769-61e9-45c4-919f-c88199aa4241&amp;amp;displaylang=en&amp;amp;tm" target="_blank"&gt;Rollup Update #2&lt;/a&gt; (Re-Release)&lt;/td&gt;         &lt;/tr&gt;          &lt;tr&gt;           &lt;td valign="top" width="133"&gt;4.0.7333.1312&lt;/td&gt;            &lt;td valign="top" width="133"&gt;1/15/2009&lt;/td&gt;            &lt;td valign="top" width="247"&gt;Rollup Update #2 (Original Release)&lt;/td&gt;         &lt;/tr&gt;          &lt;tr&gt;           &lt;td valign="top" width="133"&gt;4.0.7333.1113&lt;/td&gt;            &lt;td valign="top" width="133"&gt;11/24/2008&lt;/td&gt;            &lt;td valign="top" width="247"&gt;&lt;a href="http://www.microsoft.com/downloads/details.aspx?familyid=57C6267B-3B13-49DD-BFED-3CC83633AEA7&amp;amp;displaylang=en" target="_blank"&gt;Rollup Update #1&lt;/a&gt;&lt;/td&gt;         &lt;/tr&gt;          &lt;tr&gt;           &lt;td valign="top" width="133"&gt;4.0.7333.3&lt;/td&gt;            &lt;td valign="top" width="133"&gt;12/19/2007&lt;/td&gt;            &lt;td valign="top" width="247"&gt;&lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=a9c110fd-aac8-4d2a-b401-7801b1866e82&amp;amp;DisplayLang=en" target="_blank"&gt;RTM&lt;/a&gt;&lt;/td&gt;         &lt;/tr&gt;          &lt;tr&gt;           &lt;td valign="top" width="133"&gt;4.0.7333.2&lt;/td&gt;            &lt;td valign="top" width="133"&gt;December 2007&lt;/td&gt;            &lt;td valign="top" width="247"&gt;RC2 (Internal)&lt;/td&gt;         &lt;/tr&gt;          &lt;tr&gt;           &lt;td valign="top" width="133"&gt;4.0.7309.0&lt;/td&gt;            &lt;td valign="top" width="133"&gt;November 2007&lt;/td&gt;            &lt;td valign="top" width="247"&gt;RC0 (Limited Release)&lt;/td&gt;         &lt;/tr&gt;          &lt;tr&gt;           &lt;td valign="top" width="133"&gt;4.0.7219.10&lt;/td&gt;            &lt;td valign="top" width="133"&gt;August 2007&lt;/td&gt;            &lt;td valign="top" width="247"&gt;Beta - CTP3&lt;/td&gt;         &lt;/tr&gt;          &lt;tr&gt;           &lt;td valign="top" width="133"&gt;4.0.7044.22&lt;/td&gt;            &lt;td valign="top" width="133"&gt;May 2007&lt;/td&gt;            &lt;td valign="top" width="247"&gt;Beta - CTP2&lt;/td&gt;         &lt;/tr&gt;          &lt;tr&gt;           &lt;td valign="top" width="133"&gt;4.0.6319.16&lt;/td&gt;            &lt;td valign="top" width="133"&gt;October 2006 (?)&lt;/td&gt;            &lt;td valign="top" width="247"&gt;Beta - CTP1&lt;/td&gt;         &lt;/tr&gt;       &lt;/tbody&gt;&lt;/table&gt;   &lt;/div&gt; &lt;/div&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/702659527316624506-4634466914561416048?l=billoncrmtech.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://billoncrmtech.blogspot.com/feeds/4634466914561416048/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=702659527316624506&amp;postID=4634466914561416048' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/702659527316624506/posts/default/4634466914561416048'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/702659527316624506/posts/default/4634466914561416048'/><link rel='alternate' type='text/html' href='http://billoncrmtech.blogspot.com/2009/02/crm-40-build-numbers.html' title='CRM 4.0 Build Numbers'/><author><name>Bill Owens</name><uri>http://www.blogger.com/profile/17898790776516318212</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_WyzF5zDnkqY/SavOqTyUHgI/AAAAAAAAABs/Fuc1b2uESVY/S220/me.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-702659527316624506.post-7582226236736768663</id><published>2009-02-12T16:00:00.001-05:00</published><updated>2009-02-12T16:00:12.761-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='JavaScript'/><category scheme='http://www.blogger.com/atom/ns#' term='Tips and Tricks'/><category scheme='http://www.blogger.com/atom/ns#' term='CRM 4.0'/><title type='text'>Client Side Scripting - Customer fields again</title><content type='html'>&lt;p&gt;&lt;a href="http://www.stunnware.com/crm2/topic.aspx?id=JS34" target="_blank"&gt;SUNNWARE 10.02.2009&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;   &lt;hr /&gt;&lt;/p&gt;  &lt;p&gt;received quite a few emails recently pointing out that the &lt;a href="http://www.stunnware.com/crm2/topic.aspx?id=js21"&gt;customer field sample&lt;/a&gt; doesn't work or doesn't always work, so I finally decided to try another approach and came up with a new implementation, which is more elegant and smaller than the old one and hopefully more reliable as well. As usual, this is an unsupported customization.&lt;/p&gt;  &lt;p&gt;In the meantime I received a modified version of the original sample, which I post in this article as well.&amp;#160; &lt;/p&gt;  &lt;p&gt;&lt;strong&gt;The OnLoad code&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;You need an account lookup and a contact lookup field on your form to run this code. Some properties of the account lookup are modified in such a way that CRM treats it as a real customer field. It's also important to set the default value when initializing the &amp;quot;customer&amp;quot; (account) field with a contact, to prevent unwanted warning messages (&amp;quot;Do you really want to navigate away from this ....&amp;quot;) when closing the form.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;div style="border-right: gray 1px solid; padding-right: 4px; border-top: gray 1px solid; padding-left: 4px; font-size: 8pt; padding-bottom: 4px; margin: 20px 0px 10px; overflow: auto; border-left: gray 1px solid; width: 97.5%; cursor: text; max-height: 200px; line-height: 12pt; padding-top: 4px; border-bottom: gray 1px solid; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; background-color: #f4f4f4"&gt;   &lt;div style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;     &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #008000"&gt;// Change &amp;quot;sw_accountid&amp;quot; and &amp;quot;sw_contactid&amp;quot; to the field names you are using.&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;var accountLookup = crmForm.all.sw_accountid;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;var contactLookup = crmForm.all.sw_contactid;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&amp;#160;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #008000"&gt;// Set the available lookup types to account and contact.&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;accountLookup.lookuptypes = &lt;span style="color: #006080"&gt;&amp;quot;1,2&amp;quot;&lt;/span&gt;;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;accountLookup.lookuptypenames = &lt;span style="color: #006080"&gt;&amp;quot;account:1,contact:2&amp;quot;&lt;/span&gt;;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&amp;#160;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #008000"&gt;// Set the icons to use for the account and contact.&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;accountLookup.lookuptypeIcons = &lt;span style="color: #006080"&gt;&amp;quot;/_imgs/ico_16_1.gif:/_imgs/ico_16_2.gif&amp;quot;&lt;/span&gt;;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&amp;#160;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #008000"&gt;// If there is an existing value stored in the contact lookup, then pass it to the &amp;quot;customer&amp;quot; lookup.&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #0000ff"&gt;if&lt;/span&gt; (contactLookup.DataValue != &lt;span style="color: #0000ff"&gt;null&lt;/span&gt;) {&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&amp;#160;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;   &lt;span style="color: #008000"&gt;// Set the default value of our customer field to the contact. If you don't do this, CRM assumes&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;   &lt;span style="color: #008000"&gt;// that the customer was changed and will display a warning messaging when closing the form&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;   &lt;span style="color: #008000"&gt;// without saving.   &lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;   accountLookup.DefaultValue = contactLookup.DataValue;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;   accountLookup.DataValue = contactLookup.DataValue;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&amp;#160;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;   &lt;span style="color: #0000ff"&gt;if&lt;/span&gt; (&lt;span style="color: #0000ff"&gt;typeof&lt;/span&gt; (accountLookup.DataValue[0].data) != &lt;span style="color: #006080"&gt;&amp;quot;undefined&amp;quot;&lt;/span&gt;) {&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;      &lt;span style="color: #008000"&gt;// For some reason, the data property of the DataValue is set to an empty string, while the&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;      &lt;span style="color: #008000"&gt;// data property of the DefaultValue is undefined. The data property is part of the comparison&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;      &lt;span style="color: #008000"&gt;// CRM does when looking for modified fields. In order for CRM to truly believe that our&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;      &lt;span style="color: #008000"&gt;// customer field wasn't changed - though we did - this data property has to be set accordingly.&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;      accountLookup.DefaultValue[0].data = accountLookup.DataValue[0].data;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;   }&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;}&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&amp;#160;&lt;/pre&gt;&lt;br /&gt;  &lt;/div&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&amp;#160;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;strong&gt;The OnSave code&lt;/strong&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;The OnSave code simply stores the selected customer in the account and contact lookups. When using an OnChange event in the sw_accountid field, make sure to differentiate if the event was fired due to the user selecting a record or the OnSave modifying it. A simple way to do it, is setting a &lt;a href="http://www.stunnware.com/crm2/topic.aspx?id=js5"&gt;global variable&lt;/a&gt; in the OnSave event and comparing that value in OnChange.&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="border-right: gray 1px solid; padding-right: 4px; border-top: gray 1px solid; padding-left: 4px; font-size: 8pt; padding-bottom: 4px; margin: 20px 0px 10px; overflow: auto; border-left: gray 1px solid; width: 97.5%; cursor: text; max-height: 200px; line-height: 12pt; padding-top: 4px; border-bottom: gray 1px solid; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; background-color: #f4f4f4"&gt;&lt;br /&gt;  &lt;div style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;br /&gt;    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #008000"&gt;// Change &amp;quot;sw_accountid&amp;quot; and &amp;quot;sw_contactid&amp;quot; to the field names you are using.&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;var accountLookup = crmForm.all.sw_accountid;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;var contactLookup = crmForm.all.sw_contactid;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&amp;#160;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #008000"&gt;// If there is no value selected in &amp;quot;customer&amp;quot; lookup, then clear the contact lookup.&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #0000ff"&gt;if&lt;/span&gt; (accountLookup.DataValue == &lt;span style="color: #0000ff"&gt;null&lt;/span&gt;) {&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;   contactLookup.DataValue = &lt;span style="color: #0000ff"&gt;null&lt;/span&gt;;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;}&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&amp;#160;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #008000"&gt;// Otherwise check the lookup type and copy the selected value to the contact lookup if appropriate.&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #0000ff"&gt;else&lt;/span&gt; {&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;   var customer = accountLookup.DataValue[0];&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&amp;#160;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;   &lt;span style="color: #008000"&gt;// A type code of 1 represents an account.&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;   &lt;span style="color: #0000ff"&gt;if&lt;/span&gt; (customer.type == &lt;span style="color: #006080"&gt;&amp;quot;1&amp;quot;&lt;/span&gt;) {&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;      &lt;span style="color: #008000"&gt;// If it is an account, then clear the contact lookup.&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;      contactLookup.DataValue = &lt;span style="color: #0000ff"&gt;null&lt;/span&gt;;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;   }&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&amp;#160;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;   &lt;span style="color: #0000ff"&gt;else&lt;/span&gt; {&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;      &lt;span style="color: #008000"&gt;// A contact was selected, so copy the value to the contact lookup and clear the account lookup.&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;      contactLookup.DataValue = accountLookup.DataValue;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;      accountLookup.DataValue = &lt;span style="color: #0000ff"&gt;null&lt;/span&gt;;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;   }&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;}&lt;/pre&gt;&lt;br /&gt;  &lt;/div&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&amp;#160;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;strong&gt;Modified version of the original sample&lt;/strong&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;As reported by some others, Alejandro Cesetti (ale [dot] cesetti [at] gmail.com) had problems with the original code, and sent me an email explaining the problem and the fix:&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;strong&gt;Reproducing the bug&lt;/strong&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;When you save the entity having the &amp;#8220;custom&amp;#8221; Customer attribute with an Account being selected everything is ok. Then, if you open the same instance of the entity, and edit it changing the value of the Customer from an Account to a Contact, after you save your changes, the value shown in the Customer field is still the Account value and, what is more, the account relationship in DB isn&amp;#8217;t updated to null keeping the relationship to the account.&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;strong&gt;How did I fix it&lt;/strong&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;What I did was to hide the Account field as the Contact field and add another field in the place where I want the Customer field to be shown. Then the ExchangeLookups function will exchange the new lookup field with the Customer and vice versa instead of the Account field.&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;strong&gt;OnLoad Code&lt;/strong&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="border-right: gray 1px solid; padding-right: 4px; border-top: gray 1px solid; padding-left: 4px; font-size: 8pt; padding-bottom: 4px; margin: 20px 0px 10px; overflow: auto; border-left: gray 1px solid; width: 97.5%; cursor: text; max-height: 200px; line-height: 12pt; padding-top: 4px; border-bottom: gray 1px solid; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; background-color: #f4f4f4"&gt;&lt;br /&gt;  &lt;div style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;br /&gt;    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #008000"&gt;/******************************************************************************&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #008000"&gt;* Global variables required to setup the customer field. You have to replace&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #008000"&gt;* the values of AccountFieldName and ContactFieldName when using attribute&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #008000"&gt;* names different than the one used in this sample.&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #008000"&gt;*****************************************************************************/&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;AccountFieldName = &lt;span style="color: #006080"&gt;&amp;quot;hud_accountid&amp;quot;&lt;/span&gt;;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;ContactFieldName = &lt;span style="color: #006080"&gt;&amp;quot;hud_contactid&amp;quot;&lt;/span&gt;;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;CustomerFieldName = &lt;span style="color: #006080"&gt;&amp;quot;hud_customerid&amp;quot;&lt;/span&gt;;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;CreatedByName = &lt;span style="color: #006080"&gt;&amp;quot;createdby&amp;quot;&lt;/span&gt;;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;AccountLookup = crmForm.all.item(AccountFieldName);&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;ContactLookup = crmForm.all.item(ContactFieldName);&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;CreatedByLookup = crmForm.all.item(CreatedByName);&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;CustomerLookup = &lt;span style="color: #0000ff"&gt;null&lt;/span&gt;;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;CreatedByInnerHTML = &lt;span style="color: #0000ff"&gt;null&lt;/span&gt;;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;AllFieldsAvailable = (AccountLookup != &lt;span style="color: #0000ff"&gt;null&lt;/span&gt;) &amp;amp;&amp;amp; (ContactLookup != &lt;span style="color: #0000ff"&gt;null&lt;/span&gt;);&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&amp;#160;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #008000"&gt;/******************************************************************************&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #008000"&gt;* GetLookupFieldHtml builds the inner HTML of a lookup control. Used to&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #008000"&gt;* dynamically create the customer lookup.&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #008000"&gt;*****************************************************************************/&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;function GetLookupFieldHtml(name, tabIndex, lookupTypes, lookupTypeNames, lookupTypeIcons, reqLevel) {&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&amp;#160;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;   var html = &lt;span style="color: #006080"&gt;&amp;quot;&amp;lt;table class=\&amp;quot;ms-crm-Lookup\&amp;quot; cellpadding=\&amp;quot;0\&amp;quot; cellspacing=\&amp;quot;0\&amp;quot; width=\&amp;quot;100%\&amp;quot; style=\&amp;quot;table-layout:fixed;\&amp;quot;&amp;gt;&amp;quot;&lt;/span&gt; +&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;        &lt;span style="color: #006080"&gt;&amp;quot;&amp;lt;tr&amp;gt;&amp;quot;&lt;/span&gt; +&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;        &lt;span style="color: #006080"&gt;&amp;quot;&amp;lt;td&amp;gt;&amp;quot;&lt;/span&gt; +&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;        &lt;span style="color: #006080"&gt;&amp;quot;&amp;lt;div ime-mode=\&amp;quot;auto\&amp;quot; class=\&amp;quot;ms-crm-Lookup\&amp;quot; tabindex=\&amp;quot;&amp;quot;&lt;/span&gt; + (parseInt(tabIndex) + 1) + &lt;span style="color: #006080"&gt;&amp;quot;\&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&amp;quot;&lt;/span&gt; +&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;        &lt;span style="color: #006080"&gt;&amp;quot;&amp;lt;label class=\&amp;quot;ms-crm-Hidden-NoBehavior\&amp;quot; for=\&amp;quot;&amp;quot;&lt;/span&gt; + name + &lt;span style="color: #006080"&gt;&amp;quot;_ledit\&amp;quot;&amp;gt;&amp;lt;/label&amp;gt;&amp;quot;&lt;/span&gt; +&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;        &lt;span style="color: #006080"&gt;&amp;quot;&amp;lt;input class=\&amp;quot;ms-crm-Hidden-NoBehavior\&amp;quot; ime-mode=\&amp;quot;auto\&amp;quot; type=\&amp;quot;text\&amp;quot; tabindex=\&amp;quot;&amp;quot;&lt;/span&gt; + tabIndex + &lt;span style="color: #006080"&gt;&amp;quot;\&amp;quot; id=\&amp;quot;&amp;quot;&lt;/span&gt; + name + &lt;span style="color: #006080"&gt;&amp;quot;_ledit\&amp;quot; maxlength=\&amp;quot;1000\&amp;quot;/&amp;gt;&amp;quot;&lt;/span&gt; +&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;        &lt;span style="color: #006080"&gt;&amp;quot;&amp;lt;/td&amp;gt;&amp;quot;&lt;/span&gt; +&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;        &lt;span style="color: #006080"&gt;&amp;quot;&amp;lt;td width=\&amp;quot;25\&amp;quot; class=\&amp;quot;Lookup_RenderButton_td\&amp;quot;&amp;gt;&amp;quot;&lt;/span&gt; +&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;        &lt;span style="color: #006080"&gt;&amp;quot;&amp;lt;img src=\&amp;quot;/_imgs/btn_off_lookup.gif\&amp;quot; id=\&amp;quot;&amp;quot;&lt;/span&gt; + name + &lt;span style="color: #006080"&gt;&amp;quot;\&amp;quot; class=\&amp;quot;ms-crm-Lookup\&amp;quot; req=\&amp;quot;&amp;quot;&lt;/span&gt; + reqLevel + &lt;span style="color: #006080"&gt;&amp;quot;\&amp;quot; style=\&amp;quot;ime-mode:auto\&amp;quot; lookuptypes=\&amp;quot;&amp;quot;&lt;/span&gt; + lookupTypes + &lt;span style="color: #006080"&gt;&amp;quot;\&amp;quot; lookuptypenames=\&amp;quot;&amp;quot;&lt;/span&gt; + lookupTypeNames + &lt;span style="color: #006080"&gt;&amp;quot;\&amp;quot; lookuptypeIcons=\&amp;quot;&amp;quot;&lt;/span&gt; + lookupTypeIcons + &lt;span style="color: #006080"&gt;&amp;quot;\&amp;quot; lookupclass=\&amp;quot;BasicCustomer\&amp;quot; lookupbrowse=\&amp;quot;0\&amp;quot; lookupstyle=\&amp;quot;single\&amp;quot; defaulttype=\&amp;quot;0\&amp;quot; autoresolve=\&amp;quot;1\&amp;quot; showproperty=\&amp;quot;1\&amp;quot; resolveemailaddress=\&amp;quot;0\&amp;quot;&amp;gt;&amp;quot;&lt;/span&gt; +&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;        &lt;span style="color: #006080"&gt;&amp;quot;&amp;lt;a href=\&amp;quot;#\&amp;quot; onclick=\&amp;quot;previousSibling.click();\&amp;quot; tabindex=\&amp;quot;-1\&amp;quot;&amp;gt;&amp;lt;/a&amp;gt;&amp;quot;&lt;/span&gt; +&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;        &lt;span style="color: #006080"&gt;&amp;quot;&amp;lt;/td&amp;gt;&amp;quot;&lt;/span&gt; +&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;        &lt;span style="color: #006080"&gt;&amp;quot;&amp;lt;/tr&amp;gt;&amp;quot;&lt;/span&gt; +&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;        &lt;span style="color: #006080"&gt;&amp;quot;&amp;lt;/table&amp;gt;&amp;quot;&lt;/span&gt;;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&amp;#160;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;   &lt;span style="color: #0000ff"&gt;return&lt;/span&gt; html;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;}&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&amp;#160;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #008000"&gt;/******************************************************************************&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #008000"&gt;* A sample event handler. As the customer lookup does not exist on the form,&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #008000"&gt;* you cannot add an OnChange event handler in the CRM client. This method is&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #008000"&gt;* used as an alternative.&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #008000"&gt;*****************************************************************************/&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;function Customer_OnChange() {&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;   alert(&lt;span style="color: #006080"&gt;&amp;quot;Customer changed&amp;quot;&lt;/span&gt;);&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;}&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&amp;#160;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #008000"&gt;/******************************************************************************&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #008000"&gt;* Helper function. Retrieves a field by its name.&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #008000"&gt;*****************************************************************************/&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;GetField = function(name) {&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;   &lt;span style="color: #0000ff"&gt;return&lt;/span&gt; crmForm.all.item(name);&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;}&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&amp;#160;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #008000"&gt;/******************************************************************************&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #008000"&gt;* Helper function. Retrieves the id of the TD element hosting a lookup control.&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #008000"&gt;*****************************************************************************/&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;GetLookupCellId = function(name) {&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;   &lt;span style="color: #0000ff"&gt;return&lt;/span&gt; name + &lt;span style="color: #006080"&gt;&amp;quot;_d&amp;quot;&lt;/span&gt;;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;}&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&amp;#160;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #008000"&gt;/******************************************************************************&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #008000"&gt;* Helper function. Retrieves the TD element hosting a lookup control.&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #008000"&gt;*****************************************************************************/&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;GetLookupCell = function(name) {&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;   &lt;span style="color: #0000ff"&gt;return&lt;/span&gt; GetField(GetLookupCellId(name));&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;}&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&amp;#160;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #008000"&gt;/******************************************************************************&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #008000"&gt;* ExchangeLookups replaces an existing lookup control with another one. Used&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #008000"&gt;* to replace the account lookup with the customer lookup and vice versa.&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #008000"&gt;*****************************************************************************/&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;ExchangeLookups = function(lookupToShowId, lookupToHideId, newLookupHtml) {&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;   var prevCell = GetLookupCell(lookupToHideId);&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;   var prevCellIndex = prevCell.cellIndex;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;   var row = prevCell.parentNode;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&amp;#160;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;   row.deleteCell(prevCellIndex);&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&amp;#160;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;   var newCell = row.insertCell(prevCellIndex);&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;   newCell.id = GetLookupCellId(lookupToShowId);&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;   newCell.innerHTML = newLookupHtml;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;}&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&amp;#160;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #008000"&gt;/******************************************************************************&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #008000"&gt;* CreateCustomerField creates the customer lookup and replaces the account&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #008000"&gt;* lookup on the form.&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #008000"&gt;*****************************************************************************/&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;function CreateCustomerField() {&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;   var customerValue;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&amp;#160;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;   &lt;span style="color: #0000ff"&gt;if&lt;/span&gt; (AccountLookup.DataValue != &lt;span style="color: #0000ff"&gt;null&lt;/span&gt;) {&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;      customerValue = AccountLookup.DataValue;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;   }&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;   &lt;span style="color: #0000ff"&gt;else&lt;/span&gt; {&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;      customerValue = ContactLookup.DataValue;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;   }&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&amp;#160;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;   var accountLookupEditField = GetField(AccountFieldName + &lt;span style="color: #006080"&gt;&amp;quot;_ledit&amp;quot;&lt;/span&gt;);&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;   var tabIndex;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&amp;#160;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;   &lt;span style="color: #008000"&gt;//If the account field supports the auto-resolve feature, then the tab-index is stored on the text field&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;   &lt;span style="color: #008000"&gt;//of the lookup control&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;   &lt;span style="color: #0000ff"&gt;if&lt;/span&gt; (accountLookupEditField == &lt;span style="color: #0000ff"&gt;null&lt;/span&gt;) {&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;      tabIndex = AccountLookup.getAttribute(&lt;span style="color: #006080"&gt;&amp;quot;tabIndex&amp;quot;&lt;/span&gt;);&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;   }&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&amp;#160;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;   &lt;span style="color: #008000"&gt;//otherwise we use the same tabIndex as in the 3.0 implementation.&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;   &lt;span style="color: #0000ff"&gt;else&lt;/span&gt; {&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;      tabIndex = accountLookupEditField.getAttribute(&lt;span style="color: #006080"&gt;&amp;quot;tabIndex&amp;quot;&lt;/span&gt;);&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;   }&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&amp;#160;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;   &lt;span style="color: #008000"&gt;//Standard values for a customer field&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;   var lookupTypes = &lt;span style="color: #006080"&gt;&amp;quot;1,2&amp;quot;&lt;/span&gt;;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;   var lookupTypeNames = &lt;span style="color: #006080"&gt;&amp;quot;account:1,contact:2&amp;quot;&lt;/span&gt;;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;   var lookupTypeIcons = &lt;span style="color: #006080"&gt;&amp;quot;/_imgs/ico_16_1.gif:/_imgs/ico_16_2.gif&amp;quot;&lt;/span&gt;;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;   var reqLevel = AccountLookup.getAttribute(&lt;span style="color: #006080"&gt;&amp;quot;req&amp;quot;&lt;/span&gt;);&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;   var customerIdHtml = GetLookupFieldHtml(CustomerFieldName, tabIndex, lookupTypes, lookupTypeNames, lookupTypeIcons, reqLevel);&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&amp;#160;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;   &lt;span style="color: #008000"&gt;//    ExchangeLookups(CustomerFieldName, AccountFieldName, customerIdHtml);&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;   ExchangeLookups(CustomerFieldName, CreatedByName, customerIdHtml);&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&amp;#160;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;   CustomerLookup = GetField(CustomerFieldName);&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;   CustomerLookup.DataValue = customerValue;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;   &lt;span style="color: #008000"&gt;//  Here we are able to attach events to the customer field &lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;   &lt;span style="color: #008000"&gt;//    CustomerLookup.onchange = Customer_OnChange;&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;}&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&amp;#160;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #008000"&gt;/******************************************************************************&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #008000"&gt;* Main code: If the required fields are avaialable on the form, the account&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #008000"&gt;* lookup is replaced with a customer lookup. The CreatedByInnerHTML is saved to&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #008000"&gt;* restore the original state later (see OnSave).&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #008000"&gt;*****************************************************************************/&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #0000ff"&gt;if&lt;/span&gt; (AllFieldsAvailable) {&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;   CreatedByInnerHTML = GetLookupCell(CreatedByName).innerHTML;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&amp;#160;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;   CreateCustomerField();&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;}&lt;/pre&gt;&lt;br /&gt;  &lt;/div&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&amp;#160;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;strong&gt;OnSave Code&lt;/strong&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="border-right: gray 1px solid; padding-right: 4px; border-top: gray 1px solid; padding-left: 4px; font-size: 8pt; padding-bottom: 4px; margin: 20px 0px 10px; overflow: auto; border-left: gray 1px solid; width: 97.5%; cursor: text; max-height: 200px; line-height: 12pt; padding-top: 4px; border-bottom: gray 1px solid; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; background-color: #f4f4f4"&gt;&lt;br /&gt;  &lt;div style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;br /&gt;    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #008000"&gt;/******************************************************************************&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #008000"&gt;* If the required fields are available on the form, the CreatedBy&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #008000"&gt;* lookup was replaced with a customer lookup in the OnLoad event. To properly&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #008000"&gt;* save the values, we have to restore the original state, meaning that the&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #008000"&gt;* customer lookup has to be removed and the CreatedBy lookup has to be added&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #008000"&gt;* back.&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #008000"&gt;*****************************************************************************/&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #0000ff"&gt;if&lt;/span&gt; (AllFieldsAvailable) {&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;   var customer = CustomerLookup.DataValue;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&amp;#160;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;   ExchangeLookups(CreatedByName, CustomerFieldName, CreatedByInnerHTML);&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&amp;#160;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;   &lt;span style="color: #0000ff"&gt;if&lt;/span&gt; (customer == &lt;span style="color: #0000ff"&gt;null&lt;/span&gt;) {&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;      AccountLookup.DataValue = &lt;span style="color: #0000ff"&gt;null&lt;/span&gt;;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;      ContactLookup.DataValue = &lt;span style="color: #0000ff"&gt;null&lt;/span&gt;;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;   }&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&amp;#160;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;   &lt;span style="color: #0000ff"&gt;else&lt;/span&gt; &lt;span style="color: #0000ff"&gt;if&lt;/span&gt; (customer[0].type == &lt;span style="color: #006080"&gt;&amp;quot;1&amp;quot;&lt;/span&gt;) {&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;      AccountLookup.DataValue = customer;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;      ContactLookup.DataValue = &lt;span style="color: #0000ff"&gt;null&lt;/span&gt;;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;   }&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&amp;#160;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;   &lt;span style="color: #0000ff"&gt;else&lt;/span&gt; {&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;      AccountLookup.DataValue = &lt;span style="color: #0000ff"&gt;null&lt;/span&gt;;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;      ContactLookup.DataValue = customer;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;   }&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;} &lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&amp;#160;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&amp;#160;&lt;/pre&gt;&lt;br /&gt;  &lt;/div&gt;&lt;br /&gt;&lt;/div&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/702659527316624506-7582226236736768663?l=billoncrmtech.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://billoncrmtech.blogspot.com/feeds/7582226236736768663/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=702659527316624506&amp;postID=7582226236736768663' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/702659527316624506/posts/default/7582226236736768663'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/702659527316624506/posts/default/7582226236736768663'/><link rel='alternate' type='text/html' href='http://billoncrmtech.blogspot.com/2009/02/client-side-scripting-customer-fields.html' title='Client Side Scripting - Customer fields again'/><author><name>Bill Owens</name><uri>http://www.blogger.com/profile/17898790776516318212</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_WyzF5zDnkqY/SavOqTyUHgI/AAAAAAAAABs/Fuc1b2uESVY/S220/me.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-702659527316624506.post-1498870412726972374</id><published>2009-02-12T15:53:00.001-05:00</published><updated>2009-02-12T15:54:12.510-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Tips and Tricks'/><category scheme='http://www.blogger.com/atom/ns#' term='CRM 4.0'/><category scheme='http://www.blogger.com/atom/ns#' term='Rollups'/><title type='text'>CRM Update Rollup 2 Musings</title><content type='html'>&lt;p&gt;&lt;a href="http://blog.sonomapartners.com/2009/02/crm-update-rollup-2-musings.html" target="_blank"&gt;Posted by Jim Steger on February 11, 2009&lt;/a&gt;&lt;/p&gt;  &lt;hr /&gt;  &lt;p&gt;As most of you know by now, Microsoft CRM Support has released &lt;a href="http://www.microsoft.com/DOWNLOADS/details.aspx?familyid=AA671769-61E9-45C4-919F-C88199AA4241&amp;amp;displaylang=en"&gt;Update Rollup 2&lt;/a&gt; for Dynamics CRM 4.0. Here are some quick findings that we have discovered that I hope can be useful for some of you.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Exporting and importing customizations     &lt;br /&gt;&lt;/strong&gt;Update Rollup 2 made some schema changes to the customizations and the rollup documentation provides a general warning about only export/importing customizations from system with the same rollup installed. This approach is painful for our development environment and for ISVs, as it is not easy to guarantee that all customers will be on the same rollup. What I learned from the product and support teams (and confirmed with some quick testing) is the schema changes to the customization file in UR2 is confined to just Templates and Outlook Synchronization areas.     &lt;br /&gt;&lt;img src="http://www.sonomapartners.com/images/blog/090211-rollupcustomizations.jpg" /&gt;    &lt;br /&gt;Therefore, if you need to import/export between different rollup deployments, you should be ok provided you excluded those two customizations from your file.&lt;/p&gt;  &lt;p&gt;I am hoping that CRM Support will be more specific with the customization schema changes on future rollup releases, or better yet, allow them to be backwards compatible between rollups.   &lt;br /&gt;&lt;strong&gt;Manually configured steps     &lt;br /&gt;&lt;/strong&gt;There are a number of hotfixes that require manual configuration. I didn't see these documented too well (although I could have missed it). Anyway, here is a list that we have discovered. Note that this could just be a partial list.&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://support.microsoft.com/kb/955452/"&gt;955452&lt;/a&gt; (http://support.microsoft.com/kb/955452/ ) Line feeds are not used when you send an e-mail message that uses an e-mail template to render data that has line feeds in Microsoft Dynamics CRM 4.0 &lt;/li&gt;    &lt;li&gt;&lt;a href="http://support.microsoft.com/kb/955745/"&gt;955745&lt;/a&gt; (http://support.microsoft.com/kb/955745/ ) Error message when you try to configure the Microsoft Dynamics CRM 4.0 client for Outlook: &amp;quot;This implementation is not part of the Windows Platform FIPS validated cryptographic algorithms&amp;quot; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://support.microsoft.com/kb/956527/"&gt;956527&lt;/a&gt; (http://support.microsoft.com/kb/956527/ ) The Microsoft Dynamics CRM client for Outlook consumes three times as much memory in version 4.0 as in version 3.0 &lt;/li&gt;    &lt;li&gt;&lt;a href="http://support.microsoft.com/kb/959248/"&gt;959248&lt;/a&gt; (http://support.microsoft.com/kb/959248/ ) Microsoft Dynamics CRM 4.0 slows to unacceptable levels when you process e-mail messages by using the Microsoft Dynamics CRM E-mail Router &lt;/li&gt;    &lt;li&gt;&lt;a href="http://support.microsoft.com/kb/957871/"&gt;957871&lt;/a&gt; (http://support.microsoft.com/kb/957871/ ) The Workflow Expansion Task records cause the AsyncOperationBase table in the MSCRM database to grow too large in Microsoft Dynamics CRM 4.0 &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;strong&gt;Miscellaneous Notes/FAQ&lt;/strong&gt;&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;When you install any rollup, it will affect the entire deployment. For those of you that leverage multi-tenancy (as we do in our client development environment), you need to be aware of this and plan the release accordingly. Pay special care to the customizations changes and quickly review each hotfix within the rollup to ensure there won't be compatibility issues with your custom code. Naturally if your custom code follows the supported SDK, you should be ok from rollup to rollup. &lt;/li&gt;    &lt;li&gt;Update Rollup 2 may screw up your existing CRM web.config. I recommend you make a backup of the CRM web.config file prior to running the rollup. Here are two errors we have seen:      &lt;ul&gt;       &lt;li&gt;Publishing workflow rules fails. This error is now documented in the &lt;a href="http://support.microsoft.com/kb/959419"&gt;release notes&lt;/a&gt;. You need to update the CRM web.config files and add the following line to the &amp;lt;authorizedTypes&amp;gt; section:          &lt;br /&gt;&amp;lt;authorizedType Assembly=&amp;quot;mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089&amp;quot; Namespace=&amp;quot;System.Globalization&amp;quot; TypeName=&amp;quot;CultureInfo&amp;quot; Authorized=&amp;quot;True&amp;quot;/&amp;gt;&lt;/li&gt;        &lt;li&gt;We had our IFD settings wiped out from the CRM web.config. To correct, we used the &lt;a href="http://support.microsoft.com/kb/948779"&gt;IFD tool&lt;/a&gt; to reset the values.&lt;/li&gt;     &lt;/ul&gt;   &lt;/li&gt;    &lt;li&gt;Microsoft recommends that you keep the update rollups between the Outlook client and the CRM server in sync. I am not sure this is always a hard requirement, as we have some internal Outlook clients on the latest rollup, prior to updating our server. This is something you can test, if rolling out to your Outlook clients users is not always easy to do. &lt;/li&gt;    &lt;li&gt;Each rollup *should* be cumulative. This means that you can install UR2 on a system that hasn't been patched with UR1.&lt;/li&gt; &lt;/ul&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/702659527316624506-1498870412726972374?l=billoncrmtech.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://billoncrmtech.blogspot.com/feeds/1498870412726972374/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=702659527316624506&amp;postID=1498870412726972374' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/702659527316624506/posts/default/1498870412726972374'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/702659527316624506/posts/default/1498870412726972374'/><link rel='alternate' type='text/html' href='http://billoncrmtech.blogspot.com/2009/02/crm-update-rollup-2-musings.html' title='CRM Update Rollup 2 Musings'/><author><name>Bill Owens</name><uri>http://www.blogger.com/profile/17898790776516318212</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_WyzF5zDnkqY/SavOqTyUHgI/AAAAAAAAABs/Fuc1b2uESVY/S220/me.jpg'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-702659527316624506.post-1263999578752656006</id><published>2009-02-12T15:52:00.001-05:00</published><updated>2009-02-12T15:52:16.879-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Tips and Tricks'/><category scheme='http://www.blogger.com/atom/ns#' term='CRM 4.0'/><category scheme='http://www.blogger.com/atom/ns#' term='workflow'/><title type='text'>Workflow: Determining the</title><content type='html'>&lt;p&gt;&lt;a href="http://blogs.infinite-x.net/2009/02/11/workflow-determining-the/" target="_blank"&gt;Posted by: mitch of Mitch Milam's Microsoft Discussions&lt;/a&gt;    &lt;hr /&gt;&lt;/p&gt;  &lt;p&gt;I ran into something unexpected this week at a customer site: Internal system jobs, like Matchcode Updates, stuck in with a waiting status.&amp;#160; For workflows, this usually means there are errors preventing the workflow from proceeding.&amp;#160; But, I've never seen it on internal jobs before.&lt;/p&gt;  &lt;p&gt;After asking around, Mahesh at Microsoft pointed out a method for attaining additional information regarding the status of a System Job.&amp;#160; Follow these steps:&lt;/p&gt;  &lt;p&gt;&lt;em&gt;[ as a CRM Administrator ]&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;1) Select &lt;u&gt;Settings&lt;/u&gt;, &lt;u&gt;System Jobs&lt;/u&gt; to display a list of currently running or ran jobs.&lt;/p&gt;  &lt;p&gt;2) Click the Advanced Find button and the following dialog will be displayed:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.infinite-x.net/images/4384626303e6_9C4B/image.png"&gt;&lt;img height="356" alt="image" src="http://blogs.infinite-x.net/images/4384626303e6_9C4B/image_thumb.png" width="504" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;3) Click Edit Columns then add the column &lt;strong&gt;Message,&lt;/strong&gt; as shown below:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.infinite-x.net/images/4384626303e6_9C4B/image_3.png"&gt;&lt;img height="335" alt="image" src="http://blogs.infinite-x.net/images/4384626303e6_9C4B/image_thumb_3.png" width="504" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;This will display the actual status message and allow you to determine if a workflow or system job is waiting because it is supposed to, or if it is waiting because it encountered an error.&lt;/p&gt;  &lt;p&gt;The following is a sample of system jobs - Matchcode Updates - that have failed because of an environmental change:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.infinite-x.net/images/4384626303e6_9C4B/image_4.png"&gt;&lt;img height="271" alt="image" src="http://blogs.infinite-x.net/images/4384626303e6_9C4B/image_thumb_4.png" width="504" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;Note: The status is canceled because I manually canceled these jobs after I located and corrected the issue. Their normal status would have been &lt;u&gt;Waiting&lt;/u&gt;.&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;This surely helped my troubleshooting.&amp;#160; I hope it helps yours.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/702659527316624506-1263999578752656006?l=billoncrmtech.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://billoncrmtech.blogspot.com/feeds/1263999578752656006/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=702659527316624506&amp;postID=1263999578752656006' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/702659527316624506/posts/default/1263999578752656006'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/702659527316624506/posts/default/1263999578752656006'/><link rel='alternate' type='text/html' href='http://billoncrmtech.blogspot.com/2009/02/workflow-determining.html' title='Workflow: Determining the'/><author><name>Bill Owens</name><uri>http://www.blogger.com/profile/17898790776516318212</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_WyzF5zDnkqY/SavOqTyUHgI/AAAAAAAAABs/Fuc1b2uESVY/S220/me.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-702659527316624506.post-5907051523162513770</id><published>2009-02-12T15:50:00.001-05:00</published><updated>2009-02-12T15:50:01.265-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='tool'/><category scheme='http://www.blogger.com/atom/ns#' term='CRM 4.0'/><title type='text'>ISV Utilities for Comparing Customizations and Transferring Configuration Data</title><content type='html'>&lt;p&gt;Yippie. These tools will help compare two systems and see where the changes are. &lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Inna Agranov   &lt;br /&gt;Microsoft Corporation&lt;/p&gt;  &lt;p&gt;February 2009&lt;/p&gt;  &lt;h4&gt;Summary&lt;/h4&gt;  &lt;p&gt;Learn how to build and use two new powerful tools developed for Microsoft Dynamics CRM. The Customization Comparison Utility lets you compare the customization files between two Microsoft Dynamics CRM systems and the Configuration Data Utility lets you transfer custom configuration data from one Microsoft Dynamics CRM system to another. &lt;/p&gt;  &lt;p&gt;Download the Visual Studio 2008 and Visual C# code samples for this article: &lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://go.microsoft.com/fwlink/?LinkID=141482" target="_blank"&gt;CustomizationComparisonUtility.exe&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://go.microsoft.com/fwlink/?LinkID=141483" target="_blank"&gt;ConfigurationDataUtility.exe&lt;/a&gt;&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;The Readme.doc documents that are included with the sample code contain information about how to set up and build the sample applications. The user guides contain detailed information about how to use the sample applications and view the results. &lt;/p&gt;  &lt;h4&gt;Applies To&lt;/h4&gt;  &lt;p&gt;Microsoft Dynamics CRM 4.0&lt;/p&gt;  &lt;p&gt;Microsoft Visual Studio 2008&lt;/p&gt;  &lt;h4&gt;Introduction&lt;/h4&gt;  &lt;p&gt;Microsoft Dynamics CRM is a highly customizable system. Not only you can modify different sections of the product, you can also create new components to address business needs. The Microsoft Dynamics CRM platform offers a robust set of tools, APIs, and documentation that helps you build custom business applications. As the applications built on the Microsoft Dynamics CRM platform become more and more complex, a need for specialized support tools grows. In this article you will learn about two very useful tools that help you analyze the impact of customizations on the system and maintain consistent configuration data across multiple Microsoft Dynamics CRM systems.&lt;/p&gt;  &lt;h4&gt;Evaluating the Impact of Customizations with the Customization Comparison Utility&lt;/h4&gt;  &lt;p&gt;To evaluate the impact of customizations, it is helpful to compare customization files between the source and the target systems before you import customizations. The Customization Comparison Utility helps you accomplish this task.&lt;/p&gt;  &lt;h6&gt;Analyzing Customizations&lt;/h6&gt;  &lt;p&gt;Often you have to export custom components from one Microsoft Dynamics CRM environment and import them into another, for example, from development into test or production. However, before you import customizations, it is very helpful to assess the impact of customizations on the target system. The system where you import customizations may have been changed since the last installation. You have to consider the extent of the changes and how they may affect the new installation. While some of the changes, such as renaming of the attributes or adding new attributes, are minor, other modifications, such as deletion of entities or changes in the forms may have a significant effect on the system. &lt;/p&gt;  &lt;p&gt;Analyzing and understanding the system customizations may result in more successful deployment of a new version of the application. This analysis minimizes the risk of overwriting important customization data in the target system. For example, if only several attribute names have changed, you may be able to do a plain import using the import/export functionality built into Microsoft Dynamics CRM. However, if some key components were deleted, such as entity forms, you may have to merge the customizations with the changes in the target system. Comparing customization files between the two systems helps you determine which approach will result in more successful deployment. This is also very useful when you are diagnosing the problems between two systems. By comparing the customization files, you can often identify possible causes of the existing problems.&lt;/p&gt;  &lt;h6&gt;Using the Customization Comparison Utility&lt;/h6&gt;  &lt;p&gt;The Customization Comparison utility lets you easily compare two Microsoft Dynamics CRM customization.xml files. Unlike other XML comparison tools, this utility can read and understand Microsoft Dynamics CRM schema. The results of comparison show the differences in entities, attributes, forms, views, workflows, security roles, entity maps, and relationships. You can use this tool before you import customizations into a system to evaluate the effect they will have on the system. &lt;/p&gt;  &lt;p&gt;Use the tool to compare XML customizations files between the source and the target systems. If you use a zipped customization file, make sure that it contains only one customization XML file. The following illustration shows the results of comparison between two customization files. The compared items include entities, roles, workflows, entity maps, and relationships. You can drill down into each item to see more details. From the entities, you can view the changes in attributes, forms, and system views. You can easily see the changes in source and target. It shows the items that are present in the source file and not present in the target file and the items that are present in the target file, but not in the source file. &lt;/p&gt;  &lt;p&gt;&lt;img alt="Dd442453.a7338331-120b-4f29-ab17-1c94b85e014b(en-us,MSDN.10).gif" src="http://i.msdn.microsoft.com/Dd442453.a7338331-120b-4f29-ab17-1c94b85e014b(en-us,MSDN.10).gif" /&gt;&lt;/p&gt;  &lt;p&gt;In addition to reviewing the results of the comparison in the grid, the tool includes a report that you can easily export to Microsoft Office Excel for additional analysis.&lt;/p&gt;  &lt;p&gt;The tool offers a command line version that you can run from a command prompt. &lt;/p&gt;  &lt;p&gt;For more information about how to use the tool, see the Customization Comparison user's guide included in the download package for this utility.&lt;/p&gt;  &lt;h4&gt;Transferring Configuration Data with the Configuration Data Utility&lt;/h4&gt;  &lt;p&gt;When you work with multiple environments, such as development, test, and production, or multiple Microsoft Dynamics CRM organizations, keeping consistent configuration data across all systems can be very important. The Configuration Data Utility helps you achieve this. It lets you export custom configuration data from a source Microsoft Dynamics CRM system and import it to a target Microsoft Dynamics CRM system.&lt;/p&gt;  &lt;h6&gt;Storing Configuration Data in Custom Entities&lt;/h6&gt;  &lt;p&gt;In Microsoft Dynamics CRM you often use custom entities to store business information. However, you could also use custom entities to store system configuration data. For example, if an application integrates Microsoft Dynamics CRM with a third-party system, you could create a configuration entity with attributes such as pollingtime, url, and retries to store the configuration data needed for the integration. This is very convenient because the data stored in the configuration entity can be used by the system administrators to configure a new application or update an existing application. To keep the configuration data up to date, you may have to frequently upload the new data, or have an automated task to do it.&lt;/p&gt;  &lt;p&gt;Using the Configuration Data Utility gives you a simple and efficient way to transfer custom configuration data from one system to another. One of the main benefits of this utility is that you can import configuration data from multiple custom entities at the same time. While it only imports and exports data for custom entities, the tool can handle useful scenarios, such as importing records that reference other records that are also being imported.&lt;/p&gt;  &lt;p&gt;&lt;img alt="Dd442453.Important(en-us,MSDN.10).gif" src="http://i.msdn.microsoft.com/Dd442453.Important(en-us,MSDN.10).gif" /&gt;Important &lt;/p&gt;  &lt;p&gt;For the tool to work correctly, the schema for the source entities and the target entities must be identical. &lt;/p&gt;  &lt;p&gt;&lt;img alt="Dd442453.note(en-us,MSDN.10).gif" src="http://i.msdn.microsoft.com/Dd442453.note(en-us,MSDN.10).gif" /&gt;Note &lt;/p&gt;  &lt;p&gt;In more complex cases, use the Microsoft Dynamics CRM data export and import tools or Data Migration Manager to transfer data for custom and system entities.    &lt;br /&gt;For more information about these tools, see Microsoft Dynamics CRM online Help. &lt;/p&gt;  &lt;h6&gt;Using the Configuration Data Utility&lt;/h6&gt;  &lt;p&gt;Use the Configuration Data Utility to export the source system configuration data and import it into a target system. The tool provides a convenient interface that lets you select the custom entities that contain the configuration data in the source system, save the data into a data file, and then import the records from the data file into a target system.&lt;/p&gt;  &lt;p&gt;To run the tool, you must be a system administrator with appropriate privileges to create, read, and update entity instances.&lt;/p&gt;  &lt;p&gt;The following illustration shows the entities in the source system that are selected for export. &lt;/p&gt;  &lt;p&gt;&lt;img alt="Dd442453.0b8f0a81-1a17-4d77-9419-1cdc12427223(en-us,MSDN.10).gif" src="http://i.msdn.microsoft.com/Dd442453.0b8f0a81-1a17-4d77-9419-1cdc12427223(en-us,MSDN.10).gif" /&gt;&lt;/p&gt;  &lt;p&gt;For import, specify the target server where you import the configuration data and the data file that you created during export, as shown in following illustrations.&lt;/p&gt;  &lt;p&gt;&lt;img alt="Dd442453.9436a94c-f84f-4151-8d85-edc09ecaa422(en-us,MSDN.10).gif" src="http://i.msdn.microsoft.com/Dd442453.9436a94c-f84f-4151-8d85-edc09ecaa422(en-us,MSDN.10).gif" /&gt;&lt;/p&gt;  &lt;p&gt;&lt;img alt="Dd442453.5841695f-63ff-4ebb-a3b4-143657a9f759(en-us,MSDN.10).gif" src="http://i.msdn.microsoft.com/Dd442453.5841695f-63ff-4ebb-a3b4-143657a9f759(en-us,MSDN.10).gif" /&gt;&lt;/p&gt;  &lt;p&gt;For more information about how to use the tool, see the Configuration Data Utility user's guide included in the download package for this utility.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/702659527316624506-5907051523162513770?l=billoncrmtech.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://billoncrmtech.blogspot.com/feeds/5907051523162513770/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=702659527316624506&amp;postID=5907051523162513770' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/702659527316624506/posts/default/5907051523162513770'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/702659527316624506/posts/default/5907051523162513770'/><link rel='alternate' type='text/html' href='http://billoncrmtech.blogspot.com/2009/02/isv-utilities-for-comparing.html' title='ISV Utilities for Comparing Customizations and Transferring Configuration Data'/><author><name>Bill Owens</name><uri>http://www.blogger.com/profile/17898790776516318212</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_WyzF5zDnkqY/SavOqTyUHgI/AAAAAAAAABs/Fuc1b2uESVY/S220/me.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-702659527316624506.post-381436946309780577</id><published>2009-02-12T15:47:00.001-05:00</published><updated>2009-02-12T15:47:40.310-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Hotfixes'/><category scheme='http://www.blogger.com/atom/ns#' term='CRM 4.0'/><category scheme='http://www.blogger.com/atom/ns#' term='Rollups'/><title type='text'>Update Rollup 2 for Microsoft Dynamics CRM 4.0 - More Info</title><content type='html'>&lt;p&gt;&lt;a href="http://blogs.msdn.com/crm/archive/2009/02/11/update-rollup-2-for-microsoft-dynamics-crm-4-0-more-info.aspx" target="_blank"&gt;Matt Brown wrote this&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;   &lt;hr /&gt;&lt;/p&gt;  &lt;p&gt;&lt;em&gt;On 2/8/2008, the CRM Sustained Engineering team released a new version of the Update Rollup 2 packages. The new version of Update Rollup 2 addresses some of the issues that have been noted in the comments for &lt;/em&gt;&lt;a href="http://blogs.msdn.com/crm/archive/2009/01/20/update-rollup-2-for-microsoft-dynamics-crm-4-0.aspx"&gt;&lt;em&gt;this blog entry&lt;/em&gt;&lt;/a&gt;&lt;em&gt;. &lt;/em&gt;&lt;/p&gt;  &lt;p&gt;&lt;em&gt;Including:&lt;/em&gt;&lt;/p&gt;  &lt;ul&gt;   &lt;ul&gt;&lt;em&gt;&lt;/em&gt;&lt;/ul&gt;    &lt;li&gt;     &lt;p&gt;&lt;em&gt;Strings in the localized product showing up as garbage or in English.&lt;/em&gt;&lt;/p&gt;   &lt;/li&gt;    &lt;li&gt;     &lt;p&gt;&lt;em&gt;Customized web.config causing issues after Update Rollup 2 is installed.&lt;/em&gt;&lt;/p&gt;   &lt;/li&gt; &lt;/ul&gt;  &lt;ul&gt;&lt;em&gt;&lt;/em&gt;&lt;/ul&gt;  &lt;p&gt;&lt;em&gt;Customers do not need to uninstall the original Update Rollup 2 packages. The new packages will install over the top. If a customer has not been affected by the issues in the original Update Rollup 2 package they do not need to update to the new version. Customers can install Client, Server, Router Update Rollup 2 in any order.&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;&lt;em&gt;The steps for the AutoUpdate have caused some confusion. There is a different PatchId and LinkId for every language of the product. You will find a table at the bottom of this post that has the PatchId and LinkId for each Language. Note: The new packages changed the PatchId so it will need to be updated, as the previous PatchId is no longer valid.&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;&lt;em&gt;***&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;The Microsoft Dynamics CRM Sustained Engineering team released &lt;a href="http://www.microsoft.com/downloads/details.aspx?familyid=aa671769-61e9-45c4-919f-c88199aa4241&amp;amp;displaylang=en&amp;amp;tm"&gt;Microsoft Dynamics CRM 4.0 Update Rollup 2&lt;/a&gt; on Thursday, January 15, 2009. &lt;/p&gt;  &lt;p&gt;Below is the link to the release and related information about the Rollup. Please see the Knowledge Base (KB) article for more details about the Update Rollup 2 content and instructions..&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Microsoft Download Center: &lt;a href="http://www.microsoft.com/downloads/details.aspx?familyid=aa671769-61e9-45c4-919f-c88199aa4241&amp;amp;displaylang=en&amp;amp;tm"&gt;http://www.microsoft.com/downloads/details.aspx?familyid=aa671769-61e9-45c4-919f-c88199aa4241&amp;amp;displaylang=en&amp;amp;tm&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;Microsoft Knowledge Base Article: &lt;a href="http://support.microsoft.com/kb/959419"&gt;http://support.microsoft.com/kb/959419&lt;/a&gt;&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;b&gt;&lt;u&gt;Install Details about Update Rollup 2&lt;/u&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;&lt;u&gt;&lt;/u&gt;&lt;/b&gt;&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Update Rollup 1 is not a prerequisite for installing Update Rollup 2 &lt;/li&gt;    &lt;li&gt;The Update Rollup 2 client can be deployed before the server is upgraded to Update Rollup 2 &lt;/li&gt;    &lt;li&gt;Update Rollup 2 can be uninstalled &lt;/li&gt;    &lt;li&gt;Unlike Update Rollup 1, Update Rollup 2 is packaged so that each language is packaged individually. As a result, the download size of the packages for Update Rollup 2 is significantly smaller. For example, the CRM Server package size is reduced from about 171 MB in Update Rollup 1 to about 9 MB in Update Rollup 2. The Outlook Client package size is reduced from about 78 MB in Update Rollup 1 to about 4 MB in Update Rollup 2 &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;b&gt;&lt;u&gt;How to avoid a required reboot when installing a patch for the CRM Outlook Client&lt;/u&gt;&lt;/b&gt;&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Before starting the update process, go to Options from the CRM menu. On the &amp;#8220;General&amp;#8221; tab, uncheck the bottom checkbox that says &amp;#8220;Always run the&amp;#8230;Host process&amp;#8221; and then click &amp;#8220;Ok&amp;#8221; button. &lt;/li&gt;    &lt;li&gt;When manually checking for updates, go ahead and close Outlook by choosing Exit from Outlook&amp;#8217;s File menu. This will close Outlook along with the CRM add-in and the Hoster process. &lt;/li&gt;    &lt;li&gt;Now check for updates by selecting All Programs from the Start menu. Then select Microsoft Dynamics CRM 4.0 and choose Update. &lt;/li&gt;    &lt;li&gt;Restart Outlook after the patch is installed. &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt;&lt;em&gt; If the user doesn&amp;#8217;t want to make the permanent change of always having the Hoster process exit when Outlook exits, they can close the Hoster process manually after Outlook has been closed by right clicking on the Dynamics icon in the Notification Area of the Task Bar.&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;&lt;u&gt;Making Update Rollup 2 available to your clients via AutoUpdate:&lt;/u&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;You can find more information about AutoUpdate in &lt;a href="http://blogs.msdn.com/crm/pages/bio-eric-newell.aspx"&gt;Eric Newell&lt;/a&gt;&amp;#8217;s blog entry at &lt;a href="http://blogs.msdn.com/crm/archive/2008/05/08/crm-client-autoupdate.aspx"&gt;http://blogs.msdn.com/crm/archive/2008/05/08/crm-client-autoupdate.aspx&lt;/a&gt; and the Microsoft Dynamics CRM 4.0 Operating and Maintaining Guide, part of the &lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=1ceb5e01-de9f-48c0-8ce2-51633ebf4714"&gt;Microsoft Dynamics CRM 4.0 Implementation Guide&lt;/a&gt;. &lt;/p&gt;  &lt;p&gt;If you have a direct internet connection from your client machines, you can avoid some of the configuration steps and use the LinkId directly. Below are the necessary steps to configure the AutoUpdate for Update Rollup 2.&lt;/p&gt;  &lt;p&gt;&lt;em&gt;Note: These are steps 5, 6 and 7 of Eric&amp;#8217;s &lt;/em&gt;&lt;a href="http://blogs.msdn.com/crm/archive/2008/05/08/crm-client-autoupdate.aspx"&gt;&lt;em&gt;blog&lt;/em&gt;&lt;/a&gt;&lt;em&gt;.&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;&lt;em&gt;*** 2/9/2008 Update ***&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;&lt;em&gt;The steps below are for the English version of the product. The PatchId and LinkId values will be different for every localized version of CRM 4.0. There is a table at the bottom of this post that lists the correct PatchId and LinkId for each language.&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;&lt;em&gt;***&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;1. Create the configuration XML file and save it.&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&amp;lt;ClientPatches&amp;gt;&lt;/p&gt;    &lt;p&gt;&amp;#160;&amp;#160; &amp;lt;Create&amp;gt;&lt;/p&gt;    &lt;p&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;!--- *** UR2 PATCH --&amp;gt;&lt;/p&gt;    &lt;p&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;ClientPatchInfo&amp;gt;&lt;/p&gt;    &lt;p&gt;&amp;lt;!--- *** The PatchId is different for every Language. Please see the table at the end for correct Link ID to use --&amp;gt;&lt;/p&gt;    &lt;p&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;PatchId&amp;gt;{321EFF1F-4402-4554-B037-B1492FFA67E9}&amp;lt;/PatchId&amp;gt;&lt;/p&gt;    &lt;p&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;Title&amp;gt;Update Rollup 2 for Microsoft Dynamics CRM 4.0 (KB 959419)&amp;lt;/Title&amp;gt;&lt;/p&gt;    &lt;p&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;Description&amp;gt;Update Rollup 2 for Microsoft Dynamics CRM 4.0 (KB 959419)&amp;lt;/Description&amp;gt;&lt;/p&gt;    &lt;p&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;!--- *** This will make it Mandatory --&amp;gt;&lt;/p&gt;    &lt;p&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;IsMandatory&amp;gt;true&amp;lt;/IsMandatory&amp;gt;&lt;/p&gt;    &lt;p&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;IsEnabled&amp;gt;true&amp;lt;/IsEnabled&amp;gt;&lt;/p&gt;    &lt;p&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;ClientType&amp;gt;OutlookLaptop, OutlookDesktop&amp;lt;/ClientType&amp;gt;&lt;/p&gt;    &lt;p&gt;&amp;lt;!--- *** The LinkId is different for every Language. Please see the table at the end for correct Link ID to use --&amp;gt;&lt;/p&gt;    &lt;p&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;LinkId&amp;gt;140023&amp;lt;/LinkId&amp;gt;&lt;/p&gt;    &lt;p&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;/ClientPatchInfo&amp;gt;&lt;/p&gt;    &lt;p&gt;&amp;#160;&amp;#160; &amp;lt;/Create&amp;gt;&lt;/p&gt;    &lt;p&gt;&amp;lt;/ClientPatches&amp;gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;2. From the command prompt, go to the directory where the ClientPatchConfigurator.exe is located ([ServerInstallDir]\Tools and type microsoft.crm.tools.clientpatchconfigurator.exe [configfile].xml &lt;/p&gt;  &lt;p&gt;3. Once the patch has been uploaded, launch the Outlook client&lt;/p&gt;  &lt;p&gt;The dialog should now appear saying that &amp;#8220;Update Rollup 2 for Microsoft Dynamics CRM 4.0 (KB 959419)&amp;#8221; is available. If the &amp;lt;IsMandatory&amp;gt; is set to false, the client will only see the update if the user selects &amp;#8220;Check for Updates&amp;#8221; via the CRM Menu in the Outlook client.&lt;/p&gt;  &lt;p&gt;*** 2/9/2008 Update ***&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;b&gt;Arabic&lt;/b&gt;&lt;/p&gt;    &lt;p&gt;LinkID: 140023&amp;amp;clcid=0x401&lt;/p&gt;    &lt;p&gt;PatchID: {5976FEF7-2939-4597-B849-378B5010E7EA}&lt;/p&gt;    &lt;p&gt;&lt;b&gt;Chinese (Simplified)&lt;/b&gt;&lt;/p&gt;    &lt;p&gt;LinkID: 140023&amp;amp;clcid=0x804&lt;/p&gt;    &lt;p&gt;PatchID: {1F9AD22B-7E77-4704-94F2-ED4C9A9204FE}&lt;/p&gt;    &lt;p&gt;&lt;b&gt;Chinese (Hong Kong)&lt;/b&gt;&lt;/p&gt;    &lt;p&gt;LinkID: 140023&amp;amp;clcid=0xc04&lt;/p&gt;    &lt;p&gt;PatchID: {8E4BD4EB-6024-4F50-9F8B-ECB2D2962268}&lt;/p&gt;    &lt;p&gt;&lt;b&gt;Chinese (Traditional)&lt;/b&gt;&lt;/p&gt;    &lt;p&gt;LinkID: 140023&amp;amp;clcid=0x404&lt;/p&gt;    &lt;p&gt;PatchID: {544B5D8F-1561-4079-9D1B-871958FD5784}&lt;/p&gt;    &lt;p&gt;&lt;b&gt;Czech&lt;/b&gt;&lt;/p&gt;    &lt;p&gt;LinkID: 140023&amp;amp;clcid=0x405&lt;/p&gt;    &lt;p&gt;PatchID: {7703B3AB-5040-43A0-9E51-C679C1D901DB}&lt;/p&gt;    &lt;p&gt;&lt;b&gt;Danish&lt;/b&gt;&lt;/p&gt;    &lt;p&gt;LinkID: 140023&amp;amp;clcid=0x406&lt;/p&gt;    &lt;p&gt;PatchID: {9CE94585-65D2-4032-8E9C-2BEC113DBBC5}&lt;/p&gt;    &lt;p&gt;&lt;b&gt;Dutch&lt;/b&gt;&lt;/p&gt;    &lt;p&gt;LinkID: 140023&amp;amp;clcid=0x413&lt;/p&gt;    &lt;p&gt;PatchID: {B0DABBC4-7E03-4BF4-85CB-7F6556D7A57D}&lt;/p&gt;    &lt;p&gt;&lt;b&gt;English &lt;/b&gt;&lt;/p&gt;    &lt;p&gt;LinkID: 140023&amp;amp;clcid=0x409 (or just 140023)&lt;/p&gt;    &lt;p&gt;PatchID: {321EFF1F-4402-4554-B037-B1492FFA67E9}&lt;/p&gt;    &lt;p&gt;&lt;b&gt;Finish&lt;/b&gt;&lt;/p&gt;    &lt;p&gt;LinkID: 140023&amp;amp;clcid=0x40b&lt;/p&gt;    &lt;p&gt;PatchID: {318C90C1-FE54-4383-BF1F-B9C20BBD2E58}&lt;/p&gt;    &lt;p&gt;&lt;b&gt;French&lt;/b&gt;&lt;/p&gt;    &lt;p&gt;LinkID: 140023&amp;amp;clcid=0x40c&lt;/p&gt;    &lt;p&gt;PatchID: {AA73B91A-CDAD-43CB-AD46-725AC839DAA4}&lt;/p&gt;    &lt;p&gt;&lt;b&gt;German&lt;/b&gt;&lt;/p&gt;    &lt;p&gt;LinkID: 140023&amp;amp;clcid=0x407&lt;/p&gt;    &lt;p&gt;PatchID: {C9344B1E-E32A-4C78-ADAB-332C3F934A95}&lt;/p&gt;    &lt;p&gt;&lt;b&gt;Greek&lt;/b&gt;&lt;/p&gt;    &lt;p&gt;LinkID: 140023&amp;amp;clcid=0x408&lt;/p&gt;    &lt;p&gt;PatchID: {460B3EBE-525F-44C2-8F59-D71DAA1E0136}&lt;/p&gt;    &lt;p&gt;&lt;b&gt;Hebrew&lt;/b&gt;&lt;/p&gt;    &lt;p&gt;LinkID: 140023&amp;amp;clcid=0x40d&lt;/p&gt;    &lt;p&gt;PatchID: {9C5A6F83-2C6E-4B32-91D8-6ADB7E279184}&lt;/p&gt;    &lt;p&gt;&lt;b&gt;Hungarian&lt;/b&gt;&lt;/p&gt;    &lt;p&gt;LinkID: 140023&amp;amp;clcid=0x40e&lt;/p&gt;    &lt;p&gt;PatchID: {CB0F2A7F-11F1-4AEE-AF5F-78A485DEB43A}&lt;/p&gt;    &lt;p&gt;&lt;b&gt;Italian&lt;/b&gt;&lt;/p&gt;    &lt;p&gt;LinkID: 140023&amp;amp;clcid=0x410&lt;/p&gt;    &lt;p&gt;PatchID: {1BF9AC1B-C4B8-4555-AABE-595C653C1A0D}&lt;/p&gt;    &lt;p&gt;&lt;b&gt;Japanese&lt;/b&gt;&lt;/p&gt;    &lt;p&gt;LinkID: 140023&amp;amp;clcid=0x411&lt;/p&gt;    &lt;p&gt;PatchID: {FF755164-2686-4B81-860A-13B66A62A10A}&lt;/p&gt;    &lt;p&gt;&lt;b&gt;Korean&lt;/b&gt;&lt;/p&gt;    &lt;p&gt;LinkID: 140023&amp;amp;clcid=0x412&lt;/p&gt;    &lt;p&gt;PatchID: {6FD317AE-D2E1-4307-9E4F-F324B6615632}&lt;/p&gt;    &lt;p&gt;&lt;b&gt;Norwegian&lt;/b&gt;&lt;/p&gt;    &lt;p&gt;LinkID: 140023&amp;amp;clcid=0x414&lt;/p&gt;    &lt;p&gt;PatchID: {821536C9-5E42-4B95-879B-DEAD921C8510}&lt;/p&gt;    &lt;p&gt;&lt;b&gt;Polish&lt;/b&gt;&lt;/p&gt;    &lt;p&gt;LinkID: 140023&amp;amp;clcid=0x415&lt;/p&gt;    &lt;p&gt;PatchID: {D5D73DEA-FBC7-4B73-BDAF-3C54CD735DB0}&lt;/p&gt;    &lt;p&gt;&lt;b&gt;Portuguese (Brazil)&lt;/b&gt;&lt;/p&gt;    &lt;p&gt;LinkID: 140023&amp;amp;clcid=0x416&lt;/p&gt;    &lt;p&gt;PatchID: {98557D6F-49E8-4280-9435-9FE0CD6979F5}&lt;/p&gt;    &lt;p&gt;&lt;b&gt;Portuguese (Portugal)&lt;/b&gt;&lt;/p&gt;    &lt;p&gt;LinkID: 140023&amp;amp;clcid=0x816&lt;/p&gt;    &lt;p&gt;PatchID: {63F4323D-5341-4EC2-A7E6-6EB6A12E5EC5}&lt;/p&gt;    &lt;p&gt;&lt;b&gt;Russian&lt;/b&gt;&lt;/p&gt;    &lt;p&gt;LinkID: 140023&amp;amp;clcid=0x419&lt;/p&gt;    &lt;p&gt;PatchID: {D6A8BD6F-E3AF-42DB-95C1-4538520C227D}&lt;/p&gt;    &lt;p&gt;&lt;b&gt;Spanish&lt;/b&gt;&lt;/p&gt;    &lt;p&gt;LinkID: 140023&amp;amp;clcid=0xc0a&lt;/p&gt;    &lt;p&gt;PatchID: {52B9A75C-22E0-4556-B978-9CF5CAB5353F}&lt;/p&gt;    &lt;p&gt;&lt;b&gt;Swedish&lt;/b&gt;&lt;/p&gt;    &lt;p&gt;LinkID: 140023&amp;amp;clcid=0x41d&lt;/p&gt;    &lt;p&gt;PatchID: {75EF6272-B9A7-4C78-87B4-1730B019C431}&lt;/p&gt;    &lt;p&gt;&lt;b&gt;Turkish&lt;/b&gt;&lt;/p&gt;    &lt;p&gt;LinkID: 140023&amp;amp;clcid=0x41f&lt;/p&gt;    &lt;p&gt;PatchID: {6F3E936F-F745-44CE-8412-EA5CDE05748D}&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;Keep your comments, experiences, and observations coming. We're listening.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/crm/pages/bio-matt-brown.aspx"&gt;Matt Brown&lt;/a&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/702659527316624506-381436946309780577?l=billoncrmtech.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://billoncrmtech.blogspot.com/feeds/381436946309780577/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=702659527316624506&amp;postID=381436946309780577' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/702659527316624506/posts/default/381436946309780577'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/702659527316624506/posts/default/381436946309780577'/><link rel='alternate' type='text/html' href='http://billoncrmtech.blogspot.com/2009/02/update-rollup-2-for-microsoft-dynamics.html' title='Update Rollup 2 for Microsoft Dynamics CRM 4.0 - More Info'/><author><name>Bill Owens</name><uri>http://www.blogger.com/profile/17898790776516318212</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_WyzF5zDnkqY/SavOqTyUHgI/AAAAAAAAABs/Fuc1b2uESVY/S220/me.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-702659527316624506.post-4772311643250648705</id><published>2009-02-12T15:45:00.001-05:00</published><updated>2009-02-12T15:45:08.416-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Accelerators'/><category scheme='http://www.blogger.com/atom/ns#' term='CRM 4.0'/><category scheme='http://www.blogger.com/atom/ns#' term='CRM On-line'/><title type='text'>Accelerators and Microsoft Dynamics CRM Online</title><content type='html'>&lt;p&gt;&lt;a href="http://blogs.msdn.com/crm/archive/2009/02/06/accelerators-and-microsoft-dynamics-crm-online.aspx" target="_blank"&gt;Laura Robinson wrote this&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;   &lt;hr /&gt;&lt;/p&gt;  &lt;p&gt;The Microsoft Dynamics CRM 4.0 Accelerators have been rolling out over the last couple of months and one of the questions we&amp;#8217;ve been working on in the CRM Online TS team is, how can we make these accelerators work for Microsoft Dynamics CRM Online?&amp;#160; CRM Online, at the moment, operates under three distinct constraints as compared to the On-Premise or Partner Hosted versions: &lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;Because Microsoft hosts the servers there is no custom code on the server &lt;/li&gt;    &lt;li&gt;WLID Authentication &lt;/li&gt;    &lt;li&gt;No custom reports uploaded to the server &lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;More information about the differences between Online and On-Premise can be found on &lt;a href="http://msdn.microsoft.com/en-us/library/cc462942.aspx"&gt;MSDN&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;In light of these constraints, some of the 4.0 Accelerators will not work with Online at all, some will work partially if you import just the customizations but with minimal value (e.g. &lt;a href="http://blogs.msdn.com/dynamicscrmonline/archive/2009/01/06/crm-4-0-accelerators-eservice.aspx"&gt;eService Accelerator&lt;/a&gt;), and others will work partially with minimal effort and still provide value to customers.&amp;#160; Two of the accelerators that provide value to an Online org are: Extended Sales Forecasting and Event Management.&amp;#160; &lt;/p&gt;  &lt;p&gt;These accelerators contain custom entities, security roles, and workflows that can be imported to CRM Online and provide some value to an Online organization that is looking for a forecasting or event management template or solution.&amp;#160; Please note that there are some components with these accelerators that will not work in Online; in particular the Extended Sales Forecasting accelerator contains custom .rdl files to upload which are not possible in Online.&amp;#160; &lt;/p&gt;  &lt;p&gt;Event Management provides web portal customizations to allow for extranet event management registration, which is not possible to incorporate into Online.&amp;#160; In the following blogs, I discuss how these accelerators can be used in CRM Online as well as some workarounds for the components that cannot be incorporated:&amp;#160; &lt;a href="http://blogs.msdn.com/dynamicscrmonline/archive/2008/12/10/crm-accelerators-for-crm-online-extended-sales-forecasting.aspx"&gt;Extended Sales Forecasting&lt;/a&gt;, &lt;a href="http://blogs.msdn.com/dynamicscrmonline/archive/2008/12/31/crm-4-0-accelerators-for-crm-online-event-management.aspx"&gt;Event Management&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;Cheers,&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/crm/pages/bio-laura-robinson.aspx"&gt;Laura Robinson&lt;/a&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/702659527316624506-4772311643250648705?l=billoncrmtech.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://billoncrmtech.blogspot.com/feeds/4772311643250648705/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=702659527316624506&amp;postID=4772311643250648705' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/702659527316624506/posts/default/4772311643250648705'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/702659527316624506/posts/default/4772311643250648705'/><link rel='alternate' type='text/html' href='http://billoncrmtech.blogspot.com/2009/02/accelerators-and-microsoft-dynamics-crm.html' title='Accelerators and Microsoft Dynamics CRM Online'/><author><name>Bill Owens</name><uri>http://www.blogger.com/profile/17898790776516318212</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_WyzF5zDnkqY/SavOqTyUHgI/AAAAAAAAABs/Fuc1b2uESVY/S220/me.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-702659527316624506.post-5322804901069750686</id><published>2009-02-12T15:38:00.001-05:00</published><updated>2009-02-12T15:38:35.298-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='tool'/><category scheme='http://www.blogger.com/atom/ns#' term='CRM 4.0'/><title type='text'>Report Scheduler Tool</title><content type='html'>&lt;p&gt;&lt;a href="http://blogs.msdn.com/dynamicscrmonline/archive/2009/02/03/report-scheduler-tool.aspx" target="_blank"&gt;Jonw wrote this on his blog&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;hr /&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;I created a tool using Visual Studio and the CRM web services that can execute a saved query and then email the results as a CSV file. I've presented in a video at &lt;a href="http://www.democrmonline.com/reportscheduler"&gt;www.democrmonline.com/reportscheduler&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;There is also sample code at &lt;a href="http://cid-ec03adc018cdf9dd.skydrive.live.com/self.aspx/Public/CrmReporter.zip"&gt;Report Scheduler Sample Code&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;With a small change, this tool could be used with the Windows scheduler to run automatically. I left this out intentionally since this code is NOT supported and is as is. &lt;/p&gt;  &lt;p&gt;At the least, it's quick start if you wanted to build your own.&lt;/p&gt;  &lt;p&gt;-cheers    &lt;br /&gt;Jonw&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/702659527316624506-5322804901069750686?l=billoncrmtech.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://billoncrmtech.blogspot.com/feeds/5322804901069750686/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=702659527316624506&amp;postID=5322804901069750686' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/702659527316624506/posts/default/5322804901069750686'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/702659527316624506/posts/default/5322804901069750686'/><link rel='alternate' type='text/html' href='http://billoncrmtech.blogspot.com/2009/02/report-scheduler-tool.html' title='Report Scheduler Tool'/><author><name>Bill Owens</name><uri>http://www.blogger.com/profile/17898790776516318212</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_WyzF5zDnkqY/SavOqTyUHgI/AAAAAAAAABs/Fuc1b2uESVY/S220/me.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-702659527316624506.post-1432809103394876228</id><published>2009-02-12T15:34:00.001-05:00</published><updated>2009-02-12T15:34:35.804-05:00</updated><title type='text'>Convergence 2009 – March 10-13, 2009 | New Orleans, LA</title><content type='html'>&lt;h6&gt;&amp;#160;&lt;/h6&gt;  &lt;p&gt;Discover the Power of Possibilities at Convergence and gain your competitive edge.    &lt;br /&gt;In today&amp;#8217;s difficult economic environment, there has never been more value in attending Convergence. This year is geared toward helping you leverage your Microsoft Dynamics solutions to increase visibility into operations and maximize efficiencies. You will gain exposure into new technologies, better understand your current business management software, and gather insights you need to unleash your current solution&amp;#8217;s full capabilities. Attend Convergence and learn how to:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;     &lt;p&gt; Easily analyze your financial data and respond to changing business conditions. &lt;/p&gt;   &lt;/li&gt;    &lt;li&gt;     &lt;p&gt;Effectively forecast and manage your cash flow and compliance with clear understanding of reporting and process automation capabilities.&lt;/p&gt;   &lt;/li&gt;    &lt;li&gt;     &lt;p&gt;Access your comprehensive client information and stay connected to the needs of your customers. &lt;/p&gt;   &lt;/li&gt;    &lt;li&gt;     &lt;p&gt;Leverage your implementation with related applications like SQL Server and the Microsoft Office products which are an integral part of an integrated Microsoft Dynamics business solution&lt;/p&gt;   &lt;/li&gt;    &lt;li&gt;     &lt;p&gt;Improve fiscal responsibility and the delivery of public services.&lt;/p&gt;   &lt;/li&gt;    &lt;li&gt;     &lt;p&gt;Boost efficiencies and improve accountability with accurate financial tracking and reporting&lt;/p&gt;   &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;a href="http://www.microsoft.com/dynamics/convergence/neworleans09/default.aspx"&gt;Click here&lt;/a&gt; to learn more about Convergence New Orleans and how to get registered!&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/702659527316624506-1432809103394876228?l=billoncrmtech.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://billoncrmtech.blogspot.com/feeds/1432809103394876228/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=702659527316624506&amp;postID=1432809103394876228' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/702659527316624506/posts/default/1432809103394876228'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/702659527316624506/posts/default/1432809103394876228'/><link rel='alternate' type='text/html' href='http://billoncrmtech.blogspot.com/2009/02/convergence-2009-march-10-13-2009-new.html' title='Convergence 2009 – March 10-13, 2009 | New Orleans, LA'/><author><name>Bill Owens</name><uri>http://www.blogger.com/profile/17898790776516318212</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_WyzF5zDnkqY/SavOqTyUHgI/AAAAAAAAABs/Fuc1b2uESVY/S220/me.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-702659527316624506.post-2291448803204607163</id><published>2009-02-12T15:32:00.001-05:00</published><u
