<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-7208889</id><updated>2012-01-23T06:09:40.938Z</updated><category term='CRM 2011'/><category term='C360'/><category term='SQL'/><category term='E-mail Router'/><category term='Plugins Development'/><category term='Customer Portal'/><category term='Sure Step'/><category term='Office'/><category term='CRM Outlook'/><category term='Installation and Deployment'/><category term='SharePoint'/><category term='Design Expression Blend Sketchflow Sliverlight'/><category term='ISV'/><category term='Callout'/><category term='Workflow'/><category term='CRM UK Facebook'/><category term='Report'/><category term='CRM Finance Insurance'/><category term='SharePoint 2010'/><category term='Web Service'/><category term='Ajax'/><category term='WSS'/><category term='Dynamics CRM Mobile HTML5'/><category term='xRM'/><category term='SDK'/><category term='Dashboard'/><category term='CRM 4.0'/><category term='Xml'/><category term='CRM Integration'/><category term='IFrame'/><category term='CRM Developer Toolkit'/><category term='Picklist'/><category term='License'/><category term='Microsoft MVP'/><category term='Lookup'/><category term='Tools'/><category term='Workflow assembly'/><category term='Data Audit'/><category term='Debug'/><category term='CRM Report'/><category term='CRM Mobile'/><category term='ASP.Net'/><category term='JScript'/><category term='News'/><category term='Upgarde'/><category term='CRM ISV'/><title type='text'>Microsoft Dynamics CRM 2011 &amp; Business Productivity - Jim Wang's blog [MVP]</title><subtitle type='html'>The Power of Productivity</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://jianwang.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7208889/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://jianwang.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Jim Wang</name><uri>http://www.blogger.com/profile/15963866631960791206</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='29' src='http://4.bp.blogspot.com/_-lOIedxo3AA/SaQ-RpTrHZI/AAAAAAAAANI/pQoZ77uYOe0/S220/Jim%27.JPG'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>92</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-7208889.post-4754161660456096435</id><published>2012-01-19T09:34:00.000Z</published><updated>2012-01-19T10:23:33.162Z</updated><title type='text'>Get a free Dynamics CRM 2011 Project Tutorial book offer</title><content type='html'>&lt;span style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: Calibri;"&gt;Do you want free copies of my latest book?&lt;br /&gt;&lt;br /&gt;Well, all you need to do is visit&amp;nbsp;&lt;a href="http://www.packtpub.com/microsoft-dynamics-crm-2011-real-world-tutorial/book" style="color: #1155cc;" target="_blank"&gt;Microsoft Dynamics CRM 2011 New Features&lt;/a&gt;&amp;nbsp;and tell me&amp;nbsp;&lt;/span&gt;&lt;span style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: Calibri;"&gt;the one feature, that makes you want to own this book in the comments section below (on this post).&lt;/span&gt;&lt;br /&gt;&lt;span style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: Calibri;"&gt;Make sure to enter your email address, so that I can in touch with you. Two individuals who have mentioned the best reasons will be provided with an e-copy each.&lt;/span&gt;&lt;br /&gt;&lt;span style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: Calibri;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://www.packtpub.com/microsoft-dynamics-crm-2011-real-world-tutorial/book" target="_blank"&gt;&lt;img border="0" height="320" src="http://1.bp.blogspot.com/-Lzx5mV9t3wU/Tr5SFlv3aVI/AAAAAAAAAZE/x_cb2YApFzU/s320/CRM2011NewFeatures.PNG" width="257" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;span style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: Calibri;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: Calibri;"&gt;Thanks,&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #222222; font-family: Calibri;"&gt;Jim&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7208889-4754161660456096435?l=jianwang.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jianwang.blogspot.com/feeds/4754161660456096435/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7208889&amp;postID=4754161660456096435' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7208889/posts/default/4754161660456096435'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7208889/posts/default/4754161660456096435'/><link rel='alternate' type='text/html' href='http://jianwang.blogspot.com/2012/01/get-free-dynamics-crm-2011-project.html' title='Get a free Dynamics CRM 2011 Project Tutorial book offer'/><author><name>Jim Wang</name><uri>http://www.blogger.com/profile/15963866631960791206</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='29' src='http://4.bp.blogspot.com/_-lOIedxo3AA/SaQ-RpTrHZI/AAAAAAAAANI/pQoZ77uYOe0/S220/Jim%27.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/-Lzx5mV9t3wU/Tr5SFlv3aVI/AAAAAAAAAZE/x_cb2YApFzU/s72-c/CRM2011NewFeatures.PNG' height='72' width='72'/><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7208889.post-9112913041976992117</id><published>2011-11-12T10:59:00.001Z</published><updated>2012-01-12T15:49:46.059Z</updated><title type='text'>New CRM 2011 Book Released: &lt;&lt; Microsoft Dynamics CRM 2011 New Features - with a CRM project tutorial &gt;&gt;.</title><content type='html'>&lt;b&gt;New CRM 2011 Book Released: &lt;a href="http://www.packtpub.com/microsoft-dynamics-crm-2011-real-world-tutorial/book" target="_blank"&gt;&amp;lt;&amp;lt; Microsoft Dynamics CRM 2011 New Features - with a CRM project tutorial &amp;gt;&amp;gt;&lt;/a&gt;.&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;img border="0" height="320" src="http://1.bp.blogspot.com/-Lzx5mV9t3wU/Tr5SFlv3aVI/AAAAAAAAAZE/x_cb2YApFzU/s320/CRM2011NewFeatures.PNG" width="258" /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="background-color: white; font-family: &amp;quot;Helvetica neue&amp;quot;, Helvetica, Arial, Verdana, sans-serif; font-size: 12px; line-height: 18px; margin-bottom: 0.8em; margin-top: 0.4em; text-align: left;"&gt;This book is your one stop resource to get to grips with all the new features of Dynamics CRM 2011. To make learning fun and engaging, we will build an Airline Compensation Management (ACM) system using Dynamics CRM 2011.&lt;/div&gt;&lt;div style="background-color: white; font-family: &amp;quot;Helvetica neue&amp;quot;, Helvetica, Arial, Verdana, sans-serif; font-size: 12px; line-height: 18px; margin-bottom: 0.8em; margin-top: 0.4em; text-align: left;"&gt;The book starts by setting up the development environment for Microsoft Dynamics CRM 2011. We will then build a structural architecture for the ACM system and configure it in Dynamics CRM 2011. While doing this, we will learn about the new customization features offered by Dynamics CRM 2011.&lt;/div&gt;&lt;div style="background-color: white; font-family: &amp;quot;Helvetica neue&amp;quot;, Helvetica, Arial, Verdana, sans-serif; font-size: 12px; line-height: 18px; margin-bottom: 0.8em; margin-top: 0.4em; text-align: left;"&gt;We will then move on to Data Importing and will cover the Import Data Wizard tool, as well as the Import file/data web service which provides additional capabilities that are not available in the Import Data Wizard.&lt;/div&gt;&lt;div style="background-color: white; font-family: &amp;quot;Helvetica neue&amp;quot;, Helvetica, Arial, Verdana, sans-serif; font-size: 12px; line-height: 18px; margin-bottom: 0.8em; margin-top: 0.4em; text-align: left;"&gt;We will use client-side programming to perform data validation, automation, and process enhancement and learn powerful event driven server-side programming methods: Plug-Ins and Processes (Formerly Workflows).&lt;/div&gt;&lt;div style="background-color: white; font-family: &amp;quot;Helvetica neue&amp;quot;, Helvetica, Arial, Verdana, sans-serif; font-size: 12px; line-height: 18px; margin-bottom: 0.8em; margin-top: 0.4em; text-align: left;"&gt;The book then steers you towards SharePoint integration, Charts and Dashboards, Customizing the Ribbon and Sitemap, and extending Dynamics CRM 2011 in the cloud.&lt;/div&gt;&lt;div style="background-color: white; font-family: &amp;quot;Helvetica neue&amp;quot;, Helvetica, Arial, Verdana, sans-serif; font-size: 12px; line-height: 18px; margin-bottom: 0.8em; margin-top: 0.4em; text-align: left;"&gt;Finally we will package the ACM solution and learn how to deploy it.&lt;/div&gt;&lt;br /&gt;&lt;b style="background-color: white; font-family: &amp;quot;Helvetica neue&amp;quot;, Helvetica, Arial, Verdana, sans-serif; font-size: 12px; line-height: 18px; text-align: left;"&gt;What you will learn from this book :&lt;/b&gt;&lt;br /&gt;&lt;ul style="background-color: white; font-family: &amp;quot;Helvetica neue&amp;quot;, Helvetica, Arial, Verdana, sans-serif; font-size: 12px; line-height: 18px; margin: 0px; padding: 0px; text-align: left;"&gt;&lt;li style="line-height: 1.6em; list-style-image: url(&amp;quot;http://www.packtpub.com/sites/default/files/pp/bullet-point-grey.png&amp;quot;); margin: 8px 0px 8px 40px; padding: 0px;"&gt;Set up a development environment for Dynamics CRM 2011&lt;/li&gt;&lt;li style="line-height: 1.6em; list-style-image: url(&amp;quot;http://www.packtpub.com/sites/default/files/pp/bullet-point-grey.png&amp;quot;); margin: 8px 0px 8px 40px; padding: 0px;"&gt;Import your important data from various sources using the Import Data Wizard&lt;/li&gt;&lt;li style="line-height: 1.6em; list-style-image: url(&amp;quot;http://www.packtpub.com/sites/default/files/pp/bullet-point-grey.png&amp;quot;); margin: 8px 0px 8px 40px; padding: 0px;"&gt;Use web resources to store files virtually&lt;/li&gt;&lt;li style="line-height: 1.6em; list-style-image: url(&amp;quot;http://www.packtpub.com/sites/default/files/pp/bullet-point-grey.png&amp;quot;); margin: 8px 0px 8px 40px; padding: 0px;"&gt;Visualize your data using filters, charts, and dashboards&lt;/li&gt;&lt;li style="line-height: 1.6em; list-style-image: url(&amp;quot;http://www.packtpub.com/sites/default/files/pp/bullet-point-grey.png&amp;quot;); margin: 8px 0px 8px 40px; padding: 0px;"&gt;Customize the default Microsoft Dynamics ribbon&lt;/li&gt;&lt;li style="line-height: 1.6em; list-style-image: url(&amp;quot;http://www.packtpub.com/sites/default/files/pp/bullet-point-grey.png&amp;quot;); margin: 8px 0px 8px 40px; padding: 0px;"&gt;Improve document management in your CRM system by integrating it with SharePoint 2010&lt;/li&gt;&lt;/ul&gt;&lt;div style="background-color: white; font-family: &amp;quot;Helvetica neue&amp;quot;, Helvetica, Arial, Verdana, sans-serif; font-size: 12px; line-height: 18px; margin-bottom: 0.8em; margin-top: 0.4em; text-align: left;"&gt;&lt;br /&gt;&lt;b style="background-color: white; font-family: &amp;quot;Helvetica neue&amp;quot;, Helvetica, Arial, Verdana, sans-serif; font-size: 12px; line-height: 18px; text-align: left;"&gt;Approach&lt;/b&gt;&lt;/div&gt;&lt;div style="background-color: white; font-family: &amp;quot;Helvetica neue&amp;quot;, Helvetica, Arial, Verdana, sans-serif; font-size: 12px; line-height: 18px; margin-bottom: 0.8em; margin-top: 0.4em; text-align: left;"&gt;This book is packed with practical steps and screenshots to make learning fun and addictive. You will learn to build a complete Airline Compensation Management system using Dynamics CRM 2011.&lt;/div&gt;&lt;br /&gt;&lt;b style="background-color: white; font-family: &amp;quot;Helvetica neue&amp;quot;, Helvetica, Arial, Verdana, sans-serif; font-size: 12px; line-height: 18px; text-align: left;"&gt;Who this book is written for&lt;/b&gt;&lt;br /&gt;&lt;div style="background-color: white; font-family: &amp;quot;Helvetica neue&amp;quot;, Helvetica, Arial, Verdana, sans-serif; font-size: 12px; line-height: 18px; margin-bottom: 0.8em; margin-top: 0.4em; text-align: left;"&gt;If you want a focused book that gets you up-to-speed with the new features of Microsft Dynamics CRM 2011 then this is the perfect book for you.&lt;a href="http://www.packtpub.com/microsoft-dynamics-crm-2011-real-world-tutorial/book" target="_blank"&gt;Microsoft Dynamics CRM 2011 New Features - with a CRM project tutorial&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="background-color: transparent;"&gt;&lt;b id="internal-source-marker_0.47247875202447176" style="font-weight: normal;"&gt;&lt;span style="background-color: transparent; color: black; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 15px; font-style: italic; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"&gt;Chapter 1&lt;/span&gt;&lt;span style="background-color: transparent; color: black; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"&gt;, &lt;/span&gt;&lt;span style="background-color: transparent; color: black; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 15px; font-style: italic; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"&gt;Setting up the Development Workspace&lt;/span&gt;&lt;span style="background-color: transparent; color: black; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"&gt;, shows how to set up and configure your Microsoft Dynamics CRM 2011 development workspace that you can use for the project.&lt;/span&gt;&lt;br /&gt;&lt;span style="background-color: transparent; color: black; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 15px; font-style: italic; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"&gt;Chapter 2&lt;/span&gt;&lt;span style="background-color: transparent; color: black; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"&gt;, &lt;/span&gt;&lt;span style="background-color: transparent; color: black; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 15px; font-style: italic; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"&gt;System Design and Configuration&lt;/span&gt;&lt;span style="background-color: transparent; color: black; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"&gt;, gives you a high level overview of an Airline Compensation Management (ACM) XRM application in Microsoft Dynamics CRM 2011 that we are going to build.&lt;/span&gt;&lt;br /&gt;&lt;span style="background-color: transparent; color: black; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 15px; font-style: italic; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"&gt;Chapter 3&lt;/span&gt;&lt;span style="background-color: transparent; color: black; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"&gt;, &lt;/span&gt;&lt;span style="background-color: transparent; color: black; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 15px; font-style: italic; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"&gt;Data Import&lt;/span&gt;&lt;span style="background-color: transparent; color: black; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"&gt;, populates some sample data into Microsoft Dynamics CRM 2011, using new Import Data Wizard for testing and further development.&lt;/span&gt;&lt;br /&gt;&lt;span style="background-color: transparent; color: black; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 15px; font-style: italic; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"&gt;Chapter 4&lt;/span&gt;&lt;span style="background-color: transparent; color: black; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"&gt;, &lt;/span&gt;&lt;span style="background-color: transparent; color: black; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 15px; font-style: italic; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"&gt;Client-side Programming&lt;/span&gt;&lt;span style="background-color: transparent; color: black; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"&gt;, gives you an overview of the new client-side programming features in Microsoft Dynamics CRM 2011.&lt;/span&gt;&lt;br /&gt;&lt;span style="background-color: transparent; color: black; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 15px; font-style: italic; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"&gt;Chapter 5&lt;/span&gt;&lt;span style="background-color: transparent; color: black; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"&gt;, &lt;/span&gt;&lt;span style="background-color: transparent; color: black; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 15px; font-style: italic; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"&gt;Server-side Programming&lt;/span&gt;&lt;span style="background-color: transparent; color: black; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"&gt;, introduces the Microsoft Dynamics CRM 2011 event driven server-side programming methods: Plug-ins and Processes.&lt;/span&gt;&lt;br /&gt;&lt;span style="background-color: transparent; color: black; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 15px; font-style: italic; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"&gt;Chapter 6&lt;/span&gt;&lt;span style="background-color: transparent; color: black; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"&gt;, &lt;/span&gt;&lt;span style="background-color: transparent; color: black; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 15px; font-style: italic; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"&gt;SharePoint Integration&lt;/span&gt;&lt;span style="background-color: transparent; color: black; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"&gt;, guides you through how to enable and configure the SharePoint integration feature in Microsoft Dynamics CRM 2011.&lt;/span&gt;&lt;br /&gt;&lt;span style="background-color: transparent; color: black; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 15px; font-style: italic; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"&gt;Chapter 7&lt;/span&gt;&lt;span style="background-color: transparent; color: black; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"&gt;, &lt;/span&gt;&lt;span style="background-color: transparent; color: black; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 15px; font-style: italic; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"&gt;Charts and Dashboards&lt;/span&gt;&lt;span style="background-color: transparent; color: black; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"&gt;, covers the new business intelligent features such as filters, charts, and dashboards.&lt;/span&gt;&lt;br /&gt;&lt;span style="background-color: transparent; color: black; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 15px; font-style: italic; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"&gt;Chapter 8&lt;/span&gt;&lt;span style="background-color: transparent; color: black; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"&gt;, &lt;/span&gt;&lt;span style="background-color: transparent; color: black; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 15px; font-style: italic; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"&gt;Extending Microsoft Dynamics CRM 2011 in the Cloud&lt;/span&gt;&lt;span style="background-color: transparent; color: black; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"&gt;, introduces Microsoft cloud offerings and sets up a portal site on the Windows Azure platform and integrates the portal with Microsoft Dynamics CRM 2011 Online.&lt;/span&gt;&lt;br /&gt;&lt;span style="background-color: transparent; color: black; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 15px; font-style: italic; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"&gt;Chapter 9&lt;/span&gt;&lt;span style="background-color: transparent; color: black; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"&gt;, &lt;/span&gt;&lt;span style="background-color: transparent; color: black; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 15px; font-style: italic; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"&gt;Sitemap and Ribbon Customization&lt;/span&gt;&lt;span style="background-color: transparent; color: black; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"&gt;, covers the Sitemap and Ribbon customization.&lt;/span&gt;&lt;br /&gt;&lt;span style="background-color: transparent; color: black; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 15px; font-style: italic; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"&gt;Chapter 10&lt;/span&gt;&lt;span style="background-color: transparent; color: black; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"&gt;, &lt;/span&gt;&lt;span style="background-color: transparent; color: black; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 15px; font-style: italic; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"&gt;Packaging it Up&lt;/span&gt;&lt;span style="background-color: transparent; color: black; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"&gt;, explains solutions and how to better use solutions to help our deployments into different environments.&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7208889-9112913041976992117?l=jianwang.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jianwang.blogspot.com/feeds/9112913041976992117/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7208889&amp;postID=9112913041976992117' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7208889/posts/default/9112913041976992117'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7208889/posts/default/9112913041976992117'/><link rel='alternate' type='text/html' href='http://jianwang.blogspot.com/2011/11/new-crm-2011-book-released.html' title='New CRM 2011 Book Released: &lt;&lt; Microsoft Dynamics CRM 2011 New Features - with a CRM project tutorial &gt;&gt;.'/><author><name>Jim Wang</name><uri>http://www.blogger.com/profile/15963866631960791206</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='29' src='http://4.bp.blogspot.com/_-lOIedxo3AA/SaQ-RpTrHZI/AAAAAAAAANI/pQoZ77uYOe0/S220/Jim%27.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/-Lzx5mV9t3wU/Tr5SFlv3aVI/AAAAAAAAAZE/x_cb2YApFzU/s72-c/CRM2011NewFeatures.PNG' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7208889.post-6760272530208488940</id><published>2011-09-28T21:53:00.006+01:00</published><updated>2011-09-28T22:18:05.976+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='CRM Report'/><title type='text'>Fetch-based report, Sandbox and TCP 808</title><content type='html'>Just a reminder, if you deploy a Dynamics CRM 2011 on different servers, you need to allow the inbound TCP port 808 on the Windows Firewall Inbound Rules on the CRM application server, or &lt;a href="http://msdn.microsoft.com/en-us/library/gg583972.aspx"&gt;change it&lt;/a&gt; to something meaningful to you.&lt;br /&gt;&lt;br /&gt;The reason for that is because, &lt;a href="http://blogs.msdn.com/b/crminthefield/archive/2011/03/11/crm-2011-server-setup-commonly-asked-questions.aspx"&gt;by default the Sandbox service are using the default port 808 to call back CRM server&lt;/a&gt;. Furthermore, because the Fetch-based report are running inside a "Sandbox" (that's why you can have fetch-based report on CRM Online, but not SQL based report). So to make sure the Fetch-based report works (all reports created by the CRM report builder are Fetch-based report), you must consider it as well.&lt;br /&gt;&lt;br /&gt;Some error message you may see when running a Fetch-based report (if not doing so):&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" &gt;Report render failure. Error: An error has occurred during report processing. (rsProcessingAborted)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;and&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" &gt;Event code: 3005&lt;br /&gt;Event message: An unhandled exception has occurred.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" &gt;Process information:&lt;br /&gt;Process name: w3wp.exe&lt;br /&gt;Account name: NT AUTHORITY\NETWORK SERVICE&lt;br /&gt;&lt;br /&gt;Exception information:&lt;br /&gt;Exception type: CrmReportingException&lt;br /&gt;Exception message: An error occurred during report rendering.&lt;br /&gt;at Microsoft.Crm.Web.Reporting.SrsReportViewer.SetExecutionCredentials(ServerReport reportObj)&lt;br /&gt;at Microsoft.Crm.Web.Reporting.RemoteSrsReportViewer.LoadReportAndSetParameters()&lt;br /&gt;at Microsoft.Crm.Application.Controls.AppUIPage.OnPreRender(EventArgs e)&lt;br /&gt;at System.Web.UI.Control.PreRenderRecursiveInternal()&lt;br /&gt;at System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)&lt;br /&gt;&lt;br /&gt;An error has occurred during report processing. (rsProcessingAborted)&lt;br /&gt;at Microsoft.Reporting.WebForms.ServerReportSoapProxy.OnSoapException(SoapException e)&lt;br /&gt;at Microsoft.Reporting.WebForms.Internal.Soap.ReportingServices2005.Execution.RSExecutionConnection.ProxyMethodInvocation.Execute[TReturn](RSExecutionConnection connection, ProxyMethod`1 initialMethod, ProxyMethod`1 retryMethod)&lt;br /&gt;at Microsoft.Reporting.WebForms.ServerReport.SetDataSourceCredentials(IEnumerable`1 credentials)&lt;br /&gt;at Microsoft.Crm.Web.Reporting.SrsReportViewer.SetExecutionCredentials(ServerReport reportObj)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;You might also see this error when debugging it:&lt;br /&gt;&lt;span class="Apple-style-span" &gt;Could not connect to net.tcp://CRMServer/CrmSandboxSdkListener-w3wp.&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7208889-6760272530208488940?l=jianwang.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jianwang.blogspot.com/feeds/6760272530208488940/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7208889&amp;postID=6760272530208488940' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7208889/posts/default/6760272530208488940'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7208889/posts/default/6760272530208488940'/><link rel='alternate' type='text/html' href='http://jianwang.blogspot.com/2011/09/fetch-based-report-sandbox-and-tcp-808.html' title='Fetch-based report, Sandbox and TCP 808'/><author><name>Jim Wang</name><uri>http://www.blogger.com/profile/15963866631960791206</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='29' src='http://4.bp.blogspot.com/_-lOIedxo3AA/SaQ-RpTrHZI/AAAAAAAAANI/pQoZ77uYOe0/S220/Jim%27.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7208889.post-2349007198434589490</id><published>2011-09-21T11:10:00.000+01:00</published><updated>2011-09-21T11:12:33.874+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='CRM UK Facebook'/><title type='text'>Microsoft Dynamics CRM - UK Group on Facebook</title><content type='html'>&lt;a href="http://www.facebook.com/group.php?gid=40680655851"&gt;Microsoft Dynamics CRM - UK Group on Facebook&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Description:&lt;/span&gt;&lt;br /&gt;A place for Dynamics CRM pros and users in the UK to help us know each other:&lt;br /&gt;- Sharing knowledge;&lt;br /&gt;- Contract/Job information;&lt;br /&gt;- CRM UK event reminder;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Privacy type:&lt;/span&gt;&lt;br /&gt;Closed: Limited public content. Members can see all content.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7208889-2349007198434589490?l=jianwang.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://www.facebook.com/group.php?gid=40680655851' title='Microsoft Dynamics CRM - UK Group on Facebook'/><link rel='replies' type='application/atom+xml' href='http://jianwang.blogspot.com/feeds/2349007198434589490/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7208889&amp;postID=2349007198434589490' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7208889/posts/default/2349007198434589490'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7208889/posts/default/2349007198434589490'/><link rel='alternate' type='text/html' href='http://jianwang.blogspot.com/2011/09/microsoft-dynamics-crm-uk-group-on.html' title='Microsoft Dynamics CRM - UK Group on Facebook'/><author><name>Jim Wang</name><uri>http://www.blogger.com/profile/15963866631960791206</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='29' src='http://4.bp.blogspot.com/_-lOIedxo3AA/SaQ-RpTrHZI/AAAAAAAAANI/pQoZ77uYOe0/S220/Jim%27.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7208889.post-5504743076807001682</id><published>2011-07-26T16:07:00.015+01:00</published><updated>2011-08-01T20:23:52.776+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Dynamics CRM Mobile HTML5'/><title type='text'>Dynamics Mobility and HTML5</title><content type='html'>Dynamics Mobility is to enable workforces to have access to their Dynamics CRM/ERP data through mobile device anywhere, anytime. It should also enable an enterprise to leverage mobile communications to stay connected for people.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/-rA31HZPC9E8/Ti7ZkHXlE8I/AAAAAAAAAVc/zUoCyMM43-c/s1600/DynamicsMobility.png" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 229px;" src="http://2.bp.blogspot.com/-rA31HZPC9E8/Ti7ZkHXlE8I/AAAAAAAAAVc/zUoCyMM43-c/s400/DynamicsMobility.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5633679398363534274" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;So what mobile platforms we are talking about?&lt;/span&gt;&lt;br /&gt;Let's take a look at two latest reports from &lt;a href="http://www.gartner.com/it/page.jsp?id=1689814"&gt;Gartner&lt;/a&gt; and &lt;a href="http://www.abiresearch.com/press/3550-Competitors+May+Erode+RIM%E2%80%99s+Enterprise+Smartphone+Market+Share,+but+BlackBerry+Will+Claim+Top+Spot+in+2015"&gt;ABI Research&lt;/a&gt;:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/-hfL7u0K65AU/Ti7a40Q1M0I/AAAAAAAAAVk/KWG0mowCZ0o/s1600/Gartner%2Breport.png" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 232px;" src="http://1.bp.blogspot.com/-hfL7u0K65AU/Ti7a40Q1M0I/AAAAAAAAAVk/KWG0mowCZ0o/s400/Gartner%2Breport.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5633680853523837762" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/-KnRX_ar6cwU/Ti7a_-CB1vI/AAAAAAAAAVs/t27Ye4_hHdc/s1600/ABI%2Breport.png" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 288px;" src="http://1.bp.blogspot.com/-KnRX_ar6cwU/Ti7a_-CB1vI/AAAAAAAAAVs/t27Ye4_hHdc/s400/ABI%2Breport.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5633680976405190386" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Also we must consider Nokia's strategic alliance with Microsoft on Windows Phone 7, and the retirement of Symbian. All facts taken together, the target mobile platforms are:&lt;div&gt;&lt;br /&gt;• Google Android&lt;br /&gt;• Apple iOS&lt;br /&gt;• Microsoft Windows Phone&lt;br /&gt;• BlackBerry&lt;br /&gt;&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/-qrpoD0eknXw/Ti7b_M_nTEI/AAAAAAAAAV0/w8hfSys2dmc/s1600/TargetMobileDevices.png" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 41px;" src="http://4.bp.blogspot.com/-qrpoD0eknXw/Ti7b_M_nTEI/AAAAAAAAAV0/w8hfSys2dmc/s400/TargetMobileDevices.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5633682062753352770" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;So what is the solution?&lt;/span&gt;&lt;br /&gt;In general, there are two approaches to get the proper mobile solutions for Dynamics:&lt;br /&gt;1. ISV solutions&lt;br /&gt;2. Custom solutions&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style:italic;"&gt;ISV Solutions&lt;span style="font-weight:bold;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;If we are talking about the CRM Mobility solution, there are two major ISV providers on the market, &lt;a href="http://www.tendigits.com/"&gt;TENdigits&lt;/a&gt; and &lt;a href="http://www.cwrmobility.com/"&gt;CWR Mobility&lt;/a&gt;. Both ISVs provide advanced level mobility solution for Microsoft Dynamics CRM.&lt;br /&gt;&lt;br /&gt;Also Microsoft Dynamics CRM 2011 has an out-of-box Mobile Express version which works on the target devices but lack functionalities,i.e. no offline mode.&lt;div&gt;&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/-jwiYek8BR1w/Ti7o7rJJsTI/AAAAAAAAAV8/hABEIzQuEMI/s1600/MobileExpress.JPG" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 242px;" src="http://4.bp.blogspot.com/-jwiYek8BR1w/Ti7o7rJJsTI/AAAAAAAAAV8/hABEIzQuEMI/s400/MobileExpress.JPG" border="0" alt="" id="BLOGGER_PHOTO_ID_5633696295778103602" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style:italic;"&gt;Custom Solutions&lt;span style="font-weight:bold;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;To develop a custom solution on mobile device, let's take a look at the different types of mobile application first. There are two kinds of mobile application:&lt;br /&gt;• Native app&lt;br /&gt;• Web app&lt;br /&gt;&lt;br /&gt;On the bright side of native app, it provides native APIs support for the mobile device, but you have to build applications using that mobile OS specific language. In other words, you need to develop different applications for different devices, in our target mobile platform, you need to develop 4 applications for Android, iOS, Windows Phone and BlackBerry. So you can probably imagine that it requires some efforts on upgrading and maintaining the application.&lt;br /&gt;&lt;br /&gt;Another choice is the Web app which is browser based application that running on the mobile devices. Generally speaking, mobile app provides the Cross-Platform support, so one web app can suit different mobile platforms.  The blind side for web app are mainly on: performance and limited API access.&lt;br /&gt;&lt;br /&gt;So if we want to build a unified cross-platform mobile application, prepare for the future and develop for the future, the mobile app is a good choice. But before making the choice, we also need to make sure that we have a clear goal. i.e. to build a CRM mobile application to allow salesperson access CRM data via their iPhone and iPad with offline mode... And then find out whether the web app can do the work on various aspects (local storage, security, performance etc.)&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;HTML5 is the choice for web app&lt;/span&gt;&lt;br /&gt;HTML 5 web app is the perfect choice for web based applications that are designed for mobile devices. HTML5 will be the new standard for HTML, XHTML and HTML DOM. Although HTML5 is not yet an official standard, and no browsers have full HTML5 support. All major browsers (Safari, Chrome, Firefox, Opera, and Internet Explorer) continue to add new HTML5 features to their latest versions, as well as the mobile browsers.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/-r5rjlLFdW3o/Ti7xzKfKjrI/AAAAAAAAAWE/Y-z2KZmFfVc/s1600/HTML5.png" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 61px;" src="http://3.bp.blogspot.com/-r5rjlLFdW3o/Ti7xzKfKjrI/AAAAAAAAAWE/Y-z2KZmFfVc/s400/HTML5.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5633706045177761458" /&gt;&lt;/a&gt;Now, are we going to build HTML5 web app start from scratch - No, we don't have to. There are some framework you can choose to use right now:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://jquerymobile.com/"&gt;jQuery Mobile&lt;/a&gt; is the most broadly compatible HTML5 library for building web sites and apps. JQuery mobile framework takes the "write less, do more" mantra to the next level: Instead of writing unique apps for each mobile device or OS, the jQuery mobile framework will allow you to design a single highly branded and customized web application that will work on all popular smartphone and tablet platforms.&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/-KW6yz-lqkCg/Ti7zSLIigPI/AAAAAAAAAWU/IlUn77mnmUI/s1600/jquery-mobile-devices-beta.png" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 380px; height: 377px;" src="http://3.bp.blogspot.com/-KW6yz-lqkCg/Ti7zSLIigPI/AAAAAAAAAWU/IlUn77mnmUI/s400/jquery-mobile-devices-beta.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5633707677438869746" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.phonegap.com/"&gt;PhoneGap&lt;/a&gt; is an HTML5 app platform that allows you to author native applications with web technologies and get access to APIs and app stores. PhoneGap leverages web technologies developers already know best... HTML and JavaScript.&lt;br /&gt;&lt;br /&gt;The following diagram shows how PhoneGap works:&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/-w9iIQDNVCqo/Ti7zwvmRpkI/AAAAAAAAAWc/6bfSa-wSC2A/s1600/PhoneGap.png" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 378px; height: 400px;" src="http://4.bp.blogspot.com/-w9iIQDNVCqo/Ti7zwvmRpkI/AAAAAAAAAWc/6bfSa-wSC2A/s400/PhoneGap.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5633708202623346242" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Both jQuery Mobile and PhoneGap are under the &lt;a href="http://en.wikipedia.org/wiki/MIT_License"&gt;MIT license&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;There are also commercial frameworks that available on the market, i.e. Sencha.&lt;br /&gt;&lt;a href="http://www.sencha.com/products/touch/"&gt;Sencha Touch&lt;/a&gt; is the world's first app framework built specifically to leverage HTML5, CSS3, and Javascript for the highest level of power, flexibility, and optimization. It allows you to develop mobile web apps that look and feel native on iPhone, Android, and BlackBerry touch devices.&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/-7QhPFnffeHg/Ti719CUU3AI/AAAAAAAAAWk/mVf3agliTM4/s1600/Sencha%2BTouch.png" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 379px; height: 400px;" src="http://1.bp.blogspot.com/-7QhPFnffeHg/Ti719CUU3AI/AAAAAAAAAWk/mVf3agliTM4/s400/Sencha%2BTouch.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5633710612830018562" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;So, are you ready for the HTML5 front-end web app of Microsoft Dynamics? :-)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Jim Wang&lt;br /&gt;Microsoft MVP Dynamics CRM&lt;br /&gt;July 2011&lt;/b&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7208889-5504743076807001682?l=jianwang.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jianwang.blogspot.com/feeds/5504743076807001682/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7208889&amp;postID=5504743076807001682' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7208889/posts/default/5504743076807001682'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7208889/posts/default/5504743076807001682'/><link rel='alternate' type='text/html' href='http://jianwang.blogspot.com/2011/07/dynamics-mobility-and-html5.html' title='Dynamics Mobility and HTML5'/><author><name>Jim Wang</name><uri>http://www.blogger.com/profile/15963866631960791206</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='29' src='http://4.bp.blogspot.com/_-lOIedxo3AA/SaQ-RpTrHZI/AAAAAAAAANI/pQoZ77uYOe0/S220/Jim%27.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/-rA31HZPC9E8/Ti7ZkHXlE8I/AAAAAAAAAVc/zUoCyMM43-c/s72-c/DynamicsMobility.png' height='72' width='72'/><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7208889.post-7797688977867400780</id><published>2011-07-16T11:31:00.003+01:00</published><updated>2011-07-16T13:25:46.543+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='CRM 2011'/><category scheme='http://www.blogger.com/atom/ns#' term='Plugins Development'/><title type='text'>CRM 2011 Plugin Development Workspace</title><content type='html'>2 years ago, I wrote an article about &lt;a href="http://jianwang.blogspot.com/2009/08/build-handy-dynamics-crm-development.html"&gt;Build a handy Dynamics CRM development environment&lt;/a&gt;, which has been widely used in the community. I have also provided several CRM 4.0 and 2011 development training courses for .Net developers in the past few years, the result and feedback were very good.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Now the Microsoft Dynamics CRM 2011 has been released, I'd like to guide you through an efficient development workspace for CRM 2011. The overall develop/build/debug process should be very smooth, see the following diagram:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/-7WfU2yvaLpk/TiGCWtpV4rI/AAAAAAAAAVU/O_oyG9ty2n4/s1600/CRM2011_PlugIn_Development_Workspace.GIF" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 265px; height: 366px;" src="http://3.bp.blogspot.com/-7WfU2yvaLpk/TiGCWtpV4rI/AAAAAAAAAVU/O_oyG9ty2n4/s400/CRM2011_PlugIn_Development_Workspace.GIF" border="0" alt="" id="BLOGGER_PHOTO_ID_5629924335911559858" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;First of all, the CRM 2011 only support 64bits server, so if you are using Windows 7, I suggest you to use the &lt;a href="http://www.virtualbox.org/"&gt;Oracle VM VirtualBox&lt;/a&gt; to install CRM 2011 server. My experience is the VirtualBox does everything you need for the development purpose, quicker and smaller, and also it supports 64bits Guest OS (even with a 32bits Host OS).&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The minimum RAM required to run CRM 2011 (all-in-one box) is 3GB (recommend 4GB); It's also possible to install the &lt;a href="http://www.microsoft.com/download/en/details.aspx?displaylang=en&amp;amp;id=5970"&gt;SharePoint foundation 2010&lt;/a&gt; on the same box if you have SharePoint document integration.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;About the Host PC, the minimum RAM required is 4GB, it's good to have 8GB RAM (all with 64bits Windows 7); install Visual Studio 2010 on the Host PC for better performance, then you can set up the &lt;a href="http://www.microsoft.com/download/en/details.aspx?id=475"&gt;Visual Studio 2010 Remote Debugger (x64)&lt;/a&gt; on the Guest OS that has CRM 2011 server installed (refer this article about how to &lt;a href="http://jianwang.blogspot.com/2009/08/build-handy-dynamics-crm-development.html"&gt;Build a handy Dynamics CRM development environment&lt;/a&gt;).&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Next, after you developed a CRM plugin in Visual Studio 2010, you may register it using the Plugin Registration Tool (can be found in the &lt;a href="http://www.microsoft.com/download/en/details.aspx?id=24004"&gt;CRM 2011 SDK&lt;/a&gt;). Make sure you register the DLL in the Disk (during development/testing phase); Also change the project properties in Visual Studio 2010: change the Build | Output path to the CRM server assembly folder, i.e.: &lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;\\CRM\c$\Program Files\Microsoft Dynamics CRM\Server\bin\assembly\&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;So each time you build the project, the new DLL and PDB file will be output to the assembly folder, CRM will pickup the new plugin DLL automatically without manually re-registering it.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;If you get the error message when rebuild the project in Visual Studio: "&lt;span class="Apple-style-span"&gt;Unable to copy file ...  because it is being used by another process...&lt;/span&gt;", you may add the "Pre-build event command line" to recycle the CRMAppPool or restart the Service of the CRM server (See: &lt;a href="http://jianwang.blogspot.com/2009/08/build-handy-dynamics-crm-development.html"&gt;Build a handy Dynamics CRM development environment&lt;/a&gt;).&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;If you use PowerShell to do so, you need to change the Host PC's Execution Policy to Unrestricted and RemoteSigned. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;On a 64bits Host PC, use the below command to start PowerShell,&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;%SystemRoot%\sysWOW64\WindowsPowerShell\v1.0\powershell.exe&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Then execute the following command:&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;Set-ExecutionPolicy Unrestricted&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;Set-ExecutionPolicy RemoteSigned&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;(Note, the 32bits PowerShell command line is in another folder: &lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;%SystemRoot%\system32\WindowsPowerShell\v1.0\powershell.exe )&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;To debug a plugin, make sure you attach the right process:&lt;/div&gt;&lt;div&gt;&lt;p&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 102); "&gt;online - &lt;b&gt;w3wp.exe&lt;/b&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 102); "&gt;offline - &lt;b&gt;Microsoft.Crm.Application.Hoster.exe&lt;/b&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 102); "&gt;asynchronous registered plug-ins (or custom workflow assemblies) - &lt;b&gt;CrmAsyncService.exe&lt;/b&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 102); "&gt;sandbox (isolation mode) - &lt;b&gt;Microsoft.Crm.Sandbox.WorkerProcess.exe &lt;/b&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Hope it helps!&lt;/div&gt;&lt;div&gt;:)&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;p&gt;&lt;/p&gt;         &lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7208889-7797688977867400780?l=jianwang.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jianwang.blogspot.com/feeds/7797688977867400780/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7208889&amp;postID=7797688977867400780' title='6 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7208889/posts/default/7797688977867400780'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7208889/posts/default/7797688977867400780'/><link rel='alternate' type='text/html' href='http://jianwang.blogspot.com/2011/07/crm-2011-plugin-development-workspace.html' title='CRM 2011 Plugin Development Workspace'/><author><name>Jim Wang</name><uri>http://www.blogger.com/profile/15963866631960791206</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='29' src='http://4.bp.blogspot.com/_-lOIedxo3AA/SaQ-RpTrHZI/AAAAAAAAANI/pQoZ77uYOe0/S220/Jim%27.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/-7WfU2yvaLpk/TiGCWtpV4rI/AAAAAAAAAVU/O_oyG9ty2n4/s72-c/CRM2011_PlugIn_Development_Workspace.GIF' height='72' width='72'/><thr:total>6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7208889.post-4028073095158134340</id><published>2011-06-22T11:20:00.004+01:00</published><updated>2011-06-22T11:33:02.056+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='CRM Finance Insurance'/><title type='text'>CRM 2011 add-on solution for Finance / Insurance sector?</title><content type='html'>&lt;p&gt;I have a list of CRM 2011 add-on solutions for Finance / Insurance sector, try to beat the Oracle Financials. See below:&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;span style="font-size:78%;"&gt;&lt;strong&gt;UK based vendors:&lt;/strong&gt;&lt;br /&gt;http://dynamics-crm.pinpoint.microsoft.com/en-gb/applications/uk-and-worldwide-microsoft-dynamics-crm-for-financial-services-12884910408&lt;br /&gt;http://dynamics-crm.pinpoint.microsoft.com/en-GB/applications/consultcrm-microsoft-crm-for-financial-services-4294996711&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:78%;"&gt;&lt;strong&gt;US based vendors:&lt;br /&gt;&lt;/strong&gt;http://dynamics.pinpoint.microsoft.com/en-GB/PartnerDetails.aspx?PartnerId=4295509793&amp;amp;ProductId=4295028573&amp;amp;CurrentTab=1&lt;br /&gt;http://dynamics.pinpoint.microsoft.com/en-us/applications/crm-for-financial-services-wealth-entry-edition-4294993420&lt;br /&gt;http://dynamics-crm.pinpoint.microsoft.com/en-us/applications/insurance-benefits-brokers-solution-for-microsoft-dynamics-crm-4294971329&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span&gt;Please contact me (jim.wang^csc.com) along with your product introduction if your company base in the UK and has such solutions; or want to sell the product in the UK market.&lt;br /&gt;&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;Thanks!&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7208889-4028073095158134340?l=jianwang.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jianwang.blogspot.com/feeds/4028073095158134340/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7208889&amp;postID=4028073095158134340' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7208889/posts/default/4028073095158134340'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7208889/posts/default/4028073095158134340'/><link rel='alternate' type='text/html' href='http://jianwang.blogspot.com/2011/06/crm-2011-add-on-solution-for-finance.html' title='CRM 2011 add-on solution for Finance / Insurance sector?'/><author><name>Jim Wang</name><uri>http://www.blogger.com/profile/15963866631960791206</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='29' src='http://4.bp.blogspot.com/_-lOIedxo3AA/SaQ-RpTrHZI/AAAAAAAAANI/pQoZ77uYOe0/S220/Jim%27.JPG'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7208889.post-2980316566631343681</id><published>2011-05-04T11:06:00.006+01:00</published><updated>2011-05-04T12:45:06.296+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Customer Portal'/><title type='text'>Customer Portal 2011 - An error has occurred while loading content required for this feature</title><content type='html'>&lt;div style="text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;It's just a quick post here, hopefully to save your time: if you deploy the &lt;a href="http://dynamics.pinpoint.microsoft.com/en-US/applications/customer-portal-for-microsoft-dynamics-crm-2011-12884910826"&gt;Customer Portal for Microsoft Dynamics CRM 2011&lt;/a&gt; on a Windows Server 2008 machine or VM, and get this error message when editing the page: &lt;span class="Apple-style-span"&gt;"An error has occurred while loading content required for this feature"&lt;/span&gt;&lt;div&gt;&lt;img src="http://3.bp.blogspot.com/-3P6KI16rbR0/TcEpLJ5X_WI/AAAAAAAAAUY/gGpK2SM4jFU/s400/error.png" style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 382px; height: 134px;" border="0" alt="" id="BLOGGER_PHOTO_ID_5602804683037474146" /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Windows Event log doesn't say anything about it, but if you fiddler it, you will find a 404 error related on a Cms.svc endpoint:&lt;/div&gt;&lt;img src="http://1.bp.blogspot.com/-0TnGjSBztUc/TcEuwRpsvSI/AAAAAAAAAUg/AHrWKuJiPN8/s400/fiddler.png" style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 177px;" border="0" alt="" id="BLOGGER_PHOTO_ID_5602810818332507426" /&gt;&lt;div&gt;&lt;b&gt;Solution:&lt;/b&gt;&lt;/div&gt;&lt;div&gt;To solve this issue, firstly make sure you have installed the WCF activation features.&lt;/div&gt;&lt;img src="http://3.bp.blogspot.com/-tZmim8WGAbE/TcEnfjxBCjI/AAAAAAAAAUQ/BwHzqxUcXDo/s400/WCF.png" style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 128px;" border="0" alt="" id="BLOGGER_PHOTO_ID_5602802834555865650" /&gt;&lt;div&gt;Also you have installed Windows Server 2008 R2 + SP1 , you need to install the &lt;a href="http://www.microsoft.com/downloads/en/details.aspx?FamilyID=41bdce1f-3cb3-44bb-9b33-23a1b8c99ac3&amp;amp;displaylang=en"&gt;Microsoft .NET Framework 4 KB2468871&lt;/a&gt;&lt;br /&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;Thanks MVP Shan McArthur from Adxstudio to point out on his &lt;a href="http://www.shanmcarthur.net/Default.aspx?DN=7d0cd525-bbc5-46c3-8096-95f93827aeea"&gt;blog&lt;/a&gt;:   &lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;span class="Apple-style-span"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7208889-2980316566631343681?l=jianwang.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jianwang.blogspot.com/feeds/2980316566631343681/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7208889&amp;postID=2980316566631343681' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7208889/posts/default/2980316566631343681'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7208889/posts/default/2980316566631343681'/><link rel='alternate' type='text/html' href='http://jianwang.blogspot.com/2011/05/customer-portal-2011-error-has-occurred.html' title='Customer Portal 2011 - An error has occurred while loading content required for this feature'/><author><name>Jim Wang</name><uri>http://www.blogger.com/profile/15963866631960791206</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='29' src='http://4.bp.blogspot.com/_-lOIedxo3AA/SaQ-RpTrHZI/AAAAAAAAANI/pQoZ77uYOe0/S220/Jim%27.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/-3P6KI16rbR0/TcEpLJ5X_WI/AAAAAAAAAUY/gGpK2SM4jFU/s72-c/error.png' height='72' width='72'/><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7208889.post-2172275619461213462</id><published>2011-03-31T21:52:00.003+01:00</published><updated>2011-03-31T21:56:35.508+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Design Expression Blend Sketchflow Sliverlight'/><title type='text'>mSketch: Dynamics CRM 2011 Designer's Tool - Using Microsoft Expression Blend with Sketchflow</title><content type='html'>&lt;div&gt;&lt;p style="margin-top: 0in; margin-right: 0in; margin-bottom: 0in; margin-left: 0in; font-family: Calibri; font-size: 11pt; "&gt;I have been asked to test the &lt;a href="http://www.magnetism.co.nz/solutionscasestudies/solutions/msketch.aspx"&gt;Magnetism mSketch&lt;/a&gt; application - a mockup tool for &lt;a href="http://expression.microsoft.com/en-us/cc507094.aspx"&gt;Microsoft Dynamics CRM using Microsoft Expression Blend with Sketchflow&lt;/a&gt;.&lt;/p&gt;&lt;p style="margin-top: 0in; margin-right: 0in; margin-bottom: 0in; margin-left: 0in; font-family: Calibri; font-size: 11pt; "&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style="margin-top: 0in; margin-right: 0in; margin-bottom: 0in; margin-left: 0in; font-family: Calibri; font-size: 11pt; "&gt;&lt;/p&gt;&lt;p style="margin-top: 0in; margin-right: 0in; margin-bottom: 0in; margin-left: 0in; font-family: Calibri; font-size: 11pt; "&gt;That is something I were looking for - to have a "CRM template" on Sketchflow, I'm so pleased to see it - well done Magnetism guys!&lt;/p&gt;&lt;p style="margin-top: 0in; margin-right: 0in; margin-bottom: 0in; margin-left: 0in; font-family: Calibri; font-size: 11pt; "&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style="margin-top: 0in; margin-right: 0in; margin-bottom: 0in; margin-left: 0in; font-family: Calibri; font-size: 11pt; "&gt;Imagine how quickly a CRM designer can draw a CRM screen quickly without doing the CRM form customisations, collect feedbacks from team/customer and get the design signed off quickly:&lt;/p&gt;&lt;p style="margin-top: 0in; margin-right: 0in; margin-bottom: 0in; margin-left: 0in; font-family: Calibri; font-size: 11pt; "&gt;&lt;/p&gt;&lt;p style="margin-top: 0in; margin-right: 0in; margin-bottom: 0in; margin-left: 0in; font-family: Calibri; font-size: 11pt; "&gt;&lt;span class="Apple-style-span" &gt;The designer opens the Microsoft Expression Blend 4 with Sketchflow, create a new Silverlight Sketchflow Application project , then drag-and-drop &lt;span style="font-weight: bold; "&gt;CRM elements&lt;/span&gt;&lt;span&gt; &lt;/span&gt;on several screens, publish the design on to SharePoint site for the team/customer review, team/customer write comments/feedbacks directly onto the design, designer make changes accordingly, export the design into Microsoft Word document directly, email customer and get it signed off.&lt;/span&gt;&lt;/p&gt;&lt;p style="margin-top: 0in; margin-right: 0in; margin-bottom: 0in; margin-left: 0in; font-family: Calibri; font-size: 11pt; "&gt;&lt;span class="Apple-style-span" &gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="margin-top: 0in; margin-right: 0in; margin-bottom: 0in; margin-left: 0in; font-family: Calibri; font-size: 11pt; "&gt;&lt;/p&gt;&lt;p style="margin-top: 0in; margin-right: 0in; margin-bottom: 0in; margin-left: 0in; font-family: Calibri; font-size: 11pt; "&gt;The Microsoft Expression Blend 4 with Sketchflow can do all above except the "CRM elements" - but where to get it?  The mSketch helps here!&lt;/p&gt;&lt;p style="margin-top: 0in; margin-right: 0in; margin-bottom: 0in; margin-left: 0in; font-family: Calibri; font-size: 11pt; "&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style="margin-top: 0in; margin-right: 0in; margin-bottom: 0in; margin-left: 0in; font-family: Calibri; font-size: 11pt; "&gt;The current version of mSketch provides a Microsoft Expression project, you need to open the project first and then create your Silverlight Sketchflow Application project, and then copy/paste the &lt;span style="font-weight: bold; "&gt;CRM elements&lt;/span&gt; from 7 screens that comes with mSketch.&lt;span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="margin-top: 0in; margin-right: 0in; margin-bottom: 0in; margin-left: 0in; font-family: Calibri; font-size: 11pt; "&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style="margin-top: 0in; margin-right: 0in; margin-bottom: 0in; margin-left: 0in; font-family: Calibri; font-size: 11pt; "&gt;&lt;/p&gt;&lt;p style="margin-top: 0in; margin-right: 0in; margin-bottom: 0in; margin-left: 0in; font-family: Calibri; font-size: 11pt; "&gt;Here is the &lt;a href="http://help.magnetism.co.nz/#getting-started-with-msketch"&gt;mSketch user guideline&lt;/a&gt;.&lt;/p&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;a href="http://1.bp.blogspot.com/-p30iuYiJ_CE/TZTppw-_ggI/AAAAAAAAAT8/61zJZPRgU2M/s1600/CRM%2BSketchflow.PNG" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 340px;" src="http://1.bp.blogspot.com/-p30iuYiJ_CE/TZTppw-_ggI/AAAAAAAAAT8/61zJZPRgU2M/s400/CRM%2BSketchflow.PNG" border="0" alt="" id="BLOGGER_PHOTO_ID_5590349941206647298" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;p style="margin:0in;font-family:Calibri;font-size:11.0pt"&gt;&lt;span class="Apple-style-span" style="font-style: italic; "&gt;I hope in the next version, it can provide a installation package. Once installed,&lt;span style="mso-spacerun:yes"&gt;  &lt;/span&gt;create a CRM mockup library in the Assets list of the Microsoft Expression Blend. The CRM mockup library provide the following elements for designers to allow quickly drag-and-drop, i.e.:&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin:0in;margin-left:.375in;font-family:Calibri;font-size:11.0pt"&gt; &lt;/p&gt;  &lt;ul type="disc" style="margin-left:.375in;direction:ltr;unicode-bidi:embed;  margin-top:0in;margin-bottom:0in"&gt;  &lt;li style="margin-top:0;margin-bottom:0;vertical-align:middle"&gt;&lt;span style="font-style:italic;font-family:Calibri;font-size:11.0pt"&gt;Global Icon      Elements&lt;/span&gt;&lt;/li&gt; &lt;/ul&gt;  &lt;ul type="disc" style="margin-left:.375in;direction:ltr;unicode-bidi:embed;  margin-top:0in;margin-bottom:0in"&gt;  &lt;li style="margin-top:0;margin-bottom:0;vertical-align:middle"&gt;&lt;span style="font-style:italic;font-family:Calibri;font-size:11.0pt"&gt;Top Ribbon      Bar Elements&lt;/span&gt;&lt;/li&gt; &lt;/ul&gt;  &lt;ul type="disc" style="margin-left:.375in;direction:ltr;unicode-bidi:embed;  margin-top:0in;margin-bottom:0in"&gt;  &lt;li style="margin-top:0;margin-bottom:0;vertical-align:middle"&gt;&lt;span style="font-style:italic;font-family:Calibri;font-size:11.0pt"&gt;Left      Navigation Panel Elements&lt;/span&gt;&lt;/li&gt; &lt;/ul&gt;  &lt;ul type="disc" style="margin-left:.375in;direction:ltr;unicode-bidi:embed;  margin-top:0in;margin-bottom:0in"&gt;  &lt;li style="margin-top:0;margin-bottom:0;vertical-align:middle"&gt;&lt;span style="font-style:italic;font-family:Calibri;font-size:11.0pt"&gt;Entity Left      Navigation Panel Elements&lt;/span&gt;&lt;/li&gt; &lt;/ul&gt;  &lt;ul type="disc" style="margin-left:.375in;direction:ltr;unicode-bidi:embed;  margin-top:0in;margin-bottom:0in"&gt;  &lt;li style="margin-top:0;margin-bottom:0;vertical-align:middle"&gt;&lt;span style="font-style:italic;font-family:Calibri;font-size:11.0pt"&gt;Entity Form      Elements&lt;/span&gt;&lt;/li&gt; &lt;/ul&gt;  &lt;ul type="disc" style="margin-left:.375in;direction:ltr;unicode-bidi:embed;  margin-top:0in;margin-bottom:0in"&gt;  &lt;li style="margin-top:0;margin-bottom:0;vertical-align:middle"&gt;&lt;span style="font-style:italic;font-family:Calibri;font-size:11.0pt"&gt;Entity View      Elements&lt;/span&gt;&lt;/li&gt;  &lt;li style="margin-top:0;margin-bottom:0;vertical-align:middle"&gt;&lt;span style="font-style:italic;font-family:Calibri;font-size:11.0pt"&gt;Field      Control Elements(textbox, lookup, picklist etc.)&lt;/span&gt;&lt;/li&gt; &lt;/ul&gt;  &lt;p style="margin:0in;font-family:Calibri;font-size:11.0pt"&gt; &lt;/p&gt;  &lt;p style="margin:0in;font-family:Calibri;font-size:11.0pt"&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style="margin:0in;font-family:Calibri;font-size:11.0pt"&gt;mSketch is a handy tool for CRM designer and architectures.&lt;/p&gt;  &lt;p style="margin:0in;font-family:Calibri;font-size:11.0pt"&gt;Moving forward, I also hope the tool can provide more interactive actions with developers, i.e.: perform more CRM Form functions in Sketchflow.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7208889-2172275619461213462?l=jianwang.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jianwang.blogspot.com/feeds/2172275619461213462/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7208889&amp;postID=2172275619461213462' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7208889/posts/default/2172275619461213462'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7208889/posts/default/2172275619461213462'/><link rel='alternate' type='text/html' href='http://jianwang.blogspot.com/2011/03/msketch-dynamics-crm-2011-designers.html' title='mSketch: Dynamics CRM 2011 Designer&apos;s Tool - Using Microsoft Expression Blend with Sketchflow'/><author><name>Jim Wang</name><uri>http://www.blogger.com/profile/15963866631960791206</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='29' src='http://4.bp.blogspot.com/_-lOIedxo3AA/SaQ-RpTrHZI/AAAAAAAAANI/pQoZ77uYOe0/S220/Jim%27.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/-p30iuYiJ_CE/TZTppw-_ggI/AAAAAAAAAT8/61zJZPRgU2M/s72-c/CRM%2BSketchflow.PNG' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7208889.post-2830707270277282547</id><published>2011-03-09T22:45:00.000Z</published><updated>2011-03-09T22:56:55.870Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='Microsoft MVP'/><title type='text'>MVP Summit 2011</title><content type='html'>It's great to meet CRM MVPs in Bellevue, WA last week.&lt;br /&gt;Great thanks to the CRM product group and communities, congratulate to the successful launch of CRM 2011 and CRM 2011 Online!&lt;br /&gt;&lt;br /&gt;Great product for the clouding solutions!&lt;br /&gt;&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/-DARN4Ov0UWs/TXgFc5_F4PI/AAAAAAAAASo/X_vG2tjyYss/s1600/CRMmvpSummit2011.JPG"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 237px;" src="http://3.bp.blogspot.com/-DARN4Ov0UWs/TXgFc5_F4PI/AAAAAAAAASo/X_vG2tjyYss/s400/CRMmvpSummit2011.JPG" border="0" alt=""id="BLOGGER_PHOTO_ID_5582217732285653234" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7208889-2830707270277282547?l=jianwang.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jianwang.blogspot.com/feeds/2830707270277282547/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7208889&amp;postID=2830707270277282547' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7208889/posts/default/2830707270277282547'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7208889/posts/default/2830707270277282547'/><link rel='alternate' type='text/html' href='http://jianwang.blogspot.com/2011/03/mvp-summit-2011.html' title='MVP Summit 2011'/><author><name>Jim Wang</name><uri>http://www.blogger.com/profile/15963866631960791206</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='29' src='http://4.bp.blogspot.com/_-lOIedxo3AA/SaQ-RpTrHZI/AAAAAAAAANI/pQoZ77uYOe0/S220/Jim%27.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/-DARN4Ov0UWs/TXgFc5_F4PI/AAAAAAAAASo/X_vG2tjyYss/s72-c/CRMmvpSummit2011.JPG' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7208889.post-4471496872785489427</id><published>2010-12-26T12:14:00.005Z</published><updated>2010-12-28T15:18:38.794Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='xRM'/><title type='text'>A thought - the 'xRM Services' for Business Productivity &amp; Collaboration</title><content type='html'>Microsoft has been very generous in the past few years to enhance functionalities of Windows Servers, i.e.: IIS, Hyper-V, SharePoint Services etc.&lt;br /&gt;&lt;br /&gt;I have been thinking for a while and suggested Microsoft the possibility to split the xRM Services from Dynamics CRM; and to make it free, just like the WSS(SharePoint Foundation) and MOSS(SharePoint Server). The xRM Services could be just a 'relational system' base on the entity framework using SQL Express etc.&lt;br /&gt;&lt;br /&gt;The major reason for this idea is: Many organisations use the Microsoft Dynamics CRM as a xRM platform, and they are not interested in the classic CRM modules (Sales/Services/Marketing), so they don't want to pay the full license. In my opinion, the "xRM Services" will not only benefit to many organisations, also it will be good for the Dynamics CRM market in long term.&lt;br /&gt;&lt;br /&gt;It's just a thought, let's see how it goes.&lt;br /&gt;&lt;br /&gt;Happy New Year 2011!&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_-lOIedxo3AA/TRn-GA8EyWI/AAAAAAAAASc/CzC7WeNfcdY/s1600/xRM_Services.PNG"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 312px;" src="http://4.bp.blogspot.com/_-lOIedxo3AA/TRn-GA8EyWI/AAAAAAAAASc/CzC7WeNfcdY/s400/xRM_Services.PNG" border="0" alt=""id="BLOGGER_PHOTO_ID_5555750994622859618" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7208889-4471496872785489427?l=jianwang.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jianwang.blogspot.com/feeds/4471496872785489427/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7208889&amp;postID=4471496872785489427' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7208889/posts/default/4471496872785489427'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7208889/posts/default/4471496872785489427'/><link rel='alternate' type='text/html' href='http://jianwang.blogspot.com/2010/12/thought-xrm-services-for-business.html' title='A thought - the &apos;xRM Services&apos; for Business Productivity &amp; Collaboration'/><author><name>Jim Wang</name><uri>http://www.blogger.com/profile/15963866631960791206</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='29' src='http://4.bp.blogspot.com/_-lOIedxo3AA/SaQ-RpTrHZI/AAAAAAAAANI/pQoZ77uYOe0/S220/Jim%27.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_-lOIedxo3AA/TRn-GA8EyWI/AAAAAAAAASc/CzC7WeNfcdY/s72-c/xRM_Services.PNG' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7208889.post-8718901388193785440</id><published>2010-09-09T16:15:00.006+01:00</published><updated>2011-06-26T16:54:27.130+01:00</updated><title type='text'>Dynamics CRM 2011 beta released today - The Power of Productivity</title><content type='html'>The &lt;a href="http://offers.crmchoice.com/CRM2011Beta-Landing/"&gt;Dynamics CRM 2011 beta&lt;/a&gt; is released today!&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7208889-8718901388193785440?l=jianwang.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jianwang.blogspot.com/feeds/8718901388193785440/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7208889&amp;postID=8718901388193785440' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7208889/posts/default/8718901388193785440'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7208889/posts/default/8718901388193785440'/><link rel='alternate' type='text/html' href='http://jianwang.blogspot.com/2010/09/dynamics-crm-2011-beta-released-today.html' title='Dynamics CRM 2011 beta released today - The Power of Productivity'/><author><name>Jim Wang</name><uri>http://www.blogger.com/profile/15963866631960791206</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='29' src='http://4.bp.blogspot.com/_-lOIedxo3AA/SaQ-RpTrHZI/AAAAAAAAANI/pQoZ77uYOe0/S220/Jim%27.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7208889.post-5121876814199410409</id><published>2010-08-24T20:51:00.003+01:00</published><updated>2010-08-24T22:12:50.882+01:00</updated><title type='text'>Software Advice: 15 Favourites Microsoft Dynamics CRM Industry Solutions</title><content type='html'>Lauren Carlson has recently posted a blog about the 15 Favourites Microsoft Dynamics CRM Industry Solutions:&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: verdana, arial, helvetica, sans-serif; font-size: 13px; line-height: 19px; "&gt;&lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 18px; font-weight: normal; "&gt;When most industry observers hear &lt;a href="http://www.softwareadvice.com/crm/"&gt;customer relationship management&lt;/a&gt; (CRM), they think of applications for sales, service and marketing. However, actual &lt;a href="http://www.softwareadvice.com/crm/" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; color: rgb(98, 100, 99); text-decoration: none; outline-style: none; outline-width: initial; outline-color: initial; "&gt;CRM software&lt;/a&gt; users think of the much more specific functionality required to do business in their industry. For example, sales software used by a pharmaceutical rep to track FDA-related information will vary greatly from that used by a cattle rancher to track their herd. Yes, there’s an app for that.&lt;/p&gt;&lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 18px; font-weight: normal; "&gt;To meet these unique industry requirements, Microsoft has called on hundreds of partners that resell, customize and implement Microsoft Dynamics CRM. These value-added resellers (VARs) and independent software vendors (ISVs) are extending the core Dynamics CRM applications to meet the unique needs of companies in a range of vertical markets. There are now over 750 certified industry solutions built on Microsoft Dynamics CRM. The breadth of industry solutions available is impressive – a testament to the scope and sophistication of the Microsoft partner channel.&lt;/p&gt;&lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 18px; font-weight: normal; "&gt;To demonstrate the specificity of these solutions, we decided to highlight some of our favorite Microsoft Dynamics CRM partner solutions. For easy navigation, we’ve linked each industry to its corresponding solution:&lt;br /&gt;&lt;/p&gt;&lt;center style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "&gt;&lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 18px; font-weight: normal; "&gt;&lt;/p&gt;&lt;table align="center" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 1px; border-right-width: 2px; border-bottom-width: 2px; border-left-width: 2px; border-top-style: solid; border-right-style: none; border-bottom-style: none; border-left-style: none; border-top-color: rgb(0, 0, 0); border-right-color: rgb(255, 255, 255); border-bottom-color: rgb(255, 255, 255); border-left-color: rgb(255, 255, 255); border-collapse: collapse; border-width: initial; border-color: initial; "&gt;&lt;tbody style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "&gt;&lt;tr style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "&gt;&lt;td style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 5px; padding-right: 10px; padding-bottom: 5px; padding-left: 10px; border-top-width: 2px; border-right-width: 2px; border-bottom-width: 2px; border-left-width: 2px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: rgb(255, 255, 255); border-right-color: rgb(255, 255, 255); border-bottom-color: rgb(255, 255, 255); border-left-color: rgb(255, 255, 255); border-collapse: collapse; font-size: 11px; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: rgb(255, 255, 255); background-position: initial initial; background-repeat: initial initial; "&gt;&lt;a href="http://www.softwareadvice.com/articles/crm/microsoft-dynamics-crm-industry-solutions-our-20-favorites-1082010/#Advertising" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; color: rgb(98, 100, 99); text-decoration: none; outline-style: none; outline-width: initial; outline-color: initial; "&gt;Advertising&lt;/a&gt;&lt;/td&gt;&lt;td style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 5px; padding-right: 10px; padding-bottom: 5px; padding-left: 10px; border-top-width: 2px; border-right-width: 2px; border-bottom-width: 2px; border-left-width: 2px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: rgb(255, 255, 255); border-right-color: rgb(255, 255, 255); border-bottom-color: rgb(255, 255, 255); border-left-color: rgb(255, 255, 255); border-collapse: collapse; font-size: 11px; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: rgb(255, 255, 255); background-position: initial initial; background-repeat: initial initial; "&gt;&lt;a href="http://www.softwareadvice.com/articles/crm/microsoft-dynamics-crm-industry-solutions-our-20-favorites-1082010/#Financial Services" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; color: rgb(98, 100, 99); text-decoration: none; outline-style: none; outline-width: initial; outline-color: initial; "&gt;Financial Services&lt;/a&gt;&lt;/td&gt;&lt;td style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 5px; padding-right: 10px; padding-bottom: 5px; padding-left: 10px; border-top-width: 2px; border-right-width: 2px; border-bottom-width: 2px; border-left-width: 2px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: rgb(255, 255, 255); border-right-color: rgb(255, 255, 255); border-bottom-color: rgb(255, 255, 255); border-left-color: rgb(255, 255, 255); border-collapse: collapse; font-size: 11px; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: rgb(255, 255, 255); background-position: initial initial; background-repeat: initial initial; "&gt;&lt;a href="http://www.softwareadvice.com/articles/crm/microsoft-dynamics-crm-industry-solutions-our-20-favorites-1082010/#Non-Profit" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; color: rgb(98, 100, 99); text-decoration: none; outline-style: none; outline-width: initial; outline-color: initial; "&gt;Non-Profit&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "&gt;&lt;td style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 5px; padding-right: 10px; padding-bottom: 5px; padding-left: 10px; border-top-width: 2px; border-right-width: 2px; border-bottom-width: 2px; border-left-width: 2px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: rgb(255, 255, 255); border-right-color: rgb(255, 255, 255); border-bottom-color: rgb(255, 255, 255); border-left-color: rgb(255, 255, 255); border-collapse: collapse; font-size: 11px; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: rgb(255, 255, 255); background-position: initial initial; background-repeat: initial initial; "&gt;&lt;a href="http://www.softwareadvice.com/articles/crm/microsoft-dynamics-crm-industry-solutions-our-20-favorites-1082010/#Agriculture" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; color: rgb(98, 100, 99); text-decoration: none; outline-style: none; outline-width: initial; outline-color: initial; "&gt;Agriculture&lt;/a&gt;&lt;/td&gt;&lt;td style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 5px; padding-right: 10px; padding-bottom: 5px; padding-left: 10px; border-top-width: 2px; border-right-width: 2px; border-bottom-width: 2px; border-left-width: 2px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: rgb(255, 255, 255); border-right-color: rgb(255, 255, 255); border-bottom-color: rgb(255, 255, 255); border-left-color: rgb(255, 255, 255); border-collapse: collapse; font-size: 11px; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: rgb(255, 255, 255); background-position: initial initial; background-repeat: initial initial; "&gt;&lt;a href="http://www.softwareadvice.com/articles/crm/microsoft-dynamics-crm-industry-solutions-our-20-favorites-1082010/#Healthcare" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; color: rgb(98, 100, 99); text-decoration: none; outline-style: none; outline-width: initial; outline-color: initial; "&gt;Healthcare&lt;/a&gt;&lt;/td&gt;&lt;td style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 5px; padding-right: 10px; padding-bottom: 5px; padding-left: 10px; border-top-width: 2px; border-right-width: 2px; border-bottom-width: 2px; border-left-width: 2px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: rgb(255, 255, 255); border-right-color: rgb(255, 255, 255); border-bottom-color: rgb(255, 255, 255); border-left-color: rgb(255, 255, 255); border-collapse: collapse; font-size: 11px; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: rgb(255, 255, 255); background-position: initial initial; background-repeat: initial initial; "&gt;&lt;a href="http://www.softwareadvice.com/articles/crm/microsoft-dynamics-crm-industry-solutions-our-20-favorites-1082010/#Pharmaceuticals" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; color: rgb(98, 100, 99); text-decoration: none; outline-style: none; outline-width: initial; outline-color: initial; "&gt;Pharmaceuticals&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "&gt;&lt;td style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 5px; padding-right: 10px; padding-bottom: 5px; padding-left: 10px; border-top-width: 2px; border-right-width: 2px; border-bottom-width: 2px; border-left-width: 2px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: rgb(255, 255, 255); border-right-color: rgb(255, 255, 255); border-bottom-color: rgb(255, 255, 255); border-left-color: rgb(255, 255, 255); border-collapse: collapse; font-size: 11px; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: rgb(255, 255, 255); background-position: initial initial; background-repeat: initial initial; "&gt;&lt;a href="http://www.softwareadvice.com/articles/crm/microsoft-dynamics-crm-industry-solutions-our-20-favorites-1082010/#Automotive" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; color: rgb(98, 100, 99); text-decoration: none; outline-style: none; outline-width: initial; outline-color: initial; "&gt;Automotive&lt;/a&gt;&lt;/td&gt;&lt;td style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 5px; padding-right: 10px; padding-bottom: 5px; padding-left: 10px; border-top-width: 2px; border-right-width: 2px; border-bottom-width: 2px; border-left-width: 2px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: rgb(255, 255, 255); border-right-color: rgb(255, 255, 255); border-bottom-color: rgb(255, 255, 255); border-left-color: rgb(255, 255, 255); border-collapse: collapse; font-size: 11px; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: rgb(255, 255, 255); background-position: initial initial; background-repeat: initial initial; "&gt;&lt;a href="http://www.softwareadvice.com/articles/crm/microsoft-dynamics-crm-industry-solutions-our-20-favorites-1082010/#Hospitality/Travel" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; color: rgb(98, 100, 99); text-decoration: none; outline-style: none; outline-width: initial; outline-color: initial; "&gt;Hospitality/Travel&lt;/a&gt;&lt;/td&gt;&lt;td style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 5px; padding-right: 10px; padding-bottom: 5px; padding-left: 10px; border-top-width: 2px; border-right-width: 2px; border-bottom-width: 2px; border-left-width: 2px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: rgb(255, 255, 255); border-right-color: rgb(255, 255, 255); border-bottom-color: rgb(255, 255, 255); border-left-color: rgb(255, 255, 255); border-collapse: collapse; font-size: 11px; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: rgb(255, 255, 255); background-position: initial initial; background-repeat: initial initial; "&gt;&lt;a href="http://www.softwareadvice.com/articles/crm/microsoft-dynamics-crm-industry-solutions-our-20-favorites-1082010/#Public Sector" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; color: rgb(98, 100, 99); text-decoration: none; outline-style: none; outline-width: initial; outline-color: initial; "&gt;Public Sector&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "&gt;&lt;td style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 5px; padding-right: 10px; padding-bottom: 5px; padding-left: 10px; border-top-width: 2px; border-right-width: 2px; border-bottom-width: 2px; border-left-width: 2px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: rgb(255, 255, 255); border-right-color: rgb(255, 255, 255); border-bottom-color: rgb(255, 255, 255); border-left-color: rgb(255, 255, 255); border-collapse: collapse; font-size: 11px; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: rgb(255, 255, 255); background-position: initial initial; background-repeat: initial initial; "&gt;&lt;a href="http://www.softwareadvice.com/articles/crm/microsoft-dynamics-crm-industry-solutions-our-20-favorites-1082010/#Construction" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; color: rgb(98, 100, 99); text-decoration: none; outline-style: none; outline-width: initial; outline-color: initial; "&gt;Construction&lt;/a&gt;&lt;/td&gt;&lt;td style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 5px; padding-right: 10px; padding-bottom: 5px; padding-left: 10px; border-top-width: 2px; border-right-width: 2px; border-bottom-width: 2px; border-left-width: 2px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: rgb(255, 255, 255); border-right-color: rgb(255, 255, 255); border-bottom-color: rgb(255, 255, 255); border-left-color: rgb(255, 255, 255); border-collapse: collapse; font-size: 11px; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: rgb(255, 255, 255); background-position: initial initial; background-repeat: initial initial; "&gt;&lt;a href="http://www.softwareadvice.com/articles/crm/microsoft-dynamics-crm-industry-solutions-our-20-favorites-1082010/#Insurance" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; color: rgb(98, 100, 99); text-decoration: none; outline-style: none; outline-width: initial; outline-color: initial; "&gt;Insurance&lt;/a&gt;&lt;/td&gt;&lt;td style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 5px; padding-right: 10px; padding-bottom: 5px; padding-left: 10px; border-top-width: 2px; border-right-width: 2px; border-bottom-width: 2px; border-left-width: 2px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: rgb(255, 255, 255); border-right-color: rgb(255, 255, 255); border-bottom-color: rgb(255, 255, 255); border-left-color: rgb(255, 255, 255); border-collapse: collapse; font-size: 11px; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: rgb(255, 255, 255); background-position: initial initial; background-repeat: initial initial; "&gt;&lt;a href="http://www.softwareadvice.com/articles/crm/microsoft-dynamics-crm-industry-solutions-our-20-favorites-1082010/#Real Estate" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; color: rgb(98, 100, 99); text-decoration: none; outline-style: none; outline-width: initial; outline-color: initial; "&gt;Real Estate&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "&gt;&lt;td style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 5px; padding-right: 10px; padding-bottom: 5px; padding-left: 10px; border-top-width: 2px; border-right-width: 2px; border-bottom-width: 2px; border-left-width: 2px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: rgb(255, 255, 255); border-right-color: rgb(255, 255, 255); border-bottom-color: rgb(255, 255, 255); border-left-color: rgb(255, 255, 255); border-collapse: collapse; font-size: 11px; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: rgb(255, 255, 255); background-position: initial initial; background-repeat: initial initial; "&gt;&lt;a href="http://www.softwareadvice.com/articles/crm/microsoft-dynamics-crm-industry-solutions-our-20-favorites-1082010/#Distribution" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; color: rgb(98, 100, 99); text-decoration: none; outline-style: none; outline-width: initial; outline-color: initial; "&gt;Distribution&lt;/a&gt;&lt;/td&gt;&lt;td style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 5px; padding-right: 10px; padding-bottom: 5px; padding-left: 10px; border-top-width: 2px; border-right-width: 2px; border-bottom-width: 2px; border-left-width: 2px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: rgb(255, 255, 255); border-right-color: rgb(255, 255, 255); border-bottom-color: rgb(255, 255, 255); border-left-color: rgb(255, 255, 255); border-collapse: collapse; font-size: 11px; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: rgb(255, 255, 255); background-position: initial initial; background-repeat: initial initial; "&gt;&lt;a href="http://www.softwareadvice.com/articles/crm/microsoft-dynamics-crm-industry-solutions-our-20-favorites-1082010/#Legal" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; color: rgb(98, 100, 99); text-decoration: none; outline-style: none; outline-width: initial; outline-color: initial; "&gt;Legal&lt;/a&gt;&lt;/td&gt;&lt;td style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 5px; padding-right: 10px; padding-bottom: 5px; padding-left: 10px; border-top-width: 2px; border-right-width: 2px; border-bottom-width: 2px; border-left-width: 2px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: rgb(255, 255, 255); border-right-color: rgb(255, 255, 255); border-bottom-color: rgb(255, 255, 255); border-left-color: rgb(255, 255, 255); border-collapse: collapse; font-size: 11px; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: rgb(255, 255, 255); background-position: initial initial; background-repeat: initial initial; "&gt;&lt;a href="http://www.softwareadvice.com/articles/crm/microsoft-dynamics-crm-industry-solutions-our-20-favorites-1082010/#Retail" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; color: rgb(98, 100, 99); text-decoration: none; outline-style: none; outline-width: initial; outline-color: initial; "&gt;Retail&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/center&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "&gt;Read more: &lt;a href="http://www.softwareadvice.com/articles/crm/microsoft-dynamics-crm-industry-solutions-our-20-favorites-1082010/#ixzz0xYTF2cHC" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; color: rgb(0, 51, 153); text-decoration: none; outline-style: none; outline-width: initial; outline-color: initial; "&gt;http://www.softwareadvice.com/articles/crm/microsoft-dynamics-crm-industry-solutions-our-20-favorites-1082010/#ixzz0xYTF2cHC&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7208889-5121876814199410409?l=jianwang.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jianwang.blogspot.com/feeds/5121876814199410409/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7208889&amp;postID=5121876814199410409' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7208889/posts/default/5121876814199410409'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7208889/posts/default/5121876814199410409'/><link rel='alternate' type='text/html' href='http://jianwang.blogspot.com/2010/08/software-advice-15-favourites-microsoft.html' title='Software Advice: 15 Favourites Microsoft Dynamics CRM Industry Solutions'/><author><name>Jim Wang</name><uri>http://www.blogger.com/profile/15963866631960791206</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='29' src='http://4.bp.blogspot.com/_-lOIedxo3AA/SaQ-RpTrHZI/AAAAAAAAANI/pQoZ77uYOe0/S220/Jim%27.JPG'/></author><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7208889.post-1727537495782111730</id><published>2010-07-17T10:01:00.003+01:00</published><updated>2010-07-17T10:08:48.257+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='CRM 2011'/><title type='text'>Register to receive a notification of the Microsoft Dynamics CRM 2011 Public Beta</title><content type='html'>&lt;span class="Apple-style-span" style="font-family: verdana; font-size: 12px; color: rgb(51, 51, 51); line-height: 16px; "&gt;&lt;div&gt;&lt;i&gt;&lt;b&gt;Register to receive a notification of the Microsoft Dynamics CRM 2011 Public Bet&lt;/b&gt;&lt;/i&gt;&lt;b&gt;&lt;i&gt;a&lt;/i&gt;&lt;/b&gt;&lt;/div&gt;&lt;div&gt;From Microsoft Website: "As announced at the Microsoft Worldwide Partner Conference on July 12, 2010, Microsoft Dynamics CRM 2011 - formerly codenamed "CRM5" - will be publicly available as a beta release in September 2010 for both online and on-premises deployments.&lt;/div&gt;&lt;/span&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: verdana; font-size: 12px; color: rgb(51, 51, 51); line-height: 16px; "&gt;&lt;p class="sub-header1" style="font-family: 'Segoe UI', sans-serif; font-size: 18px; color: rgb(2, 73, 129); font-weight: normal; "&gt;The Power of Productivity&lt;/p&gt;&lt;p&gt;Microsoft Dynamics CRM 2011 delivers "&lt;strong&gt;The Power of Productivity&lt;/strong&gt;" through &lt;strong&gt;familiar&lt;/strong&gt;, &lt;strong&gt;intelligent&lt;/strong&gt; and &lt;strong&gt;connected&lt;/strong&gt;experiences for people inside and outside an organization.&lt;/p&gt;&lt;p&gt;......"&lt;/p&gt;&lt;p&gt;&lt;a href="http://crm.dynamics.com/crm2011beta" target="_blank"&gt;http://crm.dynamics.com/crm2011beta&lt;/a&gt;&lt;/p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7208889-1727537495782111730?l=jianwang.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jianwang.blogspot.com/feeds/1727537495782111730/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7208889&amp;postID=1727537495782111730' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7208889/posts/default/1727537495782111730'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7208889/posts/default/1727537495782111730'/><link rel='alternate' type='text/html' href='http://jianwang.blogspot.com/2010/07/register-to-receive-notification-of.html' title='Register to receive a notification of the Microsoft Dynamics CRM 2011 Public Beta'/><author><name>Jim Wang</name><uri>http://www.blogger.com/profile/15963866631960791206</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='29' src='http://4.bp.blogspot.com/_-lOIedxo3AA/SaQ-RpTrHZI/AAAAAAAAANI/pQoZ77uYOe0/S220/Jim%27.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7208889.post-2049347646211764321</id><published>2010-03-08T10:30:00.004Z</published><updated>2010-03-08T10:55:25.123Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='Tools'/><title type='text'>Download: CRM 4.0 Diagnostics Tool - alternative link</title><content type='html'>Just in case you find the original link for the CRM 4.0 Diagnostics Tool has been removed, you can download it from here: &lt;a href="http://code.msdn.microsoft.com/Project/Download/FileDownload.aspx?ProjectName=crm&amp;amp;DownloadId=9319"&gt;CrmDiagTool4.zip&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Also use the Stunnware &lt;a href="http://code.msdn.microsoft.com/Project/Download/FileDownload.aspx?ProjectName=crm&amp;amp;DownloadId=9318"&gt;CrmTraceLogViewer.zip&lt;/a&gt; to analyse a trace file.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://support.microsoft.com/default.aspx/kb/907490/en-us"&gt;KB907490: How to enable tracing in Microsoft Dynamics CRM&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7208889-2049347646211764321?l=jianwang.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jianwang.blogspot.com/feeds/2049347646211764321/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7208889&amp;postID=2049347646211764321' title='10 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7208889/posts/default/2049347646211764321'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7208889/posts/default/2049347646211764321'/><link rel='alternate' type='text/html' href='http://jianwang.blogspot.com/2010/03/download-crm-40-diagnostics-tool.html' title='Download: CRM 4.0 Diagnostics Tool - alternative link'/><author><name>Jim Wang</name><uri>http://www.blogger.com/profile/15963866631960791206</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='29' src='http://4.bp.blogspot.com/_-lOIedxo3AA/SaQ-RpTrHZI/AAAAAAAAANI/pQoZ77uYOe0/S220/Jim%27.JPG'/></author><thr:total>10</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7208889.post-3585678649614690374</id><published>2010-02-13T12:03:00.003Z</published><updated>2010-02-14T11:45:56.794Z</updated><title type='text'>Happy Chinese New Year! 2010 - The Year of The Tiger</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_-lOIedxo3AA/S3fhj-MgK8I/AAAAAAAAARc/JgJLxMByHRA/s1600-h/tiger.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 320px;" src="http://1.bp.blogspot.com/_-lOIedxo3AA/S3fhj-MgK8I/AAAAAAAAARc/JgJLxMByHRA/s400/tiger.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5438063083180272578" /&gt;&lt;/a&gt;p.s.: Ancient Chinese believe that the markings on the forehead of tigers resemble the Chinese character for "Wang", or King, which is my family name. ;-)&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7208889-3585678649614690374?l=jianwang.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jianwang.blogspot.com/feeds/3585678649614690374/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7208889&amp;postID=3585678649614690374' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7208889/posts/default/3585678649614690374'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7208889/posts/default/3585678649614690374'/><link rel='alternate' type='text/html' href='http://jianwang.blogspot.com/2010/02/happy-chinese-new-year-2010-year-of.html' title='Happy Chinese New Year! 2010 - The Year of The Tiger'/><author><name>Jim Wang</name><uri>http://www.blogger.com/profile/15963866631960791206</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='29' src='http://4.bp.blogspot.com/_-lOIedxo3AA/SaQ-RpTrHZI/AAAAAAAAANI/pQoZ77uYOe0/S220/Jim%27.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_-lOIedxo3AA/S3fhj-MgK8I/AAAAAAAAARc/JgJLxMByHRA/s72-c/tiger.jpg' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7208889.post-7543627072168394562</id><published>2010-01-08T17:52:00.010Z</published><updated>2010-01-08T18:26:10.453Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='SharePoint 2010'/><title type='text'>SharePoint 2010 Beta Learning Path</title><content type='html'>&lt;a href="http://4.bp.blogspot.com/_-lOIedxo3AA/S0d1ZmBMA7I/AAAAAAAAAQ8/RBR5jk5cP1c/s1600-h/SharePoint2010.jpg"&gt;&lt;img style="TEXT-ALIGN: center; MARGIN: 0px auto 10px; WIDTH: 400px; DISPLAY: block; HEIGHT: 281px; CURSOR: hand" id="BLOGGER_PHOTO_ID_5424433358753760178" border="0" alt="" src="http://4.bp.blogspot.com/_-lOIedxo3AA/S0d1ZmBMA7I/AAAAAAAAAQ8/RBR5jk5cP1c/s400/SharePoint2010.jpg" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;p style="LINE-HEIGHT: normal; MARGIN-BOTTOM: 0pt" class="MsoNormal"&gt;&lt;span style="mso-ascii-font-family: Calibri; mso-fareast-font-family: 'Times New Roman'; mso-hansi-font-family: Calibrifont-family:';" lang="EN-GB"&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="LINE-HEIGHT: normal; MARGIN-BOTTOM: 0pt" class="MsoNormal"&gt;&lt;span style="mso-ascii-font-family: Calibri; mso-fareast-font-family: 'Times New Roman'; mso-hansi-font-family: Calibrifont-family:';" lang="EN-GB"&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="LINE-HEIGHT: normal; MARGIN-BOTTOM: 0pt" class="MsoNormal"&gt;&lt;span style="mso-ascii-font-family: Calibri; mso-fareast-font-family: 'Times New Roman'; mso-hansi-font-family: Calibrifont-family:';" lang="EN-GB"&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="LINE-HEIGHT: normal; MARGIN-BOTTOM: 0pt" class="MsoNormal"&gt;&lt;span style="mso-ascii-font-family: Calibri; mso-fareast-font-family: 'Times New Roman'; mso-hansi-font-family: Calibrifont-family:';" lang="EN-GB"&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;span style="mso-ascii-font-family: Calibri; mso-fareast-font-family: 'Times New Roman'; mso-hansi-font-family: Calibrifont-family:';" lang="EN-GB"&gt;&lt;strong&gt;&lt;p style="margin-bottom: 0pt; " class="MsoNormal"&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;My first project in the new year is about SharePoint 2010 development - it's new to everyone. Although having experience on SharePoint 2003/2007, the best plan is keep my knowledge up to date, which is the I.T. spirit I like! &lt;/span&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0pt; " class="MsoNormal"&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;First thing first, get myself a 64bit virtualisable laptop computer with 4GB RAM to set up a development environment: &lt;/span&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0pt; " class="MsoNormal"&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;1. Install Windows Server 2008 R2 Enterprise 64bit version with Hyper-V;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="margin-bottom: 0pt; display: inline !important; "&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;2. Install Hyper-V and Web Server role services;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="margin-bottom: 0pt; display: inline !important; "&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;3. Install SharePoint Foundation 2010 on the Stand Along Installation;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="margin-bottom: 0pt; display: inline !important; "&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;4. Install Office 2010 and SharePoint Designer 2010;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="margin-bottom: 0pt; display: inline !important; "&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;5. Install Visual Studio 2010. &lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0pt; " class="MsoNormal"&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="margin-bottom: 0pt; display: inline !important; "&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="margin-bottom: 0pt; display: inline !important; "&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;i&gt;For the performance issue, I choose to install the SharePoint Server 2010 on a Hyper-V image&lt;/i&gt;:&lt;br /&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;strong&gt;&lt;p class="MsoNormal" style="margin-bottom: 0pt; display: inline !important; "&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;6. Create a new image on Hyper-V, install Windows Server 2008 R2 on that image with SQL Server 2008 R2 and SharePoint Server 2010.&lt;/span&gt;&lt;/p&gt;&lt;/strong&gt;&lt;/span&gt;&lt;p&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0pt; " class="MsoNormal"&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="margin-bottom: 0pt; display: inline !important; "&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;So now I have both SharePoint 2010 Foundation and Serve development environment. Next, find some free online training materials. &lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0pt; " class="MsoNormal"&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="margin-bottom: 0pt; display: inline !important; "&gt;&lt;i&gt;What I have looked at are (at January 2010)&lt;/i&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;:&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;/strong&gt;&lt;/span&gt;&lt;p&gt;&lt;/p&gt;&lt;p style="LINE-HEIGHT: normal; MARGIN-BOTTOM: 0pt" class="MsoNormal"&gt;&lt;span style="mso-ascii-font-family: Calibri; mso-fareast-font-family: 'Times New Roman'; mso-hansi-font-family: Calibrifont-family:';" lang="EN-GB"&gt;&lt;strong&gt;MSDEV:&lt;/strong&gt;&lt;span style="mso-spacerun: yes"&gt; &lt;/span&gt;&lt;/span&gt;&lt;span lang="EN-GB"   style="font-family:';font-size:12;"&gt;&lt;a href="http://www.msdev.com/Directory/SeriesDescription.aspx?CourseId=132"&gt;&lt;span style="font-family:';font-size:11;color:blue;"&gt;A First Look at Microsoft SharePoint Server 2010&lt;/span&gt;&lt;/a&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="LINE-HEIGHT: normal; MARGIN-BOTTOM: 0pt" class="MsoNormal"&gt;&lt;span style="mso-ascii-font-family: Calibri; mso-fareast-font-family: 'Times New Roman'; mso-hansi-font-family: Calibrifont-family:';" lang="EN-GB"&gt;Microsoft SharePoint 2010: Overview for TDM's&lt;br /&gt;&lt;/span&gt;&lt;span style="mso-ascii-font-family: Calibri; mso-fareast-font-family: 'Times New Roman'; mso-hansi-font-family: Calibrifont-family:';" lang="EN-GB"&gt;Microsoft SharePoint 2010: Overview for Developers&lt;br /&gt;&lt;/span&gt;&lt;span style="mso-ascii-font-family: Calibri; mso-fareast-font-family: 'Times New Roman'; mso-hansi-font-family: Calibrifont-family:';" lang="EN-GB"&gt;Microsoft SharePoint 2010: Overview for Implementers&lt;br /&gt;&lt;/span&gt;&lt;span style="mso-ascii-font-family: Calibri; mso-fareast-font-family: 'Times New Roman'; mso-hansi-font-family: Calibrifont-family:';" lang="EN-GB"&gt;Microsoft SharePoint 2010: Developing with Visual Studio 2010&lt;br /&gt;&lt;/span&gt;&lt;span style="mso-ascii-font-family: Calibri; mso-fareast-font-family: 'Times New Roman'; mso-hansi-font-family: Calibrifont-family:';" lang="EN-GB"&gt;Microsoft SharePoint 2010: Developing with SharePoint Designer&lt;/span&gt;&lt;/p&gt;&lt;p style="LINE-HEIGHT: normal; MARGIN-BOTTOM: 0pt" class="MsoNormal"&gt;&lt;span style="mso-ascii-font-family: Calibri; mso-fareast-font-family: 'Times New Roman'; mso-hansi-font-family: Calibrifont-family:';" lang="EN-GB"&gt;&lt;span style="mso-ascii-font-family: Calibri; mso-fareast-font-family: 'Times New Roman'; mso-hansi-font-family: Calibrifont-family:';" lang="EN-GB"&gt;&lt;strong&gt;&lt;br /&gt;MSDN:&lt;/strong&gt;&lt;span style="mso-spacerun: yes"&gt; &lt;/span&gt;&lt;/span&gt;&lt;span lang="EN-GB"   style="font-family:';font-size:12;"&gt;&lt;a href="http://msdn.microsoft.com/en-gb/sharepoint/ee513147.aspx"&gt;&lt;span style="font-family:';font-size:11;color:blue;"&gt;Get Started Developing on SharePoint 2010&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="LINE-HEIGHT: normal; MARGIN-BOTTOM: 0pt" class="MsoNormal"&gt;&lt;span style="mso-ascii-font-family: Calibri; mso-fareast-font-family: 'Times New Roman'; mso-hansi-font-family: Calibrifont-family:';" lang="EN-GB"&gt;Module 1: Getting Started: Building Web Parts in SharePoint 2010&lt;br /&gt;&lt;/span&gt;&lt;span style="mso-ascii-font-family: Calibri; mso-fareast-font-family: 'Times New Roman'; mso-hansi-font-family: Calibrifont-family:';" lang="EN-GB"&gt;Module 2: What Developers Need to Know About SharePoint 2010&lt;br /&gt;&lt;/span&gt;&lt;span style="mso-ascii-font-family: Calibri; mso-fareast-font-family: 'Times New Roman'; mso-hansi-font-family: Calibrifont-family:';" lang="EN-GB"&gt;Module 3: Building Blocks for Web Part Development in SharePoint 2010&lt;br /&gt;&lt;/span&gt;&lt;span style="mso-ascii-font-family: Calibri; mso-fareast-font-family: 'Times New Roman'; mso-hansi-font-family: Calibrifont-family:';" lang="EN-GB"&gt;Module 4: Accessing SharePoint 2010 Data and Objects with Server-Side APIs&lt;br /&gt;&lt;/span&gt;&lt;span style="mso-ascii-font-family: Calibri; mso-fareast-font-family: 'Times New Roman'; mso-hansi-font-family: Calibrifont-family:';" lang="EN-GB"&gt;Module 5: Accessing SharePoint 2010 Data and Objects with Client-Side APIs&lt;br /&gt;&lt;/span&gt;&lt;span style="mso-ascii-font-family: Calibri; mso-fareast-font-family: 'Times New Roman'; mso-hansi-font-family: Calibrifont-family:';" lang="EN-GB"&gt;Module 6: Accessing External Data with Business Connectivity Services in SharePoint 2010&lt;br /&gt;&lt;/span&gt;&lt;span style="mso-ascii-font-family: Calibri; mso-fareast-font-family: 'Times New Roman'; mso-hansi-font-family: Calibrifont-family:';" lang="EN-GB"&gt;Module 7: Developing Business Processes with SharePoint 2010 Workflows&lt;br /&gt;&lt;/span&gt;&lt;span style="mso-ascii-font-family: Calibri; mso-fareast-font-family: 'Times New Roman'; mso-hansi-font-family: Calibrifont-family:';" lang="EN-GB"&gt;Module 8: Creating Silverlight User Interfaces for SharePoint 2010 Solutions&lt;br /&gt;&lt;/span&gt;&lt;span style="mso-ascii-font-family: Calibri; mso-fareast-font-family: 'Times New Roman'; mso-hansi-font-family: Calibrifont-family:';" lang="EN-GB"&gt;Module 9: Sandboxed Solutions for Web Parts in SharePoint 2010&lt;br /&gt;&lt;/span&gt;&lt;span style="mso-ascii-font-family: Calibri; mso-fareast-font-family: 'Times New Roman'; mso-hansi-font-family: Calibrifont-family:';" lang="EN-GB"&gt;Module 10: Creating Dialog Boxes and Ribbon Controls for SharePoint 2010&lt;br /&gt;&lt;/span&gt;&lt;span style="mso-ascii-font-family: Calibri; mso-fareast-font-family: 'Times New Roman'; mso-hansi-font-family: Calibrifont-family:';" lang="EN-GB"&gt;&lt;br /&gt;&lt;strong&gt;CHANNEL9:&lt;/strong&gt;&lt;span style="mso-spacerun: yes"&gt; &lt;/span&gt;&lt;/span&gt;&lt;span lang="EN-GB"   style="font-family:';font-size:12;"&gt;&lt;a href="http://channel9.msdn.com/learn/courses/SharePoint2010Developer/"&gt;&lt;span style="font-family:';font-size:11;color:blue;"&gt;SharePoint 2010 Developer&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;span style="mso-ascii-font-family: Calibri; mso-fareast-font-family: 'Times New Roman'; mso-hansi-font-family: Calibrifont-family:';" lang="EN-GB"&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="LINE-HEIGHT: normal; MARGIN-BOTTOM: 0pt" class="MsoNormal"&gt;&lt;span style="mso-ascii-font-family: Calibri; mso-fareast-font-family: 'Times New Roman'; mso-hansi-font-family: Calibrifont-family:';" lang="EN-GB"&gt;SharePoint 2010 Developer Roadmap&lt;br /&gt;&lt;/span&gt;&lt;span style="mso-ascii-font-family: Calibri; mso-fareast-font-family: 'Times New Roman'; mso-hansi-font-family: Calibrifont-family:';" lang="EN-GB"&gt;Visual Studio 2010 Tools for SharePoint 2010&lt;br /&gt;&lt;/span&gt;&lt;span style="mso-ascii-font-family: Calibri; mso-fareast-font-family: 'Times New Roman'; mso-hansi-font-family: Calibrifont-family:';" lang="EN-GB"&gt;UI Enhancements&lt;br /&gt;&lt;/span&gt;&lt;span style="mso-ascii-font-family: Calibri; mso-fareast-font-family: 'Times New Roman'; mso-hansi-font-family: Calibrifont-family:';" lang="EN-GB"&gt;Lists and Schemas&lt;br /&gt;&lt;/span&gt;&lt;span style="mso-ascii-font-family: Calibri; mso-fareast-font-family: 'Times New Roman'; mso-hansi-font-family: Calibrifont-family:';" lang="EN-GB"&gt;LINQ to SharePoint&lt;br /&gt;&lt;/span&gt;&lt;span style="mso-ascii-font-family: Calibri; mso-fareast-font-family: 'Times New Roman'; mso-hansi-font-family: Calibrifont-family:';" lang="EN-GB"&gt;Client Object Model&lt;br /&gt;&lt;/span&gt;&lt;span style="mso-ascii-font-family: Calibri; mso-fareast-font-family: 'Times New Roman'; mso-hansi-font-family: Calibrifont-family:';" lang="EN-GB"&gt;Workflow&lt;br /&gt;&lt;/span&gt;&lt;span style="mso-ascii-font-family: Calibri; mso-fareast-font-family: 'Times New Roman'; mso-hansi-font-family: Calibrifont-family:';" lang="EN-GB"&gt;Services Architecture&lt;br /&gt;&lt;/span&gt;&lt;span style="mso-ascii-font-family: Calibri; mso-fareast-font-family: 'Times New Roman'; mso-hansi-font-family: Calibrifont-family:';" lang="EN-GB"&gt;Accessing External Data&lt;br /&gt;&lt;/span&gt;&lt;span style="mso-ascii-font-family: Calibri; mso-fareast-font-family: 'Times New Roman'; mso-hansi-font-family: Calibrifont-family:';" lang="EN-GB"&gt;Enterprise Content Management&lt;br /&gt;&lt;/span&gt;&lt;span style="mso-ascii-font-family: Calibri; mso-fareast-font-family: 'Times New Roman'; mso-hansi-font-family: Calibrifont-family:';" lang="EN-GB"&gt;Extending Search&lt;br /&gt;&lt;/span&gt;&lt;span style="mso-ascii-font-family: Calibri; mso-fareast-font-family: 'Times New Roman'; mso-hansi-font-family: Calibrifont-family:';" lang="EN-GB"&gt;PerformancePoint Services&lt;br /&gt;&lt;/span&gt;&lt;span style="mso-ascii-font-family: Calibri; mso-fareast-font-family: 'Times New Roman'; mso-hansi-font-family: Calibrifont-family:';" lang="EN-GB"&gt;Sandboxed Solutions&lt;br /&gt;&lt;/span&gt;&lt;span style="mso-ascii-font-family: Calibri; mso-fareast-font-family: 'Times New Roman'; mso-hansi-font-family: Calibrifont-family:';" lang="EN-GB"&gt;SharePoint 2010 Security&lt;/span&gt;&lt;/p&gt;&lt;p style="LINE-HEIGHT: normal; MARGIN-BOTTOM: 0pt" class="MsoNormal"&gt;&lt;span style="mso-ascii-font-family: Calibri; mso-fareast-font-family: 'Times New Roman'; mso-hansi-font-family: Calibrifont-family:';" lang="EN-GB"&gt;&lt;strong&gt;&lt;br /&gt;Microsoft download:&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="LINE-HEIGHT: normal; MARGIN-BOTTOM: 0pt" class="MsoNormal"&gt;&lt;span style="mso-ascii-font-family: Calibri; mso-fareast-font-family: 'Times New Roman'; mso-hansi-font-family: Calibrifont-family:';" lang="EN-GB"&gt;&lt;a href="http://www.microsoft.com/downloads/details.aspx?displaylang=en&amp;amp;FamilyID=bfd1603b-7550-4b8e-be85-4215a5069b90"&gt;&lt;span style="color:blue;"&gt;SharePoint 2010 Beta Developer Training Kit&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="mso-ascii-font-family: Calibri; mso-fareast-font-family: 'Times New Roman'; mso-hansi-font-family: Calibrifont-family:';" lang="EN-GB"&gt;&lt;a href="http://www.microsoft.com/downloads/details.aspx?familyid=F0C9DAF3-4C54-45ED-9BDE-7B4D83A8F26F&amp;amp;displaylang=en"&gt;&lt;span style="color:blue;"&gt;SharePoint 2010 Reference: Software Development Kit&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="mso-ascii-font-family: Calibri; mso-fareast-font-family: 'Times New Roman'; mso-hansi-font-family: Calibrifont-family:';" lang="EN-GB"&gt;&lt;a href="http://www.microsoft.com/downloads/details.aspx?familyid=CFFB14E8-88A9-43BD-87AA-4792AB60D320&amp;amp;displaylang=en"&gt;&lt;span style="color:blue;"&gt;SharePoint 2010: Professional Developer Evaluation Guide and Walkthroughs &lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="mso-ascii-font-family: Calibri; mso-fareast-font-family: 'Times New Roman'; mso-hansi-font-family: Calibrifont-family:';" lang="EN-GB"&gt;&lt;a href="http://www.microsoft.com/downloads/details.aspx?familyid=C010FC68-B47F-4DB6-B8A8-AD4BA33A35C5&amp;amp;displaylang=en"&gt;&lt;span style="color:blue;"&gt;SharePoint 2010: Getting Started with Development on SharePoint 2010 Hands-on Labs in C# and Visual Basic&lt;/span&gt;&lt;/a&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="LINE-HEIGHT: normal; TEXT-INDENT: -18pt; MARGIN: 0cm 0cm 0pt; VERTICAL-ALIGN: middle; mso-list: l6 level1 lfo11; tab-stops: list 9.0pt" class="MsoNormal"&gt;&lt;span style="mso-ascii-font-family: Calibri; mso-fareast-font-family: 'Times New Roman'; mso-hansi-font-family: Calibrifont-family:';" lang="EN-GB"&gt;&lt;br /&gt;&lt;strong&gt;Online resources:&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="LINE-HEIGHT: normal; MARGIN-BOTTOM: 0pt" class="MsoNormal"&gt;&lt;span style="mso-ascii-font-family: Calibri; mso-fareast-font-family: 'Times New Roman'; mso-hansi-font-family: Calibrifont-family:';" lang="EN-GB"&gt;&lt;a href="http://social.msdn.microsoft.com/Forums/en-US/category/sharepoint2010"&gt;&lt;span style="color:blue;"&gt;SharePoint 2010 Forum&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="mso-ascii-font-family: Calibri; mso-fareast-font-family: 'Times New Roman'; mso-hansi-font-family: Calibrifont-family:';" lang="EN-GB"&gt;&lt;a href="http://msdn.microsoft.com/en-us/sharepoint/default.aspx"&gt;&lt;span style="color:blue;"&gt;SharePoint Developer Center&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="mso-ascii-font-family: Calibri; mso-fareast-font-family: 'Times New Roman'; mso-hansi-font-family: Calibrifont-family:';" lang="EN-GB"&gt;&lt;a href="http://blogs.msdn.com/sharepoint/"&gt;&lt;span style="color:blue;"&gt;Microsoft SharePoint Team Blog&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="mso-ascii-font-family: Calibri; mso-fareast-font-family: 'Times New Roman'; mso-hansi-font-family: Calibrifont-family:';" lang="EN-GB"&gt;&lt;a href="http://blogs.msdn.com/sharepointdeveloperdocs/default.aspx"&gt;&lt;span style="color:blue;"&gt;Microsoft SharePoint Developer Documentation Team Blog&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style="LINE-HEIGHT: normal; MARGIN-BOTTOM: 0pt" class="MsoNormal"&gt;&lt;span style="mso-ascii-font-family: Calibri; mso-fareast-font-family: 'Times New Roman'; mso-hansi-font-family: Calibrifont-family:';" lang="EN-GB"&gt;&lt;br /&gt;I think it's enough for me to start working on SharePoint 2010. &lt;/span&gt;&lt;/p&gt;&lt;p style="LINE-HEIGHT: normal; MARGIN-BOTTOM: 0pt" class="MsoNormal"&gt;&lt;span style="mso-ascii-font-family: Calibri; mso-fareast-font-family: 'Times New Roman'; mso-hansi-font-family: Calibrifont-family:';" lang="EN-GB"&gt;Happy New Year!&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p class="MsoNormal"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7208889-7543627072168394562?l=jianwang.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jianwang.blogspot.com/feeds/7543627072168394562/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7208889&amp;postID=7543627072168394562' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7208889/posts/default/7543627072168394562'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7208889/posts/default/7543627072168394562'/><link rel='alternate' type='text/html' href='http://jianwang.blogspot.com/2010/01/sharepoint-2010-beta-learning-path.html' title='SharePoint 2010 Beta Learning Path'/><author><name>Jim Wang</name><uri>http://www.blogger.com/profile/15963866631960791206</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='29' src='http://4.bp.blogspot.com/_-lOIedxo3AA/SaQ-RpTrHZI/AAAAAAAAANI/pQoZ77uYOe0/S220/Jim%27.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_-lOIedxo3AA/S0d1ZmBMA7I/AAAAAAAAAQ8/RBR5jk5cP1c/s72-c/SharePoint2010.jpg' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7208889.post-5607909418522554611</id><published>2009-12-10T12:45:00.001Z</published><updated>2009-12-10T16:06:44.447Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='CRM Integration'/><title type='text'>Microsoft Dynamics CRM 4 Integration Unleashed</title><content type='html'>Last month, Pearson(Sams Publishing) sent me a book to review. It's the &lt;a href="http://www.amazon.com/Microsoft-Dynamics-CRM-Integration-Unleashed/dp/0672330547/ref=sr_1_1/181-2398669-9855546?ie=UTF8&amp;amp;s=books&amp;amp;qid=1260102748&amp;amp;sr=8-1"&gt;《Microsoft Dynamics CRM 4 Integration Unleashed》&lt;/a&gt;written by Marc  and Rajya.&lt;br /&gt;&lt;br /&gt;The book covers many areas that you can think of about the CRM 4 integration: Infrastructure Design; Extending CRM; Silverlight Integration; SharePoint Integration; BI; Digital Phone Integration; Master Data Management; Social Network Integration; Mapping Technologies; CRM 4.0 Accelerators; SCOM; VSTS; BizTalk Integration; Azure; Scribe Integration and more.&lt;br /&gt;&lt;br /&gt;I really like the fact that the book provides some real world examples and step by step through integrating Dynamics CRM with other products/technologies,  it's helpful for CRM architects and developers to get an overview or even in details about CRM Integration.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_-lOIedxo3AA/SyEcb7S9jgI/AAAAAAAAAQo/6gpxVoUguyg/s1600-h/CRM4Integration.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 307px; height: 400px;" src="http://4.bp.blogspot.com/_-lOIedxo3AA/SyEcb7S9jgI/AAAAAAAAAQo/6gpxVoUguyg/s400/CRM4Integration.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5413639493175315970" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7208889-5607909418522554611?l=jianwang.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jianwang.blogspot.com/feeds/5607909418522554611/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7208889&amp;postID=5607909418522554611' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7208889/posts/default/5607909418522554611'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7208889/posts/default/5607909418522554611'/><link rel='alternate' type='text/html' href='http://jianwang.blogspot.com/2009/12/microsoft-dynamics-crm-4-integration.html' title='Microsoft Dynamics CRM 4 Integration Unleashed'/><author><name>Jim Wang</name><uri>http://www.blogger.com/profile/15963866631960791206</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='29' src='http://4.bp.blogspot.com/_-lOIedxo3AA/SaQ-RpTrHZI/AAAAAAAAANI/pQoZ77uYOe0/S220/Jim%27.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_-lOIedxo3AA/SyEcb7S9jgI/AAAAAAAAAQo/6gpxVoUguyg/s72-c/CRM4Integration.jpg' height='72' width='72'/><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7208889.post-7506815399161033292</id><published>2009-11-28T21:27:00.004Z</published><updated>2009-11-28T21:48:51.902Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='SharePoint 2010'/><title type='text'>Install SharePoint 2010 on a VM environment</title><content type='html'>When SharePoint 2010 Beta released couple weeks ago, I tried to install it on a VM: What I got for this VM are: Windows Server 2008 R2, SQL 2008 R2(CTP), 1.5GB RAM, etc.&lt;br /&gt;&lt;br /&gt;I selected the "Standalone" install, the installation process took about 15 minutes. When it completed, I ran the Configuration Wizard, it failed on the step 5:&lt;br /&gt;&lt;span style="color:#ff0000;"&gt;&lt;em&gt;Failed to register SharePoint services.&lt;br /&gt;An exception of type System.ServiceProcess.TimeoutException was thrown. Additional exception information: Time out has expired and the operation has not been completed.&lt;br /&gt;System.ServiceProcess.TimeoutException: Time out has expired and the operation has not been completed.&lt;/em&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;I Googled it, it seems like the RAM is far not enough(minimum 4GB); I also found that modify registry key doesn't help in my case.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;The work around I found:&lt;/strong&gt; Re-Install SharePoint 2010 by using "Server Farm" &gt;&gt; "Complete" option, then both installation and configuration went successful! That's good enough for me to test things. ;-)&lt;br /&gt;&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/_-lOIedxo3AA/SxGYcPOOyMI/AAAAAAAAAQY/JV03GtxXsdI/s1600/sharepoint2010configerror.jpg"&gt;&lt;img style="TEXT-ALIGN: center; MARGIN: 0px auto 10px; WIDTH: 400px; DISPLAY: block; HEIGHT: 341px; CURSOR: hand" id="BLOGGER_PHOTO_ID_5409272238338656450" border="0" alt="" src="http://2.bp.blogspot.com/_-lOIedxo3AA/SxGYcPOOyMI/AAAAAAAAAQY/JV03GtxXsdI/s400/sharepoint2010configerror.jpg" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7208889-7506815399161033292?l=jianwang.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jianwang.blogspot.com/feeds/7506815399161033292/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7208889&amp;postID=7506815399161033292' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7208889/posts/default/7506815399161033292'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7208889/posts/default/7506815399161033292'/><link rel='alternate' type='text/html' href='http://jianwang.blogspot.com/2009/11/install-sharepoint-2010-on-vm.html' title='Install SharePoint 2010 on a VM environment'/><author><name>Jim Wang</name><uri>http://www.blogger.com/profile/15963866631960791206</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='29' src='http://4.bp.blogspot.com/_-lOIedxo3AA/SaQ-RpTrHZI/AAAAAAAAANI/pQoZ77uYOe0/S220/Jim%27.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_-lOIedxo3AA/SxGYcPOOyMI/AAAAAAAAAQY/JV03GtxXsdI/s72-c/sharepoint2010configerror.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7208889.post-8166513246756892689</id><published>2009-10-24T15:07:00.010+01:00</published><updated>2009-11-10T14:27:13.904Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='Lookup'/><category scheme='http://www.blogger.com/atom/ns#' term='CRM 4.0'/><title type='text'>Change the lookup view on Many-to-Many relationship</title><content type='html'>The N:N lookup view in CRM 4.0 is very basic: it only shows the primary field on the lookup entity. Say if you create a N:N relationship for Account and Contact, the lookup view looks like:&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_-lOIedxo3AA/SuMKW3hmwjI/AAAAAAAAAQI/xEnCkARmmJs/s1600-h/lookupmulti1.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 334px;" src="http://3.bp.blogspot.com/_-lOIedxo3AA/SuMKW3hmwjI/AAAAAAAAAQI/xEnCkARmmJs/s400/lookupmulti1.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5396168166498288178" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;It's not convenient if you want to see more details of the lookup records. So, how can we change it?&lt;br /&gt;How about if we put the standard view(Active Contacts View, Contact Lookup View, etc) on the left panel - Sounds great!&lt;br /&gt;&lt;br /&gt;The solution includes two parts:&lt;br /&gt;1. A customized lookupmulti.aspx in the ISV folder;&lt;br /&gt;- Used for generating the lookup view.&lt;br /&gt;2. Jscript code on the referencing entity(which is 'Account' in this case )&lt;br /&gt;- Used for passing parameters to the custom ASPX page;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_-lOIedxo3AA/SuML5d0Mz_I/AAAAAAAAAQQ/91M6g8QJqZU/s1600-h/lookupmulti2.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 320px;" src="http://3.bp.blogspot.com/_-lOIedxo3AA/SuML5d0Mz_I/AAAAAAAAAQQ/91M6g8QJqZU/s400/lookupmulti2.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5396169860404006898" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;First of all, create a new folder under the:  \CRMWeb\ISV\&lt;br /&gt;Save the below code as a ASPX file in that folder,  so you got, for instance: \CRMWeb\ISV\lookup\lookupmulti.aspx&lt;br /&gt;&lt;br /&gt;&lt;pre class="js" name="code"&gt;&lt;br /&gt;&amp;lt;!--&lt;br /&gt;-- Show entity's standard View in a N:N LookupMulti dialog window.&lt;br /&gt;-- Jim Wang @ October 2009&lt;br /&gt;-- http://jianwang.blogspot.com&lt;br /&gt;-- http://www.mscrm.cn&lt;br /&gt;--&amp;gt;&lt;br /&gt;&amp;lt;html&amp;gt;&amp;lt;head&amp;gt;&amp;lt;META HTTP-EQUIV="Content-Type" CONTENT="text/html; CHARSET=utf-8"&amp;gt;&lt;br /&gt;&amp;lt;title&amp;gt;Look Up Records&amp;lt;/title&amp;gt;&lt;br /&gt;&amp;lt;script type="text/javascript"&amp;gt;&lt;br /&gt; var viewDoc = this;&lt;br /&gt; var _mode = 4;&lt;br /&gt; var IS_PATHBASEDURLS = true;&lt;br /&gt; var ORG_UNIQUE_NAME = window.dialogArguments.split("/")[1];&lt;br /&gt; var iTypeCode = window.dialogArguments.substring(window.dialogArguments.indexOf("etc=") + 4, window.dialogArguments.indexOf("&amp;amp;viewid="));&lt;br /&gt;&amp;lt;/script&amp;gt;&lt;br /&gt;&amp;lt;script type="text/javascript" src="/_static/_common/scripts/encodedecode.js"&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;&amp;lt;script type="text/javascript" src="/_static/_controls/util/util.js"&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;&amp;lt;script type="text/javascript" src="/_static/_common/scripts/global.js"&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;&amp;lt;script type="text/javascript" src="/_static/_common/scripts/xmlutil.js"&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;&amp;lt;script type="text/javascript" src="/_static/_controls/remotecommands/remotecommand.js"&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;&amp;lt;script type="text/javascript" src="/_common/windowinformation/windowinformation.aspx"&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;&amp;lt;script type="text/javascript" src="/_static/_controls/lookup/lookupdialogs.js"&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;&amp;lt;script type="text/javascript" src="/_static/_forms/addrelated.js"&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;&amp;lt;script type="text/javascript" src="/_static/_common/scripts/details.js"&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;&amp;lt;script type="text/javascript" src="/_static/_common/scripts/select.js"&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;&amp;lt;script type="text/javascript" src="/_static/_common/scripts/presence.js"&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;&amp;lt;script type="text/javascript" src="/_static/_controls/number/number.js"&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;&amp;lt;script type="text/javascript" src="/_static/_controls/lookup/lookup.js"&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;&amp;lt;link rel="stylesheet" type="text/css" href="/_common/styles/global.css.aspx?lcid=1033" /&amp;gt;&lt;br /&gt;&amp;lt;link rel="stylesheet" type="text/css" href="/_common/styles/global-styles.css.aspx?lcid=1033" /&amp;gt;&lt;br /&gt;&amp;lt;link rel="stylesheet" type="text/css" href="/_common/styles/global-dynamic-styles.css.aspx?lcid=1033" /&amp;gt;&lt;br /&gt;&amp;lt;link rel="stylesheet" type="text/css" href="/_common/styles/fonts.aspx?lcid=1033" /&amp;gt;&lt;br /&gt;&amp;lt;link rel="stylesheet" type="text/css" href="/_forms/controls/form.css.aspx?lcid=1033" /&amp;gt;&lt;br /&gt;&amp;lt;link rel="stylesheet" type="text/css" href="/_forms/controls/controls.css.aspx?lcid=1033" /&amp;gt;&lt;br /&gt;&amp;lt;link rel="stylesheet" type="text/css" href="/_common/styles/dialogs.css.aspx?lcid=1033" /&amp;gt;&lt;br /&gt;&amp;lt;link rel="stylesheet" type="text/css" href="/_controls/lookup/lookupdialogs.css.aspx?lcid=1033" /&amp;gt;&lt;br /&gt;&amp;lt;link rel="stylesheet" type="text/css" href="/_common/styles/select.css.aspx?lcid=1033" /&amp;gt;&lt;br /&gt;&amp;lt;link rel="stylesheet" type="text/css" href="/_controls/notifications/notifications.css.aspx?lcid=1033" /&amp;gt;&lt;br /&gt;&amp;lt;/head&amp;gt;&amp;lt;body&amp;gt;&amp;lt;div style="width:100%; height:100%; overflow:auto"&amp;gt;&amp;lt;table style="width:100%; height:100%;" cellspacing="0" cellpadding="0"&amp;gt;&amp;lt;tr&amp;gt;&amp;lt;td colspan="2" class="ms-crm-Dialog-Header"&amp;gt;&lt;br /&gt;&amp;lt;div class="ms-crm-Dialog-Header-Title" id="DlgHdTitle"&amp;gt;Look Up Records&amp;lt;/div&amp;gt;&amp;lt;div class="ms-crm-Dialog-Header-Desc" id="DlgHdDesc"&amp;gt;Type the information you are looking for in the Look for box and click Find. Then, select the records you want from the Available records list and move them to the Selected records list.&amp;lt;/div&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;&amp;lt;tr&amp;gt;&amp;lt;td colspan="2" style="height:100%;"&amp;gt;&amp;lt;div class="ms-crm-Dialog-Main" &amp;gt;&amp;lt;div id="divWarning" style="height:100%;"&amp;gt;&lt;br /&gt;&amp;lt;script language="JavaScript"&amp;gt;&lt;br /&gt;&lt;br /&gt; function initFrame() {&lt;br /&gt;     viewDoc = document.getElementById("frmResults").contentWindow.document;&lt;br /&gt;     tblResults = viewDoc.getElementById("crmGrid").InnerGrid;&lt;br /&gt;     if (tblResults == undefined) {&lt;br /&gt;         return;&lt;br /&gt;     }&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; function createNew() {&lt;br /&gt;     openObj(iTypeCode, null, null);&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; function applychanges() {         &lt;br /&gt;     window.returnValue = buildReturnValue(tblSelected.rows);&lt;br /&gt;     window.close();&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; function cancel() {&lt;br /&gt;     window.close();&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; function window.onload() {&lt;br /&gt;     if (window.dialogArguments) {         &lt;br /&gt;         document.getElementById("frmResults").src = window.dialogArguments;&lt;br /&gt;         document.getElementById("frmResults").onreadystatechange = resultsReady;&lt;br /&gt;     }&lt;br /&gt;     else {&lt;br /&gt;         alert("No arguments found.");&lt;br /&gt;         return;&lt;br /&gt;     }     &lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; function resultsReady() {&lt;br /&gt;     if (frmResults.document.readyState == "complete") {&lt;br /&gt;         initFrame();&lt;br /&gt;         viewDoc.body.scroll = "no";&lt;br /&gt;         viewDoc.body.style.padding = "0px";&lt;br /&gt;         viewDoc.body.style.border = "1px";&lt;br /&gt;         viewDoc.body.firstChild.firstChild.firstChild.firstChild.bgColor = "#E3EFFF";&lt;br /&gt;         viewDoc.getElementById("crmMenuBar").parentNode.parentNode.removeNode(true);&lt;br /&gt;         viewDoc.getElementById("crmGrid").onpropertychange = function() { setTimeout(onAfterChange, 100); }&lt;br /&gt;&lt;br /&gt;         setNavigationState();&lt;br /&gt;     }&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; function onAfterChange() {&lt;br /&gt;     initFrame();&lt;br /&gt;     setNavigationState();&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; function removeSelected() {&lt;br /&gt;     var items = tblSelected.selectedItems;&lt;br /&gt;     for (var i = 0; i &amp;lt; items.length; i++) {&lt;br /&gt;         items[i].removeNode(true)&lt;br /&gt;     }&lt;br /&gt;  &lt;br /&gt;     items.splice(0, items.length);&lt;br /&gt;     if (tblSelected.rows.length &amp;gt; 0) {&lt;br /&gt;         selectItem(tblSelected, tblSelected.rows[0], true);&lt;br /&gt;     }&lt;br /&gt;     setNavigationState();&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; function duplicateSelection(oid) {&lt;br /&gt;     var len = tblSelected.rows.length;&lt;br /&gt;     for (var i = 0; i &amp;lt; len; i++) {&lt;br /&gt;         if (tblSelected.rows[i].oid == oid) {&lt;br /&gt;             return true;&lt;br /&gt;         }&lt;br /&gt;     }&lt;br /&gt;     return false;&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; function appendItem(id, type, html, originalItem) {&lt;br /&gt;     var tr = tblSelected.insertRow();&lt;br /&gt;     tr.oid = id;&lt;br /&gt;     tr.otype = type;&lt;br /&gt;     tr.originalItem = originalItem;&lt;br /&gt;&lt;br /&gt;     var td = tr.insertCell();&lt;br /&gt;     td.className = "sel";&lt;br /&gt;     td.noWrap = true;&lt;br /&gt;     td.innerHTML = html;&lt;br /&gt;&lt;br /&gt;     if (tr.rowIndex == 0) {&lt;br /&gt;         selectItem(tblSelected, tr, false);&lt;br /&gt;     }&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; function appendSelected() {&lt;br /&gt;     initFrame();&lt;br /&gt;     var items = tblResults.SelectedRecords;&lt;br /&gt;     if (items) {&lt;br /&gt;         var len = items.length;&lt;br /&gt;         var html = "&amp;lt;TD class=ms-crm-List-DataCell align=middle&amp;gt;&amp;lt;IMG style='CURSOR: hand' alt='Click to preview' src='/_imgs/grid/row_selected.gif'&amp;gt; &amp;lt;/TD&amp;gt;";&lt;br /&gt;&lt;br /&gt;         for (var i = 0; i &amp;lt; len; i++) {&lt;br /&gt;             var o = items[i];&lt;br /&gt;&lt;br /&gt;             if (!duplicateSelection(o[0])) {&lt;br /&gt;&lt;br /&gt;                 appendItem(o[0], o[1], o[3].innerHTML.indexOf("row_selected.gif") == -1 ? html + o[3].innerHTML : o[3].innerHTML, null);&lt;br /&gt;             }&lt;br /&gt;         }&lt;br /&gt;         setNavigationState();&lt;br /&gt;     }&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; function setNavigationState() {&lt;br /&gt;     if (tblResults != undefined) {&lt;br /&gt;         if (tblResults.SelectedRecords != null &amp;amp;&amp;amp; tblResults.SelectedRecords.length != null &amp;amp;&amp;amp; tblResults.SelectedRecords.length &amp;gt; 0) {&lt;br /&gt;             btnProperties.disabled = false;&lt;br /&gt;             btnAppend.disabled = false;            &lt;br /&gt;         }&lt;br /&gt;         else {&lt;br /&gt;             btnProperties.disabled = true;&lt;br /&gt;             btnAppend.disabled = true;&lt;br /&gt;         }         &lt;br /&gt;         btnRemove.disabled = (tblSelected.rows.length == 0);&lt;br /&gt;         tblNoRecords.runtimeStyle.display = (tblSelected.rows.length == 0 ? "" : "none");&lt;br /&gt;     }&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; function showProperties() {&lt;br /&gt;     initFrame();&lt;br /&gt;     var items = tblResults.SelectedRecords;&lt;br /&gt;     if (items == null || items.length == null) {&lt;br /&gt;         return;&lt;br /&gt;     }&lt;br /&gt;     if (items.length == 0) {&lt;br /&gt;&lt;br /&gt;         alert("You must select one object.");&lt;br /&gt;     }&lt;br /&gt;     else if (items.length &amp;gt; 1) {&lt;br /&gt;         alert("You must only select one object.");&lt;br /&gt;     }&lt;br /&gt;     else {&lt;br /&gt;         var nWidth = 560;&lt;br /&gt;         var nHeight = 525;&lt;br /&gt;         var oWindowInfo = GetWindowInformation(items[0][1]);&lt;br /&gt;         if (oWindowInfo != null) {&lt;br /&gt;             nWidth = oWindowInfo.Width;&lt;br /&gt;             nHeight = oWindowInfo.Height;&lt;br /&gt;         }&lt;br /&gt;&lt;br /&gt;         switch (Number(items[0][1])) {&lt;br /&gt;             case Service:&lt;br /&gt;                 openStdWin(prependOrgName("/sm/services/readonly.aspx?objTypeCode=" + items[0][1] + "&amp;amp;id=" + items[0][0]), "readonly" + buildWinName(items[0][0]), nWidth, nHeight);&lt;br /&gt;                 break;&lt;br /&gt;             case Workflow:&lt;br /&gt;                 openObj(items[0][1], items[0][0]);&lt;br /&gt;                 break;&lt;br /&gt;             case ImportMap:&lt;br /&gt;                 openStdWin(prependOrgName("/tools/managemaps/readonly.aspx?objTypeCode=" + items[0][1] + "&amp;amp;id=" + items[0][0]), "readonly" + buildWinName(items[0][0]), nWidth, nHeight);&lt;br /&gt;                 break;&lt;br /&gt;             default:&lt;br /&gt;                 openStdWin(prependOrgName("/_forms/readonly/readonly.aspx?objTypeCode=" + items[0][1] + "&amp;amp;id=" + items[0][0]), "readonly" + buildWinName(items[0][0]), nWidth, nHeight);&lt;br /&gt;                 break;&lt;br /&gt;         }&lt;br /&gt;     }&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt;&amp;lt;/script&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;table cellspacing="0" cellpadding="0" width="100%" height="100%"&amp;gt;&lt;br /&gt;&amp;lt;td&amp;gt;&lt;br /&gt;&amp;lt;table height="100%" width="100%" id="tblFind" cellpadding="0" cellspacing="0"&amp;gt;&lt;br /&gt;&amp;lt;tr height="20"&amp;gt;&lt;br /&gt;&amp;lt;td&amp;gt;Available records:&amp;lt;/td&amp;gt;&lt;br /&gt;&amp;lt;td&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;&amp;lt;td&amp;gt;Selected records:&amp;lt;/td&amp;gt;&lt;br /&gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;&amp;lt;tr&amp;gt;&lt;br /&gt;&amp;lt;td width="45%"&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;iframe scrolling="no" class="ms-crm-Dialog-Lookup-Results" id="frmResults" &amp;gt;&amp;lt;/iframe&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;/td&amp;gt;&lt;br /&gt;&amp;lt;td width="60" align="center"&amp;gt;&lt;br /&gt;&amp;lt;button id="btnAppend"disabled="disabled" style="width: 40px;" onclick="appendSelected()" title="Add the selected record"&amp;gt;&amp;gt;&amp;gt;&amp;lt;/button&amp;gt;&lt;br /&gt;&amp;lt;p&amp;gt;&lt;br /&gt;&amp;lt;button id="btnRemove" disabled="disabled" style="width: 40px;" onclick="removeSelected();" title="Remove the selected record"&amp;gt;&amp;lt;&amp;lt;&amp;lt;/button&amp;gt;&lt;br /&gt;&amp;lt;/td&amp;gt;&lt;br /&gt;&amp;lt;td&amp;gt;&lt;br /&gt;&amp;lt;div id="rtnObjList" class="ms-crm-Dialog-Lookup-Objects" onkeydown="listKeyDown(tblSelected)" onfocusin="focusSelectedItems(tblSelected, true);" onfocusout="focusSelectedItems(tblSelected, false);"&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;table hidefocus="true" tabindex="0" id="tblSelected" cellpadding="2" cellspacing="0" width="100%" onclick="clickItem( this )" ondblclick="removeSelected()"&amp;gt;&amp;lt;/table&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;table class="ms-crm-Dialog-Lookup-InlineMsg" id="tblNoRecords"&amp;gt;&lt;br /&gt;&amp;lt;tr&amp;gt;&lt;br /&gt;&amp;lt;td class="ms-crm-Dialog-Lookup-InlineMsg" align="center"&amp;gt;No records have been selected yet.&amp;lt;/td&amp;gt;&lt;br /&gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;&amp;lt;/table&amp;gt;&lt;br /&gt;&amp;lt;/div&amp;gt;&lt;br /&gt;&amp;lt;/td&amp;gt;&lt;br /&gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;&amp;lt;tr height="20" style="padding-top: 10px;"&amp;gt;&lt;br /&gt;&amp;lt;td colspan="3" nowrap&amp;gt;&lt;br /&gt;&amp;lt;button id="btnProperties" disabled="disabled" onclick="showProperties();" class="ms-crm-Button" Title="View the selected record's properties" &amp;gt;Properties&amp;lt;/button&amp;gt;&amp;lt;span style="width: 5px;"&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;&amp;lt;button id="btnNew" onclick="createNew();" class="ms-crm-Button" Title="Create a new record"&amp;gt;New&amp;lt;/button&amp;gt;&lt;br /&gt;&amp;lt;/td&amp;gt;&lt;br /&gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;&amp;lt;/table&amp;gt;&lt;br /&gt;&amp;lt;/td&amp;gt;&lt;br /&gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;&amp;lt;/table&amp;gt;&lt;br /&gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;&amp;lt;div id='divFillBg' style='display:none;position:absolute;top:80px;left:20px;height:23px;width:355px;background-color:#ffffff;'&amp;gt; &amp;lt;/div&amp;gt;&lt;br /&gt;&amp;lt;div id='divFill' style='display:none;position:absolute;top:80px;left:20px;height:23px;width:0px;filter: progid:DXImageTransform.Microsoft.Gradient(GradientType=0, StartColorStr=#00ff00, EndColorStr=#00cc00);'&amp;gt; &amp;lt;/div&amp;gt;&lt;br /&gt;&amp;lt;div id='divStatus' style='display:none;position:absolute;top:80px;left:19px;height:23px;width:357px;'&amp;gt;&amp;lt;img alt='' src='/_imgs/statusbar.gif' height='23' width='357'&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&amp;lt;tr&amp;gt;&amp;lt;td class="ms-crm-Dialog-Footer ms-crm-Dialog-Footer-Left"&amp;gt; &amp;lt;/td&amp;gt;&lt;br /&gt;&amp;lt;td class="ms-crm-Dialog-Footer ms-crm-Dialog-Footer-Right"&amp;gt;&amp;lt;button id="butBegin" onclick="applychanges();" class="ms-crm-Button"&amp;gt;OK&amp;lt;/button&amp;gt; &amp;lt;button id="cmdDialogCancel" onclick="cancel();" class="ms-crm-Button"&amp;gt;Cancel&amp;lt;/button&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&amp;lt;/table&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;/body&amp;gt;&lt;br /&gt;&amp;lt;/html&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Put the below code into Account.Onload(), you need to replace the: nnId, lookupTypeCode, lookupViewId to yours.&lt;br /&gt;&lt;br /&gt;&lt;pre class="js" name="code"&gt;&lt;br /&gt;var nnId = "new_account_contact"; // entity N:N relationship id&lt;br /&gt;var lookupTypeCode = 2; // entity type code&lt;br /&gt;var lookupViewId = "A2D479C5-53E3-4C69-ADDD-802327E67A0D"; // the view id of referenced entity&lt;br /&gt;&lt;br /&gt;var lookupSrc = "/" + ORG_UNIQUE_NAME + "/ISV/lookup/lookupmulti.aspx";&lt;br /&gt;var lookupArg = "/" + ORG_UNIQUE_NAME + "/_root/homepage.aspx?etc=" + lookupTypeCode +"&amp;amp;viewid=" + lookupViewId;&lt;br /&gt;&lt;br /&gt;var lookupEntityTypeCode;&lt;br /&gt;var navId = document.getElementById("nav" + nnId);&lt;br /&gt;if (navId != null)&lt;br /&gt;{&lt;br /&gt; var la = navId.onclick.toString();&lt;br /&gt; la = la.substring(la.indexOf("loadArea"), la.indexOf(";"));&lt;br /&gt;&lt;br /&gt; navId.onclick = function()&lt;br /&gt; {&lt;br /&gt;     eval(la);&lt;br /&gt;  &lt;br /&gt;     var areaId = document.getElementById("area" + nnId + "Frame");&lt;br /&gt;     if(areaId != null)&lt;br /&gt;     {&lt;br /&gt;         areaId.onreadystatechange = function()&lt;br /&gt;         {&lt;br /&gt;             if (areaId.readyState == "complete")&lt;br /&gt;             {&lt;br /&gt;                 var frame = frames[window.event.srcElement.id];&lt;br /&gt;                 var li = frame.document.getElementsByTagName("li"); &lt;br /&gt;&lt;br /&gt;                 for (var i = 0; i &lt; li.length; i++)&lt;br /&gt;                 {&lt;br /&gt;                     var action = li[i].getAttribute("action");&lt;br /&gt;                     if(action != null &amp;&amp; action.indexOf(relId) &gt; 1)&lt;br /&gt;                     {&lt;br /&gt;                         lookupEntityTypeCode = action.substring(action.indexOf("\(")+1, action.indexOf(","));&lt;br /&gt;                         li[i].onclick = CustomLookup;&lt;br /&gt;                         break;&lt;br /&gt;                     }&lt;br /&gt;                 }&lt;br /&gt;             }&lt;br /&gt;         }&lt;br /&gt;     }&lt;br /&gt; }&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;function CustomLookup()&lt;br /&gt;{&lt;br /&gt; var lookupItems = window.showModalDialog(lookupSrc, lookupArg, "dialogWidth:800px; dialogHeight:600px;");&lt;br /&gt;&lt;br /&gt; if (lookupItems)  // This is the CRM internal JS funciton on \_static\_grid\action.js&lt;br /&gt; {&lt;br /&gt;     if ( lookupItems.items.length &gt; 0 )&lt;br /&gt;     {&lt;br /&gt;         AssociateObjects( crmFormSubmit.crmFormSubmitObjectType.value, crmFormSubmit.crmFormSubmitId.value, lookupEntityTypeCode, lookupItems, true, null, nnId);&lt;br /&gt;     }&lt;br /&gt; }&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Notice:&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;This is an unsupported customization which does use CRM 4.0 internal functions;&lt;/li&gt;&lt;li&gt;Tested on &lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=a4893988-7804-4e23-ab58-740441cc696e&amp;amp;displayLang=en"&gt;CRM 4.0 Update Rollup 7&lt;/a&gt;.&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/7208889-8166513246756892689?l=jianwang.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jianwang.blogspot.com/feeds/8166513246756892689/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7208889&amp;postID=8166513246756892689' title='19 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7208889/posts/default/8166513246756892689'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7208889/posts/default/8166513246756892689'/><link rel='alternate' type='text/html' href='http://jianwang.blogspot.com/2009/10/change-lookup-view-on-many-to-many.html' title='Change the lookup view on Many-to-Many relationship'/><author><name>Jim Wang</name><uri>http://www.blogger.com/profile/15963866631960791206</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='29' src='http://4.bp.blogspot.com/_-lOIedxo3AA/SaQ-RpTrHZI/AAAAAAAAANI/pQoZ77uYOe0/S220/Jim%27.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_-lOIedxo3AA/SuMKW3hmwjI/AAAAAAAAAQI/xEnCkARmmJs/s72-c/lookupmulti1.png' height='72' width='72'/><thr:total>19</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7208889.post-5912825282002460251</id><published>2009-09-12T10:57:00.003+01:00</published><updated>2009-09-12T15:09:07.377+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='CRM ISV'/><title type='text'>CRM ISV Add-On : The entry 'ScriptModule' has already been added</title><content type='html'>I tested a CRM 4.0 add-on (ISV-A) last week, the default ASPX page generated an error:&lt;br /&gt;&lt;br /&gt;&lt;em&gt;&lt;strong&gt;Parser Error Message: The entry 'ScriptModule' has already been added. &lt;/strong&gt;&lt;br /&gt;&lt;span style="color:#ff0000;"&gt;&amp;lt;add name="ScriptModule" type="System.Web.Handlers.ScriptModule, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"&amp;gt;&lt;/span&gt;&lt;br /&gt;&amp;lt;/httpmodules&amp;gt;&lt;br /&gt;&amp;lt;/SYSTEM.WEB&amp;gt;&lt;/em&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;The add-on was located under the folder: CRMWeb\ISV\MyAddon&lt;br /&gt;Of cause it inherits settings from CRM's root web.config: in which the &lt;strong&gt;ScriptModule&lt;/strong&gt; has been added by another ISV's (ISV-B) add-on(it shouldn't do it at all).&lt;br /&gt;&lt;br /&gt;But if I remove the &lt;strong&gt;ScriptModule&lt;/strong&gt; from ISV-A's web.config, the error changed to:&lt;br /&gt;&lt;br /&gt;&lt;em&gt;&lt;span style="color:#ff0000;"&gt;Unable to cast object of type 'System.Web.Configuration.ScriptingAuthenticationServiceSection' to type 'System.Web.Configuration.ScriptingAuthenticationServiceSection'.&lt;/span&gt;&lt;/em&gt;&lt;br /&gt;&lt;br /&gt;That's because the .Net version of ScriptModule are different between ISV-A and ISV-B's, so we have to stop &lt;strong&gt;ScriptModule&lt;/strong&gt;(ISV-A's) inheriting from CRM's root web.config.&lt;br /&gt;&lt;br /&gt;So that what I need to do on ISV-A's web.config:&lt;br /&gt;&lt;br /&gt;Just before the &lt;strong&gt;ScriptModule&lt;/strong&gt;, add a &lt;strong&gt;&amp;lt;remove&amp;gt; &lt;/strong&gt;tag, which will remove the inherited setting:&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&amp;lt;remove name="ScriptModule"&amp;gt;&lt;/strong&gt;&lt;br /&gt;&amp;lt;add name="ScriptModule" type="System.Web.Handlers.ScriptModule, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"&amp;gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7208889-5912825282002460251?l=jianwang.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jianwang.blogspot.com/feeds/5912825282002460251/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7208889&amp;postID=5912825282002460251' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7208889/posts/default/5912825282002460251'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7208889/posts/default/5912825282002460251'/><link rel='alternate' type='text/html' href='http://jianwang.blogspot.com/2009/09/crm-isv-add-on-entry-scriptmodule-has.html' title='CRM ISV Add-On : The entry &apos;ScriptModule&apos; has already been added'/><author><name>Jim Wang</name><uri>http://www.blogger.com/profile/15963866631960791206</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='29' src='http://4.bp.blogspot.com/_-lOIedxo3AA/SaQ-RpTrHZI/AAAAAAAAANI/pQoZ77uYOe0/S220/Jim%27.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7208889.post-3265477934816408878</id><published>2009-08-15T15:32:00.010+01:00</published><updated>2009-08-30T11:33:28.143+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Installation and Deployment'/><category scheme='http://www.blogger.com/atom/ns#' term='Debug'/><category scheme='http://www.blogger.com/atom/ns#' term='CRM Developer Toolkit'/><category scheme='http://www.blogger.com/atom/ns#' term='CRM 4.0'/><title type='text'>Build a handy Dynamics CRM development environment</title><content type='html'>Last month, Sonoma Partners and Microsoft had an very useful article for CRM developers: &lt;a href="http://msdn.microsoft.com/en-us/library/ee294457.aspx"&gt;Setting Up Your Development Environment&lt;/a&gt;, I have abstract it into Chinese version. In this post, I'd like to give my idea about how to build up a handy Dynamics CRM development environment.&lt;br /&gt;&lt;br /&gt;The typical situation is: A CRM developer runs a Virtual PC image on his/her own PC; the virtual image is a All-In-One CRM system(Windows Server/SQL/IIS/CRM/SharePoint etc.); the Host PC has Visual Studio installed. I'm not going to discuss the mutli-developers  sharing one development environment using TFS in this article.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Setup Virtual PC environment:&lt;/strong&gt;&lt;br /&gt;&lt;a href="http://www.microsoft.com/downloads/details.aspx?displaylang=en&amp;FamilyID=28c97d22-6eb8-4a09-a7f7-f6c7a1f000b5"&gt;Microsoft Virtual PC&lt;/a&gt; is a free software, it has all we need to host a development environment. You may firstly install Windows Server 2003/2008 on the VPC, then install AD, DNS, IIS 6/7, SQL server 2005/2008, CRM 4, etc.  Finally it's a All-In-One CRM box, I'd like to point out that:&lt;br /&gt;&lt;br /&gt;1. It can be a Domain Controller - that's for your development only, not for production.&lt;br /&gt;&lt;br /&gt;2. You may need 3 Network Adapters in the VPC: &lt;br /&gt;  a. Local only - for VPC internal use&lt;br /&gt;  b. Microsoft Loopback Adapter - for the communication between Host and VPC&lt;br /&gt;  c. Host's Physical Adapter - for the Internet access via the Host PC &lt;br /&gt; &lt;br /&gt;The communication between Host and VPC can be used by a Physical Adapter, however think about this situation:&lt;br /&gt;You have a laptop which can be used at home(via Wireless) and company(via Cable), so the IP arrange / Adapter are different.&lt;br /&gt;That's the reason why we need a Microsoft Loopback Adapter in this "handy" environment(&lt;a href="http://www.bing.com/search?q=how+to+set+up+a+Microsoft+Loopback+Adapter&amp;go=&amp;form=QBLH&amp;filt=all&amp;qs=n"&gt;BING it: how to set up a Microsoft Loopback Adapter&lt;/a&gt;).&lt;br /&gt;&lt;br /&gt;3. The VPC can be set up to the &lt;a href="http://support.microsoft.com/kb/948779"&gt;On-Premise/IFD&lt;/a&gt; mode, so you can develop/test both CRM deployment. You may edit Host's hosts file(e.g.: &lt;em&gt;C:\WINDOWS\system32\drivers\etc\hosts&lt;/em&gt;) to point to the IFD URL.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Setup Visual Studio on the Host PC:&lt;/strong&gt;&lt;br /&gt;You can use Visual Studio to develop/debug CRM on the Host PC, to make it work efficiently:&lt;br /&gt;&lt;br /&gt;1. Add user credentials to access VPC (on your Host PC(I suppose it's a Windows XP system, Vista/7 are similar), go to: Control Panel&gt;&gt;User Accounts&gt;&gt;Advanced&gt;&gt;Manage Passwords) , then type in VPC's Server name, User name and Password, click OK to save it.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/_-lOIedxo3AA/SobJy6PhQ1I/AAAAAAAAAPo/u-7892tsd7Q/s1600-h/d1.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 341px; height: 394px;" src="http://1.bp.blogspot.com/_-lOIedxo3AA/SobJy6PhQ1I/AAAAAAAAAPo/u-7892tsd7Q/s400/d1.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5370201482150888274" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;2. To make the Remote Debug work, the runas account for Visual Studio on the Host PC and the runas account for the Visual Studio Remote Debugging Monitor(msvsmon.exe) on the VPC must use the same user name, it doesn't matter whether users are in two different domains. For example, your VPC domain name call: WIN2K3, your logon user for the VPC is Administrator; However your Host PC's logon user is: CompanyDomain\jimwang,  in this case, the remote debugging will not work because it's on different users names. What you can do is, use the local Administrator account on your Host PC to run Visual Studio. E.g.: you can simply create a shortcut on your desktop, target to, e.g.: &lt;em&gt;%windir%\system32\RUNAS.exe /USER:HostPCName\Administrator "C:\Program Files\Microsoft Visual Studio 9.0\Common7\IDE\devenv.exe"&lt;/em&gt; . These two users must have the same password as well.&lt;br /&gt;&lt;br /&gt;3. How to remote debug VPC CRM from the Host PC?&lt;br /&gt;Once you completed the step1 and step2,  then make sure the msvsmon.exe is running on the VPC( you can copy the file from your Host PC: C:\Program Files\Microsoft Visual Studio 9.0\Common7\IDE\Remote Debugger\x86\), the monitor will then waiting for new connections. Go back to your Host PC, set a Breakpoint in your project,&lt;br /&gt;Then click "Debug"&gt;&gt;"Attach to process...", in the Qualifier, type in the VPC's server information you created on step 1, e.g.: &lt;em&gt;WIN2K3\Administrator@R2&lt;/em&gt;&lt;br /&gt;And then attach w3wp.exe (Managed code). &lt;br /&gt;&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/_-lOIedxo3AA/SobJzZS4ygI/AAAAAAAAAPw/U35vQNHjYls/s1600-h/d2.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 277px;" src="http://2.bp.blogspot.com/_-lOIedxo3AA/SobJzZS4ygI/AAAAAAAAAPw/U35vQNHjYls/s400/d2.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5370201490486512130" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/_-lOIedxo3AA/SobJzrcrCgI/AAAAAAAAAP4/-MU5rveJ59s/s1600-h/d3.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 119px;" src="http://2.bp.blogspot.com/_-lOIedxo3AA/SobJzrcrCgI/AAAAAAAAAP4/-MU5rveJ59s/s400/d3.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5370201495359392258" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;4. How to deploy the plugins .dll file to VPC?&lt;br /&gt;You need to deploy the .dll file to the VPC's file system in order to Remote Debug(see &lt;a href="http://msdn.microsoft.com/en-us/library/cc151088.aspx"&gt;SDK for more information&lt;/a&gt;), the folder is, e.g.: &lt;em&gt;C:\Program Files\Microsoft Dynamics CRM\Server\bin\assembly\&lt;/em&gt;&lt;br /&gt;You may share the folder and give permission to everyone with full control, then in the Visual Studio, set up the project output path to the shared folder, e.g.: &lt;em&gt;\\R2\assembly\&lt;/em&gt;&lt;br /&gt;Now, you may have the experience that, every time you deploy/debug the project, you have to run a IISRESET on the VPC to release the previous .dll file.&lt;br /&gt;I write a &lt;a href="http://www.microsoft.com/DOWNLOADS/details.aspx?FamilyID=c913aeab-d7b4-4bb1-a958-ee6d7fe307bc&amp;displaylang=en"&gt;Windows PowerShell&lt;/a&gt; script to help you do the hard work,  your may save it as RecycleCRMAppPool.ps1, then in Visual Studio, make it as the Pre-build event command line of the project. The script will recycle the CRMAppPool before deploy the .dll file.&lt;br /&gt;&lt;br /&gt;&lt;pre class="c#" name="code"&gt;&lt;br /&gt;$server="R2";&lt;br /&gt;&lt;br /&gt;$co = new-object System.Management.ConnectionOptions;&lt;br /&gt;$co.Authentication=[System.Management.AuthenticationLevel]::PacketPrivacy;&lt;br /&gt;$co.EnablePrivileges=$true;&lt;br /&gt;&lt;br /&gt;$wmi = [WmiSearcher] "Select * From IIsApplicationPool";&lt;br /&gt;$wmi.Scope.Path = "\\$server\root\microsoftiisv2";&lt;br /&gt;$wmi.Scope.Options=$co;&lt;br /&gt;&lt;br /&gt;foreach($crmpool in $wmi.Get())&lt;br /&gt;{&lt;br /&gt; if($crmpool.name -eq "W3SVC/AppPools/CRMAppPool")&lt;br /&gt; {&lt;br /&gt;  $crmpool.recycle();&lt;br /&gt; }&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/_-lOIedxo3AA/SobJ0D6m3eI/AAAAAAAAAQA/y8qBpeIQ8R4/s1600-h/d4.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 249px;" src="http://3.bp.blogspot.com/_-lOIedxo3AA/SobJ0D6m3eI/AAAAAAAAAQA/y8qBpeIQ8R4/s400/d4.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5370201501927398882" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;5. You may also use &lt;a href="http://code.msdn.microsoft.com/E2DevTkt"&gt;Microsoft Dynamics CRM Develop Toolkit&lt;/a&gt; Visual Studio add-on to develop any plugin/workflow assembly/jscript for your CRM project, it will reduce your development time.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7208889-3265477934816408878?l=jianwang.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jianwang.blogspot.com/feeds/3265477934816408878/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7208889&amp;postID=3265477934816408878' title='6 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7208889/posts/default/3265477934816408878'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7208889/posts/default/3265477934816408878'/><link rel='alternate' type='text/html' href='http://jianwang.blogspot.com/2009/08/build-handy-dynamics-crm-development.html' title='Build a handy Dynamics CRM development environment'/><author><name>Jim Wang</name><uri>http://www.blogger.com/profile/15963866631960791206</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='29' src='http://4.bp.blogspot.com/_-lOIedxo3AA/SaQ-RpTrHZI/AAAAAAAAANI/pQoZ77uYOe0/S220/Jim%27.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_-lOIedxo3AA/SobJy6PhQ1I/AAAAAAAAAPo/u-7892tsd7Q/s72-c/d1.png' height='72' width='72'/><thr:total>6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7208889.post-7629097642208702870</id><published>2009-08-04T00:36:00.012+01:00</published><updated>2009-08-09T11:09:41.600+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Lookup'/><category scheme='http://www.blogger.com/atom/ns#' term='CRM 4.0'/><title type='text'>CRM Filtered Lookup Multi</title><content type='html'>I had some posts last year about the CRM Filtered Lookup, these technique are broadly used in the CRM community.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://jianwang.blogspot.com/2008/05/mysterious-crm-lookup-i.html"&gt;The mysterious CRM Lookup (I) &lt;/a&gt;&lt;br /&gt;&lt;a href="http://jianwang.blogspot.com/2008/05/mysterious-crm-lookup-ii.html"&gt;The mysterious CRM Lookup (II) &lt;/a&gt;&lt;br /&gt;&lt;a href="http://jianwang.blogspot.com/2008/05/mysterious-crm-lookup-iii.html"&gt;The mysterious CRM Lookup (III)&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;A few days ago, I saw &lt;a href="http://social.microsoft.com/Forums/en-US/crmchinese/thread/43afab2f-483d-467b-8c8e-e3be3531f3cc"&gt;a post on the Microsoft Dynamics CRM Chinese Forum&lt;/a&gt; about how to add filter to LookupMulti.aspx ?&lt;br /&gt;I think it's a very common requirements, so I'd like to give my idea.&lt;br /&gt;When I start with this customization, my bottom line was: Not change any files/databases. However this customization should be marked as a "unsupported customization" (call CRM/JS function directly).&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;OK, the question was:&lt;br /&gt;A customized entity: &lt;strong&gt;ShippingMark&lt;/strong&gt; (new_shippingmark), it has N:1 relationship with &lt;strong&gt;Account&lt;/strong&gt;; it also has N:N relationship with &lt;strong&gt;Quote&lt;/strong&gt;.&lt;br /&gt;And as we known by default, &lt;strong&gt;Quote&lt;/strong&gt; has N:1 relationship with &lt;strong&gt;Account&lt;/strong&gt;(via customerid)&lt;br /&gt;&lt;br /&gt;So the relationship is simple: &lt;strong&gt;Account &lt;span style="color:#cc0000;"&gt;-&amp;lt;&lt;/span&gt; (customerid)Quote &lt;span style="color:#cc0000;"&gt;&amp;gt;&amp;lt;&lt;/span&gt; ShippingMark(new_accountid) &lt;span style="color:#cc0000;"&gt;&amp;gt;-&lt;/span&gt; Account&lt;br /&gt;&lt;/strong&gt;&lt;br /&gt;What the user wants was classic: &lt;em&gt;&lt;span style="color:#ff0000;"&gt;&lt;span style="color:#cc0000;"&gt;Open a Quote record, then go to Add Existing ShippingMark, then in the LookupMulti page, only return the ShippingMark which has the same Account(new_account) with Quote's(customerid).&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/em&gt;&lt;br /&gt;There are two parts of the code: server side Plugin.Execute event and client side CRM.Onload event. What the client side code does is: create a custom lookup window, and pass the customerid as a parameter, so the lookup URL looks like: …&amp;id=…, then the server side plugin will replace the FilterXml query string based on the parameter.&lt;br /&gt;&lt;br /&gt;I give the code prototype for this specific requirement, you need to modify it for re-use. This technique should work for both LookupSingle.aspx and LookupMulti.aspx.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;1. Plug-Ins&lt;br /&gt;Register the &lt;em&gt;Execute&lt;/em&gt; message on the &lt;em&gt;Pre Stage/Synchronous/Server/Parent Pipeline&lt;/em&gt;.&lt;/strong&gt;&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/_-lOIedxo3AA/Snd8C1TC_NI/AAAAAAAAAPg/l44n6n0d6kI/s1600-h/CRMExecuteEvent.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 217px;" src="http://3.bp.blogspot.com/_-lOIedxo3AA/Snd8C1TC_NI/AAAAAAAAAPg/l44n6n0d6kI/s400/CRMExecuteEvent.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5365893869143784658" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;pre class="c#" name="code"&gt;&lt;br /&gt;/*&lt;br /&gt; * Microsoft Dynamics CRM Lookup Filter &lt;br /&gt; * Plug-Ins: Execute message on the Pre Stage/Synchronous/Server/Parent Pipeline.&lt;br /&gt; * Jim Wang @ Aug 2009, http://jianwang.blogspot.com, http://mscrm.cn&lt;br /&gt; * &lt;br /&gt; */&lt;br /&gt;&lt;br /&gt;using System;&lt;br /&gt;using System.Collections.Generic;&lt;br /&gt;using System.Linq;&lt;br /&gt;using System.Text;&lt;br /&gt;using System.IO;&lt;br /&gt;using System.Web;&lt;br /&gt;using Microsoft.Crm.Sdk;&lt;br /&gt;&lt;br /&gt;namespace CRMExecuteEvent&lt;br /&gt;{&lt;br /&gt;    public class CRMExecuteEvent : IPlugin&lt;br /&gt;    {     &lt;br /&gt;        string lookupId;&lt;br /&gt;&lt;br /&gt;        public void Execute(IPluginExecutionContext context)&lt;br /&gt;        {&lt;br /&gt;&lt;br /&gt;            lookupId = HttpContext.Current.Request.QueryString["id"] == null ? null : HttpContext.Current.Request.QueryString["id"].ToString();&lt;br /&gt;&lt;br /&gt;            if (lookupId == null)   return;&lt;br /&gt;&lt;br /&gt;            try&lt;br /&gt;            {&lt;br /&gt;                if (context.InputParameters.Contains("FetchXml"))&lt;br /&gt;                {&lt;br /&gt;                    string beforeXml = (String)context.InputParameters["FetchXml"];&lt;br /&gt;&lt;br /&gt;                    if (beforeXml.Contains("&amp;lt;entity name=\"new_shippingmark\"&amp;gt;") &amp;&amp; beforeXml.Contains("xml-platform"))&lt;br /&gt;                    {&lt;br /&gt;                        //Customise the FetchXml query string&lt;br /&gt;                        string afterXml =&lt;br /&gt;                        "&amp;lt;fetch version='1.0' page='1' count='100' output-format='xml-platform' mapping='logical'&amp;gt; " +&lt;br /&gt;                            "&amp;lt;entity name='new_shippingmark'&amp;gt; " +&lt;br /&gt;                                "&amp;lt;attribute name='new_shippingmarkid' /&amp;gt; " +&lt;br /&gt;                                "&amp;lt;attribute name='new_name' /&amp;gt; " +&lt;br /&gt;                                "&amp;lt;attribute name='createdon' /&amp;gt; " +&lt;br /&gt;                                "&amp;lt;order attribute='new_name' /&amp;gt; " +&lt;br /&gt;                                "&amp;lt;link-entity name='quote' to='new_accountid' from='customerid'&amp;gt; " +&lt;br /&gt;                                    "&amp;lt;filter type='and'&amp;gt; " +&lt;br /&gt;                                        "&amp;lt;condition attribute = 'customerid' operator='eq' value='" + lookupId + "'/&amp;gt; " +&lt;br /&gt;                                    "&amp;lt;/filter&amp;gt; " +&lt;br /&gt;                                "&amp;lt;/link-entity&amp;gt; " +&lt;br /&gt;                                "&amp;lt;filter type='and'&amp;gt; " +&lt;br /&gt;                                    "&amp;lt;condition attribute='statecode' operator='eq' value='0' /&amp;gt; " +&lt;br /&gt;                                    "&amp;lt;condition attribute='new_name' operator='like' value='%' /&amp;gt; " +&lt;br /&gt;                                "&amp;lt;/filter&amp;gt; " +&lt;br /&gt;                            "&amp;lt;/entity&amp;gt; " +&lt;br /&gt;                        "&amp;lt;/fetch&amp;gt;";&lt;br /&gt;&lt;br /&gt;                        //Replace the FetchXml query string&lt;br /&gt;                        context.InputParameters["FetchXml"] = beforeXml.Replace(beforeXml, afterXml);&lt;br /&gt;&lt;br /&gt;                    }&lt;br /&gt;                }&lt;br /&gt;            }&lt;br /&gt;&lt;br /&gt;            catch (System.Web.Services.Protocols.SoapException ex)&lt;br /&gt;            {&lt;br /&gt;                throw new InvalidPluginExecutionException("An error occurred in the CRM plug-in.", ex);&lt;br /&gt;            }&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;    }&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;2. Quote.OnLoad()&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre class="js" name="code"&gt;&lt;br /&gt;var relId = "new_new_shippingmark_quote";&lt;br /&gt;var lookupId = crmForm.all.customerid;  &lt;br /&gt;&lt;br /&gt;var lookupEntityTypeCode;&lt;br /&gt;var navId = document.getElementById("nav" + relId);&lt;br /&gt;if (navId != null)&lt;br /&gt;{&lt;br /&gt;    var la = navId.onclick.toString();&lt;br /&gt;    la = la.substring(la.indexOf("loadArea"), la.indexOf(";"));&lt;br /&gt;    &lt;br /&gt;    navId.onclick = function()&lt;br /&gt;    {&lt;br /&gt;        eval(la);&lt;br /&gt;&lt;br /&gt;        var areaId = document.getElementById("area" + relId + "Frame");&lt;br /&gt;        if(areaId != null)&lt;br /&gt;        {&lt;br /&gt;            areaId.onreadystatechange = function() &lt;br /&gt;            {&lt;br /&gt;                if (areaId.readyState == "complete") &lt;br /&gt;                {  &lt;br /&gt;                    var frame = frames[window.event.srcElement.id];  &lt;br /&gt;                    var li = frame.document.getElementsByTagName("li");    &lt;br /&gt;&lt;br /&gt;                    for (var i = 0; i &lt; li.length; i++)&lt;br /&gt;                    {&lt;br /&gt;                        var action = li[i].getAttribute("action");&lt;br /&gt;                        if(action != null &amp;&amp; action.indexOf(relId) &gt; 1)&lt;br /&gt;                        {&lt;br /&gt;                            lookupEntityTypeCode = action.substring(action.indexOf("\(")+1, action.indexOf(","));&lt;br /&gt;                            li[i].onclick = CustomLookup;&lt;br /&gt;                            break;&lt;br /&gt;                        }&lt;br /&gt;                    }&lt;br /&gt;                }&lt;br /&gt;            }&lt;br /&gt;        }&lt;br /&gt;    }&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;function CustomLookup()&lt;br /&gt;{&lt;br /&gt;    var lookupSrc = "/" + ORG_UNIQUE_NAME + "/_controls/lookup/lookupmulti.aspx?class=&amp;objecttypes=" + lookupEntityTypeCode + "&amp;browse=0";&lt;br /&gt;    if(lookupId != null &amp;&amp; lookupId.DataValue != null &amp;&amp; lookupId.DataValue[0] != null)&lt;br /&gt;    {&lt;br /&gt;        lookupSrc = lookupSrc + "&amp;id=" + lookupId.DataValue[0].id;&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    var lookupItems = window.showModalDialog(lookupSrc, null);&lt;br /&gt;    if (lookupItems)  // This is the CRM internal JS funciton on \_static\_grid\action.js&lt;br /&gt;    {&lt;br /&gt;        if ( lookupItems.items.length &gt; 0 )&lt;br /&gt;        {&lt;br /&gt;            AssociateObjects( crmFormSubmit.crmFormSubmitObjectType.value, crmFormSubmit.crmFormSubmitId.value, lookupEntityTypeCode, lookupItems, true, null, relId);&lt;br /&gt;        }&lt;br /&gt;    }&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7208889-7629097642208702870?l=jianwang.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jianwang.blogspot.com/feeds/7629097642208702870/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7208889&amp;postID=7629097642208702870' title='15 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7208889/posts/default/7629097642208702870'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7208889/posts/default/7629097642208702870'/><link rel='alternate' type='text/html' href='http://jianwang.blogspot.com/2009/08/crm-filtered-lookup-multi.html' title='CRM Filtered Lookup Multi'/><author><name>Jim Wang</name><uri>http://www.blogger.com/profile/15963866631960791206</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='29' src='http://4.bp.blogspot.com/_-lOIedxo3AA/SaQ-RpTrHZI/AAAAAAAAANI/pQoZ77uYOe0/S220/Jim%27.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_-lOIedxo3AA/Snd8C1TC_NI/AAAAAAAAAPg/l44n6n0d6kI/s72-c/CRMExecuteEvent.png' height='72' width='72'/><thr:total>15</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7208889.post-8923161290818341900</id><published>2009-07-29T09:20:00.008+01:00</published><updated>2009-07-29T21:36:40.023+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ASP.Net'/><category scheme='http://www.blogger.com/atom/ns#' term='CRM 4.0'/><title type='text'>CRM 4.0 : Field Level Security on Print form</title><content type='html'>CRM 4.0 doesn't provide a true field level security, e.g.: If developers hide attributes/tabs for certain users using &lt;em&gt;crmForm.all.filed.style.display = "none"; &lt;/em&gt; These users can still see the field if they Print the record(CRM print preview). &lt;a href="https://connect.microsoft.com/dynamicssuggestions/feedback/ViewFeedback.aspx?FeedbackID=478114"&gt;I have submitted a feedback to Microsoft about it.&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;There are no supported way to achieve that, &lt;strong&gt;this workaround is not supported and it's not the true field level security!&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;The file you need to modify is: \CRMWeb\_forms\print\print.aspx&lt;br /&gt;Add the following code just before the 〈/html〉 tag.&lt;br /&gt;&lt;br /&gt;&lt;pre class="js" name="code"&gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;!--&lt;br /&gt;Field level security on Print form&lt;br /&gt;author: Jim Wang @ July 2009&lt;br /&gt;http://jianwang.blogspot.com&lt;br /&gt;--&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;script language="javascript"&amp;gt;&lt;br /&gt;var printFrame = document.getElementById("printMain");&lt;br /&gt;var printWindow = document.frames["printMain"];&lt;br /&gt;printFrame.onreadystatechange = function() &lt;br /&gt;{&lt;br /&gt;    if(window.opener &amp;&amp; printWindow.document.readyState == "complete")&lt;br /&gt;    {&lt;br /&gt;        //hide attributes&lt;br /&gt;        var allFields = opener.document.getElementsByTagName("TD");&lt;br /&gt;        for (var i = 0; i &amp;lt; allFields.length; i++)&lt;br /&gt;        {&lt;br /&gt;            var thisField = allFields[i];&lt;br /&gt;            if (thisField.style.display == "none")&lt;br /&gt;            {&lt;br /&gt;                printWindow.document.getElementById(thisField.id).style.display = "none";&lt;br /&gt;            }&lt;br /&gt;        }&lt;br /&gt;        &lt;br /&gt;        //hide tabs&lt;br /&gt;        var printTabs = printWindow.document.getElementsByTagName("DIV");&lt;br /&gt;        var openerTabs = opener.document.getElementsByTagName("LI");&lt;br /&gt;        for (var i = 0; i &amp;lt; openerTabs.length; i++)&lt;br /&gt;        {&lt;br /&gt;            var openerTab = openerTabs[i];&lt;br /&gt;            if (openerTab.className &amp;&amp; openerTab.className == "ms-crm-Tab")&lt;br /&gt;            {&lt;br /&gt;                if(opener.document.getElementById(openerTab.id).style.display == "none")&lt;br /&gt;                var printTab = printTabs[openerTab.id.replace("tab","").replace("Tab","")];&lt;br /&gt;                printTab.style.display = "none";&lt;br /&gt;            }&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;    }&lt;br /&gt;}&lt;br /&gt;&amp;lt;/script&amp;gt;&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/_-lOIedxo3AA/SnBGdeRpSOI/AAAAAAAAAPY/3FuQ2TK4rz4/s1600-h/printpreview.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 367px; height: 400px;" src="http://1.bp.blogspot.com/_-lOIedxo3AA/SnBGdeRpSOI/AAAAAAAAAPY/3FuQ2TK4rz4/s400/printpreview.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5363864628355483874" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7208889-8923161290818341900?l=jianwang.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jianwang.blogspot.com/feeds/8923161290818341900/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7208889&amp;postID=8923161290818341900' title='8 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7208889/posts/default/8923161290818341900'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7208889/posts/default/8923161290818341900'/><link rel='alternate' type='text/html' href='http://jianwang.blogspot.com/2009/07/crm-40-field-level-security-on-print.html' title='CRM 4.0 : Field Level Security on Print form'/><author><name>Jim Wang</name><uri>http://www.blogger.com/profile/15963866631960791206</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='29' src='http://4.bp.blogspot.com/_-lOIedxo3AA/SaQ-RpTrHZI/AAAAAAAAANI/pQoZ77uYOe0/S220/Jim%27.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_-lOIedxo3AA/SnBGdeRpSOI/AAAAAAAAAPY/3FuQ2TK4rz4/s72-c/printpreview.png' height='72' width='72'/><thr:total>8</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7208889.post-5609414012343662164</id><published>2009-05-06T20:47:00.006+01:00</published><updated>2009-05-07T22:40:33.145+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='IFrame'/><category scheme='http://www.blogger.com/atom/ns#' term='CRM 4.0'/><title type='text'>CRM 4.0 IFrame: Show Advanced Find Result View</title><content type='html'>There are many people asked about: How to show the Advanced Find result view in an IFrame? Instead of building a custom aspx page(dynamically passing parameters, see &lt;a href="http://social.microsoft.com/Forums/en-US/crm/thread/fc98391d-d8d5-4e2b-a595-1d525d475c84"&gt;Adi's solution&lt;/a&gt;), I have another method to share if you don't need passing parameters into the query.&lt;br /&gt;&lt;br /&gt;1. Build your Advanced Find query and save it, then copy the Shortcut.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/_-lOIedxo3AA/SgHpiuHCOaI/AAAAAAAAAO4/E4xHDJTCBn8/s1600-h/advancedfind.PNG"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 243px;" src="http://4.bp.blogspot.com/_-lOIedxo3AA/SgHpiuHCOaI/AAAAAAAAAO4/E4xHDJTCBn8/s400/advancedfind.PNG" border="0" alt=""id="BLOGGER_PHOTO_ID_5332800216485738914" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;2. Put a IFrame control on the Form, clear the "Restrict cross-frame scripting" checkbox.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/_-lOIedxo3AA/SgHpp-hpjkI/AAAAAAAAAPA/UJ2ihG1ah-0/s1600-h/advancedfind2.PNG"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 392px; height: 400px;" src="http://4.bp.blogspot.com/_-lOIedxo3AA/SgHpp-hpjkI/AAAAAAAAAPA/UJ2ihG1ah-0/s400/advancedfind2.PNG" border="0" alt=""id="BLOGGER_PHOTO_ID_5332800341151419970" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;3. Put the below code to the OnLoad() event, you need to change the IFRAME_view name and the iFrame.src (copy and paste from the step 1)&lt;br /&gt;&lt;br /&gt;&lt;pre class="js" name="code"&gt;&lt;br /&gt;&lt;br /&gt;var iFrame = crmForm.all.IFRAME_view;&lt;br /&gt;&lt;br /&gt;iFrame.src = SERVER_URL + "/advancedfind/advfind.aspx?etn=contact&amp;QueryId=%7b3882F0FA-2B3A-DE11-BFB8-0018FE7F3A64%7d&amp;ViewType=4230&amp;AutoRun=True";&lt;br /&gt;iFrame.attachEvent( "onreadystatechange" , Ready);&lt;br /&gt;&lt;br /&gt;function Ready()&lt;br /&gt;{&lt;br /&gt;  var iDoc = iFrame.contentWindow.document;&lt;br /&gt;  if(iDoc.getElementById("crmMenuBar") != null &amp;&amp; iDoc.getElementById("btnBack") != null)&lt;br /&gt;  {&lt;br /&gt;    iDoc.getElementById("crmMenuBar").style.display = "none"; // hide the top menu bar&lt;br /&gt;    iDoc.getElementById("btnBack").style.display = "none"; // hide the bottom BACK button&lt;br /&gt;  }&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/_-lOIedxo3AA/SgHsGZs_-PI/AAAAAAAAAPQ/xKdozmO--EI/s1600-h/advancedfind3.PNG"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 248px;" src="http://4.bp.blogspot.com/_-lOIedxo3AA/SgHsGZs_-PI/AAAAAAAAAPQ/xKdozmO--EI/s400/advancedfind3.PNG" border="0" alt=""id="BLOGGER_PHOTO_ID_5332803028506376434" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7208889-5609414012343662164?l=jianwang.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jianwang.blogspot.com/feeds/5609414012343662164/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7208889&amp;postID=5609414012343662164' title='11 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7208889/posts/default/5609414012343662164'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7208889/posts/default/5609414012343662164'/><link rel='alternate' type='text/html' href='http://jianwang.blogspot.com/2009/05/crm-40-iframe-show-advanced-find-result.html' title='CRM 4.0 IFrame: Show Advanced Find Result View'/><author><name>Jim Wang</name><uri>http://www.blogger.com/profile/15963866631960791206</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='29' src='http://4.bp.blogspot.com/_-lOIedxo3AA/SaQ-RpTrHZI/AAAAAAAAANI/pQoZ77uYOe0/S220/Jim%27.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_-lOIedxo3AA/SgHpiuHCOaI/AAAAAAAAAO4/E4xHDJTCBn8/s72-c/advancedfind.PNG' height='72' width='72'/><thr:total>11</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7208889.post-2300131730181391422</id><published>2009-05-06T14:00:00.003+01:00</published><updated>2009-05-06T21:14:36.805+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='IFrame'/><category scheme='http://www.blogger.com/atom/ns#' term='CRM 4.0'/><title type='text'>CRM 4.0 IFrame: Show Entity's Associated View</title><content type='html'>It's a common requirement to show entity's associated view(1:N, N:N) in IFrame, the below code works for both 1:N and N:N relationship, it also works on both On-Premise and IFD deployment. All you need to do is find out(IE Developer Toolbar) the ID of the associated link.&lt;br /&gt;&lt;br /&gt;The 1:N relationship needs these parameters in the request URL: &lt;span style="font-weight:bold;"&gt;oId, oType, security, tabSet&lt;/span&gt;&lt;br /&gt;The N:N relationship needs an extra parameter: &lt;span style="font-weight:bold;"&gt;roleOrd &lt;/span&gt;in the request URL, which has been involved in the code.&lt;br /&gt;&lt;br /&gt;&lt;pre class="js" name="code"&gt;&lt;br /&gt;&lt;br /&gt;var navId = "nav_new_new_myentity_account";&lt;br /&gt;&lt;br /&gt;if(document.getElementById(navId) != null)&lt;br /&gt;{&lt;br /&gt;  var tmp = document.getElementById(navId).onclick.toString();&lt;br /&gt;  tmp = tmp.substring(tmp.indexOf("'")+1, tmp.indexOf(";"));&lt;br /&gt;  var loadArea = tmp.substring(0, tmp.indexOf("'"));&lt;br /&gt;  var roleOrd =  (tmp.indexOf("roleOrd") == -1) ? -1 : tmp.substring( tmp.indexOf("roleOrd"), tmp.lastIndexOf("'")).replace("\\x3d", "=");&lt;br /&gt;  crmForm.all.IFRAME_view.src = (roleOrd == -1) ? GetFrameSrc(loadArea) : GetFrameSrc(loadArea) + "&amp;" + roleOrd;&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;function GetFrameSrc(tabSet)&lt;br /&gt;{&lt;br /&gt;  if (crmForm.ObjectId != null)&lt;br /&gt;  {&lt;br /&gt;    var id = crmForm.ObjectId;&lt;br /&gt;    var type = crmForm.ObjectTypeCode;&lt;br /&gt;    var security = crmFormSubmit.crmFormSubmitSecurity.value;&lt;br /&gt;    var path = document.location.pathname.substring(0, document.location.pathname.indexOf("edit.aspx")) + "areas.aspx?";&lt;br /&gt;&lt;br /&gt;    return (path + "oId=" + id + "&amp;oType=" + type + "&amp;security=" + security + "&amp;tabSet=" + tabSet);&lt;br /&gt;  }&lt;br /&gt;  else&lt;br /&gt;  {&lt;br /&gt;    return "about:blank";&lt;br /&gt;  }&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Enjoy it! ;-)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7208889-2300131730181391422?l=jianwang.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jianwang.blogspot.com/feeds/2300131730181391422/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7208889&amp;postID=2300131730181391422' title='23 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7208889/posts/default/2300131730181391422'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7208889/posts/default/2300131730181391422'/><link rel='alternate' type='text/html' href='http://jianwang.blogspot.com/2009/05/crm-40-iframe-show-entitys-associated.html' title='CRM 4.0 IFrame: Show Entity&apos;s Associated View'/><author><name>Jim Wang</name><uri>http://www.blogger.com/profile/15963866631960791206</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='29' src='http://4.bp.blogspot.com/_-lOIedxo3AA/SaQ-RpTrHZI/AAAAAAAAANI/pQoZ77uYOe0/S220/Jim%27.JPG'/></author><thr:total>23</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7208889.post-2097831194101287201</id><published>2009-04-29T14:12:00.002+01:00</published><updated>2009-04-29T16:24:41.160+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='JScript'/><category scheme='http://www.blogger.com/atom/ns#' term='CRM 4.0'/><title type='text'>Show both active and inactive records in the lookup view</title><content type='html'>I had a post about &lt;a href="http://jianwang.blogspot.com/2008/12/quick-find-for-inactive-records.html"&gt;how to return both active and inactive records in the Quick Find View&lt;/a&gt;.   &lt;br /&gt;People then ask: how to show both active and inactive/deactivated records in the entity's Lookup View?&lt;br /&gt;&lt;br /&gt;CRM MVP Batistuta Cai already had a post about &lt;a href="http://www.cnblogs.com/caims/archive/2009/02/12/1389279.html"&gt;a plug-in solution&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;If the lookup entity is a system entity, you can also use this technique:&lt;br /&gt;&lt;br /&gt;Let's start from an example: you have a custom entity call: MyEntity, you have setup a N:1 relationship between MyEntity and Opportunity, so the user can see an opportunity lookup field on the MyEntity form. Now you want to show users both active and inactive opportunities from that lookup field, all you need to do is put the below code into MyEntity.OnLoad() event:&lt;br /&gt;&lt;pre class="js" name="code"&gt;&lt;br /&gt;crmForm.all.new_opportunityid.lookupclass = "alllookups";&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;The lookup class are controlled via xml files in &lt;span style="font-weight:bold;"&gt;%ProgramFiles%\Microsoft CRM\Server\ApplicationFiles\&lt;/span&gt;&lt;br /&gt;If you take a look at the file: opportunity.xml, you may find a condition like: &amp;lt;condition attribute="statecode" operator="eq" value="0"/&amp;gt;&lt;br /&gt;&lt;br /&gt;you can remove the condition, and then use this class, e.g: &lt;span style="font-style:italic;"&gt;crmForm.all.new_opportunityid.lookupclass="opportunity";&lt;/span&gt; However it's very much unsupported way(by changing files)! But if you open the file: alllookups.xml, you may find that the opportunity(object type="3") entity doesn't have such condition, so we can use this class to get all opportunities.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7208889-2097831194101287201?l=jianwang.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jianwang.blogspot.com/feeds/2097831194101287201/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7208889&amp;postID=2097831194101287201' title='7 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7208889/posts/default/2097831194101287201'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7208889/posts/default/2097831194101287201'/><link rel='alternate' type='text/html' href='http://jianwang.blogspot.com/2009/04/show-both-active-and-inactive-records.html' title='Show both active and inactive records in the lookup view'/><author><name>Jim Wang</name><uri>http://www.blogger.com/profile/15963866631960791206</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='29' src='http://4.bp.blogspot.com/_-lOIedxo3AA/SaQ-RpTrHZI/AAAAAAAAANI/pQoZ77uYOe0/S220/Jim%27.JPG'/></author><thr:total>7</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7208889.post-2591733466578425189</id><published>2009-04-09T15:01:00.004+01:00</published><updated>2009-04-09T15:14:10.124+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='CRM Developer Toolkit'/><category scheme='http://www.blogger.com/atom/ns#' term='ISV'/><title type='text'>Customizing CRM by Using the Microsoft Dynamics CRM Developer Toolkit</title><content type='html'>Thanks Microsoft CRM E2 team to provide this useful &lt;a href="http://code.msdn.microsoft.com/E2DevTkt"&gt;Toolkit for CRM developers&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;To provide developers with the ability to create and manage on-premise CRM solutions in an integrated Visual Studio environment, the Microsoft Dynamics CRM Engineering for Enterprise (CRM E2) team initiated and sponsored the development of the Microsoft Dynamics CRM Developer Toolkit.  The toolkit includes two primary components:&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;The CRM Explorer&lt;/strong&gt;&lt;br /&gt;The CRM Explorer complements the CRM&lt;br /&gt;Solution Framework, providing the project factories required to open and build&lt;br /&gt;the solution from within Visual Studio. The Explorer manifests as a window&lt;br /&gt;within Visual Studio 2008 and provides direct access to CRM for creating and&lt;br /&gt;editing business units, security roles, and most importantly, entities. The CRM&lt;br /&gt;Explorer is linked to the solution framework which enables it to intelligently&lt;br /&gt;place generated code into the relevant solution framework project. &lt;br /&gt;&lt;br /&gt;&lt;strong&gt;The CRM Solution Framework&lt;/strong&gt;&lt;br /&gt;The CRM Solution Framework is a suite of Visual Studio C# projects that are coupled with CRM Entity customizations and wrapped with extensible MSBuild–based developer builds and daily builds. The Framework contains several “pre-canned” projects for the typical tasks that are required of developers when undertaking most Enterprise-level CRM projects. Several of these projects have an inheritance model that affords simple and intuitive augmentation, which can significantly reduce the time required to “jump start” development of new projects.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;img style="TEXT-ALIGN: center; MARGIN: 0px auto 10px; WIDTH: 400px; DISPLAY: block; HEIGHT: 262px; CURSOR: hand" id="BLOGGER_PHOTO_ID_5322693458711204050" border="0" alt="" src="http://2.bp.blogspot.com/_-lOIedxo3AA/Sd4Bf_bG0NI/AAAAAAAAAOw/KWAgsYbKpiA/s400/mscrmdevelopertoolkit.JPG" /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="font-size:130%;"&gt;Software Requirements&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;    Microsoft Dynamics CRM 4.0&lt;br /&gt;    Visual Studio 2008 Professional&lt;br /&gt;    Visual Studio Team Explorer&lt;br /&gt;    StyleCop 4.3 or later (full installation, including MSBuild Integration files)&lt;br /&gt;    .NET 3.5 SP1&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="font-size:130%;"&gt;Installation:&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;    1. Install the CRM Explorer(under folder \CRM Explorer\setup.exe)&lt;br /&gt;    2. Install the CRM Solution Framework(under folder \CRMSolutionFrameworkTemplate\Setup.cmd)&lt;br /&gt;    Use command prompt to install: &lt;strong&gt;&lt;span style="color:#000099;"&gt;&lt;span style="font-family:arial;"&gt;Setup.cmd {InstallDir} {ProjectName} {Project Long Name} {Organization Name}&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="font-size:130%;"&gt;Configuration:&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;    1. Load the project &lt;strong&gt;UKDynamics&lt;/strong&gt; first(Load project normally), then build the solution.&lt;br /&gt;    2. Load the project &lt;strong&gt;MyCrmSolution&lt;/strong&gt;(Load project normally), it will referce the UKDynamics class on the step 1. &lt;strong&gt;*[1] *[2]&lt;br /&gt;&lt;/strong&gt;    3. From Visual Studio menu bar, click [Tools], then select the [Connect to CRM Server...], give the information then click [OK] button;&lt;br /&gt;    4.From Visual Studio menu bar, click [View], then select the [Other Windows]&gt;&gt;[CRM Explorer] &lt;strong&gt;*[3]&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;    *[1]&lt;/strong&gt; If you get warnings like: &lt;span style="font-size:85%;color:#ff0000;"&gt;&lt;em&gt;The referenced component 'UKDynamics.Instrumentation' could not be found. &lt;/em&gt;&lt;/span&gt;Then you need to re-add the dll reference(UKDynamics.Instrumentation.dll) from UKDynamics\bin folder.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;    *[2]&lt;/strong&gt; If you get errors like: &lt;em&gt;&lt;span style="color:#ff0000;"&gt;&lt;span style="font-size:85%;"&gt;The command ""C:\Program Files\Microsoft SDKs\Windows\v6.0A\bin\gacutil" /i "C:\Projects\MyCrmSolution\SourceCode\MyCrmSolution\Core\Configuration\bin\Debug\MyCrmSolution.Core.Configuration.dll" /f" exited with code 1. Configuration&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/em&gt;It because all assemblies are delay-signed, you can turn off the strong-name verification on the dev environment by using the SN tool from Visual Studio 2008 Command Prompt:&lt;strong&gt;&lt;span style="color:#000099;"&gt; &lt;span style="font-family:arial;"&gt;SN.exe -Vr *,*&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/strong&gt;then run &lt;span style="color:#000099;"&gt;&lt;strong&gt;&lt;span style="font-family:arial;"&gt;IISRESET.exe&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;strong&gt;    *[3]&lt;/strong&gt; If you get errors when expand the item, like:&lt;br /&gt;&lt;span style="font-size:85%;color:#ff0000;"&gt;&lt;em&gt;Client found response content type of 'text/html; charset=utf-8, but expected 'text/xml'. HttpException 1310&lt;br /&gt;Exception message: Could not load file or assembly 'MyCrmSolution.Core.BusinessProcesses, Version=1.1.0.0, Culture=neutral, PublicKeyToken=2c1937e0898110b2' or one of its dependencies. Strong name signature could not be verified. The assembly may have been tampered with, or it was delay signed but not fully signed with the correct private key. (Exception from HRESULT: 0x80131045)&lt;br /&gt;&lt;/em&gt;&lt;/span&gt;It is the same reason and solution with *[2]&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;&lt;strong&gt;Note&lt;/strong&gt;:&lt;/span&gt; The Toolkit is based on components that were initially developed within the Dynamics CRM MCS team in the UK subsidiary. Those components have been refined over a number of UK-based global engagements.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;&lt;strong&gt;Important&lt;/strong&gt;:&lt;/span&gt; The Microsoft Dynamics CRM Developer Toolkit currently supports customization of on-premise CRM deployments only. This Toolkit and the accompanying documentation are unsupported and are being provided “as is” by the CRM E2 team to assist developers with managing and extending their on-premise Microsoft Dynamics CRM implementations.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7208889-2591733466578425189?l=jianwang.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jianwang.blogspot.com/feeds/2591733466578425189/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7208889&amp;postID=2591733466578425189' title='9 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7208889/posts/default/2591733466578425189'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7208889/posts/default/2591733466578425189'/><link rel='alternate' type='text/html' href='http://jianwang.blogspot.com/2009/04/customizing-crm-by-using-microsoft.html' title='Customizing CRM by Using the Microsoft Dynamics CRM Developer Toolkit'/><author><name>Jim Wang</name><uri>http://www.blogger.com/profile/15963866631960791206</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='29' src='http://4.bp.blogspot.com/_-lOIedxo3AA/SaQ-RpTrHZI/AAAAAAAAANI/pQoZ77uYOe0/S220/Jim%27.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_-lOIedxo3AA/Sd4Bf_bG0NI/AAAAAAAAAOw/KWAgsYbKpiA/s72-c/mscrmdevelopertoolkit.JPG' height='72' width='72'/><thr:total>9</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7208889.post-5166777594628577401</id><published>2009-03-27T17:52:00.011Z</published><updated>2009-04-05T12:17:07.886+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Report'/><category scheme='http://www.blogger.com/atom/ns#' term='CRM 4.0'/><category scheme='http://www.blogger.com/atom/ns#' term='SQL'/><title type='text'>Get Entity/Attribute's Display Name from CRM database</title><content type='html'>&lt;a href="http://4.bp.blogspot.com/_-lOIedxo3AA/Sc0XXzuhKDI/AAAAAAAAAOQ/_u9GTvUAdD8/s1600-h/displayname.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 146px;" src="http://4.bp.blogspot.com/_-lOIedxo3AA/Sc0XXzuhKDI/AAAAAAAAAOQ/_u9GTvUAdD8/s400/displayname.JPG" alt="" id="BLOGGER_PHOTO_ID_5317932432784173106" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;The Display Name for CRM Entity/Attribute is always a special case. In CRM 3.0, the Display Name is saved in the table: &lt;strong&gt;OrganizationUIBase&lt;/strong&gt;, column: &lt;strong&gt;FieldXml&lt;/strong&gt;. To get the Display Name for each attributes isn't an easy job.  My approach was transfer the FieldXml column(NVARCHAR) into XML type, then get data from there. Here's the code I'd like to show about how to get the Display Name from CRM 3.0 (I suppose that you only want to see entity Account and Contact):&lt;br /&gt;&lt;br /&gt;&lt;pre class="sql" name="code"&gt;&lt;br /&gt;&lt;br /&gt;-- Get the display name from xml field&lt;br /&gt;USE [Contoso_MSCRM]&lt;br /&gt;GO&lt;br /&gt;SELECT CONVERT(XML, REPLACE(CONVERT(NVARCHAR(MAX), O.FieldXml),'' ,'')) AS XmlField&lt;br /&gt;INTO #temp1 FROM OrganizationUIBase O&lt;br /&gt;WHERE NOT EXISTS(SELECT 1 FROM OrganizationUIBase WHERE Version&gt;O.Version AND ObjectTypeCode=O.ObjectTypeCode)&lt;br /&gt;SELECT DISTINCT&lt;br /&gt;   t2.x.value('(../../@objecttypecode)[1]','int') AS ObjectTypeCode,&lt;br /&gt;   t2.x.value('(../../@name)[1]','nvarchar(100)') AS EntityName,&lt;br /&gt;   t2.x.value('@name', 'nvarchar(50)') AS AttributeName,&lt;br /&gt;   t2.x.value('(displaynames/displayname/@description)[1]','nvarchar(100)') AS DisplayName&lt;br /&gt;INTO #temp2&lt;br /&gt;FROM #temp1 AS t1 CROSS APPLY t1.XmlField.nodes('/entity/fields/field') AS t2(x)&lt;br /&gt;&lt;br /&gt;-- Join the metadata database&lt;br /&gt;USE [Contoso_METABASE]&lt;br /&gt;GO&lt;br /&gt;SELECT&lt;br /&gt;   Entity.Name AS EntityName,&lt;br /&gt;   Attribute.Name AS AttributeName,&lt;br /&gt;   #temp2.DisplayName AS AttributeDisplayName,&lt;br /&gt;FROM Attribute&lt;br /&gt;   INNER JOIN Entity ON Attribute.EntityId = Entity.EntityId&lt;br /&gt;   INNER JOIN #temp2 ON #temp2.AttributeName = Attribute.Name AND #temp2.ObjectTypeCode = Entity.ObjectTypeCode&lt;br /&gt;WHERE EntityName IN ('Account', 'Contact')&lt;br /&gt;ORDER BY  EntityName, AttributeName&lt;br /&gt;&lt;br /&gt;DROP TABLE #temp1&lt;br /&gt;DROP TABLE #temp2&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;In CRM 4.0, because it supports multi languages, so the database has been re-designed: the FieldXml field has been abandoned. Instead, Microsoft uses a new table: &lt;strong&gt;LocalizedLabelView &lt;/strong&gt;to save the Entity/Attribute's Display Name, it's much easy to get the Display Name, same example here (English version, the LanguageId is 1033):&lt;br /&gt;&lt;br /&gt;&lt;pre class="sql" name="code"&gt;&lt;br /&gt;&lt;br /&gt;USE Contoso_MSCRM&lt;br /&gt;GO&lt;br /&gt;&lt;br /&gt;SELECT  EntityView.Name AS EntityName, LocalizedLabelView_1.Label AS EntityDisplayName,&lt;br /&gt;       AttributeView.Name AS AttributeName, LocalizedLabelView_2.Label AS AttributeDisplayName&lt;br /&gt;FROM    LocalizedLabelView AS LocalizedLabelView_2 INNER JOIN&lt;br /&gt;       AttributeView ON LocalizedLabelView_2.ObjectId = AttributeView.AttributeId RIGHT OUTER JOIN&lt;br /&gt;       EntityView INNER JOIN&lt;br /&gt;       LocalizedLabelView AS LocalizedLabelView_1 ON EntityView.EntityId = LocalizedLabelView_1.ObjectId ON&lt;br /&gt;       AttributeView.EntityId = EntityView.EntityId&lt;br /&gt;WHERE   LocalizedLabelView_1.ObjectColumnName = 'LocalizedName'&lt;br /&gt; AND LocalizedLabelView_2.ObjectColumnName = 'DisplayName'&lt;br /&gt; AND LocalizedLabelView_1.LanguageId = '1033'&lt;br /&gt; AND LocalizedLabelView_2.LanguageId = '1033'&lt;br /&gt; AND EntityView.Name IN ('Account','Contact')&lt;br /&gt;ORDER BY EntityName, AttributeName&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7208889-5166777594628577401?l=jianwang.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jianwang.blogspot.com/feeds/5166777594628577401/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7208889&amp;postID=5166777594628577401' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7208889/posts/default/5166777594628577401'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7208889/posts/default/5166777594628577401'/><link rel='alternate' type='text/html' href='http://jianwang.blogspot.com/2009/03/get-entityattributes-display-name-from.html' title='Get Entity/Attribute&apos;s Display Name from CRM database'/><author><name>Jim Wang</name><uri>http://www.blogger.com/profile/15963866631960791206</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='29' src='http://4.bp.blogspot.com/_-lOIedxo3AA/SaQ-RpTrHZI/AAAAAAAAANI/pQoZ77uYOe0/S220/Jim%27.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_-lOIedxo3AA/Sc0XXzuhKDI/AAAAAAAAAOQ/_u9GTvUAdD8/s72-c/displayname.JPG' height='72' width='72'/><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7208889.post-4327537725588103057</id><published>2009-03-21T15:38:00.006Z</published><updated>2009-04-03T15:28:14.257+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ISV'/><category scheme='http://www.blogger.com/atom/ns#' term='Data Audit'/><title type='text'>Introduce a Data Audit solution for Microsoft Dynamics CRM</title><content type='html'>I'm pleased to introduce a Data Audit solution for Microsoft Dynamics CRM:&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;What it does?&lt;/strong&gt;&lt;br /&gt;Data Audit add-on can record the fact: Who did What at When. For example: you want to audit changes for the field: Account.EmailAddress1, all you need to do is just 3 clicks! The add-on will record the entity name, audit field, record id, original data, modified data, modified time, modified by information. Those audit histories for this record will associate with the record(for applicable entities), furthermore, you can also see all audit histories in one place.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;What it is?&lt;/strong&gt;&lt;br /&gt;It is an ISV solution to integrate to Microsoft Dynamics CRM seamlessly, with same interface and user experience.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;What does it support?&lt;/strong&gt;&lt;br /&gt;Data Audit 1.0 supports both On-Premise and IFD deployment, Stand-Along and Web-Cluster server structure, and Multi-Tenants. It supports both system entity/attribute and custom entity/attribute.&lt;br /&gt;* The 1.0 version of Data Audit supports 32bit English Version Microsoft Dynamics CRM 4.0.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;How it works?&lt;/strong&gt;&lt;br /&gt;See this 2 minutes demo video:&lt;br /&gt;&lt;br /&gt;&lt;embed name="DA" src="http://mscrmpluginsdemo.googlepages.com/DA.swf" width="640" height="446" bgcolor="#1a1a1a" quality="best" allowScriptAccess="always" allowFullScreen="true" scale="showall" flashVars="autostart=false" pluginspage="http://www.macromedia.com/shockwave/download/index.cgi?P1_Prod_Version=ShockwaveFlash"&gt;&lt;/embed&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Please &lt;a href="mailto:info@mscrm-plugins.com?subject=Data%20Audit%20for%20Microsoft%20Dynamics%20CRM%204.0"&gt;email us&lt;/a&gt; to get an evaluation license(30 days full function).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7208889-4327537725588103057?l=jianwang.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jianwang.blogspot.com/feeds/4327537725588103057/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7208889&amp;postID=4327537725588103057' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7208889/posts/default/4327537725588103057'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7208889/posts/default/4327537725588103057'/><link rel='alternate' type='text/html' href='http://jianwang.blogspot.com/2009/03/im-pleased-to-introduce-data-audit.html' title='Introduce a Data Audit solution for Microsoft Dynamics CRM'/><author><name>Jim Wang</name><uri>http://www.blogger.com/profile/15963866631960791206</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='29' src='http://4.bp.blogspot.com/_-lOIedxo3AA/SaQ-RpTrHZI/AAAAAAAAANI/pQoZ77uYOe0/S220/Jim%27.JPG'/></author><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7208889.post-7312171747382922349</id><published>2009-03-21T13:57:00.007Z</published><updated>2009-03-21T14:35:11.523Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='Microsoft MVP'/><title type='text'>MVP Summit 2009 @ Seattle - Meet the CRM MVPs</title><content type='html'>It's a great summit and nice to meet CRM team and MVPs.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/_-lOIedxo3AA/ScT4q-mZ6II/AAAAAAAAANo/Be1LflqITY4/s1600-h/MVP1.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 266px;" src="http://3.bp.blogspot.com/_-lOIedxo3AA/ScT4q-mZ6II/AAAAAAAAANo/Be1LflqITY4/s400/MVP1.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5315646877446301826" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Meet the famous CRM authors: Jim Steger and Mike Snyder&lt;br /&gt;&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/_-lOIedxo3AA/ScT4uod8eYI/AAAAAAAAANw/Cc2_tjHgUpU/s1600-h/MVP2.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 266px;" src="http://1.bp.blogspot.com/_-lOIedxo3AA/ScT4uod8eYI/AAAAAAAAANw/Cc2_tjHgUpU/s400/MVP2.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5315646940224715138" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;MVP Darren Liu and me eatting the Red King Crab...&lt;br /&gt;&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/_-lOIedxo3AA/ScT58psYXyI/AAAAAAAAAN4/XBEl8kRgpNo/s1600-h/Jim3.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 240px;" src="http://1.bp.blogspot.com/_-lOIedxo3AA/ScT58psYXyI/AAAAAAAAAN4/XBEl8kRgpNo/s400/Jim3.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5315648280583495458" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Jim Wang with the coffee which made by the world's first Starbucks @ Seattle, US&lt;br /&gt;&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/_-lOIedxo3AA/ScT6lBpVtJI/AAAAAAAAAOA/GN0H15ep138/s1600-h/Jim2.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 268px; height: 400px;" src="http://4.bp.blogspot.com/_-lOIedxo3AA/ScT6lBpVtJI/AAAAAAAAAOA/GN0H15ep138/s400/Jim2.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5315648974207956114" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Jim Wang with his baby Niu&lt;br /&gt;&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/_-lOIedxo3AA/ScT6_7bGpDI/AAAAAAAAAOI/Sok94Y5BRhM/s1600-h/Jim1.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 268px;" src="http://4.bp.blogspot.com/_-lOIedxo3AA/ScT6_7bGpDI/AAAAAAAAAOI/Sok94Y5BRhM/s400/Jim1.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5315649436394103858" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7208889-7312171747382922349?l=jianwang.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jianwang.blogspot.com/feeds/7312171747382922349/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7208889&amp;postID=7312171747382922349' title='6 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7208889/posts/default/7312171747382922349'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7208889/posts/default/7312171747382922349'/><link rel='alternate' type='text/html' href='http://jianwang.blogspot.com/2009/03/mvp-summit-2009-seattle-meet-crm-mvps.html' title='MVP Summit 2009 @ Seattle - Meet the CRM MVPs'/><author><name>Jim Wang</name><uri>http://www.blogger.com/profile/15963866631960791206</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='29' src='http://4.bp.blogspot.com/_-lOIedxo3AA/SaQ-RpTrHZI/AAAAAAAAANI/pQoZ77uYOe0/S220/Jim%27.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_-lOIedxo3AA/ScT4q-mZ6II/AAAAAAAAANo/Be1LflqITY4/s72-c/MVP1.jpg' height='72' width='72'/><thr:total>6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7208889.post-4998720802997071762</id><published>2009-01-25T19:27:00.007Z</published><updated>2009-01-25T22:14:42.771Z</updated><title type='text'>Happy Chinese New Year! 2009 - The Year of The Ox</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_-lOIedxo3AA/SXy9cWRH71I/AAAAAAAAANA/XaOS67zvh8w/s1600-h/ox.JPG"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 300px;" src="http://3.bp.blogspot.com/_-lOIedxo3AA/SXy9cWRH71I/AAAAAAAAANA/XaOS67zvh8w/s400/ox.JPG" border="0" alt=""id="BLOGGER_PHOTO_ID_5295315556592250706" /&gt;&lt;/a&gt;&lt;br /&gt;My dear friends, happy &lt;a href="http://jianwang.blogspot.com/2008/02/happy-chinese-new-year-2008-year-of-rat.html"&gt;Chinese New Year&lt;/a&gt;! 2009 - The Year of The Ox ('牛'), and hopefully it could help the economics!!! ;-)&lt;br /&gt;&lt;br /&gt;Cheers,&lt;br /&gt;Jim&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7208889-4998720802997071762?l=jianwang.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jianwang.blogspot.com/feeds/4998720802997071762/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7208889&amp;postID=4998720802997071762' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7208889/posts/default/4998720802997071762'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7208889/posts/default/4998720802997071762'/><link rel='alternate' type='text/html' href='http://jianwang.blogspot.com/2009/01/happy-chinese-new-year-2009-year-of-ox.html' title='Happy Chinese New Year! 2009 - The Year of The Ox'/><author><name>Jim Wang</name><uri>http://www.blogger.com/profile/15963866631960791206</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='29' src='http://4.bp.blogspot.com/_-lOIedxo3AA/SaQ-RpTrHZI/AAAAAAAAANI/pQoZ77uYOe0/S220/Jim%27.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_-lOIedxo3AA/SXy9cWRH71I/AAAAAAAAANA/XaOS67zvh8w/s72-c/ox.JPG' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7208889.post-8359419256727667043</id><published>2009-01-16T11:07:00.016Z</published><updated>2009-04-11T09:36:59.913+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Picklist'/><category scheme='http://www.blogger.com/atom/ns#' term='JScript'/><category scheme='http://www.blogger.com/atom/ns#' term='CRM 4.0'/><title type='text'>CRM 4.0: Checkbox style Multi-Select Picklist</title><content type='html'>&lt;a href="http://2.bp.blogspot.com/_-lOIedxo3AA/SXBymQg6L7I/AAAAAAAAAMw/Wfb2U3bwdWU/s1600-h/checkboxpicklist.png"&gt;&lt;img id="BLOGGER_PHOTO_ID_5291855563753926578" style="margin: 0px auto 10px; display: block; width: 345px; height: 95px; text-align: center;" alt="" src="http://2.bp.blogspot.com/_-lOIedxo3AA/SXBymQg6L7I/AAAAAAAAAMw/Wfb2U3bwdWU/s400/checkboxpicklist.png" border="0" /&gt;&lt;/a&gt;CRM 4.0 doesn't have many out-of-box user controls, e.g: a mulit-select picklist. The standard CRM picklist can only save one value in the database, it's not easy to extend this functionality, in addition, you have to deal with the Advanced Find feature.&lt;br /&gt;&lt;br /&gt;You can make a picklist multi-selectable by enable the picklist mulitple attribute , e.g: crmForm.all.new_picklist.multiple = true; And then save the selected values somewhere else. However, it does not very impressive the user because the user has to use the CTRL key to select options, which is not user-friendly (Thanks for Alastair Westland (PM @ Parity) who work with me to improve the interface design:)&lt;br /&gt;&lt;br /&gt;The script below will draw a checkbox style mulit-select picklist control on the CRM form, and then get options from the real picklist attribute. So how to use it?&lt;br /&gt;&lt;br /&gt;1. Create a standard picklist attribute with all options in CRM, put it on the CRM Form. e.g: new_picklist;&lt;br /&gt;2. Create another nvarchar attribute in CRM to save the selected text, put it on the CRM Form and hide the label. e.g: new_picklistvalue;&lt;br /&gt;3. Put the following script in the Form.OnLoad() event.&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;&lt;strong&gt;*NOTE: There is a &lt;span style="color: rgb(0, 0, 153);"&gt;'br'&lt;/span&gt; flag(&lt;span style="color: rgb(0, 0, 153);"&gt;var addBr = document.createElement(...)&lt;/span&gt; ) just been ignord by blogspot, please replace it when you paste the code!!!&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre class="js" name="code"&gt;&lt;br /&gt;/*&lt;br /&gt;Checkbox style Multi-Select Picklist&lt;br /&gt;author: Jim Wang @ January 2009&lt;br /&gt;http://jianwang.blogspot.com&lt;br /&gt;*/&lt;br /&gt;&lt;br /&gt;// PL - the picklist attribute; PLV - used to save selected picklist values&lt;br /&gt;var PL = crmForm.all.new_picklist;&lt;br /&gt;var PLV = crmForm.all.new_picklistvalue;&lt;br /&gt;&lt;br /&gt;if( PL != null &amp;amp;&amp;amp; PLV != null )&lt;br /&gt;{&lt;br /&gt;  PL.style.display = "none";&lt;br /&gt;  PLV.style.display = "none";&lt;br /&gt;&lt;br /&gt;  // Create a DIV container&lt;br /&gt;  var addDiv = document.createElement("&amp;lt;div style='overflow-y:auto; height:80px; border:1px #6699cc solid; background-color:#ffffff;' /&amp;gt;");&lt;br /&gt;  PL.parentNode.appendChild(addDiv);&lt;br /&gt;&lt;br /&gt;  // Initialise checkbox controls&lt;br /&gt;  for( var i = 1; i &amp;lt; PL.options.length; i++ )&lt;br /&gt;  {&lt;br /&gt;    var pOption = PL.options[i];&lt;br /&gt;    if( !IsChecked( pOption.text ) )&lt;br /&gt;      var addInput = document.createElement("&amp;lt;input type='checkbox' style='border:none; width:25px; align:left;' /&amp;gt;" );&lt;br /&gt;    else&lt;br /&gt;      var addInput = document.createElement("&amp;lt;input type='checkbox' checked='checked' style='border:none; width:25px; align:left;' /&amp;gt;" );&lt;br /&gt;&lt;br /&gt;    var addLabel = document.createElement( "&amp;lt;label /&amp;gt;");&lt;br /&gt;    addLabel.innerText = pOption.text;&lt;br /&gt;&lt;br /&gt;    var addBr = document.createElement( "&amp;lt;br /&amp;gt;"); //it's a 'br' flag&lt;br /&gt;&lt;br /&gt;    PL.nextSibling.appendChild(addInput);&lt;br /&gt;    PL.nextSibling.appendChild(addLabel);&lt;br /&gt;    PL.nextSibling.appendChild(addBr);&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;  // Check if it is selected&lt;br /&gt;  function IsChecked( pText )&lt;br /&gt;  {&lt;br /&gt;    if(PLV.value != "")&lt;br /&gt;    {&lt;br /&gt;      var PLVT = PLV.value.split("||");&lt;br /&gt;      for( var i = 0; i &amp;lt; PLVT.length; i++ )&lt;br /&gt;      {&lt;br /&gt;        if( PLVT[i] == pText )&lt;br /&gt;          return true;&lt;br /&gt;      }&lt;br /&gt;    }&lt;br /&gt;    return false;&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;  // Save the selected text, this filed can also be used in Advanced Find&lt;br /&gt;  crmForm.attachEvent( "onsave" , OnSave);&lt;br /&gt;  function OnSave()&lt;br /&gt;  {&lt;br /&gt;    PLV.value = "";&lt;br /&gt;    var getInput = PL.nextSibling.getElementsByTagName("input");&lt;br /&gt;&lt;br /&gt;    for( var i = 0; i &amp;lt; getInput.length; i++ )&lt;br /&gt;    {&lt;br /&gt;      if( getInput[i].checked)&lt;br /&gt;      {&lt;br /&gt;        PLV.value += getInput[i].nextSibling.innerText + "||";&lt;br /&gt;      }&lt;br /&gt;    }&lt;br /&gt;  }&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Note: Please be aware of this is an unsupported customization.&lt;/strong&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7208889-8359419256727667043?l=jianwang.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jianwang.blogspot.com/feeds/8359419256727667043/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7208889&amp;postID=8359419256727667043' title='50 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7208889/posts/default/8359419256727667043'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7208889/posts/default/8359419256727667043'/><link rel='alternate' type='text/html' href='http://jianwang.blogspot.com/2009/01/crm-40-checkbox-style-multi-select.html' title='CRM 4.0: Checkbox style Multi-Select Picklist'/><author><name>Jim Wang</name><uri>http://www.blogger.com/profile/15963866631960791206</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='29' src='http://4.bp.blogspot.com/_-lOIedxo3AA/SaQ-RpTrHZI/AAAAAAAAANI/pQoZ77uYOe0/S220/Jim%27.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_-lOIedxo3AA/SXBymQg6L7I/AAAAAAAAAMw/Wfb2U3bwdWU/s72-c/checkboxpicklist.png' height='72' width='72'/><thr:total>50</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7208889.post-1844936326668354912</id><published>2009-01-11T11:18:00.003Z</published><updated>2009-01-11T11:26:30.356Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='License'/><category scheme='http://www.blogger.com/atom/ns#' term='CRM 4.0'/><title type='text'>CRM 4.0 External Connector License</title><content type='html'>It's very common to extend CRM to external users, however I saw many customers ask if they need license to do something. A External Connector License is used on:&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Available for&lt;/strong&gt;&lt;br /&gt;• Professional Server&lt;br /&gt;• Enterprise Server&lt;br /&gt;&lt;strong&gt;Access License only – no additional software/licenses included&lt;br /&gt;Extends access to external users (e.g. Partners, Customers, Suppliers)&lt;br /&gt;Scenarios*&lt;/strong&gt;&lt;br /&gt;• Create new activities in CRM, such as a case via a portal&lt;br /&gt;• Update information in CRM, such as contact information via a portal&lt;br /&gt;• Fill orders, or update case status via a portal&lt;br /&gt;* Access via Dynamics CRM Client technology requires a CAL&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;According to the &lt;a href="https://mbs.microsoft.com/downloads/partner/CRM/PriceLists/MD_CRM40_Pricing_Licensing_Guide_June08.doc"&gt;Microsoft Dynamics® CRM 4.0 Licensing &amp;amp; Pricing Guide&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;The Microsoft Dynamics CRM 4.0 External Connector enables customers to extend Microsoft Dynamics CRM to their external users such as customers, partners, suppliers, and end users who access a copy of the server software (for which a license was acquired), through any application/graphical user interface (GUI), other than the Microsoft Dynamics CRM client. “External Users” are users who are not either (i) your or your affiliates’ employees, or (ii) your or your affiliates’ onsite contractors or agents, External users also does not include hosted-software service users, such as those already licensing via the Microsoft Service Provider License (SPLA).&lt;br /&gt;&lt;br /&gt;An External Connector must be purchased for each server that hosts an application that provides external access to Microsoft Dynamics CRM 4.0 data as described above. External users should not be using the Microsoft Dynamics CRM 4.0 applications &amp;amp; GUIs directly. The alternative is for every external user to acquire a CAL&lt;br /&gt;&lt;br /&gt;For the Microsoft Dynamics CRM Professional Server and Enterprise Server, there are 3 External Connector functionalities:&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;External Connector&lt;/strong&gt; – The full use External Connector provides external users with full read-write access to Microsoft Dynamics CRM 4.0 data, such as that provided through any application/graphical user interface. The Full Use External Connector will appear on price lists as the Dyn CRM Extrnl Con, and consists of both the Limited External Connector and the Full Use Additive External Connector combined to provide full use capability.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Limited External Connector&lt;/strong&gt; – The Limited External Connector provides external users with read-only access to Microsoft Dynamics CRM 4.0 data, such as described above. The Limited External Connector will appear on the price lists as the Dyn CRM Ltd Extrnl Con.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Full Use Additive External Connector&lt;/strong&gt; – The Full Use Additive External Connector provides external users with write-access to Microsoft Dynamics CRM 4.0 data such as described above, and may only be purchased to supplement a Limited External Connector with write-access capability. The Full Use Additive External connector will appear on price lists as the Dyn CRM Additve ExtrnlCon.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/_-lOIedxo3AA/SWnW7AV_7tI/AAAAAAAAAMo/WWUcbMq-XmU/s1600-h/crm+external+connector.png"&gt;&lt;img id="BLOGGER_PHOTO_ID_5289995546516254418" style="DISPLAY: block; MARGIN: 0px auto 10px; WIDTH: 400px; CURSOR: hand; HEIGHT: 121px; TEXT-ALIGN: center" alt="" src="http://3.bp.blogspot.com/_-lOIedxo3AA/SWnW7AV_7tI/AAAAAAAAAMo/WWUcbMq-XmU/s400/crm+external+connector.png" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;External Connectors and Limited External Connectors may be mixed within an environment.&lt;br /&gt;&lt;br /&gt;The number of Full Use Additive External Connectors may never exceed the total number of Limited External Connectors used within an organization.&lt;br /&gt;&lt;br /&gt;An External Connector is a license only, and does not include any physical software components, and does not include licensing for any other Microsoft products. If external scenarios integrate with Microsoft SQL Server, Microsoft Office SharePoint or any other product license rights for these must be established separately.&lt;br /&gt;&lt;br /&gt;For more information on Microsoft Dynamics CRM 4.0 Use Rights under Volume Licensing: &lt;a href="http://www.microsoftvolumelicensing.com/userights/"&gt;http://www.microsoftvolumelicensing.com/userights/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Partners and Customers should work with their Microsoft Licensing Specialist or local Microsoft Representative to ensure their licensing compliance.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7208889-1844936326668354912?l=jianwang.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jianwang.blogspot.com/feeds/1844936326668354912/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7208889&amp;postID=1844936326668354912' title='13 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7208889/posts/default/1844936326668354912'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7208889/posts/default/1844936326668354912'/><link rel='alternate' type='text/html' href='http://jianwang.blogspot.com/2009/01/crm-40-external-connector-license.html' title='CRM 4.0 External Connector License'/><author><name>Jim Wang</name><uri>http://www.blogger.com/profile/15963866631960791206</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='29' src='http://4.bp.blogspot.com/_-lOIedxo3AA/SaQ-RpTrHZI/AAAAAAAAANI/pQoZ77uYOe0/S220/Jim%27.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_-lOIedxo3AA/SWnW7AV_7tI/AAAAAAAAAMo/WWUcbMq-XmU/s72-c/crm+external+connector.png' height='72' width='72'/><thr:total>13</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7208889.post-6008964534019180994</id><published>2008-12-11T20:00:00.006Z</published><updated>2009-01-11T17:56:50.937Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='JScript'/><category scheme='http://www.blogger.com/atom/ns#' term='CRM 4.0'/><title type='text'>CRM 4.0 Get attribute value from entity's GUID using JScript</title><content type='html'>Recently I have been asked many times about how to get attribute value from entity's GUID using JScript?&lt;br /&gt;The following code demonstrate how to get a user's internalemailaddress by giving user's GUID.&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#ff0000;"&gt;*It has been modified to support multi-tenent deployment.&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;pre class="js" name="code"&gt;&lt;br /&gt;&lt;br /&gt;alert(GetAttributeValueFromID("systemuser", "09DF2AB7-E16D-DD11-88F3-0003FF884968", "internalemailaddress", "systemuserid"));&lt;br /&gt;&lt;br /&gt;function GetAttributeValueFromID(sEntityName, sGUID, sAttributeName, sID)&lt;br /&gt;{&lt;br /&gt;    var xml = "" +&lt;br /&gt;    "&amp;lt;?xml version=\"1.0\" encoding=\"utf-8\"?&amp;gt;" +&lt;br /&gt;    "&amp;lt;soap:Envelope xmlns:soap=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\"&amp;gt;" +&lt;br /&gt;    GenerateAuthenticationHeader() +&lt;br /&gt;    "  &amp;lt;soap:Body&amp;gt;" +&lt;br /&gt;    "    &amp;lt;RetrieveMultiple xmlns=\"http://schemas.microsoft.com/crm/2007/WebServices\"&amp;gt;" +&lt;br /&gt;    "      &amp;lt;query xmlns:q1=\"http://schemas.microsoft.com/crm/2006/Query\" xsi:type=\"q1:QueryExpression\"&amp;gt;" +&lt;br /&gt;    "        &amp;lt;q1:EntityName&amp;gt;"+sEntityName+"&amp;lt;/q1:EntityName&amp;gt;" +&lt;br /&gt;    "        &amp;lt;q1:ColumnSet xsi:type=\"q1:ColumnSet\"&amp;gt;" +&lt;br /&gt;    "          &amp;lt;q1:Attributes&amp;gt;" +&lt;br /&gt;    "            &amp;lt;q1:Attribute&amp;gt;"+sAttributeName+"&amp;lt;/q1:Attribute&amp;gt;" +&lt;br /&gt;    "          &amp;lt;/q1:Attributes&amp;gt;" +&lt;br /&gt;    "        &amp;lt;/q1:ColumnSet&amp;gt;" +&lt;br /&gt;    "        &amp;lt;q1:Distinct&amp;gt;false&amp;lt;/q1:Distinct&amp;gt;" +&lt;br /&gt;    "        &amp;lt;q1:PageInfo&amp;gt;" +&lt;br /&gt;    "          &amp;lt;q1:PageNumber&amp;gt;1&amp;lt;/q1:PageNumber&amp;gt;" +&lt;br /&gt;    "          &amp;lt;q1:Count&amp;gt;1&amp;lt;/q1:Count&amp;gt;" +&lt;br /&gt;    "        &amp;lt;/q1:PageInfo&amp;gt;" +&lt;br /&gt;    "        &amp;lt;q1:Criteria&amp;gt;" +&lt;br /&gt;    "          &amp;lt;q1:FilterOperator&amp;gt;And&amp;lt;/q1:FilterOperator&amp;gt;" +&lt;br /&gt;    "          &amp;lt;q1:Conditions&amp;gt;" +&lt;br /&gt;    "            &amp;lt;q1:Condition&amp;gt;" +&lt;br /&gt;    "              &amp;lt;q1:AttributeName&amp;gt;"+sID+"&amp;lt;/q1:AttributeName&amp;gt;" +&lt;br /&gt;    "              &amp;lt;q1:Operator&amp;gt;Equal&amp;lt;/q1:Operator&amp;gt;" +&lt;br /&gt;    "              &amp;lt;q1:Values&amp;gt;" +&lt;br /&gt;    "                &amp;lt;q1:Value xsi:type=\"xsd:string\"&amp;gt;"+sGUID+"&amp;lt;/q1:Value&amp;gt;" +&lt;br /&gt;    "              &amp;lt;/q1:Values&amp;gt;" +&lt;br /&gt;    "            &amp;lt;/q1:Condition&amp;gt;" +&lt;br /&gt;    "          &amp;lt;/q1:Conditions&amp;gt;" +&lt;br /&gt;    "        &amp;lt;/q1:Criteria&amp;gt;" +&lt;br /&gt;    "      &amp;lt;/query&amp;gt;" +&lt;br /&gt;    "    &amp;lt;/RetrieveMultiple&amp;gt;" +&lt;br /&gt;    "  &amp;lt;/soap:Body&amp;gt;" +&lt;br /&gt;    "&amp;lt;/soap:Envelope&amp;gt;" +&lt;br /&gt;    "";&lt;br /&gt;&lt;br /&gt;    var xmlHttpRequest = new ActiveXObject("Msxml2.XMLHTTP");&lt;br /&gt;&lt;br /&gt;    xmlHttpRequest.Open("POST", "/mscrmservices/2007/CrmService.asmx", false);&lt;br /&gt;    xmlHttpRequest.setRequestHeader("SOAPAction","http://schemas.microsoft.com/crm/2007/WebServices/RetrieveMultiple");&lt;br /&gt;    xmlHttpRequest.setRequestHeader("Content-Type", "text/xml; charset=utf-8");&lt;br /&gt;    xmlHttpRequest.setRequestHeader("Content-Length", xml.length);&lt;br /&gt;    xmlHttpRequest.send(xml);&lt;br /&gt;&lt;br /&gt;    // retrieve response and find attribute value&lt;br /&gt;    var result = xmlHttpRequest.responseXML.selectSingleNode("//q1:" + sAttributeName);&lt;br /&gt;    if (result == null)&lt;br /&gt;        return "";&lt;br /&gt;    else&lt;br /&gt;        return result.text;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7208889-6008964534019180994?l=jianwang.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jianwang.blogspot.com/feeds/6008964534019180994/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7208889&amp;postID=6008964534019180994' title='16 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7208889/posts/default/6008964534019180994'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7208889/posts/default/6008964534019180994'/><link rel='alternate' type='text/html' href='http://jianwang.blogspot.com/2008/12/crm-40-get-attribute-value-from-entitys.html' title='CRM 4.0 Get attribute value from entity&apos;s GUID using JScript'/><author><name>Jim Wang</name><uri>http://www.blogger.com/profile/15963866631960791206</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='29' src='http://4.bp.blogspot.com/_-lOIedxo3AA/SaQ-RpTrHZI/AAAAAAAAANI/pQoZ77uYOe0/S220/Jim%27.JPG'/></author><thr:total>16</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7208889.post-1323506028932792513</id><published>2008-12-03T13:24:00.001Z</published><updated>2008-12-03T13:35:32.373Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='CRM 4.0'/><title type='text'>Quick Find for Inactive Records</title><content type='html'>CRM Quick Find Active [Entity] view only return active records. It's a common requirement to return both Active/Inactive records. I use a easy way to allow Quick Find view to return both Active/Inactive records, here it is (unsupported!):&lt;br /&gt;&lt;br /&gt;1. Export the entity's customization to a xml file;&lt;br /&gt;2. Edit the xml file, search 'Quick Find Active' then locate to the right code piece;&lt;br /&gt;3. Delete  the filter which is:&lt;br /&gt;&lt;pre class="xml" name="code"&gt;&lt;br /&gt;&lt;filter type="and"&gt;&lt;br /&gt;  &lt;condition attribute="statecode" operator="eq" value="0" /&gt;&lt;br /&gt;&lt;/filter&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;4. Save the xml, import to CRM, then Publish.&lt;br /&gt;&lt;br /&gt;Now the Quick Find view can return both Active and Inactive records. ;-)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7208889-1323506028932792513?l=jianwang.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jianwang.blogspot.com/feeds/1323506028932792513/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7208889&amp;postID=1323506028932792513' title='11 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7208889/posts/default/1323506028932792513'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7208889/posts/default/1323506028932792513'/><link rel='alternate' type='text/html' href='http://jianwang.blogspot.com/2008/12/quick-find-for-inactive-records.html' title='Quick Find for Inactive Records'/><author><name>Jim Wang</name><uri>http://www.blogger.com/profile/15963866631960791206</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='29' src='http://4.bp.blogspot.com/_-lOIedxo3AA/SaQ-RpTrHZI/AAAAAAAAANI/pQoZ77uYOe0/S220/Jim%27.JPG'/></author><thr:total>11</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7208889.post-6371280330756948949</id><published>2008-11-28T11:50:00.001Z</published><updated>2008-11-28T11:55:05.254Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='Dashboard'/><category scheme='http://www.blogger.com/atom/ns#' term='CRM Integration'/><category scheme='http://www.blogger.com/atom/ns#' term='CRM 4.0'/><title type='text'>Code: CRM 4.0 Dashboard Intergate with FusionCharts</title><content type='html'>I have been asked many times through email/blog for sharing code about the CRM Dashboard with FusionChart integration. So I decide to extract some code and build a demo project to share, it's a simple work for demo, so please don't expect too much. :)&lt;br /&gt;&lt;br /&gt;The demo dashboard supports:&lt;br /&gt;• CRM 4.0, multi-tenants(one URL for different organizations);&lt;br /&gt;• IFD and On-Premise deployment;&lt;br /&gt;• CRM user security(users only see relevant data which their have privileges)&lt;br /&gt;&lt;br /&gt;You may deploy the solution under ISV folder, you also need to change sitemap to show the Dashboard:&lt;br /&gt;&lt;pre class="xml" name="code"&gt;&lt;br /&gt;&lt;subarea id="nav_dashboard" title="Dashboard" url="/../ISV/Dashboard/Default.aspx" icon="/_imgs/ico_18_news.gif" passparams="1"&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://code.msdn.microsoft.com/Project/Download/FileDownload.aspx?ProjectName=crm&amp;DownloadId=3971"&gt;Download the solution&lt;/a&gt;&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/_-lOIedxo3AA/SS_bi3xqi6I/AAAAAAAAAMA/t0RiTlLEFXM/s1600-h/dashboard3.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 250px;" src="http://3.bp.blogspot.com/_-lOIedxo3AA/SS_bi3xqi6I/AAAAAAAAAMA/t0RiTlLEFXM/s400/dashboard3.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5273675080808434594" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7208889-6371280330756948949?l=jianwang.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jianwang.blogspot.com/feeds/6371280330756948949/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7208889&amp;postID=6371280330756948949' title='8 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7208889/posts/default/6371280330756948949'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7208889/posts/default/6371280330756948949'/><link rel='alternate' type='text/html' href='http://jianwang.blogspot.com/2008/11/code-crm-40-dashboard-intergate-with.html' title='Code: CRM 4.0 Dashboard Intergate with FusionCharts'/><author><name>Jim Wang</name><uri>http://www.blogger.com/profile/15963866631960791206</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='29' src='http://4.bp.blogspot.com/_-lOIedxo3AA/SaQ-RpTrHZI/AAAAAAAAANI/pQoZ77uYOe0/S220/Jim%27.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_-lOIedxo3AA/SS_bi3xqi6I/AAAAAAAAAMA/t0RiTlLEFXM/s72-c/dashboard3.jpg' height='72' width='72'/><thr:total>8</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7208889.post-2425660665282689104</id><published>2008-10-25T17:21:00.000+01:00</published><updated>2008-10-25T17:25:34.866+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='CRM Outlook'/><title type='text'>Microsoft Outlook is not set as the default mail client?</title><content type='html'>&lt;div&gt;&lt;a href="http://1.bp.blogspot.com/_-lOIedxo3AA/SQNHyDZLgNI/AAAAAAAAALo/deeV3kM5hVM/s1600-h/outlookdefault.png"&gt;&lt;img id="BLOGGER_PHOTO_ID_5261127714928820434" style="DISPLAY: block; MARGIN: 0px auto 10px; WIDTH: 400px; CURSOR: hand; HEIGHT: 300px; TEXT-ALIGN: center" alt="" src="http://1.bp.blogspot.com/_-lOIedxo3AA/SQNHyDZLgNI/AAAAAAAAALo/deeV3kM5hVM/s400/outlookdefault.png" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Today I install CRM Outlook on my Vista(with Outlook 2007), it gives me a strange error:"&lt;span style="color:#ff0000;"&gt;Microsoft Outlook is not set as the default mail client. Please set Microsoft Outlook as the default mail client from Control Panel\Internet Options\Programs, and then re-run the check.&lt;/span&gt;"&lt;br /&gt;&lt;br /&gt;I'm sure the Outlook is my default mail client, just in case I reset it again. but the error still exist!  I'm aware of CRM always query Registry to get information in such cases, so open the default application key: &lt;strong&gt;HKLM\SOFTWARE\Clients\Mail&lt;/strong&gt;, the Default value is &lt;span style="color:#000066;"&gt;&lt;strong&gt;Windows Live Mail&lt;/strong&gt;,&lt;/span&gt; so change it to &lt;strong&gt;&lt;span style="color:#000066;"&gt;Microsoft Outlook&lt;/span&gt;&lt;/strong&gt;, the error gone!&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/_-lOIedxo3AA/SQNIBMFXDSI/AAAAAAAAAL4/HPA4TUlQ0p4/s1600-h/outlookdefaultregistry.png"&gt;&lt;img id="BLOGGER_PHOTO_ID_5261127974959648034" style="DISPLAY: block; MARGIN: 0px auto 10px; WIDTH: 400px; CURSOR: hand; HEIGHT: 159px; TEXT-ALIGN: center" alt="" src="http://1.bp.blogspot.com/_-lOIedxo3AA/SQNIBMFXDSI/AAAAAAAAAL4/HPA4TUlQ0p4/s400/outlookdefaultregistry.png" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/_-lOIedxo3AA/SQNH36L2P8I/AAAAAAAAALw/gTc0wFdPYdk/s1600-h/outlookdefaultregistry.png"&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7208889-2425660665282689104?l=jianwang.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jianwang.blogspot.com/feeds/2425660665282689104/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7208889&amp;postID=2425660665282689104' title='11 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7208889/posts/default/2425660665282689104'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7208889/posts/default/2425660665282689104'/><link rel='alternate' type='text/html' href='http://jianwang.blogspot.com/2008/10/microsoft-outlook-is-not-set-as-default.html' title='Microsoft Outlook is not set as the default mail client?'/><author><name>Jim Wang</name><uri>http://www.blogger.com/profile/15963866631960791206</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='29' src='http://4.bp.blogspot.com/_-lOIedxo3AA/SaQ-RpTrHZI/AAAAAAAAANI/pQoZ77uYOe0/S220/Jim%27.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_-lOIedxo3AA/SQNHyDZLgNI/AAAAAAAAALo/deeV3kM5hVM/s72-c/outlookdefault.png' height='72' width='72'/><thr:total>11</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7208889.post-4626863303086566740</id><published>2008-10-19T18:57:00.004+01:00</published><updated>2008-10-21T00:17:01.015+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Dashboard'/><category scheme='http://www.blogger.com/atom/ns#' term='CRM Integration'/><category scheme='http://www.blogger.com/atom/ns#' term='CRM 4.0'/><title type='text'>Ways to build up a CRM dashboard</title><content type='html'>There are servel ways to build up a dashboard to integrate with Dynamics CRM. Let's take a look(projects I have done):&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;1. Windows Sharepoint Service (WSS 3.0) + Office web part&lt;/strong&gt;&lt;br /&gt;In the previous version of WSS(v2.0), there is a free &lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=38be67a5-2056-46a1-84b1-337ffb549c5c&amp;amp;displaylang=en"&gt;Office 2003 Add-in: Web Parts and Components&lt;/a&gt;, which is not available for WSS 3.0, however you can still add it manually. It's easy to use and config, but not flexible enough, it also requires the client PC has to have Office 2003/2007 software intsalled to see the graphic.&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;img id="BLOGGER_PHOTO_ID_5258925811710255554" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://2.bp.blogspot.com/_-lOIedxo3AA/SPt1KasfYcI/AAAAAAAAAKE/e_Mgxpqr1mg/s400/dashboard1.jpg" border="0" /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;2. Windows Sharepoint Service (WSS3.0) + Reporting Service web part&lt;/strong&gt;&lt;br /&gt;You can also use &lt;a href="http://www.microsoft.com/downloads/details.aspx?displaylang=en&amp;amp;FamilyID=200fd7b5-db7c-4b8c-a7dc-5efee6e19005"&gt;Reporting Services Add-in&lt;/a&gt; in WSS 3.0, then create a rdl report and call it via Report Viewer web part. Because it's a rdl report, so it's very flexible . &lt;/p&gt;&lt;p&gt;&lt;img id="BLOGGER_PHOTO_ID_5258925995526175746" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://1.bp.blogspot.com/_-lOIedxo3AA/SPt1VHdnvAI/AAAAAAAAAKM/cO-_WVtu1Zs/s400/dashboard2.jpg" border="0" /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;3. ASP.Net + FusionCharts&lt;br /&gt;&lt;/strong&gt;FusionCharts is a flash charting component that can be used to render data-driven &amp;amp; animated charts for your web applications and presentations. It does provide a &lt;a href="http://www.fusioncharts.com/free/"&gt;free version&lt;/a&gt;. So if you want to build up a flexable(let's say: multi-tenants etc.) dashboard to integrate with CRM, it's a good idea to build up your own ASP.Net page with FusionChart. I would say it won't disappoint you.&lt;br /&gt;&lt;br /&gt;&lt;img id="BLOGGER_PHOTO_ID_5258926221504560306" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://3.bp.blogspot.com/_-lOIedxo3AA/SPt1iRTEPLI/AAAAAAAAAKU/GY5z5HLOYPg/s400/dashboard3.jpg" border="0" /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;4. CRM Analytics Accelerator&lt;br /&gt;&lt;/strong&gt;This well-known add-ons is not available for CRM 4.0 at the moment, but it coming soon. More details see: &lt;a href="http://blogs.msdn.com/crm/archive/2008/08/05/crm-accelerators-part-i-analytics-accelerator.aspx"&gt;CRM Accelerators – Part I – Analytics Accelerator&lt;/a&gt; &lt;/p&gt;&lt;p&gt;&lt;img style="DISPLAY: block; MARGIN: 0px auto 10px; WIDTH: 400px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://blogs.msdn.com/blogfiles/crm/WindowsLiveWriter/CRMAcceleratorsPartIAnalyticsAccelerator_8E7A/clip_image004_2.jpg" border="0" /&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7208889-4626863303086566740?l=jianwang.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jianwang.blogspot.com/feeds/4626863303086566740/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7208889&amp;postID=4626863303086566740' title='36 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7208889/posts/default/4626863303086566740'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7208889/posts/default/4626863303086566740'/><link rel='alternate' type='text/html' href='http://jianwang.blogspot.com/2008/10/ways-to-build-up-crm-dashboard.html' title='Ways to build up a CRM dashboard'/><author><name>Jim Wang</name><uri>http://www.blogger.com/profile/15963866631960791206</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='29' src='http://4.bp.blogspot.com/_-lOIedxo3AA/SaQ-RpTrHZI/AAAAAAAAANI/pQoZ77uYOe0/S220/Jim%27.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_-lOIedxo3AA/SPt1KasfYcI/AAAAAAAAAKE/e_Mgxpqr1mg/s72-c/dashboard1.jpg' height='72' width='72'/><thr:total>36</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7208889.post-9146477002647482961</id><published>2008-10-11T21:12:00.003+01:00</published><updated>2008-10-11T22:33:12.379+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Microsoft MVP'/><title type='text'>MVP Award</title><content type='html'>I have been awarded Microsoft MVP - Dynamics CRM.&lt;br /&gt;Thanks for Microsoft and my friends, colleagues and family. :)&lt;br /&gt;&lt;br /&gt;See my MVP profile here: &lt;a href="https://mvp.support.microsoft.com/profile/Jim.Wang"&gt;https://mvp.support.microsoft.com/profile/Jim.Wang&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7208889-9146477002647482961?l=jianwang.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jianwang.blogspot.com/feeds/9146477002647482961/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7208889&amp;postID=9146477002647482961' title='9 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7208889/posts/default/9146477002647482961'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7208889/posts/default/9146477002647482961'/><link rel='alternate' type='text/html' href='http://jianwang.blogspot.com/2008/10/mvp-award.html' title='MVP Award'/><author><name>Jim Wang</name><uri>http://www.blogger.com/profile/15963866631960791206</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='29' src='http://4.bp.blogspot.com/_-lOIedxo3AA/SaQ-RpTrHZI/AAAAAAAAANI/pQoZ77uYOe0/S220/Jim%27.JPG'/></author><thr:total>9</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7208889.post-8681335368518742368</id><published>2008-09-30T15:22:00.003+01:00</published><updated>2009-06-10T10:40:11.672+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='JScript'/><category scheme='http://www.blogger.com/atom/ns#' term='CRM 4.0'/><title type='text'>Customize the crmForm</title><content type='html'>There are some useful crmForm customization skills which I want to share:&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;1. Change a filed label style&lt;/strong&gt;&lt;br /&gt;&lt;pre class="jscript" name="code"&gt;&lt;br /&gt;/* change new_button field label style */&lt;br /&gt;if (crmForm.all.new_button != null)&lt;br /&gt;{&lt;br /&gt;  var field = crmForm.all.new_button_c;&lt;br /&gt;  field.style.fontWeight = 'bold'; // change font to bold&lt;br /&gt;  field.style.fontSize = '12px'; // change font size&lt;br /&gt;  field.style.color = '#ff0000';  //change font color&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;strong&gt;2. Replace a field to a button, and attach the onclick() event&lt;/strong&gt;&lt;br /&gt;&lt;pre class="jscript" name="code"&gt;&lt;br /&gt;/* replace new_button_d to a button */&lt;br /&gt;if (crmForm.all.new_button != null)&lt;br /&gt;{&lt;br /&gt;  var field = crmForm.all.new_button_d;&lt;br /&gt;  var html = "&amp;lt;table border='0' cellspacing='0' cellpadding='0'&amp;gt;&amp;lt;tr&amp;gt;&amp;lt;img width='32' height='32' style='cursor:hand' src='/_imgs/ico_32_134.gif' alt='Click button' onclick='Button_OnClick()' /&amp;gt;&amp;lt;/tr&amp;gt;&amp;lt;/table&amp;gt;";&lt;br /&gt;  field.innerHTML = html;&lt;br /&gt;}&lt;br /&gt;Button_OnClick = function()&lt;br /&gt;{&lt;br /&gt;  alert("button clicked!"); &lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;strong&gt;3.  Replace a field to a lable (use replaceNode())&lt;/strong&gt;&lt;br /&gt;&lt;pre class="jscript" name="code"&gt;&lt;br /&gt;/* replace new_button_d to a label */&lt;br /&gt;if (crmForm.all.new_button != null)&lt;br /&gt;{&lt;br /&gt;  var html = document.createElement( "&amp;lt;TD id='new_button_d'&amp;gt;");&lt;br /&gt;  html.innerText = "this is a lable";&lt;br /&gt;  crmForm.all.new_button_d.replaceNode(buttonText);&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;strong&gt;4. Append text under a field (you don't need to create an attribute for that)&lt;/strong&gt;&lt;br /&gt;&lt;pre class="jscript" name="code"&gt;&lt;br /&gt;/* append text under new_button */&lt;br /&gt;if(crmForm.all.new_button != null)&lt;br /&gt;{&lt;br /&gt;  var html= document.createElement( "&amp;lt;LABEL&amp;gt;");&lt;br /&gt;  html.innerText = "this is a text field";&lt;br /&gt;  crmForm.all.new_button.parentNode.appendChild(html);&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7208889-8681335368518742368?l=jianwang.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jianwang.blogspot.com/feeds/8681335368518742368/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7208889&amp;postID=8681335368518742368' title='11 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7208889/posts/default/8681335368518742368'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7208889/posts/default/8681335368518742368'/><link rel='alternate' type='text/html' href='http://jianwang.blogspot.com/2008/09/customize-crmform.html' title='Customize the crmForm'/><author><name>Jim Wang</name><uri>http://www.blogger.com/profile/15963866631960791206</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='29' src='http://4.bp.blogspot.com/_-lOIedxo3AA/SaQ-RpTrHZI/AAAAAAAAANI/pQoZ77uYOe0/S220/Jim%27.JPG'/></author><thr:total>11</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7208889.post-7692138818946591068</id><published>2008-09-18T22:26:00.000+01:00</published><updated>2008-09-18T22:32:33.152+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='JScript'/><category scheme='http://www.blogger.com/atom/ns#' term='CRM 4.0'/><title type='text'>Double Click EmailAddress to Open in Outlook</title><content type='html'>There is &lt;a href="http://forums.microsoft.com/Dynamics/ShowPost.aspx?PostID=3856377&amp;SiteID=27"&gt;a question&lt;/a&gt; on Microsoft CRM Forum asking how to: Double Click EmailAddress to Open in Outlook&lt;br /&gt;&lt;br /&gt;I think it's worth to bring it here because it's also demonstrate how to send parameters in attachEvent method, so here is the answer:&lt;br /&gt;&lt;br /&gt;&lt;pre class="jscript" name="code"&gt;&lt;br /&gt;/* Double Click EmailAddress to Open in Outlook, put into entity.OnLoad */&lt;br /&gt;function CreateEmail(emailAddress) &lt;br /&gt;{&lt;br /&gt;    return function()&lt;br /&gt;    {&lt;br /&gt;        if (emailAddress != null &amp;&amp; emailAddress.value.length &gt; 0) &lt;br /&gt;        {&lt;br /&gt;            window.navigate("mailto:" + emailAddress.value);&lt;br /&gt;        }&lt;br /&gt;    }&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;crmForm.all.emailaddress1.attachEvent('ondblclick', CreateEmail(crmForm.all.emailaddress1));&lt;br /&gt;crmForm.all.emailaddress2.attachEvent('ondblclick', CreateEmail(crmForm.all.emailaddress2));&lt;br /&gt;crmForm.all.emailaddress3.attachEvent('ondblclick', CreateEmail(crmForm.all.emailaddress3));&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7208889-7692138818946591068?l=jianwang.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jianwang.blogspot.com/feeds/7692138818946591068/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7208889&amp;postID=7692138818946591068' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7208889/posts/default/7692138818946591068'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7208889/posts/default/7692138818946591068'/><link rel='alternate' type='text/html' href='http://jianwang.blogspot.com/2008/09/double-click-emailaddress-to-open-in.html' title='Double Click EmailAddress to Open in Outlook'/><author><name>Jim Wang</name><uri>http://www.blogger.com/profile/15963866631960791206</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='29' src='http://4.bp.blogspot.com/_-lOIedxo3AA/SaQ-RpTrHZI/AAAAAAAAANI/pQoZ77uYOe0/S220/Jim%27.JPG'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7208889.post-3445166041380946948</id><published>2008-09-06T15:15:00.004+01:00</published><updated>2008-09-06T15:41:00.312+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='CRM Integration'/><category scheme='http://www.blogger.com/atom/ns#' term='ASP.Net'/><category scheme='http://www.blogger.com/atom/ns#' term='CRM 4.0'/><category scheme='http://www.blogger.com/atom/ns#' term='SQL'/><title type='text'>FilteredView and CrmImpersonator?!</title><content type='html'>&lt;div&gt;I was curious about how to use FilteredView in the CrmImpersnator class for a IFD(Internet-Facing Deployment) solution? Thanks to &lt;a href="http://forums.microsoft.com/Dynamics/ShowPost.aspx?PostID=3815905&amp;amp;SiteID=27"&gt;David Jennaway&lt;/a&gt; who gave me a clue.&lt;br /&gt;&lt;br /&gt;Ok, the reason for that is because I'm building a CRM dashboard for an On-Premise/IFD CRM deployment. In order to use the Web services from an APSX page, I have to use the Microsoft.Crm.Sdk.CrmImpersonator class, however by doing that it's not possible to get relevant data from the FilteredView, because the CrmImpersnator() will authenticate as [NT AUTHORITY\SYSTEM] account(which is a system account in CRM).&lt;br /&gt;&lt;br /&gt;The solution is to use SQL &lt;a href="http://msdn.microsoft.com/en-us/library/ms188354.aspx"&gt;Execute As&lt;/a&gt; statement, see the sample code below:&lt;br /&gt;&lt;pre class="sql" name="code"&gt;&lt;br /&gt;&lt;br /&gt;using (new CrmImpersonator())&lt;br /&gt;{&lt;br /&gt;........&lt;br /&gt;    string username = "domain\\Guest";&lt;br /&gt;    string sqlQuery = "SELECT name FROM FilteredAccount";&lt;br /&gt;    string queryString = "GRANT IMPERSONATE ON USER::[NT AUTHORITY\\SYSTEM] TO [" + username + "] EXECUTE AS USER='" + username + "' " + sqlQuery + " REVERT";&lt;br /&gt;&lt;br /&gt;........&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;In this example, you have to give user the Impersonate permission first, then use Execute As statement to impersonate the user.&lt;br /&gt;After running the code, if you have a look the CRM database, under the Security\Users folder, the impersonated user account is added in the list, and it grant the 'Impersonate' permission to user [NT AUTHORITY\SYSTEM], see picture below:&lt;/div&gt;&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/_-lOIedxo3AA/SMKU7OnUaSI/AAAAAAAAAHs/dPRenqKuBbo/s1600-h/CrmImp.JPG"&gt;&lt;img id="BLOGGER_PHOTO_ID_5242916661468883234" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://1.bp.blogspot.com/_-lOIedxo3AA/SMKU7OnUaSI/AAAAAAAAAHs/dPRenqKuBbo/s400/CrmImp.JPG" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;By using this technic, you also need to map the user [NT AUTHORITY\SYSTEM] to the CRM database(e.g: Contoso_MSCRM).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7208889-3445166041380946948?l=jianwang.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jianwang.blogspot.com/feeds/3445166041380946948/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7208889&amp;postID=3445166041380946948' title='8 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7208889/posts/default/3445166041380946948'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7208889/posts/default/3445166041380946948'/><link rel='alternate' type='text/html' href='http://jianwang.blogspot.com/2008/09/filteredview-and-crmimpersonator.html' title='FilteredView and CrmImpersonator?!'/><author><name>Jim Wang</name><uri>http://www.blogger.com/profile/15963866631960791206</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='29' src='http://4.bp.blogspot.com/_-lOIedxo3AA/SaQ-RpTrHZI/AAAAAAAAANI/pQoZ77uYOe0/S220/Jim%27.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_-lOIedxo3AA/SMKU7OnUaSI/AAAAAAAAAHs/dPRenqKuBbo/s72-c/CrmImp.JPG' height='72' width='72'/><thr:total>8</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7208889.post-8903466722900926715</id><published>2008-08-24T17:43:00.003+01:00</published><updated>2008-08-24T17:47:31.388+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='CRM 4.0'/><title type='text'>Change CRM 4.0 website port number after installation</title><content type='html'>&lt;p&gt;&lt;br /&gt;Microsoft has a KB to describe &lt;a href="http://support.microsoft.com/kb/947423"&gt;how to update the Microsoft Dynamics CRM Web site port after you install Microsoft Dynamics CRM 4.0&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Today I had to change the port number from 80 to 5555, however after following those steps, I can't run CRM reports. In the event log, it says: &lt;span style="color:#ff0000;"&gt;Error 19968 Web service request ListExtensions to Report Server &lt;/span&gt;&lt;span style="color:#ff0000;"&gt;http://crm/ReportServer/ReportService2005.asmx&lt;/span&gt;&lt;span style="color:#ff0000;"&gt; failed. Error: Unable to connect to the remote server &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;I have noticed that the virtual directory: ReportServer and Reports are located under the CRM website, so these config information needs change too.&lt;br /&gt;&lt;br /&gt;There are extra two steps if your SRS is running under the CRM website:&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Regedit:&lt;/strong&gt;&lt;br /&gt;HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSCRM\SQLRSServerURL&lt;br /&gt;&lt;strong&gt;&lt;br /&gt;Deployment Manager:&lt;/strong&gt;&lt;br /&gt;Disable Organization &gt;&gt; Edit Organization &gt;&gt; change the SRS Url &gt;&gt; Enable Organization.&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7208889-8903466722900926715?l=jianwang.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jianwang.blogspot.com/feeds/8903466722900926715/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7208889&amp;postID=8903466722900926715' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7208889/posts/default/8903466722900926715'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7208889/posts/default/8903466722900926715'/><link rel='alternate' type='text/html' href='http://jianwang.blogspot.com/2008/08/change-crm-40-website-port-number-after.html' title='Change CRM 4.0 website port number after installation'/><author><name>Jim Wang</name><uri>http://www.blogger.com/profile/15963866631960791206</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='29' src='http://4.bp.blogspot.com/_-lOIedxo3AA/SaQ-RpTrHZI/AAAAAAAAANI/pQoZ77uYOe0/S220/Jim%27.JPG'/></author><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7208889.post-107617127303115263</id><published>2008-07-27T11:56:00.002+01:00</published><updated>2008-07-27T12:00:44.514+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Upgarde'/><category scheme='http://www.blogger.com/atom/ns#' term='C360'/><category scheme='http://www.blogger.com/atom/ns#' term='CRM 4.0'/><title type='text'>CRM 4.0 upgrade: There is already an object named 'AttributeTypes' in the database.</title><content type='html'>This week I was helping a customer to upgrade their CRM 3.0 system to CRM 4.0.&lt;br /&gt;The upgrade pre-check looks fine with all passed, no errors, no warnings.&lt;br /&gt;But during the upgrade process, it first alert an error regarding C360, then I fix the problem, click the "Retry" button, it then generates another error:&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;" Microsoft.Crm.Setup.Server.InstallDatabaseAction failed.&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;System.Data.SqlClient.SqlException: There is already an object named 'AttributeTypes' in the database. "&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;That's very strange. But finally I found it's a design lack of upgrade process: The 'Retry' doesn't actually do 'Retry'!&lt;br /&gt;So I had to:&lt;br /&gt;1. Stop the upgrade process and uninstall CRM 4.0;&lt;br /&gt;2. Restore CRM 3.0 databases, then install CRM 3.0 with existing databases;&lt;br /&gt;3. Fix the problem which generated the first error;&lt;br /&gt;4. Re-run the CRM 4.0 upgrade.&lt;br /&gt;&lt;br /&gt;I did know there are some complains about C360 add-ons stop the CRM upgrade process, these could be the reasons:&lt;br /&gt;1. The C360 uninstall doesn't do a clean uninstall all the time, so you may still see C360 icons on the CRM form, but no function;&lt;br /&gt;2. Some C360 products create tables inside the CRM database which is not a recommended method, and again once you uninstall the product, the tables are still there.&lt;br /&gt;3. C360 has a cleanup tool which does cleanup the remained infomation in the onLoad, onSave, and isv.cofig.xml etc. However, it doesn't cleanup the database. And the tool is hard to find on C360 website.&lt;br /&gt;&lt;br /&gt;C360 provides some great add-ons for MSCRM, but we wish it could be better!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7208889-107617127303115263?l=jianwang.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jianwang.blogspot.com/feeds/107617127303115263/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7208889&amp;postID=107617127303115263' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7208889/posts/default/107617127303115263'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7208889/posts/default/107617127303115263'/><link rel='alternate' type='text/html' href='http://jianwang.blogspot.com/2008/07/crm-40-upgrade-there-is-already-object.html' title='CRM 4.0 upgrade: There is already an object named &apos;AttributeTypes&apos; in the database.'/><author><name>Jim Wang</name><uri>http://www.blogger.com/profile/15963866631960791206</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='29' src='http://4.bp.blogspot.com/_-lOIedxo3AA/SaQ-RpTrHZI/AAAAAAAAANI/pQoZ77uYOe0/S220/Jim%27.JPG'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7208889.post-4424709123806129510</id><published>2008-07-20T10:56:00.001+01:00</published><updated>2008-07-21T18:17:38.030+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Tools'/><category scheme='http://www.blogger.com/atom/ns#' term='E-mail Router'/><category scheme='http://www.blogger.com/atom/ns#' term='CRM 4.0'/><title type='text'>CRM 4.0 E-mail access type bulk setting tool</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp3.blogger.com/_-lOIedxo3AA/SIMNbsC4SiI/AAAAAAAAAHc/DOgLDDRYWkA/s1600-h/CRM+User+E-mail+Bulk+Setting.jpg"&gt;&lt;img id="BLOGGER_PHOTO_ID_5225034762010774050" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: pointer; TEXT-ALIGN: center" alt="" src="http://bp3.blogger.com/_-lOIedxo3AA/SIMNbsC4SiI/AAAAAAAAAHc/DOgLDDRYWkA/s400/CRM+User+E-mail+Bulk+Setting.jpg" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;(Update: You can use CRM 4.0 Workflow to do it as well, it's up to you to choose which one you feel comfortable.)&lt;br /&gt;Microsoft Dynamics CRM 4.0 doesn't provide a tool for CRM User's email access type bulk setting. So I write this application to helping CRM Administrators for this purpose. It takes me 2 hours work so don't expect too much, however it does work. ;-)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="FONT-WEIGHT: bold"&gt;Usage:&lt;/span&gt;&lt;br /&gt;1. Launch the application, type in the following information:&lt;br /&gt;CRM Server(the CRM discover server address): e.g http://localhost:5555&lt;br /&gt;Organisation(the Organisation's name, not Friendly name): e.g AdventureWorksCycle&lt;br /&gt;SQL Server: e.g localhost&lt;br /&gt;Database: e.g Adventure_Works_Cycle_MSCRM&lt;br /&gt;CRM User: e.g CRMAdmin&lt;br /&gt;CRM User's Password&lt;br /&gt;&lt;br /&gt;2. Click the 'Load' button, it will list all enabled CRM users whom belonging to this organisation with their email settings.&lt;br /&gt;&lt;br /&gt;3. Select users your want to modify, then select Incoming E-mail and Outgoing E-mail setting from the picklist. If you don't want to change both of those, then just select blank in the picklist.&lt;br /&gt;&lt;br /&gt;4. Click the 'Update' button, it will update user settings you selected.&lt;br /&gt;&lt;br /&gt;Download it here: &lt;a href="http://code.msdn.microsoft.com/crm"&gt;http://code.msdn.microsoft.com/crm&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Enjoy it!&lt;br /&gt;&lt;br /&gt;Cheers,&lt;br /&gt;Jim Wang&lt;br /&gt;http://jianwang.blogspot.com&lt;br /&gt;http://mscrm.cnblogs.com&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7208889-4424709123806129510?l=jianwang.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jianwang.blogspot.com/feeds/4424709123806129510/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7208889&amp;postID=4424709123806129510' title='9 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7208889/posts/default/4424709123806129510'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7208889/posts/default/4424709123806129510'/><link rel='alternate' type='text/html' href='http://jianwang.blogspot.com/2008/07/crm-40-e-mail-access-type-bulk-setting.html' title='CRM 4.0 E-mail access type bulk setting tool'/><author><name>Jim Wang</name><uri>http://www.blogger.com/profile/15963866631960791206</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='29' src='http://4.bp.blogspot.com/_-lOIedxo3AA/SaQ-RpTrHZI/AAAAAAAAANI/pQoZ77uYOe0/S220/Jim%27.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp3.blogger.com/_-lOIedxo3AA/SIMNbsC4SiI/AAAAAAAAAHc/DOgLDDRYWkA/s72-c/CRM+User+E-mail+Bulk+Setting.jpg' height='72' width='72'/><thr:total>9</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7208889.post-4477039350419738583</id><published>2008-07-13T12:27:00.001+01:00</published><updated>2008-07-16T10:27:15.509+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='E-mail Router'/><category scheme='http://www.blogger.com/atom/ns#' term='CRM 4.0'/><title type='text'>CRM 4.0 E-Mail Router for hosted Exchange</title><content type='html'>I have a client who uses a hosted Exchange for their email system (also hosted AD) and my client uses CRM 4.0 On-Premise edition. So the CRM E-Mail Router solution is:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Outgoing: local SMTP service, use local system account&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;Incoming: hosted Exchange, use a service account which can access the remote Exchange mailbox&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;Both Outgoing and Incoming are configured to use Email Router&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;When test the connection, the outgoing STMP works fine, however, the incoming Exchange get the following error:&lt;br /&gt;&lt;span style="COLOR: rgb(255,0,0)"&gt;"Incoming Status: Failure - The remote Microsoft Exchange e-mail server returned the error "(404) Not Found". This user or queue does not have a mailbox. Create a mailbox and try again. The remote server returned an error: (404) Not Found. "&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;It is strange because I'm sure the user has mailbox! Thanks for Tony Iadarola who is a senior engineer works for &lt;a href="http://www.manbytesdog.net/"&gt;the hosting company&lt;/a&gt; , after analyzing the Exchange server logs, he pointed out that the CRM E-Mail router service try to query the mailbox by using the 'half' SMTP address!( which is not recommend, MS recommend either SamAccount or Legacy DN, or mailbox GUID is used)&lt;br /&gt;&lt;br /&gt;e.g.: In our case, we have a test user in CRM, the user's SamAccount name is: TU341-NBG125, SMTP mailbox: TUser@domain.com which is the user's primary email address in CRM. The CRM E-Mail Router service should be making a request to Exchange mail server for the Test users mailbox using http://ExchangeMailServer/Exchange/TU341-NBG125 instead it is using http://ExchangeMailServer/Exchange/TUser&lt;br /&gt;&lt;br /&gt;If I change the user's primary email address to TU341-NBG125@domain.com, the problem will disappear! However the email address doesn't mean anything to customers, so I can't change the email address.&lt;br /&gt;&lt;br /&gt;Finally I found a workaround: edit ..\Microsoft CRM Email\Service\Microsoft.Crm.Tools.EmailAgent.xml&lt;br /&gt;Search the test user section(within the tag: &amp;lt;ProviderConfiguration&amp;gt;), edit it's &amp;lt;EmailAddress&amp;gt; tag, change the email address from TUser@domain.com to TU341-NBG125@domain.com, then save the xml file, modify it's property to Read-Only, restart the CRM E-mail Router Service.(You have to make the file read-only first, otherwise the service will re-write the &amp;lt;EmailAddress&amp;gt; tag by using the user's primary email address)&lt;br /&gt;&lt;br /&gt;The problem is solved, all users still use their normal email address, and the CRM E-Mail Router is able to create an Email activity for incoming emails with correct email address. However I think the CRM E-mail Router should be improved by query mailbox via SAM, instead of using SMTP address which may not unique for a hosted environment.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#ff0000;"&gt;16/07/2008, add to my post:&lt;/span&gt;&lt;/strong&gt; the service account needs to have permission to access &lt;strong&gt;'Root'&lt;/strong&gt; and &lt;strong&gt;'Inbox'&lt;/strong&gt; folder of user's mailbox. e.g. if the service account has such permission, it can find user's mailbox by using the 'half' SMTP address (http://ExchangeMailServer/Exchange/TUser ). However it's might be a problem for a hosted company who doesn't want to grand the permission for the service account.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7208889-4477039350419738583?l=jianwang.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jianwang.blogspot.com/feeds/4477039350419738583/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7208889&amp;postID=4477039350419738583' title='12 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7208889/posts/default/4477039350419738583'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7208889/posts/default/4477039350419738583'/><link rel='alternate' type='text/html' href='http://jianwang.blogspot.com/2008/07/crm-40-e-mail-router-for-hosted.html' title='CRM 4.0 E-Mail Router for hosted Exchange'/><author><name>Jim Wang</name><uri>http://www.blogger.com/profile/15963866631960791206</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='29' src='http://4.bp.blogspot.com/_-lOIedxo3AA/SaQ-RpTrHZI/AAAAAAAAANI/pQoZ77uYOe0/S220/Jim%27.JPG'/></author><thr:total>12</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7208889.post-1112290074150349956</id><published>2008-07-02T23:01:00.003+01:00</published><updated>2008-07-12T14:26:42.961+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='JScript'/><category scheme='http://www.blogger.com/atom/ns#' term='Workflow'/><category scheme='http://www.blogger.com/atom/ns#' term='CRM 4.0'/><title type='text'>CRM 4.0: Use JavaScript execute/call/launch CRM Workflow</title><content type='html'>I have a question from my colleague: How to use JavaScript execute workflow in CRM 4.0? The question also repeats very often in &lt;a href="http://forums.microsoft.com/Dynamics/default.aspx?ForumGroupID=138&amp;SiteID=27"&gt;CRM Forums&lt;/a&gt;, no answer so far.&lt;br /&gt;&lt;br /&gt;In CRM 3.0, Mitch Milam has described how to &lt;a href="http://blogs.infinite-x.net/2007/06/15/launching-a-workflow-rule-from-javascript/"&gt;Launching a Workflow Rule from JavaScript&lt;/a&gt;, it works great. However, in CRM 4.0, the class:  &lt;span style="font-weight:bold;"&gt;ExecuteWFProcessRequest &lt;/span&gt;has been &lt;a href="http://msdn.microsoft.com/en-us/library/bb928448.aspx"&gt;deprecated&lt;/a&gt;, so it won’t work in CRM 4.0. Although there are many ways to launch a workflow, if you want to run it through JavaScript, here’s the trick:&lt;br /&gt;&lt;pre class="js" name="code"&gt;&lt;br /&gt;/* the function */&lt;br /&gt;ExecuteWorkflow = function(entityId, workflowId)&lt;br /&gt;{&lt;br /&gt;    var xml = "" + &lt;br /&gt;    "&amp;lt;?xml version=\"1.0\" encoding=\"utf-8\"?&amp;gt;" + &lt;br /&gt;    "&amp;lt;soap:Envelope xmlns:soap=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\"&amp;gt;" + &lt;br /&gt;    GenerateAuthenticationHeader() +&lt;br /&gt;    "  &amp;lt;soap:Body&amp;gt;" + &lt;br /&gt;    "    &amp;lt;Execute xmlns=\"http://schemas.microsoft.com/crm/2007/WebServices\"&amp;gt;" + &lt;br /&gt;    "      &amp;lt;Request xsi:type=\"ExecuteWorkflowRequest\"&amp;gt;" + &lt;br /&gt;    "        &amp;lt;EntityId&amp;gt;" + entityId + "&amp;lt;/EntityId&amp;gt;" + &lt;br /&gt;    "        &amp;lt;WorkflowId&amp;gt;" + workflowId + "&amp;lt;/WorkflowId&amp;gt;" + &lt;br /&gt;    "      &amp;lt;/Request&amp;gt;" + &lt;br /&gt;    "    &amp;lt;/Execute&amp;gt;" + &lt;br /&gt;    "  &amp;lt;/soap:Body&amp;gt;" + &lt;br /&gt;    "&amp;lt;/soap:Envelope&amp;gt;" + &lt;br /&gt;    "";&lt;br /&gt;&lt;br /&gt;    var xmlHttpRequest = new ActiveXObject("Msxml2.XMLHTTP");&lt;br /&gt;    xmlHttpRequest.Open("POST", "/mscrmservices/2007/CrmService.asmx", false);&lt;br /&gt;    xmlHttpRequest.setRequestHeader("SOAPAction","http://schemas.microsoft.com/crm/2007/WebServices/Execute");&lt;br /&gt;    xmlHttpRequest.setRequestHeader("Content-Type", "text/xml; charset=utf-8");&lt;br /&gt;    xmlHttpRequest.setRequestHeader("Content-Length", xml.length);&lt;br /&gt;    xmlHttpRequest.send(xml);&lt;br /&gt;    var resultXml = xmlHttpRequest.responseXML;&lt;br /&gt;    return(resultXml.xml);&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;/* call */&lt;br /&gt;var theWorkflowId = "3FD2DD58-4708-43D7-A21B-F0F90A0AA9F2"; //change to your workflow Id&lt;br /&gt;ExecuteWorkflow(crmForm.ObjectId, theWorkflowId);&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Enjoy coding! :)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7208889-1112290074150349956?l=jianwang.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jianwang.blogspot.com/feeds/1112290074150349956/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7208889&amp;postID=1112290074150349956' title='6 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7208889/posts/default/1112290074150349956'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7208889/posts/default/1112290074150349956'/><link rel='alternate' type='text/html' href='http://jianwang.blogspot.com/2008/07/crm-40-use-javascript-excutecalllaunch.html' title='CRM 4.0: Use JavaScript execute/call/launch CRM Workflow'/><author><name>Jim Wang</name><uri>http://www.blogger.com/profile/15963866631960791206</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='29' src='http://4.bp.blogspot.com/_-lOIedxo3AA/SaQ-RpTrHZI/AAAAAAAAANI/pQoZ77uYOe0/S220/Jim%27.JPG'/></author><thr:total>6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7208889.post-5791683641628511835</id><published>2008-07-01T23:37:00.001+01:00</published><updated>2008-07-01T23:45:16.665+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Installation and Deployment'/><category scheme='http://www.blogger.com/atom/ns#' term='CRM 4.0'/><title type='text'>Failure: The full-text indexes on the Microsoft Dynamics CRM database are not consistent with Microsoft Dynamics CRM 3.0 full-text indexes</title><content type='html'>Last week I had a chance to help a London company to upgrade CRM 3.0 to 4.0. As you can see there are some warnings and error, I can easily fix all warnings instead of ignore them(in fact, most warnings are safe to ignored). The error is an interesting one, regarding &lt;a href="http://support.microsoft.com/kb/927226"&gt;Microsoft KB(927226), &lt;/a&gt;it’s a custom indexes error, when I check the installation log, it tells me the table name: &lt;strong&gt;DocumentIndex&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://bp3.blogger.com/_-lOIedxo3AA/SGqyp4HMX4I/AAAAAAAAAHM/PQ5k8QNe2Fs/s1600-h/crm4installerror.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;" src="http://bp3.blogger.com/_-lOIedxo3AA/SGqyp4HMX4I/AAAAAAAAAHM/PQ5k8QNe2Fs/s400/crm4installerror.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5218179550769078146" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;em&gt;C:\Documents and Settings\user\Application Data\Microsoft\Mscrm\Logs\crm40svrsetup.log&lt;br /&gt;13:51:00| Info| The following full-text indexes are not consistent with Microsoft Dynamics CRM 3.0 full-text indexes:&lt;br /&gt;13:51:00| Info| tableowner: dbo&lt;br /&gt;13:51:00| Info| tablename: documentindex&lt;br /&gt;13:51:00| Info| fulltextkeyindexname: cndx_primarykey_documentindex&lt;br /&gt;13:51:00| Error| remark: modified full-text index&lt;br /&gt;13:51:00| Error| &lt;br /&gt;13:51:00| Error| The full-text indexes on the Microsoft Dynamics CRM database are not consistent with Microsoft Dynamics CRM 3.0 full-text indexes.&lt;br /&gt;13:51:00| Error| Check SqlFullTextIndexValidator : Failure: The full-text indexes on the Microsoft Dynamics CRM database are not consistent with Microsoft Dynamics CRM 3.0 full-text indexes.&lt;/em&gt;&lt;br /&gt;&lt;br /&gt;I saw another post &lt;a href="http://blog.kazmarek.com/2008/03/11/full-text-index-inconsistency-when-upgrading-to-crm-40/"&gt;here &lt;/a&gt;which has the same error message. However I found that my case is slightly different, in fact I can’t see any full-text catalog against this table. So I just create a new ftcat_documentindex against DocumentIndex table(after compare with my VPC), then the error gone. :)&lt;br /&gt; &lt;br /&gt;The full-text catalog is call: ftcat_documentindex, see below:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://bp1.blogger.com/_-lOIedxo3AA/SGqyxku_f1I/AAAAAAAAAHU/bsejJImeGE0/s1600-h/ftcat_documentindex.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;" src="http://bp1.blogger.com/_-lOIedxo3AA/SGqyxku_f1I/AAAAAAAAAHU/bsejJImeGE0/s400/ftcat_documentindex.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5218179683006250834" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7208889-5791683641628511835?l=jianwang.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jianwang.blogspot.com/feeds/5791683641628511835/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7208889&amp;postID=5791683641628511835' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7208889/posts/default/5791683641628511835'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7208889/posts/default/5791683641628511835'/><link rel='alternate' type='text/html' href='http://jianwang.blogspot.com/2008/07/failure-full-text-indexes-on-microsoft.html' title='Failure: The full-text indexes on the Microsoft Dynamics CRM database are not consistent with Microsoft Dynamics CRM 3.0 full-text indexes'/><author><name>Jim Wang</name><uri>http://www.blogger.com/profile/15963866631960791206</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='29' src='http://4.bp.blogspot.com/_-lOIedxo3AA/SaQ-RpTrHZI/AAAAAAAAANI/pQoZ77uYOe0/S220/Jim%27.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp3.blogger.com/_-lOIedxo3AA/SGqyp4HMX4I/AAAAAAAAAHM/PQ5k8QNe2Fs/s72-c/crm4installerror.png' height='72' width='72'/><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7208889.post-3268241994141518464</id><published>2008-06-21T22:00:00.002+01:00</published><updated>2008-06-24T00:27:37.605+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='CRM 4.0'/><category scheme='http://www.blogger.com/atom/ns#' term='CRM Mobile'/><title type='text'>CRM Mobile for Windows Mobile</title><content type='html'>CRM Mobile is always an interesting topic. Some people love it, some hate it.&lt;br /&gt; &lt;br /&gt;I built up a &lt;a href="http://www.londondev.com"&gt;Windows Mobile&lt;/a&gt; software company about 4 years ago when I study my master course in the University College London. It's quite successful and I'm proud of it so much. And I am a Windows Mobile Specialist since year 2005, in the same year I started working on Microsoft CRM, now I am a Microsoft Certificate Business Management Solutions Professional. So I am an expert on both products, quite comfortable. I'd like to talk about my thoughts about CRM Mobile in this post.&lt;br /&gt; &lt;br /&gt;Microsoft hasn’t release CRM 4.0 Mobile software which I don't think they will in a short time. As you may know that Microsoft has a product called:  &lt;a href="http://blogs.msdn.com/dynamicsmobile/"&gt;Dynamics Mobile&lt;/a&gt; which supports Dynamics AX and NAV, and the good news is: it will support CRM 5 too.  With Dynamics Mobile framework, ISVs can build up more and better Windows Mobile software for Microsoft Dynamics.&lt;br /&gt; &lt;br /&gt;&lt;a href="http://www.cwrmobility.com/"&gt;CWR Mobility&lt;/a&gt; is the most popular CRM Mobile provider, even &lt;a href="http://www.c360.com/"&gt;C360&lt;/a&gt; uses (and sales) CWR’s product: I think they are partners. I have to say this software is one of the most complicated CRM Add-Ons. So how good is it? I can tell you my opinion.&lt;br /&gt; &lt;br /&gt;&lt;span style="font-weight:bold;"&gt;The Environment:&lt;span style="font-style:italic;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;I have a fresh CRM 4.0 installed on a Windows Server 2003 R2, with SQL Server 2005(it can be use Virtual PC which needs setup ActiveSync with your mobile device).&lt;br /&gt;I also have a Windows Mobile device (Orange HTC Touch, OS: WM6.0) which has been recently upgraded to Windows Mobile 6.1(WM6.1, the latest version of Windows Mobile OS) &lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp1.blogger.com/_-lOIedxo3AA/SF40rMUxkgI/AAAAAAAAAHE/-aG3uhhkS6Y/s1600-h/crmmobile1.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;" src="http://bp1.blogger.com/_-lOIedxo3AA/SF40rMUxkgI/AAAAAAAAAHE/-aG3uhhkS6Y/s400/crmmobile1.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5214663335188992514" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;The Server Side:&lt;span style="font-style:italic;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt; &lt;br /&gt;First you need to download Mobile CRM software from CWR website, install it on the server (it doesn't have to be installed on the CRM server; however my environment is all-in-one box). The installation process will create a Virtual Directory under Microsoft CRM folder on IIS, and a CWR Mobile CRM Website on IIS. It also creates two shortcuts: Mobile CRM Server Configurator and Mobile CRM Server Administrator&lt;br /&gt; &lt;br /&gt;You need to run Mobile CRM Server Configurator and select your Organisation and License file (I have an Organisation call Contoso which can use a demo license which also downloadable from CWR website). The configuration process will create two databases just like CRM's: one Config database and one Organisation database.&lt;br /&gt; &lt;br /&gt;If everything going well, open CRM, navigate to [Settings] section, you may see a new link call [CWR Mobile CRM] (because the configuration process also modified the CRM Sitemap), then you may import a Profile (a sample Sales profile can be found on CWR website). After that, you can add Users with this Profile.&lt;br /&gt; &lt;br /&gt; &lt;br /&gt;&lt;span style="font-weight:bold;"&gt;The Windows Mobile Side:&lt;span style="font-style:italic;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt; &lt;br /&gt;You can either install Mobile client software through your PC (CWRDesktopInstaller.exe) or through the Device (CWRPDAInstaller.exe), the installation file can be found in the CWR Mobile CRM installation folder.  You may follow the steps when first time running the software, it will initialize CRM Mobile on this mobile device and creates a CF database (for syncing data) on it.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp0.blogger.com/_-lOIedxo3AA/SF1stIudRnI/AAAAAAAAAG8/8xjGUe8zS24/s1600-h/crmmobile2.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;" src="http://bp0.blogger.com/_-lOIedxo3AA/SF1stIudRnI/AAAAAAAAAG8/8xjGUe8zS24/s400/crmmobile2.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5214443466257155698" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Some problems I know:&lt;br /&gt;a. There is an error: "Error while updating Sitemap" when run  Mobile CRM Server Configurator;&lt;br /&gt;b. The alert/error message doesn't make much sense, e.g. "......, see log file for details";&lt;br /&gt;c. The interface of mobile device doesn't design very well.&lt;br /&gt;&lt;br /&gt;As I said early, this software is one of the most complicated CRM Add-Ons, which I can see there are some problems, hopefully CWR will fix it soon. Frankly, I know the .Net CF, I think Microsoft should put more money and top exports on it. Mobile device isn't the same as PC(which is almost universal), it is quite hardware specialised and it has a long way to go. So if you are going to deploy CRM Mobile for your company, you may need an expert.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7208889-3268241994141518464?l=jianwang.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jianwang.blogspot.com/feeds/3268241994141518464/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7208889&amp;postID=3268241994141518464' title='6 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7208889/posts/default/3268241994141518464'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7208889/posts/default/3268241994141518464'/><link rel='alternate' type='text/html' href='http://jianwang.blogspot.com/2008/06/crm-mobile-for-windows-mobile.html' title='CRM Mobile for Windows Mobile'/><author><name>Jim Wang</name><uri>http://www.blogger.com/profile/15963866631960791206</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='29' src='http://4.bp.blogspot.com/_-lOIedxo3AA/SaQ-RpTrHZI/AAAAAAAAANI/pQoZ77uYOe0/S220/Jim%27.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp1.blogger.com/_-lOIedxo3AA/SF40rMUxkgI/AAAAAAAAAHE/-aG3uhhkS6Y/s72-c/crmmobile1.jpg' height='72' width='72'/><thr:total>6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7208889.post-2487001212864739907</id><published>2008-05-19T20:40:00.004+01:00</published><updated>2008-05-20T09:17:18.020+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Report'/><category scheme='http://www.blogger.com/atom/ns#' term='SQL'/><title type='text'>Use Shared Data Source for custom CRM report</title><content type='html'>Recently I have been asked to modify some reports. In my current project we have 4 environments (Development, Training, UAT, and Production) and we have custom reports for each environment. The reports for each environment are different because the data source is different. So the deploy administrator complain about numbers of report. They come and ask me if there is a way to have one report for all environments.&lt;br /&gt;&lt;br /&gt;So this is how I managed to do it:&lt;br /&gt;&lt;br /&gt;If you have a look the CRM reports in report manager, there is a Data Source call: &lt;strong&gt;MSCRM_DataSource &lt;/strong&gt;&lt;br /&gt;I have noticed that actually all CRM reports use this data source, so why can’t I use it for our custom reports? I think it shouldn’t be a problem.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://bp0.blogger.com/_-lOIedxo3AA/SDHaoV0kWsI/AAAAAAAAAGA/Aon2lMPeVDw/s1600-h/reportmanager.jpg"&gt;&lt;img id="BLOGGER_PHOTO_ID_5202179431176886978" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://bp0.blogger.com/_-lOIedxo3AA/SDHaoV0kWsI/AAAAAAAAAGA/Aon2lMPeVDw/s400/reportmanager.jpg" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;In Visual Studio, open the report project, Add a Shared Data Sources call: &lt;strong&gt;MSCRM_DataSource&lt;/strong&gt;, it is important to keep it as same as CRM’s.&lt;br /&gt;The connection string just uses the development environment, e.g.: &lt;strong&gt;Data Source=crm;Initial Catalog=org_MSCRM&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://bp3.blogger.com/_-lOIedxo3AA/SDHbUF0kWtI/AAAAAAAAAGI/gYy8Dzo2bHw/s1600-h/reportdesigner.jpg"&gt;&lt;img id="BLOGGER_PHOTO_ID_5202180182796163794" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://bp3.blogger.com/_-lOIedxo3AA/SDHbUF0kWtI/AAAAAAAAAGI/gYy8Dzo2bHw/s400/reportdesigner.jpg" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Once finish it, upload the report rdl file by Report Manager, e.g http://crm/reports&lt;br /&gt;Notice that you shouldn't upload it from CRM directly because CRM doesn’t support this technique. (You may get an error if you do it from CRM: &lt;span style="color:#ff0000;"&gt;Object reference not set to an instance of an object&lt;/span&gt;.)&lt;br /&gt;&lt;br /&gt;So do it from Report Manager. After I upload the report, it appears in CRM Report area. That's good, however I can't edit the report! The error message is: String was not recognized as a valid DateTime.&lt;br /&gt;&lt;br /&gt;Microsoft actually has a &lt;strong&gt;KB (920125)&lt;/strong&gt; for this error: &lt;a href="http://support.microsoft.com/kb/920125"&gt;http://support.microsoft.com/kb/920125&lt;/a&gt;. The KB says: "This problem occurs because the Microsoft SQL Server Reporting Services report contains functionalities that are specific to Microsoft Dynamics CRM. For example, the Microsoft Dynamics CRM Pre-filtering functionality is specific to Microsoft Dynamics CRM."&lt;br /&gt;&lt;br /&gt;Ok, I see. I remember the default CRM pre-filtering function is 'modified on' which is a datetime data type. If you upload the report from CRM, the report property may different with what you do from Report Manager.&lt;br /&gt;&lt;br /&gt;So where is the pre-filtering values saved? If you open SQL Server Management Studio, expend ReportServer database, take a look the Catalog table. All reports information is saved in this table. I noticed there is a property element for all CRM reports: &lt;strong&gt;&amp;lt;ModifiedOnDateTime&amp;gt;2008-03-29T17:59:15&amp;lt;/ModifiedOnDateTime&amp;gt; &lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;It is a datetime data type and it doesn’t exist in the custom report! Also I noticed that the &lt;strong&gt;&amp;lt;OriginalName&amp;gt; &lt;/strong&gt;element needs to be added as well to make the CRM Download Report function working properly.&lt;br /&gt;&lt;br /&gt;So, this is how I add these elements into the custom report, the SQL query needs to run against the ReportServer database:&lt;br /&gt;&lt;br /&gt;&lt;pre class="sql" name="code"&gt;&lt;br /&gt;&lt;br /&gt;DECLARE @ReportName AS varchar(50)&lt;br /&gt;SET @ReportName = 'My CRM Report' -- Change to the report name&lt;br /&gt;&lt;br /&gt;DECLARE @ModifiedDate AS datetime&lt;br /&gt;SET @ModifiedDate =(SELECT ModifiedDate FROM Catalog WHERE Name = @ReportName)&lt;br /&gt;&lt;br /&gt;UPDATE Catalog&lt;br /&gt;SET Property = REPLACE(CONVERT(varchar(MAX), Property), '&amp;lt;/Properties&amp;gt;',&lt;br /&gt;   '&amp;lt;ModifiedOnDateTime&amp;gt;'+ CONVERT(char(19), @ModifiedDate, 126) +'&amp;lt;/ModifiedOnDateTime&amp;gt;&amp;lt;OriginalName&amp;gt;'+ @ReportName +'.rdl&amp;lt;/OriginalName&amp;gt;&amp;lt;/Properties&amp;gt;')&lt;br /&gt;WHERE (Name = @ReportName)&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;It works like a dream after run a iisreset on the CRM server. Now I can edit the report without any problem!&lt;br /&gt;&lt;br /&gt;By using this technique the advantage is: all environments will share the default CRM data source, developers don’t have to create different copies of report for each environment.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7208889-2487001212864739907?l=jianwang.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jianwang.blogspot.com/feeds/2487001212864739907/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7208889&amp;postID=2487001212864739907' title='13 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7208889/posts/default/2487001212864739907'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7208889/posts/default/2487001212864739907'/><link rel='alternate' type='text/html' href='http://jianwang.blogspot.com/2008/05/use-shared-data-source-for-custom-crm.html' title='Use Shared Data Source for custom CRM report'/><author><name>Jim Wang</name><uri>http://www.blogger.com/profile/15963866631960791206</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='29' src='http://4.bp.blogspot.com/_-lOIedxo3AA/SaQ-RpTrHZI/AAAAAAAAANI/pQoZ77uYOe0/S220/Jim%27.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp0.blogger.com/_-lOIedxo3AA/SDHaoV0kWsI/AAAAAAAAAGA/Aon2lMPeVDw/s72-c/reportmanager.jpg' height='72' width='72'/><thr:total>13</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7208889.post-3400070090071527781</id><published>2008-05-18T19:55:00.003+01:00</published><updated>2008-05-18T20:09:48.381+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Lookup'/><category scheme='http://www.blogger.com/atom/ns#' term='JScript'/><category scheme='http://www.blogger.com/atom/ns#' term='CRM 4.0'/><title type='text'>The mysterious CRM Lookup (III)</title><content type='html'>5. Let's have a look another common used filtered lookup example: &lt;span style="font-weight:bold;"&gt;I want the regarding field is set to open cases.&lt;/span&gt;&lt;br /&gt; &lt;br /&gt;&lt;span style="font-weight:bold;"&gt;a. CRM 3.0&lt;/span&gt;&lt;br /&gt; &lt;pre class="js" name="code"&gt;&lt;br /&gt;/* set the regarding to open case : Form.onLoad() */&lt;br /&gt;crmForm.all.regardingobjectid.lookuptypes = "112";&lt;br /&gt;crmForm.all.regardingobjectid.lookuptypeIcons = "/_imgs/ico_16_112.gif";&lt;br /&gt; &lt;br /&gt;/* only show the active cases : Form.onLoad() */&lt;br /&gt;if (crmForm.ObjectId != null)&lt;br /&gt;{&lt;br /&gt;  crmForm.all.regardingobjectid.lookupbrowse = 1;&lt;br /&gt;  crmForm.all.regardingobjectid.additionalparams = "fetchXml="&lt;br /&gt;    + "&amp;lt;fetch mapping='logical'&amp;gt;&amp;lt;entity name='incident'&amp;gt;&amp;lt;all-attributes /&amp;gt;&amp;lt;filter&amp;gt;"&lt;br /&gt;    + "&amp;lt;condition attribute='statecode' operator='eq' value='0' /&amp;gt;"&lt;br /&gt;    + "&amp;lt;/filter&amp;gt;&amp;lt;/entity&amp;gt;&amp;lt;/fetch&amp;gt;";&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt; &lt;br /&gt;&lt;span style="font-weight:bold;"&gt;b. CRM 4.0&lt;/span&gt;&lt;br /&gt; &lt;br /&gt;In 4.0, the above feature is not supported anymore which means not working any more, but we can still use the method which mentioned in my previous post.  Set 'statecode' as a find column of the Case Lookup View, then add the following code to the entity's onLoad():&lt;br /&gt; &lt;pre class="js" name="code"&gt;&lt;br /&gt;/* set the regarding to open case : Form.onLoad() */&lt;br /&gt;crmForm.all.regardingobjectid.lookuptypes = "112";&lt;br /&gt;crmForm.all.regardingobjectid.lookuptypeIcons = "/_imgs/ico_16_112.gif";&lt;br /&gt;crmForm.all.regardingobjectid.additionalparams = 'search=Active';&lt;br /&gt;&lt;/pre&gt; &lt;br /&gt;&lt;br /&gt;All good, now we are changing the requirement to:  &lt;span style="font-weight:bold;"&gt;I want the regarding field is set to open cases which owned by the current user!&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Ok, this simple and clean approach will not work for this a little complicated search. We need to build up a fetch query first. It's easy to use advanced find:&lt;br /&gt; &lt;br /&gt;Look for: cases&lt;br /&gt; -Status Equals Active&lt;br /&gt; -Owner Equals Current User'&lt;br /&gt; &lt;br /&gt;And then click Find, we get results.&lt;br /&gt; &lt;br /&gt;Now, how can we get benefit from this Advanced Find and get the FetchXml statements from the query? Thanks &lt;a href="http://ronaldlemmen.blogspot.com/2006/11/using-advanced-find-for-fetchxml.html"&gt;Ronald Lemmen&lt;/a&gt; who first find a trick, in the result page, paste it in the IE Address Bar:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;javascript:prompt("", resultRender.FetchXml.value); &lt;/span&gt;&lt;br /&gt; &lt;br /&gt;Then you will get a prompt window, the value is the FetchXml statements which we need.&lt;br /&gt; &lt;br /&gt;&lt;span style="font-style:italic;"&gt;&amp;lt;fetch version="1.0" output-format="xml-platform" mapping="logical" distinct="false"&amp;gt;&amp;lt;entity name="incident"&amp;gt;&amp;lt;attribute name="title"/&amp;gt;&amp;lt;attribute name="ticketnumber"/&amp;gt;&amp;lt;attribute name="createdon"/&amp;gt;&amp;lt;attribute name="incidentid"/&amp;gt;&amp;lt;order attribute="title" descending="false"/&amp;gt;&amp;lt;filter type="and"&amp;gt;&amp;lt;condition attribute="statecode" operator="eq" value="0"/&amp;gt;&amp;lt;condition attribute="ownerid" operator="eq-userid"/&amp;gt;&amp;lt;/filter&amp;gt;&amp;lt;/entity&amp;gt;&amp;lt;/fetch&amp;gt;&lt;/span&gt;&lt;br /&gt; &lt;br /&gt;Thanks &lt;a href="http://forums.microsoft.com/Dynamics/ShowPost.aspx?PostID=2792222&amp;SiteID=27"&gt;Adi Katz&lt;/a&gt; who found a brilliant way to do it, and &lt;a href="http://crm.georged.id.au/post/2008/02/16/Filtering-lookup-data-in-CRM-4.aspx"&gt;George&lt;/a&gt; modified it slightly. Basicly it overwrites the code-behind function, which I think it could be a risk. However so far so good after three months since it has been first released, I will post updates if it occurs any issue.(There is a supported filtered lookup product from &lt;a href="http://www.stunnware.com/"&gt;Michael Höhne&lt;/a&gt; which is not free but great product.)&lt;br /&gt; &lt;br /&gt;You need to modify lookupsingle.aspx file in the path \CRMWeb\_controls\lookup\lookupsingle.aspx&lt;br /&gt;Add the following codes:&lt;br /&gt;&lt;pre class="c#" name="code"&gt; &lt;br /&gt;&amp;lt;script runat="server"&amp;gt;&lt;br /&gt;protected override void OnLoad(EventArgs e)&lt;br /&gt;{&lt;br /&gt;    base.OnLoad(e);&lt;br /&gt;    crmGrid.PreRender += new EventHandler(crmGrid_PreRender);&lt;br /&gt;}&lt;br /&gt;void crmGrid_PreRender(object sender, EventArgs e)&lt;br /&gt;{&lt;br /&gt;    if (crmGrid.Parameters["search"] != null &amp;&amp; crmGrid.Parameters["search"].StartsWith("&amp;lt;fetch")) &lt;br /&gt;    { &lt;br /&gt;        crmGrid.Parameters.Add("fetchxml", crmGrid.Parameters["search"]);  &lt;br /&gt;        crmGrid.Parameters.Remove("searchvalue");  &lt;br /&gt;        this._showNewButton = false; &lt;br /&gt;    } &lt;br /&gt;}&lt;br /&gt;&amp;lt;/script&amp;gt;&lt;br /&gt;&lt;/pre&gt; &lt;br /&gt; &lt;br /&gt;And then you can filter it from entity's onLoad() just like what we did in CRM 3.0. Notice that we have pasted the FetchXml statements below(fetchStr).&lt;br /&gt; &lt;pre class="js" name="code"&gt;&lt;br /&gt;/* set the regarding to open case which owned by current user : Form.onLoad() */&lt;br /&gt;crmForm.all.regardingobjectid.lookuptypes = "112";&lt;br /&gt;crmForm.all.regardingobjectid.lookuptypeIcons = "/_imgs/ico_16_112.gif";&lt;br /&gt; &lt;br /&gt;var fetchStr = "&amp;lt;fetch version="1.0" output-format="xml-platform" mapping="logical" distinct="false"&amp;gt;&amp;lt;entity name="incident"&amp;gt;&amp;lt;attribute name="title"/&amp;gt;&amp;lt;attribute name="ticketnumber"/&amp;gt;&amp;lt;attribute name="createdon"/&amp;gt;&amp;lt;attribute name="incidentid"/&amp;gt;&amp;lt;order attribute="title" descending="false"/&amp;gt;&amp;lt;filter type="and"&amp;gt;&amp;lt;condition attribute="statecode" operator="eq" value="0"/&amp;gt;&amp;lt;condition attribute="ownerid" operator="eq-userid"/&amp;gt;&amp;lt;/filter&amp;gt;&amp;lt;/entity&amp;gt;&amp;lt;/fetch&amp;gt;";&lt;br /&gt;crmForm.all.regardingobjectid.lookupbrowse = 1;&lt;br /&gt;crmForm.all.regardingobjectid.additionalparams = "search=" + fetchStr;&lt;br /&gt; &lt;/pre&gt;&lt;br /&gt; &lt;br /&gt;That's it, now we reach the end. :)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7208889-3400070090071527781?l=jianwang.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jianwang.blogspot.com/feeds/3400070090071527781/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7208889&amp;postID=3400070090071527781' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7208889/posts/default/3400070090071527781'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7208889/posts/default/3400070090071527781'/><link rel='alternate' type='text/html' href='http://jianwang.blogspot.com/2008/05/mysterious-crm-lookup-iii.html' title='The mysterious CRM Lookup (III)'/><author><name>Jim Wang</name><uri>http://www.blogger.com/profile/15963866631960791206</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='29' src='http://4.bp.blogspot.com/_-lOIedxo3AA/SaQ-RpTrHZI/AAAAAAAAANI/pQoZ77uYOe0/S220/Jim%27.JPG'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7208889.post-4988904513750946430</id><published>2008-05-11T18:08:00.004+01:00</published><updated>2008-05-13T09:38:42.875+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Lookup'/><category scheme='http://www.blogger.com/atom/ns#' term='JScript'/><category scheme='http://www.blogger.com/atom/ns#' term='CRM 4.0'/><title type='text'>The mysterious CRM Lookup (II)</title><content type='html'>4. Now, how can we set/filter the lookup content? Because CRM3 and CRM4 are so different in lookup, so the solution is different. Let’s see a common example: &lt;strong&gt;In the Account record, only show the account owned contacts in the Primary Contact (primarycontactid) lookup.&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;a. CRM 3.0&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre class="js" name="code"&gt;&lt;br /&gt;/* CRM 3.0: only show account owned contacts in the primarycontactid lookup : Form.onLoad() */&lt;br /&gt;if (crmForm.FormType == 2 &amp;amp;&amp;amp; crmForm.ObjectId != null)&lt;br /&gt;{&lt;br /&gt;    crmForm.all.primarycontactid.lookupbrowse = 1;&lt;br /&gt;    crmForm.all.primarycontactid.additionalparams = "fetchXml="&lt;br /&gt;    + "&amp;lt;fetch mapping='logical'&amp;gt;&amp;lt;entity name='contact'&amp;gt;&amp;lt;all-attributes /&amp;gt;&amp;lt;filter&amp;gt;"&lt;br /&gt;    + "&amp;lt;condition attribute='accountid' operator='eq' value='" + crmForm.ObjectId     + "' /&amp;gt;"&lt;br /&gt;    + "&amp;lt;/filter&amp;gt;&amp;lt;/entity&amp;gt;&amp;lt;/fetch&amp;gt;";&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;b. CRM 4.0&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;As far as I know, there are two unsupported ways to do that. Because we don't need a complicated fetchxml in this case, we so could use the first approach:&lt;br /&gt;&lt;br /&gt;1. Customize Contact entity, open Contacts Lookup View, click 'Add Find Column', add the Parent Customer (parentcustomerid), save and publish it.&lt;br /&gt;2. Customize Account entity, put the following code into Form.onLoad() :&lt;br /&gt;&lt;br /&gt;&lt;pre class="js" name="code"&gt;&lt;br /&gt;/* CRM 4.0: only show account owned contacts in the primarycontactid lookup : Form.onLoad() */&lt;br /&gt;if (crmForm.FormType == 2 &amp;amp;&amp;amp; crmForm.ObjectId != null)&lt;br /&gt;{&lt;br /&gt;    var name = crmForm.all.name.DataValue;&lt;br /&gt;    crmForm.all.primarycontactid.additionalparams =  'search=' + name;&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;It's a nice approach which used the 'search' feature of the CRM lookup. &lt;a href="http://advantageworks.blogspot.com/2008/02/pseudo-filtered-lookup-dialog-in.html"&gt;When this parameter is specified it defaults the search string in the lookup dialog and applies the search when the dialog is opened.&lt;br /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;It's great, now let's change the requirement:&lt;br /&gt;How about: &lt;strong&gt;Only show the Parent Account (parentaccountid) owned contacts in the Primary Contact (primarycontactid) lookup.&lt;br /&gt;&lt;/strong&gt;&lt;br /&gt;We still need to repeat step (1), and then in the step (2):&lt;br /&gt;&lt;br /&gt;&lt;pre class="js" name="code"&gt;&lt;br /&gt;/* CRM 4.0: only show parent account owned contacts in the primarycontactid lookup: Form.onLoad() */&lt;br /&gt;FilterLookup = function(source, target)&lt;br /&gt;{&lt;br /&gt;    if (IsNull(source)  IsNull(target)) { return; }&lt;br /&gt;    var name = IsNull(source.DataValue) ? '' : source.DataValue[0].name;&lt;br /&gt;    target.additionalparams = 'search=' + name;&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Also, we need to put the following code into parentaccountid.onChange():&lt;br /&gt;&lt;br /&gt;&lt;pre class="js" name="code"&gt;&lt;br /&gt;/* CRM 4.0: only show parent account owned contacts in the primarycontactid lookup : parentaccountid.onChange() */&lt;br /&gt;FilterLookup(crmForm.all.parentaccountid, crmForm.all.primarycontactid);&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;It's great too, now how about we add another requirement on the above example:&lt;br /&gt;&lt;strong&gt;The Primary Contact (primarycontactid) should be automatically selected when this contact is the primary contact of the selected Parent Account (parentaccountid).&lt;br /&gt;&lt;/strong&gt;&lt;br /&gt;Although we could do it through AJAX, we can also do it through CRM 4.0 lookup field automatic resolutions technique. Thanks for &lt;a href="http://forums.microsoft.com/Dynamics/ShowPost.aspx?PostID=3078903&amp;amp;SiteID=27"&gt;Adi Katz&lt;/a&gt;, let's start from begin:&lt;br /&gt;&lt;br /&gt;(1) Turn off the Parent Account (parentaccountid) "automatic resolutions in field" feature by double click the field on the Form.&lt;br /&gt;(2) Put the following codes in Account.onLoad():&lt;br /&gt;&lt;br /&gt;&lt;pre class="js" name="code"&gt;&lt;br /&gt;function OnAfterAccountSelect()&lt;br /&gt;{&lt;br /&gt;    var contactLookup  = crmForm.all.primarycontactid;&lt;br /&gt;    if( contactLookup.DataValue != null ) {return;}&lt;br /&gt;  &lt;br /&gt;    contactLookup.AutoResolve = 1;&lt;br /&gt;    var accountLookup = crmForm.all.parentaccountid;&lt;br /&gt;    primaryContact = accountLookup.items[0].keyValues.primarycontactid;&lt;br /&gt;&lt;br /&gt;    contactLookup.SetFocus();&lt;br /&gt;    contactDiv = document.all.primarycontactid_d.getElementsByTagName("DIV")[0];&lt;br /&gt;    contactDiv.innerText = primaryContact.value;&lt;br /&gt;    contactLookup.Lookup( true , true , primaryContact.value , true );&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;function OnCrmPageLoad()&lt;br /&gt;{&lt;br /&gt;    crmForm.all.parentaccountid.attachEvent( "onafterselect" , OnAfterAccountSelect );&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;OnCrmPageLoad();&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;The second approach which can deal with some complicated conditions will be introduced in the next post. :)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7208889-4988904513750946430?l=jianwang.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jianwang.blogspot.com/feeds/4988904513750946430/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7208889&amp;postID=4988904513750946430' title='28 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7208889/posts/default/4988904513750946430'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7208889/posts/default/4988904513750946430'/><link rel='alternate' type='text/html' href='http://jianwang.blogspot.com/2008/05/mysterious-crm-lookup-ii.html' title='The mysterious CRM Lookup (II)'/><author><name>Jim Wang</name><uri>http://www.blogger.com/profile/15963866631960791206</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='29' src='http://4.bp.blogspot.com/_-lOIedxo3AA/SaQ-RpTrHZI/AAAAAAAAANI/pQoZ77uYOe0/S220/Jim%27.JPG'/></author><thr:total>28</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7208889.post-3327968510898970818</id><published>2008-05-04T23:03:00.005+01:00</published><updated>2008-05-11T18:23:47.479+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Lookup'/><category scheme='http://www.blogger.com/atom/ns#' term='CRM Integration'/><category scheme='http://www.blogger.com/atom/ns#' term='JScript'/><category scheme='http://www.blogger.com/atom/ns#' term='CRM 4.0'/><title type='text'>The mysterious CRM Lookup (I)</title><content type='html'>&lt;p&gt;1. As many of you already know that the CRM lookup field saves the GUID of the related entity. Let's have a deep view of the lookup field. When you create a relationship between two entities, one entity can reference the other entity through a lookup field. However it's not just create one attribute in the database, it means although you can only see one relationship created in CRM interface, there are some invisible attributes for internal/customizer use. Let's see an example, we know that we can reference some values from a lookup fields:&lt;br /&gt;&lt;pre class="js" name="code"&gt;&lt;br /&gt;crmForm.all.regardingobjectid.DataValue[0].id;  // The GUID of the lookup.&lt;br /&gt;crmForm.all.regardingobjectid.DataValue[0].name;  // The text value of the lookup.&lt;br /&gt;crmForm.all.regardingobjectid.DataValue[0].typename;  // The entity type name.&lt;br /&gt;&lt;/pre&gt;&lt;p&gt;&lt;br /&gt;But how CRM get those values? Actually when user open a CRM record, those attributes are downloaded from CRM database to the 'containers' which can be seen from entity's customization.xml, it's a complex structure which I don't want to explain in this post. So when you create a relationship between two entities, the CRM system will create more than 2 'containers'(attributes) in the database to keep other information about the lookup field(e.g. id, typename etc).&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;2. Set the default value for a lookup field, let's take a look at the special lookup field again: regardingobjectid&lt;br /&gt;In many cases, the regardingobjectid is default to Account, but how can we change the default value to Contact?&lt;br /&gt;&lt;br /&gt;In the onLoad() event, you can set the default attributes by using &lt;a href="http://msdn2.microsoft.com/en-us/library/ms754616(VS.85).aspx"&gt;setAttribute&lt;/a&gt; method which is unsupported by Microsoft, however it's a standard XML DOM method.&lt;br /&gt;&lt;br /&gt;Let's see some examples:&lt;br /&gt;&lt;/p&gt;&lt;pre class="js" name="code"&gt;&lt;br /&gt;crmForm.all.regardingobjectid.setAttribute("lookuptypes", "1,2");  //only show account and contact&lt;br /&gt;crmForm.all.regardingobjectid.setAttribute("lookuptypeIcons", "/_imgs/ico_16_1.gif :/_imgs/ico_16_2.gif");  //set the icons&lt;br /&gt;crmForm.all.regardingobjectid.setAttribute("defaulttype", "2");  //default to contact&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Instead of using setAttribute method, you can also use CRM method directly:&lt;br /&gt;&lt;pre class="js" name="code"&gt;&lt;br /&gt;crmForm.all.regardingobjectid.lookuptypes = "1,2";&lt;br /&gt;crmForm.all.regardingobjectid.lookuptypeIcons = "/_imgs/ico_16_1.gif:/_imgs/ico_16_2.gif";&lt;br /&gt;crmForm.all.regardingobjectid.defaulttype = "2"; &lt;br /&gt;&lt;/pre&gt;&lt;p&gt;&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;3. If you have a look of the URL when you open a lookup window, you may see how CRM calls a lookup:&lt;br /&gt;&lt;/p&gt;&lt;a href="http://bp3.blogger.com/_-lOIedxo3AA/SB40BLevLxI/AAAAAAAAADo/EvaoKsLxSM0/s1600-h/lookupsingle.png"&gt;&lt;img id="BLOGGER_PHOTO_ID_5196648214898355986" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://bp3.blogger.com/_-lOIedxo3AA/SB40BLevLxI/AAAAAAAAADo/EvaoKsLxSM0/s400/lookupsingle.png" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;em&gt;&lt;span style="color:#000099;"&gt;/lookupsingle.aspx?class=ActivityRegarding&amp;amp;objecttypes=1,2,3,4&amp;amp;browse=0&amp;amp;ShowNewButton=1&amp;amp;ShowPropButton=1&amp;amp;DefaultType=0&lt;/span&gt;&lt;/em&gt;&lt;br /&gt;&lt;br /&gt;lookupsingle.aspx has some parameters which can be referenced by our developers, those parameters are:&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Objecttypes : &lt;/strong&gt;Entity code, e.g. Objecttypes = "1, 2" //show account and contact&lt;br /&gt;&lt;strong&gt;DefaultType : &lt;/strong&gt;the default lookup entity, e.g. DefaultType = "2" //default to contact&lt;br /&gt;&lt;strong&gt;Browse : &lt;/strong&gt;bool, 0 = show the "Look for" bar; 1 = browse model, hide the "Look for " bar.&lt;br /&gt;&lt;strong&gt;ShowNewButton&lt;/strong&gt; : bool, 0 = hide the "New" button; 1 = show the "New" button.&lt;br /&gt;&lt;strong&gt;ShowPropButton&lt;/strong&gt; : bool, 0 = hide the "Properties" button; 1 = show the "Properties" button.&lt;br /&gt;&lt;br /&gt;In an IFRAME or a ISV solution, if you don't want users to see the 'New' Button, you can just set the URL to:&lt;br /&gt;&lt;span style="color:#000099;"&gt;&lt;em&gt;/lookupsingle.aspx?class=ActivityRegarding&amp;amp;objecttypes=1,2,3,4&amp;amp;browse=0&amp;amp;&lt;strong&gt;ShowNewButton=0&lt;/strong&gt;&amp;amp;ShowPropButton=1&amp;amp;DefaultType=0&lt;/em&gt; &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;It's cool so far! But how about if want to hide the 'New' button in CRM?&lt;br /&gt;You can't just say: crmForm.all.regardingobjectid.ShowNewButton = 0; it doesn't work. But what you can do is in the onLoad() event, use &lt;a href="http://msdn.microsoft.com/en-us/library/ms536343(VS.85).aspx"&gt;attachEvent&lt;/a&gt; method to attach a &lt;a href="http://msdn.microsoft.com/en-us/library/aa767976(VS.85).aspx"&gt;setadditionalparams&lt;/a&gt; event for the regardingobjectid. Again, those methods are all unsupported customisations, however, those are widely used in the Web development.&lt;br /&gt;&lt;pre class="js" name="code"&gt;&lt;br /&gt;/*&lt;br /&gt;    Function: show/hide the 'New' button of lookup&lt;br /&gt;    bShow = 0 : hide the New Button&lt;br /&gt;    bShow = 1 : show the New Buton&lt;br /&gt;*/&lt;br /&gt;function NewButton(bShow)&lt;br /&gt;{&lt;br /&gt;    return function()&lt;br /&gt;    {&lt;br /&gt;        crmForm.all.regardingobjectid.AddParam("ShowNewButton", bShow);&lt;br /&gt;    }&lt;br /&gt;}&lt;br /&gt;crmForm.all.regardingobjectid.attachEvent("setadditionalparams",NewButton(0));&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;p&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7208889-3327968510898970818?l=jianwang.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jianwang.blogspot.com/feeds/3327968510898970818/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7208889&amp;postID=3327968510898970818' title='52 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7208889/posts/default/3327968510898970818'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7208889/posts/default/3327968510898970818'/><link rel='alternate' type='text/html' href='http://jianwang.blogspot.com/2008/05/mysterious-crm-lookup-i.html' title='The mysterious CRM Lookup (I)'/><author><name>Jim Wang</name><uri>http://www.blogger.com/profile/15963866631960791206</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='29' src='http://4.bp.blogspot.com/_-lOIedxo3AA/SaQ-RpTrHZI/AAAAAAAAANI/pQoZ77uYOe0/S220/Jim%27.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp3.blogger.com/_-lOIedxo3AA/SB40BLevLxI/AAAAAAAAADo/EvaoKsLxSM0/s72-c/lookupsingle.png' height='72' width='72'/><thr:total>52</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7208889.post-6066024749825489983</id><published>2008-04-20T18:02:00.004+01:00</published><updated>2008-04-21T02:27:10.311+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Sure Step'/><title type='text'>Microsoft Dynamics Sure Step Methodology</title><content type='html'>&lt;a href="https://mbs.microsoft.com/partnersource/communities/consulting/SureStep.html"&gt;&lt;img id="BLOGGER_PHOTO_ID_5191374423043051298" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://bp0.blogger.com/_-lOIedxo3AA/SAt3iF2HjyI/AAAAAAAAACw/oEpuUeIlqS8/s400/surestep.jpg" border="0" /&gt;&lt;/a&gt;I'm one of the first students in UK of the Microsoft Dynamics Sure Step Methodology, the instructor was Mr. Shaun Letley who is a brilliant guy works for Microsoft UK. So in the last year I had his Sure Step training course in Reading, United Kingdom. The course was very helpful; it does help me to have a better understanding of the project methodology.&lt;br /&gt;&lt;br /&gt;The Microsoft Dynamics Sure Step Methodology is a comprehensive implementation methodology describing the processes and disciplines necessary to implement Microsoft Dynamics AX, Microsoft Dynamics CRM, Microsoft Dynamics GP, Microsoft Dynamics NAV and Microsoft Dynamics SL. The implementation of all these products has many similarities which is why the methodology has been structured as a general methodology with a product specific layer for each product. The general content is mostly the prescriptive phase by phase, activity by activity descriptions on how to carry out the implementation plus the Project Management discipline. The product specific content is typically represented as tools, templates and hyperlinks to product specific materials found outside the methodology.&lt;br /&gt;&lt;br /&gt;The methodology is actually good for everyone in the project, not only for project manager/functional manager. As I'm a technical consultant, my major job is consultant/development a solution. I can still learn some helpful tips to make sure the project is going well. Also, the Sure Step provides a full process for both big and small projects so don't make misunderstanding about it. The Sure Step is actually suitable for all dynamics projects. It also provides a lot of templates which could be use in your project! Of cause you can still using your own templates with Sure Steps, it's flexible and powerful.&lt;br /&gt;&lt;br /&gt;I strongly recommend the Sure Step methodology to all Dynamics people because it does make sure your project is well organised, delivery on time and easily maintained.&lt;br /&gt;&lt;br /&gt;Take this &lt;a href="https://mbs.microsoft.com/partnersource/communities/consulting/SureStep.html"&gt;link&lt;/a&gt; on PartnerSource to see the full details about Microsoft Dynamics Sure Step Methodology.&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7208889-6066024749825489983?l=jianwang.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jianwang.blogspot.com/feeds/6066024749825489983/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7208889&amp;postID=6066024749825489983' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7208889/posts/default/6066024749825489983'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7208889/posts/default/6066024749825489983'/><link rel='alternate' type='text/html' href='http://jianwang.blogspot.com/2008/04/microsoft-dynamics-sure-step.html' title='Microsoft Dynamics Sure Step Methodology'/><author><name>Jim Wang</name><uri>http://www.blogger.com/profile/15963866631960791206</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='29' src='http://4.bp.blogspot.com/_-lOIedxo3AA/SaQ-RpTrHZI/AAAAAAAAANI/pQoZ77uYOe0/S220/Jim%27.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp0.blogger.com/_-lOIedxo3AA/SAt3iF2HjyI/AAAAAAAAACw/oEpuUeIlqS8/s72-c/surestep.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7208889.post-3519154479292704250</id><published>2008-04-19T11:19:00.000+01:00</published><updated>2008-04-19T11:24:45.350+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Xml'/><category scheme='http://www.blogger.com/atom/ns#' term='CRM 4.0'/><title type='text'>"You have exceeded the maximum number of 2000 characters in this field; it will be truncated."</title><content type='html'>&lt;a href="http://bp0.blogger.com/_-lOIedxo3AA/SAnILl2HjxI/AAAAAAAAACo/Hz_FL8kue10/s1600-h/truncated.jpg"&gt;&lt;img id="BLOGGER_PHOTO_ID_5190900146984423186" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://bp0.blogger.com/_-lOIedxo3AA/SAnILl2HjxI/AAAAAAAAACo/Hz_FL8kue10/s400/truncated.jpg" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;When you create a campaign in CRM 4.0, the Office field(attribute name: objective) has a 2,000 characters limit. How to get rid of the limitation?&lt;br /&gt;&lt;br /&gt;It's a system field which you can't change its MaxLength from CRM customisation interface, however, you could make change from the customisation.xml file.&lt;br /&gt;&lt;br /&gt;What you need to do is: export the campaign entity as a xml file, open the field, search "objective", you may find it's property: &lt;maxlength&gt;2000&lt;/maxlength&gt;, change it as you like(In CRM 4.0 the ntext data type has the MaxLength limitation up to 100,000 which is much better than CRM 3.0). Then save the file, import into CRM, and publish it. It works as you wish.&lt;br /&gt;&lt;br /&gt;Although it's an unsupported customisation, since CRM 4.0 does allow you extend the field length(using DMM), so I think it's safe and nearly supported. :)&lt;br /&gt;&lt;br /&gt;By the way, this technique can be used in many places, not just for this attribute. It also works in CRM 3.0.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7208889-3519154479292704250?l=jianwang.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jianwang.blogspot.com/feeds/3519154479292704250/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7208889&amp;postID=3519154479292704250' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7208889/posts/default/3519154479292704250'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7208889/posts/default/3519154479292704250'/><link rel='alternate' type='text/html' href='http://jianwang.blogspot.com/2008/04/you-have-exceeded-maximum-number-of.html' title='&quot;You have exceeded the maximum number of 2000 characters in this field; it will be truncated.&quot;'/><author><name>Jim Wang</name><uri>http://www.blogger.com/profile/15963866631960791206</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='29' src='http://4.bp.blogspot.com/_-lOIedxo3AA/SaQ-RpTrHZI/AAAAAAAAANI/pQoZ77uYOe0/S220/Jim%27.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp0.blogger.com/_-lOIedxo3AA/SAnILl2HjxI/AAAAAAAAACo/Hz_FL8kue10/s72-c/truncated.jpg' height='72' width='72'/><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7208889.post-7598679056048352775</id><published>2008-04-08T18:18:00.002+01:00</published><updated>2008-04-08T18:48:58.954+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='JScript'/><title type='text'>How to format a number field(integer) without showing commas?</title><content type='html'>There is an interesting topic on the &lt;a href="http://forums.microsoft.com/Dynamics/ShowPost.aspx?PostID=3136913&amp;amp;SiteID=27"&gt;CRM Forum&lt;/a&gt; about how to format an integer field without commas. For example, if you type: &lt;span style="font-weight: bold;"&gt;123456&lt;/span&gt; in an integer field, you may see &lt;span style="font-weight: bold;"&gt;123,456&lt;/span&gt; once it loses focus. CRM automatically add a ',' between 3 numbers. There's a global setting to get rid of it, however, it will get rid of all integer field format. How about if you just want to remove the format for just one field?&lt;br /&gt;&lt;br /&gt;As you may know, MSCRM uses htc files to format the different type of input fields as same as email address etc, see my another &lt;a href="http://jianwang.blogspot.com/2007/07/how-to-allow-in-email-address.html"&gt;post&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;If you want to get the value of an attribute, in CRM we use: DataValue, e.g:  &lt;span style="font-weight: bold;"&gt;crmForm.all.new_number.&lt;span style="color: rgb(0, 102, 0);"&gt;DataValue&lt;/span&gt;; &lt;/span&gt;&lt;br /&gt;Notice that the DataValue is the real data saved in the database.&lt;br /&gt;&lt;br /&gt;However, if you want to get the formatted value,  you may use this:&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;crmForm.all.new_number.&lt;span style="color: rgb(0, 0, 153);"&gt;value&lt;/span&gt;;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;So the trick is give the &lt;span style="font-weight: bold; color: rgb(0, 102, 0);"&gt;DataValue &lt;/span&gt;overwrites the &lt;span style="font-weight: bold; color: rgb(0, 0, 153);"&gt;value &lt;/span&gt;property.&lt;br /&gt;&lt;br /&gt;Put the following code into the entity's onLoad() event, and the same code puts into the field's onChange() event.&lt;br /&gt;&lt;pre class="js" name="code"&gt;&lt;br /&gt;if(crmForm.all.new_number != null &amp;amp;&amp;amp; crmForm.all.new_number.DataValue != null)&lt;br /&gt;{&lt;br /&gt; crmForm.all.new_number.value = crmForm.all.new_number.DataValue;&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Enjoy it!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7208889-7598679056048352775?l=jianwang.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jianwang.blogspot.com/feeds/7598679056048352775/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7208889&amp;postID=7598679056048352775' title='10 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7208889/posts/default/7598679056048352775'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7208889/posts/default/7598679056048352775'/><link rel='alternate' type='text/html' href='http://jianwang.blogspot.com/2008/04/how-to-format-number-fieldinteger.html' title='How to format a number field(integer) without showing commas?'/><author><name>Jim Wang</name><uri>http://www.blogger.com/profile/15963866631960791206</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='29' src='http://4.bp.blogspot.com/_-lOIedxo3AA/SaQ-RpTrHZI/AAAAAAAAANI/pQoZ77uYOe0/S220/Jim%27.JPG'/></author><thr:total>10</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7208889.post-8431808035781146856</id><published>2008-04-05T12:31:00.007+01:00</published><updated>2008-04-07T14:25:19.295+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='CRM Integration'/><category scheme='http://www.blogger.com/atom/ns#' term='JScript'/><category scheme='http://www.blogger.com/atom/ns#' term='ASP.Net'/><title type='text'>Add client-side Microsoft Office Word Spell Checker in CRM Email entity</title><content type='html'>&lt;a href="http://bp3.blogger.com/_-lOIedxo3AA/R_ogIqL5pLI/AAAAAAAAACg/TmkoVUtkA-E/s1600-h/spellchecker.JPG"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;" src="http://bp3.blogger.com/_-lOIedxo3AA/R_ogIqL5pLI/AAAAAAAAACg/TmkoVUtkA-E/s400/spellchecker.JPG" border="0" alt=""id="BLOGGER_PHOTO_ID_5186493254005793970" /&gt;&lt;/a&gt;&lt;br /&gt;There are many CRM spell checker add-ons on the Internet, most of those are free, but they are all server-side spell checkers.&lt;br /&gt;&lt;br /&gt;Today let's introduce the new client-side Word Spell Checker which uses Microsoft Office Word spell check function. It does give users a familiar feeling and larger database. It also uses Word's spell check settings. So I think users will love it. It has been used for one of our clients live environment for half year, and it has great feedbacks.&lt;br /&gt;&lt;br /&gt;As you can see, the client machine must have Microsoft Word installed for using this technique.(My clients are using Microsoft Office Word 2003, I'm not sure if it's compatible with Word 2007, please feel free to test this solution)&lt;br /&gt;&lt;br /&gt;The file needs to be modified is: &lt;strong&gt;CRMWeb\Activities\email\edit.aspx&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;You may already recognized that it's an unsupported customization, so please make backups just in case your customization could damage the system and also could be overwrite by Hotfixs/Rollups.&lt;br /&gt;&lt;br /&gt;Just simply add a function:&lt;br /&gt;&lt;br /&gt;&lt;pre class="js" name="code"&gt;&lt;br /&gt;/*  Microsoft Office Word Spelling Check*/&lt;br /&gt; &lt;br /&gt;function SpellCheck(field)&lt;br /&gt;{&lt;br /&gt;  window.frames[field].document.execCommand("Copy");&lt;br /&gt;  textRange = window.frames[field].document.body.createTextRange();&lt;br /&gt;  textRange.execCommand("Copy");&lt;br /&gt; &lt;br /&gt;  try&lt;br /&gt;  {&lt;br /&gt;    var oWord = new ActiveXObject("Word.Application");&lt;br /&gt;    oWord.Visible = false;&lt;br /&gt;    oWord.Documents.Add();&lt;br /&gt;    oWord.Top = -2000;&lt;br /&gt;    oWord.Selection.Paste();&lt;br /&gt;    oWord.ActiveDocument.CheckSpelling();&lt;br /&gt;    oWord.Selection.WholeStory();&lt;br /&gt;    oWord.Selection.Copy();&lt;br /&gt;    oWord.ActiveDocument.Close(0);&lt;br /&gt;    window.frames[field].focus();&lt;br /&gt;    window.frames[field].document.execCommand("SelectAll");&lt;br /&gt;    window.frames[field].document.execCommand("Paste");&lt;br /&gt;  }&lt;br /&gt;  catch(err)&lt;br /&gt;  {&lt;br /&gt;    alert("Error loading Microsoft Word Spelling Check: " + err);&lt;br /&gt;  }&lt;br /&gt;  finally&lt;br /&gt;  {&lt;br /&gt;    oWord.Quit(0);&lt;br /&gt;  }&lt;br /&gt; &lt;br /&gt;  alert("Spelling Check Finished!");&lt;br /&gt; &lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;You also need to modify the isv.config.xml fie to call this function:&lt;br /&gt;&lt;br /&gt;&lt;pre class="js" name="code"&gt;&lt;br /&gt;    &amp;lt;Entity name="email"&amp;gt;&lt;br /&gt;      &amp;lt;ToolBar ValidForCreate="1" ValidForUpdate="1"&amp;gt;&lt;br /&gt;        &amp;lt;Button Title="Spell Check" ToolTip="Spell Check" Icon="/_imgs/ico_18_home.gif" JavaScript="SpellCheck('descriptionIFrame');" /&amp;gt;&lt;br /&gt;      &amp;lt;/ToolBar&amp;gt;&lt;br /&gt;    &amp;lt;/Entity&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;What the function does is copy the text user typed in the Email body(descriptionIFrame), and paste it to a Word document, the document is unseenable because it has been moved out of the screen(oWord.Top = -2000) , then the function call Word.CheckSpelling() method to check the text just pasted. After correct all words, it will paste the whole text back to the Email body, and close the Word process.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7208889-8431808035781146856?l=jianwang.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jianwang.blogspot.com/feeds/8431808035781146856/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7208889&amp;postID=8431808035781146856' title='15 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7208889/posts/default/8431808035781146856'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7208889/posts/default/8431808035781146856'/><link rel='alternate' type='text/html' href='http://jianwang.blogspot.com/2008/04/add-client-side-microsoft-office-word.html' title='Add client-side Microsoft Office Word Spell Checker in CRM Email entity'/><author><name>Jim Wang</name><uri>http://www.blogger.com/profile/15963866631960791206</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='29' src='http://4.bp.blogspot.com/_-lOIedxo3AA/SaQ-RpTrHZI/AAAAAAAAANI/pQoZ77uYOe0/S220/Jim%27.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp3.blogger.com/_-lOIedxo3AA/R_ogIqL5pLI/AAAAAAAAACg/TmkoVUtkA-E/s72-c/spellchecker.JPG' height='72' width='72'/><thr:total>15</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7208889.post-8596981067703752380</id><published>2008-03-08T11:50:00.001Z</published><updated>2008-03-08T11:55:04.841Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='CRM 4.0'/><title type='text'>Mail Merge function for custom entities upgraded from CRM 3.0</title><content type='html'>&lt;p face="Calibri" size="11pt" style="margin: 0in;"&gt;CRM 4.0 has a great function which provides the Mail Merge function for custom entities.&lt;/p&gt;  &lt;p face="Calibri" size="11pt" style="margin: 0in;"&gt;However, it only seems to work for those entities you created in CRM 4.0, it doesn't work for entities which upgraded from CRM 3.0.&lt;/p&gt;  &lt;p face="Calibri" size="11pt" style="margin: 0in;"&gt; &lt;/p&gt;&lt;p style="margin: 0in; font-family: Calibri; font-size: 11pt;"&gt;&lt;br /&gt;&lt;/p&gt;  &lt;p style="margin: 0in; font-family: Calibri; font-size: 11pt;"&gt;There's a new flag in CRM 4.0 customizations.xml, calls: &lt;span style="font-weight: bold;"&gt;IsMailMergeEnabled&lt;/span&gt; which wasn't exist on CRM 3.0 customizations.xml. When we upgrade CRM from 3.0 to 4.0, it's supposed to be upgraded as well, but it doesn't.&lt;/p&gt;  &lt;p style="margin: 0in; font-family: Calibri; font-size: 11pt;"&gt; &lt;/p&gt;&lt;p style="margin: 0in; font-family: Calibri; font-size: 11pt;"&gt;&lt;br /&gt;&lt;/p&gt;  &lt;p style="margin: 0in; font-family: Calibri; font-size: 11pt;"&gt;I write a small command tool to do so, how to use the tool?&lt;/p&gt;  &lt;p style="margin: 0in 0in 0in 0.375in; font-family: Calibri; font-size: 11pt;"&gt;1. Export all entities from CRM 4.0, we may just call it: customizations.xml&lt;/p&gt;  &lt;p style="margin: 0in 0in 0in 0.375in; font-family: Calibri; font-size: 11pt;"&gt;2. Run the command line tool: &lt;/p&gt;  &lt;p style="margin: 0in 0in 0in 0.75in; font-weight: bold; font-family: Calibri; font-size: 11pt;"&gt;CrmTool.exe customizations.xml&lt;/p&gt;  &lt;p style="margin: 0in 0in 0in 0.375in; font-family: Calibri; font-size: 11pt;"&gt;3. What it does just loop all custom entities, and add the flag onto it. It saves time if you had lots of custom entities just as I do.&lt;/p&gt;  &lt;p style="margin: 0in; font-family: Calibri; font-size: 11pt;"&gt; &lt;/p&gt;&lt;p style="margin: 0in; font-family: Calibri; font-size: 11pt;"&gt;&lt;br /&gt;&lt;/p&gt;  &lt;p style="margin: 0in; font-family: Calibri; font-size: 11pt;"&gt;Enjoy it!&lt;/p&gt;  &lt;p style="margin: 0in; font-family: Calibri; font-size: 11pt;"&gt; &lt;/p&gt;&lt;p style="margin: 0in; font-family: Calibri; font-size: 11pt;"&gt;&lt;br /&gt;&lt;/p&gt;  &lt;p style="margin: 0in; font-family: Calibri; font-size: 11pt;"&gt;&lt;a href="http://code.msdn.microsoft.com/Project/Download/FileDownload.aspx?ProjectName=crm&amp;amp;DownloadId=1158"&gt;Download CrmTool.exe from MSDN&lt;/a&gt;&lt;/p&gt;&lt;p style="margin: 0in; font-family: Calibri; font-size: 11pt;"&gt;&lt;a href="http://code.msdn.microsoft.com/Project/Download/FileDownload.aspx?ProjectName=crm&amp;amp;DownloadId=1158"&gt;&lt;br /&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7208889-8596981067703752380?l=jianwang.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jianwang.blogspot.com/feeds/8596981067703752380/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7208889&amp;postID=8596981067703752380' title='24 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7208889/posts/default/8596981067703752380'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7208889/posts/default/8596981067703752380'/><link rel='alternate' type='text/html' href='http://jianwang.blogspot.com/2008/03/mail-merge-function-for-custom-entities_08.html' title='Mail Merge function for custom entities upgraded from CRM 3.0'/><author><name>Jim Wang</name><uri>http://www.blogger.com/profile/15963866631960791206</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='29' src='http://4.bp.blogspot.com/_-lOIedxo3AA/SaQ-RpTrHZI/AAAAAAAAANI/pQoZ77uYOe0/S220/Jim%27.JPG'/></author><thr:total>24</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7208889.post-1269324150790438105</id><published>2008-02-23T23:27:00.003Z</published><updated>2008-03-15T01:04:04.084Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='Web Service'/><category scheme='http://www.blogger.com/atom/ns#' term='Ajax'/><category scheme='http://www.blogger.com/atom/ns#' term='Xml'/><category scheme='http://www.blogger.com/atom/ns#' term='JScript'/><category scheme='http://www.blogger.com/atom/ns#' term='CRM 4.0'/><title type='text'>Show how many activities/history associated with a record</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp0.blogger.com/_-lOIedxo3AA/R8CyWNomCJI/AAAAAAAAACQ/3iAgp23TshY/s1600-h/activities.jpg"&gt;&lt;img id="BLOGGER_PHOTO_ID_5170328466908121234" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: pointer; TEXT-ALIGN: center" alt="" src="http://bp0.blogger.com/_-lOIedxo3AA/R8CyWNomCJI/AAAAAAAAACQ/3iAgp23TshY/s400/activities.jpg" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Sometimes we want to see how many activities/history associated with a record, it's nice to have a number just like the Outlook Inbox. &lt;br /&gt;&lt;br /&gt;Here's the code, it works fine on both CRM 3.0 and 4.0 (slightly different). Please notice that you have to reload the record to get the current number after you add/close an activity.&lt;br /&gt;&lt;br /&gt;&lt;pre name="code" class="js"&gt;&lt;br /&gt;var buXml = GetRegardingActivity();&lt;br /&gt;&lt;br /&gt;if(buXml != null)&lt;br /&gt;{&lt;br /&gt;    var buNodes = buXml.selectNodes("//BusinessEntity/statecode"); // CRM 3.0&lt;br /&gt;&lt;br /&gt;    //var buNodes = buXml.selectNodes("//BusinessEntity/q1:statecode"); // CRM 4.0&lt;br /&gt;    var iActivity = 0;&lt;br /&gt;    var iHistory = 0;&lt;br /&gt;&lt;br /&gt;    if(buNodes != null )&lt;br /&gt;    {&lt;br /&gt;        /*get values*/&lt;br /&gt;        for( i = 0; i &amp;lt; buNodes.length; i++)&lt;br /&gt;        {&lt;br /&gt;            switch(buNodes[i].text)&lt;br /&gt;            {&lt;br /&gt;                case "Open" : iActivity++; break;&lt;br /&gt;                case "Scheduled" : iActivity++; break;&lt;br /&gt;                case "Completed" : iHistory++; break;&lt;br /&gt;                case "Canceled" : iHistory++; break;&lt;br /&gt;            }&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;        if(document.getElementById('navActivities') != null)&lt;br /&gt;        {&lt;br /&gt;            document.getElementById('navActivities').getElementsByTagName('NOBR')[0].innerText = document.getElementById('navActivities').getElementsByTagName('NOBR')[0].innerText + " (" + iActivity + ")";&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;        if(document.getElementById('navActivityHistory') != null)&lt;br /&gt;        {&lt;br /&gt;            document.getElementById('navActivityHistory').getElementsByTagName('NOBR')[0].innerText = document.getElementById('navActivityHistory').getElementsByTagName('NOBR')[0].innerText + " (" + iHistory + ")";&lt;br /&gt;        }&lt;br /&gt;    }&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;function GetRegardingActivity()&lt;br /&gt;{&lt;br /&gt;    var xml = "" +&lt;br /&gt;    "&amp;lt;?xml version=\"1.0\" encoding=\"utf-8\"?&amp;gt;" +&lt;br /&gt;    "&amp;lt;soap:Envelope xmlns:soap=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\"&amp;gt;" +&lt;br /&gt;    " &amp;lt;soap:Body&amp;gt;" +&lt;br /&gt;    " &amp;lt;query xmlns:q1=\"http://schemas.microsoft.com/crm/2006/Query\" xsi:type=\"q1:QueryExpression\" xmlns=\"http://schemas.microsoft.com/crm/2006/WebServices\"&amp;gt;" +&lt;br /&gt;    " &amp;lt;q1:EntityName&amp;gt;activitypointer&amp;lt;/q1:EntityName&amp;gt;" +&lt;br /&gt;    " &amp;lt;q1:ColumnSet xsi:type=\"q1:ColumnSet\"&amp;gt;" +&lt;br /&gt;    " &amp;lt;q1:Attributes&amp;gt;" +&lt;br /&gt;    " &amp;lt;q1:Attribute&amp;gt;statecode&amp;lt;/q1:Attribute&amp;gt;" +&lt;br /&gt;    " &amp;lt;/q1:Attributes&amp;gt;" +&lt;br /&gt;    " &amp;lt;/q1:ColumnSet&amp;gt;" +&lt;br /&gt;    " &amp;lt;q1:Distinct&amp;gt;false&amp;lt;/q1:Distinct&amp;gt;" +&lt;br /&gt;    " &amp;lt;q1:Criteria&amp;gt;" +&lt;br /&gt;    " &amp;lt;q1:FilterOperator&amp;gt;And&amp;lt;/q1:FilterOperator&amp;gt;" +&lt;br /&gt;    " &amp;lt;q1:Conditions&amp;gt;" +&lt;br /&gt;    " &amp;lt;q1:Condition&amp;gt;" +&lt;br /&gt;    " &amp;lt;q1:AttributeName&amp;gt;regardingobjectid&amp;lt;/q1:AttributeName&amp;gt;" +&lt;br /&gt;    " &amp;lt;q1:Operator&amp;gt;Equal&amp;lt;/q1:Operator&amp;gt;" +&lt;br /&gt;    " &amp;lt;q1:Values&amp;gt;" +&lt;br /&gt;    " &amp;lt;q1:Value xsi:type=\"xsd:string\"&amp;gt;" + crmForm.ObjectId + "&amp;lt;/q1:Value&amp;gt;" +&lt;br /&gt;    " &amp;lt;/q1:Values&amp;gt;" +&lt;br /&gt;    " &amp;lt;/q1:Condition&amp;gt;" +&lt;br /&gt;    " &amp;lt;/q1:Conditions&amp;gt;" +&lt;br /&gt;    " &amp;lt;/q1:Criteria&amp;gt;" +&lt;br /&gt;    " &amp;lt;/query&amp;gt;" +&lt;br /&gt;    " &amp;lt;/soap:Body&amp;gt;" +&lt;br /&gt;    "&amp;lt;/soap:Envelope&amp;gt;" +&lt;br /&gt;    "";&lt;br /&gt;&lt;br /&gt;    var xmlHttpRequest = new ActiveXObject("Msxml2.XMLHTTP");&lt;br /&gt;    xmlHttpRequest.Open("POST", "/mscrmservices/2006/CrmService.asmx", false);&lt;br /&gt;    xmlHttpRequest.setRequestHeader("SOAPAction","http://schemas.microsoft.com/crm/2006/WebServices/RetrieveMultiple");&lt;br /&gt;    xmlHttpRequest.setRequestHeader("Content-Type", "text/xml; charset=utf-8");&lt;br /&gt;    xmlHttpRequest.setRequestHeader("Content-Length", xml.length);&lt;br /&gt;    xmlHttpRequest.send(xml);&lt;br /&gt;&lt;br /&gt;    var resultXml = xmlHttpRequest.responseXML;&lt;br /&gt;    return resultXml;&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7208889-1269324150790438105?l=jianwang.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jianwang.blogspot.com/feeds/1269324150790438105/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7208889&amp;postID=1269324150790438105' title='37 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7208889/posts/default/1269324150790438105'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7208889/posts/default/1269324150790438105'/><link rel='alternate' type='text/html' href='http://jianwang.blogspot.com/2008/02/show-how-many-activitieshistory.html' title='Show how many activities/history associated with a record'/><author><name>Jim Wang</name><uri>http://www.blogger.com/profile/15963866631960791206</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='29' src='http://4.bp.blogspot.com/_-lOIedxo3AA/SaQ-RpTrHZI/AAAAAAAAANI/pQoZ77uYOe0/S220/Jim%27.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp0.blogger.com/_-lOIedxo3AA/R8CyWNomCJI/AAAAAAAAACQ/3iAgp23TshY/s72-c/activities.jpg' height='72' width='72'/><thr:total>37</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7208889.post-8708501463586542803</id><published>2008-02-01T12:21:00.000Z</published><updated>2008-02-01T12:33:08.275Z</updated><title type='text'>Happy Chinese New Year:  2008 - The Year of The Rat</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp2.blogger.com/_-lOIedxo3AA/R6MRcH2lV7I/AAAAAAAAACI/fJ0WhsJ_ohk/s1600-h/mouse-year.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp2.blogger.com/_-lOIedxo3AA/R6MRcH2lV7I/AAAAAAAAACI/fJ0WhsJ_ohk/s200/mouse-year.jpg" alt="" id="BLOGGER_PHOTO_ID_5161988772738717618" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;p&gt;&lt;b&gt;&lt;span style=";font-family:&amp;quot;;font-size:11;"  &gt;7&lt;sup&gt;th&lt;/sup&gt; Feb 2008: Chinese New Year&lt;/span&gt;&lt;/b&gt;&lt;span style=";font-family:&amp;quot;;font-size:11;"  &gt; or &lt;b&gt;Spring Festival&lt;/b&gt; (&lt;a href="http://en.wikipedia.org/wiki/Simplified_Chinese_character" title="Simplified Chinese character"&gt;simplified Chinese&lt;/a&gt;: &lt;a href="http://en.wiktionary.org/wiki/%E6%98%A5" title="wikt:春"&gt;&lt;span lang="zh-Hans"&gt;&lt;span  lang="ZH-CN" style="font-family:宋体;"&gt;春&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;a href="http://en.wiktionary.org/wiki/%E8%8A%82" title="wikt:节"&gt;&lt;span  lang="ZH-CN" style="font-family:宋体;"&gt;节&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;; &lt;a href="http://en.wikipedia.org/wiki/Traditional_Chinese_character" title="Traditional Chinese character"&gt;traditional Chinese&lt;/a&gt;: &lt;a href="http://en.wiktionary.org/wiki/%E6%98%A5" title="wikt:春"&gt;&lt;span lang="zh-Hant"&gt;&lt;span  lang="ZH-CN" style="font-family:宋体;"&gt;春&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;a href="http://en.wiktionary.org/wiki/%E7%AF%80" title="wikt:節"&gt;&lt;span  lang="ZH-CN" style="font-family:宋体;"&gt;節&lt;/span&gt;&lt;/a&gt;; &lt;a href="http://en.wikipedia.org/wiki/Pinyin" title="Pinyin"&gt;pinyin&lt;/a&gt;: &lt;span lang="pny"&gt;Chūnjié&lt;/span&gt;), or the &lt;a href="http://en.wikipedia.org/wiki/Lunar_New_Year" title="Lunar New Year"&gt;Lunar New Year&lt;/a&gt; (&lt;a href="http://en.wikipedia.org/wiki/Simplified_Chinese_character" title="Simplified Chinese character"&gt;simplified Chinese&lt;/a&gt;: &lt;a href="http://en.wiktionary.org/wiki/%E5%86%9C" title="wikt:农"&gt;&lt;span lang="zh-Hans"&gt;&lt;span  lang="ZH-CN" style="font-family:宋体;"&gt;农&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;a href="http://en.wiktionary.org/wiki/%E5%8E%86" title="wikt:历"&gt;&lt;span  lang="ZH-CN" style="font-family:宋体;"&gt;历&lt;/span&gt;&lt;/a&gt;&lt;a href="http://en.wiktionary.org/wiki/%E6%96%B0" title="wikt:新"&gt;&lt;span  lang="ZH-CN" style="font-family:宋体;"&gt;新&lt;/span&gt;&lt;/a&gt;&lt;a href="http://en.wiktionary.org/wiki/%E5%B9%B4" title="wikt:年"&gt;&lt;span  lang="ZH-CN" style="font-family:宋体;"&gt;年&lt;/span&gt;&lt;/a&gt;; &lt;a href="http://en.wikipedia.org/wiki/Traditional_Chinese_character" title="Traditional Chinese character"&gt;traditional Chinese&lt;/a&gt;: &lt;a href="http://en.wiktionary.org/wiki/%E8%BE%B2" title="wikt:農"&gt;&lt;span lang="zh-Hant"&gt;&lt;span  lang="ZH-CN" style="font-family:宋体;"&gt;農&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;a href="http://en.wiktionary.org/wiki/%E6%9B%86" title="wikt:曆"&gt;&lt;span  lang="ZH-CN" style="font-family:宋体;"&gt;曆&lt;/span&gt;&lt;/a&gt;&lt;a href="http://en.wiktionary.org/wiki/%E6%96%B0" title="wikt:新"&gt;&lt;span  lang="ZH-CN" style="font-family:宋体;"&gt;新&lt;/span&gt;&lt;/a&gt;&lt;a href="http://en.wiktionary.org/wiki/%E5%B9%B4" title="wikt:年"&gt;&lt;span  lang="ZH-CN" style="font-family:宋体;"&gt;年&lt;/span&gt;&lt;/a&gt;; &lt;a href="http://en.wikipedia.org/wiki/Pinyin" title="Pinyin"&gt;pinyin&lt;/a&gt;: &lt;span lang="pny"&gt;Nónglì xīnnián&lt;/span&gt;), is the most important of the &lt;a href="http://en.wikipedia.org/wiki/Traditional_Chinese_holidays" title="Traditional Chinese holidays"&gt;traditional Chinese holidays&lt;/a&gt;. It is an important holiday in &lt;a href="http://en.wikipedia.org/wiki/East_Asia" title="East Asia"&gt;East Asia&lt;/a&gt;. The festival traditionally begins on the first day of the first lunar month (&lt;a href="http://en.wikipedia.org/wiki/Chinese_language" title="Chinese language"&gt;Chinese&lt;/a&gt;: &lt;span lang="zh"&gt;&lt;span style=";font-family:宋体;font-size:11;"  lang="ZH" &gt;正月&lt;/span&gt;&lt;/span&gt;&lt;span style=";font-family:&amp;quot;;font-size:11;"  &gt;; &lt;a href="http://en.wikipedia.org/wiki/Pinyin" title="Pinyin"&gt;pinyin&lt;/a&gt;: &lt;span lang="pny"&gt;zhēng yuè&lt;/span&gt;) in the &lt;a href="http://en.wikipedia.org/wiki/Chinese_calendar" title="Chinese calendar"&gt;Chinese calendar&lt;/a&gt; and ends on the 15th; this day is called &lt;a href="http://en.wikipedia.org/wiki/Lantern_Festival" title="Lantern Festival"&gt;Lantern Festival&lt;/a&gt; (&lt;a href="http://en.wikipedia.org/wiki/Simplified_Chinese_character" title="Simplified Chinese character"&gt;simplified Chinese&lt;/a&gt;: &lt;a href="http://en.wiktionary.org/wiki/%E5%85%83%E5%AE%B5" title="wikt:元宵"&gt;&lt;span lang="zh-Hans"&gt;&lt;span  lang="ZH-CN" style="font-family:宋体;"&gt;元宵&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;a href="http://en.wiktionary.org/wiki/%E8%8A%82" title="wikt:节"&gt;&lt;span  lang="ZH-CN" style="font-family:宋体;"&gt;节&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;; &lt;a href="http://en.wikipedia.org/wiki/Traditional_Chinese_character" title="Traditional Chinese character"&gt;traditional Chinese&lt;/a&gt;: &lt;a href="http://en.wiktionary.org/wiki/%E5%85%83%E5%AE%B5" title="wikt:元宵"&gt;&lt;span lang="zh-Hant"&gt;&lt;span  lang="ZH-CN" style="font-family:宋体;"&gt;元宵&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;a href="http://en.wiktionary.org/wiki/%E7%AF%80" title="wikt:節"&gt;&lt;span  lang="ZH-CN" style="font-family:宋体;"&gt;節&lt;/span&gt;&lt;/a&gt;; &lt;a href="http://en.wikipedia.org/wiki/Pinyin" title="Pinyin"&gt;pinyin&lt;/a&gt;: &lt;span lang="pny"&gt;yuánxiāojié&lt;/span&gt;). Chinese New Year's Eve is known as &lt;i&gt;Chúxī&lt;/i&gt; (&lt;span style=";font-family:宋体;font-size:11;"  lang="ZH-CN" &gt;除夕&lt;/span&gt;&lt;span style=";font-family:&amp;quot;;font-size:11;"  &gt;). &lt;i&gt;Chu&lt;/i&gt; literally means "change" and &lt;i&gt;xi&lt;/i&gt; means "Eve".&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style=""&gt;The Chinese calendar is based on a combination of lunar and solar movements. The lunar cycle is about 29.5 days. In order to "catch up" with the solar calendar the Chinese insert an extra month once every few years (seven years out of a 19-yearcycle). This is the same as adding an extra day on leap year. This is why, according to the solar calendar, the Chinese New Year falls on a different date each year.&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/7208889-8708501463586542803?l=jianwang.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jianwang.blogspot.com/feeds/8708501463586542803/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7208889&amp;postID=8708501463586542803' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7208889/posts/default/8708501463586542803'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7208889/posts/default/8708501463586542803'/><link rel='alternate' type='text/html' href='http://jianwang.blogspot.com/2008/02/happy-chinese-new-year-2008-year-of-rat.html' title='Happy Chinese New Year:  2008 - The Year of The Rat'/><author><name>Jim Wang</name><uri>http://www.blogger.com/profile/15963866631960791206</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='29' src='http://4.bp.blogspot.com/_-lOIedxo3AA/SaQ-RpTrHZI/AAAAAAAAANI/pQoZ77uYOe0/S220/Jim%27.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp2.blogger.com/_-lOIedxo3AA/R6MRcH2lV7I/AAAAAAAAACI/fJ0WhsJ_ohk/s72-c/mouse-year.jpg' height='72' width='72'/><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7208889.post-3205473976107386023</id><published>2008-01-31T17:51:00.000Z</published><updated>2008-01-31T17:55:05.981Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='CRM Outlook'/><category scheme='http://www.blogger.com/atom/ns#' term='CRM 4.0'/><title type='text'>Install CRM 4.0 and Outlook client on the same box</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp3.blogger.com/_-lOIedxo3AA/R6IKon2lV5I/AAAAAAAAAB4/8jRIj0iBbnI/s1600-h/crmoutlook.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp3.blogger.com/_-lOIedxo3AA/R6IKon2lV5I/AAAAAAAAAB4/8jRIj0iBbnI/s400/crmoutlook.png" alt="" id="BLOGGER_PHOTO_ID_5161699815928977298" border="0" /&gt;&lt;/a&gt;&lt;br /&gt; &lt;p style="margin: 0in 0in 0in 0.375in; font-family: Calibri; font-size: 11pt;"&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style="margin: 0in 0in 0in 0.375in; font-family: Calibri; font-size: 11pt;"&gt;As you may know that Exchange Server isn't the only mail option in Microsoft Dynamics CRM v4.0, Furthermore in CRM 4.0, you can install Outlook client and CRM Server on the same box, it doesn't have limitation anymore. Plus, you don't have to have an Outlook profile setup before you install the Outlook client.&lt;/p&gt;&lt;p style="margin: 0in 0in 0in 0.375in; font-family: Calibri; font-size: 11pt;"&gt;&lt;br /&gt;&lt;/p&gt;  &lt;p style="margin: 0in 0in 0in 0.375in; font-family: Calibri; font-size: 11pt;"&gt; &lt;/p&gt;  &lt;p style="margin: 0in 0in 0in 0.375in; font-family: Calibri; font-size: 11pt;"&gt;So, it's pretty easy now, let's start building a CRM 4.0 all-in-one-box VPC.&lt;/p&gt;&lt;br /&gt;&lt;p style="margin: 0in 0in 0in 0.375in; font-family: Calibri; font-size: 11pt;"&gt;&lt;br /&gt;&lt;/p&gt;  &lt;p style="margin: 0in 0in 0in 0.375in; font-family: Calibri; font-size: 11pt;"&gt; &lt;/p&gt;  &lt;ol style="margin-left: 0.375in; direction: ltr; unicode-bidi: embed; margin-top: 0in; margin-bottom: 0in; font-family: Calibri; font-size: 11pt;" type="1"&gt;&lt;li value="1" style="margin-top: 0pt; margin-bottom: 0pt; vertical-align: middle;"&gt;&lt;span style="font-family: Calibri; font-size: 11pt;"&gt;Build and setup a Windows Server 2003 R2 with SQL Server      2005 VPC&lt;/span&gt;&lt;/li&gt;&lt;/ol&gt;&lt;br /&gt;&lt;ol style="margin-left: 0.375in; direction: ltr; unicode-bidi: embed; margin-top: 0in; margin-bottom: 0in; font-family: Calibri; font-size: 11pt;" type="1"&gt;&lt;li value="2" style="margin-top: 0pt; margin-bottom: 0pt; vertical-align: middle;"&gt;&lt;span style="font-family: Calibri; font-size: 11pt;"&gt;Install &lt;/span&gt;&lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=99cb3a7a-eba9-4de9-b0f1-2ebf11c3d756&amp;amp;DisplayLang=en"&gt;&lt;span style="font-family: Calibri; font-size: 11pt;"&gt;CRM 4.0 Server&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;&lt;/ol&gt;&lt;br /&gt;&lt;ol style="margin-left: 0.375in; direction: ltr; unicode-bidi: embed; margin-top: 0in; margin-bottom: 0in; font-family: Calibri; font-size: 11pt;" type="1"&gt;&lt;li value="3" style="margin-top: 0pt; margin-bottom: 0pt; vertical-align: middle;"&gt;&lt;span style="font-family: Calibri; font-size: 11pt;"&gt;Install Outlook 2007&lt;/span&gt;&lt;/li&gt;&lt;/ol&gt;&lt;br /&gt;&lt;ol style="margin-left: 0.375in; direction: ltr; unicode-bidi: embed; margin-top: 0in; margin-bottom: 0in; font-family: Calibri; font-size: 11pt;" type="1"&gt;&lt;li value="4" style="margin-top: 0pt; margin-bottom: 0pt; vertical-align: middle;"&gt;&lt;span style="font-family: Calibri; font-size: 11pt;"&gt;Install &lt;/span&gt;&lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=60c4a6cc-59d7-416e-9f44-0ae8ff249768&amp;amp;DisplayLang=en"&gt;&lt;span style="font-family: Calibri; font-size: 11pt;"&gt;CRM 4.0 Client for Outlook&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;&lt;/ol&gt;&lt;br /&gt; &lt;p style="margin: 0in 0in 0in 0.375in; font-family: Calibri; font-size: 11pt;"&gt;During the installation, if you get a pre-check error message say:"&lt;span style="font-weight: bold; color: blue;"&gt;Microsoft Dynamics CRM for Outlook cannot be installed on a computer where Microsoft Exchange Server versions prior to Exchange Server 2007 are installed.&lt;/span&gt;" It does mean as it's displayed. But how about if you don’t have Exchange 2003 installed on that box? Well, in that case you may run 'regedit.exe', and go to&lt;span style="color: blue;"&gt; &lt;/span&gt;&lt;span style="font-weight: bold; color: blue;"&gt;[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\]&lt;/span&gt;, find the &lt;span style="font-weight: bold; color: blue;"&gt;[Exchange]&lt;/span&gt; folder, export it &amp;amp; delete it. And then try the installation again.&lt;br /&gt;&lt;/p&gt;&lt;p style="margin: 0in 0in 0in 0.375in; font-family: Calibri; font-size: 11pt;"&gt;&lt;br /&gt;&lt;/p&gt;  &lt;ol style="margin-left: 0.375in; direction: ltr; unicode-bidi: embed; margin-top: 0in; margin-bottom: 0in; font-family: Calibri; font-size: 11pt;" type="1"&gt;&lt;li value="5" style="margin-top: 0pt; margin-bottom: 0pt; vertical-align: middle;"&gt;&lt;span style="font-family: Calibri; font-size: 11pt;"&gt;After the installation, open Outlook(if you don't have a      Outlook profile setup yet, do it now), you will see a brand new toolbar,      click it, go to 'Next', it will alert you to close Outlook, do it, and      then click 'Next'&lt;br /&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ol&gt;&lt;br /&gt;&lt;ol style="margin-left: 0.375in; direction: ltr; unicode-bidi: embed; margin-top: 0in; margin-bottom: 0in; font-family: Calibri; font-size: 11pt;" type="1"&gt;&lt;li value="6" style="margin-top: 0pt; margin-bottom: 0pt; vertical-align: middle;"&gt;&lt;span style="font-family: Calibri; font-size: 11pt;"&gt;On the next window, you may      select either &lt;/span&gt;&lt;span style="font-weight: bold; font-family: Calibri; font-size: 11pt;"&gt;'My company'&lt;/span&gt;&lt;span style="font-family: Calibri; font-size: 11pt;"&gt; or &lt;/span&gt;&lt;span style="font-weight: bold; font-family: Calibri; font-size: 11pt;"&gt;'An online service provider'&lt;/span&gt;&lt;span style="font-family: Calibri; font-size: 11pt;"&gt;, select yours, click 'Next'&lt;/span&gt;&lt;/li&gt;&lt;/ol&gt;&lt;br /&gt;&lt;ol style="margin-left: 0.375in; direction: ltr; unicode-bidi: embed; margin-top: 0in; margin-bottom: 0in; font-family: Calibri; font-size: 11pt;" type="1"&gt;&lt;li value="7" style="margin-top: 0pt; margin-bottom: 0pt; vertical-align: middle;"&gt;&lt;span style="font-family: Calibri; font-size: 11pt;"&gt;Fill out the CRM server URL,      then click 'Next', it will check the system requirement, click 'Next'      again when it's finished, and then it will run the installation process.&lt;/span&gt;&lt;/li&gt;&lt;/ol&gt;&lt;br /&gt;&lt;ol style="margin-left: 0.375in; direction: ltr; unicode-bidi: embed; margin-top: 0in; margin-bottom: 0in; font-family: Calibri; font-size: 11pt;" type="1"&gt;&lt;li value="8" style="margin-top: 0pt; margin-bottom: 0pt; vertical-align: middle;"&gt;&lt;span style="font-family: Calibri; font-size: 11pt;"&gt;After the installation, every      time you open Outlook, it will initialize some tasks (you can see it from      the CRM Toolbar), so just leave it to finish.&lt;/span&gt;&lt;/li&gt;&lt;/ol&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7208889-3205473976107386023?l=jianwang.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jianwang.blogspot.com/feeds/3205473976107386023/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7208889&amp;postID=3205473976107386023' title='8 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7208889/posts/default/3205473976107386023'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7208889/posts/default/3205473976107386023'/><link rel='alternate' type='text/html' href='http://jianwang.blogspot.com/2008/01/install-crm-40-and-outlook-client-on.html' title='Install CRM 4.0 and Outlook client on the same box'/><author><name>Jim Wang</name><uri>http://www.blogger.com/profile/15963866631960791206</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='29' src='http://4.bp.blogspot.com/_-lOIedxo3AA/SaQ-RpTrHZI/AAAAAAAAANI/pQoZ77uYOe0/S220/Jim%27.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp3.blogger.com/_-lOIedxo3AA/R6IKon2lV5I/AAAAAAAAAB4/8jRIj0iBbnI/s72-c/crmoutlook.png' height='72' width='72'/><thr:total>8</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7208889.post-8180186779449305339</id><published>2008-01-26T10:50:00.002Z</published><updated>2008-03-15T01:05:17.337Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='Web Service'/><category scheme='http://www.blogger.com/atom/ns#' term='Ajax'/><category scheme='http://www.blogger.com/atom/ns#' term='Xml'/><category scheme='http://www.blogger.com/atom/ns#' term='JScript'/><category scheme='http://www.blogger.com/atom/ns#' term='CRM 4.0'/><title type='text'>CRM 4.0 : get UserId, BusinessUnitId, OrganizationId on client-side JScript (WhoAmIRequest)</title><content type='html'>I'm sure it's in SDK, but to be clear I made it as a JScript function, so you can easly get UserId, BusinessUnitId and OrganisationId from client-side WhoAmIRequest, it's a good example. &lt;br /&gt;&lt;br /&gt;&lt;pre name="code" class="js"&gt;&lt;br /&gt;function GetCurrentUserInfo()&lt;br /&gt;{&lt;br /&gt;    var SERVER_URL = "http://CRM";&lt;br /&gt;    var xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");&lt;br /&gt;    xmlhttp.open("POST", SERVER_URL + "/mscrmservices/2007/crmservice.asmx", false);&lt;br /&gt;    xmlhttp.setRequestHeader("Content-Type", "text/xml; charset=utf-8");&lt;br /&gt;    xmlhttp.setRequestHeader("SOAPAction", "http://schemas.microsoft.com/crm/2007/WebServices/Execute");&lt;br /&gt;    &lt;br /&gt;    var soapBody = "&amp;lt;soap:Body&amp;gt;"+&lt;br /&gt;    "&amp;lt;Execute xmlns='http://schemas.microsoft.com/crm/2007/WebServices'&amp;gt;"+&lt;br /&gt;    "&amp;lt;Request xsi:type='WhoAmIRequest' /&amp;gt;"+&lt;br /&gt;    "&amp;lt;/Execute&amp;gt;&amp;lt;/soap:Body&amp;gt;";&lt;br /&gt;    &lt;br /&gt;    var soapXml = "&amp;lt;soap:Envelope " +&lt;br /&gt;    "xmlns:soap='http://schemas.xmlsoap.org/soap/envelope/' "+&lt;br /&gt;    "xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' "+&lt;br /&gt;    "xmlns:xsd='http://www.w3.org/2001/XMLSchema'&amp;gt;";&lt;br /&gt;&lt;br /&gt;    soapXml += GenerateAuthenticationHeader();&lt;br /&gt;    soapXml += soapBody;&lt;br /&gt;    soapXml += "&amp;lt;/soap:Envelope&amp;gt;";&lt;br /&gt;&lt;br /&gt;    xmlhttp.send(soapXml);&lt;br /&gt;    xmlDoc=new ActiveXObject("Microsoft.XMLDOM");&lt;br /&gt;    xmlDoc.async=false;&lt;br /&gt;    xmlDoc.loadXML(xmlhttp.responseXML.xml);&lt;br /&gt;    &lt;br /&gt;    var userid = xmlDoc.getElementsByTagName("UserId")[0].childNodes[0].nodeValue;&lt;br /&gt;    var buid = xmlDoc.getElementsByTagName("BusinessUnitId")[0].childNodes[0].nodeValue;&lt;br /&gt;    var orgid = xmlDoc.getElementsByTagName("OrganizationId")[0].childNodes[0].nodeValue;&lt;br /&gt;&lt;br /&gt;    alert("UserId: " + userid + "\r\nBusinessUnitId: " + buid + "\r\nOrganizationId: " + orgid);&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7208889-8180186779449305339?l=jianwang.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jianwang.blogspot.com/feeds/8180186779449305339/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7208889&amp;postID=8180186779449305339' title='11 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7208889/posts/default/8180186779449305339'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7208889/posts/default/8180186779449305339'/><link rel='alternate' type='text/html' href='http://jianwang.blogspot.com/2008/01/crm-40-get-userid-businessunitid.html' title='CRM 4.0 : get UserId, BusinessUnitId, OrganizationId on client-side JScript (WhoAmIRequest)'/><author><name>Jim Wang</name><uri>http://www.blogger.com/profile/15963866631960791206</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='29' src='http://4.bp.blogspot.com/_-lOIedxo3AA/SaQ-RpTrHZI/AAAAAAAAANI/pQoZ77uYOe0/S220/Jim%27.JPG'/></author><thr:total>11</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7208889.post-196691404102831036</id><published>2008-01-19T19:36:00.007Z</published><updated>2008-04-26T14:23:28.375+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Web Service'/><category scheme='http://www.blogger.com/atom/ns#' term='Ajax'/><category scheme='http://www.blogger.com/atom/ns#' term='Xml'/><category scheme='http://www.blogger.com/atom/ns#' term='JScript'/><category scheme='http://www.blogger.com/atom/ns#' term='CRM 4.0'/><title type='text'>CRM 4.0 : Check current user's security role using JavaScript</title><content type='html'>It's a common question about how to show/hide fields based on user's security roles.&lt;br /&gt;Ronald Lemmen had a very popular &lt;a href="http://ronaldlemmen.blogspot.com/2006/05/finally-there-show-and-hide-fields.html"&gt;post &lt;/a&gt;on his blog about how to use 'RemoteCommand' to achieve that in CRM 3.0. Because &lt;strong&gt;'RemoteCommand' &lt;/strong&gt;is for internal use and unsupported, it doesn't work in CRM 4.0.&lt;br /&gt;Michael H?hne also had a great &lt;a href="http://www.stunnware.com/crm2/topic.aspx?id=jswebservice"&gt;post &lt;/a&gt;about how to access web service using client-side JavaScript. Since CRM 4.0 web service EndPoint changed, some people get &lt;strong&gt;401 authorization error&lt;/strong&gt;.&lt;br /&gt;&lt;br /&gt;Here's code which works great in CRM 4.0, the function UserHasRole("ROLE_NAME") returns true if the current has the role, returns false if it doesn't. GetCurrentUserRoles() function generated by Michael H?hne's tool with some changes. Thanks for Regan who point out that using &lt;strong&gt;GenerateAuthenticationHeader() &lt;/strong&gt;instead of hard-coding the Organization's Name.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre class="js" name="code"&gt;&lt;br /&gt;//check if the current user has the 'System Administrator' role&lt;br /&gt;alert(UserHasRole("System Administrator"));&lt;br /&gt;&lt;br /&gt;function UserHasRole(roleName)&lt;br /&gt;{&lt;br /&gt; //get Current User Roles, oXml is an object&lt;br /&gt; var oXml = GetCurrentUserRoles();&lt;br /&gt; if(oXml != null)&lt;br /&gt; {&lt;br /&gt;  //select the node text&lt;br /&gt;  var roles = oXml.selectNodes("//BusinessEntity/q1:name");&lt;br /&gt;  if(roles != null)&lt;br /&gt;  {&lt;br /&gt;   for( i = 0; i &amp;lt; roles.length; i++)&lt;br /&gt;   {&lt;br /&gt;    if(roles[i].text == roleName)&lt;br /&gt;    {&lt;br /&gt;     //return true if user has this role&lt;br /&gt;     return true;&lt;br /&gt;    }&lt;br /&gt;   }&lt;br /&gt;  }&lt;br /&gt; }&lt;br /&gt; //otherwise return false&lt;br /&gt; return false;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;function GetCurrentUserRoles()&lt;br /&gt;{&lt;br /&gt; var xml = "" +&lt;br /&gt; "&amp;lt;?xml version=\"1.0\" encoding=\"utf-8\"?&amp;gt;" +&lt;br /&gt; "&amp;lt;soap:Envelope xmlns:soap=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\"&amp;gt;" +&lt;br /&gt; GenerateAuthenticationHeader() +&lt;br /&gt; " &amp;lt;soap:Body&amp;gt;" +&lt;br /&gt; " &amp;lt;RetrieveMultiple xmlns=\"http://schemas.microsoft.com/crm/2007/WebServices\"&amp;gt;" +&lt;br /&gt; " &amp;lt;query xmlns:q1=\"http://schemas.microsoft.com/crm/2006/Query\" xsi:type=\"q1:QueryExpression\"&amp;gt;" +&lt;br /&gt; " &amp;lt;q1:EntityName&amp;gt;role&amp;lt;/q1:EntityName&amp;gt;" +&lt;br /&gt; " &amp;lt;q1:ColumnSet xsi:type=\"q1:ColumnSet\"&amp;gt;" +&lt;br /&gt; " &amp;lt;q1:Attributes&amp;gt;" +&lt;br /&gt; " &amp;lt;q1:Attribute&amp;gt;name&amp;lt;/q1:Attribute&amp;gt;" +&lt;br /&gt; " &amp;lt;/q1:Attributes&amp;gt;" +&lt;br /&gt; " &amp;lt;/q1:ColumnSet&amp;gt;" +&lt;br /&gt; " &amp;lt;q1:Distinct&amp;gt;false&amp;lt;/q1:Distinct&amp;gt;" +&lt;br /&gt; " &amp;lt;q1:LinkEntities&amp;gt;" +&lt;br /&gt; " &amp;lt;q1:LinkEntity&amp;gt;" +&lt;br /&gt; " &amp;lt;q1:LinkFromAttributeName&amp;gt;roleid&amp;lt;/q1:LinkFromAttributeName&amp;gt;" +&lt;br /&gt; " &amp;lt;q1:LinkFromEntityName&amp;gt;role&amp;lt;/q1:LinkFromEntityName&amp;gt;" +&lt;br /&gt; " &amp;lt;q1:LinkToEntityName&amp;gt;systemuserroles&amp;lt;/q1:LinkToEntityName&amp;gt;" +&lt;br /&gt; " &amp;lt;q1:LinkToAttributeName&amp;gt;roleid&amp;lt;/q1:LinkToAttributeName&amp;gt;" +&lt;br /&gt; " &amp;lt;q1:JoinOperator&amp;gt;Inner&amp;lt;/q1:JoinOperator&amp;gt;" +&lt;br /&gt; " &amp;lt;q1:LinkEntities&amp;gt;" +&lt;br /&gt; " &amp;lt;q1:LinkEntity&amp;gt;" +&lt;br /&gt; " &amp;lt;q1:LinkFromAttributeName&amp;gt;systemuserid&amp;lt;/q1:LinkFromAttributeName&amp;gt;" +&lt;br /&gt; " &amp;lt;q1:LinkFromEntityName&amp;gt;systemuserroles&amp;lt;/q1:LinkFromEntityName&amp;gt;" +&lt;br /&gt; " &amp;lt;q1:LinkToEntityName&amp;gt;systemuser&amp;lt;/q1:LinkToEntityName&amp;gt;" +&lt;br /&gt; " &amp;lt;q1:LinkToAttributeName&amp;gt;systemuserid&amp;lt;/q1:LinkToAttributeName&amp;gt;" +&lt;br /&gt; " &amp;lt;q1:JoinOperator&amp;gt;Inner&amp;lt;/q1:JoinOperator&amp;gt;" +&lt;br /&gt; " &amp;lt;q1:LinkCriteria&amp;gt;" +&lt;br /&gt; " &amp;lt;q1:FilterOperator&amp;gt;And&amp;lt;/q1:FilterOperator&amp;gt;" +&lt;br /&gt; " &amp;lt;q1:Conditions&amp;gt;" +&lt;br /&gt; " &amp;lt;q1:Condition&amp;gt;" +&lt;br /&gt; " &amp;lt;q1:AttributeName&amp;gt;systemuserid&amp;lt;/q1:AttributeName&amp;gt;" +&lt;br /&gt; " &amp;lt;q1:Operator&amp;gt;EqualUserId&amp;lt;/q1:Operator&amp;gt;" +&lt;br /&gt; " &amp;lt;/q1:Condition&amp;gt;" +&lt;br /&gt; " &amp;lt;/q1:Conditions&amp;gt;" +&lt;br /&gt; " &amp;lt;/q1:LinkCriteria&amp;gt;" +&lt;br /&gt; " &amp;lt;/q1:LinkEntity&amp;gt;" +&lt;br /&gt; " &amp;lt;/q1:LinkEntities&amp;gt;" +&lt;br /&gt; " &amp;lt;/q1:LinkEntity&amp;gt;" +&lt;br /&gt; " &amp;lt;/q1:LinkEntities&amp;gt;" +&lt;br /&gt; " &amp;lt;/query&amp;gt;" +&lt;br /&gt; " &amp;lt;/RetrieveMultiple&amp;gt;" +&lt;br /&gt; " &amp;lt;/soap:Body&amp;gt;" +&lt;br /&gt; "&amp;lt;/soap:Envelope&amp;gt;" +&lt;br /&gt; "";&lt;br /&gt;&lt;br /&gt; var xmlHttpRequest = new ActiveXObject("Msxml2.XMLHTTP");&lt;br /&gt;&lt;br /&gt; xmlHttpRequest.Open("POST", "/mscrmservices/2007/CrmService.asmx", false);&lt;br /&gt; xmlHttpRequest.setRequestHeader("SOAPAction"," http://schemas.microsoft.com/crm/2007/WebServices/RetrieveMultiple");&lt;br /&gt; xmlHttpRequest.setRequestHeader("Content-Type", "text/xml; charset=utf-8");&lt;br /&gt; xmlHttpRequest.setRequestHeader("Content-Length", xml.length);&lt;br /&gt; xmlHttpRequest.send(xml);&lt;br /&gt;&lt;br /&gt; var resultXml = xmlHttpRequest.responseXML;&lt;br /&gt; return(resultXml);&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#ff0000;"&gt;Due to Bloger's format issue, I have rewrite the code, it should work for everyone now.:)&lt;/span&gt;&lt;/strong&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7208889-196691404102831036?l=jianwang.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jianwang.blogspot.com/feeds/196691404102831036/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7208889&amp;postID=196691404102831036' title='39 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7208889/posts/default/196691404102831036'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7208889/posts/default/196691404102831036'/><link rel='alternate' type='text/html' href='http://jianwang.blogspot.com/2008/01/crm-40-check-current-users-security.html' title='CRM 4.0 : Check current user&apos;s security role using JavaScript'/><author><name>Jim Wang</name><uri>http://www.blogger.com/profile/15963866631960791206</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='29' src='http://4.bp.blogspot.com/_-lOIedxo3AA/SaQ-RpTrHZI/AAAAAAAAANI/pQoZ77uYOe0/S220/Jim%27.JPG'/></author><thr:total>39</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7208889.post-6981839921125806074</id><published>2008-01-12T09:56:00.005Z</published><updated>2008-03-15T00:56:57.083Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='Xml'/><category scheme='http://www.blogger.com/atom/ns#' term='JScript'/><title type='text'>Dynamic Picklist, load values from a XML file</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp3.blogger.com/_-lOIedxo3AA/R5skUX2lV3I/AAAAAAAAABo/9U2DyDPTHhE/s1600-h/dynamic-picklist.jpg"&gt;&lt;img id="BLOGGER_PHOTO_ID_5159757730501973874" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: pointer; TEXT-ALIGN: center" alt="" src="http://bp3.blogger.com/_-lOIedxo3AA/R5skUX2lV3I/AAAAAAAAABo/9U2DyDPTHhE/s400/dynamic-picklist.jpg" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;There are some dynamicpicklist examples on the Internet. You may find it from CRM SDK as well, and there's A (slightly) different approach to dynamic picklists from &lt;a href="http://thecrmgrid.wordpress.com/2007/11/13/a-slightly-different-approach-to-dynamic-picklists/"&gt;Greg Owens.&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;But none of those can meet my client's requirement. We have 2 picklists(which is normal), but picklist2 has hundreds of items. And those picklists repeat 3 times on all activites. Furthermore, they don't want to use another entity. So I create a XML file to keep the data, and using it dynamicly fill out picklist2 when picklist1 has value selected. It works great, and you only need to maintain one XML file.&lt;br /&gt;&lt;br /&gt;This is a very simple XML to do the demonstration, put it ('section.xml') into the root folder of CRMWeb. The idea is: when user selects type1 in picklist1, then picklist2 only shows item1, item2, item3; when user selects type2 in picklist1,the picklist2 only shows item4, item5, item6.&lt;br /&gt;&lt;br /&gt;&lt;pre class="xml" name="code"&gt;&lt;br /&gt;&amp;lt;?xml version="1.0" encoding="utf-8" ?&amp;gt;&lt;br /&gt;&amp;lt;Section&amp;gt;&lt;br /&gt;    &amp;lt;type1&amp;gt;&lt;br /&gt;        &amp;lt;item&amp;gt;item1&amp;lt;/item&amp;gt;&lt;br /&gt;        &amp;lt;item&amp;gt;item2&amp;lt;/item&amp;gt;&lt;br /&gt;        &amp;lt;item&amp;gt;item3&amp;lt;/item&amp;gt;&lt;br /&gt;    &amp;lt;/type1&amp;gt;&lt;br /&gt;    &amp;lt;type2&amp;gt;&lt;br /&gt;        &amp;lt;item&amp;gt;item4&amp;lt;/item&amp;gt;&lt;br /&gt;        &amp;lt;item&amp;gt;item5&amp;lt;/item&amp;gt;&lt;br /&gt;        &amp;lt;item&amp;gt;item6&amp;lt;/item&amp;gt;&lt;br /&gt;    &amp;lt;/type2&amp;gt;&lt;br /&gt;&amp;lt;/Section&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Suppose there are two picklists on crmForm, picklist2's value depends on picklist1's selection.&lt;br /&gt;In my example:&lt;br /&gt;picklist1 is: new_type1, it has two values: 'typeA/typeB' and 'typeC/typeD'&lt;br /&gt;picklist2 is: new_section1, it doesn't have any value, and I add another nvarchar attribute: new_section1Text to save it's value(see example)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre class="js" name="code"&gt;&lt;br /&gt;/*&lt;br /&gt;Form.onLoad() event&lt;br /&gt;GetItems() is a global function to get section's list items based on type's selection&lt;br /&gt;typeValue: picklist1's DataValue&lt;br /&gt;section: picklist2(object)&lt;br /&gt;sectionText: picklist2.SelectedText&lt;br /&gt;*/&lt;br /&gt;&lt;br /&gt;GetItems = function(typeValue, section, sectionText)&lt;br /&gt;{&lt;br /&gt;    //clean the section object&lt;br /&gt;    section.length = 0;&lt;br /&gt;&lt;br /&gt;    //it is the index of picklist2.SelectedText in XML file&lt;br /&gt;    var sectionTextIndex = 0;&lt;br /&gt;&lt;br /&gt;    //get the typeName, used for XML node&lt;br /&gt;    var typeName = 0;&lt;br /&gt;&lt;br /&gt;    switch(typeValue)&lt;br /&gt;    {&lt;br /&gt;        case "1" : typeName = "type1"; break;&lt;br /&gt;        case "2" : typeName = "type2"; break;&lt;br /&gt;        case "0" : return;&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    //load XML file&lt;br /&gt;    var xmlDoc = new ActiveXObject("Microsoft.XMLDOM");&lt;br /&gt;    xmlDoc.async = false;&lt;br /&gt;    xmlDoc.load("/section.xml");&lt;br /&gt;&lt;br /&gt;    //get all items under this type&lt;br /&gt;    xmlDoc = xmlDoc.getElementsByTagName(typeName)[0];&lt;br /&gt;    var items = xmlDoc.getElementsByTagName('item');&lt;br /&gt;&lt;br /&gt;    //insert all items into section object&lt;br /&gt;    for(var i=0; i&amp;lt;items.length; i++)&lt;br /&gt;    {&lt;br /&gt;        section.AddOption(items(i).firstChild.nodeValue, i+1);&lt;br /&gt;        if((sectionText != null)&amp;amp;&amp;amp;(sectionText.DataValue == items(i).firstChild.nodeValue))&lt;br /&gt;        {&lt;br /&gt;            sectionTextIndex = i+1;&lt;br /&gt;        }&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    return sectionTextIndex;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;GetPicklist(crmForm.all.new_type1, crmForm.all.new_section1, crmForm.all.new_section1text);&lt;br /&gt;&lt;br /&gt;function GetPicklist(type, section, sectionText)&lt;br /&gt;{&lt;br /&gt;    if(sectionText.DataValue != null)&lt;br /&gt;    {&lt;br /&gt;        //select the right one&lt;br /&gt;        section.DataValue = GetItems(type.DataValue, section, sectionText);&lt;br /&gt;    }&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;/*&lt;br /&gt;Form.onSave() event, save the current new_section1's selectedText&lt;br /&gt;Becasue we need to add this option to new_section1 on Form.onLoad()&lt;br /&gt;*/&lt;br /&gt;&lt;br /&gt;SetPicklist(crmForm.all.new_section1 , crmForm.all.new_section1text);&lt;br /&gt;&lt;br /&gt;function SetPicklist(section, sectionText)&lt;br /&gt;{&lt;br /&gt;    if(section.SelectedText != "")&lt;br /&gt;    {&lt;br /&gt;        sectionText.DataValue = section.SelectedText;&lt;br /&gt;        section.length = 0;&lt;br /&gt;    }&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;/*&lt;br /&gt;new_type1.onChange() event to call GetItem() funciton, passing new_type1.DataValue and new_section1, sectionText as parameters&lt;br /&gt;*/&lt;br /&gt;if(crmForm.all.new_type1.DataValue != null)&lt;br /&gt;{&lt;br /&gt;    GetItems(crmForm.all.new_type1.DataValue, crmForm.all.new_section1, null);&lt;br /&gt;}&lt;br /&gt;else&lt;br /&gt;{&lt;br /&gt;    crmForm.all.new_section1.options.length = 0;&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7208889-6981839921125806074?l=jianwang.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jianwang.blogspot.com/feeds/6981839921125806074/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7208889&amp;postID=6981839921125806074' title='11 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7208889/posts/default/6981839921125806074'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7208889/posts/default/6981839921125806074'/><link rel='alternate' type='text/html' href='http://jianwang.blogspot.com/2008/01/dynamic-picklist-values-load-from-xml.html' title='Dynamic Picklist, load values from a XML file'/><author><name>Jim Wang</name><uri>http://www.blogger.com/profile/15963866631960791206</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='29' src='http://4.bp.blogspot.com/_-lOIedxo3AA/SaQ-RpTrHZI/AAAAAAAAANI/pQoZ77uYOe0/S220/Jim%27.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp3.blogger.com/_-lOIedxo3AA/R5skUX2lV3I/AAAAAAAAABo/9U2DyDPTHhE/s72-c/dynamic-picklist.jpg' height='72' width='72'/><thr:total>11</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7208889.post-6694983192834113927</id><published>2008-01-06T23:20:00.002Z</published><updated>2008-03-15T01:06:31.112Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='News'/><category scheme='http://www.blogger.com/atom/ns#' term='SDK'/><category scheme='http://www.blogger.com/atom/ns#' term='CRM 4.0'/><title type='text'>Microsoft Dynamics CRM 4.0 SDK Released!</title><content type='html'>&lt;p style="MARGIN: 0in;font-family:Calibri;font-size:11pt;"  &gt;&lt;a href="http://www.microsoft.com/downloads/info.aspx?na=22&amp;amp;p=1&amp;amp;SrcDisplayLang=en&amp;amp;SrcCategoryId=&amp;amp;SrcFamilyId=&amp;amp;u=%2fdownloads%2fdetails.aspx%3fFamilyID%3d82e632a7-faf9-41e0-8ec1-a2662aae9dfb%26DisplayLang%3den"&gt;Microsoft Dynamics CRM 4.0 SDK&lt;/a&gt;&lt;/p&gt;&lt;p style="MARGIN: 0in;font-family:Calibri;font-size:11pt;"  &gt;This package contains the complete software development kit for Microsoft Dynamics CRM 4.0.&lt;/p&gt;&lt;p style="MARGIN: 0in;font-family:Calibri;font-size:11pt;"  &gt;&lt;span style="FONT-WEIGHT: bold"&gt;&lt;br /&gt;&lt;/span&gt;&lt;a href="http://www.microsoft.com/downloads/info.aspx?na=22&amp;amp;p=2&amp;amp;SrcDisplayLang=en&amp;amp;SrcCategoryId=&amp;amp;SrcFamilyId=&amp;amp;u=%2fdownloads%2fdetails.aspx%3fFamilyID%3d639ebb2e-236c-46f0-89a3-5b24d816e5b1%26DisplayLang%3den"&gt;Microsoft Dynamics CRM 4.0 Language Pack Readme&lt;/a&gt;&lt;/p&gt;&lt;p style="MARGIN: 0in;font-family:Calibri;font-size:11pt;"  &gt;This document provides important late-breaking information.&lt;/p&gt;&lt;p style="MARGIN: 0in;font-family:Calibri;font-size:11pt;"  &gt;&lt;span style="FONT-WEIGHT: bold"&gt;&lt;br /&gt;&lt;/span&gt;&lt;a href="http://www.microsoft.com/downloads/info.aspx?na=22&amp;amp;p=3&amp;amp;SrcDisplayLang=en&amp;amp;SrcCategoryId=&amp;amp;SrcFamilyId=&amp;amp;u=%2fdownloads%2fdetails.aspx%3fFamilyID%3d6e211231-30fe-4df2-9b81-15cfb87adcf1%26DisplayLang%3den"&gt;Microsoft Dynamics CRM 4.0: Planning and Deployment Guidance for Service Providers&lt;/a&gt;&lt;/p&gt;&lt;p style="MARGIN: 0in;font-family:Calibri;font-size:11pt;"  &gt;These guides and tool provide additional information for Service Providers to plan and deploy Microsoft Dynamics CRM 4.0.&lt;/p&gt;&lt;p style="MARGIN: 0in;font-family:Calibri;font-size:11pt;"  &gt;&lt;span style="FONT-WEIGHT: bold"&gt;&lt;br /&gt;&lt;/span&gt;&lt;a href="http://www.microsoft.com/downloads/info.aspx?na=22&amp;amp;p=4&amp;amp;SrcDisplayLang=en&amp;amp;SrcCategoryId=&amp;amp;SrcFamilyId=&amp;amp;u=%2fdownloads%2fdetails.aspx%3fFamilyID%3d99cb3a7a-eba9-4de9-b0f1-2ebf11c3d756%26DisplayLang%3den"&gt;Microsoft Dynamics CRM 4.0&lt;/a&gt;&lt;/p&gt;&lt;p style="MARGIN: 0in;font-family:Calibri;font-size:11pt;"  &gt;Microsoft Dynamics CRM 4.0 for released languages.&lt;/p&gt;&lt;p style="MARGIN: 0in" size="11pt" face="Calibri"&gt;&lt;span style="FONT-WEIGHT: bold"&gt;&lt;br /&gt;&lt;/span&gt;&lt;a href="http://www.microsoft.com/downloads/info.aspx?na=22&amp;amp;p=5&amp;amp;SrcDisplayLang=en&amp;amp;SrcCategoryId=&amp;amp;SrcFamilyId=&amp;amp;u=%2fdownloads%2fdetails.aspx%3fFamilyID%3d6766880a-da8f-4336-a278-9a5367eb79ca%26DisplayLang%3den"&gt;Microsoft Dynamics CRM 4.0 Data Migration Manager&lt;/a&gt;&lt;/p&gt;&lt;p style="MARGIN: 0in" size="11pt" face="Calibri"&gt;Using the Microsoft Dynamics CRM 4.0 Data Migration Manager, you can convert and upload data from another CRM system to Microsoft Dynamics CRM 4.0.&lt;/p&gt;&lt;p style="MARGIN: 0in" size="11pt" face="Calibri"&gt;&lt;span style="FONT-WEIGHT: bold"&gt;&lt;br /&gt;&lt;/span&gt;&lt;a href="http://www.microsoft.com/downloads/info.aspx?na=22&amp;amp;p=6&amp;amp;SrcDisplayLang=en&amp;amp;SrcCategoryId=&amp;amp;SrcFamilyId=&amp;amp;u=%2fdownloads%2fdetails.aspx%3fFamilyID%3da9c110fd-aac8-4d2a-b401-7801b1866e82%26DisplayLang%3den"&gt;Microsoft Dynamics CRM 4.0 Trial Versions&lt;/a&gt;&lt;/p&gt;&lt;p style="MARGIN: 0in" size="11pt" face="Calibri"&gt;Microsoft Dynamics CRM 4.0 90-day trial versions for released languages.&lt;/p&gt;&lt;p style="MARGIN: 0in" size="11pt" face="Calibri"&gt;&lt;span style="FONT-WEIGHT: bold"&gt;&lt;br /&gt;&lt;/span&gt;&lt;a href="http://www.microsoft.com/downloads/info.aspx?na=22&amp;amp;p=7&amp;amp;SrcDisplayLang=en&amp;amp;SrcCategoryId=&amp;amp;SrcFamilyId=&amp;amp;u=%2fdownloads%2fdetails.aspx%3fFamilyID%3d60c4a6cc-59d7-416e-9f44-0ae8ff249768%26DisplayLang%3den"&gt;Microsoft Dynamics CRM for Outlook (For On-Premise and Hosted Editions)&lt;/a&gt;&lt;/p&gt;&lt;p style="MARGIN: 0in" size="11pt" face="Calibri"&gt;Install Microsoft Dynamics CRM 4.0 for Outlook and Microsoft Dynamics CRM 4.0 for Outlook with Offline Access. For on-premise and hosted editions of Microsoft Dynamics CRM 4.0 only.&lt;/p&gt;&lt;p style="MARGIN: 0in" size="11pt" face="Calibri"&gt;&lt;span style="FONT-WEIGHT: bold"&gt;&lt;br /&gt;&lt;/span&gt;&lt;a href="http://www.microsoft.com/downloads/info.aspx?na=22&amp;amp;p=8&amp;amp;SrcDisplayLang=en&amp;amp;SrcCategoryId=&amp;amp;SrcFamilyId=&amp;amp;u=%2fdownloads%2fdetails.aspx%3fFamilyID%3de1358499-3fdb-45b8-adf0-7585f758277e%26DisplayLang%3den"&gt;Microsoft Dynamics CRM 4.0 E-mail Router (On-Premise and Hosted Editions)&lt;/a&gt;&lt;/p&gt;&lt;p style="MARGIN: 0in" size="11pt" face="Calibri"&gt;The E-mail Router is an interface between the Microsoft Dynamics CRM system and an e-mail system.&lt;/p&gt;&lt;p style="MARGIN: 0in" size="11pt" face="Calibri"&gt;&lt;span style="FONT-WEIGHT: bold"&gt;&lt;br /&gt;&lt;/span&gt;&lt;a href="http://www.microsoft.com/downloads/info.aspx?na=22&amp;amp;p=9&amp;amp;SrcDisplayLang=en&amp;amp;SrcCategoryId=&amp;amp;SrcFamilyId=&amp;amp;u=%2fdownloads%2fdetails.aspx%3fFamilyID%3d8ea05b4e-825a-4db1-ad59-d894aa5ef33e%26DisplayLang%3den"&gt;Examples of how to configure the Microsoft Dynamics CRM 4.0 on-premise E-mail Router in different deployment scenarios&lt;/a&gt;&lt;/p&gt;&lt;p style="MARGIN: 0in" size="11pt" face="Calibri"&gt;This document lists steps to configure Microsoft Dynamics CRM 4.0 e-mail in different deployment scenarios.&lt;/p&gt;&lt;p style="FONT-SIZE: 11pt; MARGIN: 0in; FONT-FAMILY: Calibri"&gt;&lt;span style="FONT-WEIGHT: bold"&gt;&lt;br /&gt;&lt;/span&gt;&lt;a href="http://www.microsoft.com/downloads/info.aspx?na=22&amp;amp;p=10&amp;amp;SrcDisplayLang=en&amp;amp;SrcCategoryId=&amp;amp;SrcFamilyId=&amp;amp;u=%2fdownloads%2fdetails.aspx%3fFamilyID%3d18d51d2e-f82b-46cf-8cac-df06a5f6555f%26DisplayLang%3den"&gt;Microsoft Dynamics CRM 4.0 for Outlook Readme (On-Premise and Hosted Editions)&lt;/a&gt;&lt;/p&gt;&lt;p style="FONT-SIZE: 11pt; MARGIN: 0in; FONT-FAMILY: Calibri"&gt;This document provides important late-breaking information.&lt;/p&gt;&lt;p style="FONT-SIZE: 11pt; MARGIN: 0in; FONT-FAMILY: Calibri"&gt;&lt;span style="FONT-WEIGHT: bold"&gt;&lt;br /&gt;&lt;/span&gt;&lt;a href="http://www.microsoft.com/downloads/info.aspx?na=22&amp;amp;p=11&amp;amp;SrcDisplayLang=en&amp;amp;SrcCategoryId=&amp;amp;SrcFamilyId=&amp;amp;u=%2fdownloads%2fdetails.aspx%3fFamilyID%3d1ceb5e01-de9f-48c0-8ce2-51633ebf4714%26DisplayLang%3den"&gt;Microsoft Dynamics CRM 4.0 Implementation Guide&lt;/a&gt;&lt;/p&gt;&lt;p style="FONT-SIZE: 11pt; MARGIN: 0in; FONT-FAMILY: Calibri"&gt;This guide contains comprehensive information about how to plan, install, and maintain Microsoft Dynamics CRM 4.0.&lt;/p&gt;&lt;p style="FONT-SIZE: 11pt; MARGIN: 0in; FONT-FAMILY: Calibri"&gt;&lt;span style="FONT-WEIGHT: bold"&gt;&lt;br /&gt;&lt;/span&gt;&lt;a href="http://www.microsoft.com/downloads/info.aspx?na=22&amp;amp;p=12&amp;amp;SrcDisplayLang=en&amp;amp;SrcCategoryId=&amp;amp;SrcFamilyId=&amp;amp;u=%2fdownloads%2fdetails.aspx%3fFamilyID%3d1db2d16d-7885-4561-a461-20b948913b3f%26DisplayLang%3den"&gt;Microsoft Dynamics CRM 4.0 Server Readme&lt;/a&gt;&lt;/p&gt;&lt;p style="FONT-SIZE: 11pt; MARGIN: 0in; FONT-FAMILY: Calibri"&gt;This document provides important late-breaking information for Microsoft Dynamics CRM 4.0 Server.&lt;/p&gt;&lt;p style="FONT-SIZE: 11pt; MARGIN: 0in; FONT-FAMILY: Calibri"&gt;&lt;span style="FONT-WEIGHT: bold"&gt;&lt;br /&gt;&lt;/span&gt;&lt;a href="http://www.microsoft.com/downloads/info.aspx?na=22&amp;amp;p=13&amp;amp;SrcDisplayLang=en&amp;amp;SrcCategoryId=&amp;amp;SrcFamilyId=&amp;amp;u=%2fdownloads%2fdetails.aspx%3fFamilyID%3dc54b428b-3565-4037-b4f3-c553f3288c45%26DisplayLang%3den"&gt;Microsoft Dynamics CRM 4.0 E-mail Router Readme (On Premise)&lt;/a&gt;&lt;/p&gt;&lt;p style="FONT-SIZE: 11pt; MARGIN: 0in; FONT-FAMILY: Calibri"&gt;This document provides important late-breaking information for the Microsoft Dynamics CRM 4.0 E-mail Router (on-premise and hosted editions).&lt;/p&gt;&lt;p style="FONT-SIZE: 11pt; MARGIN: 0in; FONT-FAMILY: Calibri"&gt;&lt;span style="FONT-WEIGHT: bold"&gt;&lt;br /&gt;&lt;/span&gt;&lt;a href="http://www.microsoft.com/downloads/info.aspx?na=22&amp;amp;p=14&amp;amp;SrcDisplayLang=en&amp;amp;SrcCategoryId=&amp;amp;SrcFamilyId=&amp;amp;u=%2fdownloads%2fdetails.aspx%3fFamilyID%3da3504ff1-f2e8-423b-8cd8-aa712cea02f1%26DisplayLang%3den"&gt;Microsoft Dynamics CRM 4.0 Data Migration Manager Readme&lt;/a&gt;&lt;/p&gt;&lt;p style="FONT-SIZE: 11pt; MARGIN: 0in; FONT-FAMILY: Calibri"&gt;This document provides important late-breaking information.&lt;/p&gt;&lt;p style="FONT-SIZE: 11pt; MARGIN: 0in; FONT-FAMILY: Calibri"&gt;&lt;span style="FONT-WEIGHT: bold"&gt;&lt;br /&gt;&lt;/span&gt;&lt;a href="http://www.microsoft.com/downloads/info.aspx?na=22&amp;amp;p=15&amp;amp;SrcDisplayLang=en&amp;amp;SrcCategoryId=&amp;amp;SrcFamilyId=&amp;amp;u=%2fdownloads%2fdetails.aspx%3fFamilyID%3d3861e56d-b5ed-4f7f-b2fd-5a53bc71dafc%26DisplayLang%3den"&gt;Microsoft Dynamics CRM 4.0 Internet Facing Deployment Scenarios&lt;/a&gt;&lt;/p&gt;&lt;p style="FONT-SIZE: 11pt; MARGIN: 0in; FONT-FAMILY: Calibri"&gt;This document covers how to set up the Microsoft Dynamics CRM 4.0 Web site to make it available from the Internet.&lt;/p&gt;&lt;p style="FONT-SIZE: 11pt; MARGIN: 0in; FONT-FAMILY: Calibri"&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7208889-6694983192834113927?l=jianwang.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jianwang.blogspot.com/feeds/6694983192834113927/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7208889&amp;postID=6694983192834113927' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7208889/posts/default/6694983192834113927'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7208889/posts/default/6694983192834113927'/><link rel='alternate' type='text/html' href='http://jianwang.blogspot.com/2008/01/microsoft-dynamics-crm-40-sdk-released.html' title='Microsoft Dynamics CRM 4.0 SDK Released!'/><author><name>Jim Wang</name><uri>http://www.blogger.com/profile/15963866631960791206</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='29' src='http://4.bp.blogspot.com/_-lOIedxo3AA/SaQ-RpTrHZI/AAAAAAAAANI/pQoZ77uYOe0/S220/Jim%27.JPG'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7208889.post-7683758331371097718</id><published>2007-12-05T23:03:00.000Z</published><updated>2007-12-05T23:12:18.566Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='JScript'/><title type='text'>How to setting focus to a Tab?</title><content type='html'>There are many discusses in CRM Forum, about how to setting focus to a Tab?&lt;br /&gt;For example, I want the default tab1Tab to be the default tab when I open a record.&lt;br /&gt;&lt;br /&gt;So if you put this code in onLoad() event:&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;document.getElementById('tab1Tab').focus();&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;It doesn't work as you expected.&lt;br /&gt;&lt;br /&gt;But, if you use:&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;crmForm.all.tab1Tab.click();&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;It will work like a dream. :)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7208889-7683758331371097718?l=jianwang.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jianwang.blogspot.com/feeds/7683758331371097718/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7208889&amp;postID=7683758331371097718' title='7 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7208889/posts/default/7683758331371097718'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7208889/posts/default/7683758331371097718'/><link rel='alternate' type='text/html' href='http://jianwang.blogspot.com/2007/12/how-to-setting-focus-to-tab.html' title='How to setting focus to a Tab?'/><author><name>Jim Wang</name><uri>http://www.blogger.com/profile/15963866631960791206</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='29' src='http://4.bp.blogspot.com/_-lOIedxo3AA/SaQ-RpTrHZI/AAAAAAAAANI/pQoZ77uYOe0/S220/Jim%27.JPG'/></author><thr:total>7</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7208889.post-927167184000422651</id><published>2007-11-28T18:15:00.001Z</published><updated>2008-03-15T00:36:10.078Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='ASP.Net'/><title type='text'>How to change the width of Queue Title column?</title><content type='html'>QueueItem and its Views are not customizable in CRM v3.0, one requirement was make the Title column wider then users can see more information. (The Title column contains subject of activities/cases)&lt;br /&gt;By default, Title column width = 300px, so how to change it to 500px? Here's my soluiton:&lt;br /&gt;&lt;pre name="code" class="js"&gt;&lt;br /&gt;/*&lt;br /&gt;../workplace/home_workplace.aspx&lt;br /&gt;Make the queue title column width = 500px&lt;br /&gt;*/&lt;br /&gt;&lt;br /&gt;//1. Edit CRMWeb/workplace/home_workplace.aspx, add a new JavaScript function call: titleWidth()&lt;br /&gt;function titleWidth()&lt;br /&gt;{&lt;br /&gt;    var barCols = document.getElementById("crmGrid_gridBarCols");&lt;br /&gt;    barCols.getElementsByTagName("COL")[2].width = 500;&lt;br /&gt;    crmGrid.Refresh();&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;//2. Call this function from the existing nodeSelect() and window.onload(). &lt;br /&gt;function nodeSelect( sQueueId, sViewId, sMenuId )&lt;br /&gt;{&lt;br /&gt;    ......&lt;br /&gt;    titleWidth();&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;function window.onload()&lt;br /&gt;{&lt;br /&gt;    ......&lt;br /&gt;    titleWidth();&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7208889-927167184000422651?l=jianwang.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jianwang.blogspot.com/feeds/927167184000422651/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7208889&amp;postID=927167184000422651' title='7 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7208889/posts/default/927167184000422651'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7208889/posts/default/927167184000422651'/><link rel='alternate' type='text/html' href='http://jianwang.blogspot.com/2007/11/how-to-change-width-of-queue-title.html' title='How to change the width of Queue Title column?'/><author><name>Jim Wang</name><uri>http://www.blogger.com/profile/15963866631960791206</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='29' src='http://4.bp.blogspot.com/_-lOIedxo3AA/SaQ-RpTrHZI/AAAAAAAAANI/pQoZ77uYOe0/S220/Jim%27.JPG'/></author><thr:total>7</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7208889.post-7051635964453002300</id><published>2007-11-20T09:04:00.002Z</published><updated>2008-03-15T00:33:11.452Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='JScript'/><title type='text'>Hide/remove/move/change entity level tags at runtime</title><content type='html'>&lt;pre name="code" class="js"&gt;&lt;br /&gt;/* Removing Sub-Account navigation bar at runtime */ &lt;br /&gt;if(document.all.navSubAct != null)&lt;br /&gt;{&lt;br /&gt;    navSubAct.style.display = 'none';&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;/* Hiding Service Tag at runtime */ &lt;br /&gt;if(document.all._NA_CS != null)&lt;br /&gt;{&lt;br /&gt;    document.all._NA_CS.style.display = 'none';&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;/* Moving Case under details group at runtime */ &lt;br /&gt;if((document.all.navService != null) &amp;&amp; (document.all._NA_Info != null))&lt;br /&gt;{&lt;br /&gt;    document.all._NA_Info.appendChild(navService);&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;/* Changing group name from 'Sales' to 'Management' */&lt;br /&gt;if (document.all._NA_SFA != null)&lt;br /&gt;{&lt;br /&gt;    document.getElementById("_NA_SFA").innerHTML = document.getElementById("_NA_SFA").innerHTML.replace("Sales","Management");&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7208889-7051635964453002300?l=jianwang.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jianwang.blogspot.com/feeds/7051635964453002300/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7208889&amp;postID=7051635964453002300' title='6 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7208889/posts/default/7051635964453002300'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7208889/posts/default/7051635964453002300'/><link rel='alternate' type='text/html' href='http://jianwang.blogspot.com/2007/11/hideremovemovechange-entity-level-tags.html' title='Hide/remove/move/change entity level tags at runtime'/><author><name>Jim Wang</name><uri>http://www.blogger.com/profile/15963866631960791206</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='29' src='http://4.bp.blogspot.com/_-lOIedxo3AA/SaQ-RpTrHZI/AAAAAAAAANI/pQoZ77uYOe0/S220/Jim%27.JPG'/></author><thr:total>6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7208889.post-9122301694658672721</id><published>2007-11-14T17:41:00.004Z</published><updated>2008-03-15T00:31:10.839Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='ASP.Net'/><title type='text'>Contact Quick Find: a bug?</title><content type='html'>In my environment, I have 'fullname', 'lastname', 'firstname' as the Contact 'Quick Find Columns'.&lt;br /&gt;I noticed that the 'quick find' only search contacts from the current result view, not all records(which it should do). To work around this problem, you can edit &lt;strong&gt;'\_common\scripts\stage.js'&lt;/strong&gt; &lt;br /&gt;&lt;br /&gt;&lt;pre name="code" class="js"&gt;&lt;br /&gt;crmGrid.Reset(); // add this line here&lt;br /&gt;&lt;br /&gt;if (crmGrid.GetParameter("viewid") != SavedQuerySelector.quickFindQuery)&lt;br /&gt;{&lt;br /&gt;    crmGrid.SetParameter("viewid", SavedQuerySelector.quickFindQuery);&lt;br /&gt;    crmGrid.Reset();&lt;br /&gt;}&lt;br /&gt;else&lt;br /&gt;{&lt;br /&gt;    crmGrid.PageNumber = 1;&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;To test it, you must firstly delete all Temporary Internet Files on Internet Explorer Options.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7208889-9122301694658672721?l=jianwang.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jianwang.blogspot.com/feeds/9122301694658672721/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7208889&amp;postID=9122301694658672721' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7208889/posts/default/9122301694658672721'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7208889/posts/default/9122301694658672721'/><link rel='alternate' type='text/html' href='http://jianwang.blogspot.com/2007/11/contact-quick-find-bug.html' title='Contact Quick Find: a bug?'/><author><name>Jim Wang</name><uri>http://www.blogger.com/profile/15963866631960791206</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='29' src='http://4.bp.blogspot.com/_-lOIedxo3AA/SaQ-RpTrHZI/AAAAAAAAANI/pQoZ77uYOe0/S220/Jim%27.JPG'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7208889.post-2009555398121692623</id><published>2007-11-11T12:28:00.001Z</published><updated>2008-03-15T00:27:56.573Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='JScript'/><title type='text'>CRM how to hide field / label / line / section / tab</title><content type='html'>&lt;pre name="code" class="js"&gt;&lt;br /&gt;/*hide field only*/&lt;br /&gt;crmForm.all.field.style.display = 'none';&lt;br /&gt;&lt;br /&gt;/*hide field and this field's label*/&lt;br /&gt;crmForm.all.field.style.display = 'none';&lt;br /&gt;crmForm.all.field_c.style.display = 'none';&lt;br /&gt;&lt;br /&gt;/*hide field and the whole line which contains this field*/&lt;br /&gt;crmForm.all.field.parentElement.parentElement.style.display = 'none';&lt;br /&gt;&lt;br /&gt;/*hide field and the section which contains this field*/&lt;br /&gt;crmForm.all.field.parentElement.parentElement.parentElement.style.display = 'none';&lt;br /&gt;&lt;br /&gt;/*hide a tab(tab number comes from 0)*/&lt;br /&gt;crmForm.all.tab2Tab.style.display = 'none';&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7208889-2009555398121692623?l=jianwang.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jianwang.blogspot.com/feeds/2009555398121692623/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7208889&amp;postID=2009555398121692623' title='14 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7208889/posts/default/2009555398121692623'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7208889/posts/default/2009555398121692623'/><link rel='alternate' type='text/html' href='http://jianwang.blogspot.com/2007/11/crm-how-to-hide-field-label-line.html' title='CRM how to hide field / label / line / section / tab'/><author><name>Jim Wang</name><uri>http://www.blogger.com/profile/15963866631960791206</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='29' src='http://4.bp.blogspot.com/_-lOIedxo3AA/SaQ-RpTrHZI/AAAAAAAAANI/pQoZ77uYOe0/S220/Jim%27.JPG'/></author><thr:total>14</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7208889.post-8957036138879126458</id><published>2007-11-08T17:16:00.003Z</published><updated>2008-03-15T00:26:03.962Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='JScript'/><title type='text'>How to disable / readOnly  CRM fields / iframes</title><content type='html'>Sometimes we need to disable all fields in CRM, so a function could help! &lt;br /&gt;Also, you don't want to diable INPUT/TEXTAREA nodes, because it will become unreadble (gray #808080) if you disable it, so I prefer to set those nodes readOnly. (only INPUT and TEXTAREA support readOnly property!)&lt;br /&gt;&lt;br /&gt;&lt;pre name="code" class="js"&gt;&lt;br /&gt;/*&lt;br /&gt;setDisabled function&lt;br /&gt;1. set readOnly property for INPUT/TEXTAREA nodes&lt;br /&gt;2. disable other nodes&lt;br /&gt;id: element's Id&lt;br /&gt;ignoreNodes: nodes can be ignored&lt;br /&gt;nodesDisabled: bool, true = set disable/readonly&lt;br /&gt;*/&lt;br /&gt;&lt;br /&gt;function setDisabled(id, ignoreNodes, nodesDisabled)&lt;br /&gt;{&lt;br /&gt;    var node, nodes;&lt;br /&gt;    nodes = id.getElementsByTagName('*');&lt;br /&gt;    if(!nodes)&lt;br /&gt;        return;&lt;br /&gt;&lt;br /&gt;    var i = nodes.length;&lt;br /&gt;    while (i--)&lt;br /&gt;    {&lt;br /&gt;        node = nodes[i];&lt;br /&gt;        if(node.nodeName &amp;&amp; !(node.nodeName.toLowerCase() in ignoreNodes))&lt;br /&gt;        {&lt;br /&gt;            if((node.nodeName == "INPUT") || (node.nodeName == "TEXTAREA"))&lt;br /&gt;            {&lt;br /&gt;                node.readOnly = nodesDisabled;&lt;br /&gt;            }&lt;br /&gt;            else&lt;br /&gt;            {&lt;br /&gt;                node.disabled = nodesDisabled;&lt;br /&gt;            }&lt;br /&gt;        }&lt;br /&gt;    }&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;/*disable/readonly fields*/&lt;br /&gt;setDisabled(document.getElementById("areaForm"), {table:'', iframe:'', div:'', form:'', col:'', colgroup:'', lable:'', span:'', tbody:'', body:'', tr:'', td:''}, true);&lt;br /&gt;&lt;br /&gt;/*disable IFRAME*/&lt;br /&gt;try&lt;br /&gt;{&lt;br /&gt;    window.setTimeout(iframeDisabled, 3000);&lt;br /&gt;}&lt;br /&gt;catch(err)&lt;br /&gt;{&lt;br /&gt;    alert("System busy, please try again later!" + err);&lt;br /&gt;    window.close();&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;function iframeDisabled()&lt;br /&gt;{&lt;br /&gt;    setDisabled(document.frames("IFRAME_1").document.getElementById("mnuBar1"),{}, true);&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7208889-8957036138879126458?l=jianwang.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jianwang.blogspot.com/feeds/8957036138879126458/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7208889&amp;postID=8957036138879126458' title='9 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7208889/posts/default/8957036138879126458'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7208889/posts/default/8957036138879126458'/><link rel='alternate' type='text/html' href='http://jianwang.blogspot.com/2007/11/how-to-disable-readonly-crm-fields.html' title='How to disable / readOnly  CRM fields / iframes'/><author><name>Jim Wang</name><uri>http://www.blogger.com/profile/15963866631960791206</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='29' src='http://4.bp.blogspot.com/_-lOIedxo3AA/SaQ-RpTrHZI/AAAAAAAAANI/pQoZ77uYOe0/S220/Jim%27.JPG'/></author><thr:total>9</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7208889.post-4325652719546901595</id><published>2007-11-05T13:36:00.001Z</published><updated>2008-03-15T00:21:12.227Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='ASP.Net'/><title type='text'>Microsoft CRM: Filter On: Last 30 days</title><content type='html'>I have been asked how to change the default Filter On from 'Last 30 days' to 'All' in History associated view.&lt;br /&gt;&lt;br /&gt;Micrsoft CRM doesn't provide this customisation, and there are no good solutions on the Internet. After 3 hours research for the source, I found a simple solution:&lt;br /&gt;The file you need to modify is: &lt;strong&gt;\CRMWeb\_controls\AppGridFilterContainer\AppGridFilterContainer.htc&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;Open the file by notepad, and search the string : &lt;strong&gt;oCallback(oCtrl);&lt;/strong&gt;&lt;br /&gt;Just add some code above it:&lt;br /&gt;&lt;br /&gt;&lt;pre name="code" class="js"&gt;&lt;br /&gt;if(oCtrl.DataValue=="LastXDays;30")&lt;br /&gt;{&lt;br /&gt;    oCtrl.DataValue = "All";&lt;br /&gt;    RefreshGridView();&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;oCallback(oCtrl);&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Save and Close, that's it. Next time when you open History, you will see the change.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7208889-4325652719546901595?l=jianwang.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jianwang.blogspot.com/feeds/4325652719546901595/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7208889&amp;postID=4325652719546901595' title='14 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7208889/posts/default/4325652719546901595'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7208889/posts/default/4325652719546901595'/><link rel='alternate' type='text/html' href='http://jianwang.blogspot.com/2007/11/microsoft-crm-filter-on-last-30-days.html' title='Microsoft CRM: Filter On: Last 30 days'/><author><name>Jim Wang</name><uri>http://www.blogger.com/profile/15963866631960791206</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='29' src='http://4.bp.blogspot.com/_-lOIedxo3AA/SaQ-RpTrHZI/AAAAAAAAANI/pQoZ77uYOe0/S220/Jim%27.JPG'/></author><thr:total>14</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7208889.post-5938028093719753626</id><published>2007-10-27T10:40:00.002+01:00</published><updated>2008-03-15T00:19:01.227Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='Callout'/><category scheme='http://www.blogger.com/atom/ns#' term='Workflow assembly'/><title type='text'>Automatically resolve e-mail sender to selected contact emailaddress1. Part II</title><content type='html'>OK, then what's the next problem? &lt;br /&gt;&lt;br /&gt;The next problem was: If you have a contact(senderA) in CRM, the senderA has 2 email address saved in emailaddress1 and emailaddress2 fields. If senderA send an email from ouside world into CRM by using emailaddress2, then CRM will think that is a associated email address, it's good so far. But when CRM user reply this email to senderA, &lt;strong&gt;CRM will always use emailaddress1 to send email!&lt;/strong&gt; Which is not good because senderA sent this email by emailaddress2, he/she doesn't expect the reply email send into his/her another email box. &lt;br /&gt;&lt;br /&gt;So this is the requirement: make emailaddress1 dynamically, so senderA's emailaddress1 will always keep the latest email address he/she used. Because CRM Email router doesn't fire Email Pre/Post Create callout, so I decide to use Workflow assembly to make it happen. Here's the code, you still need to update workflow.xml and set up a workflow Email.Create job. &lt;br /&gt;&lt;br /&gt;&lt;pre name="code" class="c#"&gt;&lt;br /&gt;/*&lt;br /&gt;* Update contact.emailaddress1 by email sender&lt;br /&gt;* &lt;br /&gt;* */&lt;br /&gt;&lt;br /&gt;public void GetEmailSender(Guid activityid, String sender)&lt;br /&gt;{ &lt;br /&gt;    CrmService service = new CrmService();&lt;br /&gt;    service.Credentials = System.Net.CredentialCache.DefaultCredentials;&lt;br /&gt;    string connectionString = "Server=_db;Database=_MSCRM;Integrated Security=SSPI";&lt;br /&gt;&lt;br /&gt;    //only select a contact(partyobjecttypecode=2) which is also a sender(participationtypemask=1)&lt;br /&gt;    string queryString = "SELECT partyid FROM FilteredActivityParty "&lt;br /&gt;        + "WHERE(participationtypemask = 1) AND "&lt;br /&gt;        + "(partyobjecttypecode = 2) AND "&lt;br /&gt;        + "(activityid = '" + activityid.ToString()&lt;br /&gt;        + "')";&lt;br /&gt;&lt;br /&gt;    SqlConnection connection = new SqlConnection(connectionString);&lt;br /&gt;    SqlCommand command = new SqlCommand(queryString, connection);&lt;br /&gt;    command.Connection.Open();&lt;br /&gt;    &lt;br /&gt;    try&lt;br /&gt;    { &lt;br /&gt;        SqlDataReader reader = command.ExecuteReader(); &lt;br /&gt;        Guid cid = new Guid();&lt;br /&gt;        &lt;br /&gt;        while(reader.Read())&lt;br /&gt;        {&lt;br /&gt;            cid = reader.GetGuid(0); // get FilteredActivityParty.partyid&lt;br /&gt;        }&lt;br /&gt;        if(cid.ToString() != "00000000-0000-0000-0000-000000000000")&lt;br /&gt;        {&lt;br /&gt;            contact c = new contact();&lt;br /&gt;            c.contactid = new Key();&lt;br /&gt;            c.contactid.Value = cid;&lt;br /&gt;            c.emailaddress1 = sender;&lt;br /&gt;            service.Update(c);&lt;br /&gt;        }&lt;br /&gt;    }&lt;br /&gt;    catch (Exception ex)&lt;br /&gt;    {&lt;br /&gt;        TextWriter log = TextWriter.Synchronized(File.AppendText(@"C:\CRM_Debug\error.txt"));&lt;br /&gt;        log.WriteLine(DateTime.Now);&lt;br /&gt;        log.WriteLine(ex.ToString());&lt;br /&gt;        log.WriteLine("");&lt;br /&gt;        log.Close();&lt;br /&gt;    }&lt;br /&gt;    finally&lt;br /&gt;    {&lt;br /&gt;        connection.Close();&lt;br /&gt;    }&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7208889-5938028093719753626?l=jianwang.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jianwang.blogspot.com/feeds/5938028093719753626/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7208889&amp;postID=5938028093719753626' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7208889/posts/default/5938028093719753626'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7208889/posts/default/5938028093719753626'/><link rel='alternate' type='text/html' href='http://jianwang.blogspot.com/2007/10/automatically-resolve-e-mail-sender-to_27.html' title='Automatically resolve e-mail sender to selected contact emailaddress1. Part II'/><author><name>Jim Wang</name><uri>http://www.blogger.com/profile/15963866631960791206</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='29' src='http://4.bp.blogspot.com/_-lOIedxo3AA/SaQ-RpTrHZI/AAAAAAAAANI/pQoZ77uYOe0/S220/Jim%27.JPG'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7208889.post-5777130256524295372</id><published>2007-10-20T14:46:00.001+01:00</published><updated>2008-03-15T00:12:12.686Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='JScript'/><category scheme='http://www.blogger.com/atom/ns#' term='ASP.Net'/><category scheme='http://www.blogger.com/atom/ns#' term='SQL'/><title type='text'>Automatically resolve e-mail sender to selected contact emailaddress1. Part I</title><content type='html'>We faced two problems in CRM 3.0 Email, the first problem was: &lt;br /&gt;When an email(senderA@example.com) sent from outside world into CRM system, if sender's email address isn't in the system, then CRM will ask you to associate it with an existing record(only associate with a Contact record in our case). But once you select a contact, it looks associated, but it doesn't update the Contact's email field. You have to open the Contact record and manually copy the sender's email address into Contact's email field. &lt;br /&gt;&lt;br /&gt;Regarding Microsoft KB: 922116, it is by design! Our requirement is make it automatically copy the sender's email address into the assocaited Contact.emailaddress1 field. &lt;br /&gt;&lt;br /&gt;To achieve that, I made an unsupported change(again? :))&lt;br /&gt;&lt;br /&gt;&lt;pre name="code" class="js"&gt;&lt;br /&gt;/*&lt;br /&gt;Automatically resolve e-mail sender to selected contact emailaddress1&lt;br /&gt;Microsoft KB: 922116, http://support.microsoft.com/kb/922116&lt;br /&gt;\_controls\PartyList\resolve.aspx&lt;br /&gt;*/&lt;br /&gt;&lt;br /&gt;function applychanges()&lt;br /&gt;{&lt;br /&gt;    //update cotnact emailaddress1&lt;br /&gt;    if((document.getElementById("crmExistingLookup").DataValue != null)&lt;br /&gt;    &amp;&amp;(document.getElementById("crmExistingLookup").DataValue[0] != null)&lt;br /&gt;    &amp;&amp;(document.getElementById("crmExistingLookup").DataValue[0].type == 2))&lt;br /&gt;    {&lt;br /&gt;        var eml = document.getElementById("txtName").value;&lt;br /&gt;        var cid = document.getElementById("crmExistingLookup").DataValue[0].id;&lt;br /&gt;        var connection = new ActiveXObject("ADODB.Connection");&lt;br /&gt;        var connectionString = "Provider=SQLOLEDB; Server=_db; Database=_mscrm; Integrated Security=SSPI";&lt;br /&gt;&lt;br /&gt;        connection.Open(connectionString);&lt;br /&gt;        var sql = "UPDATE FilteredContact SET emailaddress1='" + eml +"'WHERE contactid = '" + cid + "'" ;&lt;br /&gt;        rs = new ActiveXObject("ADODB.Recordset");&lt;br /&gt;        rs.Open(sql, connection, 1, 2);&lt;br /&gt;        &lt;br /&gt;        connection.Close();&lt;br /&gt;&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    ....&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7208889-5777130256524295372?l=jianwang.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jianwang.blogspot.com/feeds/5777130256524295372/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7208889&amp;postID=5777130256524295372' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7208889/posts/default/5777130256524295372'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7208889/posts/default/5777130256524295372'/><link rel='alternate' type='text/html' href='http://jianwang.blogspot.com/2007/10/automatically-resolve-e-mail-sender-to.html' title='Automatically resolve e-mail sender to selected contact emailaddress1. Part I'/><author><name>Jim Wang</name><uri>http://www.blogger.com/profile/15963866631960791206</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='29' src='http://4.bp.blogspot.com/_-lOIedxo3AA/SaQ-RpTrHZI/AAAAAAAAANI/pQoZ77uYOe0/S220/Jim%27.JPG'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7208889.post-7252502262211520239</id><published>2007-09-09T13:40:00.003+01:00</published><updated>2008-03-15T00:09:26.435Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='Debug'/><category scheme='http://www.blogger.com/atom/ns#' term='Callout'/><title type='text'>try{} cacth{} ,make it useful!</title><content type='html'>Microsoft CRM Platform will only throw SoapException whose message property is always "Server was unable to process request.". So we definitely need it in our catch{} try{} .&lt;br /&gt;Plus, if we want to catch SqlException, we need catch it as well. Or to use a common Exception to catch everything!&lt;br /&gt;&lt;br /&gt;&lt;pre name="code" class="c#"&gt;&lt;br /&gt;catch (System.Web.Services.Protocols.SoapException ex)&lt;br /&gt;{ &lt;br /&gt;    TextWriter log = TextWriter.Synchronized(File.AppendText(@"C:\CRM_Debug\error.txt"));&lt;br /&gt;    log.WriteLine("SoapException: " + DateTime.Now.ToString());&lt;br /&gt;    log.WriteLine("Error Message: " + ex.Detail.InnerText);&lt;br /&gt;    XmlDocument error = new XmlDocument();&lt;br /&gt;    error.LoadXml(ex.Detail.InnerXml);&lt;br /&gt;    log.WriteLine("Error Code: " + error.SelectSingleNode("/error/code").InnerText);&lt;br /&gt;    log.WriteLine("Error Description: " + error.SelectSingleNode("/error/description").InnerText);&lt;br /&gt;    log.WriteLine("Error Type: " + error.SelectSingleNode("/error/type").InnerText);&lt;br /&gt;    log.WriteLine();&lt;br /&gt;    log.Close();&lt;br /&gt;}&lt;br /&gt;catch (SqlException ex) &lt;br /&gt;{&lt;br /&gt;    //&lt;br /&gt;}&lt;br /&gt;catch (Exception ex) &lt;br /&gt;{&lt;br /&gt;    //&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7208889-7252502262211520239?l=jianwang.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jianwang.blogspot.com/feeds/7252502262211520239/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7208889&amp;postID=7252502262211520239' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7208889/posts/default/7252502262211520239'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7208889/posts/default/7252502262211520239'/><link rel='alternate' type='text/html' href='http://jianwang.blogspot.com/2007/09/try-cacth-make-it-useful.html' title='try{} cacth{} ,make it useful!'/><author><name>Jim Wang</name><uri>http://www.blogger.com/profile/15963866631960791206</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='29' src='http://4.bp.blogspot.com/_-lOIedxo3AA/SaQ-RpTrHZI/AAAAAAAAANI/pQoZ77uYOe0/S220/Jim%27.JPG'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7208889.post-2997899858897418882</id><published>2007-08-21T13:36:00.002+01:00</published><updated>2008-03-15T00:07:15.535Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='Debug'/><category scheme='http://www.blogger.com/atom/ns#' term='Callout'/><title type='text'>Troubleshooting Callout</title><content type='html'>1. Grant the account that is running the CRMAppPool application pool the Full Control permission for the following folder:&lt;br /&gt;&lt;strong&gt;C:\Program Files\Microsoft CRM\Server\bin\assembly&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;2. Change the SetupMode registry subkey too.&lt;br /&gt;&lt;strong&gt;HKEY_LOCAL_MACHINE\Software\Microsoft\MSCRM&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;3. Re-add CRMServices web service from Visual Studio.Net&lt;br /&gt;&lt;br /&gt;4. Set output to file system, for example: PostUpdate&lt;br /&gt;&lt;pre name="code" class="c#"&gt;&lt;br /&gt;TextWriter log = TextWriter.Synchronized( File.AppendText @"C:\CRM_SDK_Drop\Update.txt"));&lt;br /&gt;log.WriteLine("PostUpdate");&lt;br /&gt;log.WriteLine("ObjectType: " + entityContext.EntityTypeCode.ToString());&lt;br /&gt;log.WriteLine("ObjectId: " + entityContext.InstanceId.ToString());&lt;br /&gt;log.WriteLine("CreatorId: " + userContext.UserId.ToString());&lt;br /&gt;log.WriteLine();&lt;br /&gt;log.Close();&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;5. Debug:&lt;br /&gt;Callout assembly: w3wp.exe, (don't forget PDB file)&lt;br /&gt;Workflow assembly: CrmWorkflowService.exe , (don't forget PDB file)&lt;br /&gt;Also, see these useful links:&lt;br /&gt;&lt;a href="http://blog.sonomapartners.com/2007/03/is_your_microso.html"&gt;http://blog.sonomapartners.com/2007/03/is_your_microso.html&lt;/a&gt;&lt;br /&gt;&lt;a href="http://ronaldlemmen.blogspot.com/2007/01/callout-not-working.html"&gt;http://ronaldlemmen.blogspot.com/2007/01/callout-not-working.html&lt;/a&gt;&lt;br /&gt;&lt;a href="http://support.microsoft.com/kb/933842"&gt;http://support.microsoft.com/kb/933842&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7208889-2997899858897418882?l=jianwang.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jianwang.blogspot.com/feeds/2997899858897418882/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7208889&amp;postID=2997899858897418882' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7208889/posts/default/2997899858897418882'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7208889/posts/default/2997899858897418882'/><link rel='alternate' type='text/html' href='http://jianwang.blogspot.com/2007/08/troubleshooting-callout.html' title='Troubleshooting Callout'/><author><name>Jim Wang</name><uri>http://www.blogger.com/profile/15963866631960791206</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='29' src='http://4.bp.blogspot.com/_-lOIedxo3AA/SaQ-RpTrHZI/AAAAAAAAANI/pQoZ77uYOe0/S220/Jim%27.JPG'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7208889.post-8234620099836647220</id><published>2007-07-28T13:13:00.002+01:00</published><updated>2008-03-15T00:01:12.250Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='ASP.Net'/><title type='text'>How to allow '&amp;' in email address</title><content type='html'>CRM 3.0 doesn't allow '&amp;' in email address ,however, it's a requirement to make it possible! &lt;br /&gt;The file you need to change is located in: \_forms\controls\INPUT.text.eml.htc, &lt;br /&gt;The idea is change the regular expression for email field:&lt;br /&gt;&lt;pre name="code" class="js"&gt;&lt;br /&gt;/*&lt;br /&gt;Allow '&amp;' in email address&lt;br /&gt;Need to edit htc file(HTML Components)&lt;br /&gt;\_forms\controls\INPUT.text.eml.htc &lt;br /&gt;*/&lt;br /&gt;//var _validEmailRegexp = /^\w([-._'\w]*\w)?@\w([-._\w]*\w)?\.\w+$/;&lt;br /&gt;var _validEmailRegexp = /^\w([&amp;-._'\w]*\w)?@\w([-._\w]*\w)?\.\w+$/;&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7208889-8234620099836647220?l=jianwang.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jianwang.blogspot.com/feeds/8234620099836647220/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7208889&amp;postID=8234620099836647220' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7208889/posts/default/8234620099836647220'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7208889/posts/default/8234620099836647220'/><link rel='alternate' type='text/html' href='http://jianwang.blogspot.com/2007/07/how-to-allow-in-email-address.html' title='How to allow &apos;&amp;&apos; in email address'/><author><name>Jim Wang</name><uri>http://www.blogger.com/profile/15963866631960791206</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='29' src='http://4.bp.blogspot.com/_-lOIedxo3AA/SaQ-RpTrHZI/AAAAAAAAANI/pQoZ77uYOe0/S220/Jim%27.JPG'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7208889.post-3984232843650616957</id><published>2007-07-14T18:05:00.000+01:00</published><updated>2007-12-03T12:56:12.005Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='ASP.Net'/><title type='text'>Always show address bar in Internet Explorer</title><content type='html'>Sometimes we need to customise .aspx page in CRM (unsupported way). So it's very useful if you could show IE address bar at All time. Actually it's very easy to do:&lt;br /&gt;&lt;br /&gt;1. Open Internet Explorer, go to [Tools] -&gt; [Internet Options] -&gt; [Security],  select a site which contain your CRM website.&lt;br /&gt;&lt;br /&gt;2. Click Custom level, under section "Miscellaneous", disable this option: "&lt;span style="font-weight: bold;"&gt;Allow websites to open windows without address or status bars&lt;/span&gt;", and restart IE.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7208889-3984232843650616957?l=jianwang.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jianwang.blogspot.com/feeds/3984232843650616957/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7208889&amp;postID=3984232843650616957' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7208889/posts/default/3984232843650616957'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7208889/posts/default/3984232843650616957'/><link rel='alternate' type='text/html' href='http://jianwang.blogspot.com/2007/07/show-address-bar-in-internet-explorer.html' title='Always show address bar in Internet Explorer'/><author><name>Jim Wang</name><uri>http://www.blogger.com/profile/15963866631960791206</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='29' src='http://4.bp.blogspot.com/_-lOIedxo3AA/SaQ-RpTrHZI/AAAAAAAAANI/pQoZ77uYOe0/S220/Jim%27.JPG'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7208889.post-5127290322213553771</id><published>2007-05-20T10:46:00.001+01:00</published><updated>2008-03-14T23:57:13.016Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='SharePoint'/><category scheme='http://www.blogger.com/atom/ns#' term='WSS'/><category scheme='http://www.blogger.com/atom/ns#' term='CRM Integration'/><title type='text'>Integrate CRM with WSS 3.0 Picture Library</title><content type='html'>I worked for a project which needs integrate CRM with WSS 3.0 picture library.&lt;br /&gt;The requirement was: Each account has it's own picture library in WSS, so the pictures could be use in CRM report etc.&lt;br /&gt;Here's the code:&lt;br /&gt;&lt;br /&gt;&lt;pre class="c#" name="code"&gt;&lt;br /&gt;public partial class _Default : System.Web.UI.Page&lt;br /&gt;{&lt;br /&gt;    string accountGUID = "";&lt;br /&gt;    protected void Page_Load(object sender, EventArgs e)&lt;br /&gt;    {&lt;br /&gt;        string entityId = Request.QueryString["oId"];&lt;br /&gt;        Guid accountId = (entityId == null) ? (new Guid("00000000-0000-0000-0000-000000000000")) : new Guid(entityId);&lt;br /&gt;        accountGUID = accountId.ToString();&lt;br /&gt;        string url = "http://WSS:6666/PL/" + accountGUID; // PL is a picture library in WSS 3.0&lt;br /&gt;&lt;br /&gt;        if (CheckUrl(url))&lt;br /&gt;        {&lt;br /&gt;            Response.Redirect(url);&lt;br /&gt;        }&lt;br /&gt;        else&lt;br /&gt;        {&lt;br /&gt;            Label1.Text = "This account doesn't has a Pictures Library, please create a one for it.";&lt;br /&gt;        }&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    public static bool CheckUrl(string url)&lt;br /&gt;    {&lt;br /&gt;        //check if the url(pictures library) is existing&lt;br /&gt;        HttpWebResponse httpResponse = null;&lt;br /&gt;&lt;br /&gt;        try&lt;br /&gt;        {&lt;br /&gt;            HttpWebRequest httpRequest = (HttpWebRequest)WebRequest.Create(url);&lt;br /&gt;            httpRequest.Credentials = System.Net.CredentialCache.DefaultCredentials;&lt;br /&gt;            httpResponse = (HttpWebResponse)httpRequest.GetResponse();&lt;br /&gt;            return (httpResponse.StatusCode == System.Net.HttpStatusCode.OK);&lt;br /&gt;        }&lt;br /&gt;        catch (Exception ex)&lt;br /&gt;        {&lt;br /&gt;            return false;&lt;br /&gt;        }&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    protected void Button1_Click(object sender, EventArgs e)&lt;br /&gt;    {&lt;br /&gt;        //Response.Redirect("http://WSS:6666/PL/Forms/Upload.aspx?Type=1");&lt;br /&gt;        SPSite Site = new SPSite("http://WSS:6666"); //site url&lt;br /&gt;        SPWeb Web = Site.OpenWeb();&lt;br /&gt;        Site.AllowUnsafeUpdates = true;&lt;br /&gt;        Web.AllowUnsafeUpdates = true;&lt;br /&gt;        SPFolder rootFolder = Web.GetFolder("PL"); // PL is a picture library in WSS 3.0&lt;br /&gt;        rootFolder.SubFolders.Add(accountGUID);&lt;br /&gt;        Page_Load(null, null);&lt;br /&gt;    }&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7208889-5127290322213553771?l=jianwang.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jianwang.blogspot.com/feeds/5127290322213553771/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7208889&amp;postID=5127290322213553771' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7208889/posts/default/5127290322213553771'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7208889/posts/default/5127290322213553771'/><link rel='alternate' type='text/html' href='http://jianwang.blogspot.com/2007/05/integrate-crm-with-wss-30-picture.html' title='Integrate CRM with WSS 3.0 Picture Library'/><author><name>Jim Wang</name><uri>http://www.blogger.com/profile/15963866631960791206</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='29' src='http://4.bp.blogspot.com/_-lOIedxo3AA/SaQ-RpTrHZI/AAAAAAAAANI/pQoZ77uYOe0/S220/Jim%27.JPG'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7208889.post-414108851070455866</id><published>2007-05-05T11:10:00.001+01:00</published><updated>2008-03-14T23:53:04.540Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='JScript'/><category scheme='http://www.blogger.com/atom/ns#' term='SQL'/><title type='text'>Accessing CRM database from JScript</title><content type='html'>Here's the code how to accesss CRM database via JScript!&lt;br /&gt;&lt;br /&gt;&lt;pre name="code" class="js"&gt;&lt;br /&gt;//initial connection&lt;br /&gt;var connection = new ActiveXObject("ADODB.Connection");&lt;br /&gt;var connectionString = "Provider=SQLOLEDB;Server=_db;Database=_mscrm;Integrated Security=sspi";&lt;br /&gt;//open connection&lt;br /&gt;connection.Open(connectionString);&lt;br /&gt;//query string&lt;br /&gt;var query = "SELECT name FROM FilteredAccount";&lt;br /&gt;//create a ADO object&lt;br /&gt;var rs = new ActiveXObject("ADODB.Recordset");&lt;br /&gt;//open connection&lt;br /&gt;rs.Open(query, connection, 1, 2);&lt;br /&gt;rs.moveFirst();&lt;br /&gt;var values = "";&lt;br /&gt;//read data&lt;br /&gt;while (!rs.eof)&lt;br /&gt;{&lt;br /&gt;    values += rs.Fields(0).Value.toString() + " ";&lt;br /&gt;    rs.moveNext();&lt;br /&gt;}&lt;br /&gt;//close connection&lt;br /&gt;connection.Close();&lt;br /&gt;//alert value&lt;br /&gt;alert(values);&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7208889-414108851070455866?l=jianwang.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jianwang.blogspot.com/feeds/414108851070455866/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7208889&amp;postID=414108851070455866' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7208889/posts/default/414108851070455866'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7208889/posts/default/414108851070455866'/><link rel='alternate' type='text/html' href='http://jianwang.blogspot.com/2007/05/accessing-crm-database-from-jscript.html' title='Accessing CRM database from JScript'/><author><name>Jim Wang</name><uri>http://www.blogger.com/profile/15963866631960791206</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='29' src='http://4.bp.blogspot.com/_-lOIedxo3AA/SaQ-RpTrHZI/AAAAAAAAANI/pQoZ77uYOe0/S220/Jim%27.JPG'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7208889.post-5286967696034121522</id><published>2007-04-28T10:11:00.001+01:00</published><updated>2008-03-14T23:47:40.001Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='JScript'/><title type='text'>Age calculate by Birthday</title><content type='html'>&lt;pre name="code" class="js"&gt;&lt;br /&gt;if(crmForm.all.birthdate.DataValue != null)&lt;br /&gt;{&lt;br /&gt;    var now = new Date();&lt;br /&gt;    var birthday = crmForm.all.birthdate.DataValue;&lt;br /&gt;    var monthdif = now.getMonth() - birthday.getMonth();&lt;br /&gt;    if(monthdif &amp;gt; -1)&lt;br /&gt;        crmForm.all.new_age.DataValue = now.getYear() - birthday.getYear();&lt;br /&gt;    else&lt;br /&gt;        crmForm.all.new_age.DataValue = now.getYear() - birthday.getYear() - 1;&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7208889-5286967696034121522?l=jianwang.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jianwang.blogspot.com/feeds/5286967696034121522/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7208889&amp;postID=5286967696034121522' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7208889/posts/default/5286967696034121522'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7208889/posts/default/5286967696034121522'/><link rel='alternate' type='text/html' href='http://jianwang.blogspot.com/2007/04/age-calculate-by-birthday.html' title='Age calculate by Birthday'/><author><name>Jim Wang</name><uri>http://www.blogger.com/profile/15963866631960791206</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='29' src='http://4.bp.blogspot.com/_-lOIedxo3AA/SaQ-RpTrHZI/AAAAAAAAANI/pQoZ77uYOe0/S220/Jim%27.JPG'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7208889.post-3377218699290127745</id><published>2007-04-21T12:59:00.000+01:00</published><updated>2008-01-20T00:31:01.792Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='WSS'/><title type='text'>Uninstall WSS 3.0 MICROSOFT##SSEE Database</title><content type='html'>&lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 27pt; VERTICAL-ALIGN: middle; TEXT-INDENT: -18pt; LINE-HEIGHT: 150%"&gt;Sometimes we need to uninstall WSS 3.0 database manually, here is the way:&lt;br /&gt;1. HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall&lt;br /&gt;2. Look for each {GUID} which Display Name = "Microsoft SQL 2005 Embedded Edition"&lt;br /&gt;3. Run: MsiExec.exe /X {GUID} CALLERID=OCSETUP.EXE&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7208889-3377218699290127745?l=jianwang.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jianwang.blogspot.com/feeds/3377218699290127745/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7208889&amp;postID=3377218699290127745' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7208889/posts/default/3377218699290127745'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7208889/posts/default/3377218699290127745'/><link rel='alternate' type='text/html' href='http://jianwang.blogspot.com/2007/04/uninstall-wss-30-microsoftssee-database.html' title='Uninstall WSS 3.0 MICROSOFT##SSEE Database'/><author><name>Jim Wang</name><uri>http://www.blogger.com/profile/15963866631960791206</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='29' src='http://4.bp.blogspot.com/_-lOIedxo3AA/SaQ-RpTrHZI/AAAAAAAAANI/pQoZ77uYOe0/S220/Jim%27.JPG'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7208889.post-1138806775357212699</id><published>2007-04-09T13:20:00.000+01:00</published><updated>2008-01-12T10:53:18.396Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='Office'/><title type='text'>WORD TIPS 1 – Find and Replace</title><content type='html'>&lt;p class="MsoNormal" style="line-height: 150%;"&gt;&lt;span style=""&gt;History: XXXX&lt;br /&gt;&lt;br /&gt;History 02): XXXX&lt;br /&gt;&lt;br /&gt;History 03): XXXX&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Use Find and Replace (Use wildcards):&lt;br /&gt;&lt;br /&gt;Find what: &lt;b&gt;^13History ([0-9][0-9])&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Replace with: &lt;b&gt;, \1&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;History: XXXX , 02): XXXX , 03): XXXX&lt;o:p&gt;&lt;/o:p&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/7208889-1138806775357212699?l=jianwang.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jianwang.blogspot.com/feeds/1138806775357212699/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7208889&amp;postID=1138806775357212699' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7208889/posts/default/1138806775357212699'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7208889/posts/default/1138806775357212699'/><link rel='alternate' type='text/html' href='http://jianwang.blogspot.com/2007/04/word-tips-1-find-and-replace.html' title='WORD TIPS 1 – Find and Replace'/><author><name>Jim Wang</name><uri>http://www.blogger.com/profile/15963866631960791206</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='29' src='http://4.bp.blogspot.com/_-lOIedxo3AA/SaQ-RpTrHZI/AAAAAAAAANI/pQoZ77uYOe0/S220/Jim%27.JPG'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7208889.post-8149939073452867013</id><published>2007-04-05T17:53:00.003+01:00</published><updated>2008-03-14T23:43:03.003Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='Office'/><title type='text'>EXCEL Tips 2</title><content type='html'>&lt;strong&gt;'Macro to split cells at the comma&lt;/strong&gt;&lt;br /&gt;&lt;pre class="vb" name="code"&gt;&lt;br /&gt;Sub SplitName()&lt;br /&gt;Dim cell As Range&lt;br /&gt;Dim separator As Integer&lt;br /&gt;'loop through each cell in the selection&lt;br /&gt;For Each cell In Selection&lt;br /&gt;'search for a comma&lt;br /&gt;separator = InStr(cell.Value, ",")&lt;br /&gt;If separator &gt; 0 Then&lt;br /&gt;'put the lastname in the first column to the right&lt;br /&gt;cell.Offset(0, 1).Value = Left(cell.Value, separator - 1)&lt;br /&gt;'put the firstnames in the second column to the right&lt;br /&gt;cell.Offset(0, 2).Value = Mid(cell.Value, separator + 1)&lt;br /&gt;End If&lt;br /&gt;Next cell&lt;br /&gt;End Sub&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;'Macro to join 2 cells&lt;/strong&gt;&lt;br /&gt;&lt;pre class="vb" name="code"&gt;&lt;br /&gt;Sub Join()&lt;br /&gt;Application.ScreenUpdating = False&lt;br /&gt;Application.Calculation = xlCalculationAutomatic&lt;br /&gt;On Error Resume Next&lt;br /&gt;Dim irows As Long, mrows As Long, ir As Long, ic As Long&lt;br /&gt;irows = Selection.Rows.Count&lt;br /&gt;Set lastcell = Cells.SpecialCells(xlLastCell)&lt;br /&gt;mrow = lastcell.Row&lt;br /&gt;If mrow &lt; irows =" mrow" icols =" Selection.Columns.Count" ir =" 1" newcell =" Trim(Selection.Item(ir," ic =" 2" trimmed =" Trim(Selection.Item(ir,"&gt; 0 Then newcell = newcell &amp;amp; " " &amp;amp; trimmed&lt;br /&gt;Selection.Item(ir, ic) = ""&lt;br /&gt;Next ic&lt;br /&gt;Selection.Item(ir, 1).Value = newcell&lt;br /&gt;Next ir&lt;br /&gt;Application.Calculation = xlCalculationAutomatic&lt;br /&gt;Application.ScreenUpdating = True&lt;br /&gt;End Sub&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7208889-8149939073452867013?l=jianwang.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jianwang.blogspot.com/feeds/8149939073452867013/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7208889&amp;postID=8149939073452867013' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7208889/posts/default/8149939073452867013'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7208889/posts/default/8149939073452867013'/><link rel='alternate' type='text/html' href='http://jianwang.blogspot.com/2007/04/excel-tips-2.html' title='EXCEL Tips 2'/><author><name>Jim Wang</name><uri>http://www.blogger.com/profile/15963866631960791206</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='29' src='http://4.bp.blogspot.com/_-lOIedxo3AA/SaQ-RpTrHZI/AAAAAAAAANI/pQoZ77uYOe0/S220/Jim%27.JPG'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7208889.post-1153789013290585856</id><published>2007-04-05T01:31:00.000+01:00</published><updated>2007-11-11T12:37:10.976Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='Office'/><title type='text'>EXCEL Tips 1</title><content type='html'>&lt;span xmlns=""&gt;&lt;p style="margin-left: 5pt;"&gt;&lt;br /&gt;&lt;/p&gt;&lt;div style="margin-left: 5pt;"&gt;&lt;table style="border-collapse: collapse;" border="0"&gt;&lt;colgroup&gt;&lt;col style="width: 64px;"&gt;&lt;col style="width: 206px;"&gt;&lt;col style="width: 64px;"&gt;&lt;col style="width: 77px;"&gt;&lt;col style="width: 64px;"&gt;&lt;col style="width: 91px;"&gt;&lt;/colgroup&gt;&lt;tbody valign="top"&gt;&lt;tr&gt;&lt;td style="border: 1pt solid rgb(163, 163, 163); padding: 5px;"&gt;&lt;p&gt;&lt;span style=";font-family:Verdana;font-size:85%;color:red;"   &gt;User&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style="border-style: solid solid solid none; border-color: rgb(163, 163, 163) rgb(163, 163, 163) rgb(163, 163, 163) -moz-use-text-color; border-width: 1pt 1pt 1pt medium; padding: 5px;"&gt;&lt;p&gt;&lt;span style=";font-family:Verdana;font-size:85%;color:red;"   &gt;Hobby&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style="border-style: solid solid solid none; border-color: rgb(163, 163, 163) rgb(163, 163, 163) rgb(163, 163, 163) -moz-use-text-color; border-width: 1pt 1pt 1pt medium; padding: 5px;"&gt;&lt;p&gt;&lt;span style=";font-family:Verdana;font-size:85%;color:red;"   &gt;Read&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style="border-style: solid solid solid none; border-color: rgb(163, 163, 163) rgb(163, 163, 163) rgb(163, 163, 163) -moz-use-text-color; border-width: 1pt 1pt 1pt medium; padding: 5px;"&gt;&lt;p&gt;&lt;span style=";font-family:Verdana;font-size:85%;color:red;"   &gt;Internet&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style="border-style: solid solid solid none; border-color: rgb(163, 163, 163) rgb(163, 163, 163) rgb(163, 163, 163) -moz-use-text-color; border-width: 1pt 1pt 1pt medium; padding: 5px;"&gt;&lt;p&gt;&lt;span style=";font-family:Verdana;font-size:85%;color:red;"   &gt;Music&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style="border-style: solid solid solid none; border-color: rgb(163, 163, 163) rgb(163, 163, 163) rgb(163, 163, 163) -moz-use-text-color; border-width: 1pt 1pt 1pt medium; padding: 5px;"&gt;&lt;p&gt;&lt;span style=";font-family:Verdana;font-size:85%;color:red;"   &gt;Computer&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="border-style: none solid solid; border-color: -moz-use-text-color rgb(163, 163, 163) rgb(163, 163, 163); border-width: medium 1pt 1pt; padding: 5px;"&gt;&lt;p&gt;&lt;span style=";font-family:Verdana;font-size:85%;color:black;"   &gt;User1&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style="border-style: none solid solid none; border-color: -moz-use-text-color rgb(163, 163, 163) rgb(163, 163, 163) -moz-use-text-color; border-width: medium 1pt 1pt medium; padding: 5px;"&gt;&lt;p&gt;&lt;span style=";font-family:Verdana;font-size:85%;color:black;"   &gt;Reading,Internet,Music&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style="border-style: none solid solid none; border-color: -moz-use-text-color rgb(163, 163, 163) rgb(163, 163, 163) -moz-use-text-color; border-width: medium 1pt 1pt medium; padding: 5px;"&gt;&lt;p&gt;&lt;span style=";font-family:Verdana;font-size:85%;"  &gt;Yes&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style="border-style: none solid solid none; border-color: -moz-use-text-color rgb(163, 163, 163) rgb(163, 163, 163) -moz-use-text-color; border-width: medium 1pt 1pt medium; padding: 5px;"&gt;&lt;p&gt;&lt;span style=";font-family:Verdana;font-size:85%;"  &gt;Yes&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style="border-style: none solid solid none; border-color: -moz-use-text-color rgb(163, 163, 163) rgb(163, 163, 163) -moz-use-text-color; border-width: medium 1pt 1pt medium; padding: 5px;"&gt;&lt;p&gt;&lt;span style=";font-family:Verdana;font-size:85%;"  &gt;Yes&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style="border-style: none solid solid none; border-color: -moz-use-text-color rgb(163, 163, 163) rgb(163, 163, 163) -moz-use-text-color; border-width: medium 1pt 1pt medium; padding: 5px;"&gt;&lt;p&gt;&lt;span style=";font-family:Verdana;font-size:85%;"  &gt;No&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="border-style: none solid solid; border-color: -moz-use-text-color rgb(163, 163, 163) rgb(163, 163, 163); border-width: medium 1pt 1pt; padding: 5px;"&gt;&lt;p&gt;&lt;span style=";font-family:Verdana;font-size:85%;color:black;"   &gt;User2&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style="border-style: none solid solid none; border-color: -moz-use-text-color rgb(163, 163, 163) rgb(163, 163, 163) -moz-use-text-color; border-width: medium 1pt 1pt medium; padding: 5px;"&gt;&lt;p&gt;&lt;span style=";font-family:Verdana;font-size:85%;color:black;"   &gt;Internet,Computer,Reading&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style="border-style: none solid solid none; border-color: -moz-use-text-color rgb(163, 163, 163) rgb(163, 163, 163) -moz-use-text-color; border-width: medium 1pt 1pt medium; padding: 5px;"&gt;&lt;p&gt;&lt;span style=";font-family:Verdana;font-size:85%;"  &gt;Yes&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style="border-style: none solid solid none; border-color: -moz-use-text-color rgb(163, 163, 163) rgb(163, 163, 163) -moz-use-text-color; border-width: medium 1pt 1pt medium; padding: 5px;"&gt;&lt;p&gt;&lt;span style=";font-family:Verdana;font-size:85%;"  &gt;Yes&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style="border-style: none solid solid none; border-color: -moz-use-text-color rgb(163, 163, 163) rgb(163, 163, 163) -moz-use-text-color; border-width: medium 1pt 1pt medium; padding: 5px;"&gt;&lt;p&gt;&lt;span style=";font-family:Verdana;font-size:85%;"  &gt;No&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style="border-style: none solid solid none; border-color: -moz-use-text-color rgb(163, 163, 163) rgb(163, 163, 163) -moz-use-text-color; border-width: medium 1pt 1pt medium; padding: 5px;"&gt;&lt;p&gt;&lt;span style=";font-family:Verdana;font-size:85%;"  &gt;Yes&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="border-style: none solid solid; border-color: -moz-use-text-color rgb(163, 163, 163) rgb(163, 163, 163); border-width: medium 1pt 1pt; padding: 5px;"&gt;&lt;p&gt;&lt;span style=";font-family:Verdana;font-size:85%;color:black;"   &gt;User3&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style="border-style: none solid solid none; border-color: -moz-use-text-color rgb(163, 163, 163) rgb(163, 163, 163) -moz-use-text-color; border-width: medium 1pt 1pt medium; padding: 5px;"&gt;&lt;p&gt;&lt;span style=";font-family:Verdana;font-size:85%;"  &gt; &lt;/span&gt; &lt;/p&gt;&lt;span style="font-size:85%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/td&gt;&lt;td style="border-style: none solid solid none; border-color: -moz-use-text-color rgb(163, 163, 163) rgb(163, 163, 163) -moz-use-text-color; border-width: medium 1pt 1pt medium; padding: 5px;"&gt;&lt;p&gt;&lt;span style=";font-family:Verdana;font-size:85%;"  &gt;No&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style="border-style: none solid solid none; border-color: -moz-use-text-color rgb(163, 163, 163) rgb(163, 163, 163) -moz-use-text-color; border-width: medium 1pt 1pt medium; padding: 5px;"&gt;&lt;p&gt;&lt;span style=";font-family:Verdana;font-size:85%;"  &gt;No&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style="border-style: none solid solid none; border-color: -moz-use-text-color rgb(163, 163, 163) rgb(163, 163, 163) -moz-use-text-color; border-width: medium 1pt 1pt medium; padding: 5px;"&gt;&lt;p&gt;&lt;span style=";font-family:Verdana;font-size:85%;"  &gt;No&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style="border-style: none solid solid none; border-color: -moz-use-text-color rgb(163, 163, 163) rgb(163, 163, 163) -moz-use-text-color; border-width: medium 1pt 1pt medium; padding: 5px;"&gt;&lt;p&gt;&lt;span style=";font-family:Verdana;font-size:85%;"  &gt;No&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="border-style: none solid solid; border-color: -moz-use-text-color rgb(163, 163, 163) rgb(163, 163, 163); border-width: medium 1pt 1pt; padding: 5px;"&gt;&lt;p&gt;&lt;span style=";font-family:Verdana;font-size:85%;color:black;"   &gt;User4&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style="border-style: none solid solid none; border-color: -moz-use-text-color rgb(163, 163, 163) rgb(163, 163, 163) -moz-use-text-color; border-width: medium 1pt 1pt medium; padding: 5px;"&gt;&lt;p&gt;&lt;span style=";font-family:Verdana;font-size:85%;color:black;"   &gt;Music&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style="border-style: none solid solid none; border-color: -moz-use-text-color rgb(163, 163, 163) rgb(163, 163, 163) -moz-use-text-color; border-width: medium 1pt 1pt medium; padding: 5px;"&gt;&lt;p&gt;&lt;span style=";font-family:Verdana;font-size:85%;"  &gt;No&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style="border-style: none solid solid none; border-color: -moz-use-text-color rgb(163, 163, 163) rgb(163, 163, 163) -moz-use-text-color; border-width: medium 1pt 1pt medium; padding: 5px;"&gt;&lt;p&gt;&lt;span style=";font-family:Verdana;font-size:85%;"  &gt;No&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style="border-style: none solid solid none; border-color: -moz-use-text-color rgb(163, 163, 163) rgb(163, 163, 163) -moz-use-text-color; border-width: medium 1pt 1pt medium; padding: 5px;"&gt;&lt;p&gt;&lt;span style=";font-family:Verdana;font-size:85%;"  &gt;Yes&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style="border-style: none solid solid none; border-color: -moz-use-text-color rgb(163, 163, 163) rgb(163, 163, 163) -moz-use-text-color; border-width: medium 1pt 1pt medium; padding: 5px;"&gt;&lt;p&gt;&lt;span style=";font-family:Verdana;font-size:85%;"  &gt;No&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;p style="margin-left: 5pt;"&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style="margin-left: 5pt;"&gt;&lt;span style=";font-family:Verdana;font-size:85%;"  &gt;&lt;strong&gt;=IF(ISERR(FIND(C$1,$B2)),"No","Yes")&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="margin-left: 5pt;"&gt;&lt;span style="font-family:Verdana;"&gt;&lt;strong&gt;&lt;br /&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7208889-1153789013290585856?l=jianwang.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jianwang.blogspot.com/feeds/1153789013290585856/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7208889&amp;postID=1153789013290585856' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7208889/posts/default/1153789013290585856'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7208889/posts/default/1153789013290585856'/><link rel='alternate' type='text/html' href='http://jianwang.blogspot.com/2007/04/excel-tips-1.html' title='EXCEL Tips 1'/><author><name>Jim Wang</name><uri>http://www.blogger.com/profile/15963866631960791206</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='29' src='http://4.bp.blogspot.com/_-lOIedxo3AA/SaQ-RpTrHZI/AAAAAAAAANI/pQoZ77uYOe0/S220/Jim%27.JPG'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7208889.post-1789838370291417865</id><published>2007-03-30T21:30:00.005+01:00</published><updated>2008-03-14T23:25:29.977Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='ASP.Net'/><title type='text'>IE7 Window Close Alert solution:</title><content type='html'>Solution 1: http://support.microsoft.com/kb/911328/&lt;br /&gt;Solution 2: edit default.aspx, modify:&lt;br /&gt;&lt;pre name="code" class="c#"&gt;&lt;br /&gt;if (window.name != "MSCRM_MAIN")&lt;br /&gt;{&lt;br /&gt;  //var oMe = window.self;&lt;br /&gt;  //oMe.opener = window.self;&lt;br /&gt;  //oMe.close();&lt;br /&gt;  window.open('','_parent','');&lt;br /&gt;  window.close();&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7208889-1789838370291417865?l=jianwang.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jianwang.blogspot.com/feeds/1789838370291417865/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7208889&amp;postID=1789838370291417865' title='7 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7208889/posts/default/1789838370291417865'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7208889/posts/default/1789838370291417865'/><link rel='alternate' type='text/html' href='http://jianwang.blogspot.com/2007/03/ie7-window-close-alert-solution.html' title='IE7 Window Close Alert solution:'/><author><name>Jim Wang</name><uri>http://www.blogger.com/profile/15963866631960791206</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='29' src='http://4.bp.blogspot.com/_-lOIedxo3AA/SaQ-RpTrHZI/AAAAAAAAANI/pQoZ77uYOe0/S220/Jim%27.JPG'/></author><thr:total>7</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7208889.post-113527805200219627</id><published>2005-12-22T18:25:00.000Z</published><updated>2008-01-12T10:54:29.117Z</updated><title type='text'>Funny: How about if I sent email to wrong person!</title><content type='html'>&lt;p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: 150%;"&gt;&lt;i&gt;&lt;span style="line-height: 150%;"&gt;One of my friends ask me: she sent an email to a wrong person 10 minutes ago, there were many secrets in this email, so she does't want that person see it!&lt;/span&gt;&lt;/i&gt;&lt;span style="line-height: 150%;"&gt;&lt;br /&gt;&lt;br /&gt;Unfortunatelly, there are no UN-DO function after you have sent this email. Of cause you may contact with his email account provider(such like &lt;a href="mailto:webmaster@yahoo.com"&gt;&lt;span style="color: blue;"&gt;webmaster@yahoo.com&lt;/span&gt;&lt;/a&gt;), and explain your situation, and then maybe they would remove it before that person saw it. Luck you!&lt;br /&gt;&lt;br /&gt;If you don't want to do that, there are another trick way: How about send him other 100 emails with same title of your first one, but the email body is different(Just say blesss him)? What he will do after open his inbox? --Saw the last email you sent to him and get your bless, and then delete other emails you sent to him(becasue it looks 'all same') .&lt;br /&gt;&lt;br /&gt;So, how you do this?&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;ol style="margin-top: 0cm;" start="1" type="1"&gt;&lt;li class="MsoNormal" style="margin-top: 5pt; margin-bottom: 5pt; line-height: 150%;"&gt;&lt;span style="line-height: 150%;"&gt;Manually send 100 emails?      NO!&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class="MsoNormal" style="margin-top: 5pt; margin-bottom: 5pt; line-height: 150%;"&gt;&lt;span style="line-height: 150%;"&gt;Buy software? NO!&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class="MsoNormal" style="margin-top: 5pt; margin-bottom: 5pt; line-height: 150%;"&gt;&lt;span style="line-height: 150%;"&gt;Ask your friend to help      you? NO!&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ol&gt;  &lt;p class="MsoNormal" style="margin: 5pt 0cm; line-height: 150%;"&gt;&lt;span style="line-height: 150%;"&gt;The simplest way is using a script, but you must make sure your computer which will run this script is already be SMTP supported. Open the Notepad, and copy the following codes to Notepad.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: 150%;"&gt;&lt;span style="line-height: 150%;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: 150%;"&gt;&lt;span style="line-height: 150%; color: blue;"&gt;set&lt;/span&gt;&lt;span style="line-height: 150%;"&gt; Msg = CreateObject(&lt;span style="color: rgb(163, 21, 21);"&gt;"CDO.Message"&lt;/span&gt;)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: 150%;"&gt;&lt;span style="line-height: 150%; color: blue;"&gt;with&lt;/span&gt;&lt;span style="line-height: 150%;"&gt; Msg&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: 150%;"&gt;&lt;span style="line-height: 150%;"&gt;.from = &lt;span style="color: rgb(163, 21, 21);"&gt;"His Name"&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: 150%;"&gt;&lt;span style="line-height: 150%;"&gt;.to = &lt;span style="color: rgb(163, 21, 21);"&gt;"Your Name"&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: 150%;"&gt;&lt;span style="line-height: 150%;"&gt;.subject = &lt;span style="color: rgb(163, 21, 21);"&gt;"My Secrets!"&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: 150%;"&gt;&lt;span style="line-height: 150%;"&gt;.textbody = &lt;span style="color: rgb(163, 21, 21);"&gt;"God Bless You!"&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: 150%;"&gt;&lt;span style=""&gt;end &lt;span style="color: blue;"&gt;with&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: 150%;"&gt;&lt;span style=""&gt;DIM i&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: 150%;"&gt;&lt;span style=""&gt;FOR i = 1 TO 100&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: 150%;"&gt;&lt;span style=""&gt;Msg.Send&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: 150%;"&gt;&lt;span style=""&gt;NEXT&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: 150%;"&gt;&lt;span style=""&gt;Msgbox &lt;span style="color: rgb(163, 21, 21);"&gt;"Email has been sent."&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin: 5pt 0cm; line-height: 150%;"&gt;&lt;span style="line-height: 150%;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin: 5pt 0cm; line-height: 150%;"&gt;&lt;span style="line-height: 150%;"&gt;Save the above codes as &lt;i&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;send.vbs&lt;/span&gt;&lt;/i&gt;, and run it on your server, then he will reveive your 100 copies of the same messages. Please make sure you are using the Same Name, the Same Email Address of Yours, and the Same Email Title.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin: 5pt 0cm; line-height: 150%;"&gt;&lt;b&gt;&lt;span style="line-height: 150%; color: red;"&gt;DO NOT USE IT AS SPAM!!!&lt;/span&gt;&lt;/b&gt;&lt;span style="line-height: 150%;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="line-height: 150%;"&gt;&lt;span style=""&gt;&lt;o:p&gt; &lt;/o:p&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/7208889-113527805200219627?l=jianwang.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jianwang.blogspot.com/feeds/113527805200219627/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7208889&amp;postID=113527805200219627' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7208889/posts/default/113527805200219627'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7208889/posts/default/113527805200219627'/><link rel='alternate' type='text/html' href='http://jianwang.blogspot.com/2005/12/funny-how-about-if-i-sent-email-to.html' title='Funny: How about if I sent email to wrong person!'/><author><name>Jim Wang</name><uri>http://www.blogger.com/profile/15963866631960791206</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='29' src='http://4.bp.blogspot.com/_-lOIedxo3AA/SaQ-RpTrHZI/AAAAAAAAANI/pQoZ77uYOe0/S220/Jim%27.JPG'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7208889.post-113448168041385293</id><published>2005-12-13T13:08:00.000Z</published><updated>2007-11-11T12:37:10.977Z</updated><title type='text'>Consulting: Microsoft CRM 3.0</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://photos1.blogger.com/blogger/5542/432/1600/minicamp_wizard_header.gif"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://photos1.blogger.com/blogger/5542/432/320/minicamp_wizard_header.gif" alt="" border="0" /&gt;&lt;/a&gt;At the begining of this month, I went to Bournemouth to do a consulting project for Microsoft CRM 3.0.&lt;br /&gt;&lt;br /&gt;That company has been installed CRM 1.2 on a Windows 2003 server which was a member of domain, now they want to re-deploy CRM 3.0 on the DC which is SBS 2003 and remove the Windows 2003 server from domain. Obviously, that wasn't a good idea. However, for the license and other issues, they want to install CRM 3.0 on the SBS 2003 DC.&lt;br /&gt;&lt;br /&gt;The whole process includes: system backup, data export from CRM 1.2, uninstall CRM 1.2 for both server and clients, upgrade SBS 2003 DC, troubleshooting for DC, DHCP, DNS, SQL Server and System Events. I have to deal with the third party's drivers problem after complete the system upgrade. And also, install CRM 3.0 SBS version on the DC and migrate all the data to CRM 3.0 database. Finally, deploy CRM 3.0 for outlook clients.&lt;br /&gt;&lt;br /&gt;From this project, I can see that Microsoft CRM 3.0, externally looks good, but internally, there are many places need to be improved. On the other side, maybe that's a good news for CRM ISVs. ;-)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://crm30.com/"&gt;CRM30 Consulting Services Homepage (United Kindom)&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7208889-113448168041385293?l=jianwang.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://crm30.com' title='Consulting: Microsoft CRM 3.0'/><link rel='replies' type='application/atom+xml' href='http://jianwang.blogspot.com/feeds/113448168041385293/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7208889&amp;postID=113448168041385293' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7208889/posts/default/113448168041385293'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7208889/posts/default/113448168041385293'/><link rel='alternate' type='text/html' href='http://jianwang.blogspot.com/2005/12/consulting-microsoft-crm-30.html' title='Consulting: Microsoft CRM 3.0'/><author><name>Jim Wang</name><uri>http://www.blogger.com/profile/15963866631960791206</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='29' src='http://4.bp.blogspot.com/_-lOIedxo3AA/SaQ-RpTrHZI/AAAAAAAAANI/pQoZ77uYOe0/S220/Jim%27.JPG'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7208889.post-113319034566572501</id><published>2005-11-28T15:05:00.000Z</published><updated>2007-11-11T12:37:10.977Z</updated><title type='text'>BroadTooth - the Bluetooth broadcasting system!</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://photos1.blogger.com/blogger/5542/432/1600/broadtooth.0.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://photos1.blogger.com/blogger/5542/432/320/broadtooth.0.jpg" alt="" border="0" /&gt;&lt;/a&gt;      &lt;p style="line-height: 150%;"&gt;       &lt;/p&gt; &lt;p style="margin-top: 0pt; margin-bottom: 0pt;" align="justify"&gt; &lt;/p&gt;                             &lt;input name="encrypted0" value="-----BEGIN PKCS7-----MIIHJwYJKoZIhvcNAQcEoIIHGDCCBxQCAQExggEwMIIBLAIBADCBlDCBjjELMAkGA1UEBhMCVVMxCzAJBgNVBAgTAkNBMRYwFAYDVQQHEw1Nb3VudGFpbiBWaWV3MRQwEgYDVQQKEwtQYXlQYWwgSW5jLjETMBEGA1UECxQKbGl2ZV9jZXJ0czERMA8GA1UEAxQIbGl2ZV9hcGkxHDAaBgkqhkiG9w0BCQEWDXJlQHBheXBhbC5jb20CAQAwDQYJKoZIhvcNAQEBBQAEgYCadxn4VRfzXgOR47TWe9IsFKjvmM/H+LyCyvG+EgqqdWSAPTlt5BLlEKmVqYDN8z0H0t1+nzEVizZtwh0YCbkimqj1W86kjx9/SanTJvoRKlDDufka5Zu1uQxIrMgHb91A4tWUY7YZL9mOLWRyooafz+btVW5M8Ho/C6z4wHwylTELMAkGBSsOAwIaBQAwgaQGCSqGSIb3DQEHATAUBggqhkiG9w0DBwQIV3UcwYRx92CAgYCgGS6apEeXwVgRPNoU2yffbdVV963odqShSzfLRMuH9D2RwxXgM3wjnQl8eIyK8vS4mIbXVHAdcjWuzZA+uwMTSa2Y4HzIj5AYmRlK9RtzsJEeEKgtRwItGCOGdK7Y6W5esKwMdyh9vdplE77zJbdjRbKkXfenaVPivEFhZzP+yqCCA4cwggODMIIC7KADAgECAgEAMA0GCSqGSIb3DQEBBQUAMIGOMQswCQYDVQQGEwJVUzELMAkGA1UECBMCQ0ExFjAUBgNVBAcTDU1vdW50YWluIFZpZXcxFDASBgNVBAoTC1BheVBhbCBJbmMuMRMwEQYDVQQLFApsaXZlX2NlcnRzMREwDwYDVQQDFAhsaXZlX2FwaTEcMBoGCSqGSIb3DQEJARYNcmVAcGF5cGFsLmNvbTAeFw0wNDAyMTMxMDEzMTVaFw0zNTAyMTMxMDEzMTVaMIGOMQswCQYDVQQGEwJVUzELMAkGA1UECBMCQ0ExFjAUBgNVBAcTDU1vdW50YWluIFZpZXcxFDASBgNVBAoTC1BheVBhbCBJbmMuMRMwEQYDVQQLFApsaXZlX2NlcnRzMREwDwYDVQQDFAhsaXZlX2FwaTEcMBoGCSqGSIb3DQEJARYNcmVAcGF5cGFsLmNvbTCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAwUdO3fxEzEtcnI7ZKZL412XvZPugoni7i7D7prCe0AtaHTc97CYgm7NsAtJyxNLixmhLV8pyIEaiHXWAh8fPKW+R017+EmXrr9EaquPmsVvTywAAE1PMNOKqo2kl4Gxiz9zZqIajOm1fZGWcGS0f5JQ2kBqNbvbg2/Za+GJ/qwUCAwEAAaOB7jCB6zAdBgNVHQ4EFgQUlp98u8ZvF71ZP1LXChvsENZklGswgbsGA1UdIwSBszCBsIAUlp98u8ZvF71ZP1LXChvsENZklGuhgZSkgZEwgY4xCzAJBgNVBAYTAlVTMQswCQYDVQQIEwJDQTEWMBQGA1UEBxMNTW91bnRhaW4gVmlldzEUMBIGA1UEChMLUGF5UGFsIEluYy4xEzARBgNVBAsUCmxpdmVfY2VydHMxETAPBgNVBAMUCGxpdmVfYXBpMRwwGgYJKoZIhvcNAQkBFg1yZUBwYXlwYWwuY29tggEAMAwGA1UdEwQFMAMBAf8wDQYJKoZIhvcNAQEFBQADgYEAgV86VpqAWuXvX6Oro4qJ1tYVIT5DgWpE692Ag422H7yRIr/9j/iKG4Thia/Oflx4TdL+IFJBAyPK9v6zZNZtBgPBynXb048hsP16l2vi0k5Q2JKiPDsEfBhGI+HnxLXEaUWAcVfCsQFvd2A1sxRr67ip5y2wwBelUecP3AjJ+YcxggGaMIIBlgIBATCBlDCBjjELMAkGA1UEBhMCVVMxCzAJBgNVBAgTAkNBMRYwFAYDVQQHEw1Nb3VudGFpbiBWaWV3MRQwEgYDVQQKEwtQYXlQYWwgSW5jLjETMBEGA1UECxQKbGl2ZV9jZXJ0czERMA8GA1UEAxQIbGl2ZV9hcGkxHDAaBgkqhkiG9w0BCQEWDXJlQHBheXBhbC5jb20CAQAwCQYFKw4DAhoFAKBdMBgGCSqGSIb3DQEJAzELBgkqhkiG9w0BBwEwHAYJKoZIhvcNAQkFMQ8XDTA1MDQxNzEzMDEwM1owIwYJKoZIhvcNAQkEMRYEFH8CP2Sl+hs2MH9AxAItsFOia9Q9MA0GCSqGSIb3DQEBAQUABIGAsGUoVUqz5IpmKu6dpEGK+QLYwdPOV33LeGONBq9DNBmrKZrfnL3HKmMbanQqgIU24nP4ZFVmEKKvocAEwJ0mtKCh9+uEmfYGL0l2vFKy/RviOm8QXSguyY4kPRkShKe6Qe0Rn6TsWaBFLowoYYRil8/mIkWSfFsgsklIWE3GvRU=-----END PKCS7-----" type="hidden"&gt; &lt;input name="cmd0" value="_s-xclick" type="hidden"&gt; &lt;p style="margin-top: 0pt; margin-bottom: 0pt;" align="justify"&gt;  &lt;/p&gt;  &lt;p style="margin-top: 0pt; margin-bottom: 0pt; text-align: left;"&gt;&lt;span style="font-family:Tahoma;"&gt;&lt;b&gt;What is &lt;span style="color: rgb(0, 51, 153);"&gt;BroadTooth&lt;/span&gt;?&lt;/b&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 51, 153);"&gt;BroadTooth&lt;/span&gt; is the Bluetooth     broadcasting system provided by     &lt;a target="_blank" href="http://www.londondev.com/"&gt;LondonDev Limited&lt;/a&gt;.&lt;/span&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style="line-height: 150%;"&gt;&lt;span style="font-family:Tahoma;"&gt;&lt;b&gt;&lt;br /&gt;What is    &lt;span style="color: rgb(0, 51, 153);"&gt;BroadTooth&lt;/span&gt; marketing solution?&lt;/b&gt;&lt;br /&gt;This innovative &lt;span style="color: rgb(0, 51, 153);"&gt;BroadTooth&lt;/span&gt; marketing solution uses standard Bluetooth technology with our own message management software. This enables you to send multiple advertisements and messages to passing phones and review the success of the broadcast in real time.&lt;/span&gt;&lt;/p&gt;      &lt;ul&gt; &lt;li&gt;     &lt;p style="line-height: 150%;"&gt;&lt;span style="font-family:Tahoma;"&gt;     &lt;span style="color: rgb(0, 51, 153);"&gt;BroadTooth&lt;/span&gt; technology simply delivers your sales message into the hand of potential customers. Imagine the potential of your sales messages appearing on the phones &amp; PDA's of passers-by who permit transmission by pressing the 'receive' button. &lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;li&gt;     &lt;p style="line-height: 150%;"&gt;&lt;span style="font-family:Tahoma;"&gt;     &lt;span style="color: rgb(0, 51, 153);"&gt;BroadTooth&lt;/span&gt; is the process of      sending information with Bluetooth technology. The     &lt;span style="color: rgb(0, 51, 153);"&gt;BroadTooth&lt;/span&gt; Software can send multimedia files, graphic advertisements and animated GIF Files to Bluetooth-enabled mobile Phones and PDA's to anyone up to 30 metres way.&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;li&gt;     &lt;p style="line-height: 150%;"&gt;&lt;span style="font-family:Tahoma;"&gt;     &lt;span style="color: rgb(0, 51, 153);"&gt;BroadTooth&lt;/span&gt; offers mobile and fixed location use. This flexibility is most useful in high density audience situations. The software can be installed and run from a lap top computer with a Bluetooth dongle.&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;li&gt;     &lt;p style="line-height: 150%;"&gt;&lt;span style="font-family:Tahoma;"&gt;     &lt;span style="color: rgb(0, 51, 153);"&gt;BroadTooth&lt;/span&gt; in high density audiences (e.g. sports and music events or mainline rail terminals) offers the ideal opportunity to send over 1000 messages an hour directly. To improve results further, circulating through the crowd provides an even wider audience for your advertisement to be received.&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;li&gt;     &lt;p style="line-height: 150%;"&gt;&lt;span style="font-family:Tahoma;"&gt;     &lt;span style="color: rgb(0, 51, 153);"&gt;BroadTooth&lt;/span&gt; can transmit from any location near a source of potential customers. Retail opportunities for this form of 'proximity marketing' are almost limitless, including sales messages for in store offers, messaging to passing pedestrians and drivers of the 'offer of the day' or the teaser-ad approach to brand building. Other possibilities include catering, offices, transport, public information and all forms of sports &amp; leisure events, concerts, public and trade exhibitions, and strategic corporate and shopping centre applications.&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;li&gt;     &lt;p style="line-height: 150%;"&gt;&lt;span style="font-family:Tahoma;"&gt;     &lt;span style="color: rgb(0, 51, 153);"&gt;BroadTooth&lt;/span&gt; from multiple locations can be managed from a single location via a LAN, using different messages and campaign formats and timings, facilitating continuous test-marketing and immediate response to local market factors.&lt;/span&gt;&lt;/p&gt;&lt;/li&gt; &lt;/ul&gt;      &lt;p style="line-height: 150%;"&gt;&lt;span style="font-family:Tahoma;"&gt;&lt;b&gt;What is    &lt;span style="color: rgb(0, 51, 153);"&gt;BroadTooth&lt;/span&gt; supported device?&lt;/b&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 51, 153);"&gt;BroadTooth&lt;/span&gt; software can send your customised message to all the Bluetooth-enabled mobile Phones and PDAs. The object system could be all the major mobile systems in the market: &lt;a target="_blank" href="http://www.symbian.com/"&gt;Symbian&lt;/a&gt;,    &lt;a target="_blank" href="http://www.microsoft.com/windowsmobile/"&gt;Microsoft Windows     Mobile&lt;/a&gt;,     &lt;a target="_blank" href="http://www.palm.com/us/products/"&gt;Palm&lt;/a&gt;,    &lt;a target="_blank" href="http://www.linux.com/"&gt;Linux&lt;/a&gt; etc. These almost include     95% mobile systems in the market.&lt;/span&gt;&lt;/p&gt;      &lt;p style="line-height: 150%;"&gt;&lt;span style="font-family:Tahoma;"&gt;&lt;b&gt;What can I do     next?&lt;/b&gt;&lt;br /&gt;Please &lt;a href="mailto:broadtooth@londondev.com"&gt;contact us&lt;/a&gt; for     more information.&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/7208889-113319034566572501?l=jianwang.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://www.londondev.com/broadtooth/' title='BroadTooth - the Bluetooth broadcasting system!'/><link rel='replies' type='application/atom+xml' href='http://jianwang.blogspot.com/feeds/113319034566572501/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7208889&amp;postID=113319034566572501' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7208889/posts/default/113319034566572501'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7208889/posts/default/113319034566572501'/><link rel='alternate' type='text/html' href='http://jianwang.blogspot.com/2005/11/broadtooth-bluetooth-broadcasting_28.html' title='BroadTooth - the Bluetooth broadcasting system!'/><author><name>Jim Wang</name><uri>http://www.blogger.com/profile/15963866631960791206</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='29' src='http://4.bp.blogspot.com/_-lOIedxo3AA/SaQ-RpTrHZI/AAAAAAAAANI/pQoZ77uYOe0/S220/Jim%27.JPG'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7208889.post-113231611242771370</id><published>2005-11-18T11:42:00.000Z</published><updated>2007-11-11T12:37:10.977Z</updated><title type='text'>A easy way to share files between HOST and VM in Microsoft Virtual Server 2005.</title><content type='html'>Microsoft Virtual Server 2005 provides the improved performance and functions than Virtual PC. However, for some reasons, it is not easy to share files between HOST and VM in Virtual Server. Generally, we have to setup a VPN access between HOST and VM, but sometimes it's not the best solution.&lt;br /&gt;&lt;br /&gt;After some research, I found a easy to share files:&lt;br /&gt;On your HOST, go to "run" "cmd", and type:&lt;br /&gt;"&lt;span style="color: rgb(51, 0, 153);"&gt;net use X: \\192.168.1.11\C$&lt;/span&gt;"&lt;br /&gt;And then login as administrator of VM.&lt;br /&gt;&lt;br /&gt;In this case, my HOST IP address is: 192.168.1.2, the VM IP address is: 192.168.1.11, both of them share the same network adaptor and in the same LAN.&lt;br /&gt;&lt;br /&gt;After the command, you will found a new "&lt;span style="font-style: italic; color: rgb(204, 0, 0);"&gt;drive X&lt;/span&gt;" in your HOST computer.&lt;br /&gt;The &lt;span style="color: rgb(204, 0, 0);"&gt;drive X&lt;/span&gt; is the mapping of the &lt;span style="color: rgb(51, 204, 0);"&gt;drive C&lt;/span&gt; of the VM . Now you may fully control the VM, and share files with it.&lt;br /&gt;&lt;br /&gt;Enjoy! ;-)&lt;br /&gt;&lt;br /&gt;for more information about Microsoft Virtual Server, please visit: &lt;a href="http://www.microsoft.com/windowsserversystem/virtualserver/default.mspx"&gt;http://www.microsoft.com/windowsserversystem/virtualserver/default.mspx&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7208889-113231611242771370?l=jianwang.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jianwang.blogspot.com/feeds/113231611242771370/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7208889&amp;postID=113231611242771370' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7208889/posts/default/113231611242771370'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7208889/posts/default/113231611242771370'/><link rel='alternate' type='text/html' href='http://jianwang.blogspot.com/2005/11/easy-way-to-share-files-between-host.html' title='A easy way to share files between HOST and VM in Microsoft Virtual Server 2005.'/><author><name>Jim Wang</name><uri>http://www.blogger.com/profile/15963866631960791206</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='29' src='http://4.bp.blogspot.com/_-lOIedxo3AA/SaQ-RpTrHZI/AAAAAAAAANI/pQoZ77uYOe0/S220/Jim%27.JPG'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7208889.post-112843476093062673</id><published>2005-10-04T14:37:00.000+01:00</published><updated>2007-11-11T12:37:10.977Z</updated><title type='text'>The choice of long distance Bluetooth Pocket PC.</title><content type='html'>Building a system which can communicate between Bluetooth enabled PPC and a Bluetooth enabled Server. The system requires a long communicate distance, but can't use WIFI. The server is 100 meters Bluetooth dongle which is long enough. However I haven't see any Pocket PC with 100 meters Bluetooth distance! After research, I found there are two choices to get this aim.&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;The first, setup a Bluetooth Access Point to extend the PPC's Bluetooth distance. &lt;/span&gt;By this way, the PPC and BAP connect via Bluetooth, all the information between PPC and Server will be routered by the BAP. The benefit of this structure is lower cost -Becasue the application will be done by WEB interface. The disadvantage is more response time.&lt;br /&gt;&lt;br /&gt;The link here:&lt;br /&gt;&lt;a href="http://msmobiles.com/catalog/i.php/563.html"&gt;http://msmobiles.com/catalog/i.php/563.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Or&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;The second, if the PPC supports USB-HOST, then that's a good idea.&lt;/span&gt; Many PPC from Toshiba supports USB-HOST, so it may connect a USB cable + 100 meters Bluetooth dongle, that's really cool. Microsoft Mobile 5 can support this USB-HOST as the MS native Bluetooth stack. So it costs more money to buy a latest device with WM5, alternatively upgrade the ROM for HTC Himalaya device is also considerable(&lt;a href="http://www.clintonfitch.com/wm5/default.asp"&gt;http://www.clintonfitch.com/wm5/default.asp&lt;/a&gt;). However, the system can be build by WINDOWS interface and faster than the web access.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://photos1.blogger.com/blogger/5542/432/1600/wey-20051004-N500BT1.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://photos1.blogger.com/blogger/5542/432/320/wey-20051004-N500BT1.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;These links here:&lt;br /&gt;&lt;a href="http://www.pocketpcthoughts.com/forums/viewtopic.php?p=367986&amp;sid=d29669233fa83304bf99e115c42e588b"&gt;http://www.pocketpcthoughts.com/forums/viewtopic.php?p=367986&amp;amp;sid=d29669233fa83304bf99e115c42e588b&lt;/a&gt;&lt;br /&gt;&lt;a href="http://discussion.brighthand.com/showthread.php?s=&amp;threadid=104328"&gt;http://discussion.brighthand.com/showthread.php?s=&amp;amp;threadid=104328&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.johncruise.com/pocketpc/howto-usb-bt.php"&gt;http://www.johncruise.com/pocketpc/howto-usb-bt.php&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7208889-112843476093062673?l=jianwang.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jianwang.blogspot.com/feeds/112843476093062673/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7208889&amp;postID=112843476093062673' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7208889/posts/default/112843476093062673'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7208889/posts/default/112843476093062673'/><link rel='alternate' type='text/html' href='http://jianwang.blogspot.com/2005/10/choice-of-long-distance-bluetooth.html' title='The choice of long distance Bluetooth Pocket PC.'/><author><name>Jim Wang</name><uri>http://www.blogger.com/profile/15963866631960791206</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='29' src='http://4.bp.blogspot.com/_-lOIedxo3AA/SaQ-RpTrHZI/AAAAAAAAANI/pQoZ77uYOe0/S220/Jim%27.JPG'/></author><thr:total>2</thr:total></entry></feed>
