<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/atom10full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><feed xmlns="http://www.w3.org/2005/Atom" xmlns:openSearch="http://a9.com/-/spec/opensearch/1.1/" xmlns:georss="http://www.georss.org/georss" xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr="http://purl.org/syndication/thread/1.0" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" gd:etag="W/&quot;A0cEQ3k8fSp7ImA9WhVbFEw.&quot;"><id>tag:blogger.com,1999:blog-7656888</id><updated>2012-05-30T17:03:22.775-06:00</updated><category term="GIS" /><category term="Funnies" /><category term="Visual Studio" /><category term="SQL" /><category term="Recycled" /><category term="Prism" /><category term="Hyundai Santa Fe" /><category term="web" /><category term="books" /><category term="Visual Learning Systems" /><category term="Mio" /><category term="BizTalk" /><category term="VS 2010" /><category term="Misc" /><category term="Windows" /><category term="algorithms" /><category term="Beer" /><category term="MSI" /><category term="Words" /><category term="VC++" /><category term="Embedded" /><category term="Note To Self" /><category term="dell" /><category term="JQuery" /><category term="Stocks 50/200" /><category term="Games" /><category term="Baby" /><category term="Graphics" /><category term="ad music" /><category term="AI" /><category term="Halo 3" /><category term="VS 2011" /><category term="software engineering" /><category term="Mac" /><category term="Denver" /><category term="work" /><category term="Workflow Foundation" /><category term="facebook" /><category term="VS 2008" /><category term="linq" /><category term="Vote" /><category term="business" /><category term="Tools and Utilities" /><category term="start up" /><category term="iis" /><category term="DPM" /><category term="iPhone - Tips n Tricks" /><category term="Tips N Tricks" /><category term="Entrepreneur" /><category term="LIDAR Analyst" /><category term="security" /><category term="customer service" /><category term="Yahoo Maps" /><category term="holiday" /><category term="Wii" /><category term="improvement" /><category term="Developer" /><category term="TOAD" /><category term="ideas" /><category term="LASIK" /><category term="OpenID" /><category term="Regex" /><category term="Maps" /><category term="iPhone" /><category term="Agile" /><category term="DotNetNuke" /><category term="Scrum" /><category term="Auto" /><category term="GPS" /><category term="design" /><category term="Hp Touchpad" /><category term="ASP.Net" /><category term="JavaScript" /><category term="software architect" /><category term="PhotoSynth" /><category term="LIDAR" /><category term="XBOX" /><category term="Entity Framework" /><category term=".NET" /><category term="screencast" /><category term="Mocks" /><category term="Windows Mobile" /><category term="Vista" /><category term="Interstate Road Conditions" /><category term="Microsoft" /><category term="MVC" /><category term="WIF" /><category term="Personal Development" /><category term="Technology" /><category term="SQL Server" /><category term="Virtual Earth" /><category term="AJAX" /><category term="GDAL" /><category term="iPhone Apps" /><category term="Oracle" /><category term="Ads" /><category term="Politics" /><category term="Windows Phone" /><category term="PowerShell" /><category term="Google Earth" /><category term="Chrome" /><category term="biology" /><category term="Links" /><category term="internet" /><category term="Software" /><category term="VSTS DB" /><category term="Money" /><category term="EntLib" /><category term="Dynamics CRM" /><category term="database" /><category term="science" /><category term="presentations" /><category term="car" /><category term="Windows 7" /><category term="linux" /><category term="debug" /><category term="Feature Analyst" /><category term="Licensing" /><category term="software management" /><category term="PCI" /><category term="Cloud Computing" /><category term="photography" /><category term="TFS" /><category term="ASP.Net Databases" /><category term="Imaging" /><category term="ArcGIS" /><category term="Gadgets" /><category term="WP7" /><category term="music" /><category term="Phone" /><category term="Google" /><category term="Open Source" /><category term="C#" /><category term="Bing" /><category term="OptiRoute" /><category term="WCF" /><category term="how-tos" /><category term="quotes" /><category term="IE" /><category term="Code Sample" /><category term="machine learning" /><category term="Govt" /><category term="WPF" /><category term="TED" /><category term="Silverlight" /><title>Aggregated Intelligence</title><subtitle type="html">AI - Aggregation of ideas</subtitle><link rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml" href="http://blog.aggregatedintelligence.com/feeds/posts/default" /><link rel="alternate" type="text/html" href="http://blog.aggregatedintelligence.com/" /><link rel="next" type="application/atom+xml" href="http://www.blogger.com/feeds/7656888/posts/default?start-index=26&amp;max-results=25&amp;redirect=false&amp;v=2" /><author><name>Raj Rao</name><uri>https://profiles.google.com/105969740227516948072</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh5.googleusercontent.com/-tDfz18sw7k8/AAAAAAAAAAI/AAAAAAAAAAA/lfehvy89gFY/s512-c/photo.jpg" /></author><generator version="7.00" uri="http://www.blogger.com">Blogger</generator><openSearch:totalResults>1662</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/atom+xml" href="http://feeds.feedburner.com/aggregatedIntelligence" /><feedburner:info xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" uri="aggregatedintelligence" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><geo:lat>39.731286</geo:lat><geo:long>-104.98306</geo:long><entry gd:etag="W/&quot;A0cEQn46fyp7ImA9WhVbFEw.&quot;"><id>tag:blogger.com,1999:blog-7656888.post-4667196522303040023</id><published>2012-05-30T17:03:00.001-06:00</published><updated>2012-05-30T17:03:23.017-06:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-05-30T17:03:23.017-06:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="iis" /><title>IIS–migrating site settings from one server to another</title><content type="html">&lt;p&gt;Here is a simple way to migrate your sites and app-pools from one server to another (I was setting up a new dev machine for myself)&lt;/p&gt; &lt;p&gt;Export app-pools and sites from source machine:&lt;/p&gt; &lt;blockquote&gt; &lt;p&gt;&lt;em&gt;%windir%\system32\inetsrv\appcmd list apppool /config /xml &amp;gt; c:\apppools.xml&lt;/em&gt;&lt;/p&gt; &lt;p&gt;&lt;em&gt;%windir%\system32\inetsrv\appcmd list site /config /xml &amp;gt; c:\sites.xml&lt;/em&gt;&lt;/p&gt;&lt;/blockquote&gt; &lt;p&gt;Import app-pools and sites onto destination machine:&lt;/p&gt; &lt;blockquote&gt; &lt;p&gt;&lt;em&gt;%windir%\system32\inetsrv\appcmd add apppool /in &amp;lt; c:\apppools.xml&lt;/em&gt;&lt;/p&gt; &lt;p&gt;&lt;em&gt;%windir%\system32\inetsrv\appcmd add site /in &amp;lt; c:\sites.xml&lt;/em&gt;&lt;/p&gt;&lt;/blockquote&gt; &lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;When you import the app-pool, you will need to edit the apppools.xml file to remove all those app-pools that have already been defined on your destination computer (eg: DefaultAppPool)&lt;/p&gt; &lt;p&gt;When you import the sites, you may get errors, just delete the sites that cause the errors and reimport the sites.xml file.&lt;/p&gt; &lt;p&gt;&lt;strong&gt;Note 2:&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;If you need to export only a single site use the following command:&lt;/p&gt; &lt;blockquote&gt; &lt;p&gt;&lt;em&gt;appcmd list SITE /site.name:SITENAME /config /xml &amp;gt; c:\SITENAME.xml&lt;/em&gt;&lt;/p&gt;&lt;/blockquote&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7656888-4667196522303040023?l=blog.aggregatedintelligence.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/RjIPrhNR1XgxR0yPYKI1pYx4D3k/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/RjIPrhNR1XgxR0yPYKI1pYx4D3k/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/RjIPrhNR1XgxR0yPYKI1pYx4D3k/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/RjIPrhNR1XgxR0yPYKI1pYx4D3k/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.aggregatedintelligence.com/feeds/4667196522303040023/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=7656888&amp;postID=4667196522303040023&amp;isPopup=true" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7656888/posts/default/4667196522303040023?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7656888/posts/default/4667196522303040023?v=2" /><link rel="alternate" type="text/html" href="http://blog.aggregatedintelligence.com/2012/05/iismigrating-site-settings-from-one.html" title="IIS–migrating site settings from one server to another" /><author><name>Raj Rao</name><uri>https://profiles.google.com/105969740227516948072</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh5.googleusercontent.com/-tDfz18sw7k8/AAAAAAAAAAI/AAAAAAAAAAA/lfehvy89gFY/s512-c/photo.jpg" /></author><thr:total>0</thr:total></entry><entry gd:etag="W/&quot;DEQGQn09eCp7ImA9WhVUEk8.&quot;"><id>tag:blogger.com,1999:blog-7656888.post-3794456534053209616</id><published>2012-05-16T21:45:00.001-06:00</published><updated>2012-05-16T21:45:23.360-06:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-05-16T21:45:23.360-06:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="BizTalk" /><title>Biztalk–pipeline.exe error: System cannot find the file specified</title><content type="html">&lt;p&gt;If the error is being thrown from mscorlib, then check the path to the pipeline (btp) file. Also check the path to the input file. (I normally provide the full path to the files).&lt;/p&gt; &lt;p&gt;If the error is being thrown from your custom dll, then make sure that any libraries that you are referencing are installed in the GAC.&lt;/p&gt; &lt;p&gt;&lt;strong&gt;Error message:&lt;/strong&gt;&lt;/p&gt; &lt;blockquote&gt; &lt;p&gt;Message:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; The system cannot find the file specified.&lt;br&gt;HRESULT:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 80070002&lt;/p&gt;&lt;/blockquote&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7656888-3794456534053209616?l=blog.aggregatedintelligence.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/PZ8utOvYc2jmlyniD94K8Jy88rU/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/PZ8utOvYc2jmlyniD94K8Jy88rU/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/PZ8utOvYc2jmlyniD94K8Jy88rU/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/PZ8utOvYc2jmlyniD94K8Jy88rU/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.aggregatedintelligence.com/feeds/3794456534053209616/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=7656888&amp;postID=3794456534053209616&amp;isPopup=true" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7656888/posts/default/3794456534053209616?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7656888/posts/default/3794456534053209616?v=2" /><link rel="alternate" type="text/html" href="http://blog.aggregatedintelligence.com/2012/05/biztalkpipelineexe-error-system-cannot.html" title="Biztalk–pipeline.exe error: System cannot find the file specified" /><author><name>Raj Rao</name><uri>https://profiles.google.com/105969740227516948072</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh5.googleusercontent.com/-tDfz18sw7k8/AAAAAAAAAAI/AAAAAAAAAAA/lfehvy89gFY/s512-c/photo.jpg" /></author><thr:total>0</thr:total></entry><entry gd:etag="W/&quot;D0YAQnw_cCp7ImA9WhVVFE4.&quot;"><id>tag:blogger.com,1999:blog-7656888.post-5216377219502970605</id><published>2012-05-07T17:48:00.001-06:00</published><updated>2012-05-07T17:59:03.248-06:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-05-07T17:59:03.248-06:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="BizTalk" /><title>BTSScnSSOApplicationConfig–Storing application configuration in BizTalk SSO</title><content type="html">&lt;p&gt;There are 2 tools that you use to manage your application data: SsoManage.exe and BTSScnSSOApplicationConfig.exe.&lt;/p&gt; &lt;p&gt;SsoManage.exe can be found at “C:\Program Files\Common Files\Enterprise Single Sign-On”&lt;/p&gt; &lt;p&gt;But for &lt;strong&gt;testProperty&lt;/strong&gt;, you need to actually build it. Do this by browsing to “BT Server\MSI\Program Files\SDK\Scenarios\Common\SSOApplicationConfig\bin” folder (the folder is extracted when you unzip the Developer edition of BizTalk).&lt;/p&gt; &lt;p&gt;Once in the SSOApplicationConfig folder, run “Setup.Bat”, which will build “BTSScnSSOApplicationConfig.exe” for you.&lt;/p&gt; &lt;p&gt;&lt;strong&gt;Commands&lt;/strong&gt;:&lt;/p&gt; &lt;p&gt;&lt;strong&gt;SsoManage&lt;/strong&gt;:&lt;/p&gt; &lt;blockquote&gt; &lt;p&gt;SsoManage uses an xml file to define an application and a list of config properties. Here is an example:&lt;/p&gt; &lt;p&gt;&amp;lt;?xml version="1.0" encoding="utf-8"?&amp;gt;&lt;br&gt;&amp;lt;sso&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;application name="&lt;strong&gt;MyTestApp&lt;/strong&gt;"&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;description&amp;gt;My first app&amp;lt;/description&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;appUserAccount&amp;gt;BizTalk Application Users&amp;lt;/appUserAccount&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;appAdminAccount&amp;gt;BizTalk Server Administrators&amp;lt;/appAdminAccount&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;field ordinal="0" label="dummyDoNotUseOrDelete" masked="no" /&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;field ordinal="1" label="&lt;strong&gt;testProperty&lt;/strong&gt;" masked="no" /&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;flags configStoreApp="yes" allowLocalAccounts="yes" enableApp="yes" /&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/application&amp;gt;&lt;br&gt;&amp;lt;/sso&amp;gt;&lt;/p&gt;&lt;/blockquote&gt; &lt;p&gt;You import the XML using the SsoManage –CreateApp “xmlfile” command.&lt;/p&gt; &lt;p&gt;&lt;strong&gt;BTSScnSSOApplicationConfig:&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;And you &lt;strong&gt;set&lt;/strong&gt; property values using: &lt;/p&gt; &lt;p&gt;btsscnssoapplicationconfig -set &lt;strong&gt;MyTestApp&lt;/strong&gt; "ConfigProperties" "&lt;strong&gt;testProperty&lt;/strong&gt;" "&lt;strong&gt;testConnectionString&lt;/strong&gt;"&lt;/p&gt; &lt;p&gt;And you &lt;strong&gt;get&lt;/strong&gt; property values using:&lt;/p&gt; &lt;p&gt;btsscnssoapplicationconfig -get &lt;strong&gt;MyTestApp&lt;/strong&gt; "ConfigProperties" "&lt;strong&gt;testProperty&lt;/strong&gt;"&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7656888-5216377219502970605?l=blog.aggregatedintelligence.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/AzUYIRJhvZhIcOVdAdMh9l0-zAU/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/AzUYIRJhvZhIcOVdAdMh9l0-zAU/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/AzUYIRJhvZhIcOVdAdMh9l0-zAU/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/AzUYIRJhvZhIcOVdAdMh9l0-zAU/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.aggregatedintelligence.com/feeds/5216377219502970605/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=7656888&amp;postID=5216377219502970605&amp;isPopup=true" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7656888/posts/default/5216377219502970605?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7656888/posts/default/5216377219502970605?v=2" /><link rel="alternate" type="text/html" href="http://blog.aggregatedintelligence.com/2012/05/btsscnssoapplicationconfigstoring.html" title="BTSScnSSOApplicationConfig–Storing application configuration in BizTalk SSO" /><author><name>Raj Rao</name><uri>https://profiles.google.com/105969740227516948072</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh5.googleusercontent.com/-tDfz18sw7k8/AAAAAAAAAAI/AAAAAAAAAAA/lfehvy89gFY/s512-c/photo.jpg" /></author><thr:total>0</thr:total></entry><entry gd:etag="W/&quot;CE8MQX48cSp7ImA9WhVVFE8.&quot;"><id>tag:blogger.com,1999:blog-7656888.post-3603649209035707475</id><published>2012-05-07T14:34:00.001-06:00</published><updated>2012-05-07T14:34:40.079-06:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-05-07T14:34:40.079-06:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="BizTalk" /><title>Using DebugView with BizTalk for debugging</title><content type="html">&lt;p&gt;DebugView is used to view trace messages output by an application on Windows. (get it from:&lt;a href="http://technet.microsoft.com/en-us/sysinternals/bb896647"&gt;http://technet.microsoft.com/en-us/sysinternals/bb896647&lt;/a&gt;).&lt;/p&gt; &lt;p&gt;Once you have downloaded and have DebugView running, you need to instrument your BizTalk process to perform tracing. The easiest way to do this, is to insert an Expression shape onto your orchestration and add the following code into the expression:&lt;/p&gt; &lt;blockquote&gt; &lt;p&gt;System.Diagnostics.Trace.WriteLine("Hello World");&lt;/p&gt;&lt;/blockquote&gt; &lt;p&gt;In DebugView, make sure that you have capturing enabled for Global Win32 (“Capture” ==&amp;gt; “Capture Global Win32”). When you start the capture, you should see trace information.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7656888-3603649209035707475?l=blog.aggregatedintelligence.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/KLyrFlBpkA-Oyk7cGoZfIe4TwCs/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/KLyrFlBpkA-Oyk7cGoZfIe4TwCs/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/KLyrFlBpkA-Oyk7cGoZfIe4TwCs/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/KLyrFlBpkA-Oyk7cGoZfIe4TwCs/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.aggregatedintelligence.com/feeds/3603649209035707475/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=7656888&amp;postID=3603649209035707475&amp;isPopup=true" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7656888/posts/default/3603649209035707475?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7656888/posts/default/3603649209035707475?v=2" /><link rel="alternate" type="text/html" href="http://blog.aggregatedintelligence.com/2012/05/using-debugview-with-biztalk-for.html" title="Using DebugView with BizTalk for debugging" /><author><name>Raj Rao</name><uri>https://profiles.google.com/105969740227516948072</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh5.googleusercontent.com/-tDfz18sw7k8/AAAAAAAAAAI/AAAAAAAAAAA/lfehvy89gFY/s512-c/photo.jpg" /></author><thr:total>0</thr:total></entry><entry gd:etag="W/&quot;DkQFRncyeip7ImA9WhVVFEw.&quot;"><id>tag:blogger.com,1999:blog-7656888.post-7121956137353454310</id><published>2012-05-07T12:11:00.001-06:00</published><updated>2012-05-07T12:11:57.992-06:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-05-07T12:11:57.992-06:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="VS 2011" /><category scheme="http://www.blogger.com/atom/ns#" term="Visual Studio" /><title>Setting up GacUtil as part of your post build step</title><content type="html">&lt;p&gt;Here is a simple set of commands to get GacUtil to run as part of the post-build step (via the project properties dialog)&lt;/p&gt; &lt;blockquote&gt; &lt;p&gt;&lt;font face="Courier New"&gt;set var="C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\Bin\NETFX 4.0 Tools\x64\gacutil.exe" /i "$(TargetPath)" /f&lt;br&gt;echo running gacutil&lt;br&gt;echo %var%&lt;/font&gt;&lt;/p&gt;&lt;/blockquote&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7656888-7121956137353454310?l=blog.aggregatedintelligence.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/u4krkVWCrrdmjrjItG7NIlA0JD0/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/u4krkVWCrrdmjrjItG7NIlA0JD0/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/u4krkVWCrrdmjrjItG7NIlA0JD0/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/u4krkVWCrrdmjrjItG7NIlA0JD0/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.aggregatedintelligence.com/feeds/7121956137353454310/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=7656888&amp;postID=7121956137353454310&amp;isPopup=true" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7656888/posts/default/7121956137353454310?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7656888/posts/default/7121956137353454310?v=2" /><link rel="alternate" type="text/html" href="http://blog.aggregatedintelligence.com/2012/05/setting-up-gacutil-as-part-of-your-post.html" title="Setting up GacUtil as part of your post build step" /><author><name>Raj Rao</name><uri>https://profiles.google.com/105969740227516948072</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh5.googleusercontent.com/-tDfz18sw7k8/AAAAAAAAAAI/AAAAAAAAAAA/lfehvy89gFY/s512-c/photo.jpg" /></author><thr:total>0</thr:total></entry><entry gd:etag="W/&quot;C08GQXg5eip7ImA9WhVWFUk.&quot;"><id>tag:blogger.com,1999:blog-7656888.post-4760484805893714816</id><published>2012-04-27T09:50:00.001-06:00</published><updated>2012-04-27T09:50:20.622-06:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-04-27T09:50:20.622-06:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Dynamics CRM" /><title>Entity type codes in CRM Dynamics</title><content type="html">&lt;p&gt;You can get the entity type codes on MSDN. (&lt;a href="http://msdn.microsoft.com/en-us/library/bb887791.aspx"&gt;http://msdn.microsoft.com/en-us/library/bb887791.aspx&lt;/a&gt;, note this is from CRM 4.0 documentation, but valid for CRM 2011 too)&lt;/p&gt;  &lt;p&gt;Another way you can get them is through the CRM database using the following query:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;font face="Courier New"&gt;SELECT ObjectTypeCode,Name       &lt;br /&gt;FROM        &lt;br /&gt;ENTITYVIEW        &lt;br /&gt;order BY ObjectTypeCode&lt;/font&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;The above is the only way to get entity type-codes for custom entities.&lt;/p&gt;  &lt;p&gt;1&amp;#160;&amp;#160;&amp;#160; Account   &lt;br /&gt;2&amp;#160;&amp;#160;&amp;#160; Contact    &lt;br /&gt;3&amp;#160;&amp;#160;&amp;#160; Opportunity    &lt;br /&gt;4&amp;#160;&amp;#160;&amp;#160; Lead    &lt;br /&gt;5&amp;#160;&amp;#160;&amp;#160; Annotation    &lt;br /&gt;6&amp;#160;&amp;#160;&amp;#160; BusinessUnitMap    &lt;br /&gt;7&amp;#160;&amp;#160;&amp;#160; Owner    &lt;br /&gt;8&amp;#160;&amp;#160;&amp;#160; SystemUser    &lt;br /&gt;9&amp;#160;&amp;#160;&amp;#160; Team    &lt;br /&gt;10&amp;#160;&amp;#160;&amp;#160; BusinessUnit    &lt;br /&gt;11&amp;#160;&amp;#160;&amp;#160; PrincipalObjectAccess    &lt;br /&gt;12&amp;#160;&amp;#160;&amp;#160; RolePrivileges    &lt;br /&gt;13&amp;#160;&amp;#160;&amp;#160; SystemUserLicenses    &lt;br /&gt;14&amp;#160;&amp;#160;&amp;#160; SystemUserPrincipals    &lt;br /&gt;15&amp;#160;&amp;#160;&amp;#160; SystemUserRoles    &lt;br /&gt;16&amp;#160;&amp;#160;&amp;#160; AccountLeads    &lt;br /&gt;17&amp;#160;&amp;#160;&amp;#160; ContactInvoices    &lt;br /&gt;18&amp;#160;&amp;#160;&amp;#160; ContactQuotes    &lt;br /&gt;19&amp;#160;&amp;#160;&amp;#160; ContactOrders    &lt;br /&gt;20&amp;#160;&amp;#160;&amp;#160; ServiceContractContacts    &lt;br /&gt;21&amp;#160;&amp;#160;&amp;#160; ProductSalesLiterature    &lt;br /&gt;22&amp;#160;&amp;#160;&amp;#160; ContactLeads    &lt;br /&gt;23&amp;#160;&amp;#160;&amp;#160; TeamMembership    &lt;br /&gt;24&amp;#160;&amp;#160;&amp;#160; LeadCompetitors    &lt;br /&gt;25&amp;#160;&amp;#160;&amp;#160; OpportunityCompetitors    &lt;br /&gt;26&amp;#160;&amp;#160;&amp;#160; CompetitorSalesLiterature    &lt;br /&gt;27&amp;#160;&amp;#160;&amp;#160; LeadProduct    &lt;br /&gt;28&amp;#160;&amp;#160;&amp;#160; RoleTemplatePrivileges    &lt;br /&gt;29&amp;#160;&amp;#160;&amp;#160; Subscription    &lt;br /&gt;30&amp;#160;&amp;#160;&amp;#160; FilterTemplate    &lt;br /&gt;31&amp;#160;&amp;#160;&amp;#160; PrivilegeObjectTypeCodes    &lt;br /&gt;32&amp;#160;&amp;#160;&amp;#160; SalesProcessInstance    &lt;br /&gt;33&amp;#160;&amp;#160;&amp;#160; SubscriptionSyncInfo    &lt;br /&gt;35&amp;#160;&amp;#160;&amp;#160; SubscriptionTrackingDeletedObject    &lt;br /&gt;36&amp;#160;&amp;#160;&amp;#160; ClientUpdate    &lt;br /&gt;37&amp;#160;&amp;#160;&amp;#160; SubscriptionManuallyTrackedObject    &lt;br /&gt;40&amp;#160;&amp;#160;&amp;#160; TeamRoles    &lt;br /&gt;41&amp;#160;&amp;#160;&amp;#160; PrincipalEntityMap    &lt;br /&gt;42&amp;#160;&amp;#160;&amp;#160; SystemUserBusinessUnitEntityMap    &lt;br /&gt;43&amp;#160;&amp;#160;&amp;#160; PrincipalAttributeAccessMap    &lt;br /&gt;44&amp;#160;&amp;#160;&amp;#160; PrincipalObjectAttributeAccess    &lt;br /&gt;112&amp;#160;&amp;#160;&amp;#160; Incident    &lt;br /&gt;123&amp;#160;&amp;#160;&amp;#160; Competitor    &lt;br /&gt;126&amp;#160;&amp;#160;&amp;#160; DocumentIndex    &lt;br /&gt;127&amp;#160;&amp;#160;&amp;#160; KbArticle    &lt;br /&gt;129&amp;#160;&amp;#160;&amp;#160; Subject    &lt;br /&gt;132&amp;#160;&amp;#160;&amp;#160; BusinessUnitNewsArticle    &lt;br /&gt;135&amp;#160;&amp;#160;&amp;#160; ActivityParty    &lt;br /&gt;150&amp;#160;&amp;#160;&amp;#160; UserSettings    &lt;br /&gt;1001&amp;#160;&amp;#160;&amp;#160; ActivityMimeAttachment    &lt;br /&gt;1002&amp;#160;&amp;#160;&amp;#160; Attachment    &lt;br /&gt;1003&amp;#160;&amp;#160;&amp;#160; InternalAddress    &lt;br /&gt;1004&amp;#160;&amp;#160;&amp;#160; CompetitorAddress    &lt;br /&gt;1006&amp;#160;&amp;#160;&amp;#160; CompetitorProduct    &lt;br /&gt;1010&amp;#160;&amp;#160;&amp;#160; Contract    &lt;br /&gt;1011&amp;#160;&amp;#160;&amp;#160; ContractDetail    &lt;br /&gt;1013&amp;#160;&amp;#160;&amp;#160; Discount    &lt;br /&gt;1016&amp;#160;&amp;#160;&amp;#160; KbArticleTemplate    &lt;br /&gt;1017&amp;#160;&amp;#160;&amp;#160; LeadAddress    &lt;br /&gt;1019&amp;#160;&amp;#160;&amp;#160; Organization    &lt;br /&gt;1021&amp;#160;&amp;#160;&amp;#160; OrganizationUI    &lt;br /&gt;1022&amp;#160;&amp;#160;&amp;#160; PriceLevel    &lt;br /&gt;1023&amp;#160;&amp;#160;&amp;#160; Privilege    &lt;br /&gt;1024&amp;#160;&amp;#160;&amp;#160; Product    &lt;br /&gt;1025&amp;#160;&amp;#160;&amp;#160; ProductAssociation    &lt;br /&gt;1026&amp;#160;&amp;#160;&amp;#160; ProductPriceLevel    &lt;br /&gt;1028&amp;#160;&amp;#160;&amp;#160; ProductSubstitute    &lt;br /&gt;1030&amp;#160;&amp;#160;&amp;#160; SystemForm    &lt;br /&gt;1031&amp;#160;&amp;#160;&amp;#160; UserForm    &lt;br /&gt;1036&amp;#160;&amp;#160;&amp;#160; Role    &lt;br /&gt;1037&amp;#160;&amp;#160;&amp;#160; RoleTemplate    &lt;br /&gt;1038&amp;#160;&amp;#160;&amp;#160; SalesLiterature    &lt;br /&gt;1039&amp;#160;&amp;#160;&amp;#160; SavedQuery    &lt;br /&gt;1043&amp;#160;&amp;#160;&amp;#160; StringMap    &lt;br /&gt;1055&amp;#160;&amp;#160;&amp;#160; UoM    &lt;br /&gt;1056&amp;#160;&amp;#160;&amp;#160; UoMSchedule    &lt;br /&gt;1070&amp;#160;&amp;#160;&amp;#160; SalesLiteratureItem    &lt;br /&gt;1071&amp;#160;&amp;#160;&amp;#160; CustomerAddress    &lt;br /&gt;1072&amp;#160;&amp;#160;&amp;#160; SubscriptionClients    &lt;br /&gt;1075&amp;#160;&amp;#160;&amp;#160; StatusMap    &lt;br /&gt;1080&amp;#160;&amp;#160;&amp;#160; DiscountType    &lt;br /&gt;1082&amp;#160;&amp;#160;&amp;#160; KbArticleComment    &lt;br /&gt;1083&amp;#160;&amp;#160;&amp;#160; OpportunityProduct    &lt;br /&gt;1084&amp;#160;&amp;#160;&amp;#160; Quote    &lt;br /&gt;1085&amp;#160;&amp;#160;&amp;#160; QuoteDetail    &lt;br /&gt;1086&amp;#160;&amp;#160;&amp;#160; UserFiscalCalendar    &lt;br /&gt;1088&amp;#160;&amp;#160;&amp;#160; SalesOrder    &lt;br /&gt;1089&amp;#160;&amp;#160;&amp;#160; SalesOrderDetail    &lt;br /&gt;1090&amp;#160;&amp;#160;&amp;#160; Invoice    &lt;br /&gt;1091&amp;#160;&amp;#160;&amp;#160; InvoiceDetail    &lt;br /&gt;1111&amp;#160;&amp;#160;&amp;#160; SavedQueryVisualization    &lt;br /&gt;1112&amp;#160;&amp;#160;&amp;#160; UserQueryVisualization    &lt;br /&gt;1113&amp;#160;&amp;#160;&amp;#160; RibbonTabToCommandMap    &lt;br /&gt;1115&amp;#160;&amp;#160;&amp;#160; RibbonContextGroup    &lt;br /&gt;1116&amp;#160;&amp;#160;&amp;#160; RibbonCommand    &lt;br /&gt;1117&amp;#160;&amp;#160;&amp;#160; RibbonRule    &lt;br /&gt;1120&amp;#160;&amp;#160;&amp;#160; RibbonCustomization    &lt;br /&gt;1130&amp;#160;&amp;#160;&amp;#160; RibbonDiff    &lt;br /&gt;1140&amp;#160;&amp;#160;&amp;#160; ReplicationBacklog    &lt;br /&gt;1200&amp;#160;&amp;#160;&amp;#160; FieldSecurityProfile    &lt;br /&gt;1201&amp;#160;&amp;#160;&amp;#160; FieldPermission    &lt;br /&gt;1202&amp;#160;&amp;#160;&amp;#160; SystemUserProfiles    &lt;br /&gt;1203&amp;#160;&amp;#160;&amp;#160; TeamProfiles    &lt;br /&gt;2000&amp;#160;&amp;#160;&amp;#160; AnnualFiscalCalendar    &lt;br /&gt;2001&amp;#160;&amp;#160;&amp;#160; SemiAnnualFiscalCalendar    &lt;br /&gt;2002&amp;#160;&amp;#160;&amp;#160; QuarterlyFiscalCalendar    &lt;br /&gt;2003&amp;#160;&amp;#160;&amp;#160; MonthlyFiscalCalendar    &lt;br /&gt;2004&amp;#160;&amp;#160;&amp;#160; FixedMonthlyFiscalCalendar    &lt;br /&gt;2010&amp;#160;&amp;#160;&amp;#160; Template    &lt;br /&gt;2011&amp;#160;&amp;#160;&amp;#160; ContractTemplate    &lt;br /&gt;2012&amp;#160;&amp;#160;&amp;#160; UnresolvedAddress    &lt;br /&gt;2013&amp;#160;&amp;#160;&amp;#160; Territory    &lt;br /&gt;2020&amp;#160;&amp;#160;&amp;#160; Queue    &lt;br /&gt;2027&amp;#160;&amp;#160;&amp;#160; License    &lt;br /&gt;2029&amp;#160;&amp;#160;&amp;#160; QueueItem    &lt;br /&gt;2500&amp;#160;&amp;#160;&amp;#160; UserEntityUISettings    &lt;br /&gt;2501&amp;#160;&amp;#160;&amp;#160; UserEntityInstanceData    &lt;br /&gt;3000&amp;#160;&amp;#160;&amp;#160; IntegrationStatus    &lt;br /&gt;3231&amp;#160;&amp;#160;&amp;#160; ConnectionRole    &lt;br /&gt;3232&amp;#160;&amp;#160;&amp;#160; ConnectionRoleAssociation    &lt;br /&gt;3233&amp;#160;&amp;#160;&amp;#160; ConnectionRoleObjectTypeCode    &lt;br /&gt;3234&amp;#160;&amp;#160;&amp;#160; Connection    &lt;br /&gt;4000&amp;#160;&amp;#160;&amp;#160; Equipment    &lt;br /&gt;4001&amp;#160;&amp;#160;&amp;#160; Service    &lt;br /&gt;4002&amp;#160;&amp;#160;&amp;#160; Resource    &lt;br /&gt;4003&amp;#160;&amp;#160;&amp;#160; Calendar    &lt;br /&gt;4004&amp;#160;&amp;#160;&amp;#160; CalendarRule    &lt;br /&gt;4005&amp;#160;&amp;#160;&amp;#160; ResourceGroup    &lt;br /&gt;4006&amp;#160;&amp;#160;&amp;#160; ResourceSpec    &lt;br /&gt;4007&amp;#160;&amp;#160;&amp;#160; ConstraintBasedGroup    &lt;br /&gt;4009&amp;#160;&amp;#160;&amp;#160; Site    &lt;br /&gt;4010&amp;#160;&amp;#160;&amp;#160; ResourceGroupExpansion    &lt;br /&gt;4011&amp;#160;&amp;#160;&amp;#160; InterProcessLock    &lt;br /&gt;4023&amp;#160;&amp;#160;&amp;#160; EmailHash    &lt;br /&gt;4101&amp;#160;&amp;#160;&amp;#160; DisplayStringMap    &lt;br /&gt;4102&amp;#160;&amp;#160;&amp;#160; DisplayString    &lt;br /&gt;4110&amp;#160;&amp;#160;&amp;#160; Notification    &lt;br /&gt;4200&amp;#160;&amp;#160;&amp;#160; ActivityPointer    &lt;br /&gt;4201&amp;#160;&amp;#160;&amp;#160; Appointment    &lt;br /&gt;4202&amp;#160;&amp;#160;&amp;#160; Email    &lt;br /&gt;4204&amp;#160;&amp;#160;&amp;#160; Fax    &lt;br /&gt;4206&amp;#160;&amp;#160;&amp;#160; IncidentResolution    &lt;br /&gt;4207&amp;#160;&amp;#160;&amp;#160; Letter    &lt;br /&gt;4208&amp;#160;&amp;#160;&amp;#160; OpportunityClose    &lt;br /&gt;4209&amp;#160;&amp;#160;&amp;#160; OrderClose    &lt;br /&gt;4210&amp;#160;&amp;#160;&amp;#160; PhoneCall    &lt;br /&gt;4211&amp;#160;&amp;#160;&amp;#160; QuoteClose    &lt;br /&gt;4212&amp;#160;&amp;#160;&amp;#160; Task    &lt;br /&gt;4214&amp;#160;&amp;#160;&amp;#160; ServiceAppointment    &lt;br /&gt;4215&amp;#160;&amp;#160;&amp;#160; Commitment    &lt;br /&gt;4230&amp;#160;&amp;#160;&amp;#160; UserQuery    &lt;br /&gt;4250&amp;#160;&amp;#160;&amp;#160; RecurrenceRule    &lt;br /&gt;4251&amp;#160;&amp;#160;&amp;#160; RecurringAppointmentMaster    &lt;br /&gt;4299&amp;#160;&amp;#160;&amp;#160; EmailSearch    &lt;br /&gt;4300&amp;#160;&amp;#160;&amp;#160; List    &lt;br /&gt;4301&amp;#160;&amp;#160;&amp;#160; ListMember    &lt;br /&gt;4400&amp;#160;&amp;#160;&amp;#160; Campaign    &lt;br /&gt;4401&amp;#160;&amp;#160;&amp;#160; CampaignResponse    &lt;br /&gt;4402&amp;#160;&amp;#160;&amp;#160; CampaignActivity    &lt;br /&gt;4403&amp;#160;&amp;#160;&amp;#160; CampaignItem    &lt;br /&gt;4404&amp;#160;&amp;#160;&amp;#160; CampaignActivityItem    &lt;br /&gt;4405&amp;#160;&amp;#160;&amp;#160; BulkOperationLog    &lt;br /&gt;4406&amp;#160;&amp;#160;&amp;#160; BulkOperation    &lt;br /&gt;4410&amp;#160;&amp;#160;&amp;#160; Import    &lt;br /&gt;4411&amp;#160;&amp;#160;&amp;#160; ImportMap    &lt;br /&gt;4412&amp;#160;&amp;#160;&amp;#160; ImportFile    &lt;br /&gt;4413&amp;#160;&amp;#160;&amp;#160; ImportData    &lt;br /&gt;4414&amp;#160;&amp;#160;&amp;#160; DuplicateRule    &lt;br /&gt;4415&amp;#160;&amp;#160;&amp;#160; DuplicateRecord    &lt;br /&gt;4416&amp;#160;&amp;#160;&amp;#160; DuplicateRuleCondition    &lt;br /&gt;4417&amp;#160;&amp;#160;&amp;#160; ColumnMapping    &lt;br /&gt;4418&amp;#160;&amp;#160;&amp;#160; PickListMapping    &lt;br /&gt;4419&amp;#160;&amp;#160;&amp;#160; LookUpMapping    &lt;br /&gt;4420&amp;#160;&amp;#160;&amp;#160; OwnerMapping    &lt;br /&gt;4423&amp;#160;&amp;#160;&amp;#160; ImportLog    &lt;br /&gt;4424&amp;#160;&amp;#160;&amp;#160; BulkDeleteOperation    &lt;br /&gt;4425&amp;#160;&amp;#160;&amp;#160; BulkDeleteFailure    &lt;br /&gt;4426&amp;#160;&amp;#160;&amp;#160; TransformationMapping    &lt;br /&gt;4427&amp;#160;&amp;#160;&amp;#160; TransformationParameterMapping    &lt;br /&gt;4428&amp;#160;&amp;#160;&amp;#160; ImportEntityMapping    &lt;br /&gt;4500&amp;#160;&amp;#160;&amp;#160; RelationshipRole    &lt;br /&gt;4501&amp;#160;&amp;#160;&amp;#160; RelationshipRoleMap    &lt;br /&gt;4502&amp;#160;&amp;#160;&amp;#160; CustomerRelationship    &lt;br /&gt;4503&amp;#160;&amp;#160;&amp;#160; CustomerOpportunityRole    &lt;br /&gt;4567&amp;#160;&amp;#160;&amp;#160; Audit    &lt;br /&gt;4600&amp;#160;&amp;#160;&amp;#160; EntityMap    &lt;br /&gt;4601&amp;#160;&amp;#160;&amp;#160; AttributeMap    &lt;br /&gt;4602&amp;#160;&amp;#160;&amp;#160; PluginType    &lt;br /&gt;4603&amp;#160;&amp;#160;&amp;#160; PluginTypeStatistic    &lt;br /&gt;4605&amp;#160;&amp;#160;&amp;#160; PluginAssembly    &lt;br /&gt;4606&amp;#160;&amp;#160;&amp;#160; SdkMessage    &lt;br /&gt;4607&amp;#160;&amp;#160;&amp;#160; SdkMessageFilter    &lt;br /&gt;4608&amp;#160;&amp;#160;&amp;#160; SdkMessageProcessingStep    &lt;br /&gt;4609&amp;#160;&amp;#160;&amp;#160; SdkMessageRequest    &lt;br /&gt;4610&amp;#160;&amp;#160;&amp;#160; SdkMessageResponse    &lt;br /&gt;4611&amp;#160;&amp;#160;&amp;#160; SdkMessageResponseField    &lt;br /&gt;4613&amp;#160;&amp;#160;&amp;#160; SdkMessagePair    &lt;br /&gt;4614&amp;#160;&amp;#160;&amp;#160; SdkMessageRequestField    &lt;br /&gt;4615&amp;#160;&amp;#160;&amp;#160; SdkMessageProcessingStepImage    &lt;br /&gt;4616&amp;#160;&amp;#160;&amp;#160; SdkMessageProcessingStepSecureConfig    &lt;br /&gt;4618&amp;#160;&amp;#160;&amp;#160; ServiceEndpoint    &lt;br /&gt;4700&amp;#160;&amp;#160;&amp;#160; AsyncOperation    &lt;br /&gt;4702&amp;#160;&amp;#160;&amp;#160; WorkflowWaitSubscription    &lt;br /&gt;4703&amp;#160;&amp;#160;&amp;#160; Workflow    &lt;br /&gt;4704&amp;#160;&amp;#160;&amp;#160; WorkflowDependency    &lt;br /&gt;4705&amp;#160;&amp;#160;&amp;#160; IsvConfig    &lt;br /&gt;4706&amp;#160;&amp;#160;&amp;#160; WorkflowLog    &lt;br /&gt;4707&amp;#160;&amp;#160;&amp;#160; ApplicationFile    &lt;br /&gt;4708&amp;#160;&amp;#160;&amp;#160; OrganizationStatistic    &lt;br /&gt;4709&amp;#160;&amp;#160;&amp;#160; SiteMap    &lt;br /&gt;4710&amp;#160;&amp;#160;&amp;#160; ProcessSession    &lt;br /&gt;4800&amp;#160;&amp;#160;&amp;#160; WebWizard    &lt;br /&gt;4802&amp;#160;&amp;#160;&amp;#160; WizardPage    &lt;br /&gt;4803&amp;#160;&amp;#160;&amp;#160; WizardAccessPrivilege    &lt;br /&gt;4810&amp;#160;&amp;#160;&amp;#160; TimeZoneDefinition    &lt;br /&gt;4811&amp;#160;&amp;#160;&amp;#160; TimeZoneRule    &lt;br /&gt;4812&amp;#160;&amp;#160;&amp;#160; TimeZoneLocalizedName    &lt;br /&gt;7100&amp;#160;&amp;#160;&amp;#160; Solution    &lt;br /&gt;7101&amp;#160;&amp;#160;&amp;#160; Publisher    &lt;br /&gt;7102&amp;#160;&amp;#160;&amp;#160; PublisherAddress    &lt;br /&gt;7103&amp;#160;&amp;#160;&amp;#160; SolutionComponent    &lt;br /&gt;7105&amp;#160;&amp;#160;&amp;#160; Dependency    &lt;br /&gt;7106&amp;#160;&amp;#160;&amp;#160; DependencyNode    &lt;br /&gt;7107&amp;#160;&amp;#160;&amp;#160; InvalidDependency    &lt;br /&gt;8000&amp;#160;&amp;#160;&amp;#160; Post    &lt;br /&gt;8001&amp;#160;&amp;#160;&amp;#160; PostRole    &lt;br /&gt;8002&amp;#160;&amp;#160;&amp;#160; PostRegarding    &lt;br /&gt;8003&amp;#160;&amp;#160;&amp;#160; PostFollow    &lt;br /&gt;8005&amp;#160;&amp;#160;&amp;#160; PostComment    &lt;br /&gt;8006&amp;#160;&amp;#160;&amp;#160; PostLike    &lt;br /&gt;9100&amp;#160;&amp;#160;&amp;#160; Report    &lt;br /&gt;9101&amp;#160;&amp;#160;&amp;#160; ReportEntity    &lt;br /&gt;9102&amp;#160;&amp;#160;&amp;#160; ReportCategory    &lt;br /&gt;9103&amp;#160;&amp;#160;&amp;#160; ReportVisibility    &lt;br /&gt;9104&amp;#160;&amp;#160;&amp;#160; ReportLink    &lt;br /&gt;9105&amp;#160;&amp;#160;&amp;#160; TransactionCurrency    &lt;br /&gt;9106&amp;#160;&amp;#160;&amp;#160; MailMergeTemplate    &lt;br /&gt;9107&amp;#160;&amp;#160;&amp;#160; ImportJob    &lt;br /&gt;9333&amp;#160;&amp;#160;&amp;#160; WebResource    &lt;br /&gt;9502&amp;#160;&amp;#160;&amp;#160; SharePointSite    &lt;br /&gt;9508&amp;#160;&amp;#160;&amp;#160; SharePointDocumentLocation    &lt;br /&gt;9600&amp;#160;&amp;#160;&amp;#160; Goal    &lt;br /&gt;9602&amp;#160;&amp;#160;&amp;#160; GoalRollupQuery    &lt;br /&gt;9603&amp;#160;&amp;#160;&amp;#160; Metric    &lt;br /&gt;9604&amp;#160;&amp;#160;&amp;#160; RollupField    &lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7656888-4760484805893714816?l=blog.aggregatedintelligence.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/KL_iMbR8yYCgvTWhS4oJLKHgRnM/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/KL_iMbR8yYCgvTWhS4oJLKHgRnM/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/KL_iMbR8yYCgvTWhS4oJLKHgRnM/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/KL_iMbR8yYCgvTWhS4oJLKHgRnM/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.aggregatedintelligence.com/feeds/4760484805893714816/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=7656888&amp;postID=4760484805893714816&amp;isPopup=true" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7656888/posts/default/4760484805893714816?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7656888/posts/default/4760484805893714816?v=2" /><link rel="alternate" type="text/html" href="http://blog.aggregatedintelligence.com/2012/04/entity-type-codes-in-crm-dynamics.html" title="Entity type codes in CRM Dynamics" /><author><name>Raj Rao</name><uri>https://profiles.google.com/105969740227516948072</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh5.googleusercontent.com/-tDfz18sw7k8/AAAAAAAAAAI/AAAAAAAAAAA/lfehvy89gFY/s512-c/photo.jpg" /></author><thr:total>0</thr:total></entry><entry gd:etag="W/&quot;DkQDQX04cCp7ImA9WhVXGEo.&quot;"><id>tag:blogger.com,1999:blog-7656888.post-2926357702247963252</id><published>2012-04-19T16:26:00.001-06:00</published><updated>2012-04-19T16:26:10.338-06:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-04-19T16:26:10.338-06:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Dynamics CRM" /><title>Dynamics CRM–Add new from sub grid causes Insufficient Permissions error</title><content type="html">&lt;p&gt;If you get the “Insufficient Permissions” error when clicking on “Add New” from within a sub-grid of an entity (eg: you are in the form for an Account entity, and you click on Opportunity node and try and create a new opportunity), then you probably are missing read permissions on the “Attribute Map”.    &lt;br /&gt;Note: If you turn on tracing, you will see the error:&lt;font face="Courier New"&gt; “Error Details: Principal user (Id=&lt;strong&gt;GUID&lt;/strong&gt;, type=8) is missing prvReadAttributeMap privilege”.&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;To get around this issue, you need to check the “Security Role” that that person is in and make sure that under the “Customization” tab, the “Attribute Map” entity has at least “Read” access.&lt;/p&gt;  &lt;p&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://lh3.ggpht.com/-AY8QGGX3_HI/T5CQ_4PTJkI/AAAAAAAANCk/1d824v1TEDM/image%25255B4%25255D.png?imgmax=800" width="711" height="133" /&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7656888-2926357702247963252?l=blog.aggregatedintelligence.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/R6xDCYiw5ZZK2oSty2HHNdYWEws/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/R6xDCYiw5ZZK2oSty2HHNdYWEws/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/R6xDCYiw5ZZK2oSty2HHNdYWEws/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/R6xDCYiw5ZZK2oSty2HHNdYWEws/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.aggregatedintelligence.com/feeds/2926357702247963252/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=7656888&amp;postID=2926357702247963252&amp;isPopup=true" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7656888/posts/default/2926357702247963252?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7656888/posts/default/2926357702247963252?v=2" /><link rel="alternate" type="text/html" href="http://blog.aggregatedintelligence.com/2012/04/dynamics-crmadd-new-from-sub-grid.html" title="Dynamics CRM–Add new from sub grid causes Insufficient Permissions error" /><author><name>Raj Rao</name><uri>https://profiles.google.com/105969740227516948072</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh5.googleusercontent.com/-tDfz18sw7k8/AAAAAAAAAAI/AAAAAAAAAAA/lfehvy89gFY/s512-c/photo.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://lh3.ggpht.com/-AY8QGGX3_HI/T5CQ_4PTJkI/AAAAAAAANCk/1d824v1TEDM/s72-c/image%25255B4%25255D.png?imgmax=800" height="72" width="72" /><thr:total>0</thr:total></entry><entry gd:etag="W/&quot;C0ANRXs6fSp7ImA9WhVXF0o.&quot;"><id>tag:blogger.com,1999:blog-7656888.post-2642948019576741007</id><published>2012-04-18T11:56:00.001-06:00</published><updated>2012-04-18T11:56:34.515-06:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-04-18T11:56:34.515-06:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Code Sample" /><category scheme="http://www.blogger.com/atom/ns#" term="Dynamics CRM" /><title>CRM tracing</title><content type="html">&lt;p&gt;CRM tracing can be enabled via the registry. Here is the script:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;font face="Courier New"&gt;Windows Registry Editor Version 5.00&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New"&gt;[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSCRM]       &lt;br /&gt;&amp;quot;TraceEnabled&amp;quot;=dword:00000001        &lt;br /&gt;&amp;quot;TraceRefresh&amp;quot;=dword:00000001&lt;/font&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;Copy the above code into a text file and rename the file to “.reg”. Run the file and tracing will be enabled.&lt;/p&gt;  &lt;p&gt;The trace files are written to the folder: “C:\Program Files\Microsoft Dynamics CRM\Trace”.&lt;/p&gt;  &lt;p&gt;To disable tracing use the following code:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;font face="Courier New"&gt;Windows Registry Editor Version 5.00&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New"&gt;[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSCRM]       &lt;br /&gt;&amp;quot;TraceEnabled&amp;quot;=dword:00000000        &lt;br /&gt;&amp;quot;TraceRefresh&amp;quot;=dword:00000000&lt;/font&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;You should be able to enable disable tracing through the use of Powershell scripts, but I could never get it working. Here is the code I wrote (that doesn’t seem to work):&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;font face="Courier New"&gt;Add-PSSnapin Microsoft.Crm.PowerShell&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New"&gt;$input = Read-Host &amp;quot;Enable/Disable tracing (e/d)&amp;quot;;&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New"&gt;Write-Host &amp;quot;Running....&amp;quot;;&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New"&gt;if ($input.ToUpper() -eq &amp;quot;E&amp;quot;)       &lt;br /&gt;{        &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; $setting = Get-CrmSetting TraceSettings        &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; $setting.Enabled=&amp;quot;True&amp;quot;;        &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; $setting.Categories=&amp;quot;*:Verbose&amp;quot;;        &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; Set-CrmSetting $setting;        &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; Write-Host &amp;quot;Trace folder: c:\Program Files\Microsoft Dynamics CRM\Trace&amp;quot;        &lt;br /&gt;}        &lt;br /&gt;elseif ($input.ToUpper() -eq &amp;quot;D&amp;quot;)        &lt;br /&gt;{        &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; $setting = Get-CrmSetting TraceSettings        &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; $setting.Enabled=&amp;quot;False&amp;quot;;        &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; Set-CrmSetting $setting;        &lt;br /&gt;}        &lt;br /&gt;Write-Host &amp;quot;Tracesettings: &amp;quot;;        &lt;br /&gt;Get-CrmSetting TraceSettings;&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New"&gt;Read-Host &amp;quot;Press any key to continue....&amp;quot;;&lt;/font&gt;&lt;/p&gt;&lt;/blockquote&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7656888-2642948019576741007?l=blog.aggregatedintelligence.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/TGZ7Z_mP6DGwcvg130CS3Mj1fN8/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/TGZ7Z_mP6DGwcvg130CS3Mj1fN8/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/TGZ7Z_mP6DGwcvg130CS3Mj1fN8/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/TGZ7Z_mP6DGwcvg130CS3Mj1fN8/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.aggregatedintelligence.com/feeds/2642948019576741007/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=7656888&amp;postID=2642948019576741007&amp;isPopup=true" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7656888/posts/default/2642948019576741007?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7656888/posts/default/2642948019576741007?v=2" /><link rel="alternate" type="text/html" href="http://blog.aggregatedintelligence.com/2012/04/crm-tracing.html" title="CRM tracing" /><author><name>Raj Rao</name><uri>https://profiles.google.com/105969740227516948072</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh5.googleusercontent.com/-tDfz18sw7k8/AAAAAAAAAAI/AAAAAAAAAAA/lfehvy89gFY/s512-c/photo.jpg" /></author><thr:total>0</thr:total></entry><entry gd:etag="W/&quot;A04ASXk8eSp7ImA9WhVXFkQ.&quot;"><id>tag:blogger.com,1999:blog-7656888.post-1573578010272267061</id><published>2012-04-17T15:59:00.001-06:00</published><updated>2012-04-17T15:59:08.771-06:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-04-17T15:59:08.771-06:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Code Sample" /><category scheme="http://www.blogger.com/atom/ns#" term="DPM" /><title>DPM 2012–Powershell scripts</title><content type="html">&lt;p&gt;To run DPM 2012 powershell scripts from machines other than the DPM server, you need to install the DPM Remote Administration component:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh4.ggpht.com/-yj_fu53AH1c/T43npRDVLyI/AAAAAAAAM_o/VzHFvLmOrT8/s1600-h/image%25255B3%25255D.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://lh4.ggpht.com/-2uvhVsXg1Bw/T43nqnN04AI/AAAAAAAAM_w/Oib14sqwyNY/image_thumb%25255B1%25255D.png?imgmax=800" width="335" height="216" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;And for the scripts to run, you need to import the DPM powershell module using the following script:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;font face="Courier New"&gt;$installPath = (Get-ItemProperty &amp;quot;HKLM:\SOFTWARE\Microsoft\Microsoft Data Protection Manager\Setup&amp;quot; &amp;quot;UIInstallPath&amp;quot;).UIInstallPath       &lt;br /&gt;$dpmModuleFullPath = $installPath + &amp;quot;Modules\DataProtectionManager\DataProtectionManager.psd1&amp;quot;        &lt;br /&gt;Import-Module $dpmModuleFullPath&lt;/font&gt;&lt;/p&gt;&lt;/blockquote&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7656888-1573578010272267061?l=blog.aggregatedintelligence.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/pwS_n5h6Sk8aPP_nu3vznEvZjuE/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/pwS_n5h6Sk8aPP_nu3vznEvZjuE/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/pwS_n5h6Sk8aPP_nu3vznEvZjuE/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/pwS_n5h6Sk8aPP_nu3vznEvZjuE/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.aggregatedintelligence.com/feeds/1573578010272267061/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=7656888&amp;postID=1573578010272267061&amp;isPopup=true" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7656888/posts/default/1573578010272267061?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7656888/posts/default/1573578010272267061?v=2" /><link rel="alternate" type="text/html" href="http://blog.aggregatedintelligence.com/2012/04/dpm-2012powershell-scripts.html" title="DPM 2012–Powershell scripts" /><author><name>Raj Rao</name><uri>https://profiles.google.com/105969740227516948072</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh5.googleusercontent.com/-tDfz18sw7k8/AAAAAAAAAAI/AAAAAAAAAAA/lfehvy89gFY/s512-c/photo.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://lh4.ggpht.com/-2uvhVsXg1Bw/T43nqnN04AI/AAAAAAAAM_w/Oib14sqwyNY/s72-c/image_thumb%25255B1%25255D.png?imgmax=800" height="72" width="72" /><thr:total>0</thr:total></entry><entry gd:etag="W/&quot;C0cAQ305eSp7ImA9WhVXFU0.&quot;"><id>tag:blogger.com,1999:blog-7656888.post-2083546756461775533</id><published>2012-04-15T08:44:00.001-06:00</published><updated>2012-04-15T08:44:02.321-06:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-04-15T08:44:02.321-06:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Baby" /><title>Car seat inspection stations</title><content type="html">&lt;p&gt;I was looking for baby car seat inspection stations in Douglas County in Colorado and came across the NHTSA’s Inspection Station Location web-page, which is a very useful resource to find inspection stations across the country.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.nhtsa.gov/cps/cpsfitting/index.cfm"&gt;http://www.nhtsa.gov/cps/cpsfitting/index.cfm&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Also, here is the list of the currently rated car-seats by the NHTSA. If you use the link, you can sort/manipulate/duplicate the worksheet directly: &lt;a title="https://docs.google.com/spreadsheet/ccc?key=0AjvtUeIvT94wdDFlWThFV3c3RUZsVENtcFVaNkhRenc" href="https://docs.google.com/spreadsheet/ccc?key=0AjvtUeIvT94wdDFlWThFV3c3RUZsVENtcFVaNkhRenc"&gt;https://docs.google.com/spreadsheet/ccc?key=0AjvtUeIvT94wdDFlWThFV3c3RUZsVENtcFVaNkhRenc&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;iframe height="300" src="https://docs.google.com/spreadsheet/pub?key=0AjvtUeIvT94wdDFlWThFV3c3RUZsVENtcFVaNkhRenc&amp;amp;single=true&amp;amp;gid=0&amp;amp;output=html&amp;amp;widget=true" frameborder="0" width="500"&gt;&lt;/iframe&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7656888-2083546756461775533?l=blog.aggregatedintelligence.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/BU3iRdcZxFtshn1wfWsBw_fcIaU/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/BU3iRdcZxFtshn1wfWsBw_fcIaU/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/BU3iRdcZxFtshn1wfWsBw_fcIaU/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/BU3iRdcZxFtshn1wfWsBw_fcIaU/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.aggregatedintelligence.com/feeds/2083546756461775533/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=7656888&amp;postID=2083546756461775533&amp;isPopup=true" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7656888/posts/default/2083546756461775533?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7656888/posts/default/2083546756461775533?v=2" /><link rel="alternate" type="text/html" href="http://blog.aggregatedintelligence.com/2012/04/car-seat-inspection-stations.html" title="Car seat inspection stations" /><author><name>Raj Rao</name><uri>https://profiles.google.com/105969740227516948072</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh5.googleusercontent.com/-tDfz18sw7k8/AAAAAAAAAAI/AAAAAAAAAAA/lfehvy89gFY/s512-c/photo.jpg" /></author><thr:total>0</thr:total></entry><entry gd:etag="W/&quot;D04DQnw8fCp7ImA9WhVXE0k.&quot;"><id>tag:blogger.com,1999:blog-7656888.post-2941129381615443875</id><published>2012-04-13T13:39:00.001-06:00</published><updated>2012-04-13T13:39:33.274-06:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-04-13T13:39:33.274-06:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Dynamics CRM" /><title>CRM 2011 plugin - Attribute ‘xxxx’ cannot be NULL</title><content type="html">&lt;p&gt;I was getting the “Attribute ‘xxxx’ cannot be NULL” error while attempting to update a CRM entity. What I was trying to do was to use the Entity object to perform an update and I think that was causing an error as the attribute ‘xxxx’ which was a required attribute did not have a value. But in my case, all I was trying to do was to update one of the attributes of that entity.&lt;/p&gt;  &lt;p&gt;The original code that did not work:&lt;/p&gt;  &lt;pre&gt;Incident incident = new Incident();
incident.IncidentId = incidentGuid;
contact.new_Contact_Incident_Id = incident;&lt;/pre&gt;

