<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss xmlns:atom="http://www.w3.org/2005/Atom" xmlns:openSearch="http://a9.com/-/spec/opensearchrss/1.0/" xmlns:georss="http://www.georss.org/georss" version="2.0"><channel><atom:id>tag:blogger.com,1999:blog-780680930800461091</atom:id><lastBuildDate>Fri, 23 Oct 2009 10:09:16 +0000</lastBuildDate><title>Afna CRM</title><description>MS CRM blog for developers</description><link>http://a-crm.blogspot.com/</link><managingEditor>noreply@blogger.com (Dejan Dular)</managingEditor><generator>Blogger</generator><openSearch:totalResults>45</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" href="http://feeds.feedburner.com/AfnaCrm" type="application/rss+xml" /><feedburner:emailServiceId xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0">AfnaCrm</feedburner:emailServiceId><feedburner:feedburnerHostname xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0">http://feedburner.google.com</feedburner:feedburnerHostname><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com" /><item><guid isPermaLink="false">tag:blogger.com,1999:blog-780680930800461091.post-1655617832790237713</guid><pubDate>Fri, 23 Oct 2009 10:09:00 +0000</pubDate><atom:updated>2009-10-23T11:09:16.871+01:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">settings</category><category domain="http://www.blogger.com/atom/ns#">error</category><category domain="http://www.blogger.com/atom/ns#">web service</category><title>Error: The specified type was not recognized: name='usersettings'</title><description>&lt;p&gt;&lt;strong&gt;Simple task:&lt;/strong&gt; Try to retrieve user settings of a CRM user.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Simple solution:     &lt;br /&gt;&lt;/strong&gt;RetrieveUserSettingsSystemUserRequest request = new RetrieveUserSettingsSystemUserRequest();    &lt;br /&gt;request.EntityId = systemUserId;    &lt;br /&gt;request.ColumnSet = new AllColumns();&lt;/p&gt;  &lt;p&gt;RetrieveUserSettingsSystemUserResponse response= (RetrieveUserSettingsSystemUserResponse)crmService.Execute(request);&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;NOT!&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;The specified type was not recognized: name='usersettings', namespace='http://schemas.microsoft.com/crm/2007/WebServices', at &amp;lt;BusinessEntity xmlns='http://schemas.microsoft.com/crm/2006/WebServices'&amp;gt;.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h3&gt;&lt;/h3&gt;  &lt;h4&gt;Real solution:&lt;/h4&gt;  &lt;p&gt;Add the following line: request.ReturnDynamicEntities = true;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/780680930800461091-1655617832790237713?l=a-crm.blogspot.com'/&gt;&lt;/div&gt;</description><link>http://a-crm.blogspot.com/2009/10/error-specified-type-was-not-recognized.html</link><author>noreply@blogger.com (Dejan Dular)</author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-780680930800461091.post-7915950776278722123</guid><pubDate>Wed, 09 Sep 2009 06:27:00 +0000</pubDate><atom:updated>2009-09-09T07:27:04.961+01:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">exam</category><title>Microsoft CRM 4.0 – Applications certification and SQL 2008</title><description>&lt;p&gt;On Microsoft learning page (&lt;a href="http://www.microsoft.com/learning/en/us/certification/dynamics-crm-professional.aspx#tab2"&gt;http://www.microsoft.com/learning/en/us/certification/dynamics-crm-professional.aspx#tab2&lt;/a&gt;) it is said that exam 70-431 - Microsoft SQL Server 2005 – Implementation and Maintenance is elective for Microsoft Certified Business Management Solutions Professional – Applications for Microsoft Dynamics CRM 4.0 certification.&lt;/p&gt;  &lt;p&gt;There is nothing said about SQL 2008 exams on this page.&lt;/p&gt;  &lt;p&gt;So I sent an email to Microsoft and here is their response:&lt;/p&gt;  &lt;p&gt;&lt;font face="Courier New"&gt;Dear Dejan,     &lt;br /&gt;Thank you for your email.      &lt;br /&gt;We are glad to inform you that the Exam 70-432: TS: Microsoft SQL Server 2008, Implementation and Maintenance can be counted as an elective for Microsoft Certified Business Management Solutions Professional – Applications for Microsoft Dynamics CRM 4.0 certification.      &lt;br /&gt;As that new exam has been released recently, it has not been added to the certification path yet.      &lt;br /&gt;Please note that the update of the Certification Tree has been planned for the end of September 2009.      &lt;br /&gt;Then, the exam 70-431 will be visible in the certification path for      &lt;br /&gt;Applications for Microsoft Dynamics CRM4.0 certification on the      &lt;br /&gt;Microsoft Learning website, as that certification will be uploaded to the Transcripts of all customers who have completed the certification requirements by passing exam 70-432.      &lt;br /&gt;We hope that provided information is of assistance.      &lt;br /&gt;If you have any further questions please get in touch with us and we will be happy to assist you in any way we can.&lt;/font&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/780680930800461091-7915950776278722123?l=a-crm.blogspot.com'/&gt;&lt;/div&gt;</description><link>http://a-crm.blogspot.com/2009/09/microsoft-crm-40-applications.html</link><author>noreply@blogger.com (Dejan Dular)</author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-780680930800461091.post-3681346035765640729</guid><pubDate>Mon, 07 Sep 2009 08:33:00 +0000</pubDate><atom:updated>2009-09-07T12:22:07.488+01:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">javascript</category><category domain="http://www.blogger.com/atom/ns#">custom entity</category><category domain="http://www.blogger.com/atom/ns#">url</category><title>Link to custom entity – use of etn instead of etc argument</title><description>&lt;p&gt;If you want to create a direct link to an out-of-a-box entity it is a very simple task: Right-click on one instance (let’s say account) and select “Copy Shortcut”.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh5.ggpht.com/_QITJ50wfKVM/SqTFULVEHSI/AAAAAAAABM8/ymy3KO7Y3u8/s1600-h/image%5B2%5D.png"&gt;&lt;img style="border: 0px none ; display: inline;" title="image" alt="image" src="http://lh6.ggpht.com/_QITJ50wfKVM/SqTFUR7s1lI/AAAAAAAABNA/0DxZfjVb7J8/image_thumb.png?imgmax=800" border="0" height="149" width="244" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Then just just change the GUID in the URL to open desired account. For the Account this URL looks like this: &lt;span style="font-family:Courier;"&gt;http://SERVER:PORT/OrganizationName/sfa/accts/edit.aspx?id=&lt;strong&gt;{GUID}&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;  &lt;h4&gt;Custom entities&lt;/h4&gt;  &lt;p&gt;All custom entities have the same URL structure: &lt;span style="font-family:Courier;"&gt;http://SERVER:PORT/OrganizationName/userdefined/edit.aspx?id=&lt;strong&gt;{GUID}&lt;/strong&gt;&amp;amp;etc=&lt;strong&gt;EntityTypeCode&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;Notice the entity type code? This code is created when creating the entity. But for some reason &lt;strong&gt;Entity Type Code can be&lt;/strong&gt; (in most cases) &lt;strong&gt;different on every CRM instance&lt;/strong&gt;. This means that if you are creating a plugin that needs to create a link to the entity, you will have to query metadata to get the code or enter that code in configuration part.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;But there is a better way: &lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Instead of “etc” argument you can use “&lt;strong&gt;etn”&lt;/strong&gt; (Entity Name) in the query string. Then use the logical name of the entity. Logical name is the same on all instances.&lt;/p&gt;  &lt;p&gt;&lt;span style="font-family:Courier;"&gt;http://SERVER:PORT/OrganizationName/userdefined/edit.aspx?id=&lt;strong&gt;{GUID}&lt;/strong&gt;&amp;amp;etn=&lt;strong&gt;EntityName&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style="font-family:Courier;"&gt;http://testsrv:5555/Contoso/userdefined/edit.aspx?id=&lt;strong&gt;{08B91EBF-525A-DE11-94A6-002354F5ABA2}&lt;/strong&gt;&amp;amp;etn=&lt;strong&gt;new_testentity&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/780680930800461091-3681346035765640729?l=a-crm.blogspot.com'/&gt;&lt;/div&gt;</description><link>http://a-crm.blogspot.com/2009/09/link-to-custom-entity-use-of-etn.html</link><author>noreply@blogger.com (Dejan Dular)</author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-780680930800461091.post-4907845490797214453</guid><pubDate>Fri, 28 Aug 2009 12:33:00 +0000</pubDate><atom:updated>2009-08-28T13:36:13.126+01:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">sql</category><category domain="http://www.blogger.com/atom/ns#">sdk</category><category domain="http://www.blogger.com/atom/ns#">metadata</category><category domain="http://www.blogger.com/atom/ns#">web service</category><title>Get a list of searchable attributes from database</title><description>&lt;p&gt;(The final solution is at the bottom)&lt;/p&gt;  &lt;p&gt;Today my colleague wanted to check which attributes were marked as searchable in a specific entity.&lt;/p&gt;  &lt;p&gt;One way to do this is to open each attribute in MSCRM and check if it is marked as searchable. A long way if you have an entity with 220 attributes.&lt;/p&gt;  &lt;p&gt;So I went to the database and checked the &lt;strong&gt;MetadataSchema.Attribute&lt;/strong&gt; table. There is a column named &lt;strong&gt;DisplayMask&lt;/strong&gt;. SDK says that display masks are following (ValidForAdvancedFind = Searchable):&lt;/p&gt;  &lt;table border="1" cellpadding="5" frame="box" rules="rows"&gt;&lt;tbody&gt;     &lt;tr valign="top"&gt;       &lt;td class="blue" width="136"&gt;&lt;b&gt;Name&lt;/b&gt;&lt;/td&gt;        &lt;td class="blue" width="43"&gt;&lt;b&gt;Value&lt;/b&gt;&lt;/td&gt;        &lt;td class="blue" width="60%"&gt;&lt;b&gt;Description&lt;/b&gt;&lt;/td&gt;     &lt;/tr&gt;      &lt;tr valign="top"&gt;       &lt;td class="dt" width="136"&gt;&lt;b&gt;None&lt;/b&gt;&lt;/td&gt;        &lt;td width="43"&gt;1&lt;/td&gt;        &lt;td width="60%"&gt;Specifies no restrictions.&lt;/td&gt;     &lt;/tr&gt;      &lt;tr valign="top"&gt;       &lt;td class="dt" width="136"&gt;&lt;b&gt;ObjectTypeCode&lt;/b&gt;&lt;/td&gt;        &lt;td width="43"&gt;4&lt;/td&gt;        &lt;td width="60%"&gt;Specifies that the attribute is an entity type code. The name of the entity is displayed.&lt;/td&gt;     &lt;/tr&gt;      &lt;tr valign="top"&gt;       &lt;td class="dt" width="136"&gt;&lt;b&gt;PrimaryName&lt;/b&gt;&lt;/td&gt;        &lt;td width="43"&gt;2&lt;/td&gt;        &lt;td width="60%"&gt;Specifies to display the attribute as the primary name.&lt;/td&gt;     &lt;/tr&gt;      &lt;tr valign="top"&gt;       &lt;td class="dt" width="136"&gt;&lt;b&gt;RequiredForForm&lt;/b&gt;&lt;/td&gt;        &lt;td width="43"&gt;0x40&lt;/td&gt;        &lt;td width="60%"&gt;Specifies that the attribute must be shown on a form.&lt;/td&gt;     &lt;/tr&gt;      &lt;tr valign="top"&gt;       &lt;td class="dt" width="136"&gt;&lt;b&gt;RequiredForGrid&lt;/b&gt;&lt;/td&gt;        &lt;td width="43"&gt;0x80&lt;/td&gt;        &lt;td width="60%"&gt;Specifies that the attribute can be shown in a grid view.&lt;/td&gt;     &lt;/tr&gt;      &lt;tr valign="top"&gt;       &lt;td class="dt" width="136"&gt;&lt;b&gt;ValidForAdvancedFind&lt;/b&gt;&lt;/td&gt;        &lt;td width="43"&gt;8&lt;/td&gt;        &lt;td width="60%"&gt;Specifies that the attribute can be shown on the Advanced Find form. This attribute is shown as Searchable in the UI.&lt;/td&gt;     &lt;/tr&gt;      &lt;tr valign="top"&gt;       &lt;td class="dt" width="136"&gt;&lt;b&gt;ValidForForm&lt;/b&gt;&lt;/td&gt;        &lt;td width="43"&gt;0x10&lt;/td&gt;        &lt;td width="60%"&gt;Specifies that the attribute can be shown on a form.&lt;/td&gt;     &lt;/tr&gt;      &lt;tr valign="top"&gt;       &lt;td class="dt" width="136"&gt;&lt;b&gt;ValidForGrid&lt;/b&gt;&lt;/td&gt;        &lt;td width="43"&gt;0x20&lt;/td&gt;        &lt;td width="60%"&gt;Specifies that the attribute can be shown in a grid view.&lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt;&lt;/table&gt;  &lt;p&gt;But the value in the database is 469762048 (this attribute is searchable)! &lt;strong&gt;Bitwise comparison fails&lt;/strong&gt;: 469762048 &amp;amp; 8 = 0 WTF!!!&lt;/p&gt;  &lt;p&gt;After some googling and 30 minutes of using reflector if found that the former values are meant to be used only when working with metadata web service, like in this example: &lt;a title="http://msdn.microsoft.com/en-us/library/cc151072.aspx" href="http://msdn.microsoft.com/en-us/library/cc151072.aspx"&gt;http://msdn.microsoft.com/en-us/library/cc151072.aspx&lt;/a&gt;&lt;/p&gt;  &lt;h4&gt; &lt;/h4&gt;  &lt;h4&gt;Thank you Reflector!&lt;/h4&gt;  &lt;p&gt;Microsoft.Crm.Platform.Sdk.dll (found it in GAC) contains &lt;strong&gt;DisplayMasks&lt;/strong&gt; enumeration in &lt;strong&gt;Microsoft.Crm.Metadata&lt;/strong&gt; namespace.&lt;/p&gt;  &lt;p&gt;This is what the reflector says:&lt;/p&gt;  &lt;pre&gt;&lt;span style="color: rgb(16, 0, 160);"&gt;public&lt;/span&gt; &lt;span style="color: rgb(16, 0, 160);"&gt;enum&lt;/span&gt; &lt;b&gt;DisplayMasks&lt;/b&gt;&lt;br /&gt;{&lt;br /&gt;  &lt;b&gt;ActivityPointerRegardingName&lt;/b&gt; = &lt;span style="color: rgb(128, 0, 0);"&gt;0x80&lt;/span&gt;,&lt;br /&gt;  &lt;b&gt;ActivityRegardingName&lt;/b&gt; = &lt;span style="color: rgb(128, 0, 0);"&gt;1&lt;/span&gt;,&lt;br /&gt;  &lt;b&gt;BitMask&lt;/b&gt; = &lt;span style="color: rgb(128, 0, 0);"&gt;0x1000&lt;/span&gt;,&lt;br /&gt;  &lt;b&gt;DynamicFormatCode&lt;/b&gt; = &lt;span style="color: rgb(128, 0, 0);"&gt;0x4000&lt;/span&gt;,&lt;br /&gt;  &lt;b&gt;None&lt;/b&gt; = &lt;span style="color: rgb(128, 0, 0);"&gt;0&lt;/span&gt;,&lt;br /&gt;  &lt;b&gt;ObjectTypeCode&lt;/b&gt; = &lt;span style="color: rgb(128, 0, 0);"&gt;0x400&lt;/span&gt;,&lt;br /&gt;  &lt;b&gt;PrimaryName&lt;/b&gt; = &lt;span style="color: rgb(128, 0, 0);"&gt;0x100&lt;/span&gt;,&lt;br /&gt;  &lt;b&gt;QueueItemPriority&lt;/b&gt; = &lt;span style="color: rgb(128, 0, 0);"&gt;0x10&lt;/span&gt;,&lt;br /&gt;  &lt;b&gt;QueueItemSender&lt;/b&gt; = &lt;span style="color: rgb(128, 0, 0);"&gt;0x20&lt;/span&gt;,&lt;br /&gt;  &lt;b&gt;QueueItemState&lt;/b&gt; = &lt;span style="color: rgb(128, 0, 0);"&gt;4&lt;/span&gt;,&lt;br /&gt;  &lt;b&gt;QueueItemStatus&lt;/b&gt; = &lt;span style="color: rgb(128, 0, 0);"&gt;8&lt;/span&gt;,&lt;br /&gt;  &lt;b&gt;QueueItemTitle&lt;/b&gt; = &lt;span style="color: rgb(128, 0, 0);"&gt;2&lt;/span&gt;,&lt;br /&gt;  &lt;b&gt;QueueItemToRecipients&lt;/b&gt; = &lt;span style="color: rgb(128, 0, 0);"&gt;0x40&lt;/span&gt;,&lt;br /&gt;  &lt;b&gt;RequiredForForm&lt;/b&gt; = &lt;span style="color: rgb(128, 0, 0);"&gt;0x20000000&lt;/span&gt;,&lt;br /&gt;  &lt;b&gt;RequiredForGrid&lt;/b&gt; = &lt;span style="color: rgb(128, 0, 0);"&gt;0x40000000&lt;/span&gt;,&lt;br /&gt;  &lt;b&gt;ResourcePointerName&lt;/b&gt; = &lt;span style="color: rgb(128, 0, 0);"&gt;0x200&lt;/span&gt;,&lt;br /&gt;  &lt;b&gt;ReturnedTypeCode&lt;/b&gt; = &lt;span style="color: rgb(128, 0, 0);"&gt;0x800&lt;/span&gt;,&lt;br /&gt;  &lt;b&gt;StateCode&lt;/b&gt; = &lt;span style="color: rgb(128, 0, 0);"&gt;0x2000&lt;/span&gt;,&lt;br /&gt;  &lt;b&gt;ValidForAdvancedFind&lt;/b&gt; = &lt;span style="color: rgb(128, 0, 0);"&gt;0x4000000&lt;/span&gt;,&lt;br /&gt;  &lt;b&gt;ValidForForm&lt;/b&gt; = &lt;span style="color: rgb(128, 0, 0);"&gt;0x8000000&lt;/span&gt;,&lt;br /&gt;  &lt;b&gt;ValidForGrid&lt;/b&gt; = &lt;span style="color: rgb(128, 0, 0);"&gt;0x10000000&lt;/span&gt;&lt;br /&gt;}&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;This means that the ValidForAdvancedFind has value of 0x4000000! I tested it with the previous example and it works! Hooray!&lt;/p&gt;&lt;br /&gt;&lt;h4&gt;Solution&lt;/h4&gt;&lt;p&gt;So the final answer to the problem of this post is:&lt;/p&gt;&lt;p style="font-weight: bold;"&gt;select * from MetadataSchema.Attribute&lt;br /&gt;where DisplayMask &amp;amp; 0x4000000 &amp;gt; 0 and EntityId = @entityId&lt;/p&gt;&lt;p&gt;Of course you can use all other values as well.&lt;/p&gt;&lt;p&gt;What I haven’t tested yet is whether you can change this mask value directly in the database - definitely not supported by Microsoft :)&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/780680930800461091-4907845490797214453?l=a-crm.blogspot.com'/&gt;&lt;/div&gt;</description><link>http://a-crm.blogspot.com/2009/08/get-list-of-searchable-attributes-from.html</link><author>noreply@blogger.com (Dejan Dular)</author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-780680930800461091.post-6788058412503346924</guid><pubDate>Thu, 16 Jul 2009 12:26:00 +0000</pubDate><atom:updated>2009-07-16T13:26:10.012+01:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">javascript</category><category domain="http://www.blogger.com/atom/ns#">notification</category><category domain="http://www.blogger.com/atom/ns#">forms</category><title>Show custom notifications on Microsoft Dynamics CRM - upgrade</title><description>&lt;p&gt;&lt;a href="http://marcoamoedo.com/"&gt;Marco Amoedo&lt;/a&gt; created cool javascript function that displays custom warning messages in Microsoft Dynamics CRM 4.0. &lt;a title="http://marcoamoedo.com/blog/show-custom-warning-messages-on-microsoft-dynamics-crm/" href="http://marcoamoedo.com/blog/show-custom-warning-messages-on-microsoft-dynamics-crm/"&gt;http://marcoamoedo.com/blog/show-custom-warning-messages-on-microsoft-dynamics-crm/&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;I liked the idea so much, that I took the script and &lt;strike&gt;upgraded&lt;/strike&gt; pimped it.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;What it does?&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;The function simply adds a notification on top of the form, like in the picture below.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh4.ggpht.com/_QITJ50wfKVM/Sl8cWLz0bbI/AAAAAAAABLY/b149JreArsY/s1600-h/image%5B2%5D.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://lh6.ggpht.com/_QITJ50wfKVM/Sl8cWWzJ1SI/AAAAAAAABLc/GPmVlAPvpNE/image_thumb.png?imgmax=800" width="244" height="154" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;You can add multiple notifications with different icons.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh5.ggpht.com/_QITJ50wfKVM/Sl8cWxe-NwI/AAAAAAAABLg/m2jaiyctqeo/s1600-h/image8.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://lh6.ggpht.com/_QITJ50wfKVM/Sl8cXYK5LzI/AAAAAAAABLk/uAKQFpmWi38/image_thumb2.png?imgmax=800" width="244" height="189" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Update or delete previously added notifications or add new ones. This image shows (after Name onChange event) changed error text, updated third notification to info style and a new warning. Compare it with previous picture.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh5.ggpht.com/_QITJ50wfKVM/Sl8cXymOq4I/AAAAAAAABLo/L-Ooyi1yiG0/s1600-h/image11.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://lh6.ggpht.com/_QITJ50wfKVM/Sl8cYFh6AuI/AAAAAAAABLs/_pHHpSYwZdk/image_thumb3.png?imgmax=800" width="244" height="204" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;How to use it?&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Step 1: Insert this code into form OnLoad event.&lt;/p&gt;  &lt;div style="border-bottom: silver 1px solid; text-align: left; border-left: silver 1px solid; padding-bottom: 4px; line-height: 12pt; background-color: #f4f4f4; margin: 20px 0px 10px; padding-left: 4px; width: 97.5%; padding-right: 4px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; max-height: 200px; font-size: 8pt; overflow: auto; border-top: silver 1px solid; cursor: text; border-right: silver 1px solid; padding-top: 4px" 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: #008000"&gt;/*============== addNotification function =============&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: #008000"&gt;&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: #008000"&gt;Adds a message on the top of the entity form using&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: #008000"&gt;the same visual style as Microsoft CRM.&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: #008000"&gt;If function is called more than once,&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: #008000"&gt;the messages are added at the bottom of the list&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: #008000"&gt;If the message with same ID already exists,&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: #008000"&gt;then the message is updated and not added to a list.&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: #008000"&gt;It also supports deleting of previously added notifications.&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: #008000"&gt;&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: #008000"&gt;Put this function in the OnLoad event,&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: #008000"&gt;so you can use it in all form and field events.&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: #008000"&gt;&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: #008000"&gt;Parameters:&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: #008000"&gt;message - message to be shown to the user&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: #008000"&gt;messageType - Type of the message: 1 - critical, 2 - info, 3 - warning&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: #008000"&gt;notificationId - ID of the notification (needed for updating purposes)&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: #008000"&gt;    &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: #008000"&gt;Created by:&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: #008000"&gt;Marco Amoedo (http://marcoamoedo.com) - the idea and initial function&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: #008000"&gt;Dejan Dular (http://a-crm.blogspot.com) - upgraded functionality (different icons, updating and deleting notifications)&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: #008000"&gt;    &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: #008000"&gt;=======================================================*/&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;&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: 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;addNotification = &lt;span style="color: #0000ff"&gt;function&lt;/span&gt;(message, messageType, notificationId)&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;/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: #0000ff"&gt;var&lt;/span&gt; notificationsArea = document.getElementById(&lt;span style="color: #006080"&gt;'Notifications'&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;/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: #0000ff"&gt;if&lt;/span&gt; (notificationsArea == &lt;span style="color: #0000ff"&gt;null&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;/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: #008000"&gt;//Don't display message when deleting a notification.&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: #0000ff"&gt;if&lt;/span&gt; (messageType != 4)&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;/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: #008000"&gt;//Sorry. Notifications are not possible on this form.&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: #008000"&gt;//Display a message box instead of notification.&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;            alert(message);&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;/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: #0000ff"&gt;return&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;/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;/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: #0000ff"&gt;var&lt;/span&gt; notificationDIV = document.getElementById(&lt;span style="color: #006080"&gt;'NotificationDiv_'&lt;/span&gt; + notificationId);&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;/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: #008000"&gt;//Delete the notification&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: #0000ff"&gt;if&lt;/span&gt; (messageType == 4)&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;/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: #0000ff"&gt;if&lt;/span&gt; (notificationDIV != &lt;span style="color: #0000ff"&gt;null&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;/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: #008000"&gt;//Remove the notification&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;            notificationsArea.removeChild(notificationDIV);&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;/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: #0000ff"&gt;return&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;/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;/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: #008000"&gt;//Get the notification image. The default is info image.&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: #0000ff"&gt;var&lt;/span&gt; notificationImage;&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: #0000ff"&gt;switch&lt;/span&gt; (messageType)&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;/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: #0000ff"&gt;case&lt;/span&gt; 1:&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;            notificationImage = &lt;span style="color: #006080"&gt;'/_imgs/error/notif_icn_crit16.png'&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: #0000ff"&gt;break&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: #0000ff"&gt;case&lt;/span&gt; 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: #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;            notificationImage = &lt;span style="color: #006080"&gt;'/_imgs/error/notif_icn_info16.png'&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: #0000ff"&gt;break&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: #0000ff"&gt;case&lt;/span&gt; 3:&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;            notificationImage = &lt;span style="color: #006080"&gt;'/_imgs/error/notif_icn_warn16.png'&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: #0000ff"&gt;break&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: #0000ff"&gt;default&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;            notificationImage = &lt;span style="color: #006080"&gt;'/_imgs/error/notif_icn_info16.png'&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;/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;&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: 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: #008000"&gt;//Create notification&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: #0000ff"&gt;var&lt;/span&gt; notificationTable = &lt;span style="color: #006080"&gt;'&amp;lt;TABLE cellSpacing=&amp;quot;0&amp;quot; cellPadding=&amp;quot;0&amp;quot;&amp;gt;&amp;lt;TBODY&amp;gt;&amp;lt;TR&amp;gt;&amp;lt;TD vAlign=&amp;quot;top&amp;quot;&amp;gt;&amp;lt;IMG class=&amp;quot;ms-crm-Lookup-Item&amp;quot; alt=&amp;quot;&amp;quot; src=&amp;quot;'&lt;/span&gt; + notificationImage + &lt;span style="color: #006080"&gt;'&amp;quot; /&amp;gt;&amp;lt;/TD&amp;gt;&amp;lt;TD&amp;gt;&amp;lt;SPAN&amp;gt;'&lt;/span&gt; + message +&lt;span style="color: #006080"&gt;'&amp;lt;/SPAN&amp;gt;&amp;lt;/TD&amp;gt;&amp;lt;/TR&amp;gt;&amp;lt;/TBODY&amp;gt;&amp;lt;/TABLE&amp;gt;'&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;/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: #008000"&gt;//Check if the notification with same ID already exists&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: #0000ff"&gt;if&lt;/span&gt; (notificationDIV == &lt;span style="color: #0000ff"&gt;null&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;/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: #008000"&gt;//Create a new notification&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: #0000ff"&gt;var&lt;/span&gt; notificationHTML = &lt;span style="color: #006080"&gt;'&amp;lt;DIV class=&amp;quot;Notification&amp;quot; ID=&amp;quot;NotificationDiv_'&lt;/span&gt; + notificationId + &lt;span style="color: #006080"&gt;'&amp;quot;&amp;gt;'&lt;/span&gt; + notificationTable + &lt;span style="color: #006080"&gt;'&amp;lt;/DIV&amp;gt;'&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;        notificationsArea.innerHTML += notificationHTML;&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;        notificationsArea.style.display = &lt;span style="color: #006080"&gt;'block'&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;/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: #0000ff"&gt;else&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;/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: #008000"&gt;//Update the notification.&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;        notificationDIV.innerHTML = notificationTable;&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;/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;/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: #008000"&gt;/*============= END addNotification function ===========*/&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;&lt;!--CRLF--&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;Step 2: Run the following function when there is a need for a notification.&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;div id="codeSnippetWrapper"&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" id="codeSnippet"&gt;addNotification(&lt;span style="color: #0000ff"&gt;string&lt;/span&gt; message, &lt;span style="color: #0000ff"&gt;int&lt;/span&gt; messageType, &lt;span style="color: #0000ff"&gt;string&lt;/span&gt; notificationId)&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;  &lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;strong&gt;Parameters:&lt;/strong&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;  &lt;li&gt;&lt;u&gt;message&lt;/u&gt; – Notification message displayed&lt;/li&gt;&lt;br /&gt;&lt;br /&gt;  &lt;li&gt;&lt;u&gt;messageType&lt;/u&gt; – Type of the notification (the icon) (1 – critical, 2 – info, 3 – warning, 4 – delete the notification)&lt;/li&gt;&lt;br /&gt;&lt;br /&gt;  &lt;li&gt;&lt;u&gt;notificationId&lt;/u&gt; – Any string that identifies specific notification. If a function is called later with existing notificationId, the notification will be updated. Otherwise a new notification is added at the bottom of the list. If you want to delete a specific notification, just set messageType = 4 and use correct notificationId.&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;Thanks again to Marco Amoedo. &lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&amp;#160;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;Originally published by &lt;a href="http://a-crm.blogspot.com"&gt;Dejan Dular&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/780680930800461091-6788058412503346924?l=a-crm.blogspot.com'/&gt;&lt;/div&gt;</description><link>http://a-crm.blogspot.com/2009/07/show-custom-notifications-on-microsoft.html</link><author>noreply@blogger.com (Dejan Dular)</author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-780680930800461091.post-3538858381706224434</guid><pubDate>Fri, 27 Mar 2009 07:46:00 +0000</pubDate><atom:updated>2009-07-15T14:55:54.799+01:00</atom:updated><title>Reindex whole database</title><description>EXEC sp_MSforeachtable @command1="print '?' DBCC DBREINDEX ('?', ' ', 80)"&lt;br /&gt;GO&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/780680930800461091-3538858381706224434?l=a-crm.blogspot.com'/&gt;&lt;/div&gt;</description><link>http://a-crm.blogspot.com/2009/03/reindex-whole-database.html</link><author>noreply@blogger.com (Dejan Dular)</author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-780680930800461091.post-3513863759115374163</guid><pubDate>Wed, 02 Jul 2008 08:02:00 +0000</pubDate><atom:updated>2008-07-02T09:09:13.147+01:00</atom:updated><title>Button that starts a workflow</title><description>My client wanted to have a button that starts a specific workflow on the form. So after analyzing some javascript I ended with this code:&lt;br /&gt;&lt;br /&gt;var a = new Array(crmFormSubmit.crmFormSubmitId.value);&lt;br /&gt;var sIds = crmFormSubmit.crmFormSubmitId.value+";";&lt;br /&gt;var sEntityTypeCode = "10004"; //Replace this with your entity type code&lt;br /&gt;var sWorkflowId = "{BE7E47C0-2452-4F44-8CCA-425B83A7A8FB}"; //Replace this with your actual workflow ID&lt;br /&gt;var iWindowPosX = 500; //Modal dialog position X&lt;br /&gt;var iWindowPosY = 200; //Modal dialog position Y&lt;br /&gt;&lt;br /&gt;var oResult = openStdDlg(prependOrgName("/_grid/cmds/dlg_runworkflow.aspx")+"?iObjType=" + CrmEncodeDecode.CrmUrlEncode(sEntityTypeCode) + "&amp;iTotal=" +&lt;br /&gt;CrmEncodeDecode.CrmUrlEncode(a.length) + "&amp;wfId=" + CrmEncodeDecode.CrmUrlEncode(sWorkflowId)+ "&amp;sIds=" + CrmEncodeDecode.CrmUrlEncode(sIds) , a, iWindowPosX, iWindowPosY);&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Of course this is not supported by Microsoft. You use it at your own risk.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/780680930800461091-3513863759115374163?l=a-crm.blogspot.com'/&gt;&lt;/div&gt;</description><link>http://a-crm.blogspot.com/2008/07/button-that-starts-workflow.html</link><author>noreply@blogger.com (Dejan Dular)</author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-780680930800461091.post-670608881661226119</guid><pubDate>Mon, 09 Jun 2008 11:50:00 +0000</pubDate><atom:updated>2008-06-09T13:09:43.411+01:00</atom:updated><title>Generic SQL error</title><description>WOW! I'm sooooo happy when I receive such deterministic errors.&lt;br /&gt;&lt;br /&gt;After saving an account, this message popped up. And you guessed it - it appeared just SOMETIMES!&lt;br /&gt;&lt;br /&gt;After a little of SQL profiling i found the reason:&lt;br /&gt;I extended the account's address1_line1 field from 50 to 100 characters. After saving the account, CRM automatically creates/updates also the customeraddress entity.&lt;br /&gt;&lt;br /&gt;Solution:&lt;br /&gt;Extend the customeraddress entity, extend attribute line1, match the length to length of the account address line.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/780680930800461091-670608881661226119?l=a-crm.blogspot.com'/&gt;&lt;/div&gt;</description><link>http://a-crm.blogspot.com/2008/06/generic-sql-error.html</link><author>noreply@blogger.com (Dejan Dular)</author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">5</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-780680930800461091.post-195906188820857267</guid><pubDate>Fri, 30 May 2008 06:17:00 +0000</pubDate><atom:updated>2008-05-30T07:57:23.170+01:00</atom:updated><title>Cool SQL query that deletes the duplicates</title><description>Found this on &lt;a href="http://www.sqlservercentral.com/"&gt;Sql Server Central&lt;/a&gt;:&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);font-size:85%;" &gt;&lt;span style="font-family: courier new;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family: courier new;"&gt;CREATE TABLE #new(ID INT NULL, KeyValue VARCHAR(2))&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;INSERT INTO #new(ID, KeyValue) VALUES (1,'aa')&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;INSERT INTO #new(ID, KeyValue) VALUES (2,'bb')&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;INSERT INTO #new(ID, KeyValue) VALUES (1,'aa')&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;INSERT INTO #new(ID, KeyValue) VALUES (1,'aa')&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family: courier new;"&gt;SELECT * FROM #new;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Now let's delete the duplicates. The semicolon at the beginning is recommended if you are not using it after every SQL sentence. This tells the parser to begin with new statement. Without it you will probably get a syntax error.&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);font-size:85%;" &gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;;WITH Numbered AS (SELECT RowNo=ROW_NUMBER() OVER (PARTITION BY ID ORDER BY ID), ID, KeyValue FROM #new) DELETE FROM Numbered where RowNo&gt;1;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);font-size:85%;" &gt;&lt;span style="font-family: courier new;"&gt;SELECT * FROM #new;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Cleanup...&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);font-size:85%;" &gt;&lt;span style="font-family: courier new;"&gt;DROP TABLE #new;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/780680930800461091-195906188820857267?l=a-crm.blogspot.com'/&gt;&lt;/div&gt;</description><link>http://a-crm.blogspot.com/2008/05/cool-sql-query-that-deletes-duplicates.html</link><author>noreply@blogger.com (Dejan Dular)</author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-780680930800461091.post-6416601578059493168</guid><pubDate>Mon, 03 Mar 2008 09:12:00 +0000</pubDate><atom:updated>2008-03-03T10:17:09.932+01:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">snippet</category><category domain="http://www.blogger.com/atom/ns#">workflow</category><title>Snippet for CRM workflow activity parameter</title><description>If you are writing custom workflow activities for workflows in CRM 4.0 you will find this snippet handy.&lt;br /&gt;&lt;br /&gt;Copy the code below into a new file and name it CRMParameter.snippet. Save the file into Visual Studio 2005\Code Snippets\Visual C#\My Code Snippets folder. It works in VS2008 too.&lt;br /&gt;The shortcut for the snippet is cwp.&lt;br /&gt;&lt;br /&gt;&lt;pre class="csharpcode"&gt;&lt;span class="kwrd"&gt;&amp;lt;?&lt;/span&gt;&lt;span class="html"&gt;xml&lt;/span&gt; &lt;span class="attr"&gt;version&lt;/span&gt;&lt;span class="kwrd"&gt;="1.0"&lt;/span&gt; &lt;span class="attr"&gt;encoding&lt;/span&gt;&lt;span class="kwrd"&gt;="utf-8"&lt;/span&gt;?&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;CodeSnippets&lt;/span&gt; &lt;span class="attr"&gt;xmlns&lt;/span&gt;&lt;span class="kwrd"&gt;="http://schemas.microsoft.com/VisualStudio/2005/CodeSnippet"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;CodeSnippet&lt;/span&gt; &lt;span class="attr"&gt;Format&lt;/span&gt;&lt;span class="kwrd"&gt;="1.0.0"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;   &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;Header&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;     &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;Title&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;CRM workflow property snippet&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;Title&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;     &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;Shortcut&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;cwp&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;Shortcut&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;     &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;Description&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;Code snippet for crm property &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;Description&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;     &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;Author&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;Dejan Dular&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;Author&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;     &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;SnippetTypes&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;       &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;SnippetType&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;Expansion&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;SnippetType&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;     &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;SnippetTypes&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;   &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;Header&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt; &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;Snippet&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;     &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;Declarations&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;       &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;Literal&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;         &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;ID&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;PropertyInputOutputType&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;ID&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;         &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;ToolTip&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;Input/output property&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;ToolTip&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;         &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;Default&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;CrmInput&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;Default&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;       &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;Literal&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;       &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;Literal&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;         &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;ID&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;PropertyDisplayName&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;ID&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;         &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;ToolTip&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;Property display name&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;ToolTip&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;         &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;Default&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;Display Name&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;Default&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;       &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;Literal&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;       &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;Literal&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;         &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;ID&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;PropertyName&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;ID&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;         &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;ToolTip&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;Property Name&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;ToolTip&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;         &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;Default&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;name&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;Default&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;       &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;Literal&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;       &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;Literal&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;         &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;ID&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;Type&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;ID&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;         &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;ToolTip&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;Property Type&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;ToolTip&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;         &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;Default&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;string&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;Default&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;       &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;Literal&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;       &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;Literal&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;         &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;ID&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;Class&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;ID&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;         &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;ToolTip&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;Class&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;ToolTip&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;         &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;Default&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;ClassName&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;Default&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;       &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;Literal&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;     &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;Declarations&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;     &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;Code&lt;/span&gt; &lt;span class="attr"&gt;Language&lt;/span&gt;&lt;span class="kwrd"&gt;="csharp"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;&amp;lt;!&lt;/span&gt;[CDATA[#region $PropertyDisplayName$&lt;br /&gt;[$PropertyInputOutputType$("$PropertyDisplayName$")]&lt;br /&gt;public $Type$ $PropertyName$&lt;br /&gt;{&lt;br /&gt;   get { return ($Type$)base.GetValue($PropertyName$Property); }&lt;br /&gt;   set { base.SetValue($PropertyName$Property, value); }&lt;br /&gt;}&lt;br /&gt;public static DependencyProperty $PropertyName$Property = DependencyProperty.Register("$PropertyName$", typeof($Type$), typeof($Class$));&lt;br /&gt;#endregion&lt;br /&gt;$end$]]&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;     &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;Code&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;   &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;Snippet&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt; &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;CodeSnippet&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;CodeSnippets&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;&lt;style type="text/css"&gt;&lt;br /&gt;.csharpcode, .csharpcode pre&lt;br /&gt;{&lt;br /&gt; font-size: small;&lt;br /&gt; color: black;&lt;br /&gt; font-family: consolas, "Courier New", courier, monospace;&lt;br /&gt; background-color: #ffffff;&lt;br /&gt; /**/&lt;br /&gt;}&lt;br /&gt;.csharpcode pre { margin: 0em; }&lt;br /&gt;.csharpcode .rem { color: #008000; }&lt;br /&gt;.csharpcode .kwrd { color: #0000ff; }&lt;br /&gt;.csharpcode .str { color: #006080; }&lt;br /&gt;.csharpcode .op { color: #0000c0; }&lt;br /&gt;.csharpcode .preproc { color: #cc6633; }&lt;br /&gt;.csharpcode .asp { background-color: #ffff00; }&lt;br /&gt;.csharpcode .html { color: #800000; }&lt;br /&gt;.csharpcode .attr { color: #ff0000; }&lt;br /&gt;.csharpcode .alt &lt;br /&gt;{&lt;br /&gt; background-color: #f4f4f4;&lt;br /&gt; width: 100%;&lt;br /&gt; margin: 0em;&lt;br /&gt;}&lt;br /&gt;.csharpcode .lnum { color: #606060; }&lt;/style&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/780680930800461091-6416601578059493168?l=a-crm.blogspot.com'/&gt;&lt;/div&gt;</description><link>http://a-crm.blogspot.com/2008/03/snippet-for-crm-workflow-activity.html</link><author>noreply@blogger.com (Dejan Dular)</author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-780680930800461091.post-2541670442878924129</guid><pubDate>Thu, 28 Feb 2008 08:51:00 +0000</pubDate><atom:updated>2008-03-28T20:18:56.120+01:00</atom:updated><title>Error at decimal field display format (4.0)</title><description>When upgrading a German version of CRM 3.0 to version 4.0, a strange thing happened. All decimal, float or money fields behaved very strange.&lt;br /&gt;&lt;br /&gt;Example: User enters a value 2. After clicking save button, the number changes to 200.00 and then immediately to 20.000.00.&lt;br /&gt;&lt;br /&gt;Then I noticed that a decimal separator and a thousands separator were the same. Therefore I checked organization settings where everything looked fine.&lt;br /&gt;&lt;br /&gt;The problem lied in user settings where both separators were set to dot (.)&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;SOLUTION:&lt;/strong&gt;&lt;br /&gt;Change must be made for each user. Set the decimal separator to comma (,).&lt;br /&gt;Update the CRM database to affect all users: &lt;span style="font-family:courier new;"&gt;&lt;span style="font-size:85%;"&gt;UPDATE UserSettingsBase SET DecimalSymbol = &lt;span style="font-family:courier new;"&gt;','&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/780680930800461091-2541670442878924129?l=a-crm.blogspot.com'/&gt;&lt;/div&gt;</description><link>http://a-crm.blogspot.com/2008/02/error-at-decimal-field-display-format.html</link><author>noreply@blogger.com (Dejan Dular)</author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">4</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-780680930800461091.post-1949141808173926457</guid><pubDate>Wed, 02 Jan 2008 11:47:00 +0000</pubDate><atom:updated>2008-01-03T11:44:36.147+01:00</atom:updated><title>.NET Compiler bug? (Update)</title><description>I have a typed DataTable (called FactTable)  that gets data from a table in SQL server where a Date field can be null.&lt;br /&gt;&lt;br /&gt;So I have created a System.Nullable&lt;datetime&gt; variable in my code:&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:courier new;"&gt;&lt;span style="color: rgb(102, 204, 204);"&gt;Datetime?&lt;/span&gt; emailDate;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;And a &lt;span style="font-weight: bold;"&gt;typed&lt;/span&gt; DataRow from my DataTable:&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:courier new;"&gt;&lt;span style="color: rgb(102, 204, 204);"&gt;MyDataSet.FactRow&lt;/span&gt; factRow = factTable.Rows[0];&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Why does this NOT WORK:&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:courier new;"&gt;emailDate = factRow.IsEmailDateNull() ? &lt;/span&gt;&lt;span style="color: rgb(51, 51, 255);font-family:courier new;" &gt;null&lt;/span&gt;&lt;span style="font-family:courier new;"&gt; : factRow.EmailDate;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;But this works:&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:courier new;"&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;if&lt;/span&gt; (factRow.IsEmailDateNull())&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;    emailDate = &lt;span style="color: rgb(51, 102, 255);"&gt;null&lt;/span&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);font-family:courier new;" &gt;else&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;    emailDate = factRow.EmailDate;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Compiler error is: &lt;span style="font-weight: bold;"&gt;Type of conditional expression cannot be determined because there is no implicit conversion between '&lt;null&gt;' and 'System.DateTime'&lt;br /&gt;&lt;br /&gt;&lt;/null&gt;&lt;/span&gt;Remember: My variable is nullable!!!&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Update:&lt;/span&gt;&lt;br /&gt;David defined this problem as a feature. But aren't both examples the same? Isn't this just a compile thing to convert from the first example to the second one?&lt;br /&gt;I think it has to do something with nullable types, because with string or byte[] it works like a charm:&lt;br /&gt;&lt;/datetime&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:courier new;"&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;string&lt;/span&gt; title = factRow.IsTitleNull() ? &lt;span style="color: rgb(51, 102, 255);"&gt;null&lt;/span&gt; : factRow.Title;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:courier new;"&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;byte[]&lt;/span&gt; picture = factRow.IsPictureNull() ? &lt;span style="color: rgb(51, 102, 255);"&gt;null&lt;/span&gt; : factRow.Picutre;&lt;/span&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/780680930800461091-1949141808173926457?l=a-crm.blogspot.com'/&gt;&lt;/div&gt;</description><link>http://a-crm.blogspot.com/2008/01/net-compiler-bug.html</link><author>noreply@blogger.com (Dejan Dular)</author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">3</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-780680930800461091.post-6273002367316562723</guid><pubDate>Fri, 14 Dec 2007 11:39:00 +0000</pubDate><atom:updated>2009-10-06T08:39:09.762+01:00</atom:updated><title>Integration of Google maps / Live maps into CRM 3.0, 4.0</title><description>&lt;p&gt;I usually don't write about third party solutions, but this one is getting its place in my blog.&lt;/p&gt;  &lt;p&gt;A fellow CRM blogger Wolter Kreun from the Netherlands is developing a &lt;strong&gt;freeware&lt;/strong&gt; plugin (Can it be true? A free and very useful plugin for CRM!!!) that fully integrates Google Maps into Microsoft CRM. Soon it will support MS Live maps.&lt;/p&gt;  &lt;p&gt;Haven't tried it, but as far as I have seen on the &lt;a href="http://mscrmgooglemaps.blogspot.com/2007/12/movies.html"&gt;videos&lt;/a&gt; it ROCKS!&lt;/p&gt;&lt;p&gt;EDIT (05. oct. 2009): I just have been informed that the link provided below does not work anymore. But you can use similar integration with  virtual earth at: &lt;a href="http://www.crmwatcher.com/2006/11/virtual-earth-3d-maps-integration-in.html"&gt;http://www.crmwatcher.com/2006/11/virtual-earth-3d-maps-integration-in.html&lt;/a&gt;&lt;br /&gt;&lt;/p&gt;  &lt;p style="color: rgb(204, 204, 204);"&gt;So chop chop guys and click on this link: &lt;a href="http://mscrmgooglemaps.blogspot.com/"&gt;http://mscrmgooglemaps.blogspot.com/&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/780680930800461091-6273002367316562723?l=a-crm.blogspot.com'/&gt;&lt;/div&gt;</description><link>http://a-crm.blogspot.com/2007/12/integration-of-google-maps-live-maps.html</link><author>noreply@blogger.com (Dejan Dular)</author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">2</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-780680930800461091.post-4667179959738944453</guid><pubDate>Wed, 28 Nov 2007 05:53:00 +0000</pubDate><atom:updated>2007-11-28T06:57:39.139+01:00</atom:updated><title>Computer playing random music</title><description>Another post that has absolutely nothing to do with CRM. I just gotta share this.&lt;br /&gt;&lt;br /&gt;On channel 9 I found this link to the Microsoft's KB article:&lt;br /&gt;&lt;a href="http://support.microsoft.com/default.aspx?scid=kb;en-us;261186"&gt;http://support.microsoft.com/default.aspx?scid=kb;en-us;261186&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;I'm really thinking of installing Windows 95 and crashing the CUP fan. :)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/780680930800461091-4667179959738944453?l=a-crm.blogspot.com'/&gt;&lt;/div&gt;</description><link>http://a-crm.blogspot.com/2007/11/computer-playing-random-music.html</link><author>noreply@blogger.com (Dejan Dular)</author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">1</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-780680930800461091.post-8622061830209389983</guid><pubDate>Thu, 22 Nov 2007 06:51:00 +0000</pubDate><atom:updated>2007-11-22T07:51:28.265+01:00</atom:updated><title>BigInteger</title><description>&lt;p&gt;I just have to share this. There is a new type of number in .NET Framework 3.5 called BigInteger [System.Numeric.BigInteger]. What is so cool here? Now you don't have to write special code to work with really really really big numbers. This type is infinite, as big as you want (until you run out of memory). &lt;/p&gt;  &lt;p&gt;Read more &lt;a href="http://blogs.msdn.com/bclteam/archive/2007/01/16/introducing-system-numeric-biginteger-inbar-gazit.aspx"&gt;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/780680930800461091-8622061830209389983?l=a-crm.blogspot.com'/&gt;&lt;/div&gt;</description><link>http://a-crm.blogspot.com/2007/11/biginteger.html</link><author>noreply@blogger.com (Dejan Dular)</author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-780680930800461091.post-5956609259746116760</guid><pubDate>Thu, 15 Nov 2007 09:17:00 +0000</pubDate><atom:updated>2007-11-15T10:17:05.534+01:00</atom:updated><title>Workflow Changes in CRM 4.0</title><description>&lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Today I'm going to compare CRM 3.0 and CRM 4.0 workflows:&lt;/p&gt;  &lt;p&gt;The web interface is much better designed than the previous one. As I wrote in my previous post, you have more space for description and you can add notes and attach files to the workflows. Moreover you can add a comment to every step of the workflow. &lt;/p&gt;  &lt;p&gt;I will say it again. Major improvement was on the workflows in this version. Good job CRM team.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Major change has been made is at the basic workflow properties. No more sales process. Now workflow equals sales process. You can select multiple triggering events for a single workflow. These events are:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Create&lt;/li&gt;    &lt;li&gt;Status change&lt;/li&gt;    &lt;li&gt;Assign&lt;/li&gt;    &lt;li&gt;&lt;strong&gt;Attribute change&lt;/strong&gt; (update)&lt;/li&gt;    &lt;li&gt;&lt;strong&gt;Delete&lt;/strong&gt;&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Also you can set if this workflow can be run on demand (manually) and / or as a child workflow. For the update, you must choose which attributes trigger the workflow.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh4.google.com/dejan.dular/RzwOXHzXuOI/AAAAAAAAAfg/0BDvvnjrfs0/image%5B26%5D"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="165" alt="image" src="http://lh4.google.com/dejan.dular/RzwOYHzXuPI/AAAAAAAAAfo/3OeTqq_UqNE/image_thumb%5B8%5D" width="244" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Actions are now called &lt;strong&gt;steps&lt;/strong&gt;. So let's take a look at the actions ... uh err ... steps.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;strike&gt;&lt;/strike&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;strong&gt;&lt;strike&gt;Create Activity&lt;/strike&gt;&lt;/strong&gt; =&amp;gt; &lt;strong&gt;Create Record - &lt;/strong&gt;Not only activities. You can create any entity you want. Set their properties in a form.      &lt;br /&gt;&lt;a href="http://lh4.google.com/dejan.dular/RzwOZHzXuQI/AAAAAAAAAfw/yudNhtrL5Yg/image%5B8%5D"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="244" alt="image" src="http://lh3.google.com/dejan.dular/RzwOZ3zXuRI/AAAAAAAAAf4/KA4YXCqVYX8/image_thumb%5B2%5D" width="171" border="0" /&gt;&lt;/a&gt;&amp;#160; &lt;a href="http://lh4.google.com/dejan.dular/RzwObHzXuSI/AAAAAAAAAgA/EFf7TCSfHYM/image%5B2%5D"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="153" alt="image" src="http://lh3.google.com/dejan.dular/RzwOb3zXuTI/AAAAAAAAAgI/HGRgzDTJG28/image_thumb" width="244" border="0" /&gt;&lt;/a&gt;&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;strong&gt;Send E-mail &lt;/strong&gt;- This action stays. Again more flexible, again a form for new email opens. Templates stay - of course.&lt;/li&gt;    &lt;li&gt;&lt;strong&gt;&lt;strike&gt;Create Note&lt;/strike&gt; &lt;/strong&gt;=&amp;gt; &lt;strong&gt;Create Record&lt;/strong&gt; - Note is actually an entity.      &lt;br /&gt;&lt;a href="http://lh3.google.com/dejan.dular/RzwOc3zXuUI/AAAAAAAAAgQ/8nVmWfwOCDA/image%5B11%5D"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="225" alt="image" src="http://lh6.google.com/dejan.dular/RzwOdnzXuVI/AAAAAAAAAgY/ePitjwFBAGc/image_thumb%5B3%5D" width="244" border="0" /&gt;&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;strong&gt;Update &lt;strike&gt;entity&lt;/strike&gt; record&lt;/strong&gt; - Of course, this action stays. In version 3.0 you could update only one attribute, in version 4.0 a form opens and you update any attribute you want.&lt;/li&gt;    &lt;li&gt;&lt;strong&gt;Change status&lt;/strong&gt; - Not only you can change status to a fixed value, now you can set it to a status of a related entity and even to a status of a previously created task.&lt;/li&gt;    &lt;li&gt;&lt;strong&gt;Assign &lt;strike&gt;entity&lt;/strike&gt; record &lt;/strong&gt;- Again a major improvement here. Not just to the Manager, User or Queue. You can use any dynamic value of related entities. &lt;strong&gt;And there's more&lt;/strong&gt;: You can assign related records as well. This means that you can reassign previously created task to a different user or a queue.&lt;a href="http://lh5.google.com/dejan.dular/RzwOeXzXuWI/AAAAAAAAAgg/RCHs4SPyQ_g/image%5B14%5D"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="65" alt="image" src="http://lh3.google.com/dejan.dular/RzwOe3zXuXI/AAAAAAAAAgo/Zjx7BcRpGiI/image_thumb%5B4%5D" width="244" border="0" /&gt;&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;strong&gt;&lt;strike&gt;Post URL&lt;/strike&gt;&lt;/strong&gt; - This action was deprecated in version 3.0. There are several reasons I won't talk about them here. No more Post URL for you guys.&lt;/li&gt;    &lt;li&gt;&lt;strong&gt;&lt;strike&gt;Run Subprocess&lt;/strike&gt;&lt;/strong&gt; =&amp;gt; &lt;strong&gt;Start Child Workflow&lt;/strong&gt; - Still here of course, but with improvements. You can start a workflow on any related entities.&lt;/li&gt;    &lt;li&gt;&lt;strong&gt;Stop Workflow&lt;/strong&gt; - Previously you could define what to do with sub-workflows, but in this version you can just stop it and set the status of the workflow to Completed or Canceled. This is kinda logical, since you are starting subworkflows asynchronously and for other entities.&lt;/li&gt;    &lt;li&gt;&lt;strong&gt;&lt;strike&gt;Call assembly&lt;/strike&gt;&lt;/strong&gt; - What happened to this guy? It is not in the list anymore... Can anyone help me with this? Can you call an external assembly from the workflow?&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Some changes have been made on conditions as well:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;strong&gt;Check condition&lt;/strong&gt; - This has been divided into three sub-elements: Check condition (if), Conditional branch (else if) and Default action (else). You can add as many else-ifs as you want. And of course you can check the values from related entities as well.&lt;/li&gt;    &lt;li&gt;&lt;strong&gt;Wait for timer&lt;/strong&gt; - This has been mover to general wait conditions group.&lt;/li&gt;    &lt;li&gt;&lt;strong&gt;Wait condition &lt;/strong&gt;- As before you can wait for changes in an entity or created activities. Now you can also check related entities. What is more. You can create more wait conditions, that are similar to the if - else if conditions. This is condition is called &lt;strong&gt;Parallel Wait Branch&lt;/strong&gt;. Now you can wait for different conditions to appear and then execute the first one that is met. The others are ignored.       &lt;br /&gt;&lt;strong&gt;Timers&lt;/strong&gt; - Create a wait condition and select Workflow - Timeout. You can use dynamic values as well.&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Stages&lt;/strong&gt; - There is no more difference between Sales process and Workflow rules. You can insert stages into normal workflows as well, although they are not displayed in the entity's status bar.&lt;/p&gt;  &lt;p&gt;In Sales processes you can actually look at the workflows that are running on a specific entity and see where they are or what they are waiting for. Notice the green circle.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;a href="http://lh4.google.com/dejan.dular/RzwOgHzXuYI/AAAAAAAAAgw/VEdiIyUXJt8/image%5B17%5D"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="149" alt="image" src="http://lh3.google.com/dejan.dular/RzwOg3zXuZI/AAAAAAAAAg4/qFn-yPNukfY/image_thumb%5B5%5D" width="244" border="0" /&gt;&lt;/a&gt; &lt;a href="http://lh3.google.com/dejan.dular/RzwOi3zXuaI/AAAAAAAAAhA/rmAmjO_14x4/image%5B20%5D"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="188" alt="image" src="http://lh3.google.com/dejan.dular/RzwOj3zXubI/AAAAAAAAAhI/KbHKW-6i4_4/image_thumb%5B6%5D" width="244" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;The same workflow status is available of you open a workflow from the list of workflows in the Settings area and open the workflow list. Every workflow has a list of all instances that were started. Just open an instance and see the status.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;This post has been written solely on my own discovery of CRM 4.0 CTP3. I'm just writing what I discovered. Maybe I missed something. Maybe it is important. Please correct me if I'm wrong.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/780680930800461091-5956609259746116760?l=a-crm.blogspot.com'/&gt;&lt;/div&gt;</description><link>http://a-crm.blogspot.com/2007/11/workflow-changes-in-crm-40.html</link><author>noreply@blogger.com (Dejan Dular)</author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">2</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-780680930800461091.post-6911255847338411330</guid><pubDate>Tue, 13 Nov 2007 12:25:00 +0000</pubDate><atom:updated>2007-11-13T13:25:42.272+01:00</atom:updated><title>Super duper CRM 4.0 workflows</title><description>&lt;p&gt;I must say I'm pleased. A lot has been done on the workflows since version 3.&lt;/p&gt;  &lt;p&gt;First of all workflows are now administered in a &lt;strong&gt;web client&lt;/strong&gt;. This had to be done because of CRM Live. But I must say that workflow management is much easier and better.&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;strong&gt;File attachments&lt;/strong&gt; - now you can attach a file to the workflow. I like it! Now I can attach a Visio diagram to the workflow, maybe some other documentation. There is a lot more space for description. And yes. There are notes too.&lt;/li&gt;    &lt;li&gt;&lt;strong&gt;Availability&lt;/strong&gt; - You can set the workflow to be run on demand, as well as a sub-workflow.&lt;/li&gt;    &lt;li&gt;&lt;strong&gt;Triggering events&lt;/strong&gt; - Now workflows support also Delete and Update events. On the Update event you can choose the actual fields that trigger the workflow.&lt;/li&gt;    &lt;li&gt;&lt;strong&gt;Wait for ... otherwise wait for&lt;/strong&gt; - Did you ever want to branch the workflow based on a condition. Now you can use so called &amp;quot;Paralel Wait Branch&amp;quot; and choose different wait conditions and run the first rule that matches.&lt;/li&gt;    &lt;li&gt;&lt;strong&gt;List of workflows&lt;/strong&gt; - Open one workflow and see status of all workflows (of this type) that were started.&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;More on workflows later. Now I have to go home.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/780680930800461091-6911255847338411330?l=a-crm.blogspot.com'/&gt;&lt;/div&gt;</description><link>http://a-crm.blogspot.com/2007/11/super-duper-crm-40-workflows.html</link><author>noreply@blogger.com (Dejan Dular)</author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-780680930800461091.post-7884313886066632019</guid><pubDate>Thu, 08 Nov 2007 10:31:00 +0000</pubDate><atom:updated>2007-11-08T11:31:46.932+01:00</atom:updated><title>CRM 4.0 - 4 hours after first 5 minutes</title><description>&lt;p&gt;To be clear first: I still think that version 4 is a good improvement and it really is what version 3 ought to be.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;This is a list of impressions after 4 hours of playing with new features:&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Many-to-many relationships&lt;/strong&gt;: Yeah! Finally! Yeah! No more &amp;quot;custom connecting relationships&amp;quot;. Relationship editor now divides the relationships in 3 groups: 1-to-many, many-to-1 and many-to-many. Great for entities with a lot of relationships. What is missing are attributes on relations. And &lt;u&gt;I couldn't find a way to start a workflow after assigning a many-to-many relationships&lt;/u&gt;. Is it really not possible or did I just miss it? I heard that version 5 will dealt with it.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;System-to-system relationships:&lt;/strong&gt; Yeah again! And not only that! You can have more relationships with the same entity.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Self-referential relationship:&lt;/strong&gt; Yeah again! You can relate entity to itself.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Multi tenant support: &lt;/strong&gt;From developers point view I thought it was different. I thought that you could manage two sites at once, but as it seems that multi tenant is almost no different than installing another version of CRM. Sites have different metadata, data, ... I admit that it is practical if you want to host CRM for others, but in my case it is almost the same as before. Oh. Another thing that is better: You can have only one login for multiple organizations. Good post about this if from &lt;a href="http://crm.davidyack.com/journal/2007/10/12/thinking-multi-tenant-with-crm-4-titan.html"&gt;Mr Dave&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Reporting architecture&lt;/strong&gt;: Because CRM went from intranet to Internet, there is no direct access to the SQL Report server. This eases up the configuration of the servers because of the impersonation things. Now the CRM server requests the report from the SRS directly with CRMAppPool credentials (e.g. NetworkService) The SQL Report server has add-in called CRM data connector which supports use of filtered views. Then the intermediate report is sent to the CRM server, that displays the report to the user. Now it is a CRM server, who actually allows viewing the report to the user. In version 3 this was a SRS thing. A good post about this is &lt;a href="http://blogs.msdn.com/ukcrm/archive/2007/10/11/microsoft-dynamics-crm-4-0-tidbits-reporting-architecture.aspx"&gt;here&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Advanced find&lt;/strong&gt;: You can actually display columns from related entities! Now you can, let's say, see a phone number of the primary contact in the account list. Way to go!&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Mail merge&lt;/strong&gt;: Finally you don't need outlook to perform a mail merge.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Duplicate checking:&lt;/strong&gt; I'll say better than nothing, but it could be better :)&amp;#160; You can define fields that are checked if there is a duplicate. You can say how many first or last letters define a duplicate and that's it. MS could actually implement some additional methods. &lt;a href="http://en.wikipedia.org/wiki/Soundex"&gt;Soundex&lt;/a&gt; is actually implemented in SQL server (but it is not very good). In my applications I use the following methods: &lt;a href="http://en.wikipedia.org/wiki/Double_Metaphone"&gt;Double metaphone&lt;/a&gt; (sounds-like algorithm better that Soundex) and &lt;a href="http://en.wikipedia.org/wiki/Levenshtein_distance"&gt;Levenstein distance&lt;/a&gt; (detects typos). Yes. I know that you could implement it by yourself, but hey! Why not get it out of the box? First you could run a double metaphone check and then do a Levenstein difference on the results.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Import data wizard:&lt;/strong&gt; Now supports most record types. Good thing is that it automatically maps picklist values with display values. No need to know the actual values of the picklist options. You can reuse mappings - a good thing if you have a constant import process in your company. Duplicate detection works when you are importing things. And you get an email when the job ends.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Typing in lookup field&lt;/strong&gt;: Now this is a neat feature. Now you can type in a value in a lookup field. After losing focus, the value is checked and if the value is OK, it becomes underlined, otherwise it turns to RED. Great functionality.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/780680930800461091-7884313886066632019?l=a-crm.blogspot.com'/&gt;&lt;/div&gt;</description><link>http://a-crm.blogspot.com/2007/11/crm-40-4-hours-after-first-5-minutes.html</link><author>noreply@blogger.com (Dejan Dular)</author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-780680930800461091.post-1904901061223110430</guid><pubDate>Wed, 07 Nov 2007 10:26:00 +0000</pubDate><atom:updated>2007-11-08T10:13:37.132+01:00</atom:updated><title>CRM 4.0 - first 5 minutes</title><description>&lt;p&gt;I finally had time to take a look at it. The CTP version. Virtual PC image is almost 8GB big and needs slightly more than 1GB of RAM.&lt;/p&gt;  &lt;p&gt;Just a quick look for 5 minutes - I'm satisfied.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Workflows&lt;/strong&gt; are now designed in web client, they support update (you can choose columns) and delete actions.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Duplicate detection &lt;/strong&gt;- not perfect, but still better than nothing.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;User interface&lt;/strong&gt; - better looking, but still some icons missing&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Multiple languages&lt;/strong&gt; - Cool feature for exporting and importing the published field names, attribute values, ... for translation purposes&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Web services&lt;/strong&gt; - Now you can download WSDL from web client. I'm not sure if this is really useful feature. Or is it?&lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt;Will write more later.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-weight: bold;"&gt;Update: &lt;/span&gt;David stressed a good point about downloading WSDL in comments: CRM Live&lt;br /&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/780680930800461091-1904901061223110430?l=a-crm.blogspot.com'/&gt;&lt;/div&gt;</description><link>http://a-crm.blogspot.com/2007/11/crm-40-first-5-minutes.html</link><author>noreply@blogger.com (Dejan Dular)</author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">2</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-780680930800461091.post-610900346786706906</guid><pubDate>Mon, 30 Jul 2007 09:10:00 +0000</pubDate><atom:updated>2007-07-30T10:10:01.594+01:00</atom:updated><title>Black Google saves energy?</title><description>&lt;p&gt;Are web pages with black backgrounds really better for the environment?&lt;/p&gt; &lt;p&gt;&lt;a title="http://www.treehugger.com/files/2007/05/black_google_sa.php" href="http://www.treehugger.com/files/2007/05/black_google_sa.php"&gt;http://www.treehugger.com/files/2007/05/black_google_sa.php&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/780680930800461091-610900346786706906?l=a-crm.blogspot.com'/&gt;&lt;/div&gt;</description><link>http://a-crm.blogspot.com/2007/07/black-google-saves-energy.html</link><author>noreply@blogger.com (Dejan Dular)</author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-780680930800461091.post-3610962470175189405</guid><pubDate>Fri, 29 Jun 2007 13:44:00 +0000</pubDate><atom:updated>2007-06-29T14:47:33.485+01:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">javascript</category><category domain="http://www.blogger.com/atom/ns#">forms</category><category domain="http://www.blogger.com/atom/ns#">cusumization</category><category domain="http://www.blogger.com/atom/ns#">script</category><title>Adding a reference to external .js file in your form</title><description>&lt;p&gt;This code creates a new script element and inserts it into the head of the HTML document that defines the form:&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Courier New;"&gt;st = document.createElement("&amp;lt;script src='&lt;/span&gt;&lt;span style="font-family:Courier New;"&gt;http://&amp;lt;server&lt;/span&gt;&lt;span style="font-family:Courier New;"&gt;&amp;gt;/&amp;lt;site&amp;gt;/&amp;lt;filename&amp;gt;.js' language='JavaScript'&amp;gt;");&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:Courier New;"&gt;h = document.getElementsByTagName('head');&lt;br /&gt;h[0].insertAdjacentElement('beforeEnd',st);&lt;/span&gt;&lt;/p&gt;&lt;p&gt;Using this method to reference an external script in a production environment is unsupported because it introduces several areas for concern:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Transportability&lt;/li&gt;&lt;li&gt;External Site&lt;/li&gt;&lt;li&gt;Doesn't work offline&lt;/li&gt;&lt;li&gt;Future Upgrade issues&lt;/li&gt;&lt;li&gt;Possible Timing issues&lt;/li&gt;&lt;li&gt;Poor programming practice&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/780680930800461091-3610962470175189405?l=a-crm.blogspot.com'/&gt;&lt;/div&gt;</description><link>http://a-crm.blogspot.com/2007/06/adding-reference-to-external-js-file-in.html</link><author>noreply@blogger.com (Dejan Dular)</author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-780680930800461091.post-1455605411182956213</guid><pubDate>Wed, 27 Jun 2007 13:33:00 +0000</pubDate><atom:updated>2007-06-27T14:55:55.465+01:00</atom:updated><title>How to set user's home page?</title><description>&lt;p&gt;I got a request that all users of CRM must have their first page set to announcements.&lt;/p&gt;&lt;p&gt;Of course I could write a mail to all users requesting them to change their page in settings page to announcements, but this is a no no way.&lt;/p&gt;&lt;p&gt;So I searched the SQL database and found a user settings table in _MSCRM database. Just set the HomepageSubarea of the table UserSettingsBase to the value 'nav_news'.&lt;/p&gt;&lt;p&gt;So if you want to set announcements as a home page for all users just run the query:&lt;/p&gt;&lt;span style="font-family:Courier New;"&gt;&lt;p&gt;UPDATE [UserSettingsBase] SET [HomepageSubarea] = 'nav_news', [HomepageArea] = 'Home'&lt;/p&gt;&lt;p&gt;&lt;/span&gt;Although it works in my installation, this is not a supported change, so you are doing it &lt;strong&gt;at your own risk&lt;/strong&gt;. Do backup the database before messing with it. Just in case.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/780680930800461091-1455605411182956213?l=a-crm.blogspot.com'/&gt;&lt;/div&gt;</description><link>http://a-crm.blogspot.com/2007/06/how-to-set-user-home-page.html</link><author>noreply@blogger.com (Dejan Dular)</author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">1</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-780680930800461091.post-7405563352895208732</guid><pubDate>Wed, 27 Jun 2007 09:08:00 +0000</pubDate><atom:updated>2007-06-27T10:08:48.900+01:00</atom:updated><title>Renaming a (Customizable) Entity</title><description>&lt;p&gt;Just changing the entity display name is not enough. There are more places where the name must be changed to fulfill customer's experience.&lt;/p&gt; &lt;p&gt;&lt;strong&gt;Areas that Need to be Changed:&lt;/strong&gt;&lt;/p&gt; &lt;ul&gt; &lt;li&gt;Entity Name&lt;/li&gt; &lt;li&gt;Entity Form Labels&lt;/li&gt; &lt;li&gt;Entity View Names&lt;/li&gt; &lt;li&gt;Entity Attribute Display Names&lt;/li&gt; &lt;li&gt;System Messages&lt;/li&gt; &lt;li&gt;On-line Help Content&lt;/li&gt; &lt;li&gt;Reports&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;&lt;strong&gt;Some Areas Cannot be Changed&lt;/strong&gt;&lt;/p&gt; &lt;ul&gt; &lt;li&gt;Platform error messages and messages that are displayed in Trace or the Event Log. These messages cannot be edited.&lt;/li&gt; &lt;li&gt;Strings added to the ISV configuration file.&lt;/li&gt; &lt;li&gt;User Manager component of the Microsoft CRM Deployment&lt;br&gt;Manager tool. These strings cannot be edited.&lt;/li&gt; &lt;li&gt;Environment Diagnostics Wizard. These strings cannot be edited.&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;Basically changing the entity's name is a seven step process:&lt;/p&gt; &lt;p&gt;&lt;strong&gt;Step 1: Change Entity Name.&lt;br&gt;&lt;/strong&gt;In the Entity Definition section, change the Name and Plural Name&lt;br&gt;to the new name.&lt;/p&gt; &lt;p&gt;&lt;strong&gt;Step 2: Edit Entity Forms and Views to Display the New Entity&lt;/strong&gt;&lt;strong&gt;&lt;br&gt;Names.&lt;br&gt;&lt;/strong&gt;Change Form Labels and&amp;nbsp;View Names.&lt;/p&gt; &lt;p&gt;&lt;strong&gt;Step 3: Change Attribute Display Names for the Entity that is&lt;br&gt;Renamed.&lt;br&gt;&lt;/strong&gt;Use Customize Entities tool to change attribute display names associated with renamed entity. This will update any other parts of the application that uses these attributes, such as View headings.&lt;/p&gt; &lt;p&gt;&lt;strong&gt;Step 4: Customize Messages and Strings Associated with&lt;br&gt;Entity that is Renamed.&lt;br&gt;&lt;/strong&gt;Use the Customize Entities tool to customize messages and strings associated with the renamed entity.&lt;/p&gt; &lt;p&gt;&lt;strong&gt;Step 5: Publish Changes.&lt;br&gt;&lt;/strong&gt;The Name of the entity in the Navigation Pane may not respond to the changes. The information in the SiteMap is cached on the browser. Users may need to press F5 to see the changes.&lt;/p&gt; &lt;p&gt;&lt;strong&gt;Step 6: Edit affected help Content to Display the New Entity&lt;br&gt;Name.&lt;br&gt;&lt;/strong&gt;Manually edit entity names in help content and re-deploy the help content. &lt;p&gt;&lt;strong&gt;Step 7: Modify Affected Reports to Display the New Entity&lt;br&gt;Name.&lt;br&gt;&lt;/strong&gt;Manually modify entity names in reports and re-deploy the modified reports.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/780680930800461091-7405563352895208732?l=a-crm.blogspot.com'/&gt;&lt;/div&gt;</description><link>http://a-crm.blogspot.com/2007/06/renaming-customizable-entity.html</link><author>noreply@blogger.com (Dejan Dular)</author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-780680930800461091.post-5275392934642382162</guid><pubDate>Tue, 26 Jun 2007 14:15:00 +0000</pubDate><atom:updated>2007-06-26T15:20:19.419+01:00</atom:updated><title>Yay! I passed the exam!</title><description>Today I sucessfully passed the Microsoft exam called CRM 3.0 Applications.&lt;br /&gt;&lt;br /&gt;The exam number is: CRM-30-423&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/780680930800461091-5275392934642382162?l=a-crm.blogspot.com'/&gt;&lt;/div&gt;</description><link>http://a-crm.blogspot.com/2007/06/yay-i-passed-exam.html</link><author>noreply@blogger.com (Dejan Dular)</author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-780680930800461091.post-605968184895847721</guid><pubDate>Mon, 04 Jun 2007 14:06:00 +0000</pubDate><atom:updated>2007-06-04T15:08:09.096+01:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">callout</category><category domain="http://www.blogger.com/atom/ns#">debug</category><title>How to debug callouts?</title><description>&lt;p&gt;First, here are two points, that I would like to express:&lt;/p&gt;&lt;ol&gt;&lt;li&gt;I want to debug callouts directly and not with log files.&lt;/li&gt;&lt;li&gt;.NET 2.0 rulez&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;What now? Callouts use .NET 1.1 and just forget about remote debugging or something like that.&lt;/p&gt;&lt;p&gt;Why not create callouts that use some web service? If you have it installed on the same machine, then you can easily use impersonation etc.&lt;/p&gt;&lt;p&gt;So here's how I do it: I develop a web service that uses CRM web services, test it with normal win32 application and then just insert those 2 lines of code in callouts that call my web service. Use of dynamic entities is very very strongly recommended. You can serialize and deserialize them easily and if the structure of CRM entity model changes, you don't have to worry. Even callouts can have &lt;a href="http://a-crm.blogspot.com/2007/03/callout-setting-files.html"&gt;config files&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;Web service is running in .NET 2.0 environment and I can debug it freely!&lt;/p&gt;&lt;p&gt;This is how I do it. What about you?&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/780680930800461091-605968184895847721?l=a-crm.blogspot.com'/&gt;&lt;/div&gt;</description><link>http://a-crm.blogspot.com/2007/06/how-to-debug-callouts.html</link><author>noreply@blogger.com (Dejan Dular)</author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></item></channel></rss>