&lt;p&gt;I was able to get my code working by using the &lt;strong&gt;EntityReference&lt;/strong&gt; object. Here is the working code:&lt;/p&gt;

&lt;pre&gt;EntityReference incidentRef = new EntityReference(Incident.EntityLogicalName, incidentGuid);
contactEntity[“new_contact_incident_id”] = incidentRef;
PluginContext.OrganizationService.Update(contactEntity);&lt;/pre&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7656888-2941129381615443875?l=blog.aggregatedintelligence.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/OOKabRVg4Sy31CUhGHhuZvsKrGg/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/OOKabRVg4Sy31CUhGHhuZvsKrGg/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/OOKabRVg4Sy31CUhGHhuZvsKrGg/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/OOKabRVg4Sy31CUhGHhuZvsKrGg/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.aggregatedintelligence.com/feeds/2941129381615443875/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=7656888&amp;postID=2941129381615443875&amp;isPopup=true" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7656888/posts/default/2941129381615443875?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7656888/posts/default/2941129381615443875?v=2" /><link rel="alternate" type="text/html" href="http://blog.aggregatedintelligence.com/2012/04/crm-2011-plugin-attribute-xxxx-cannot.html" title="CRM 2011 plugin - Attribute ‘xxxx’ cannot be NULL" /><author><name>Raj Rao</name><uri>https://profiles.google.com/105969740227516948072</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh5.googleusercontent.com/-tDfz18sw7k8/AAAAAAAAAAI/AAAAAAAAAAA/lfehvy89gFY/s512-c/photo.jpg" /></author><thr:total>0</thr:total></entry><entry gd:etag="W/&quot;DUcFQX85eyp7ImA9WhVXE04.&quot;"><id>tag:blogger.com,1999:blog-7656888.post-8115766613371363514</id><published>2012-04-13T11:10:00.001-06:00</published><updated>2012-04-13T11:10:10.123-06:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-04-13T11:10:10.123-06:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Tools and Utilities" /><category scheme="http://www.blogger.com/atom/ns#" term="Developer" /><title>Tools list 2012</title><content type="html">&lt;p&gt;I got a new computer at work and had to reinstall a bunch of software. Here is the list I made along the way.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;General tools&lt;/strong&gt;&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;Chrome: &lt;a href="http://www.google.com/chrome/"&gt;http://www.google.com/chrome/&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;GreenShot (Screen capture tool): &lt;a href="http://www.getgreenshot.org/"&gt;http://www.getgreenshot.org/&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;NotePad++ (replacement for notepad): &lt;a href="http://notepad-plus-plus.org/"&gt;http://notepad-plus-plus.org/&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;Windows Live Writer: &lt;a href="http://writer.live/com/"&gt;http://writer.live/com/&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;Paint.Net (replacement for Paint): &lt;a href="http://www.dotpdn.com/downloads/pdn.html"&gt;http://www.dotpdn.com/downloads/pdn.html&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;Fences (Desktop management software): &lt;a href="http://www.stardock.com/products/fences/"&gt;http://www.stardock.com/products/fences/&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;Spotify (music!): &lt;a href="http://www.spotify.com"&gt;http://www.spotify.com&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;DisplayFusion (multiple monitor enhancements): &lt;a href="http://www.displayfusion.com/"&gt;http://www.displayfusion.com/&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;TeraCopy (enhanced file copy): &lt;a href="http://codesector.com/teracopy"&gt;http://codesector.com/teracopy&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;7-Zip (archive file tool): &lt;a href="http://www.7-zip.org/"&gt;http://www.7-zip.org/&lt;/a&gt; &lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;&lt;strong&gt;Developer tools&lt;/strong&gt;&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;Visual Studio 2012 (msdn)&lt;/li&gt;    &lt;li&gt;NuGet: &lt;a href="http://www.nuget.org/"&gt;http://www.nuget.org/&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;LinqPad: &lt;a href="http://www.linqpad.net/"&gt;http://www.linqpad.net/&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;Fiddler: &lt;a href="http://www.fiddler2.com/fiddler2/"&gt;http://www.fiddler2.com/&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;WinMerge: &lt;a href="http://winmerge.org/"&gt;http://winmerge.org/&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;SoapUI: &lt;a href="http://soapui.org/"&gt;http://soapui.org/&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;WCFStorm: &lt;a href="http://www.wcfstorm.com/"&gt;http://www.wcfstorm.com/&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;PowerGui: &lt;a href="http://powergui.org/"&gt;http://powergui.org/&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;Sql Server (msdn)&lt;/li&gt;    &lt;li&gt;SqlComplete Express/Free: &lt;a href="http://devart.com/dbforge/sql/sqlcomplete"&gt;http://devart.com/dbforge/sql/sqlcomplete&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;SSMS Tools: &lt;a href="http://www.ssmstoolspack.com/download"&gt;http://www.ssmstoolspack.com/download&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;Balsamiq (Screen mock-ups): &lt;a href="http://www.balsamiq.com/"&gt;http://www.balsamiq.com/&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;Hypermodel (UML modeling tool – great to visualize XSDs): &lt;a href="http://www.xmlmodeling.com/hypermodel"&gt;http://www.xmlmodeling.com/hypermodel&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;Oracle DataModeler: &lt;a href="http://www.oracle.com/technetwork/developer-tools/datamodeler/overview/index.html"&gt;http://www.oracle.com/technetwork/developer-tools/datamodeler/overview/index.html&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;Team Foundation Kicks: &lt;a href="http://www.attrice.info/cm/tfs/"&gt;http://www.attrice.info/cm/tfs/&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;Team Foundation Power Tools 2011: &lt;a href="http://visualstudiogallery.msdn.microsoft.com/c255a1e4-04ba-4f68-8f4e-cd473d6b971f"&gt;http://visualstudiogallery.msdn.microsoft.com/c255a1e4-04ba-4f68-8f4e-cd473d6b971f&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;XML Notepad: &lt;a href="http://www.microsoft.com/download/en/details.aspx?id=7973"&gt;http://www.microsoft.com/download/en/details.aspx?id=7973&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;Expresso Regular Expression development tool: &lt;a href="http://www.ultrapico.com/Expresso.htm"&gt;http://www.ultrapico.com/Expresso.htm&lt;/a&gt;&lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;&lt;strong&gt;SDKs and such:&lt;/strong&gt;&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;Microsoft SDK for Windows 7 and .Net 4: &lt;a href="http://www.microsoft.com/download/en/details.aspx?id=8279"&gt;http://www.microsoft.com/download/en/details.aspx?id=8279&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;Silverlight SDK: (4.0): &lt;a href="http://www.microsoft.com/download/en/details.aspx?id=7335"&gt;http://www.microsoft.com/download/en/details.aspx?id=7335&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;Enterprise Library (5.0): &lt;a href="http://msdn.microsoft.com/en-us/library/ff632023.aspx"&gt;http://msdn.microsoft.com/en-us/library/ff632023.aspx&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;Prism: &lt;a href="http://compositewpf.codeplex.com/"&gt;http://compositewpf.codeplex.com/&lt;/a&gt;&lt;/li&gt; &lt;!--EndFragment--&gt;&lt;/ol&gt;  &lt;p&gt;&lt;strong&gt;System tools:&lt;/strong&gt;&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;SysInternals Suite (awesome set of sys tools): &lt;a title="http://technet.microsoft.com/en-us/sysinternals/bb842062" href="http://technet.microsoft.com/en-us/sysinternals/bb842062"&gt;http://technet.microsoft.com/en-us/sysinternals/bb842062&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;Oracle VirtualBox (Virtual PC): &lt;a href="https://www.virtualbox.org/"&gt;https://www.virtualbox.org/&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;Remote Desktop Connection Manager (manage multiple remote desktop connections): &lt;a title="http://www.microsoft.com/download/en/details.aspx?displaylang=en&amp;amp;id=21101" href="http://www.microsoft.com/download/en/details.aspx?displaylang=en&amp;amp;id=21101"&gt;http://www.microsoft.com/download/en/details.aspx?displaylang=en&amp;amp;id=21101&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;Virtual Clone Drive (mount ISO files): &lt;a href="http://www.slysoft.com/en/virtual-clonedrive.html"&gt;http://www.slysoft.com/en/virtual-clonedrive.html&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;FileZilla FTP Client: &lt;a href="http://filezilla-project.org/"&gt;http://filezilla-project.org/&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;WinDirStat (graphically view disk space usage): &lt;a href="http://windirstat.info/"&gt;http://windirstat.info/&lt;/a&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/7656888-8115766613371363514?l=blog.aggregatedintelligence.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/29w3REl08EGovYqTKXKmNgOfqc4/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/29w3REl08EGovYqTKXKmNgOfqc4/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/29w3REl08EGovYqTKXKmNgOfqc4/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/29w3REl08EGovYqTKXKmNgOfqc4/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.aggregatedintelligence.com/feeds/8115766613371363514/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=7656888&amp;postID=8115766613371363514&amp;isPopup=true" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7656888/posts/default/8115766613371363514?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7656888/posts/default/8115766613371363514?v=2" /><link rel="alternate" type="text/html" href="http://blog.aggregatedintelligence.com/2012/04/tools-list-2012.html" title="Tools list 2012" /><author><name>Raj Rao</name><uri>https://profiles.google.com/105969740227516948072</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh5.googleusercontent.com/-tDfz18sw7k8/AAAAAAAAAAI/AAAAAAAAAAA/lfehvy89gFY/s512-c/photo.jpg" /></author><thr:total>0</thr:total></entry><entry gd:etag="W/&quot;DEcNQXw9eyp7ImA9WhVXEEQ.&quot;"><id>tag:blogger.com,1999:blog-7656888.post-1210701340627316106</id><published>2012-04-10T16:14:00.001-06:00</published><updated>2012-04-10T16:14:50.263-06:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-04-10T16:14:50.263-06:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Dynamics CRM" /><title>CRM 2011–Access is denied error–Javascript</title><content type="html">&lt;p&gt;I was using the “MSXML2.XMLHTTP.3.0” activeX object to create connections to the CRM service and the code that I had previously written and tested as working was suddenly failing. The error was occurring on the open method and the exception was “&lt;strong&gt;[object Error]&lt;/strong&gt;”. Looking at the exception.message property, the error was “Access is denied”&lt;/p&gt;  &lt;p&gt;After some digging and some providence, I found out that the error would happen only when I hit the URL as “http://www.company.com/…..” but not if I hit the url with “http://company/…..”&lt;/p&gt;  &lt;p&gt;Turns out the “Access is Denied” is being thrown because of cross-site scripting restrictions that are imposed on the XmlHttp object.&lt;/p&gt;  &lt;p&gt;Here is the original way I was creating the URL: &lt;/p&gt;  &lt;p&gt;oDataEndpointUrl = Xrm.Page.context.getServerUrl() + &amp;quot;/XRMServices/2011/OrganizationData.svc&lt;/p&gt;  &lt;p&gt;So getServerUrl() was not returning the url correctly formatted based on how users were navigating to the page.&lt;/p&gt;  &lt;p&gt;To overcome the issue I used the following code:&lt;/p&gt;  &lt;blockquote&gt;   &lt;pre&gt;oDataEndpointUrl = &amp;quot;/&amp;quot; + Xrm.Page.context.getOrgUniqueName() + &amp;quot;/XRMServices/2011/OrganizationData.svc&amp;quot;;&lt;/pre&gt;
&lt;/blockquote&gt;

&lt;p&gt;This makes the URL relative and hence I was able to get around the cross-site scripting issue.&lt;/p&gt;

&lt;p&gt;Note: another way to get around this issue is if you add the URLS to the same zone in Internet Explorer.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;References:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;About Native XMLHTTP:&lt;/strong&gt; &lt;a href="http://msdn.microsoft.com/en-us/library/ms537505(v=VS.85).aspx"&gt;http://msdn.microsoft.com/en-us/library/ms537505(v=VS.85).aspx&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/7656888-1210701340627316106?l=blog.aggregatedintelligence.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/YUJ7D2bnlCxiXGsMYCVTSkuwnsE/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/YUJ7D2bnlCxiXGsMYCVTSkuwnsE/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/YUJ7D2bnlCxiXGsMYCVTSkuwnsE/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/YUJ7D2bnlCxiXGsMYCVTSkuwnsE/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.aggregatedintelligence.com/feeds/1210701340627316106/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=7656888&amp;postID=1210701340627316106&amp;isPopup=true" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7656888/posts/default/1210701340627316106?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7656888/posts/default/1210701340627316106?v=2" /><link rel="alternate" type="text/html" href="http://blog.aggregatedintelligence.com/2012/04/crm-2011access-is-denied.html" title="CRM 2011–Access is denied error–Javascript" /><author><name>Raj Rao</name><uri>https://profiles.google.com/105969740227516948072</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh5.googleusercontent.com/-tDfz18sw7k8/AAAAAAAAAAI/AAAAAAAAAAA/lfehvy89gFY/s512-c/photo.jpg" /></author><thr:total>0</thr:total></entry><entry gd:etag="W/&quot;D0IMR3Yzfip7ImA9WhVQGEk.&quot;"><id>tag:blogger.com,1999:blog-7656888.post-6919755661385574845</id><published>2012-04-07T18:39:00.001-06:00</published><updated>2012-04-07T18:39:46.886-06:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-04-07T18:39:46.886-06:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term=".NET" /><category scheme="http://www.blogger.com/atom/ns#" term="Tools and Utilities" /><category scheme="http://www.blogger.com/atom/ns#" term="Developer" /><title>Smtp4dev–SMTP server for development</title><content type="html">&lt;p&gt;Came across “Smtp4dev” a CodePlex project that runs a local service that acts as an SMTP server. Extremely useful for testing sending of email messages (especially when you don’t have an SMTP server available for such testing).&lt;/p&gt;  &lt;p&gt;Check it out at: &lt;a href="http://smtp4dev.codeplex.com/"&gt;http://smtp4dev.codeplex.com/&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://lh3.ggpht.com/-CVOd1KFF4-o/T4DeUZZ9kBI/AAAAAAAAMzQ/scFG69IhtvM/image%25255B4%25255D.png?imgmax=800" width="394" height="416" /&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7656888-6919755661385574845?l=blog.aggregatedintelligence.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/kQL1dCwey6chQPxC638-hewkg5k/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/kQL1dCwey6chQPxC638-hewkg5k/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/kQL1dCwey6chQPxC638-hewkg5k/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/kQL1dCwey6chQPxC638-hewkg5k/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.aggregatedintelligence.com/feeds/6919755661385574845/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=7656888&amp;postID=6919755661385574845&amp;isPopup=true" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7656888/posts/default/6919755661385574845?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7656888/posts/default/6919755661385574845?v=2" /><link rel="alternate" type="text/html" href="http://blog.aggregatedintelligence.com/2012/04/smtp4devsmtp-server-for-development.html" title="Smtp4dev–SMTP server for development" /><author><name>Raj Rao</name><uri>https://profiles.google.com/105969740227516948072</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh5.googleusercontent.com/-tDfz18sw7k8/AAAAAAAAAAI/AAAAAAAAAAA/lfehvy89gFY/s512-c/photo.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://lh3.ggpht.com/-CVOd1KFF4-o/T4DeUZZ9kBI/AAAAAAAAMzQ/scFG69IhtvM/s72-c/image%25255B4%25255D.png?imgmax=800" height="72" width="72" /><thr:total>0</thr:total></entry><entry gd:etag="W/&quot;D04AQX86eyp7ImA9WhVQFUQ.&quot;"><id>tag:blogger.com,1999:blog-7656888.post-2558398744258274996</id><published>2012-04-04T21:19:00.000-06:00</published><updated>2012-04-04T21:19:00.113-06:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-04-04T21:19:00.113-06:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Code Sample" /><category scheme="http://www.blogger.com/atom/ns#" term=".NET" /><category scheme="http://www.blogger.com/atom/ns#" term="C#" /><category scheme="http://www.blogger.com/atom/ns#" term="Entity Framework" /><category scheme="http://www.blogger.com/atom/ns#" term="SQL Server" /><title>Sql Server, Transaction Isolation and Entity Framework</title><content type="html">&lt;p&gt;Recently I had to work through some deadlock issues that I was getting while using EF.&lt;/p&gt;  &lt;p&gt;Here are some things that I found out and is useful information for you to know:&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;EF by default uses SQL-Server’s default isolation mode, which is &lt;a href="http://msdn.microsoft.com/en-us/library/tcbchxcb(v=vs.110).aspx"&gt;Read Committed&lt;/a&gt;. Something to know about read-committed reads is that by default it performs the reads using shared locks which will block reads of modified data.(Unless you use the setting &lt;a href="http://msdn.microsoft.com/en-us/library/ms173763.aspx"&gt;READ_COMMITTED_SNAPSHOT&lt;/a&gt; and set it to on).&lt;/li&gt;    &lt;li&gt;When EF performs a SaveChanges, it implicitly uses a transaction. This by default will be Read Committed.&lt;/li&gt;    &lt;li&gt;&lt;strong&gt;But&lt;/strong&gt;, if EF finds an ambient transaction, it will use that transaction.&lt;/li&gt;    &lt;li&gt;So you can override the isolation level by using a transaction.&lt;/li&gt;    &lt;li&gt;&lt;strong&gt;But, &lt;/strong&gt;remember, by default transactions in .Net use “Serializable” isolation level, which is the &lt;strong&gt;MOST&lt;/strong&gt; restrictive transaction isolation level.&lt;/li&gt;    &lt;li&gt;So, its important to use a transaction, that uses an isolation level that makes sense for your operation. Here is an example:&lt;/li&gt;    &lt;ul&gt;     &lt;li&gt;&lt;font face="Courier New"&gt;using (var transactionScope = new TransactionScope(TransactionScopeOption.Required, new TransactionOptions { &lt;strong&gt;IsolationLevel= IsolationLevel.Snapshot&lt;/strong&gt; }))          &lt;br /&gt;{          &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; // update some tables using entity framework          &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; context.SaveChanges();          &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;strong&gt;transactionScope.Complete();&lt;/strong&gt;          &lt;br /&gt;}&lt;/font&gt;&lt;/li&gt;   &lt;/ul&gt;    &lt;li&gt;I am using IsolationLevel.Snapshot in the above transaction to reduce the possibility of deadlocks. The reason for this can be seen in this paragraph from &lt;a href="http://msdn.microsoft.com/en-us/library/tcbchxcb(v=VS.80).aspx"&gt;MSDN’s documentation&lt;/a&gt;:&lt;/li&gt;    &lt;ul&gt;     &lt;li&gt;&lt;em&gt;SNAPSHOT isolation specifies that data read within a transaction will never reflect changes made by other simultaneous transactions. The transaction uses the data row versions that exist when the transaction begins. &lt;strong&gt;No locks are placed on the data when it is read, so SNAPSHOT transactions do not block other transactions from writing data&lt;/strong&gt;. Transactions that write data do not block snapshot transactions from reading data. You need to enable snapshot isolation by setting the ALLOW_SNAPSHOT_ISOLATION database option in order to use it.&lt;/em&gt;&lt;/li&gt;   &lt;/ul&gt; &lt;/ol&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;u&gt;MSDN&lt;/u&gt;&lt;/strong&gt;:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Deadlocking: &lt;a href="http://msdn.microsoft.com/en-us/library/ms177433.aspx"&gt;http://msdn.microsoft.com/en-us/library/ms177433.aspx&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;Making it real: Connections, Transactions, Performance and More: &lt;a href="http://msdn.microsoft.com/en-us/library/orm-9780596520281-01-16.aspx"&gt;http://msdn.microsoft.com/en-us/library/orm-9780596520281-01-16.aspx&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;Minimizing deadlocks: &lt;a href="http://msdn.microsoft.com/en-us/library/ms191242.aspx"&gt;http://msdn.microsoft.com/en-us/library/ms191242.aspx&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;Set Transaction Isolation:&lt;a href="http://msdn.microsoft.com/en-us/library/ms173763.aspx"&gt;http://msdn.microsoft.com/en-us/library/ms173763.aspx&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;IsolationLevel enumeration:&lt;a href="http://msdn.microsoft.com/en-us/library/system.data.isolationlevel.aspx"&gt;http://msdn.microsoft.com/en-us/library/system.data.isolationlevel.aspx&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;Using Snapshot Isolation: &lt;a href="http://msdn.microsoft.com/en-us/library/tcbchxcb(v=VS.80).aspx"&gt;http://msdn.microsoft.com/en-us/library/tcbchxcb(v=VS.80).aspx&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/7656888-2558398744258274996?l=blog.aggregatedintelligence.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/a5kzLTZCHc1HiTWb5SPJ0Gi5mVc/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/a5kzLTZCHc1HiTWb5SPJ0Gi5mVc/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/a5kzLTZCHc1HiTWb5SPJ0Gi5mVc/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/a5kzLTZCHc1HiTWb5SPJ0Gi5mVc/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.aggregatedintelligence.com/feeds/2558398744258274996/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=7656888&amp;postID=2558398744258274996&amp;isPopup=true" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7656888/posts/default/2558398744258274996?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7656888/posts/default/2558398744258274996?v=2" /><link rel="alternate" type="text/html" href="http://blog.aggregatedintelligence.com/2012/04/sql-server-transaction-isolation-and.html" title="Sql Server, Transaction Isolation and Entity Framework" /><author><name>Raj Rao</name><uri>https://profiles.google.com/105969740227516948072</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh5.googleusercontent.com/-tDfz18sw7k8/AAAAAAAAAAI/AAAAAAAAAAA/lfehvy89gFY/s512-c/photo.jpg" /></author><thr:total>0</thr:total></entry><entry gd:etag="W/&quot;CU4FQXs-eSp7ImA9WhVQFUo.&quot;"><id>tag:blogger.com,1999:blog-7656888.post-3471717920499448773</id><published>2012-04-04T15:11:00.001-06:00</published><updated>2012-04-04T15:11:50.551-06:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-04-04T15:11:50.551-06:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="ASP.Net" /><title>ThrowIfMaxHttpCollectionKeysExceeded exception being thrown by an Asp.Net website</title><content type="html">&lt;p&gt;One of our Asp.Net websites started throwing an “ThrowIfMaxHttpCollectionKeysExceeded” exception with message that looked like this:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;“Operation is not valid due to the current state of the object”&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;It turns out that in late december (2011), Microsoft put out a patch for a DOS vulnerability. This patch limits many different collections to a value of 1000. (One of them being the number of keys allowed in the HttpCollection).&lt;/p&gt;  &lt;p&gt;To fix it, you need to up the limit to a number that’s reasonable for your application, using the following configuration setting:&lt;/p&gt;  &lt;pre&gt;&amp;lt;configuration&amp;gt;
&lt;strong&gt;  &amp;lt;appSettings&amp;gt;
    &amp;lt;add key=&amp;quot;aspnet:MaxHttpCollectionKeys&amp;quot; value=&amp;quot;&lt;font style="background-color: #ffff00"&gt;1000&lt;/font&gt;&amp;quot; /&amp;gt;
  &amp;lt;/appSettings&amp;gt;&lt;/strong&gt;
&amp;lt;/configuration&amp;gt;&lt;/pre&gt;

&lt;p&gt;&lt;strong&gt;Notes:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Microsoft Security Bulletin MS 11-100: &lt;a href="http://technet.microsoft.com/en-us/security/bulletin/ms11-100"&gt;http://technet.microsoft.com/en-us/security/bulletin/ms11-100&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;An ASP.Net request that has lots of form keys… fails with an exception: &lt;a href="http://support.microsoft.com/kb/2661403"&gt;http://support.microsoft.com/kb/2661403&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/7656888-3471717920499448773?l=blog.aggregatedintelligence.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/VVpuaAblijo6LdSP9rVkIyjC3ek/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/VVpuaAblijo6LdSP9rVkIyjC3ek/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/VVpuaAblijo6LdSP9rVkIyjC3ek/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/VVpuaAblijo6LdSP9rVkIyjC3ek/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.aggregatedintelligence.com/feeds/3471717920499448773/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=7656888&amp;postID=3471717920499448773&amp;isPopup=true" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7656888/posts/default/3471717920499448773?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7656888/posts/default/3471717920499448773?v=2" /><link rel="alternate" type="text/html" href="http://blog.aggregatedintelligence.com/2012/04/throwifmaxhttpcollectionkeysexceeded.html" title="ThrowIfMaxHttpCollectionKeysExceeded exception being thrown by an Asp.Net website" /><author><name>Raj Rao</name><uri>https://profiles.google.com/105969740227516948072</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh5.googleusercontent.com/-tDfz18sw7k8/AAAAAAAAAAI/AAAAAAAAAAA/lfehvy89gFY/s512-c/photo.jpg" /></author><thr:total>0</thr:total></entry><entry gd:etag="W/&quot;D0YESX47eyp7ImA9WhVREUQ.&quot;"><id>tag:blogger.com,1999:blog-7656888.post-2910471680701447110</id><published>2012-03-19T16:11:00.001-06:00</published><updated>2012-03-19T16:11:48.003-06:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-03-19T16:11:48.003-06:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Dynamics CRM" /><title>Unable to reassign some CRM records after upgrade to 2011</title><content type="html">&lt;p&gt;I started having a weird issue where records for some CRM entities could not be reassigned to other users (behavior in CRM 4.0), I was able to only reassign the records to users (shown in the screen shot below – notice “Look for” is defaulted to “Team” and its value cannot be changed.)&lt;/p&gt;  &lt;p&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://lh6.ggpht.com/-w3ixEohkkco/T2evCqugR4I/AAAAAAAAMgY/esjd42grvoI/image%25255B4%25255D.png?imgmax=800" width="344" height="232" /&gt;&lt;/p&gt;  &lt;p&gt;What was odd was that this behavior was not consistent across all entities. It was occurring on the Account, Contact, Opportunity entities. But it was not happening on Lead and some other entities.&lt;/p&gt;  &lt;p&gt;When I exported the Lead entity and compared it with the Account entity (compared the customizations.xml file), one thing that jumped out at me was that there was an additional LookupType that was set for the Lead entity:&lt;/p&gt;  &lt;table border="1" cellspacing="0" cellpadding="2" width="400"&gt;&lt;tbody&gt;     &lt;tr&gt;       &lt;td valign="top" width="200"&gt;&lt;a href="http://lh4.ggpht.com/-PFULZQ0YcLk/T2evDcaPopI/AAAAAAAAMgg/M6G-Sk8fAd8/s1600-h/image%25255B11%25255D.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://lh4.ggpht.com/-LgoCheAYMsM/T2evETm7vsI/AAAAAAAAMgo/5x3ehKhKcSk/image_thumb%25255B3%25255D.png?imgmax=800" width="463" height="197" /&gt;&lt;/a&gt;&lt;/td&gt;        &lt;td valign="top" width="200"&gt;&lt;a href="http://lh6.ggpht.com/-rgwUapdnH5o/T2evFdj5txI/AAAAAAAAMgw/nAedXPAG97w/s1600-h/image%25255B15%25255D.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://lh6.ggpht.com/-77uAzW5Pn_k/T2evGXEVTHI/AAAAAAAAMg4/-EHZ6Z1lW48/image_thumb%25255B5%25255D.png?imgmax=800" width="404" height="197" /&gt;&lt;/a&gt;&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="200"&gt;Lead customization.xml file&lt;/td&gt;        &lt;td valign="top" width="200"&gt;Account customization.xml&lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt;&lt;/table&gt;  &lt;p&gt;So I copied the LookupTypes from the lead file to the account customization file and voila! it worked.&lt;/p&gt;  &lt;p&gt;Some other things that you need to do to complete the fix:&lt;/p&gt;  &lt;p&gt;1. as shown above add the LookupType 8 to the LookUpTypes collection under “EntityInfo\Entity\Attributes\Attribute” node.    &lt;br /&gt;As I was working with the Account entity, in your XML look for EntityInfo with Name = “Account” and the nested Attribute with PhysicalName = “ownerid”.&lt;/p&gt;  &lt;p&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;LookupTypes&amp;gt;   &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;LookupType id=&amp;quot;00000000-0000-0000-0000-000000000000&amp;quot;&amp;gt;8&amp;lt;/LookupType&amp;gt;    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;LookupType id=&amp;quot;00000000-0000-0000-0000-000000000000&amp;quot;&amp;gt;9&amp;lt;/LookupType&amp;gt;    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;/LookupTypes&amp;gt;&lt;/p&gt;  &lt;p&gt;2. Next under “EntityRelationships” for an “EntityRelationship” node that references AttributeName “OwnerId” (this will be “owner_accounts” for the owner entity). You need to update the “Lookuptypes” attribute to support both 8 and 9 values, as shown below:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&amp;lt;field name=&amp;quot;ownerid&amp;quot; requiredlevel=&amp;quot;systemrequired&amp;quot; imemode=&amp;quot;auto&amp;quot; lookupstyle=&amp;quot;single&amp;quot; lookupbrowse=&amp;quot;0&amp;quot; &lt;strong&gt;lookuptypes=&amp;quot;8, 9&amp;quot;&lt;/strong&gt;&amp;gt;&lt;/p&gt;    &lt;p&gt;&lt;a href="http://lh4.ggpht.com/-2UXkmIYADkE/T2evHgI-GSI/AAAAAAAAMhA/YaSrHUc24ss/s1600-h/image%25255B19%25255D.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://lh4.ggpht.com/-wy9tEJfIiKY/T2evIrOKitI/AAAAAAAAMhI/HYOPQZkjszU/image_thumb%25255B7%25255D.png?imgmax=800" width="780" height="159" /&gt;&lt;/a&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;Import the customization file and you should now be able to select Team or Users.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;If you want to restrict the lookup to only users (and not users and teams), just replace the value of “9” to a value of “8” at both the “&lt;strong&gt;Attribute&lt;/strong&gt;” level and the &amp;quot;&lt;strong&gt;EntityRelationship&lt;/strong&gt;” level.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7656888-2910471680701447110?l=blog.aggregatedintelligence.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/QZb7SbTScFSC8n5zxtY3CSMjKtY/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/QZb7SbTScFSC8n5zxtY3CSMjKtY/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/QZb7SbTScFSC8n5zxtY3CSMjKtY/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/QZb7SbTScFSC8n5zxtY3CSMjKtY/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.aggregatedintelligence.com/feeds/2910471680701447110/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=7656888&amp;postID=2910471680701447110&amp;isPopup=true" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7656888/posts/default/2910471680701447110?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7656888/posts/default/2910471680701447110?v=2" /><link rel="alternate" type="text/html" href="http://blog.aggregatedintelligence.com/2012/03/unable-to-reassign-some-crm-records.html" title="Unable to reassign some CRM records after upgrade to 2011" /><author><name>Raj Rao</name><uri>https://profiles.google.com/105969740227516948072</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh5.googleusercontent.com/-tDfz18sw7k8/AAAAAAAAAAI/AAAAAAAAAAA/lfehvy89gFY/s512-c/photo.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://lh6.ggpht.com/-w3ixEohkkco/T2evCqugR4I/AAAAAAAAMgY/esjd42grvoI/s72-c/image%25255B4%25255D.png?imgmax=800" height="72" width="72" /><thr:total>0</thr:total></entry><entry gd:etag="W/&quot;DUIARHs6fCp7ImA9WhVREE0.&quot;"><id>tag:blogger.com,1999:blog-7656888.post-5275802852131158591</id><published>2012-03-17T12:00:00.001-06:00</published><updated>2012-03-17T12:05:45.514-06:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-03-17T12:05:45.514-06:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Dynamics CRM" /><title>CRM 2011 Ribbon: Disabling/Enabling elements based on form fields</title><content type="html">&lt;p&gt;If you need to enable disable a ribbon control based on the value within a form field, you need to use the “&lt;strong&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/gg334317.aspx"&gt;ValueRule&lt;/a&gt;&lt;/strong&gt;”&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Gotcha: &lt;/strong&gt;Don’t use the default value element of the “ValueRule” as that seems to interfere with the null value check.&lt;/p&gt;  &lt;p&gt;Here is a very simple example:&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;1. First create the enable rule:&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&amp;lt;EnableRules&amp;gt;   &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;EnableRule Id=&amp;quot;&lt;strong&gt;&lt;font color="#ff0000"&gt;Mscrm.Isv.opportunity.Form.Actions.MyButton.EnableRule&lt;/font&gt;&lt;/strong&gt;&amp;quot;&amp;gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;ValueRule Field=&amp;quot;&lt;strong&gt;&lt;font style="background-color: #ffff00"&gt;fieldNameOnOpportunityPage&lt;/font&gt;&lt;/strong&gt;&amp;quot; Value=&amp;quot;null&amp;quot;    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; InvertResult=&amp;quot;false&amp;quot; /&amp;gt;    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;/EnableRule&amp;gt;    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &amp;lt;/EnableRules&amp;gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;2. Next reference the enable rule via its ID in your command definition:&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&amp;lt;CommandDefinition Id=&amp;quot;&lt;strong&gt;&lt;font color="#ff0000"&gt;Mscrm.Isv.opportunity.Form.Actions.MyCommand&lt;/font&gt;&lt;/strong&gt;&amp;quot;&amp;gt;    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;EnableRules&amp;gt;    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;EnableRule Id=&amp;quot;&lt;strong&gt;&lt;font style="background-color: #ffff00"&gt;Mscrm.Isv.opportunity.Form.Actions.CreateNewProposal.EnableRule&lt;/font&gt;&lt;/strong&gt;&amp;quot; /&amp;gt;    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;/EnableRules&amp;gt;    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;DisplayRules/&amp;gt;    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;Actions/&amp;gt;    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &amp;lt;/CommandDefinition&amp;gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;3. And in your button, you reference the command definition, by its ID&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&amp;lt;Button Id=&amp;quot;Mscrm.Isv.opportunity.Form.Actions.MyButton&amp;quot;   &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Command=&amp;quot;&lt;strong&gt;&lt;font style="background-color: #ffff00"&gt;Mscrm.Isv.opportunity.Form.Actions.MyCommand&lt;/font&gt;&lt;/strong&gt;&amp;quot;    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; LabelText=&amp;quot;&lt;font style="background-color: #ffff00"&gt;&lt;strong&gt;$LocLabels:Mscrm.Isv.opportunity.Form.Actions.MyCommand.LocLabel&lt;/strong&gt;&lt;/font&gt;&amp;quot;    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ToolTipTitle=&amp;quot;&lt;strong&gt;$LocLabels:Mscrm.Isv.opportunity.Form.Actions.MyCommand.LocLabel&lt;/strong&gt;&amp;quot;    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ToolTipDescription=&amp;quot;&lt;strong&gt;$LocLabels:Mscrm.Isv.opportunity.Form.Actions.MyCommand.ToolTip.LocLabel&lt;/strong&gt;&amp;quot;    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Image16by16=&amp;quot;/_imgs/ico_18_acct.gif&amp;quot;    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Image32by32=&amp;quot;/_imgs/ico_18_acct.gif&amp;quot;    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Image16by16Class=&amp;quot;ms-crm-Upgraded-Ribbon-Image16&amp;quot;    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Image32by32Class=&amp;quot;ms-crm-Upgraded-Ribbon-Image32&amp;quot;    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Sequence=&amp;quot;10&amp;quot; TemplateAlias=&amp;quot;o1&amp;quot; /&amp;gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;4. Finally, add the LocLabels for your button and you are done:&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&amp;lt;LocLabels&amp;gt;   &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &amp;lt;LocLabel Id=&amp;quot;&lt;strong&gt;&lt;font color="#ff0000"&gt;Mscrm.Isv.opportunity.Form.Actions.MyCommand.LocLabel&lt;/font&gt;&lt;/strong&gt;&amp;quot;&amp;gt;    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;Titles&amp;gt;    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;Title languagecode=&amp;quot;1033&amp;quot;    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; description=&amp;quot;Create NCM Proposal&amp;quot; /&amp;gt;    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;/Titles&amp;gt;    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &amp;lt;/LocLabel&amp;gt;    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &amp;lt;LocLabel Id=&amp;quot;&lt;strong&gt;&lt;font color="#ff0000"&gt;Mscrm.Isv.opportunity.Form.Actions.MyCommand.ToolTip.LocLabel&lt;/font&gt;&lt;/strong&gt;&amp;quot;&amp;gt;    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;Titles&amp;gt;    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;Title languagecode=&amp;quot;1033&amp;quot;    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; description=&amp;quot;Create a New Proposal&amp;quot; /&amp;gt;    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;/Titles&amp;gt;    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &amp;lt;/LocLabel&amp;gt;    &lt;br /&gt;&amp;lt;/LocLabels&amp;gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;u&gt;Here is the complete example:&lt;/u&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;The demo also shows you how to create a custom group and add it to the “Main Tab” of the “Opportunity” entity. The button that I add “MyDemoButton” is added to the custom group “Demo Group”.&lt;/p&gt;  &lt;p&gt;&lt;font face="Courier New"&gt;&amp;lt;RibbonDiffXml&amp;gt;     &lt;br /&gt;&amp;#160; &amp;lt;CustomActions&amp;gt;      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &amp;lt;!--Raj--&amp;gt;      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &amp;lt;CustomAction Id=&amp;quot;Mscrm.Isv.opportunity.Form.Group.Demo.MaxSize.CustomAction&amp;quot;      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; Location=&amp;quot;Mscrm.Form.opportunity.MainTab.Scaling._children&amp;quot;      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; Sequence=&amp;quot;150&amp;quot;&amp;gt;      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;CommandUIDefinition&amp;gt;      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;MaxSize Id=&amp;quot;Mscrm.Isv.opportunity.Form.Group.Demo.MaxSize&amp;quot;      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; GroupId=&amp;quot;Mscrm.Isv.opportunity.Form.Group.Demo.Group&amp;quot;      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Sequence=&amp;quot;21&amp;quot; Size=&amp;quot;LargeLarge&amp;quot; /&amp;gt;      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;/CommandUIDefinition&amp;gt;      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &amp;lt;/CustomAction&amp;gt;      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &amp;lt;CustomAction Id=&amp;quot;Mscrm.Isv.opportunity.Form.Group.Demo.CustomAction&amp;quot;      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; Location=&amp;quot;Mscrm.Form.opportunity.MainTab.Groups._children&amp;quot;      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; Sequence=&amp;quot;115&amp;quot;&amp;gt;      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;CommandUIDefinition&amp;gt;      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;Group Id=&amp;quot;Mscrm.Isv.opportunity.Form.Group.Demo.Group&amp;quot;      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Command=&amp;quot;Mscrm.Isv.opportunity.Form.Group.Demo.Command&amp;quot;      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Title=&amp;quot;$LocLabels:Mscrm.Isv.opportunity.Form.Group.Demo.Title&amp;quot;      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Sequence=&amp;quot;110&amp;quot; Template=&amp;quot;Mscrm.Templates.Flexible2&amp;quot;&amp;gt;      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;Controls Id=&amp;quot;Mscrm.Isv.opportunity.Form.Group.Demo.Controls&amp;quot;&amp;gt;      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;Button Id=&amp;quot;Mscrm.Isv.opportunity.Form.Actions.MyDemoButton&amp;quot;      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Command=&amp;quot;Mscrm.Isv.opportunity.Form.Actions.MyDemoButton&amp;quot;      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; LabelText=&amp;quot;$LocLabels:Mscrm.Isv.opportunity.Form.Actions.MyDemoButton.LocLabel&amp;quot;      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ToolTipTitle=&amp;quot;$LocLabels:Mscrm.Isv.opportunity.Form.Actions.MyDemoButton.LocLabel&amp;quot;      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ToolTipDescription=&amp;quot;$LocLabels:Mscrm.Isv.opportunity.Form.Actions.MyDemoButton.ToolTip.LocLabel&amp;quot;      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Image16by16=&amp;quot;/_imgs/ico_18_acct.gif&amp;quot;      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Image32by32=&amp;quot;/_imgs/ico_18_acct.gif&amp;quot;      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Image16by16Class=&amp;quot;ms-crm-Upgraded-Ribbon-Image16&amp;quot;      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Image32by32Class=&amp;quot;ms-crm-Upgraded-Ribbon-Image32&amp;quot;      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Sequence=&amp;quot;10&amp;quot; TemplateAlias=&amp;quot;o1&amp;quot; /&amp;gt;      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;/Controls&amp;gt;      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;/Group&amp;gt;      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;/CommandUIDefinition&amp;gt;      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &amp;lt;/CustomAction&amp;gt;      &lt;br /&gt;&amp;#160; &amp;lt;/CustomActions&amp;gt;      &lt;br /&gt;&amp;#160; &amp;lt;Templates&amp;gt;      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &amp;lt;RibbonTemplates Id=&amp;quot;Mscrm.Templates&amp;quot;&amp;gt;&amp;lt;/RibbonTemplates&amp;gt;      &lt;br /&gt;&amp;#160; &amp;lt;/Templates&amp;gt;      &lt;br /&gt;&amp;#160; &amp;lt;CommandDefinitions&amp;gt;      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &amp;lt;CommandDefinition Id=&amp;quot;Mscrm.Isv.opportunity.Form.Group.Demo.Command&amp;quot;&amp;gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face="Courier New"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;EnableRules /&amp;gt;     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;DisplayRules /&amp;gt;      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;Actions /&amp;gt;      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &amp;lt;/CommandDefinition&amp;gt;      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &amp;lt;CommandDefinition Id=&amp;quot;Mscrm.Isv.opportunity.Form.Actions.MyDemoButton&amp;quot;&amp;gt;      &lt;br /&gt;&lt;/font&gt;&lt;font face="Courier New"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;EnableRules&amp;gt;     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;EnableRule Id=&amp;quot;Mscrm.Isv.opportunity.Form.Actions.MyDemoButton.EnableRule&amp;quot; /&amp;gt;      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;/EnableRules&amp;gt;      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;DisplayRules&amp;gt;      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;DisplayRule Id=&amp;quot;Mscrm.Isv.opportunity.Form.Actions.MyDemoButton&amp;quot; /&amp;gt;      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;/DisplayRules&amp;gt;      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;Actions&amp;gt;      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;Url Address=&amp;quot;&lt;/font&gt;&lt;a href="http://www.google.com&amp;quot;"&gt;&lt;font face="Courier New"&gt;http://www.google.com&amp;quot;&lt;/font&gt;&lt;/a&gt;&lt;font face="Courier New"&gt; /&amp;gt;     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;/Actions&amp;gt;      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &amp;lt;/CommandDefinition&amp;gt;      &lt;br /&gt;&amp;#160; &amp;lt;/CommandDefinitions&amp;gt;      &lt;br /&gt;&amp;#160; &amp;lt;RuleDefinitions&amp;gt;      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &amp;lt;TabDisplayRules&amp;gt;&amp;lt;/TabDisplayRules&amp;gt;      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &amp;lt;DisplayRules&amp;gt;      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;DisplayRule Id=&amp;quot;Mscrm.Isv.opportunity.Form.Actions.MyDemoButton&amp;quot;&amp;gt;      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;CrmOfflineAccessStateRule State=&amp;quot;Offline&amp;quot;      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; InvertResult=&amp;quot;true&amp;quot; /&amp;gt;      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;/DisplayRule&amp;gt;      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &amp;lt;/DisplayRules&amp;gt;      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &amp;lt;EnableRules&amp;gt;      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;EnableRule Id=&amp;quot;Mscrm.Isv.opportunity.Form.Actions.MyDemoButton.EnableRule&amp;quot;&amp;gt;      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;ValueRule Field=&amp;quot;Demo_fieldOnFormId&amp;quot; Value=&amp;quot;null&amp;quot;      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; InvertResult=&amp;quot;false&amp;quot; /&amp;gt; &amp;lt;!--replace demo_fieldOnFormId with an actual id--&amp;gt;      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;/EnableRule&amp;gt;      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &amp;lt;/EnableRules&amp;gt;      &lt;br /&gt;&amp;#160; &amp;lt;/RuleDefinitions&amp;gt;      &lt;br /&gt;&amp;#160; &amp;lt;LocLabels&amp;gt;      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &amp;lt;LocLabel Id=&amp;quot;Mscrm.Isv.opportunity.Form.Actions.MyDemoButton.LocLabel&amp;quot;&amp;gt;      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;Titles&amp;gt;      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;Title languagecode=&amp;quot;1033&amp;quot;      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; description=&amp;quot;This is a demo command&amp;quot; /&amp;gt;      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;/Titles&amp;gt;      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &amp;lt;/LocLabel&amp;gt;      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &amp;lt;LocLabel Id=&amp;quot;Mscrm.Isv.opportunity.Form.Actions.MyDemoButton.ToolTip.LocLabel&amp;quot;&amp;gt;      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;Titles&amp;gt;      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;Title languagecode=&amp;quot;1033&amp;quot;      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; description=&amp;quot;This is a demo command&amp;quot; /&amp;gt;      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;/Titles&amp;gt;      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &amp;lt;/LocLabel&amp;gt;      &lt;br /&gt;&lt;/font&gt;&lt;font face="Courier New"&gt;&amp;#160;&amp;#160;&amp;#160; &amp;lt;LocLabel Id=&amp;quot;Mscrm.Isv.opportunity.Form.Group.Demo.Title&amp;quot;&amp;gt;     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;Titles&amp;gt;      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;Title languagecode=&amp;quot;1033&amp;quot; description=&amp;quot;Demo Group&amp;quot; /&amp;gt;      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;/Titles&amp;gt;      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &amp;lt;/LocLabel&amp;gt;&lt;font face="Courier New"&gt;       &lt;br /&gt;&amp;#160; &amp;lt;/LocLabels&amp;gt;        &lt;br /&gt;&amp;lt;/RibbonDiffXml&amp;gt;        &lt;br /&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7656888-5275802852131158591?l=blog.aggregatedintelligence.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/dlbaQTqJCKjzjz9lOgdmqD_896w/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/dlbaQTqJCKjzjz9lOgdmqD_896w/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/dlbaQTqJCKjzjz9lOgdmqD_896w/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/dlbaQTqJCKjzjz9lOgdmqD_896w/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.aggregatedintelligence.com/feeds/5275802852131158591/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=7656888&amp;postID=5275802852131158591&amp;isPopup=true" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7656888/posts/default/5275802852131158591?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7656888/posts/default/5275802852131158591?v=2" /><link rel="alternate" type="text/html" href="http://blog.aggregatedintelligence.com/2012/03/crm-2011-ribbon-disablingenabling.html" title="CRM 2011 Ribbon: Disabling/Enabling elements based on form fields" /><author><name>Raj Rao</name><uri>https://profiles.google.com/105969740227516948072</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh5.googleusercontent.com/-tDfz18sw7k8/AAAAAAAAAAI/AAAAAAAAAAA/lfehvy89gFY/s512-c/photo.jpg" /></author><thr:total>0</thr:total></entry><entry gd:etag="W/&quot;A0UHSXgzcSp7ImA9WhVSGUQ.&quot;"><id>tag:blogger.com,1999:blog-7656888.post-2942697518016391852</id><published>2012-03-16T13:20:00.001-06:00</published><updated>2012-03-17T09:47:18.689-06:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-03-17T09:47:18.689-06:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Dynamics CRM" /><title>Editing CRM 2011 “Customizations.Xml” in VisualStudio</title><content type="html">&lt;p&gt;AKA “Enabling intellisense in Visual Studio for editing the Customizations.xml file”&lt;/p&gt;  &lt;p&gt;Download the CRM 2011 SDK. In the SDK you will find a folder called “Schemas”.&lt;/p&gt;  &lt;p&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://lh6.ggpht.com/-UzIDrziuSoo/T2OShYQJlAI/AAAAAAAAMcA/axlgWRB1GeQ/image%25255B4%25255D.png?imgmax=800" width="295" height="363" /&gt;&lt;/p&gt;  &lt;p&gt;Open the “customizations.xml” from the solutions package that you exported out of CRM in Visual Studio. Press the “F4” button (or go to the “Properties” window). Click in Schemas:&lt;/p&gt;  &lt;p&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://lh5.ggpht.com/-5UZpD2dBnkc/T2OSh-pupNI/AAAAAAAAMcI/66FYU8WVj50/image%25255B8%25255D.png?imgmax=800" width="244" height="103" /&gt;&lt;/p&gt;  &lt;p&gt;Add the “customizationssolution.xsd” schema, and after that you should have intellisense!&lt;/p&gt;  &lt;p&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://lh4.ggpht.com/-7nj1w-II-Zc/T2OSiJCYGSI/AAAAAAAAMcQ/uUx8Hoiv0co/image%25255B15%25255D.png?imgmax=800" width="244" height="143" /&gt;&amp;#160;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://lh5.ggpht.com/-98dbtJWzeOg/T2OSiTCYrmI/AAAAAAAAMcY/8drlXav9fJE/image%25255B16%25255D.png?imgmax=800" width="244" height="149" /&gt;&lt;/p&gt;  &lt;p&gt;Note: in case schema intellisense does not work for you, try adding the following schemas in addition to “customizationsSolution.xsd” file:&lt;/p&gt; fetch.xsd  &lt;br /&gt;formxml.xsd  &lt;br /&gt;isv.config.xsd  &lt;br /&gt;ribboncore.xsd  &lt;br /&gt;ribbontypes.xsd  &lt;br /&gt;ribbonwss.xsd  &lt;br /&gt;sitemaptype.xsd  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7656888-2942697518016391852?l=blog.aggregatedintelligence.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/wxCvJ_hVvZIgUUF2d1h09vzh1YY/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/wxCvJ_hVvZIgUUF2d1h09vzh1YY/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/wxCvJ_hVvZIgUUF2d1h09vzh1YY/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/wxCvJ_hVvZIgUUF2d1h09vzh1YY/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.aggregatedintelligence.com/feeds/2942697518016391852/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=7656888&amp;postID=2942697518016391852&amp;isPopup=true" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7656888/posts/default/2942697518016391852?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7656888/posts/default/2942697518016391852?v=2" /><link rel="alternate" type="text/html" href="http://blog.aggregatedintelligence.com/2012/03/editing-crm-2011-customizationsxml-in.html" title="Editing CRM 2011 “Customizations.Xml” in VisualStudio" /><author><name>Raj Rao</name><uri>https://profiles.google.com/105969740227516948072</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh5.googleusercontent.com/-tDfz18sw7k8/AAAAAAAAAAI/AAAAAAAAAAA/lfehvy89gFY/s512-c/photo.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://lh6.ggpht.com/-UzIDrziuSoo/T2OShYQJlAI/AAAAAAAAMcA/axlgWRB1GeQ/s72-c/image%25255B4%25255D.png?imgmax=800" height="72" width="72" /><thr:total>0</thr:total></entry><entry gd:etag="W/&quot;CkQDQnw_fyp7ImA9WhVSF0o.&quot;"><id>tag:blogger.com,1999:blog-7656888.post-479702942162746253</id><published>2012-03-14T18:12:00.001-06:00</published><updated>2012-03-14T18:12:53.247-06:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-03-14T18:12:53.247-06:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Dynamics CRM" /><title>CRM 2011 Ribbon Customization</title><content type="html">&lt;p&gt;&lt;a href="http://dynamicscrm2011.wordpress.com"&gt;Siva&lt;/a&gt; has written almost &lt;a href="http://dynamicscrm2011.wordpress.com/category/crm-2011-ribbon-customization/"&gt;12 different posts on different aspects of CRM 2011 ribbon customization&lt;/a&gt;. As I could not find all the links in one place, here is the list:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://dynamicscrm2011.wordpress.com/2011/04/05/ribbon-customization/"&gt;Ribbon Customization Part 1&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://dynamicscrm2011.wordpress.com/2011/04/12/ms-dynamics-crm-2011-ribbon-customization-part-i-add-a-custom-tab-to-microsoft-dynamics-crm-2011-ribbon/"&gt;Ribbon customization Part 1 – add a custom tab&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://dynamicscrm2011.wordpress.com/2011/04/12/ms-dynamics-crm-2011-ribbon-customization-part-2-understanding-the-ribbon-customization/"&gt;Ribbon customization Part 2 – understanding the ribbon customization&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://dynamicscrm2011.wordpress.com/2011/04/13/ribbon-customization-part-3-add-a-custom-tab-to-a-specific-entityopportunity-entity/"&gt;Ribbon customization Part 3 – Add a custom tab to a specific entity&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://dynamicscrm2011.wordpress.com/2011/04/27/ribbon-customization-part-4-add-a-custom-tab-custom-group-and-custom-buttons-to-a-specific-entityopportunity-entity/"&gt;Ribbon customization Part 4 – Add a custom tab, custom group and custom group and custom buttons to a grid ribbon for a specific entity&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://dynamicscrm2011.wordpress.com/2011/04/27/ribbon-customization-part-5-add-a-custom-tab-custom-group-and-custom-buttons-to-a-form-ribbon-for-a-specific-entityopportunity-entity/"&gt;Ribbon customization Part 5 – Add a custom tab, custom group and custom buttons to a form ribbon, grid ribbon for a specific entity&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://dynamicscrm2011.wordpress.com/2011/04/28/ribbon-customization-part-6-add-a-custom-group-and-custom-buttons-to-existing-tab-for-a-specific-entityopportunity-entity/"&gt;Ribbon customization Part 6 – Add a custom group and custom buttons to existing tab for a specific entity&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://dynamicscrm2011.wordpress.com/2011/04/28/ribbon-customization-part-7-hiding-a-ribbon-button-in-dynamics-crm-2011/"&gt;Ribbon customization Part 7 – Hiding a Ribbon button&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://dynamicscrm2011.wordpress.com/2011/04/29/ribbon-customization-part-8-hiding-a-group-of-ribbon-buttons-in-dynamics-crm-2011/"&gt;Ribbon customization Part 8 – Hiding a group of ribbon buttons&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://dynamicscrm2011.wordpress.com/2011/05/02/ribbon-customization-part-9-adding-a-button-to-existing-group-for-custom-entitys-ribbon-in-dynamics-crm-2011/"&gt;Ribbon customization Part 9 – Adding a button to existing group for custom entity’s ribbon&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://Ribbon Customization Part-10-Hide &amp;lsquo;Add Existing&amp;rsquo; button in Dynamics CRM 2011"&gt;Ribbon customization Part 10 – Hide “Add Existing” button&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://dynamicscrm2011.wordpress.com/2011/05/19/ribbon-customization-part-11enabledisable-ribbon-button-based-on-security-role/"&gt;Ribbon customization Part 11 – Enable, Disable ribbon button based on security role&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://dynamicscrm2011.wordpress.com/2011/05/27/ribbon-customization-12custom-ribbon-tab-in-crm-is-now-always-selected/"&gt;Ribbon customization Part 12: Custom ribbon tab in CRM is always selected&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Siva’s index for Ribbon customization is available here, but its not upto date: &lt;a title="http://dynamicscrm2011.wordpress.com/2011/05/05/dynamics-crm-2011-ribbon-customization-index/" href="http://dynamicscrm2011.wordpress.com/2011/05/05/dynamics-crm-2011-ribbon-customization-index/"&gt;http://dynamicscrm2011.wordpress.com/2011/05/05/dynamics-crm-2011-ribbon-customization-index/&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/7656888-479702942162746253?l=blog.aggregatedintelligence.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/pICqTLvBrFloDG9eUTFRdi5SZDo/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/pICqTLvBrFloDG9eUTFRdi5SZDo/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/pICqTLvBrFloDG9eUTFRdi5SZDo/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/pICqTLvBrFloDG9eUTFRdi5SZDo/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.aggregatedintelligence.com/feeds/479702942162746253/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=7656888&amp;postID=479702942162746253&amp;isPopup=true" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7656888/posts/default/479702942162746253?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7656888/posts/default/479702942162746253?v=2" /><link rel="alternate" type="text/html" href="http://blog.aggregatedintelligence.com/2012/03/crm-2011-ribbon-customization.html" title="CRM 2011 Ribbon Customization" /><author><name>Raj Rao</name><uri>https://profiles.google.com/105969740227516948072</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh5.googleusercontent.com/-tDfz18sw7k8/AAAAAAAAAAI/AAAAAAAAAAA/lfehvy89gFY/s512-c/photo.jpg" /></author><thr:total>0</thr:total></entry><entry gd:etag="W/&quot;DUUFQ3kyeip7ImA9WhVSFko.&quot;"><id>tag:blogger.com,1999:blog-7656888.post-8868444425897165211</id><published>2012-03-13T16:20:00.001-06:00</published><updated>2012-03-13T16:20:12.792-06:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-03-13T16:20:12.792-06:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term=".NET" /><category scheme="http://www.blogger.com/atom/ns#" term="Dynamics CRM" /><title>Unable to run website that uses Microsoft.Crm.Sdk.dll after CRM 2011 upgrade</title><content type="html">&lt;p&gt;I was getting the following error when loading a website that used the Microsoft.Crm.Sdk dll (CRM 2011). The error started occurring right after I installed CRM 2011.&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;System.IO.FileLoadException: Could not load file or assembly 'Microsoft.Crm.Sdk, Version=5.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' or one of its dependencies. The located assembly's manifest definition does not match the assembly reference. (Exception from HRESULT: 0x80131040)     &lt;br /&gt;File name: 'Microsoft.Crm.Sdk, Version=5.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' ---&amp;gt; System.IO.FileLoadException: Could not load file or assembly 'Microsoft.Crm.Sdk, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' or one of its dependencies. The located assembly's manifest definition does not match the assembly reference. (Exception from HRESULT: 0x80131040)      &lt;br /&gt;File name: 'Microsoft.Crm.Sdk, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35'&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;Luckily for me, &lt;strong&gt;&lt;a href="http://support.microsoft.com/kb/2600640"&gt;CRM 2011 Update Rollup 6&lt;/a&gt;&lt;/strong&gt; was available. Installing this rollup and then restarting the CRM server fixed the issue for me.&lt;/p&gt;  &lt;p&gt;If you need a manual fix, please check David Jennaway’s post: &lt;a href="http://mscrmuk.blogspot.com/2011/02/using-crm-40-assemblies-on-crm-2011.html"&gt;http://mscrmuk.blogspot.com/2011/02/using-crm-40-assemblies-on-crm-2011.html&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/7656888-8868444425897165211?l=blog.aggregatedintelligence.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/sjMVdukVPrYD-7ZApYaGNaSgNas/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/sjMVdukVPrYD-7ZApYaGNaSgNas/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/sjMVdukVPrYD-7ZApYaGNaSgNas/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/sjMVdukVPrYD-7ZApYaGNaSgNas/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.aggregatedintelligence.com/feeds/8868444425897165211/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=7656888&amp;postID=8868444425897165211&amp;isPopup=true" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7656888/posts/default/8868444425897165211?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7656888/posts/default/8868444425897165211?v=2" /><link rel="alternate" type="text/html" href="http://blog.aggregatedintelligence.com/2012/03/unable-to-run-website-that-uses.html" title="Unable to run website that uses Microsoft.Crm.Sdk.dll after CRM 2011 upgrade" /><author><name>Raj Rao</name><uri>https://profiles.google.com/105969740227516948072</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh5.googleusercontent.com/-tDfz18sw7k8/AAAAAAAAAAI/AAAAAAAAAAA/lfehvy89gFY/s512-c/photo.jpg" /></author><thr:total>0</thr:total></entry><entry gd:etag="W/&quot;A0MHQn87eSp7ImA9WhVSFk0.&quot;"><id>tag:blogger.com,1999:blog-7656888.post-7737426303620932426</id><published>2012-03-12T21:30:00.001-06:00</published><updated>2012-03-12T21:30:33.101-06:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-03-12T21:30:33.101-06:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term=".NET" /><category scheme="http://www.blogger.com/atom/ns#" term="ASP.Net" /><category scheme="http://www.blogger.com/atom/ns#" term="iis" /><title>Could not load type “System.ServiceModel.Activation.HttpModule”</title><content type="html">&lt;p&gt;After my IIS server got some updates, it looked like I started getting the “Could not load type “System.ServiceModel.Activation.HttpModule” from assembly “System.ServiceModel, Version=3.0.0.0, Culture=neutral,PublickKeyToken=b77a5c561934e089”&lt;/p&gt;  &lt;p&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://lh3.ggpht.com/-_earoDo8v50/T16_WHEUJWI/AAAAAAAAMa0/zS9xtr584gk/image%25255B5%25255D.png?imgmax=800" width="1039" height="62" /&gt;&lt;/p&gt;  &lt;p&gt;It looked to me as though I needed to reregister Asp.Net 4.0 dlls. And AspNet_RegIIs is the answer.&lt;/p&gt;  &lt;p&gt;Run : aspnet_regiis –iru&lt;/p&gt;  &lt;p&gt;Aspnet_Regiis can be found in one of the following locations (based on your OS type)&lt;/p&gt;  &lt;p&gt;%windir%\Microsoft.NET\Framework\v4.0.30319   &lt;br /&gt;%windir%\Microsoft.NET\Framework64\v4.0.30319 (64-bit machine)&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7656888-7737426303620932426?l=blog.aggregatedintelligence.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/nPu_i1VGHs7S04HXVnO717271DM/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/nPu_i1VGHs7S04HXVnO717271DM/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/nPu_i1VGHs7S04HXVnO717271DM/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/nPu_i1VGHs7S04HXVnO717271DM/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.aggregatedintelligence.com/feeds/7737426303620932426/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=7656888&amp;postID=7737426303620932426&amp;isPopup=true" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7656888/posts/default/7737426303620932426?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7656888/posts/default/7737426303620932426?v=2" /><link rel="alternate" type="text/html" href="http://blog.aggregatedintelligence.com/2012/03/could-not-load-type-systemservicemodela.html" title="Could not load type “System.ServiceModel.Activation.HttpModule”" /><author><name>Raj Rao</name><uri>https://profiles.google.com/105969740227516948072</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh5.googleusercontent.com/-tDfz18sw7k8/AAAAAAAAAAI/AAAAAAAAAAA/lfehvy89gFY/s512-c/photo.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://lh3.ggpht.com/-_earoDo8v50/T16_WHEUJWI/AAAAAAAAMa0/zS9xtr584gk/s72-c/image%25255B5%25255D.png?imgmax=800" height="72" width="72" /><thr:total>0</thr:total></entry><entry gd:etag="W/&quot;A0EAQn8_eyp7ImA9WhVSFUU.&quot;"><id>tag:blogger.com,1999:blog-7656888.post-4209354253588238073</id><published>2012-03-12T16:00:00.001-06:00</published><updated>2012-03-12T16:00:43.143-06:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-03-12T16:00:43.143-06:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="PowerShell" /><title>PowerShell and EventLog creation</title><content type="html">&lt;p&gt;Powershell provides easy cmdlets that allow you to query event logs, as well as create and delete event log sources. But I could not find a simple cmdLet that allows you to check for the existence of an event log source.&lt;/p&gt;  &lt;p&gt;Here is what I came up with:&lt;/p&gt;  &lt;p&gt;if ( -not [System.Diagnostics.EventLog]::SourceExists($eventSourceName, $computerName))   &lt;br /&gt;{&amp;#160; &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Write-Host &amp;quot;Creating event source $eventSourceName on computer $computerName...&amp;quot;    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; New-EventLog -ComputerName $computerName -LogName Application -Source $eventSourceName    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Write-Host &amp;quot;Event source $eventSourceName successfully created on computer $computerName&amp;quot;    &lt;br /&gt;}&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7656888-4209354253588238073?l=blog.aggregatedintelligence.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/rI_GwdAvsOFVnXyXmVMjO_2KbCU/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/rI_GwdAvsOFVnXyXmVMjO_2KbCU/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/rI_GwdAvsOFVnXyXmVMjO_2KbCU/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/rI_GwdAvsOFVnXyXmVMjO_2KbCU/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.aggregatedintelligence.com/feeds/4209354253588238073/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=7656888&amp;postID=4209354253588238073&amp;isPopup=true" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7656888/posts/default/4209354253588238073?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7656888/posts/default/4209354253588238073?v=2" /><link rel="alternate" type="text/html" href="http://blog.aggregatedintelligence.com/2012/03/powershell-and-eventlog-creation.html" title="PowerShell and EventLog creation" /><author><name>Raj Rao</name><uri>https://profiles.google.com/105969740227516948072</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh5.googleusercontent.com/-tDfz18sw7k8/AAAAAAAAAAI/AAAAAAAAAAA/lfehvy89gFY/s512-c/photo.jpg" /></author><thr:total>0</thr:total></entry><entry gd:etag="W/&quot;C0ABRHY9fip7ImA9WhVSFUU.&quot;"><id>tag:blogger.com,1999:blog-7656888.post-7631693691482976755</id><published>2012-03-12T13:49:00.001-06:00</published><updated>2012-03-12T13:49:15.866-06:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-03-12T13:49:15.866-06:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Tips N Tricks" /><category scheme="http://www.blogger.com/atom/ns#" term=".NET" /><category scheme="http://www.blogger.com/atom/ns#" term="Windows" /><title>MSMQ–Security descriptor cannot be set on private queue error</title><content type="html">&lt;p&gt;If you get the “Security descriptor cannot be set” error on a private queue, then it may have to do with permissions.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh3.ggpht.com/-nHkZKyNdwA0/T15TMYbvmoI/AAAAAAAAMaA/oHCPqal420c/s1600-h/image%25255B2%25255D.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://lh4.ggpht.com/-1eBjOOO0w8w/T15TM18O97I/AAAAAAAAMaI/0_hoAaZNSlE/image_thumb.png?imgmax=800" width="244" height="132" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Here is how I solved it:&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;First thing to try:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;By changing the ownership of the queue:&lt;/p&gt;    &lt;p&gt;Right click on the queue and bring up the properties dialog.&lt;/p&gt;    &lt;p&gt;On the “Security” tab, click on “Advanced”&lt;/p&gt;    &lt;p&gt;&lt;a href="http://lh4.ggpht.com/-LxTz4mazL3U/T15TNuib-OI/AAAAAAAAMaQ/Io5korBOe9M/s1600-h/image%25255B8%25255D.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://lh3.ggpht.com/-_KcSRf7o6Zw/T15TOEsQp9I/AAAAAAAAMaY/mikJ3sn2Ewk/image_thumb%25255B2%25255D.png?imgmax=800" width="244" height="237" /&gt;&lt;/a&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;Go to the “Owners” tab, select your account and click “Ok”. This should set you up as the owner. Now try and change the settings. If this works, you are done. If not read on:&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Manually update security &lt;/strong&gt;(this is hacky and do so at your own risk):&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;Private queue information is stored on the server where MSMQ is running in the folder “&lt;strong&gt;C:\Windows\System32\msmq\storage\lqs&lt;/strong&gt;”&lt;/p&gt;    &lt;p&gt;You will have to open all the files to find the one that stores the information for your queue. The name of the queue is stored in Label field:&lt;/p&gt;    &lt;p&gt;&lt;a href="http://lh5.ggpht.com/-fq6g-yRx1Z0/T15TOVHVijI/AAAAAAAAMag/eCZxTMMzFFo/s1600-h/image%25255B5%25255D.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://lh3.ggpht.com/-t7f2Pl-Qr9c/T15TO209DOI/AAAAAAAAMao/D0yY0mFBIbM/image_thumb%25255B1%25255D.png?imgmax=800" width="224" height="52" /&gt;&lt;/a&gt;&lt;/p&gt;    &lt;p&gt;The next thing you will have to do is create a dummy queue with the security setup such that you can edit that queue. After creating that queue, open up the configuration file from the “lqs” folder for that new queue and look for the “security” field. Copy that value from the newly created queue to the old queue which you could not edit. Save that file and restart MSMQ service.&lt;/p&gt;    &lt;p&gt;You should be good to go!&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;&lt;strong&gt;Notes:&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;MSDN: &lt;a href="http://support.microsoft.com/default.aspx?scid=kb;EN-US;174307"&gt;Interpretting the file names in the storage directory of MSMQ&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/7656888-7631693691482976755?l=blog.aggregatedintelligence.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/1Qo6xHeDC-9IQLiFxjuxEExOhEM/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/1Qo6xHeDC-9IQLiFxjuxEExOhEM/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/1Qo6xHeDC-9IQLiFxjuxEExOhEM/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/1Qo6xHeDC-9IQLiFxjuxEExOhEM/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.aggregatedintelligence.com/feeds/7631693691482976755/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=7656888&amp;postID=7631693691482976755&amp;isPopup=true" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7656888/posts/default/7631693691482976755?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7656888/posts/default/7631693691482976755?v=2" /><link rel="alternate" type="text/html" href="http://blog.aggregatedintelligence.com/2012/03/msmqsecurity-descriptor-cannot-be-set.html" title="MSMQ–Security descriptor cannot be set on private queue error" /><author><name>Raj Rao</name><uri>https://profiles.google.com/105969740227516948072</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh5.googleusercontent.com/-tDfz18sw7k8/AAAAAAAAAAI/AAAAAAAAAAA/lfehvy89gFY/s512-c/photo.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://lh4.ggpht.com/-1eBjOOO0w8w/T15TM18O97I/AAAAAAAAMaI/0_hoAaZNSlE/s72-c/image_thumb.png?imgmax=800" height="72" width="72" /><thr:total>0</thr:total></entry><entry gd:etag="W/&quot;DUEFSXYyeSp7ImA9WhVREEQ.&quot;"><id>tag:blogger.com,1999:blog-7656888.post-9097949226018397642</id><published>2012-03-11T11:38:00.001-06:00</published><updated>2012-03-18T13:06:58.891-06:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-03-18T13:06:58.891-06:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Windows Phone" /><category scheme="http://www.blogger.com/atom/ns#" term="OptiRoute" /><title>OptiRoute for Windows Phone 7</title><content type="html">&lt;p&gt;&lt;a href="http://www.windowsphone.com/en-US/apps/49dc30f0-0b2a-443d-8306-d8e059bd0254"&gt;&lt;img style="background-image: none; border-right-width: 0px; margin: 0px 6px 0px 0px; padding-left: 0px; padding-right: 0px; display: inline; float: left; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="Google-Maps-icon" border="0" alt="Google-Maps-icon" align="left" src="http://lh6.ggpht.com/-D3WZwf8j6A8/T1zisLDVNXI/AAAAAAAAMUo/fj5Ue1DkF08/Google-Maps-icon%25255B5%25255D.png?imgmax=800" width="88" height="93" /&gt;&lt;/a&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: right; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="Download OptiRoute from Windows Phone store" border="0" alt="Download OptiRoute from Windows Phone store" align="right" src="http://lh3.ggpht.com/-JlKbOSSh5Nw/T2YLfXyXZ0I/AAAAAAAAMe0/N7p6N7urqRY/WP7_App_OptiRoute_-_Store_Link_201231891751%25255B8%25255D.png?imgmax=800" width="155" height="164" /&gt;Last week my latest Windows Phone 7 app got certified and became available for download on the &lt;a href="http://www.windowsphone.com/en-US/apps/49dc30f0-0b2a-443d-8306-d8e059bd0254"&gt;Windows Phone App Store&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.windowsphone.com/en-US/apps/49dc30f0-0b2a-443d-8306-d8e059bd0254"&gt;OptiRoute&lt;/a&gt; is a &lt;font style="background-color: #ffff00"&gt;&lt;strong&gt;route&lt;/strong&gt; &lt;strong&gt;opti&lt;/strong&gt;&lt;/font&gt;mization application, that “attempts” to come up with the shortest route around a set of locations that you enter. The reason that I say “attempts” is that OptiRoute uses a heuristic that allows it run very fast, but in doing so, there are cases where it may not find the most optimal route (more on that later – Check the technical background section). (&lt;em&gt;The way I deal with the cases, is that I provide you with functionality that allows you to customize the route after it has been optimized&lt;/em&gt;)&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Background:&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;When I was searching for a home to buy, I always found it hard to come up with an optimal route to visit all the homes in my list. I knew about computer algorithms like the travelling sales man problem, but could not find any implementations for use on a mobile platform (at that time I had an iPhone). One of the biggest problems with finding an optimal route around a set of locations is that its computationally intensive. And when you take into account that you are working on a mobile platform, every resource becomes that much more expensive to use.&lt;/p&gt;  &lt;p&gt;When Microsoft launched its “&lt;a href="http://www.30tolaunch.com/WindowsPhone/Home"&gt;30 to launch&lt;/a&gt;” initiative, I decided to port some early work I had done as a web-app with routing to the Windows Phone platform – &lt;strong&gt;OptiRoute&lt;/strong&gt; is the result of that initiative.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;The OptiRoute UI:&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Welcome screen:&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;The first time you load up OptiRoute you will be presented with a welcome screen, that gives you a brief overview of the functions available within OptiRoute.&lt;/p&gt;  &lt;p&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://lh3.ggpht.com/-wHHKfXIGXos/T1zismCMu_I/AAAAAAAAMUw/xbDrumww7VU/image%25255B5%25255D.png?imgmax=800" width="262" height="500" /&gt;&lt;/p&gt;  &lt;p&gt;In addition to giving you a quick introduction to the main UI, this screen also allows you to load sample locations to check out the route optimization software (you need to scroll to the bottom of the page to view the load button):&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh5.ggpht.com/-NY1_5_Jxzos/T1zisyHF0JI/AAAAAAAAMU4/X1lp0qmhds0/s1600-h/image%25255B8%25255D.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://lh6.ggpht.com/-Nqc-TPi-5BE/T1zitVE4jMI/AAAAAAAAMVA/dH_6zJFpJW8/image_thumb%25255B2%25255D.png?imgmax=800" width="244" height="140" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Once you tap the “&lt;strong&gt;Load Sample Data&lt;/strong&gt;” button, you can &lt;strong&gt;close&lt;/strong&gt; out of the “welcome screen” and you will be presented the list of locations. (&lt;strong&gt;Tip&lt;/strong&gt;: the welcome screen is only shown the first time you open OptiRoute. If you want to see it again, you can do so via the help screen). The screen showing you the list of locations is your “Home Screen”. You manage your route via this page.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Home Page (location list) and viewing your route:&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="02" border="0" alt="02" src="http://lh5.ggpht.com/-XtxPimGpGaA/T1zit0Gd7FI/AAAAAAAAMVI/6G10TY1KIb4/02%25255B5%25255D.png?imgmax=800" width="259" height="440" /&gt;&lt;/p&gt;  &lt;p&gt;Lets take a look at the route, without performing optimization. Click on the “Map Route” button &lt;a href="http://lh4.ggpht.com/-evb3WQ1iRAc/T1ziuEFnuBI/AAAAAAAAMVQ/J2C8lD4oA20/s1600-h/image%25255B22%25255D.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://lh6.ggpht.com/-Z880YlsrduE/T1ziuj3DQ1I/AAAAAAAAMVY/O0SEWqqZq9E/image_thumb%25255B9%25255D.png?imgmax=800" width="31" height="36" /&gt;&lt;/a&gt;. This will take you to the “Route Viewer” screen with a map of the route as well as detailed information on the route that you need to take.&lt;/p&gt;  &lt;p&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="05" border="0" alt="05" src="http://lh5.ggpht.com/-rYm7AM-5BN0/T1zivP7ArkI/AAAAAAAAMVg/M2AmJuChB14/05%25255B4%25255D.png?imgmax=800" width="295" height="497" /&gt;&lt;/p&gt;  &lt;p&gt;By tapping “&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://lh3.ggpht.com/-TJyEr6RP9PU/T1zivlDcTpI/AAAAAAAAMVo/qEMoO63DYUI/image%25255B29%25255D.png?imgmax=800" width="21" height="13" /&gt;”, you can change the map type from “road” to “aerial”, as well as hide or show the detailed route information. Rotating your phone will show the map in full-screen:&lt;/p&gt;  &lt;p&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://lh5.ggpht.com/-3z_7mwaKCKs/T1ziwJLsx9I/AAAAAAAAMVw/9Kp4rxNJ9-E/image%25255B34%25255D.png?imgmax=800" width="618" height="334" /&gt;&lt;/p&gt;  &lt;p&gt;Click the “back button” to return to the home screen.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Optimizing your route:&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Lets optimize the route by clicking the “Optimize Route” button &lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://lh6.ggpht.com/-TLqOUydGeu0/T1ziwcd8azI/AAAAAAAAMV4/6Uup9ZniGnQ/image%25255B40%25255D.png?imgmax=800" width="40" height="39" /&gt;. Now when you click on the “Map Route” button, you will find that the route has been optimized:&lt;/p&gt;  &lt;table border="1" cellspacing="0" cellpadding="2" width="765"&gt;&lt;tbody&gt;     &lt;tr&gt;       &lt;td valign="top" width="333"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://lh4.ggpht.com/-jODAIjHkd_4/T2YOGVa0B8I/AAAAAAAAMfI/-CkPAu7VMmI/image44%25255B2%25255D.png?imgmax=800" width="353" height="345" /&gt;&lt;/td&gt;        &lt;td valign="top" width="430"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://lh4.ggpht.com/-AEbTtttggLk/T1zixXiul8I/AAAAAAAAMfQ/9NjInkEMU-w/image47%25255B1%25255D.png?imgmax=800" width="360" height="347" /&gt;&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="333"&gt;&lt;strong&gt;Route before optimization&lt;/strong&gt;&lt;/td&gt;        &lt;td valign="top" width="430"&gt;&lt;strong&gt;Route after optimization!&lt;/strong&gt;&lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt;&lt;/table&gt;  &lt;p&gt;&lt;strong&gt;Customizing your Route:&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Now what if you want to change the starting location? Go back to the home-screen and tap and hold the location you wish to make the start of your route until a context menu is displayed:&lt;/p&gt;  &lt;p&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://lh4.ggpht.com/-M27hYF-KQ5s/T1zix8dEAKI/AAAAAAAAMWQ/8Zw9efQ9R_o/image%25255B58%25255D.png?imgmax=800" width="244" height="100" /&gt;&lt;/p&gt;  &lt;p&gt;Tapping on the “Set as Start” button will make that location the starting point in your route. As you can see from the image above, this same context menu also provides you a way to delete locations from your route.&lt;/p&gt;  &lt;p&gt;What if you want to manually change the route? You can do this using the “Reorder handles” that appear to the right of the location (highlighted in red in the image below):&lt;/p&gt;  &lt;p&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://lh3.ggpht.com/-fCm9gsjSYss/T1ziyPs2sBI/AAAAAAAAMWY/g2AWszZvCHY/image%25255B69%25255D.png?imgmax=800" width="455" height="37" /&gt;&lt;/p&gt;  &lt;p&gt;Simply tap, hold and drag that location to the correct place in the route list.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Tip:&lt;/strong&gt; “Map Route” button displays the route and performs the route based on the order of the locations on the home screen. So if you don’t “optimize” your route, you will be presented the route that reflects the order of the locations shown on the home page. This makes OptiRoute a handy tool for viewing your routes without even using the route optimizer.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Searching for locations:&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;You can add locations to your route via the “Search” screen. Version 1.0 of Optiroute only supports searching for addresses and points of interest (I plan on adding POIs in a later release).&lt;/p&gt;  &lt;p&gt;Tap the “Add” button &lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://lh6.ggpht.com/-68FvKH3TWd4/T1ziyfI0PqI/AAAAAAAAMWg/MGmU_x6NYYU/image%25255B72%25255D.png?imgmax=800" width="30" height="31" /&gt; to visit the “Search” page.&lt;/p&gt;  &lt;p&gt;Type in an address and tap the go button to find that location: &lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh5.ggpht.com/-ewm6WxC9_v4/T1ziy13JCHI/AAAAAAAAMWo/8-VeJBCbOls/s1600-h/image%25255B82%25255D.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://lh4.ggpht.com/-6Qee5d7bV8I/T1zizeQ6d1I/AAAAAAAAMWw/fJjZ1_7rd-M/image_thumb%25255B27%25255D.png?imgmax=800" width="302" height="445" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;To add the location to your route, tap on the pushpin that represents the address you wish to visit and then tap the “Select” button. This will add the selected location to your route and take you back to the “home” screen.&lt;/p&gt;  &lt;p&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://lh3.ggpht.com/-fmsNvMaE4xc/T1ziz2mnjfI/AAAAAAAAMW4/qAeVvNnLwA0/image%25255B88%25255D.png?imgmax=800" width="303" height="462" /&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Tip&lt;/strong&gt;: If you wish to add your current location, tap the “Current Location” button &lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://lh6.ggpht.com/-XSlX5mZJH14/T1zi0EztngI/AAAAAAAAMXA/s9Qt1eDcthI/image%25255B94%25255D.png?imgmax=800" width="20" height="20" /&gt;.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Screen shots:&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Here are some screenshots taken of the different screens within the application:&lt;/p&gt;  &lt;table border="1" cellspacing="0" cellpadding="2" width="550"&gt;&lt;tbody&gt;     &lt;tr&gt;       &lt;td valign="top" width="183"&gt;&lt;a href="http://lh6.ggpht.com/-Bov7rJzlS6I/T1zi0u6_LxI/AAAAAAAAMXI/O5JwC0u3GvM/s1600-h/02%25255B8%25255D.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="02" border="0" alt="02" src="http://lh5.ggpht.com/-zBUYGvHF21s/T1zi0yLpk9I/AAAAAAAAMXQ/V0s_7SPZWV4/02_thumb%25255B2%25255D.png?imgmax=800" width="148" height="244" /&gt;&lt;/a&gt;&lt;/td&gt;        &lt;td valign="top" width="183"&gt;&lt;a href="http://lh6.ggpht.com/-zwKaubNSxOE/T1zi1e2gmGI/AAAAAAAAMXY/jhGLxoz0VkI/s1600-h/03%25255B2%25255D.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="03" border="0" alt="03" src="http://lh4.ggpht.com/-0ZXL-mnqQLg/T1zi155k3xI/AAAAAAAAMXg/iyq5oSjNUiY/03_thumb.png?imgmax=800" width="148" height="244" /&gt;&lt;/a&gt;&lt;/td&gt;        &lt;td valign="top" width="183"&gt;&lt;a href="http://lh4.ggpht.com/-YXuQTxdZk44/T1zi2xVcSWI/AAAAAAAAMXo/48mZK40CTVE/s1600-h/04%25255B2%25255D.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="04" border="0" alt="04" src="http://lh4.ggpht.com/-S2sRKih1Qok/T1zi3eqKPiI/AAAAAAAAMXw/yajojV0Cbr0/04_thumb.png?imgmax=800" width="148" height="244" /&gt;&lt;/a&gt;&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="183"&gt;&lt;a href="http://lh6.ggpht.com/-9W2FKkVDp8M/T1zi30YOwqI/AAAAAAAAMX4/6wro5-wtWbw/s1600-h/05%25255B7%25255D.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="05" border="0" alt="05" src="http://lh5.ggpht.com/-r397PTLrS_Q/T1zi4WKr0DI/AAAAAAAAMYA/0HvpvS8WEfg/05_thumb%25255B1%25255D.png?imgmax=800" width="148" height="244" /&gt;&lt;/a&gt;&lt;/td&gt;        &lt;td valign="top" width="183"&gt;&lt;a href="http://lh6.ggpht.com/-r_Vn-_9rC2Y/T1zi5MdZBiI/AAAAAAAAMYI/l1OnP9qowO8/s1600-h/07%25255B2%25255D.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="07" border="0" alt="07" src="http://lh4.ggpht.com/-HrxC7zIuo-A/T1zi5sHhZaI/AAAAAAAAMYQ/xBHmtRLoTfw/07_thumb.png?imgmax=800" width="148" height="244" /&gt;&lt;/a&gt;&lt;/td&gt;        &lt;td valign="top" width="183"&gt;&lt;a href="http://lh4.ggpht.com/-Bj32qWBWDic/T1zi6FHHdKI/AAAAAAAAMYY/sToa6LoVT98/s1600-h/08%25255B2%25255D.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="08" border="0" alt="08" src="http://lh6.ggpht.com/-ac-pfqOmPiE/T1zi6lUv3vI/AAAAAAAAMYg/a2r8DdANwiA/08_thumb.png?imgmax=800" width="148" height="244" /&gt;&lt;/a&gt;&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="183"&gt;&lt;a href="http://lh6.ggpht.com/-BQAyRMUu53o/T1zi7D_5AUI/AAAAAAAAMYo/hSxs6BHDK3s/s1600-h/09%25255B2%25255D.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="09" border="0" alt="09" src="http://lh5.ggpht.com/-zQFV-bkN_f4/T1zi7nqSQ9I/AAAAAAAAMYw/jSIfkRi608s/09_thumb.png?imgmax=800" width="148" height="244" /&gt;&lt;/a&gt;&lt;/td&gt;        &lt;td valign="top" width="183"&gt;&lt;a href="http://lh3.ggpht.com/-Qdmev1C1rx0/T1zi8NAKLKI/AAAAAAAAMY4/AseXumchaZU/s1600-h/10%25255B2%25255D.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="10" border="0" alt="10" src="http://lh5.ggpht.com/-5RlEY0kKGkg/T1zi8ua2cJI/AAAAAAAAMZA/LzOyL64ItgQ/10_thumb.png?imgmax=800" width="148" height="244" /&gt;&lt;/a&gt;&lt;/td&gt;        &lt;td valign="top" width="183"&gt;&lt;a href="http://lh5.ggpht.com/-KfU0lJnSdjg/T1zi9HpwzKI/AAAAAAAAMZI/6S08jp-8hcs/s1600-h/12%25255B2%25255D.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="12" border="0" alt="12" src="http://lh5.ggpht.com/-FVKr2Zhltyk/T1zi9oz-TWI/AAAAAAAAMZQ/ivcUu30IYLw/12_thumb.png?imgmax=800" width="148" height="244" /&gt;&lt;/a&gt;&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="183"&gt;&lt;a href="http://lh4.ggpht.com/-9Yy4a_8wE_0/T1zi9woAUGI/AAAAAAAAMZY/jKGfO1l6r9U/s1600-h/13%25255B2%25255D.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="13" border="0" alt="13" src="http://lh3.ggpht.com/-nNZlPpNY2HQ/T1zi-Y1pM4I/AAAAAAAAMZg/l_fo0ccNzFs/13_thumb.png?imgmax=800" width="148" height="244" /&gt;&lt;/a&gt;&lt;/td&gt;        &lt;td valign="top" width="183"&gt;&lt;a href="http://lh6.ggpht.com/-cywKqTmrq_8/T1zi_CUdi9I/AAAAAAAAMZo/b4bMqO6ri7o/s1600-h/14%25255B2%25255D.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="14" border="0" alt="14" src="http://lh4.ggpht.com/-OLYqQR4esss/T1zi_hKBbnI/AAAAAAAAMZw/hzyZdPOtt6k/14_thumb.png?imgmax=800" width="148" height="244" /&gt;&lt;/a&gt;&lt;/td&gt;        &lt;td valign="top" width="183"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="Download OptiRoute from Windows Phone store" border="0" alt="Download OptiRoute from Windows Phone store" src="http://lh3.ggpht.com/-6Qlz5H6fpN0/T2YLfocClAI/AAAAAAAAMe8/vqAyT_803_o/WP7_App_OptiRoute_-_Store_Link_201231891751%25255B13%25255D.png?imgmax=800" width="152" height="154" /&gt;&lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt;&lt;/table&gt;  &lt;p&gt;&lt;strong&gt;Technical background:&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Route optimization has many different names (eg: Travelling Sales Man problem, etc.). If you have studied computer algorithms then you may know that the travelling sales man problem (TSP) is NP-Complete. OptiRoute uses a heuristic where it lays out all the locations on a grid, divides the grid into 4 quadrants and attempts to visit all the locations within a quadrant before moving on to the next quadrant. At the same time that its trying to visit each location, it attempts to not criss-cross the lines. The algorithm that I use is based on Sierpinski’s space filling curve (check out the video below to see how it fills 4 separate sections of the rectangle, filling each section before moving on to the next)&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Sierpinski Space Filling Curve Animation&lt;/strong&gt; (I created this video many years back and the routing algorithm is based off of this fractal)&lt;/p&gt;  &lt;p&gt;&lt;iframe height="315" src="http://www.youtube.com/embed/LXFT-OvWVFM" frameborder="0" width="420" allowfullscreen="allowfullscreen"&gt;&lt;/iframe&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Why is the heuristic important?&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Determining the actual travelling route (the driving directions) between any 2 locations is an expensive operation. This is especially true on a phone, where bandwidth is limited (and you typically need to use a web-service to determine the driving directions between any pair of locations). In addition, if you had 10 locations to visit and you attempted to brute force find the optimal route, you would need to find out the distance between all 10 locations (which amounts to 45 separate route calculations: &lt;em&gt;n(n-1)/2&lt;/em&gt; ).&amp;#160; &lt;/p&gt;  &lt;p&gt;It is generally better to come up with a general idea of your route and then determine the driving directions between each pair of locations in that route (in which case you would need only 10 route calculations – a far cry from the 45 separate routes needed by the brute force implementation). Using the Sierpinski curve, I am able to determine the general route to visit the different locations (this is done on the phone itself) and then I use Bing’s mapping service to find out the actual route between each pair of locations as determined by my algorithm.&lt;/p&gt;  &lt;p&gt;The idea of using a space filling curve to determine routing is not something that I invented and I have read about it in papers earlier. Mine is probably the first implementation of such a routing algorithm on the Windows phone platform and maybe any mobile platform.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Note&lt;/strong&gt;: I had created a silverlight based app a long time ago based on a similar idea. That site has been down for a long time. But if you are interested in reading about it, check out: &lt;a href="http://blog.aggregatedintelligence.com/2009/06/optiroute.html"&gt;http://blog.aggregatedintelligence.com/2009/06/optiroute.html&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;When you may not get the optimal route:&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;The reason that you may not always get an optimal route is that while performing route optimization the algorithm is not looking at the “travelling distance”, but just the straight line distance between the different locations. This results in sometimes less than optimal routes when one-way streets are involved, or any other impediments are added to the actual route. In addition, the algorithm does not take into account traffic conditions and hence may not be able to find the route with the shortest travel time. But these problems typically occur only when all the locations to visit are concentrated in a small area (eg: downtown city center) and normally do not affect the route when routing on a larger scale.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7656888-9097949226018397642?l=blog.aggregatedintelligence.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/A_d2jpRwzbPa24x2h5LIC9I3yns/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/A_d2jpRwzbPa24x2h5LIC9I3yns/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/A_d2jpRwzbPa24x2h5LIC9I3yns/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/A_d2jpRwzbPa24x2h5LIC9I3yns/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.aggregatedintelligence.com/feeds/9097949226018397642/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=7656888&amp;postID=9097949226018397642&amp;isPopup=true" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7656888/posts/default/9097949226018397642?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7656888/posts/default/9097949226018397642?v=2" /><link rel="alternate" type="text/html" href="http://blog.aggregatedintelligence.com/2012/03/optiroute-for-windows-phone-7.html" title="OptiRoute for Windows Phone 7" /><author><name>Raj Rao</name><uri>https://profiles.google.com/105969740227516948072</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh5.googleusercontent.com/-tDfz18sw7k8/AAAAAAAAAAI/AAAAAAAAAAA/lfehvy89gFY/s512-c/photo.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://lh6.ggpht.com/-D3WZwf8j6A8/T1zisLDVNXI/AAAAAAAAMUo/fj5Ue1DkF08/s72-c/Google-Maps-icon%25255B5%25255D.png?imgmax=800" height="72" width="72" /><thr:total>0</thr:total></entry></feed>

