<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-4535447606986422873</id><updated>2012-01-31T04:44:21.611-08:00</updated><category term='get entitySet in CRM 2011'/><category term='Appointments'/><category term='crm 2011'/><category term='step by step plugin tutorial'/><category term='Hot fixes and updates'/><category term='XRM'/><category term='lost'/><category term='MSCRM newsletter with attachment'/><category term='CRM'/><category term='Data Imports are not working'/><category term='Spellchecler'/><category term='win'/><category term='Changing Port number'/><category term='Workflows are not firing'/><category term='Locked Section'/><category term='MSCRM'/><category term='using templates with attachments'/><category term='facts about crm plugins'/><category term='Service Activity'/><category term='syntax changes in crm plugins'/><category term='opportunity setstate'/><category term='How to change the maximum no. of cells on dashboards'/><category term='Asynchronous Service'/><category term='plugin'/><category term='setstatedynamicentity'/><category term='crm.xrm.client.dll'/><category term='MSCRM 4.0 Upgrade'/><category term='Creating activities using rest endpoints.'/><category term='Spell Checker'/><category term='REST endpoints  to retrieve data in CRM 2011'/><category term='SDK 4.0.12'/><category term='plugins'/><category term='MSCRM GP Connector'/><category term='Creating email using rest endpoints.'/><category term='REST endpoints query in CRM 2011'/><category term='lose'/><title type='text'>MSCRM Shop</title><subtitle type='html'>This blog is about MSCRM. We talk about everything CRM.</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://mscrmshop.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4535447606986422873/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://mscrmshop.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Singh</name><uri>http://www.blogger.com/profile/04193418105246403607</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://4.bp.blogspot.com/_JIbxd7XP7Zc/TM37_rHOKjI/AAAAAAAAAFQ/R_AS52AN6LI/S220/victoria+pic+014.JPG'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>33</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-4535447606986422873.post-4757178078556747030</id><published>2012-01-31T04:44:00.001-08:00</published><updated>2012-01-31T04:44:21.628-08:00</updated><title type='text'>Step by step plugin tutorial using Developer's Toolkit Part 3</title><content type='html'>&lt;p&gt;This blog is an extension of my last blog &lt;a href="http://mscrmshop.blogspot.com.au/2012/01/step-by-step-plugin-tutorial-using_18.html"&gt;Step by step plugin tutorial using Developer's Toolkit Part 2&lt;/a&gt;. We used “Create Wrapper” method to generate strongly typed classes. In this blog, we will use OrganizationServiceContext to create “Task” entity instead of using service.Create() method. To use OrganizationServiceContext in the plugin, we need to add reference to Microsoft.Xrm.Sdk.Client at the top of the class.&lt;/p&gt; &lt;p&gt;using Microsoft.Xrm.Sdk.Client;&lt;/p&gt; &lt;p&gt;Now create an instance of OrganizationServiceContext by passing the OrganizationService as shown below&lt;/p&gt; &lt;p&gt;// TODO: Implement your custom Plug-in business logic.&lt;br&gt;IPluginExecutionContext context = localContext.PluginExecutionContext;&lt;br&gt;IOrganizationService service = localContext.OrganizationService;&lt;br&gt;//ITracingService tracingService = localContext.TracingService;&lt;/p&gt; &lt;p&gt;//create a service context&lt;br&gt; var ServiceContext = new OrganizationServiceContext(service);&lt;/p&gt; &lt;p&gt;Now replace the &lt;/p&gt; &lt;p&gt;service.Create(task);&lt;/p&gt; &lt;p&gt;with&lt;br&gt;&lt;/p&gt; &lt;p&gt; ServiceContext.AddObject(task);&lt;br&gt; ServiceContext.SaveChanges();&lt;/p&gt; &lt;p&gt;Deploy the plugin and test it.&lt;/p&gt; &lt;h3&gt;Advantages of using OrganizationServiceContext&lt;/h3&gt; &lt;p&gt;The biggest advantage of using OrganizationServiceContext is that we can track multiple entities/operations and save all the changes with ServiceContext.SaveChanges(); statement. Have a look at this &lt;a href="http://msdn.microsoft.com/en-us/library/gg334504.aspx"&gt;article&lt;/a&gt; on MSDN.&amp;nbsp; &lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4535447606986422873-4757178078556747030?l=mscrmshop.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mscrmshop.blogspot.com/feeds/4757178078556747030/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mscrmshop.blogspot.com/2012/01/step-by-step-plugin-tutorial-using_31.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4535447606986422873/posts/default/4757178078556747030'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4535447606986422873/posts/default/4757178078556747030'/><link rel='alternate' type='text/html' href='http://mscrmshop.blogspot.com/2012/01/step-by-step-plugin-tutorial-using_31.html' title='Step by step plugin tutorial using Developer&amp;#39;s Toolkit Part 3'/><author><name>Singh</name><uri>http://www.blogger.com/profile/04193418105246403607</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://4.bp.blogspot.com/_JIbxd7XP7Zc/TM37_rHOKjI/AAAAAAAAAFQ/R_AS52AN6LI/S220/victoria+pic+014.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4535447606986422873.post-4354609275555123652</id><published>2012-01-18T19:57:00.000-08:00</published><updated>2012-01-18T19:57:17.604-08:00</updated><title type='text'>Step by step plugin tutorial using Developer's Toolkit Part 2</title><content type='html'>This is a second part of my last blog &lt;a href="http://mscrmshop.blogspot.com/2012/01/step-by-step-plugin-tutorial-using.html"&gt;step-by-step-plugin-tutorial Developer’s Toolkit Part 1&lt;/a&gt;. In the last blog, we created a plugin using late binding. In this blog we use early binding (strongly typed classes) to create the same plugin. This is an other advantage of using the Developer’s Toolkit. We can generate the strongly typed classes by click of the mouse. We don’t have to use &lt;a href="http://msdn.microsoft.com/en-us/library/ff681563.aspx"&gt;CrmSvcUtil Command-Line Utility&lt;/a&gt; and copy the generated file to our plugin Project. I am going to use the same solution I have used for my last blog.&lt;br /&gt;Please read the last &lt;a href="http://mscrmshop.blogspot.com/2012/01/step-by-step-plugin-tutorial-using.html"&gt;blog&lt;/a&gt; before starting this one. Here are the steps.&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Open the CRM Explorer. Right Click on the Entities node and select “Generate&amp;nbsp; Wrapper”. It will generate the strongly type classes and add it to the Plugins project. The name of the generated file will be Entities.cs.&lt;a href="http://lh4.ggpht.com/-0syJTJ4TjU0/TxZExt4bbEI/AAAAAAAAATI/w3Hdn66FdwU/s1600-h/c1%25255B5%25255D.png"&gt;&lt;img alt="c1" border="0" height="255" src="http://lh6.ggpht.com/--NQv8f3wrOc/TxZEzNAfdsI/AAAAAAAAATQ/Cfp301c5ZKw/c1_thumb%25255B3%25255D.png?imgmax=800" style="background-image: none; border-bottom: 0px; border-left: 0px; border-right: 0px; border-top: 0px; display: inline; padding-left: 0px; padding-right: 0px; padding-top: 0px;" title="c1" width="301" /&gt;&lt;/a&gt;&amp;nbsp;&lt;a href="http://lh4.ggpht.com/-Qle5__CP0GI/TxZEzqtbulI/AAAAAAAAATU/bZz8Dynzpt0/s1600-h/c3%25255B6%25255D.png"&gt;&lt;img alt="c3" border="0" height="263" src="http://lh6.ggpht.com/-7w4FEaLdYus/TxZE0h1lyXI/AAAAAAAAATc/q_cRUkggb_M/c3_thumb%25255B4%25255D.png?imgmax=800" style="background-image: none; border-bottom: 0px; border-left: 0px; border-right: 0px; border-top: 0px; display: inline; padding-left: 0px; padding-right: 0px; padding-top: 0px;" title="c3" width="276" /&gt;&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Now expand the Entities node. Right Click on Account Entity and select “Create Plug-in”. It will display a following dialog.This time we are creating a plugin on update event. Enter the values as shown the screen shot. You can change the class name if you like and press OK. It will create a new file “PostAccountUpdate.cs” in the plugins project.&lt;a href="http://lh3.ggpht.com/-pDdZ0QRSz-8/TxZE1XdrVkI/AAAAAAAAATk/KK7zEqxA2I8/s1600-h/c4%25255B12%25255D.png"&gt;&lt;img alt="c4" border="0" height="408" src="http://lh5.ggpht.com/-6XYc2v-KsDA/TxZE2dNxm8I/AAAAAAAAATw/8_2q3Nx-zvE/c4_thumb%25255B8%25255D.png?imgmax=800" style="background-image: none; border-bottom: 0px; border-left: 0px; border-right: 0px; border-top: 0px; display: inline; padding-left: 0px; padding-right: 0px; padding-top: 0px;" title="c4" width="617" /&gt;&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Open the “PostAccountUpdate.cs” file. Add the reference to Entites.cs file to use the strongly typed classes.&lt;/li&gt;&lt;li&gt;Copy the ExecutePostAccountCreate() function code from PostAccountCreate.cs created in last &lt;a href="http://mscrmshop.blogspot.com/2012/01/step-by-step-plugin-tutorial-using.html"&gt;blog&lt;/a&gt; and paste it in ExecutePostAccountUpdate() function of “PostAccountUpdate.cs”.&lt;/li&gt;&lt;li&gt;Replace the following lines in copied code of ExecutePostAccountUpdate() function&lt;pre class="prettyprint"&gt;&lt;br /&gt;//create a task&lt;br /&gt;Entity task = new Entity("task");&lt;br /&gt;task["subject"] = "Account number is missing";&lt;br /&gt;task["regardingobjectid"] = new EntityReference("account", new Guid(context.OutputParameters["id"].ToString()));&lt;br /&gt;&lt;br /&gt;//adding attribute using the add function&lt;br /&gt;// task["description"] = "Account number is missng for the following account. Please enter the account number";&lt;br /&gt;task.Attributes.Add("description", "Account number is missng for the following account. Please enter the account number");&lt;br /&gt;                        &lt;br /&gt;// Create the task in Microsoft Dynamics CRM.&lt;br /&gt;service.Create(task);&lt;br /&gt;&lt;/pre&gt;with&lt;pre class="prettyprint"&gt;&lt;br /&gt;//create a task&lt;br /&gt;Task task = new Task();&lt;br /&gt;task.Subject = "Account number is missing";&lt;br /&gt;task.RegardingObjectId = new EntityReference("account", new Guid(context.OutputParameters["id"].ToString()));&lt;br /&gt;task.Description = "Account number is missng for the following account. Please enter the account number";&lt;br /&gt;&lt;br /&gt;// Create the task in Microsoft Dynamics CRM.&lt;br /&gt;service.Create(task);&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;We replaced the Entity object with Task object and we used task.Description inplace task["description"]. Early binding (strongly typed classes provides us all the crm entities objects,their properties and methods.&lt;li&gt;Now right click on CRM Package project and select deploy. It will register the plugin assembly as well as step for the plugin.Click on CRM Explorer to check the deployed plugin as shown in the following screen shot.There are two plugins registered, one for post update event that we just created and one for post create event we created in last blog. Update an account to test the plugin.&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;a href="http://lh4.ggpht.com/-MqpRRYFJLRs/TxZE3Gk95rI/AAAAAAAAAT4/cBkIuU6qWjk/s1600-h/c6%25255B2%25255D.png"&gt;&lt;img alt="c6" border="0" height="224" src="http://lh6.ggpht.com/-hjrZdSmxgHw/TxZE4LuzerI/AAAAAAAAAUA/cVV5ZZUP-W8/c6_thumb.png?imgmax=800" style="background-image: none; border-bottom: 0px; border-left: 0px; border-right: 0px; border-top: 0px; display: inline; padding-left: 0px; padding-right: 0px; padding-top: 0px;" title="c6" width="244" /&gt;&lt;/a&gt;&lt;/li&gt;&lt;/ol&gt;&lt;h3&gt;Advantages for using early binding&lt;/h3&gt;Here is the &lt;a href="http://msdn.microsoft.com/en-us/library/gg327971.aspx"&gt;link&lt;/a&gt; to explain the differences between early binding and late binding. I am listing few of advantages using early binding.&lt;br /&gt;&lt;ol&gt;&lt;li&gt;The biggest advantage of using early binding is that we have access to all the CRM entities(account, contact, opportunity, task etc) their attributes and their relationships.In late binding we use the Entity (dynamic entity) to work with all the CRM entities.&lt;/li&gt;&lt;li&gt;Access to visual studio intellisense while writing code.In the following screen shot, we create an instance of Task entity and when we type Task. it will display all the attributes and methods belong to task entity.&lt;a href="http://lh4.ggpht.com/-P9VXIuawFM0/TxZE4_Qm2HI/AAAAAAAAAUI/v0jy8OQyMjM/s1600-h/c5%25255B16%25255D.png"&gt;&lt;img alt="c5" border="0" height="270" src="http://lh5.ggpht.com/-7LUcMID49qU/TxZE6YpheTI/AAAAAAAAAUQ/4zk0Ek1c-A0/c5_thumb%25255B12%25255D.png?imgmax=800" style="background-image: none; border-bottom: 0px; border-left: 0px; border-right: 0px; border-top: 0px; display: inline; padding-left: 0px; padding-right: 0px; padding-top: 0px;" title="c5" width="557" /&gt;&lt;/a&gt; &lt;/li&gt;&lt;li&gt;There are less chances of misspelling the attributes names because of intellisence. Early bound references are checked at compile time. for e.g if we spell the attribute name wrong, you won’t able to compile the code. In late binding, it will hard to find out if we misspell the attribute name as references will be checked at run time.&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/4535447606986422873-4354609275555123652?l=mscrmshop.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mscrmshop.blogspot.com/feeds/4354609275555123652/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mscrmshop.blogspot.com/2012/01/step-by-step-plugin-tutorial-using_18.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4535447606986422873/posts/default/4354609275555123652'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4535447606986422873/posts/default/4354609275555123652'/><link rel='alternate' type='text/html' href='http://mscrmshop.blogspot.com/2012/01/step-by-step-plugin-tutorial-using_18.html' title='Step by step plugin tutorial using Developer&amp;#39;s Toolkit Part 2'/><author><name>Singh</name><uri>http://www.blogger.com/profile/04193418105246403607</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://4.bp.blogspot.com/_JIbxd7XP7Zc/TM37_rHOKjI/AAAAAAAAAFQ/R_AS52AN6LI/S220/victoria+pic+014.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh6.ggpht.com/--NQv8f3wrOc/TxZEzNAfdsI/AAAAAAAAATQ/Cfp301c5ZKw/s72-c/c1_thumb%25255B3%25255D.png?imgmax=800' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4535447606986422873.post-7510276994317010943</id><published>2012-01-16T19:14:00.000-08:00</published><updated>2012-01-31T03:58:04.172-08:00</updated><title type='text'>Step by step plugin tutorial using Developer's Toolkit Part 1</title><content type='html'>I was looking at developer’s toolkit shipped with CRM2011 SDK. There are few blogs out there on how to create plugins using developer's tool kit. Most of the blogs are more or less exactly like the “developer toolkit user's guide”&amp;nbsp;&amp;nbsp;comes with&amp;nbsp;the toolkit.&lt;br /&gt;&lt;br /&gt;Here is link to &lt;a href="http://inogic.blogspot.com/2011/11/crm-2011-developer-toolkit.html" target="_blank"&gt;Sam’s blog&lt;/a&gt; that explains each project in developer’s toolkit. &lt;a href="http://msdn.microsoft.com/en-us/library/hh547400.aspx" target="_blank"&gt;MSDN blog&lt;/a&gt; also have similar contents. In this blog I am going to create a sample plugin using developer’s toolkit. It is a copy of one of my earlier blog(&lt;a href="http://mscrmshop.blogspot.com/2010/10/crm-2011-plugin-tutorial.html" target="_blank"&gt;Step by step plugin tutorial for CRM 2011&lt;/a&gt;) .&lt;br /&gt;&lt;br /&gt;Install the developer’s toolkit.The Developer toolkit for Microsoft Dynamics CRM 2011 was released as part of UR5 SDK release and is available for download &lt;a href="http://www.microsoft.com/download/en/details.aspx?id=24004"&gt;here&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;ol style="border-bottom: medium none; border-left: medium none; border-right: medium none; border-top: medium none;"&gt;&lt;br /&gt;&lt;li&gt;Create a new solution in CRM2011. I named my solution “CRM Plugin Solution”. This is optional but I would recommend you do that. &lt;/li&gt;&lt;li&gt;Open Visual Studio 2010. Select File—New –Project. It will display new project templates dialog as shown in the screen sheet below&lt;a href="http://lh3.ggpht.com/-ek9wCSXQ-Es/TxYVS4dFCcI/AAAAAAAAASI/UEcdb5TiKmE/s1600-h/p1%25255B1%25255D.png"&gt;&lt;img alt="p1" height="286" src="http://lh3.ggpht.com/-KsNNgd060VE/TxTPyg14YuI/AAAAAAAAASM/LN8N9_nYBUA/p1_thumb.png?imgmax=800" style="display: inline;" title="p1" width="677" /&gt;&lt;/a&gt; &lt;/li&gt;&lt;li&gt;Select “Dynamics CRM 2011 Package” project. This is also optional. You can go ahead and select “Dynamics CRM 2011 Plugin Library”, But then you cannot deploy the plugin straight from the Visual Studio. You have to use Plugin Registration tool to register the plugin. Enter the name of project/solution. &lt;/li&gt;&lt;li&gt;VS studio will display following dialog.Enter you CRM 2011 server details.Select the solution name we created in step 1 and click ok&lt;a href="http://lh5.ggpht.com/-2zoFHb_RS_4/TxTPzs7qzwI/AAAAAAAAASQ/14-E103KBQA/s1600-h/p2%25255B1%25255D.png"&gt;&lt;img alt="p2" height="448" src="http://lh3.ggpht.com/-lWL_ddCidQ8/TxTP0YzRhkI/AAAAAAAAASU/1tN5CgwJKDo/p2_thumb.png?imgmax=800" style="display: inline;" title="p2" width="473" /&gt;&lt;/a&gt; &lt;/li&gt;&lt;li&gt;Now right click on the solution and add “Dynamics CRM 2011 Plugin Library” project to the solution. The plugin project will already have a plugin.cs file. &lt;/li&gt;&lt;li&gt;Now sign the plugin assembly. Right click on Plugin Project and select properties. Select Signing tab from left navigation of project property page. On the Signing tab, select the Sign the assembly check box and set the strong name key file of your choice.At a minimum, you must specify a new key file name. Do not protect your key file by using a password. &lt;/li&gt;&lt;li&gt;If You cannot see the “CRM Explorer” window on the upper left side of the VS studio, click on View menu and select “CRM Explorer”. &lt;a href="http://lh5.ggpht.com/-8CaV7v_m7VM/TxTP1tkeyyI/AAAAAAAAASY/ury73xmEvrg/s1600-h/p3%25255B1%25255D.png"&gt;&lt;img alt="p3" height="236" src="http://lh4.ggpht.com/-kw8-PNOfGTM/TxTP2ZHeEjI/AAAAAAAAASc/rRGqP_BIsQA/p3_thumb.png?imgmax=800" style="display: inline;" title="p3" width="262" /&gt;&lt;/a&gt; &lt;/li&gt;&lt;li&gt;Now expand “Entities” Node. Right Click the entity on want to create the plugin for and select “Create Plugin”.&lt;a href="http://lh5.ggpht.com/-ICnjzfap6W8/TxTP3FaQAbI/AAAAAAAAASg/lbqwq_hb6M4/s1600-h/p4%25255B1%25255D.png"&gt;&lt;img alt="p4" height="190" src="http://lh5.ggpht.com/-ZchiZN44oZk/TxTP4JTAfOI/AAAAAAAAASk/rLbzchWoCAU/p4_thumb.png?imgmax=800" style="display: inline;" title="p4" width="339" /&gt;&lt;/a&gt; &lt;/li&gt;&lt;li&gt;It will display a following screen.It is equivalent to “Create Step” screen in plugin registration tool. The dialog will pick up the name of the entity and other information. Choose the message and the pipeline stage. You can also change of the Class attribute. Press Ok.&lt;a href="http://lh4.ggpht.com/-G3oKNPitnOg/TxYWqUeAxRI/AAAAAAAAASo/YREMsr_EvdY/s1600-h/pn5%25255B11%25255D.png"&gt;&lt;img alt="pn5" height="419" src="http://lh4.ggpht.com/-g4SAKbyFJeQ/TxYWrmEjruI/AAAAAAAAASw/61P6qrv-WYQ/pn5_thumb%25255B8%25255D.png?imgmax=800" style="display: inline;" title="pn5" width="565" /&gt;&lt;/a&gt; &lt;/li&gt;&lt;li&gt;It will create a .cs file with name mentioned in “Class” attribute in screen shot above. Double click on the class file(PostAccountCreate) and scroll down to following lines of code. You write your business logic here.&lt;br /&gt;&lt;pre class="prettyprint"&gt;protected void ExecutePostAccountCreate(LocalPluginContext localContext)&lt;br /&gt;{&lt;br /&gt;   if (localContext == null)&lt;br /&gt;   {&lt;br /&gt;       throw new ArgumentNullException("localContext");&lt;br /&gt;   }&lt;br /&gt;   // TODO: Implement your custom Plug-in business logic.&lt;br /&gt;}&lt;/pre&gt;&lt;/li&gt;&lt;li&gt;The first thing you will do is to get the plugin context, CRMService instance and TracingService instance using localContext passed to the function. All these objects are defined in the built in plugin.cs class.&lt;br /&gt;&lt;pre class="prettyprint"&gt;IPluginExecutionContext context = localContext.PluginExecutionContext;&lt;br /&gt;IOrganizationService service = localContext.OrganizationService;&lt;br /&gt;//ITracingService tracingService = localContext.TracingService;&lt;/pre&gt;&lt;/li&gt;&lt;li&gt;Here is code. It will check if the “account number” is null or empty and&amp;nbsp; create a task for a user to enter the account number.&lt;br /&gt;&lt;pre class="prettyprint"&gt;protected void ExecutePostAccountCreate(LocalPluginContext localContext)&lt;br /&gt;{&lt;br /&gt;    if (localContext == null)&lt;br /&gt;    {&lt;br /&gt;        throw new ArgumentNullException("localContext");&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    // TODO: Implement your custom Plug-in business logic.&lt;br /&gt;        // Obtain the execution context from the service provider.&lt;br /&gt;    IPluginExecutionContext context = localContext.PluginExecutionContext;&lt;br /&gt;    IOrganizationService service = localContext.OrganizationService;&lt;br /&gt;    //ITracingService tracingService = localContext.TracingService;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;    // The InputParameters collection contains all the data passed in the message request.&lt;br /&gt;    if (context.InputParameters.Contains("Target") &amp;amp;&amp;amp;&lt;br /&gt;    context.InputParameters["Target"] is Entity)&lt;br /&gt;    {&lt;br /&gt;        // Obtain the target entity from the input parmameters.&lt;br /&gt;        Entity entity = (Entity)context.InputParameters["Target"];&lt;br /&gt;                &lt;br /&gt;        //EntityReference pp = entity.GetAttributeValue&lt;entityreference&gt;("primarycontactid");&lt;br /&gt;        //tracingService.Trace(pp.LogicalName);&lt;br /&gt;               &lt;br /&gt;                &lt;br /&gt;        try&lt;br /&gt;        {&lt;br /&gt;            //check if the account number exist&lt;br /&gt;&lt;br /&gt;            if (entity.Attributes.Contains("accountnumber") == false)&lt;br /&gt;            {&lt;br /&gt;&lt;br /&gt;                //create a task&lt;br /&gt;                Entity task = new Entity("task");&lt;br /&gt;                task["subject"] = "Account number is missing";&lt;br /&gt;                task["regardingobjectid"] = new EntityReference("account", new Guid(context.OutputParameters["id"].ToString()));&lt;br /&gt;&lt;br /&gt;                //adding attribute using the add function&lt;br /&gt;                // task["description"] = "Account number is missng for the following account. Please enter the account number";&lt;br /&gt;                task.Attributes.Add("description", "Account number is missng for the following account. Please enter the account number");&lt;br /&gt;                        &lt;br /&gt;                // Create the task in Microsoft Dynamics CRM.&lt;br /&gt;                service.Create(task);&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;            }&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;        catch (FaultException ex)&lt;br /&gt;        {&lt;br /&gt;            throw new InvalidPluginExecutionException("An error occurred in the plug-in.", ex);&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;}&lt;/pre&gt;I also left few commented lines in the code to show “How to use tracingservice to write in trace log”. You will able to see the trace only if there is an error in the plugin. &lt;/li&gt;&lt;li&gt;Now right click on CRM Package project we created in step 2 and select deploy. It will register the plugin assembly as well as step for the plugin. Click on CRM Explorer to check the deployed plugin as shown in the following screen shot.&lt;a href="http://lh6.ggpht.com/-zbkFHzt-Is4/TxYWsnHla2I/AAAAAAAAAS0/NSS_TWMks8M/s1600-h/pn1%25255B12%25255D.png"&gt;&lt;img alt="pn1" height="261" src="http://lh5.ggpht.com/-vaSzoxzDfmQ/TxYWtccNYvI/AAAAAAAAAS8/ReWYPnU_gsE/pn1_thumb%25255B9%25255D.png?imgmax=800" style="display: inline;" title="pn1" width="293" /&gt;&lt;/a&gt; &lt;/li&gt;&lt;li&gt;Create a new account and test the plugin.&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/4535447606986422873-7510276994317010943?l=mscrmshop.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mscrmshop.blogspot.com/feeds/7510276994317010943/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mscrmshop.blogspot.com/2012/01/step-by-step-plugin-tutorial-using.html#comment-form' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4535447606986422873/posts/default/7510276994317010943'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4535447606986422873/posts/default/7510276994317010943'/><link rel='alternate' type='text/html' href='http://mscrmshop.blogspot.com/2012/01/step-by-step-plugin-tutorial-using.html' title='Step by step plugin tutorial using Developer&apos;s Toolkit Part 1'/><author><name>Singh</name><uri>http://www.blogger.com/profile/04193418105246403607</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://4.bp.blogspot.com/_JIbxd7XP7Zc/TM37_rHOKjI/AAAAAAAAAFQ/R_AS52AN6LI/S220/victoria+pic+014.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh3.ggpht.com/-KsNNgd060VE/TxTPyg14YuI/AAAAAAAAASM/LN8N9_nYBUA/s72-c/p1_thumb.png?imgmax=800' height='72' width='72'/><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4535447606986422873.post-4324552541629077985</id><published>2011-12-30T03:40:00.001-08:00</published><updated>2011-12-30T03:48:19.494-08:00</updated><title type='text'>Step by step tutorial to add an entity URL to an email in a workflow</title><content type='html'>Rollup 5 introduced some new features in CRM2011. One of them is to add&amp;nbsp; an entity URL to an email in workflow. Before rollup 5, it&amp;nbsp;used to be a &amp;nbsp;complicated process.We don't need to create custom workflow assemblies to this any more.. Still, there are a lot of people asking the same question “How to add entity URLs to emails in workflows” in CRM Forums.&lt;br /&gt;Here is the step by step tutorial to add an entity URL to an email in a workflow.&lt;br /&gt;1.&amp;nbsp;&amp;nbsp;&amp;nbsp; Start a new workflow.&lt;br /&gt;2.&amp;nbsp;&amp;nbsp;&amp;nbsp; To send an email. Click on “Add Step” and choose “Send Email”. It will open up a following screen.&lt;a href="http://lh3.ggpht.com/-6nqbMtIt8kE/Tv2jGN4pD-I/AAAAAAAAAOc/HoHliiJpoKc/s1600-h/pic%25255B5%25255D.png"&gt;&lt;img alt="pic" border="0" height="323" src="http://lh3.ggpht.com/-9Y5oleckoLc/Tv2jHAmte2I/AAAAAAAAAOk/xEOaE0Vr_18/pic_thumb%25255B3%25255D.png?imgmax=800" style="background-image: none; border-bottom: 0px; border-left: 0px; border-right: 0px; border-top: 0px; display: inline; padding-left: 0px; padding-right: 0px; padding-top: 0px;" title="pic" width="655" /&gt;&lt;/a&gt;&amp;nbsp; &lt;br /&gt;3.&amp;nbsp;&amp;nbsp;&amp;nbsp; Add the information as required and to add the hyperlink, click on hyperlink icon shown in red circle in the above screen shot. It will open up a following screen.&lt;br /&gt;&lt;a href="http://lh6.ggpht.com/-7x4H6kIC30o/Tv2jIKYEjNI/AAAAAAAAAOs/t2zZ__muYQM/s1600-h/pic2%25255B7%25255D.png"&gt;&lt;img alt="pic2" border="0" height="374" src="http://lh4.ggpht.com/-f5plhS30dIA/Tv2jJWQ94II/AAAAAAAAAO0/WSc8UDeSHek/pic2_thumb%25255B5%25255D.png?imgmax=800" style="background-image: none; border-bottom: 0px; border-left: 0px; border-right: 0px; border-top: 0px; display: inline; padding-left: 0px; padding-right: 0px; padding-top: 0px;" title="pic2" width="660" /&gt;&lt;/a&gt; &lt;br /&gt;4.&amp;nbsp;&amp;nbsp;&amp;nbsp; In “Text to display”. Enter the text to you would want to display. I am displaying the full name of the contact. It can be any string.&lt;br /&gt;5.&amp;nbsp;&amp;nbsp;&amp;nbsp; Select the “URL” text box . When you look through the available fields. You can see a new option “Record URL (Dynamic)”. Click on that and press Ok.&amp;nbsp; The email will look like following screen.&lt;a href="http://lh5.ggpht.com/-n9oFj3A60AM/Tv2jM5kclPI/AAAAAAAAAO8/wm3XWDb5kD8/s1600-h/pic3%25255B9%25255D.png"&gt;&lt;img alt="pic3" border="0" height="394" src="http://lh4.ggpht.com/-WS324DsMHrk/Tv2jN3l7ZzI/AAAAAAAAAPE/ODRLUkOBK70/pic3_thumb%25255B4%25255D.png?imgmax=800" style="background-image: none; border-bottom: 0px; border-left: 0px; border-right: 0px; border-top: 0px; display: inline; padding-left: 0px; padding-right: 0px; padding-top: 0px;" title="pic3" width="672" /&gt;&lt;/a&gt;&amp;nbsp; 6.&amp;nbsp;&amp;nbsp;&amp;nbsp; Press save and close. Publish the workflow and you are good to go.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4535447606986422873-4324552541629077985?l=mscrmshop.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mscrmshop.blogspot.com/feeds/4324552541629077985/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mscrmshop.blogspot.com/2011/12/step-by-step-tutorial-to-add-entity-url.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4535447606986422873/posts/default/4324552541629077985'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4535447606986422873/posts/default/4324552541629077985'/><link rel='alternate' type='text/html' href='http://mscrmshop.blogspot.com/2011/12/step-by-step-tutorial-to-add-entity-url.html' title='Step by step tutorial to add an entity URL to an email in a workflow'/><author><name>Singh</name><uri>http://www.blogger.com/profile/04193418105246403607</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://4.bp.blogspot.com/_JIbxd7XP7Zc/TM37_rHOKjI/AAAAAAAAAFQ/R_AS52AN6LI/S220/victoria+pic+014.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh3.ggpht.com/-9Y5oleckoLc/Tv2jHAmte2I/AAAAAAAAAOk/xEOaE0Vr_18/s72-c/pic_thumb%25255B3%25255D.png?imgmax=800' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4535447606986422873.post-5236102192007354667</id><published>2011-12-26T22:45:00.001-08:00</published><updated>2011-12-26T23:05:55.165-08:00</updated><title type='text'>CRM2011 Subgrids and JavaScript</title><content type='html'>I have been thinking of bloging about this topic from last 6 months. I wanted to get an aggregate of numeric/money field in the grid. It is very easy to do, if subgrid contains only one page. But How would you get the aggregate if subgrid has more than 1 pages.&lt;br /&gt;&lt;br /&gt;I posted this question on the forums and I never get an answer. I still don't have a solution for this problem.&lt;br /&gt;Anyway....&lt;br /&gt;&lt;br /&gt;The following sample code displaying the message box with the aggregate of “Estimated Revenue” field&amp;nbsp; of the opportunity.ce &lt;br /&gt;&lt;pre class="prettyprint"&gt;function subGridOnload() &lt;br /&gt;{ &lt;br /&gt; //debugger;&lt;br /&gt; var grid = Xrm.Page.ui.controls.get('Opps')._control&lt;br /&gt; var sum =0.00;&lt;br /&gt; //if  (grid.readyState!="complete") &lt;br /&gt; //{ &lt;br /&gt; // delay one second and try again. &lt;br /&gt; //setTimeout(subGridOnload, 1000); &lt;br /&gt; //return; &lt;br /&gt; //} &lt;br /&gt;&lt;br /&gt; if  (grid.get_innerControl()==null)&lt;br /&gt; { &lt;br /&gt;  setTimeout(subGridOnload, 1000); &lt;br /&gt;  return; &lt;br /&gt; } &lt;br /&gt; else if (grid.get_innerControl()._element.innerText.search("Loading")!= -1)&lt;br /&gt; {&lt;br /&gt;  setTimeout(subGridOnload, 1000); &lt;br /&gt;  return;&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; var ids = grid.get_innerControl().get_allRecordIds(); &lt;br /&gt; var cellValue;&lt;br /&gt; for(i = 0; i &amp;lt; ids.length; i++) &lt;br /&gt; { &lt;br /&gt;     if (grid.get_innerControl().getCellValue('estimatedvalue', ids[i]) !="")&lt;br /&gt;     { &lt;br /&gt;       cellValue = grid.get_innerControl().getCellValue('estimatedvalue', ids[i]); &lt;br /&gt;       cellValue = cellValue.substring(2); &lt;br /&gt;       cellValue = parseFloat(cellValue);  &lt;br /&gt;       sum = sum + cellValue;&lt;br /&gt;     }&lt;br /&gt; &lt;br /&gt; }//end for   &lt;br /&gt; alert(sum);&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;I also noticed that&amp;nbsp; grid.readyState!="complete" does not work all the time.&amp;nbsp; It happens when the control is already loaded but the grid is&amp;nbsp;still retrieving the data. So I changed the code to check if the records are already loaded. &lt;br /&gt;See you guys……&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4535447606986422873-5236102192007354667?l=mscrmshop.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mscrmshop.blogspot.com/feeds/5236102192007354667/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mscrmshop.blogspot.com/2011/12/crm2011-subgrids-and-javascript.html#comment-form' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4535447606986422873/posts/default/5236102192007354667'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4535447606986422873/posts/default/5236102192007354667'/><link rel='alternate' type='text/html' href='http://mscrmshop.blogspot.com/2011/12/crm2011-subgrids-and-javascript.html' title='CRM2011 Subgrids and JavaScript'/><author><name>Singh</name><uri>http://www.blogger.com/profile/04193418105246403607</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://4.bp.blogspot.com/_JIbxd7XP7Zc/TM37_rHOKjI/AAAAAAAAAFQ/R_AS52AN6LI/S220/victoria+pic+014.JPG'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4535447606986422873.post-2117138869110536594</id><published>2011-12-19T21:46:00.001-08:00</published><updated>2011-12-20T19:41:43.870-08:00</updated><title type='text'>Updating custom fields on synced outlook contacts in crm2011</title><content type='html'>CRM2011 does not support synching custom fields between CRM2011 and synced Outlook Contacts. &lt;br /&gt;You can’t even select the fields to sync between CRM and Outlook. The add-in will update the custom fields between synced Outlook contacts with CRM2011. &lt;br /&gt;&lt;h3&gt;&lt;b&gt;Software Requirements:&lt;/b&gt;&lt;/h3&gt;This solution is tested on windows 7 and outlook 2010 only. &lt;br /&gt;&lt;h3&gt;&lt;b&gt;Solution components:&lt;/b&gt;&lt;/h3&gt;The solution consists of 2 components. &lt;br /&gt;&lt;ul&gt;&lt;li&gt;UpdateContactAddin_1_0_managed.zip (CRM2011 Managed solution) &lt;/li&gt;&lt;li&gt;OutlookAddin.zip (Outlook Addin) &lt;/li&gt;&lt;/ul&gt;&lt;b&gt;&lt;/b&gt;&lt;br /&gt;&lt;h4&gt;&lt;b&gt;1. &lt;/b&gt;&lt;b&gt;UpdateContactAddin_1_0_managed.zip : &lt;/b&gt;&lt;/h4&gt;Download the file and import the solution.&lt;b&gt; &lt;/b&gt;The solution creates a custom entity called “syncmapping”. The entity contains two main fields “CRM Field” and “Outlook Field”. The entity will map the fields needed to be updated between CRM2011 Contacts and Outlook Contacts. Before you add any data into the entity, go to the default solution and customize the entity to display in workplace or settings area. &lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;a href="http://3.bp.blogspot.com/-oSc_BODVnFM/TvEnaHkSA_I/AAAAAAAAANs/yq3duhpMiMM/s1600/pic.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="115" oda="true" src="http://3.bp.blogspot.com/-oSc_BODVnFM/TvEnaHkSA_I/AAAAAAAAANs/yq3duhpMiMM/s640/pic.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="border-bottom: medium none; border-left: medium none; border-right: medium none; border-top: medium none;"&gt;For e.g. In above screen “accountrolecode” (Display Name Role) field in contact entity will update the User1 field or “User Field 1” in Outlook. &lt;a href="http://lh4.ggpht.com/-Z_jyDgZ5_ls/TvAg-HtPkgI/AAAAAAAAAMM/SSgDDQIGXpQ/s1600-h/clip_image004%25255B3%25255D.jpg"&gt;&lt;img alt="clip_image004" border="0" height="32" src="http://lh4.ggpht.com/-Xy3VwNjZRu0/TvAg-w34giI/AAAAAAAAAMU/o30phomN5iw/clip_image004_thumb.jpg?imgmax=800" style="background-image: none; border-bottom-width: 0px; border-left-width: 0px; border-right-width: 0px; border-top-width: 0px; display: inline; margin: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;" title="clip_image004" width="320" /&gt;&lt;/a&gt; &lt;/div&gt;You can choose multiple fields to update/synced Outlook Contacts as shown in the screen shot below &lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;a href="http://3.bp.blogspot.com/-o3JrfqotIik/TvEnqxqxXCI/AAAAAAAAAN0/icwWN0vECl0/s1600/pic2.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="179" oda="true" src="http://3.bp.blogspot.com/-o3JrfqotIik/TvEnqxqxXCI/AAAAAAAAAN0/icwWN0vECl0/s640/pic2.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;b&gt;Note:&lt;/b&gt; The display name in both in Outlook and CRM2011 are different than the names used in the code. We need the “Name” field of the CRM2011. To get the proper name of the Outlook field please follow this link &lt;a href="http://msdn.microsoft.com/en-us/library/microsoft.office.interop.outlook.contactitem_properties.aspx"&gt;http://msdn.microsoft.com/en-us/library/microsoft.office.interop.outlook.contactitem_properties.aspx&lt;/a&gt; &lt;br /&gt;For e.g. The name of “User Field 1” field is User1. “User Field 1” is just a display name. If the field does not exist in Outlook, the solution will create a new user defined field in Outlook. &lt;br /&gt;&lt;h4&gt;&lt;b&gt;2. OutlookAddin.zip&lt;/b&gt; &lt;/h4&gt;Extract the OutlookAddin.zip file and run the SetupUpdateContact exe. It will add a custom tab to the ribbon as shown in the following screen shot. &lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;a href="http://4.bp.blogspot.com/-D-cnYWsir9M/TvEn0bFu7sI/AAAAAAAAAN8/vEjmCEZe0ps/s1600/pic3.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="125" oda="true" src="http://4.bp.blogspot.com/-D-cnYWsir9M/TvEn0bFu7sI/AAAAAAAAAN8/vEjmCEZe0ps/s400/pic3.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;b&gt;&lt;/b&gt;&lt;br /&gt;When the user clicks on “Update Contact”, it will display a following dialog. Enter all the values and press Update. &lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;a href="http://4.bp.blogspot.com/-T0xGjOGavdk/TvEn7XtJcZI/AAAAAAAAAOE/eC-b3Vb9yUE/s1600/pic4.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="290" oda="true" src="http://4.bp.blogspot.com/-T0xGjOGavdk/TvEn7XtJcZI/AAAAAAAAAOE/eC-b3Vb9yUE/s400/pic4.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;The above screen shot displays the values for CRM Online. &lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;a href="http://4.bp.blogspot.com/-3tXWcfOmfNM/TvEoMRTYXQI/AAAAAAAAAOM/bSwfr0DMP48/s1600/pic5.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="287" oda="true" src="http://4.bp.blogspot.com/-3tXWcfOmfNM/TvEoMRTYXQI/AAAAAAAAAOM/bSwfr0DMP48/s400/pic5.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;The above screen shot displays the values for on-premise CRM Deployment. &lt;br /&gt;At the end of the process, the system will display a following message &lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;a href="http://3.bp.blogspot.com/-przn2XH5wFs/TvEoVIhn6FI/AAAAAAAAAOU/1ZCzDSgdPaM/s1600/pic6.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="190" oda="true" src="http://3.bp.blogspot.com/-przn2XH5wFs/TvEoVIhn6FI/AAAAAAAAAOU/1ZCzDSgdPaM/s400/pic6.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;b&gt;Facts:&lt;/b&gt; &lt;br /&gt;This solution updates text fields in outlook only. If you pick an optionset from CRM2011, the solution will get the text value of the field and update the field in Outlook. &lt;br /&gt;The solution uses the update method to update the individual contacts. The solution does not have any automatic or scheduled syncing mechanism. &lt;br /&gt;This solution is smart enough to update the contacts for the selected organization. If you are synced contacts from different organization. The system will update the contacts of the organization selected in a addin dialog. &lt;br /&gt;&lt;h3&gt;&lt;b&gt;Tips:&lt;/b&gt; &lt;/h3&gt;&lt;ul&gt;&lt;li&gt;Setup the sync fields in syncmapping entity before pressing the update button &lt;/li&gt;&lt;li&gt;Please sync your outlook contacts before trying this solution. &lt;/li&gt;&lt;/ul&gt;Download this &lt;a href="http://updatecontacts.codeplex.com/" target="_blank"&gt;solution&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4535447606986422873-2117138869110536594?l=mscrmshop.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mscrmshop.blogspot.com/feeds/2117138869110536594/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mscrmshop.blogspot.com/2011/12/updating-custom-fields-on-synced.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4535447606986422873/posts/default/2117138869110536594'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4535447606986422873/posts/default/2117138869110536594'/><link rel='alternate' type='text/html' href='http://mscrmshop.blogspot.com/2011/12/updating-custom-fields-on-synced.html' title='Updating custom fields on synced outlook contacts in crm2011'/><author><name>Singh</name><uri>http://www.blogger.com/profile/04193418105246403607</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://4.bp.blogspot.com/_JIbxd7XP7Zc/TM37_rHOKjI/AAAAAAAAAFQ/R_AS52AN6LI/S220/victoria+pic+014.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/-oSc_BODVnFM/TvEnaHkSA_I/AAAAAAAAANs/yq3duhpMiMM/s72-c/pic.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4535447606986422873.post-6118812438063299747</id><published>2011-11-13T16:33:00.001-08:00</published><updated>2011-11-13T16:43:13.623-08:00</updated><title type='text'>CRM2011 Setup/Upgrade Errors and Resolutions</title><content type='html'>This is the second part of my last blog &lt;a href="http://mscrmshop.blogspot.com/2011/11/installing-crm2011-with-precreated-ad.html"&gt;Installing CRM2011 with Precreated AD Groups&lt;/a&gt;.&lt;br /&gt;The following are some of the errors and their resolutions encountered during installation/upgrade &lt;br /&gt;&lt;h1&gt;&lt;b&gt;Error 1&lt;/b&gt;&lt;/h1&gt;SQLSERVERAGENT (SQLSERVERAGENT) service is not running on the server ...... &lt;br /&gt;&lt;br /&gt;&lt;a href="http://lh3.ggpht.com/-xnGLy8V7hOQ/TsBhk_3zxUI/AAAAAAAAAKc/WuJQIKRpBKc/s1600-h/clip_image002%25255B8%25255D.jpg"&gt;&lt;img alt="clip_image002" border="0" height="343" src="http://lh4.ggpht.com/-WLln3KX7so8/TsBhmGpropI/AAAAAAAAAKk/73-l9vXsQ3E/clip_image002_thumb%25255B5%25255D.jpg?imgmax=800" style="background-image: none; border-bottom: 0px; border-left: 0px; border-right: 0px; border-top: 0px; display: inline; padding-left: 0px; padding-right: 0px; padding-top: 0px;" title="clip_image002" width="506" /&gt;&lt;/a&gt; &lt;br /&gt;&lt;b&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;/b&gt;&lt;br /&gt;&lt;h3&gt;&lt;b&gt;Resolution:&lt;/b&gt;&lt;/h3&gt;· Check if SQLSERVERAGENT service is running &lt;br /&gt;· Open the port 445 for SQL Server. &lt;br /&gt;&lt;b&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;br /&gt;&lt;h1&gt;&lt;b&gt;Error 2&lt;/b&gt;&lt;/h1&gt;During the import of the organizations the following warning was received. &lt;br /&gt;"Fragmented indexes were detected in the Microsoft Dynamics CRM database", &lt;br /&gt;&lt;h3&gt;&lt;b&gt;Resolution: &lt;/b&gt;&lt;/h3&gt;&lt;b&gt;&lt;/b&gt;&lt;br /&gt;Re-index the organisation databases &lt;br /&gt;&lt;code&gt;USE &lt;/code&gt;&lt;code&gt;MyDatabase&lt;/code&gt;&lt;br /&gt;&lt;code&gt;GO&lt;/code&gt;&lt;br /&gt;&lt;code&gt;EXEC &lt;/code&gt;&lt;code&gt;sp_MSforeachtable &lt;/code&gt;&lt;code&gt;@command1&lt;/code&gt;&lt;code&gt;=&lt;/code&gt;&lt;code&gt;"print '?' DBCC DBREINDEX ('?', ' ', 80)"&lt;/code&gt;&lt;br /&gt;&lt;code&gt;GO&lt;/code&gt;&lt;br /&gt;&lt;code&gt;EXEC &lt;/code&gt;&lt;code&gt;sp_updatestats&lt;/code&gt;&lt;br /&gt;&lt;code&gt;GO &lt;/code&gt;&lt;br /&gt;Updating statistics ensures that queries compile with up-to-date statistics &lt;br /&gt;&lt;b&gt;&lt;/b&gt;&lt;br /&gt;&lt;h1&gt;&lt;b&gt;Error 3&lt;/b&gt;&lt;/h1&gt;The following error message was received when testing the email router: &lt;br /&gt;Type 'System.ServiceModel.Channels.ReceivedFault' in Assembly 'System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089' is not marked as serializable &lt;br /&gt;&lt;b&gt;&lt;/b&gt;&lt;br /&gt;&lt;h3&gt;&lt;b&gt;Resolution:&lt;/b&gt;&lt;/h3&gt;&lt;b&gt;&lt;/b&gt;&lt;br /&gt;Add the account running the email router services to PrivUserGroup security group. &lt;br /&gt;&lt;h1&gt;&lt;b&gt;Error 4&lt;/b&gt;&lt;/h1&gt;The following error message was received when accessing the reports from any of the organizations: &lt;br /&gt;Microsoft.Crm.Web.Reporting.SrsReportViewer.SetExecutionCredentials(ServerReport reportObj) Cannot create a connection to data source 'MSCRM'. (rsErrorOpeningConnection) &lt;br /&gt;The reason was SSRS connector(reporting extensions) was installed using user other than deployment account. The SSRS service account was missing in privreportinggroup group. &lt;br /&gt;&lt;b&gt;&lt;/b&gt;&lt;br /&gt;&lt;h3&gt;&lt;b&gt;Resolution:&lt;/b&gt;&lt;/h3&gt;&lt;b&gt;&lt;/b&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;· Add SSRS service account to privreporting group.&lt;/li&gt;&lt;li&gt;· Reinstall the reporting extension again using deployment account.&lt;/li&gt;&lt;/ul&gt;The process to resolve was as follows: &lt;br /&gt;&lt;ol&gt;&lt;li&gt;1. Uninstall the Reporting Extensions.&lt;/li&gt;&lt;li&gt;2. Go to the CONFIG DB (MSCRM_CONFIG) of CRM and update your organization's row in the Organization table to set the AreReportsPublished boolean field to FALSE.&lt;/li&gt;&lt;li&gt;3. Re-install the Reporting Extensions and they should publish the reports again.&lt;/li&gt;&lt;/ol&gt;&lt;b&gt;Note:&lt;/b&gt; You will see the message about installation is republishing the reports again &lt;br /&gt;&lt;h1&gt;&lt;a href="http://www.blogger.com/" name="_Toc308531536"&gt;FIXES FOR THE UPGRADED ORGANISATIONS&lt;/a&gt;&lt;/h1&gt;The section contains information on the issues encountered that required fixing for the upgraded organisations. &lt;br /&gt;&lt;h3&gt;&lt;b&gt;Issue 1&lt;/b&gt;&lt;/h3&gt;Unknown labels in settings group as shown in the screen shot below. This had happened to all four organisations. &lt;br /&gt;&lt;a href="http://lh5.ggpht.com/-ki9vcVKz06I/TsBhnQtD2YI/AAAAAAAAAKs/Rf_LgyKTLuU/s1600-h/image%25255B6%25255D.png"&gt;&lt;img alt="image" border="0" height="417" src="http://lh3.ggpht.com/-5TFftG8CooM/TsBhosYgpnI/AAAAAAAAAK0/3S4IKavJpm8/image_thumb%25255B4%25255D.png?imgmax=800" style="background-image: none; border-bottom: 0px; border-left: 0px; border-right: 0px; border-top: 0px; display: inline; padding-left: 0px; padding-right: 0px; padding-top: 0px;" title="image" width="216" /&gt;&lt;/a&gt;&amp;nbsp;&lt;a href="http://lh3.ggpht.com/-rXYHeh_rnEc/TsBhqC-aWkI/AAAAAAAAAK8/1jEJs4irNt4/s1600-h/clip_image006%25255B7%25255D.jpg"&gt;&lt;img alt="clip_image006" border="0" height="401" src="http://lh3.ggpht.com/--EagKo4o-Y8/TsBhqziLWbI/AAAAAAAAALE/eI54lMtLmMY/clip_image006_thumb%25255B4%25255D.jpg?imgmax=800" style="background-image: none; border-bottom: 0px; border-left: 0px; border-right: 0px; border-top: 0px; display: inline; padding-left: 0px; padding-right: 0px; padding-top: 0px;" title="clip_image006" width="197" /&gt;&lt;/a&gt; &lt;br /&gt;&lt;b&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Before&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; After&lt;/b&gt; &lt;br /&gt;&lt;b&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;/b&gt;&lt;br /&gt;&lt;h4&gt;&lt;b&gt;Resolution:&lt;/b&gt;&lt;/h4&gt;Follow the Microsoft article for resolution: &lt;a href="http://support.microsoft.com/kb/2530358"&gt;http://support.microsoft.com/kb/2530358&lt;/a&gt;. &lt;br /&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;br /&gt;&lt;h3&gt;&lt;b&gt;Issue 2&lt;/b&gt;&lt;/h3&gt;The main tab is closed by default as shown in the screen shot below: &lt;br /&gt;&lt;a href="http://lh3.ggpht.com/-qwgHp0KJe44/TsBikmL0VgI/AAAAAAAAALs/eOR3C2-mIVM/s1600-h/image%25255B12%25255D.png"&gt;&lt;img alt="image" border="0" height="301" src="http://lh5.ggpht.com/-pAMZc8Holqo/TsBimAX8JDI/AAAAAAAAAL0/gCLkQHg5nB4/image_thumb%25255B8%25255D.png?imgmax=800" style="background-image: none; border-bottom: 0px; border-left: 0px; border-right: 0px; border-top: 0px; display: inline; padding-left: 0px; padding-right: 0px; padding-top: 0px;" title="image" width="588" /&gt;&lt;/a&gt; &lt;br /&gt;It is noted that this happened on multiple different locations throughout all the organisations. &lt;br /&gt;&lt;b&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;/b&gt;&lt;br /&gt;&lt;h4&gt;&lt;b&gt;Resolution:&lt;/b&gt;&lt;/h4&gt;&lt;ul&gt;&lt;li&gt;Open the form in customisation mode. &lt;/li&gt;&lt;li&gt;Expand the tab, save the changes and then publish the changes.&lt;/li&gt;&lt;/ul&gt;There were few other things that did not work after upgrade. One of them was, the client has custom button to “Create Phone Cal”&lt;em&gt;&lt;strong&gt; &lt;/strong&gt;&lt;/em&gt;on contact and account form. The button was using builtin javascript function “locAddActTo(4210)”. I need to change the ribbon and javascript to fix that that function does not exist in CRM 2011.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://lh5.ggpht.com/-9bT1d2imoBU/TsBhuXw3ysI/AAAAAAAAALc/bpogGXaE9BI/s1600-h/clip_image002%25255B9%25255D%25255B4%25255D.jpg"&gt;&lt;img alt="clip_image002[9]" border="0" height="140" src="http://lh3.ggpht.com/-MR1O1zRQtBk/TsBhvZgJQxI/AAAAAAAAALk/CwWJBoYr88Q/clip_image002%25255B9%25255D_thumb%25255B2%25255D.jpg?imgmax=800" style="background-image: none; border-bottom: 0px; border-left: 0px; border-right: 0px; border-top: 0px; display: inline; padding-left: 0px; padding-right: 0px; padding-top: 0px;" title="clip_image002[9]" width="163" /&gt;&lt;/a&gt;&lt;br /&gt;That’s all from me.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4535447606986422873-6118812438063299747?l=mscrmshop.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mscrmshop.blogspot.com/feeds/6118812438063299747/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mscrmshop.blogspot.com/2011/11/crm2011-setupupgrade-errors-and.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4535447606986422873/posts/default/6118812438063299747'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4535447606986422873/posts/default/6118812438063299747'/><link rel='alternate' type='text/html' href='http://mscrmshop.blogspot.com/2011/11/crm2011-setupupgrade-errors-and.html' title='CRM2011 Setup/Upgrade Errors and Resolutions'/><author><name>Singh</name><uri>http://www.blogger.com/profile/04193418105246403607</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://4.bp.blogspot.com/_JIbxd7XP7Zc/TM37_rHOKjI/AAAAAAAAAFQ/R_AS52AN6LI/S220/victoria+pic+014.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh4.ggpht.com/-WLln3KX7so8/TsBhmGpropI/AAAAAAAAAKk/73-l9vXsQ3E/s72-c/clip_image002_thumb%25255B5%25255D.jpg?imgmax=800' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4535447606986422873.post-6332991826895403760</id><published>2011-11-05T06:24:00.000-07:00</published><updated>2011-11-05T07:06:33.175-07:00</updated><title type='text'>Installing CRM2011 with precreated AD Groups</title><content type='html'>Last few weeks, I was working on CRM4.0 to CRM2011&amp;nbsp;upgrade.&amp;nbsp; I am doing few blogs to share my experience.&amp;nbsp; My upgrade involved moving the CRM sever and SQL server to a new severs. SSRS server&amp;nbsp;was installed on&amp;nbsp;the same as new SQL Server.&amp;nbsp;&amp;nbsp; &lt;br /&gt;I am not doing a step by step installation in this blog. I will be discussing the useful tips and solutions to some of the errors/problems I encounter.&amp;nbsp; Here are the main steps&lt;br /&gt;1.&amp;nbsp;&amp;nbsp;&amp;nbsp; Install the CRM2011&lt;br /&gt;2.&amp;nbsp;&amp;nbsp;&amp;nbsp; Install reporting extension(SSRS Connector) and Report Authoring Extension(Bids extensions)&lt;br /&gt;3.&amp;nbsp;&amp;nbsp;&amp;nbsp; Backup 4.0 organization databases and restore them on&amp;nbsp; new SQL Server&lt;br /&gt;4.&amp;nbsp;&amp;nbsp;&amp;nbsp; Import the organizations into CRM2011 using deployment manager&lt;br /&gt;5.&amp;nbsp;&amp;nbsp;&amp;nbsp; Install/configure Email router&lt;br /&gt;6.&amp;nbsp;&amp;nbsp;&amp;nbsp; Testing and fixing the issues.&lt;br /&gt;&lt;br /&gt;The installation involved deploying the CRM Server on procreated AD groups.&lt;br /&gt;&lt;br /&gt;&lt;h1&gt;Install the CRM2011 &lt;/h1&gt;&lt;h3&gt;Installation Account Permissions&lt;/h3&gt;The user who is installing Microsoft Dynamics CRM should be a part of Local Administrator group on Microsoft Dynamics CRM server and on SQL Server. For more detail have a look at &lt;a href="http://support.microsoft.com/kb/946677"&gt;http://support.microsoft.com/kb/946677&lt;/a&gt;&lt;br /&gt;Important&lt;br /&gt;The deployment user should also have sysadmin permission on the SQL Server Instance to import the organization (otherwise you will get error message)&lt;br /&gt;&lt;h3&gt;Create the AD Groups&lt;/h3&gt;Create the following security groups in Active Directory: &lt;br /&gt;•&amp;nbsp;&amp;nbsp;&amp;nbsp; PrivUserGroup&lt;br /&gt;•&amp;nbsp;&amp;nbsp;&amp;nbsp; PrivReportingGroup&lt;br /&gt;•&amp;nbsp;&amp;nbsp;&amp;nbsp; ReportingGroup&lt;br /&gt;•&amp;nbsp;&amp;nbsp;&amp;nbsp; SQLAccessGroup&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color: red;"&gt;Important&lt;/span&gt;&lt;/strong&gt;•&amp;nbsp;&amp;nbsp;&amp;nbsp; You don’t need to create UserGroup for CRM2011.&lt;br /&gt;•&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Use naming&amp;nbsp;conventions&amp;nbsp;for creating the groups&amp;nbsp;for e.g.&amp;nbsp; OrgEnvironmentNameOfTheGroup (ABCDevPrivUserGroup).&lt;br /&gt;•&amp;nbsp;&amp;nbsp;&amp;nbsp; Need to know more about permissions on these group, click here &lt;a href="http://support.microsoft.com/kb/946677"&gt;http://support.microsoft.com/kb/946677&lt;/a&gt;&lt;br /&gt;&lt;h3&gt;Create configuration xml file for precreated groups&lt;/h3&gt;Here is sample of the config file&lt;br /&gt;&lt;br /&gt;&lt;pre class="prettyprint"&gt;&amp;lt;CRMSetup&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;lt;Server&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;Groups AutoGroupManagementOff="true"&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;PrivUserGroup&amp;gt;&lt;span style="background-color: #cfe2f3;"&gt;CN=PrivUserGroup,OU=Company Name,OU=Company Name,DC=&amp;lt;domain&amp;gt;,DC=&amp;lt;domain_&lt;/span&gt;&lt;span style="background-color: #cfe2f3;"&gt;extension&amp;gt;&lt;/span&gt;&lt;span style="background-color: white;"&gt;&amp;lt;&lt;/span&gt;/PrivUserGroup&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;SQLAccessGroup&amp;gt;&lt;span style="background-color: #cfe2f3;"&gt;CN=SQLAccessGroup,OU=Company Name,OU=Company Name, DC=&amp;lt;domain&amp;gt;,DC=&amp;lt;domain_&lt;/span&gt;&lt;span style="background-color: #cfe2f3;"&gt;extension&amp;gt;&lt;/span&gt;&amp;lt;/SQLAccessGroup&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;ReportingGroup&amp;gt;&lt;span style="background-color: #cfe2f3;"&gt;CN=ReportingGroup,OU=Company Name,OU=Company Name, DC=&amp;lt;domain&amp;gt;,DC=&amp;lt;domain_&lt;/span&gt;&lt;span style="background-color: #cfe2f3;"&gt;extension&amp;gt;&lt;/span&gt;&lt;span style="background-color: white;"&gt;&amp;lt;&lt;/span&gt;/ReportingGroup&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;PrivReportingGroup&amp;gt;&lt;span style="background-color: #cfe2f3;"&gt;CN=PrivReportingGroup,OU=Company Name,OU=Company Name, DC=&amp;lt;domain&amp;gt;,DC=&amp;lt;domain_extensi&lt;/span&gt;&lt;span style="background-color: #cfe2f3;"&gt;on&amp;gt;&lt;/span&gt;&amp;lt;/PrivReportingGroup&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/Groups&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/Server&amp;gt;&lt;br /&gt;&amp;lt;/CRMSetup&amp;gt;&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;Now you need to change highlighted parts of the file to suit your system. If you like to know more about the structure chek the Microsoft article mentioned above in the post.&lt;br /&gt;&lt;br /&gt;The easiest way to get the proper CN,OUs,DCs without making any mistakes use the dsquery command. Open the command prompt and Run &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: red;"&gt;&lt;span style="font-size: medium;"&gt;dsquery group -name adgroupprefix*&lt;/span&gt; &lt;/span&gt;Change adgroupprefix with starting characters of your group&lt;br /&gt;For e.g dsquery group -name ABCDev*&lt;br /&gt;&lt;br /&gt;&lt;a href="http://lh5.ggpht.com/-FmeVhpgR1gA/TrPbpbuQUaI/AAAAAAAAAKQ/1_IOhuVYM2w/s1600-h/image%25255B7%25255D.png"&gt;&lt;img alt="image" border="0" height="213" src="http://lh5.ggpht.com/-CJqHmf7Cbew/TrPWfwbScNI/AAAAAAAAAKY/bwfO8rCpkS4/image_thumb%25255B7%25255D.png?imgmax=800" style="background-image: none; border-bottom: 0px; border-left: 0px; border-right: 0px; border-top: 0px; display: inline; padding-left: 0px; padding-right: 0px; padding-top: 0px;" title="image" width="846" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;It will display all the information you need to fill the config file.&lt;br /&gt;Just copy that and replace highlighted area in the config file above.&lt;br /&gt;Save the file as config.xml.&lt;br /&gt;&lt;h3&gt;Run CRM2011 Install&lt;/h3&gt;&lt;ul&gt;&lt;li&gt;Open the cmd prompt and navigate the crm media&amp;nbsp; to folder containing ServerSetup.exe.&lt;/li&gt;&lt;li&gt;Run ServerSetup.exe /config C:\config.xml&lt;/li&gt;&lt;li&gt;Follow the installation wizard instructions.&lt;/li&gt;&lt;/ul&gt;&lt;h1&gt;Install reporting extension (SSRS Connector) and Report Authoring Extension (Bids extensions)&lt;/h1&gt;&lt;br /&gt;&lt;h3&gt;Reporting extension (SSRS Connector)&lt;/h3&gt;The deployment needs local administrator permissions to install reporting extension (SSRS Connector). The installation adds the Microsoft SQL Server Reporting Services “service account” for the associated instance of SQL Server to the PrivReportingGroup security group.&lt;br /&gt;&lt;strong&gt;&lt;span style="color: red;"&gt;Important&lt;/span&gt;&lt;/strong&gt; Reporting extensions must be installed to publish the reports and to import the organization.&lt;br /&gt;&lt;br /&gt;&lt;h3&gt;Report Authoring Extension&lt;/h3&gt;(Bids extensions) is required to write fetchxml based reports.&lt;br /&gt;&lt;br /&gt;Second part is coming soon........&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4535447606986422873-6332991826895403760?l=mscrmshop.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mscrmshop.blogspot.com/feeds/6332991826895403760/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mscrmshop.blogspot.com/2011/11/installing-crm2011-with-precreated-ad.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4535447606986422873/posts/default/6332991826895403760'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4535447606986422873/posts/default/6332991826895403760'/><link rel='alternate' type='text/html' href='http://mscrmshop.blogspot.com/2011/11/installing-crm2011-with-precreated-ad.html' title='Installing CRM2011 with precreated AD Groups'/><author><name>Singh</name><uri>http://www.blogger.com/profile/04193418105246403607</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://4.bp.blogspot.com/_JIbxd7XP7Zc/TM37_rHOKjI/AAAAAAAAAFQ/R_AS52AN6LI/S220/victoria+pic+014.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh5.ggpht.com/-CJqHmf7Cbew/TrPWfwbScNI/AAAAAAAAAKY/bwfO8rCpkS4/s72-c/image_thumb%25255B7%25255D.png?imgmax=800' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4535447606986422873.post-2675944507174122294</id><published>2011-10-16T17:03:00.000-07:00</published><updated>2011-10-16T17:16:16.692-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='crm 2011'/><category scheme='http://www.blogger.com/atom/ns#' term='Appointments'/><category scheme='http://www.blogger.com/atom/ns#' term='Locked Section'/><category scheme='http://www.blogger.com/atom/ns#' term='Service Activity'/><title type='text'>How to trigger "onchange" event for the fields  in locked section</title><content type='html'>There is&amp;nbsp; "Scheduling Information" section&amp;nbsp;on&amp;nbsp; Appointment and Service Activity entity forms.&lt;br /&gt;You can not &amp;nbsp;change the properties of the fields in this section. You cannot add javascript&amp;nbsp;to "OnChange" events of these fields. If you double click on any of the field in this section, you will get a message "You can not modify the properties of this element because it is with in a locked section"&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="border-bottom: medium none; border-left: medium none; border-right: medium none; border-top: medium none; clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-yFF5pKdWznk/TptvCJuW9HI/AAAAAAAAAJw/thY900LwM84/s1600/scheduling.PNG" imageanchor="1" style="clear: left; cssfloat: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="232" oda="true" src="http://2.bp.blogspot.com/-yFF5pKdWznk/TptvCJuW9HI/AAAAAAAAAJw/thY900LwM84/s640/scheduling.PNG" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;So how can you add javascript to onchange event on these fields? It is simple and here is what I did to achieve this. &lt;br /&gt;&lt;ul&gt;&lt;li&gt;Add a new tab to the form.&lt;/li&gt;&lt;li&gt;In the visibility section of tab unctick the "Visible by default"&amp;nbsp;checkbox&amp;nbsp;&lt;a href="http://4.bp.blogspot.com/-TknopHceAbQ/Tptp7emeglI/AAAAAAAAAJo/zzc6Yxtq9WM/s1600/Tab.PNG" imageanchor="1" style="clear: left; cssfloat: left; float: left; height: 279px; margin-bottom: 1em; margin-right: 1em; width: 400px;"&gt;&lt;img border="0" height="440" oda="true" src="http://4.bp.blogspot.com/-TknopHceAbQ/Tptp7emeglI/AAAAAAAAAJo/zzc6Yxtq9WM/s640/Tab.PNG" width="640" /&gt;&lt;/a&gt;.&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;In the field explore window untick "Only shows unused fields". It will display all the available entity &amp;nbsp;fields in the list.&lt;/li&gt;&lt;li&gt;Add the fields to this newly created tab. ( Fields that are also present on the locked section)&lt;/li&gt;&lt;li&gt;Add the "On Change" event to one of the field.&lt;/li&gt;&lt;li&gt;Save the changes and publish the entity.&lt;/li&gt;&lt;li&gt;Now if you change the value of field in the locked section, it will trigger the event you defined in the newly created tab's field.&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4535447606986422873-2675944507174122294?l=mscrmshop.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mscrmshop.blogspot.com/feeds/2675944507174122294/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mscrmshop.blogspot.com/2011/10/how-to-trigger-onchange-event-for.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4535447606986422873/posts/default/2675944507174122294'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4535447606986422873/posts/default/2675944507174122294'/><link rel='alternate' type='text/html' href='http://mscrmshop.blogspot.com/2011/10/how-to-trigger-onchange-event-for.html' title='How to trigger &quot;onchange&quot; event for the fields  in locked section'/><author><name>Singh</name><uri>http://www.blogger.com/profile/04193418105246403607</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://4.bp.blogspot.com/_JIbxd7XP7Zc/TM37_rHOKjI/AAAAAAAAAFQ/R_AS52AN6LI/S220/victoria+pic+014.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/-yFF5pKdWznk/TptvCJuW9HI/AAAAAAAAAJw/thY900LwM84/s72-c/scheduling.PNG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4535447606986422873.post-7067192889847112185</id><published>2011-10-05T19:20:00.000-07:00</published><updated>2011-12-01T03:09:11.472-08:00</updated><title type='text'>CRM2011 User Settings Utility 2.0</title><content type='html'>Here I am with User Settings Utility 2.0. I have added some more features to &lt;a href="http://mscrmshop.blogspot.com/2011/08/crm2011-user-settings-utility.html"&gt;version 1.0&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Here is a complete list of new features.&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Ability to filter users based on&amp;nbsp; Business Unit name.&lt;/li&gt;&lt;li&gt;Ability to set the email options &lt;/li&gt;&lt;ul&gt;&lt;li&gt;Allow other users to send emails on user's behalf&lt;/li&gt;&lt;li&gt;Track Email Messages&lt;/li&gt;&lt;li&gt;Create Records from tracked email&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;Ability&amp;nbsp;to add/remove Startup Pane&lt;/li&gt;&lt;li&gt;Ability&amp;nbsp;to open the advance find in simple or detailed mode&lt;/li&gt;&lt;li&gt;Ability&amp;nbsp;to set Error Notification Preference&lt;/li&gt;&lt;/ol&gt;&lt;div&gt;Here is link to &lt;a href="http://crm2011usersettings.codeplex.com/releases/view/74503"&gt;download the solution&lt;/a&gt;&amp;nbsp;from codeplex.&lt;/div&gt;&lt;div&gt;&lt;h2&gt;Screen Shot&lt;/h2&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;a href="http://1.bp.blogspot.com/-ahYRoX_K0Wg/To0N_3D2s6I/AAAAAAAAAJY/jRVk3tdtJpQ/s1600/utility+2.0.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="432" src="http://1.bp.blogspot.com/-ahYRoX_K0Wg/To0N_3D2s6I/AAAAAAAAAJY/jRVk3tdtJpQ/s640/utility+2.0.PNG" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;Good Luck.&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4535447606986422873-7067192889847112185?l=mscrmshop.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mscrmshop.blogspot.com/feeds/7067192889847112185/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mscrmshop.blogspot.com/2011/10/crm2011-user-settings-utility-20.html#comment-form' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4535447606986422873/posts/default/7067192889847112185'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4535447606986422873/posts/default/7067192889847112185'/><link rel='alternate' type='text/html' href='http://mscrmshop.blogspot.com/2011/10/crm2011-user-settings-utility-20.html' title='CRM2011 User Settings Utility 2.0'/><author><name>Singh</name><uri>http://www.blogger.com/profile/04193418105246403607</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://4.bp.blogspot.com/_JIbxd7XP7Zc/TM37_rHOKjI/AAAAAAAAAFQ/R_AS52AN6LI/S220/victoria+pic+014.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/-ahYRoX_K0Wg/To0N_3D2s6I/AAAAAAAAAJY/jRVk3tdtJpQ/s72-c/utility+2.0.PNG' height='72' width='72'/><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4535447606986422873.post-3773223733503537607</id><published>2011-09-18T22:41:00.000-07:00</published><updated>2012-01-04T16:51:56.851-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Creating email using rest endpoints.'/><category scheme='http://www.blogger.com/atom/ns#' term='Creating activities using rest endpoints.'/><title type='text'>How to create an email activity using REST Endpoints in CRM2011</title><content type='html'>&lt;br /&gt;How tough it can be to create an activity using code? It sounds very easy but there are few issues, if you are using REST Endpoints.&lt;br /&gt;&lt;br /&gt;REST Endpoints do not support all the CRM data types. One of those data type is PartyList. PartyList is very important to create most of the activity like emails, appointments, phone calls etc.&lt;br /&gt;&lt;br /&gt;To set the value of the PartyList field you need an array of PartyLists as you can have more than value for those fields. For e.g you can have more than one recipient for an email or you can have more than resource for an appointment.&lt;br /&gt;&lt;br /&gt;As I mentioned earlier, REST Endpoints do not support PartyList, So its is impossible to assign value to these fields. If you look at DataSet returned by the Rest Endpoints, It looks like they are treating PartyList fields like string fields.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://lh6.ggpht.com/-aSnSz0KCyD4/TnbOaplRKuI/AAAAAAAAAJQ/Kes9U2hxw1Q/s1600-h/image%25255B4%25255D.png"&gt;&lt;img alt="image" border="0" height="55" src="http://lh5.ggpht.com/-pFTSmfQNN1Y/TnbObTm9xyI/AAAAAAAAAJU/4RXQfYeLggA/image_thumb%25255B2%25255D.png?imgmax=800" style="background-image: none; border-bottom: 0px; border-left: 0px; border-right: 0px; border-top: 0px; display: inline; padding-left: 0px; padding-right: 0px; padding-top: 0px;" title="image" width="615" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;These values does not even return the guid or name of the PartyList entity. if you look at sender field in the screen shot above, it does not have guid or the name of the system user who sent this email.&lt;br /&gt;I tried the same using following code:&lt;br /&gt;&lt;br /&gt;&lt;pre class="prettyprint"&gt;email.Sender="crm2011@emailops.com.au";&lt;br /&gt;var partlistcollection = new Array(); //tried to create an array of PartyLists&lt;br /&gt;&lt;br /&gt;partlistcollection[0] = {Id: "8384E684-7686-E011-8AF0-00155D32042E",LogicalName: "contact",Name: "Amreek Singh"};&lt;br /&gt;email.ToRecipients=JSON.stringify(partlistcollection);&lt;/pre&gt;&lt;pre class="brush: csharp"&gt;&lt;/pre&gt;But it did not work, if you pass a string value to the PartyList fields, You won’t get any error message but you won’t see any value in those fields on a created entity. &lt;br /&gt;&lt;br /&gt;Now here is the solution. You need to create an activity (in this case it’s&amp;nbsp; an email) first and then create a PartyList entity and link it back to the created&amp;nbsp;activity.&lt;br /&gt;&lt;br /&gt;&lt;pre class="prettyprint"&gt;function CreateEmail() {&lt;br /&gt;alert("CreateEmail Begin");&lt;br /&gt;&lt;br /&gt;var email = new Object();&lt;br /&gt;email.Subject = "Sample Email Using REST";&lt;br /&gt;SDK.JScriptRESTDataOperations.Create(email, "Email", EmailCallBack, function (error) { alert(error.message); });&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;// Email Call Back function&lt;br /&gt;function EmailCallBack(result)&lt;br /&gt;{&lt;br /&gt;var activityParty=new Object();&lt;br /&gt;// Set the "party" of the ActivityParty // EntityReference of an entity this activityparty relatated to. &lt;br /&gt;activityParty.PartyId = {&lt;br /&gt;  Id: "8384E684-7686-E011-8AF0-00155D32042E",//replace this with the contactid from your system.&lt;br /&gt;  LogicalName: "contact"&lt;br /&gt;};&lt;br /&gt;// Set the "activity" of the ActivityParty&lt;br /&gt;// EntityReference.&lt;br /&gt;activityParty.ActivityId = {&lt;br /&gt;  Id: result.ActivityId, &lt;br /&gt;  LogicalName: "email"&lt;br /&gt;};&lt;br /&gt;// Set the participation type (what role the party has on the activity).&lt;br /&gt;activityParty.ParticipationTypeMask = { Value: 2 }; // 2 mean ToRecipients&lt;br /&gt;SDK.JScriptRESTDataOperations.Create(activityParty, "ActivityParty",ActivityPartyCallBack , function (error) { alert(error.message); });&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;function ActivityPartyCallBack(reuslt)&lt;br /&gt;{&lt;br /&gt;alert("Process Completed");&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;activityParty.ParticipationTypeMask = { Value: 2 }; is very important as it will specify if this PartList is sender/recipient/resource etc&amp;nbsp; of the activity.&lt;br /&gt;&lt;br /&gt;Here is the link to complete list of activityParty.ParticipationTypeMask&amp;nbsp;&lt;a href="http://msdn.microsoft.com/en-us/library/cc151230.aspx"&gt;click here.&lt;/a&gt;&lt;br /&gt;For this sample, I have used the generic REST CRUD data operations library created by Jim Daly.&lt;br /&gt;Add references to following Java Script&amp;nbsp;&amp;nbsp;web resources to try the solution.&lt;br /&gt;&lt;ul&gt;&lt;li&gt;SDK.JScriptRESTDataOperations&lt;/li&gt;&lt;li&gt;JSON2&lt;/li&gt;&lt;/ul&gt;Here is the link to unmanaged solution&amp;nbsp;&lt;a href="https://skydrive.live.com/redir.aspx?cid=3b7a5e0d9e37a0c8&amp;amp;resid=3B7A5E0D9E37A0C8!124"&gt;RESTEmailSolution_1_0&lt;/a&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;I hope this helps.&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/4535447606986422873-3773223733503537607?l=mscrmshop.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mscrmshop.blogspot.com/feeds/3773223733503537607/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mscrmshop.blogspot.com/2011/09/how-to-create-email-activity-using-rest.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4535447606986422873/posts/default/3773223733503537607'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4535447606986422873/posts/default/3773223733503537607'/><link rel='alternate' type='text/html' href='http://mscrmshop.blogspot.com/2011/09/how-to-create-email-activity-using-rest.html' title='How to create an email activity using REST Endpoints in CRM2011'/><author><name>Singh</name><uri>http://www.blogger.com/profile/04193418105246403607</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://4.bp.blogspot.com/_JIbxd7XP7Zc/TM37_rHOKjI/AAAAAAAAAFQ/R_AS52AN6LI/S220/victoria+pic+014.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh5.ggpht.com/-pFTSmfQNN1Y/TnbObTm9xyI/AAAAAAAAAJU/4RXQfYeLggA/s72-c/image_thumb%25255B2%25255D.png?imgmax=800' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4535447606986422873.post-4877979664927372468</id><published>2011-09-06T18:45:00.001-07:00</published><updated>2011-09-25T06:45:13.958-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='How to change the maximum no. of cells on dashboards'/><title type='text'>How to change the maximum no. of controls on CRM2011 Dashboards</title><content type='html'>The maximum number of controls allowed on CRM2011 dashboards are 6. You cannot put the more than 6 graphs/charts/iframes/webresources etc. on the dashboard.&lt;br /&gt;This setting is applied to the server not a organisation setting. So you cannot change this setting for CRM Online but you can change this for an on-premise installation.&lt;br /&gt;There are two ways to do it.&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Using Deployment Web Service (&lt;a href="http://myservername/xrmdeployment/2011/deployment.svc)" title="http://myservername/xrmdeployment/2011/deployment.svc    "&gt;http://myservername/xrmdeployment/2011/deployment.svc)&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Using Window Power Shell &lt;/li&gt;&lt;/ol&gt;Windows Power Shell Option is the easiest one.&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Open the Windows Power Shell&lt;/li&gt;&lt;li&gt;Add the Microsoft Dynamics CRM PowerShell snap-in using&lt;/li&gt;&lt;/ul&gt;&lt;blockquote&gt;&lt;strong&gt;Add-PSSnapin Microsoft.Crm.PowerShell&lt;/strong&gt;&lt;/blockquote&gt;&lt;blockquote&gt;you may get the message saying something like “Add-PSSnapin : Cannot add Windows PowerShell snap-in Microsoft.Crm.PowerShell because it is already added.” It is okay.&lt;/blockquote&gt;&lt;ul&gt;&lt;li&gt;Run the following 3 command&lt;/li&gt;&lt;/ul&gt;&lt;blockquote&gt;&lt;strong&gt;$setting = Get-CrmSetting -SettingType DashboardSettings&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;$setting.MaximumControlsLimit = 7 (// you can change this number)&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;Set-CrmSetting -Setting $setting&lt;/strong&gt;&lt;/blockquote&gt;Here is my screen shot with 7 charts.&lt;br /&gt;&lt;ul&gt;&lt;a href="http://lh6.ggpht.com/-dcqgvJ5gVV8/TmbMyi9JC0I/AAAAAAAAAJI/Ugho2Vr2ks4/s1600-h/Charts%25255B5%25255D.png"&gt;&lt;img align="left" alt="Charts" border="0" height="345" src="http://lh3.ggpht.com/-8h39xlGSZm0/TmbM0PPEtTI/AAAAAAAAAJM/v7KhGOPRN4M/Charts_thumb%25255B3%25255D.png?imgmax=800" style="background-image: none; border-bottom: 0px; border-left: 0px; border-right: 0px; border-top: 0px; display: inline; float: left; padding-left: 0px; padding-right: 0px; padding-top: 0px;" title="Charts" width="700" /&gt;&lt;/a&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4535447606986422873-4877979664927372468?l=mscrmshop.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mscrmshop.blogspot.com/feeds/4877979664927372468/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mscrmshop.blogspot.com/2011/09/how-to-change-maximum-no-of-control-in.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4535447606986422873/posts/default/4877979664927372468'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4535447606986422873/posts/default/4877979664927372468'/><link rel='alternate' type='text/html' href='http://mscrmshop.blogspot.com/2011/09/how-to-change-maximum-no-of-control-in.html' title='How to change the maximum no. of controls on CRM2011 Dashboards'/><author><name>Singh</name><uri>http://www.blogger.com/profile/04193418105246403607</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://4.bp.blogspot.com/_JIbxd7XP7Zc/TM37_rHOKjI/AAAAAAAAAFQ/R_AS52AN6LI/S220/victoria+pic+014.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh3.ggpht.com/-8h39xlGSZm0/TmbM0PPEtTI/AAAAAAAAAJM/v7KhGOPRN4M/s72-c/Charts_thumb%25255B3%25255D.png?imgmax=800' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4535447606986422873.post-2395915452615657283</id><published>2011-08-29T05:51:00.001-07:00</published><updated>2011-08-29T16:18:54.506-07:00</updated><title type='text'>CRM2011 User Settings Utility</title><content type='html'>&lt;p&gt;Hi Guys, I have created this CRM2011 utility tool that will help administrators to update personal settings of multiple users with few clicks. This is also my first codeplex project. Here is the link &lt;a href="http://crm2011usersettings.codeplex.com/"&gt;http://crm2011usersettings.codeplex.com&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;Please leave the feedback and suggestions.&lt;/p&gt;&lt;p&gt;&lt;a href="http://lh3.ggpht.com/-mNv_mbCgwhw/TluLVYKiJGI/AAAAAAAAAJA/zPW_h215O5o/s1600-h/Utility%25255B8%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="Utility" border="0" alt="Utility" src="http://lh4.ggpht.com/-plniBc5dZKc/TluLWzip37I/AAAAAAAAAJE/0Xwfava5PcM/Utility_thumb%25255B6%25255D.png?imgmax=800" width="795" height="722" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;Thanks&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4535447606986422873-2395915452615657283?l=mscrmshop.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mscrmshop.blogspot.com/feeds/2395915452615657283/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mscrmshop.blogspot.com/2011/08/crm2011-user-settings-utility.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4535447606986422873/posts/default/2395915452615657283'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4535447606986422873/posts/default/2395915452615657283'/><link rel='alternate' type='text/html' href='http://mscrmshop.blogspot.com/2011/08/crm2011-user-settings-utility.html' title='CRM2011 User Settings Utility'/><author><name>Singh</name><uri>http://www.blogger.com/profile/04193418105246403607</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://4.bp.blogspot.com/_JIbxd7XP7Zc/TM37_rHOKjI/AAAAAAAAAFQ/R_AS52AN6LI/S220/victoria+pic+014.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh4.ggpht.com/-plniBc5dZKc/TluLWzip37I/AAAAAAAAAJE/0Xwfava5PcM/s72-c/Utility_thumb%25255B6%25255D.png?imgmax=800' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4535447606986422873.post-7164638735197762726</id><published>2011-08-02T20:07:00.001-07:00</published><updated>2011-11-02T15:33:16.477-07:00</updated><title type='text'>Enable/Disable Out of Box buttons (Sub Grid) based on a custom rule in crm 2011</title><content type='html'>You may have read millions of blogs on this topic. Here is my attempt.&lt;br /&gt;&lt;h4&gt;Scenario:&lt;/h4&gt;We have an entity with “Many to One relationship” to multiple entities. We want to disable “Add Existing” button on subgrids of some of those entities.&lt;br /&gt;In this example, I am disabling a “Add Existing Contact” button for all the entities except account. I am modifying the ribbon of contact entity.&lt;br /&gt;&lt;h4&gt;Steps: There are 3 major steps to accomplish this solution&lt;/h4&gt;&lt;ol&gt;&lt;li&gt;JavaScript web resource &lt;/li&gt;&lt;li&gt;Button id and command definition of the button we want to disabale/enable. &lt;/li&gt;&lt;li&gt;Modify the ribbon definition of the entity ribbon. &lt;/li&gt;&lt;/ol&gt;Here are steps the steps in detail&lt;br /&gt;&lt;h3&gt;Step 1: Javascript WebResource&lt;/h3&gt;&lt;ul&gt;&lt;li&gt;Create a new javascript webresource with name new_CustomRule.js and add the following lines in it.&lt;/li&gt;&lt;/ul&gt;&lt;blockquote&gt;&lt;pre class="prettyprint"&gt;function HideExisting( PrimaryEntityTypeCode)&lt;br /&gt; {&lt;br /&gt;  if (PrimaryEntityTypeCode ==1)&lt;br /&gt;        {&lt;br /&gt;        return true;&lt;br /&gt;         }&lt;br /&gt;         else&lt;br /&gt;         {&lt;br /&gt;          return false;&lt;br /&gt;          }&lt;br /&gt; }&lt;br /&gt;&lt;/pre&gt;&lt;/blockquote&gt;&lt;ul&gt;&lt;li&gt;Save the webresource and publish it.&lt;/li&gt;&lt;/ul&gt;The HideExisting function is checking value of PrimaryEntityTypeCode parameter passed to it. If the PrimaryEntityTypeCode is 1(account) the function will return true otherwise it will return false.The function will enable the “Add Existing Contact” if it is on account form but disable the button on any other entity form.&lt;br /&gt;&lt;h3&gt;Step 2: Getting the button id/s and command definitions of the button/s&lt;/h3&gt;&lt;ul&gt;&lt;li&gt;&lt;br /&gt;&lt;div align="justify"&gt;If you don’t have CRM2011 SDK, download one. Go to location sdk\samplecode\cs\client\ribbon\exportribbonxml in SDK.&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;br /&gt;&lt;div align="justify"&gt;If you are using system entity and it’s ribbon has not been modified before, click on exportedribbonxml folder and open up the ribbon of your entity.&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;br /&gt;&lt;div align="justify"&gt;If you are working with a custom entity or with the system entity whose ribbon has been modified, open the exportribbonxml solution in Visual studio. If you are using a custom entity enter your entity name in ExportRibbonXml.cs in the following section.&lt;/div&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;a href="http://lh6.ggpht.com/-OZk4bp2JeMs/Tji7UmVDvoI/AAAAAAAAAIw/HW2qstUcoak/s1600-h/image%25255B5%25255D.png"&gt;&lt;img alt="image" border="0" src="http://lh3.ggpht.com/-AjbVHo3qgJQ/Tji7VZ2d7iI/AAAAAAAAAI0/IXN9CgWqkcA/image_thumb%25255B3%25255D.png?imgmax=800" style="background-image: none; border-bottom-width: 0px; border-left-width: 0px; border-right-width: 0px; border-top-width: 0px; display: inline; padding-left: 0px; padding-right: 0px; padding-top: 0px;" title="image" /&gt;&lt;/a&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;Run the program and it will generate the ribbon definitions for the all the entities mentioned in the program.&lt;/li&gt;&lt;li&gt;Open the entity ribbon from exportedribbonxml folder and search for the button you are interested in. We are looking for “AddExisting” buttons in this case scenario. we need the whole &amp;lt;Buttons&amp;gt;tags for this solution&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;a href="http://lh4.ggpht.com/-SUqe_QwBSQw/Tji7WOVLDtI/AAAAAAAAAI4/5ppB6CPOz18/s1600-h/image%25255B11%25255D.png"&gt;&lt;img alt="image" border="0" src="http://lh3.ggpht.com/-5kwARvqn7K8/Tji7XEwCydI/AAAAAAAAAI8/00JWBE7ulGM/image_thumb%25255B7%25255D.png?imgmax=800" style="background-image: none; border-bottom-width: 0px; border-left-width: 0px; border-right-width: 0px; border-top-width: 0px; display: inline; padding-left: 0px; padding-right: 0px; padding-top: 0px;" title="image" /&gt;&lt;/a&gt;&lt;/blockquote&gt;&lt;br /&gt;AddExistingStandard button is used when we embed a grid on the form and AddExistingAssoc is used when we click on native left navigation link. Look at “Command” name in the button tags above. We need the command definitions for these commands. &lt;br /&gt;&lt;h3&gt;Step 3: Modify the Ribbon definition of Contact entity&lt;/h3&gt;&lt;ul&gt;&lt;li&gt;Create a new solution in CRM, add contact entity to the solution and export the solution. &lt;/li&gt;&lt;br /&gt;&lt;li&gt;Open the customization file from the exported solution and look for &amp;lt;RibbonDiffXML&amp;gt; . It will look like following. We are making changes to 3 areas of the definition highlighted in red.&lt;/li&gt;&lt;/ul&gt;&lt;blockquote&gt;&lt;pre class="prettyprint"&gt;&amp;lt;RibbonDiffXml&amp;gt;&lt;br /&gt;        &lt;span style="background-color: red;"&gt;&amp;lt;CustomActions /&amp;gt; &lt;/span&gt;        &lt;br /&gt;        &amp;lt;Templates&amp;gt;&lt;br /&gt;               &amp;lt;RibbonTemplates Id=“Mscrm.Templates“&amp;gt;&amp;lt;/RibbonTemplates&amp;gt;&lt;br /&gt;        &amp;lt;/Templates&amp;gt;&lt;br /&gt;       &lt;span style="background-color: red;"&gt; &amp;lt;CommandDefinitions /&amp;gt;&lt;/span&gt;&lt;br /&gt;        &amp;lt;RuleDefinitions&amp;gt;&lt;br /&gt;       &amp;lt;TabDisplayRules /&amp;gt;&lt;br /&gt;       &amp;lt;DisplayRules /&amp;gt;&lt;br /&gt;       &lt;span style="background-color: red;"&gt;&amp;lt;EnableRules /&amp;gt;&lt;/span&gt;&lt;br /&gt;       &amp;lt;/RuleDefinitions&amp;gt;&lt;br /&gt;       &amp;lt;LocLabels /&amp;gt;&lt;br /&gt;&amp;lt;/RibbonDiffXml&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;/blockquote&gt;&lt;ul&gt;&lt;li&gt;Repalce the &lt;span style="background-color: red;"&gt;&amp;lt;CustomActions /&amp;gt; &lt;/span&gt;with&lt;/li&gt;&lt;/ul&gt;&lt;blockquote&gt;&lt;pre class="prettyprint"&gt; &amp;lt;CustomActions&amp;gt;&lt;br /&gt;            &amp;lt;CustomAction Id=&lt;span class="str"&gt;"AddExistingCustomAction"&lt;/span&gt;  &lt;span class="Apple-style-span" style="background-color: white;"&gt;Location=&lt;/span&gt;&lt;span class="str" style="background-color: #cfe2f3;"&gt;"Mscrm.SubGrid.contact.AddExistingAssoc"&lt;/span&gt;  Sequence=&lt;span class="str"&gt;"40"&lt;/span&gt;&amp;gt;&lt;br /&gt;              &amp;lt;CommandUIDefinition&amp;gt;&lt;br /&gt;                &amp;lt;Button Id=&lt;span class="str" style="background-color: #cfe2f3;"&gt;"Mscrm.SubGrid.contact.AddExistingAssoc"&lt;/span&gt;  Command=&lt;span class="str"&gt;"Mscrm.AddExistingRecordFromSubGridAssociated"&lt;/span&gt;  Sequence=&lt;span class="str"&gt;"40"&lt;/span&gt; LabelText=&lt;span class="str"&gt;"$Resources(EntityDisplayName):Ribbon.SubGrid.AddExisting"&lt;/span&gt; Alt=&lt;span class="str"&gt;"$Resources(EntityDisplayName):Ribbon.SubGrid.AddExisting"&lt;/span&gt; Image16by16=&lt;span class="str"&gt;"/_imgs/ribbon/AddExistingStandard_16.png"&lt;/span&gt; Image32by32=&lt;span class="str"&gt;"/_imgs/ribbon/AddExistingStandard_32.png"&lt;/span&gt; TemplateAlias=&lt;span class="str"&gt;"o1"&lt;/span&gt; ToolTipTitle=&lt;span class="str"&gt;"$Resources(EntityDisplayName):Mscrm_SubGrid_EntityLogicalName_MainTab_Management_AddExistingAssoc_ToolTipTitle"&lt;/span&gt; ToolTipDescription=&lt;span class="str"&gt;"$Resources(EntityDisplayName):Mscrm_SubGrid_EntityLogicalName_MainTab_Management_AddExistingAssoc_ToolTipDescription"&lt;/span&gt; /&amp;gt;&lt;br /&gt;              &amp;lt;/CommandUIDefinition&amp;gt;&lt;br /&gt;            &amp;lt;/CustomAction&amp;gt;&lt;br /&gt;            &amp;lt;CustomAction Id=&lt;span class="str"&gt;"AddExistingCustomAction2"&lt;/span&gt;  Location=&lt;span class="str"&gt;"Mscrm.SubGrid.contact.AddExistingStandard"&lt;/span&gt;  Sequence=&lt;span class="str"&gt;"40"&lt;/span&gt;&amp;gt;&lt;br /&gt;              &amp;lt;CommandUIDefinition&amp;gt;&lt;br /&gt;                &amp;lt;Button Id=&lt;span class="str"&gt;"Mscrm.SubGrid.contact.AddExistingStandard"&lt;/span&gt; Command=&lt;span class="str"&gt;"Mscrm.AddExistingRecordFromSubGridStandard"&lt;/span&gt; Sequence=&lt;span class="str"&gt;"30"&lt;/span&gt; LabelText=&lt;span class="str"&gt;"$Resources(EntityDisplayName):Ribbon.SubGrid.AddExisting"&lt;/span&gt; Alt=&lt;span class="str"&gt;"$Resources(EntityDisplayName):Ribbon.SubGrid.AddExisting"&lt;/span&gt; Image16by16=&lt;span class="str"&gt;"/_imgs/ribbon/AddExistingStandard_16.png"&lt;/span&gt; Image32by32=&lt;span class="str"&gt;"/_imgs/ribbon/AddExistingStandard_32.png"&lt;/span&gt; TemplateAlias=&lt;span class="str"&gt;"o1"&lt;/span&gt; ToolTipTitle=&lt;span class="str"&gt;"$Resources(EntityDisplayName):Mscrm_SubGrid_EntityLogicalName_MainTab_Management_AddExistingStandard_ToolTipTitle"&lt;/span&gt; ToolTipDescription=&lt;span class="str"&gt;"$Resources(EntityDisplayName):Mscrm_SubGrid_EntityLogicalName_MainTab_Management_AddExistingStandard_ToolTipDescription"&lt;/span&gt; /&amp;gt;&lt;br /&gt;              &amp;lt;/CommandUIDefinition&amp;gt;&lt;br /&gt;            &amp;lt;/CustomAction&amp;gt;&lt;br /&gt; &amp;lt;/CustomActions&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;/blockquote&gt;We need a &amp;lt;CustomAction&amp;gt; to change the behaviour of the button. Make sure location property of &amp;lt;CustomAction&amp;gt; tag is exactly the same as Id property of &amp;lt;Button&amp;gt; tag.&lt;br /&gt;The &amp;lt;Button &amp;gt;tags has been copied from contactribbon file from exportedribbonxml folder mentioned in step 2.&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Repalce the &lt;span style="background-color: red;"&gt;&amp;lt;CommandDefinitions /&amp;gt;&lt;/span&gt; with the command definition from contactribbon file from step 2.&lt;/li&gt;&lt;/ul&gt;&lt;blockquote&gt;&lt;pre class="prettyprint"&gt;&amp;lt;CommandDefinitions&amp;gt;&lt;br /&gt;            &amp;lt;CommandDefinition Id=&lt;span class="str"&gt;"Mscrm.AddExistingRecordFromSubGridStandard"&lt;/span&gt;&amp;gt;&lt;br /&gt;              &amp;lt;EnableRules&amp;gt;&lt;br /&gt;                &amp;lt;EnableRule Id=&lt;span class="str"&gt;"Mscrm.AppendToPrimary"&lt;/span&gt; /&amp;gt;&lt;br /&gt;                &amp;lt;EnableRule Id=&lt;span class="str"&gt;"Mscrm.EntityFormIsEnabled"&lt;/span&gt; /&amp;gt;&lt;br /&gt;                &lt;span style="background-color: #cfe2f3;"&gt;&amp;lt;EnableRule Id=&lt;span class="str"&gt;"Mscrm.AddExistingCustomRule"&lt;/span&gt; /&amp;gt;&lt;/span&gt;&lt;br /&gt;              &amp;lt;/EnableRules&amp;gt;&lt;br /&gt;              &amp;lt;DisplayRules&amp;gt;&lt;br /&gt;                &amp;lt;DisplayRule Id=&lt;span class="str"&gt;"Mscrm.ShowForOneToManyGrids"&lt;/span&gt; /&amp;gt;&lt;br /&gt;                &amp;lt;DisplayRule Id=&lt;span class="str"&gt;"Mscrm.AppendToPrimary"&lt;/span&gt; /&amp;gt;&lt;br /&gt;                &amp;lt;DisplayRule Id=&lt;span class="str"&gt;"Mscrm.AppendSelected"&lt;/span&gt; /&amp;gt;&lt;br /&gt;                &amp;lt;DisplayRule Id=&lt;span class="str"&gt;"Mscrm.CanWriteSelected"&lt;/span&gt; /&amp;gt;&lt;br /&gt;              &amp;lt;/DisplayRules&amp;gt;&lt;br /&gt;              &amp;lt;Actions&amp;gt;&lt;br /&gt;                &amp;lt;JavaScriptFunction FunctionName=&lt;span class="str"&gt;"Mscrm.GridRibbonActions.addExistingFromSubGridStandard"&lt;/span&gt; Library=&lt;span class="str"&gt;"/_static/_common/scripts/RibbonActions.js"&lt;/span&gt;&amp;gt;&lt;br /&gt;                  &amp;lt;CrmParameter Value=&lt;span class="str"&gt;"SelectedEntityTypeCode"&lt;/span&gt; /&amp;gt;&lt;br /&gt;                  &amp;lt;CrmParameter Value=&lt;span class="str"&gt;"SelectedControl"&lt;/span&gt; /&amp;gt;&lt;br /&gt;                &amp;lt;/JavaScriptFunction&amp;gt;&lt;br /&gt;              &amp;lt;/Actions&amp;gt;&lt;br /&gt;            &amp;lt;/CommandDefinition&amp;gt;&lt;br /&gt;            &amp;lt;CommandDefinition Id=&lt;span class="str"&gt;"Mscrm.AddExistingRecordFromSubGridAssociated"&lt;/span&gt;&amp;gt;&lt;br /&gt;              &amp;lt;EnableRules&amp;gt;&lt;br /&gt;                &amp;lt;EnableRule Id=&lt;span class="str"&gt;"Mscrm.AppendPrimary"&lt;/span&gt; /&amp;gt;&lt;br /&gt;                &amp;lt;EnableRule Id=&lt;span class="str"&gt;"Mscrm.AppendToPrimary"&lt;/span&gt; /&amp;gt;&lt;br /&gt;                &amp;lt;EnableRule Id=&lt;span class="str"&gt;"Mscrm.EntityFormIsEnabled"&lt;/span&gt; /&amp;gt;&lt;br /&gt;                &lt;span style="background-color: #cfe2f3;"&gt;&amp;lt;EnableRule Id=&lt;span class="str"&gt;"Mscrm.AddExistingCustomRule"&lt;/span&gt; /&amp;gt;&lt;/span&gt;&lt;br /&gt;              &amp;lt;/EnableRules&amp;gt;&lt;br /&gt;              &amp;lt;DisplayRules&amp;gt;&lt;br /&gt;                &amp;lt;DisplayRule Id=&lt;span class="str"&gt;"Mscrm.ShowForManyToManyGrids"&lt;/span&gt; /&amp;gt;&lt;br /&gt;                &amp;lt;DisplayRule Id=&lt;span class="str"&gt;"Mscrm.AppendPrimary"&lt;/span&gt; /&amp;gt;&lt;br /&gt;                &amp;lt;DisplayRule Id=&lt;span class="str"&gt;"Mscrm.AppendToPrimary"&lt;/span&gt; /&amp;gt;&lt;br /&gt;                &amp;lt;DisplayRule Id=&lt;span class="str"&gt;"Mscrm.AppendSelected"&lt;/span&gt; /&amp;gt;&lt;br /&gt;                &amp;lt;DisplayRule Id=&lt;span class="str"&gt;"Mscrm.AppendToSelected"&lt;/span&gt; /&amp;gt;&lt;br /&gt;                &amp;lt;DisplayRule Id=&lt;span class="str"&gt;"Mscrm.CanWriteSelected"&lt;/span&gt; /&amp;gt;&lt;br /&gt;              &amp;lt;/DisplayRules&amp;gt;&lt;br /&gt;              &amp;lt;Actions&amp;gt;&lt;br /&gt;                &amp;lt;JavaScriptFunction FunctionName=&lt;span class="str"&gt;"Mscrm.GridRibbonActions.addExistingFromSubGridAssociated"&lt;/span&gt; Library=&lt;span class="str"&gt;"/_static/_common/scripts/RibbonActions.js"&lt;/span&gt;&amp;gt;&lt;br /&gt;                  &amp;lt;CrmParameter Value=&lt;span class="str"&gt;"SelectedEntityTypeCode"&lt;/span&gt; /&amp;gt;&lt;br /&gt;                  &amp;lt;CrmParameter Value=&lt;span class="str"&gt;"SelectedControl"&lt;/span&gt; /&amp;gt;&lt;br /&gt;                &amp;lt;/JavaScriptFunction&amp;gt;&lt;br /&gt;              &amp;lt;/Actions&amp;gt;&lt;br /&gt;            &amp;lt;/CommandDefinition&amp;gt;&lt;br /&gt;          &amp;lt;/CommandDefinitions&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;/blockquote&gt;&lt;br /&gt;The only thing we changed in the commandefinition is the &amp;lt;EnableRule&amp;gt; highlighted in Blue.&lt;br /&gt;&lt;span class="Apple-style-span" style="background-color: #cfe2f3;"&gt;&amp;lt;EnableRule Id=&lt;span class="str"&gt;"Mscrm.AddExistingCustomRule"&lt;/span&gt;&amp;nbsp;/&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;&lt;span style="background-color: white;"&gt;N&lt;/span&gt;ow I need to define this rule. Change the &lt;span style="background-color: red;"&gt;&amp;lt;EnableRules /&amp;gt;&lt;/span&gt;&lt;span style="background-color: white;"&gt; &lt;/span&gt;with&lt;/li&gt;&lt;/ul&gt;&lt;blockquote&gt;&lt;pre class="prettyprint"&gt;&amp;lt;EnableRules&amp;gt;&lt;br /&gt;      &amp;lt;EnableRule Id=&lt;span class="str"&gt;"Mscrm.AddExistingCustomRule"&lt;/span&gt;&amp;gt;&lt;br /&gt;       &amp;lt;CustomRule FunctionName=&lt;span class="str"&gt;"HideExisting"&lt;/span&gt; Library=&lt;span class="str"&gt;"$webresource:new_CustomRule.js"&lt;/span&gt; Default=&lt;span class="str"&gt;"false"&lt;/span&gt; &amp;gt;&lt;br /&gt;          &amp;lt;CrmParameter Value=&lt;span class="str"&gt;"PrimaryEntityTypeCode"&lt;/span&gt; /&amp;gt;&lt;br /&gt;        &amp;lt;/CustomRule&amp;gt;&lt;br /&gt;      &amp;lt;/EnableRule&amp;gt;&lt;br /&gt; &amp;lt;/EnableRules&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;/blockquote&gt;In the &amp;lt;CustumRole&amp;gt; I am calling a function HideExisting from webresource CustomRule.js mentioned in step 1. The default return value for this function false.The &amp;lt;CustomRule&amp;gt; is also passing PrimaryEntityTypeCode as parameter to HideExisting function If the function return true, the system will enable the “Add Existing Contact” button otherwise it will be disable the button.&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;Save the file and overwrite the Customization file in your exported solution zip file with this file.&lt;/li&gt;&lt;li&gt;Import the solution zip file and publish it. It’s done.&lt;/li&gt;&lt;/ul&gt;Note: If your solution is not working. The reason may be, when you click on left navigation or click on subgrid on the form the javascript starts loading. But it won’t call the function. But if you click on some other option and come back it will work the second time.This problem has been fixed in Rollup 2 . I spent 2 days to sort this out.&lt;br /&gt;Install rollup 2 and you are good to go.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4535447606986422873-7164638735197762726?l=mscrmshop.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mscrmshop.blogspot.com/feeds/7164638735197762726/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mscrmshop.blogspot.com/2011/08/enabledisable-out-of-box-buttons-based.html#comment-form' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4535447606986422873/posts/default/7164638735197762726'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4535447606986422873/posts/default/7164638735197762726'/><link rel='alternate' type='text/html' href='http://mscrmshop.blogspot.com/2011/08/enabledisable-out-of-box-buttons-based.html' title='Enable/Disable Out of Box buttons (Sub Grid) based on a custom rule in crm 2011'/><author><name>Singh</name><uri>http://www.blogger.com/profile/04193418105246403607</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://4.bp.blogspot.com/_JIbxd7XP7Zc/TM37_rHOKjI/AAAAAAAAAFQ/R_AS52AN6LI/S220/victoria+pic+014.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh3.ggpht.com/-AjbVHo3qgJQ/Tji7VZ2d7iI/AAAAAAAAAI0/IXN9CgWqkcA/s72-c/image_thumb%25255B3%25255D.png?imgmax=800' height='72' width='72'/><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4535447606986422873.post-3353192028153101141</id><published>2011-07-17T23:39:00.001-07:00</published><updated>2011-10-16T04:52:53.859-07:00</updated><title type='text'>Step by Step - Hiding “Add Existing” button in CRM 2011</title><content type='html'>&lt;div style="text-align: left;"&gt;In MSCRM 4.0, hiding the “Add Existing” button was a very common request. This blog will show how to do this in CRM 2011. When we click on associated record link in left navigation of an entity form, we can see a "Add Existing" button on the ribbon. To hide this button we need to modify the ribbon of the associated entity.&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;The following screen shot is of an account entity. If we click on "Contacts" on left navigation, we can see the "Add Existing Contact" button on the ribbon. To hide this button we need to modify the ribbon of the contact entity.&lt;/div&gt;&lt;blockquote&gt;&lt;a href="http://lh6.ggpht.com/-WCQinClNojk/TiYb15nc_zI/AAAAAAAAAIg/aiS1FXQjWK0/s1600-h/image%25255B5%25255D.png"&gt;&lt;img alt="image" border="0" height="323" src="http://lh6.ggpht.com/-ydBj9-72urk/TiYb2sVpNII/AAAAAAAAAIk/_pw7zl1LGV4/image_thumb%25255B3%25255D.png?imgmax=800" style="background-image: none; border-bottom: 0px; border-left: 0px; border-right: 0px; border-top: 0px; display: inline; padding-left: 0px; padding-right: 0px; padding-top: 0px;" title="image" width="546" /&gt;&lt;/a&gt;&lt;/blockquote&gt;Here are the steps&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;span class="Apple-style-span"&gt;Create a new solution. &lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span"&gt;Add the contact entity to the solution. Do not include any required components or dependent components to the solution. &lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span"&gt;Export the solution and unzip the solution file. &lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span"&gt;Open the customizations file and look for “&lt;strong&gt;&amp;lt;RibbonDiffXml&amp;gt;&lt;/strong&gt;” tag. &lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span"&gt;Replace the &lt;strong&gt;&amp;lt;CustomActions /&amp;gt; &lt;/strong&gt;with &lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;pre class="prettyprint"&gt;&amp;lt;CustomActions&amp;gt;&lt;br /&gt;  &amp;lt;HideCustomAction Location="Mscrm.SubGrid.&lt;span style="background-color: yellow;"&gt;contact&lt;/span&gt;.AddExistingAssoc" HideActionId="Mscrm.SubGrid.&lt;span style="background-color: yellow; color: black;"&gt;contact&lt;/span&gt;.AddExistingAssoc.HideAction" /&amp;gt;&lt;br /&gt;  &amp;lt;HideCustomAction Location="Mscrm.SubGrid.&lt;span style="background-color: yellow;"&gt;contact&lt;/span&gt;.AddExistingStandard" HideActionId="Mscrm.SubGrid.&lt;span style="background-color: yellow;"&gt;contact&lt;/span&gt;.AddExistingStandard.HideAction" /&amp;gt;&lt;br /&gt;&amp;lt;/CustomActions&amp;gt;&lt;/pre&gt;&lt;ul&gt;&lt;li&gt;&lt;span class="Apple-style-span"&gt;Save the file.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span"&gt;Replace the customizaions.xml file in your zip solution with this file.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span"&gt;Import the solution and publish the changes.&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;span class="Apple-style-span"&gt;Note: &lt;/span&gt;Replace the highlighted &lt;span style="background-color: yellow;"&gt;"contact”&lt;/span&gt; text with your entity name. It can be “opportunity” or a custom entity like “new_entity” etc.&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span"&gt;Good day…………..&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4535447606986422873-3353192028153101141?l=mscrmshop.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mscrmshop.blogspot.com/feeds/3353192028153101141/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mscrmshop.blogspot.com/2011/07/step-by-step-hiding-add-existing-button.html#comment-form' title='8 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4535447606986422873/posts/default/3353192028153101141'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4535447606986422873/posts/default/3353192028153101141'/><link rel='alternate' type='text/html' href='http://mscrmshop.blogspot.com/2011/07/step-by-step-hiding-add-existing-button.html' title='Step by Step - Hiding “Add Existing” button in CRM 2011'/><author><name>Singh</name><uri>http://www.blogger.com/profile/04193418105246403607</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://4.bp.blogspot.com/_JIbxd7XP7Zc/TM37_rHOKjI/AAAAAAAAAFQ/R_AS52AN6LI/S220/victoria+pic+014.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh6.ggpht.com/-ydBj9-72urk/TiYb2sVpNII/AAAAAAAAAIk/_pw7zl1LGV4/s72-c/image_thumb%25255B3%25255D.png?imgmax=800' height='72' width='72'/><thr:total>8</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4535447606986422873.post-5184873676548931825</id><published>2011-06-29T16:20:00.000-07:00</published><updated>2011-07-19T17:24:14.039-07:00</updated><title type='text'>CRM 2011 Postcode Lookup Solution Version 1.0</title><content type='html'>&lt;p&gt;I have created this postcode lookup solution. You can download the managed solution from &lt;a href="https://skydrive.live.com/?cid=3b7a5e0d9e37a0c8&amp;amp;sc=documents&amp;amp;id=3B7A5E0D9E37A0C8%21124"&gt;here&lt;/a&gt;. The name of the solution file is PostCodeSolution_1_0_managed. The solution consists of 4 files &lt;/p&gt; &lt;ul&gt; &lt;li&gt;new_Json2.js (Javascript webresource)  &lt;/li&gt;&lt;li&gt;new_PostCodeScript(Javascript webresource)  &lt;/li&gt;&lt;li&gt;new_postcode(custom entity to store postcode information)  &lt;/li&gt;&lt;li&gt;new_SuburbOptions (HTML webresource)&lt;/li&gt;&lt;/ul&gt; &lt;h3&gt;&lt;b&gt;How does it work:&lt;/b&gt;&lt;/h3&gt; &lt;ul&gt; &lt;li&gt;User enters the postcode on postal code field and onchange event of the field, the solution will retrieve postcode records related to entered postcode&lt;b&gt;.&lt;/b&gt;  &lt;/li&gt;&lt;li&gt;If there is a record related to entered postcode, the solution will populate the state, suburb and country fields for you.  &lt;/li&gt;&lt;li&gt;If there are more than one records related to entered postcode, solution will prompt you to select the appropriate entry.&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;In the following screen shot, I entered 2000 in postal code field and system prompt to pick the relevant city/suburb. &lt;/p&gt; &lt;p&gt;&lt;span style="font-size: 0px"&gt;&lt;a href="http://lh4.ggpht.com/-DZmL6JFtpVI/TgrB-aVkcwI/AAAAAAAAAHs/3ibzhqcs2Jo/s1600-h/image%25255B7%25255D.png"&gt;&lt;span&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/-qooaHzprlPk/TgrB_NKLZgI/AAAAAAAAAHw/Dm3snmrAsEY/image_thumb%25255B5%25255D.png?imgmax=800" width="579" height="386" /&gt;&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;/p&gt; &lt;h3&gt;&lt;b&gt;Pros:&lt;/b&gt;&lt;/h3&gt; &lt;ul&gt; &lt;li&gt;&lt;b&gt;Clean data entry&lt;/b&gt;: The solution will help to minimise data entry errors in address fields.  &lt;/li&gt;&lt;li&gt;Don’t need to create custom picklist state/or country attributes.  &lt;/li&gt;&lt;li&gt;Using built-in address fields means, don’t need to modified some of the built-in reports.&lt;/li&gt;&lt;/ul&gt; &lt;h3&gt;&lt;b&gt;Cons: &lt;/b&gt;&lt;/h3&gt; &lt;ul&gt; &lt;li&gt;The solution is working only address1_postalcode attribute of an entity. It can work on account , contact or any other entity that has built in address fields.  &lt;/li&gt;&lt;li&gt;The solution is hard coded to fill built in adress1_city, address1_stateorprovince, address1_country fields only. &lt;/li&gt;&lt;/ul&gt; &lt;h3&gt;&lt;b&gt;Version 2.0 : &lt;/b&gt;&lt;/h3&gt; &lt;p&gt;I will release version 2.0 soon, which will not use hard coded attributes. &lt;/p&gt; &lt;h3&gt;&lt;b&gt;Installation Directions:&lt;/b&gt;&lt;/h3&gt; &lt;ol&gt; &lt;li&gt;Install the postcode solution.  &lt;/li&gt;&lt;li&gt;Open the account or contact entity form in customisation mode.  &lt;/li&gt;&lt;li&gt;Double click on Postal Code attribute.  &lt;/li&gt;&lt;li&gt;Add new_Json2.js and new_PostCodeScript to form libraries.  &lt;/li&gt;&lt;li&gt;Call loadPostCodeRequest function from new_PostCodeScript.Save the changes and publish them.&lt;/li&gt;&lt;/ol&gt; &lt;blockquote&gt; &lt;p&gt;&lt;a href="http://lh4.ggpht.com/-HbcCqs94umQ/TgrB_8eiRQI/AAAAAAAAAH0/fQwMr_JkQcI/s1600-h/image%25255B15%25255D.png"&gt;&lt;span style="font-size: 85%"&gt;&lt;span&gt;&lt;img style="background-image: none; border-right-width: 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="image" border="0" alt="image" align="left" src="http://lh4.ggpht.com/-EPvO5DbAU1Q/TgrCApaPgOI/AAAAAAAAAH4/Ql7jWzNDf5M/image_thumb%25255B11%25255D.png?imgmax=800" width="551" height="600" /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;&lt;/blockquote&gt; &lt;p&gt; &lt;/p&gt;&lt;span style="font-size: 85%"&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;                &lt;p&gt; &lt;/p&gt; &lt;p&gt; &lt;/p&gt; &lt;p&gt; &lt;/p&gt; &lt;p&gt; &lt;/p&gt; &lt;p&gt; &lt;/p&gt; &lt;p&gt; &lt;/p&gt; &lt;p&gt; &lt;/p&gt; &lt;p&gt; &lt;/p&gt; &lt;p&gt; &lt;/p&gt; &lt;p&gt; &lt;/p&gt; &lt;p&gt; &lt;/p&gt; &lt;p&gt; &lt;/p&gt; &lt;p&gt; &lt;/p&gt; &lt;p&gt; &lt;/p&gt; &lt;p&gt; &lt;/p&gt; &lt;p&gt; &lt;/p&gt; &lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;6. Import the Postcodes. &lt;/p&gt; &lt;ul&gt; &lt;li&gt;For Australia go to &lt;a href="http://auspost.com.au/products-and-services/download-postcode-data.html"&gt;http://auspost.com.au/products-and-services/download-postcode-data.html&lt;/a&gt; and download the Australian postcodes in csv format.  &lt;/li&gt;&lt;li&gt;Remove the unwanted columns from the .csv file and rename some of the column headings. The file should look this&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: block; float: none; margin-left: auto; border-top: 0px; margin-right: auto; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://lh4.ggpht.com/-U7W3uNmdit0/TiYe3OVh4nI/AAAAAAAAAIs/kavVpygOIuA/image22%25255B1%25255D.png?imgmax=800" width="822" height="386" /&gt;&lt;/p&gt;  &lt;ul&gt; &lt;li&gt;Import the file into new_postcode entity.  &lt;p&gt;&lt;span style="background-color: #ffff00"&gt;Note: You can download the US postal Codes from &lt;/span&gt;&lt;a href="http://federalgovernmentzipcodes.us/"&gt;&lt;span style="background-color: #ffff00"&gt;US ZIP CODES&lt;/span&gt;&lt;/a&gt;&lt;span style="background-color: #ffff00"&gt;.&lt;/span&gt; &lt;/p&gt; &lt;p&gt;You are good to go. &lt;/p&gt; &lt;p&gt;Feedback please.&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;&lt;span style="font-size: 85%"&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span&gt;&lt;/span&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4535447606986422873-5184873676548931825?l=mscrmshop.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mscrmshop.blogspot.com/feeds/5184873676548931825/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mscrmshop.blogspot.com/2011/06/crm-2011-postcode-lookup-solution.html#comment-form' title='9 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4535447606986422873/posts/default/5184873676548931825'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4535447606986422873/posts/default/5184873676548931825'/><link rel='alternate' type='text/html' href='http://mscrmshop.blogspot.com/2011/06/crm-2011-postcode-lookup-solution.html' title='CRM 2011 Postcode Lookup Solution Version 1.0'/><author><name>Singh</name><uri>http://www.blogger.com/profile/04193418105246403607</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://4.bp.blogspot.com/_JIbxd7XP7Zc/TM37_rHOKjI/AAAAAAAAAFQ/R_AS52AN6LI/S220/victoria+pic+014.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh6.ggpht.com/-qooaHzprlPk/TgrB_NKLZgI/AAAAAAAAAHw/Dm3snmrAsEY/s72-c/image_thumb%25255B5%25255D.png?imgmax=800' height='72' width='72'/><thr:total>9</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4535447606986422873.post-5928339669626103032</id><published>2011-06-16T05:49:00.001-07:00</published><updated>2011-08-18T19:31:04.043-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='get entitySet in CRM 2011'/><category scheme='http://www.blogger.com/atom/ns#' term='REST endpoints  to retrieve data in CRM 2011'/><category scheme='http://www.blogger.com/atom/ns#' term='REST endpoints query in CRM 2011'/><title type='text'>Tips for using REST endpoints in CRM 2011(Rest endpoints browser)</title><content type='html'>&lt;p&gt;Using REST endpoints with json2 are the simplest way to retrieve data in CRM 2011. The code is clean and simple. Here is a sample retrieve request&lt;br /&gt;&lt;/p&gt;&lt;div style="BORDER-BOTTOM: silver 1px solid; TEXT-ALIGN: left; BORDER-LEFT: silver 1px solid; PADDING-BOTTOM: 4px; LINE-HEIGHT: 12pt; PADDING-LEFT: 4px; WIDTH: 99.91%; PADDING-RIGHT: 4px; DIRECTION: ltr; HEIGHT: 116px; MAX-HEIGHT: 200px; OVERFLOW: auto; BORDER-TOP: silver 1px solid; CURSOR: text" id="codeSnippetWrapper"&gt;&lt;pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; DIRECTION: ltr; BORDER-TOP-STYLE: none; HEIGHT: 138px" id="codeSnippet"&gt;retrieveAccountsReq.open(&lt;span style="color:#006080;"&gt;"GET"&lt;/span&gt;, getRESTUrl() +&lt;br /&gt;&lt;span&gt;&lt;span class="Apple-style-span"&gt;"/&lt;/span&gt;&lt;span&gt;new_postcodeSet&lt;/span&gt;&lt;span class="Apple-style-span"&gt;?$top=20&amp;amp;$select=new_name,new_Country,new_Suburb,new_State,new_postcodeId&amp;amp;$filter=new_name&lt;br /&gt;eq ('"&lt;/span&gt;&lt;/span&gt; + postcode + &lt;span style="color:#006080;"&gt;"')"&lt;/span&gt;, &lt;span style="color:#0000ff;"&gt;true&lt;/span&gt;);&lt;/pre&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;The above request is used to retrieve the custom entity (new_postcode) dataset where new_name is equal to postcode.&lt;br /&gt;&lt;br /&gt;&lt;div&gt;To get the dataset names for all the entities use &lt;span class="Apple-style-span"&gt;&lt;a href="http://servername:portnumber/organization%20name/XRMServices/2011/OrgazationData.svc/"&gt;http://servername:portnumber/organization name/XRMServices/2011/OrganizationData.svc/&lt;/a&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The result will look like this&lt;pre&gt;&lt;a href="http://lh6.ggpht.com/-BqR3vR5LqH4/Tfn7n8r1xTI/AAAAAAAAAHQ/sg47kvGW6pU/s1600-h/image%25255B5%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/-yYe3FFvf8AU/Tfn7puPi3sI/AAAAAAAAAHU/ykozahzSddU/image_thumb%25255B3%25255D.png?imgmax=800" width="430" height="256" /&gt;&lt;/a&gt;&lt;/pre&gt;To get the fieldnames for an entity you can use &lt;a href="http://servername:portnumber/organization%20name/XRMServices/2011/OrgazationData.svc/entitySet"&gt;http://servername:portnumber/&lt;span class="Apple-style-span" style="color: rgb(51, 51, 255); "&gt;organization name/XRMServices/2011/OrganizationData.svc/entitySet&lt;/span&gt;&lt;/a&gt;&lt;p&gt;&lt;span class="Apple-style-span"&gt;The result will look like this&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="http://lh5.ggpht.com/-7Ivtw--miJo/Tfn7rYPSm-I/AAAAAAAAAHY/Bg3rNZ2pYsU/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://lh4.ggpht.com/-0kqyZq3nLlI/Tfn7uN_e8OI/AAAAAAAAAHc/f1SXJ1ik_wY/image_thumb%25255B11%25255D.png?imgmax=800" width="632" height="408" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;You can even paste the query in the browser and check the result of the query. The following query will display all the records with postcode 2010.&lt;/p&gt;&lt;p&gt;&lt;a href="http://tcrm2010:5555/CRM/XRMServices/2011/OrganizationData.svc/new_postcodeSet?$select=new_name,new_Country,new_Suburb,new_State,new_postcodeId&amp;amp;$filter=new_name"&gt;http://tcrm2010:5555/CRM/XRMServices/2011/OrganizationData.svc/new_postcodeSet?$select=new_name,new_Country,new_Suburb,new_State,new_postcodeId&amp;amp;$filter=new_name&lt;/a&gt;&lt;/p&gt;&lt;p&gt;The result will look like this&lt;/p&gt;&lt;p&gt;&lt;a href="http://lh4.ggpht.com/-dKPnF6fYKFI/Tfn72lEMIdI/AAAAAAAAAHk/9dnEWryiyFA/s1600-h/image%25255B22%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/-UKYw4zfJutI/Tfn74fTn4oI/AAAAAAAAAHo/bsEIYCT7VMc/image_thumb%25255B16%25255D.png?imgmax=800" width="612" height="366" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Conclusion&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;REST endpoints are the best way to retrieve data on client site. You can even see the result of the query in the browser.&lt;/p&gt;&lt;p&gt;Happy Programming……..&lt;/p&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4535447606986422873-5928339669626103032?l=mscrmshop.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mscrmshop.blogspot.com/feeds/5928339669626103032/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mscrmshop.blogspot.com/2011/06/using-rest-endpoints-in-crm-2011rest.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4535447606986422873/posts/default/5928339669626103032'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4535447606986422873/posts/default/5928339669626103032'/><link rel='alternate' type='text/html' href='http://mscrmshop.blogspot.com/2011/06/using-rest-endpoints-in-crm-2011rest.html' title='Tips for using REST endpoints in CRM 2011(Rest endpoints browser)'/><author><name>Singh</name><uri>http://www.blogger.com/profile/04193418105246403607</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://4.bp.blogspot.com/_JIbxd7XP7Zc/TM37_rHOKjI/AAAAAAAAAFQ/R_AS52AN6LI/S220/victoria+pic+014.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh6.ggpht.com/-yYe3FFvf8AU/Tfn7puPi3sI/AAAAAAAAAHU/ykozahzSddU/s72-c/image_thumb%25255B3%25255D.png?imgmax=800' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4535447606986422873.post-1290081041664494913</id><published>2011-06-08T19:10:00.001-07:00</published><updated>2011-11-08T15:07:59.430-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='crm 2011'/><title type='text'>How to start a Dialog from Application Ribbon (CRM 2011)</title><content type='html'>To start the Dialog from the Application Ribbon, you need to 3 things&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Application Ribbon Button (and Button Images) &lt;/li&gt;&lt;li&gt;JavaScript to call the Dialog &lt;/li&gt;&lt;li&gt;Dialog&lt;/li&gt;&lt;/ol&gt;I have attached the unmanaged solution &lt;a href="http://cid-3b7a5e0d9e37a0c8.office.live.com/self.aspx/Public/Dialog%5E_1%5E_0.zip"&gt;here&lt;/a&gt;. The solution contains the following components &lt;br /&gt;&lt;a href="http://lh4.ggpht.com/-kp1wikvDEq4/TfArjdGuAdI/AAAAAAAAAGg/4hAzhjUFdi8/s1600-h/image8.png"&gt;&lt;img alt="image" border="0" height="316" src="http://lh4.ggpht.com/-z7IlPUzjCnQ/TfArkV_W_qI/AAAAAAAAAGk/czXc9MQtF30/image_thumb6.png?imgmax=800" style="background-image: none; border-bottom-width: 0px; border-left-width: 0px; border-right-width: 0px; border-top-width: 0px; display: inline; padding-left: 0px; padding-right: 0px; padding-top: 0px;" title="image" width="643" /&gt;&lt;/a&gt; &lt;br /&gt;&lt;ul&gt;&lt;li&gt;“Application Ribbons” contains the definition of the button. &lt;/li&gt;&lt;li&gt;“new_custom16x16” and “new_custom32x32” are image files for the button. &lt;/li&gt;&lt;li&gt;“new_dialogjavascript” is a JavaScript web Resource. It contains the JavaScript code to open the dialog. &lt;/li&gt;&lt;li&gt;“Sales Call” is dialog script&lt;/li&gt;&lt;/ul&gt;&lt;h3&gt;Detail Explanation&lt;/h3&gt;&lt;h3&gt;&lt;strong&gt;Application Ribbon&lt;/strong&gt;&lt;/h3&gt;&lt;div class="csharpcode"&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   &lt;span class="lnum"&gt;1:  &lt;/span&gt;&amp;lt;RibbonDiffXml&amp;gt;&lt;div class="csharpcode"&gt;&lt;br /&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   2:  &lt;/span&gt;    &amp;lt;CustomActions&amp;gt;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   3:  &lt;/span&gt;     &lt;span style="background-color: yellow;"&gt; &amp;lt;CustomAction Id=&lt;span class="str"&gt;"Sample.{!EntityLogicalName}.MainTab.MyURL.CustomAction"&lt;/span&gt; Sequence=&lt;span class="str"&gt;"41"&lt;/span&gt; Location=&lt;span class="str"&gt;"Mscrm.HomepageGrid.{!EntityLogicalName}.MainTab.Workflow.Controls._children"&lt;/span&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   4:  &lt;/span&gt;        &amp;lt;CommandUIDefinition&amp;gt;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   5:  &lt;/span&gt;          &lt;span style="background-color: yellow;"&gt;&amp;lt;Button Id=&lt;span class="str"&gt;"Sample.{!EntityLogicalName}.MainTab.MyURL.Button"&lt;/span&gt; Command=&lt;span class="str"&gt;"javascript.Command"&lt;/span&gt; LabelText=&lt;span class="str"&gt;"Sales Call"&lt;/span&gt; ToolTipTitle=&lt;span class="str"&gt;"Sales Call"&lt;/span&gt; ToolTipDescription=&lt;span class="str"&gt;"Sales Call"&lt;/span&gt; TemplateAlias=&lt;span class="str"&gt;"o1"&lt;/span&gt; Image16by16=&lt;span class="str"&gt;"$webresource:new_custom16x16"&lt;/span&gt; Image32by32=&lt;span class="str"&gt;"$webresource:new_custom32x32"&lt;/span&gt; /&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   6:  &lt;/span&gt;        &amp;lt;/CommandUIDefinition&amp;gt;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   7:  &lt;/span&gt;      &amp;lt;/CustomAction&amp;gt;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   8:  &lt;/span&gt;    &amp;lt;/CustomActions&amp;gt;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   9:  &lt;/span&gt;    &amp;lt;Templates&amp;gt;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  10:  &lt;/span&gt;      &amp;lt;RibbonTemplates Id=&lt;span class="str"&gt;"Mscrm.Templates"&lt;/span&gt;&amp;gt;&amp;lt;/RibbonTemplates&amp;gt;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  11:  &lt;/span&gt;    &amp;lt;/Templates&amp;gt;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  12:  &lt;/span&gt;    &amp;lt;CommandDefinitions&amp;gt;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  13:  &lt;/span&gt;      &amp;lt;CommandDefinition Id=&lt;span class="str"&gt;"javascript.Command"&lt;/span&gt;&amp;gt;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  14:  &lt;/span&gt;        &amp;lt;EnableRules&amp;gt;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  15:  &lt;/span&gt;          &lt;span style="background-color: yellow;"&gt;&amp;lt;EnableRule Id=&lt;span class="str"&gt;"Mscrm.Enabled"&lt;/span&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  16:  &lt;/span&gt;        &amp;lt;/EnableRules&amp;gt;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  17:  &lt;/span&gt;        &amp;lt;DisplayRules /&amp;gt;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  18:  &lt;/span&gt;        &lt;span style="background-color: yellow;"&gt;&amp;lt;Actions&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span style="background-color: yellow;"&gt;&lt;span class="lnum"&gt;  19:  &lt;/span&gt;          &amp;lt;JavaScriptFunction&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style="background-color: yellow;"&gt;&lt;span class="lnum"&gt;  20:  &lt;/span&gt;              Library=&lt;span class="str"&gt;"$webresource:new_dialogjavascript"&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span style="background-color: yellow;"&gt;&lt;span class="lnum"&gt;  21:  &lt;/span&gt;              FunctionName=&lt;span class="str"&gt;"callDialog"&lt;/span&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style="background-color: yellow;"&gt;&lt;span class="lnum"&gt;  22:  &lt;/span&gt;          &amp;lt;/JavaScriptFunction&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span style="background-color: yellow;"&gt;&lt;span class="lnum"&gt;  23:  &lt;/span&gt;        &amp;lt;/Actions&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  24:  &lt;/span&gt;      &amp;lt;/CommandDefinition&amp;gt;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  25:  &lt;/span&gt;    &amp;lt;/CommandDefinitions&amp;gt;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  26:  &lt;/span&gt;    &amp;lt;RuleDefinitions&amp;gt;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  27:  &lt;/span&gt;      &amp;lt;TabDisplayRules /&amp;gt;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  28:  &lt;/span&gt;      &amp;lt;DisplayRules /&amp;gt;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  29:  &lt;/span&gt;      &amp;lt;EnableRules /&amp;gt;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  30:  &lt;/span&gt;    &amp;lt;/RuleDefinitions&amp;gt;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  31:  &lt;/span&gt;    &amp;lt;LocLabels /&amp;gt;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  32:  &lt;/span&gt;  &amp;lt;/RibbonDiffXml&amp;gt;&lt;/pre&gt;&lt;/div&gt;&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div class="csharpcode"&gt;&lt;ul&gt;&lt;li&gt;“CustomAction” tag define the location of the button ( which entity, which group, sequence etc).&lt;/li&gt;&lt;li&gt;“Button” tag defines the text, images, tooltip of the button. The most import attribute of “Button” tag is “Command”. In this solution Command = javascript.Command. &lt;/li&gt;&lt;li&gt;“CommandDefinition” tag defines the javascript.Command mentioned in “Button” tag. &lt;/li&gt;&lt;li&gt;&amp;lt;EnableRule Id=&lt;span class="str"&gt;"Mscrm.Enabled"&lt;/span&gt;/&amp;gt; this line makes the button enabled on the ribbon. &lt;/li&gt;&lt;li&gt;“Actions” tag defines which JavaScript webresource and which function in that webresource will be called on button click. &lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;span style="background-color: white;"&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;Note: If you already a custom app ribbon button in your solution and you import any other unmanaged solution with “Application Ribbon” file in it. it will over write your custom button. Take a backup of your solution before you import any unmanaged solution.&lt;/span&gt; &lt;/span&gt;&lt;br /&gt;&lt;pre class="prettyprint"&gt;    function getOrg() {&lt;br /&gt;        ///&amp;lt;summary&amp;gt;&lt;br /&gt;        /// get organisation&lt;br /&gt;        ///&amp;lt;/summary&amp;gt;&lt;br /&gt;      &lt;br /&gt;        var Org = "";&lt;br /&gt;        if (typeof GetGlobalContext == "function") {&lt;br /&gt;            var context = GetGlobalContext();&lt;br /&gt;            Org = context.getOrgUniqueName();&lt;br /&gt;        }&lt;br /&gt;        else {&lt;br /&gt;            if (typeof Xrm.Page.context == "object") {&lt;br /&gt;                Org = Xrm.Page.context.getOrgUniqueName();&lt;br /&gt;            }&lt;br /&gt;            else&lt;br /&gt;            { throw new Error("Unable to access Organisation name"); }&lt;br /&gt;        }&lt;br /&gt;       &lt;br /&gt;        return Org;&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    function getUser() {&lt;br /&gt;        ///&amp;lt;summary&amp;gt;&lt;br /&gt;        /// get logged in user&lt;br /&gt;        ///&amp;lt;/summary&amp;gt;&lt;br /&gt;      &lt;br /&gt;        var User = "";&lt;br /&gt;        if (typeof GetGlobalContext == "function") {&lt;br /&gt;            var context = GetGlobalContext();&lt;br /&gt;            User = context.getUserId();&lt;br /&gt;        }&lt;br /&gt;        else {&lt;br /&gt;            if (typeof Xrm.Page.context == "object") {&lt;br /&gt;                User = Xrm.Page.context.getUserId();&lt;br /&gt;            }&lt;br /&gt;            else&lt;br /&gt;            { throw new Error("Unable to access the UserId"); }&lt;br /&gt;        }&lt;br /&gt;      &lt;br /&gt;        return User;&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    function callDialog() {&lt;br /&gt;    &lt;br /&gt;    var url="/" + getOrg() + "/cs/dialog/rundialog.aspx?DialogId=%7bB7D825D7-7EF6-4713-AC11-284546FEB260%7d&amp;amp;EntityName=systemuser&amp;amp;ObjectId=" + getUser();&lt;br /&gt;    window.open(url, "", "status=no,scrollbars=no,toolbars=no,menubar=no,location=no");&lt;br /&gt;    //window.open(url);&lt;br /&gt;&lt;br /&gt;    }&lt;/pre&gt;&lt;pre&gt;&lt;span class="Apple-style-span" style="font-family: Georgia, serif; font-size: 16px; white-space: normal;"&gt;&lt;b&gt;The JavaScript Webresource has three function&lt;/b&gt;&lt;/span&gt;&lt;/pre&gt;&lt;ul&gt;&lt;li&gt;getOrganisation() – to get context organisation&lt;/li&gt;&lt;li&gt;getUser()-to get the logged in user&lt;/li&gt;&lt;li&gt;callDialog()- will call the dialog. you can change the DialogId to call your own dialog. &lt;/li&gt;&lt;/ul&gt;This example is using a dialog attached to the user entity, so we don’t need to create any record to run the dialog. The code picks up the logged in user and run the process.&lt;br /&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: 19px; font-weight: bold;"&gt;Sales Call Dialog&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;Sales Call dialog is very simple but meaningful dialog process. Steps are as follow. &lt;br /&gt;&lt;ol&gt;&lt;li&gt;Ask for customers first name and last name&lt;/li&gt;&lt;li&gt;Ask if customer exist in the system&lt;/li&gt;&lt;ul&gt;&lt;li&gt;Search for the customer&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;Else ask for address information&lt;/li&gt;&lt;li&gt;Ask for the product customer is interested in&lt;/li&gt;&lt;li&gt;Ask if sales rep want to create relevant records. if sales rep select yes create the contact and/or opportunity records.&lt;/li&gt;&lt;/ol&gt;&lt;h3&gt;Note: This dialog does not add product to the opportunity.&lt;/h3&gt;&lt;h3&gt;Here are some screen shots&lt;/h3&gt;&lt;a href="http://lh6.ggpht.com/-WvU3cQgXvcQ/TfAuApvXlHI/AAAAAAAAAGo/-JFD7-lKD9E/s1600-h/image%25255B7%25255D.png"&gt;&lt;img alt="image" border="0" height="135" src="http://lh4.ggpht.com/-o497WJl0XIU/TfAuBQQaxmI/AAAAAAAAAGs/F607yMcOMBk/image_thumb%25255B4%25255D.png?imgmax=800" style="background-image: none; border-bottom-width: 0px; border-left-width: 0px; border-right-width: 0px; border-top-width: 0px; display: inline; padding-left: 0px; padding-right: 0px; padding-top: 0px;" title="image" width="606" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;h3&gt;&lt;/h3&gt;&lt;div&gt;&lt;br /&gt;&lt;div&gt;&amp;nbsp;&lt;/div&gt;&lt;/div&gt;&lt;a href="http://lh4.ggpht.com/-rtVigNT0RJ0/TfAuB7iUgHI/AAAAAAAAAGw/FEewHvZ7fSA/s1600-h/image%25255B13%25255D.png"&gt;&lt;img alt="image" border="0" height="239" src="http://lh4.ggpht.com/-TRw4vgqYuL4/TfAuCU2OYYI/AAAAAAAAAG0/XvRE4LxcNsg/image_thumb%25255B8%25255D.png?imgmax=800" style="background-image: none; border-bottom-width: 0px; border-left-width: 0px; border-right-width: 0px; border-top-width: 0px; display: inline; padding-left: 0px; padding-right: 0px; padding-top: 0px;" title="image" width="618" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&amp;nbsp;&lt;/div&gt;&lt;a href="http://lh5.ggpht.com/-2rzo9AR2v0g/TfAzXGY0ySI/AAAAAAAAAHI/UydOOnyhAZg/s1600-h/image%25255B29%25255D.png"&gt;&lt;img alt="image" border="0" height="194" src="http://lh5.ggpht.com/-bd4XW4UGLxo/TfAzX2eJj3I/AAAAAAAAAHM/UtvW-IsCb7o/image_thumb%25255B20%25255D.png?imgmax=800" style="background-image: none; border-bottom-width: 0px; border-left-width: 0px; border-right-width: 0px; border-top-width: 0px; display: inline; padding-left: 0px; padding-right: 0px; padding-top: 0px;" title="image" width="478" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&amp;nbsp;&lt;/div&gt;Bye…………...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4535447606986422873-1290081041664494913?l=mscrmshop.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mscrmshop.blogspot.com/feeds/1290081041664494913/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mscrmshop.blogspot.com/2011/06/how-to-start-dialog-from-application_08.html#comment-form' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4535447606986422873/posts/default/1290081041664494913'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4535447606986422873/posts/default/1290081041664494913'/><link rel='alternate' type='text/html' href='http://mscrmshop.blogspot.com/2011/06/how-to-start-dialog-from-application_08.html' title='How to start a Dialog from Application Ribbon (CRM 2011)'/><author><name>Singh</name><uri>http://www.blogger.com/profile/04193418105246403607</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://4.bp.blogspot.com/_JIbxd7XP7Zc/TM37_rHOKjI/AAAAAAAAAFQ/R_AS52AN6LI/S220/victoria+pic+014.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh4.ggpht.com/-z7IlPUzjCnQ/TfArkV_W_qI/AAAAAAAAAGk/czXc9MQtF30/s72-c/image_thumb6.png?imgmax=800' height='72' width='72'/><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4535447606986422873.post-7384156223644517517</id><published>2011-05-17T23:15:00.000-07:00</published><updated>2011-11-16T15:07:06.097-08:00</updated><title type='text'>How to set Date fields in MSCRM 2011 Dialogs</title><content type='html'>If you are capturing a date in a dialog, it is not possible to assign that value to the crm datetime field. It can be done by creating workflow assembly.&lt;br /&gt;&lt;br /&gt;Create a workflow assembly, which takes a string as input parameter and return date as output parameter. Here is code..&lt;br /&gt;&lt;div class="csharpcode"&gt;&lt;pre class="alt"&gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; System;&lt;/pre&gt;&lt;pre&gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; System.Activities;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; Microsoft.Xrm.Sdk;&lt;/pre&gt;&lt;pre&gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; Microsoft.Xrm.Sdk.Workflow;&lt;/pre&gt;&lt;pre class="alt"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;&lt;span class="kwrd"&gt;namespace&lt;/span&gt; DialogDate&lt;/pre&gt;&lt;pre class="alt"&gt;{&lt;/pre&gt;&lt;pre&gt;&lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;class&lt;/span&gt; DialogDate:CodeActivity&lt;/pre&gt;&lt;pre class="alt"&gt;{&lt;/pre&gt;&lt;pre&gt;&lt;span class="kwrd"&gt;protected&lt;/span&gt; &lt;span class="kwrd"&gt;override&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; Execute(CodeActivityContext executionContext)&lt;/pre&gt;&lt;pre class="alt"&gt;{&lt;/pre&gt;&lt;pre&gt;&amp;nbsp;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;&lt;span class="rem"&gt;// Create the context&lt;/span&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;    //IWorkflowContext context = executionContext.GetExtension&amp;lt;IWorkflowContext&amp;gt;();&lt;/pre&gt;&lt;pre&gt;    //IOrganizationServiceFactory serviceFactory = executionContext.GetExtension&amp;lt;IOrganizationServiceFactory&amp;gt;();&lt;/pre&gt;&lt;pre class="alt"&gt;    //IOrganizationService service = serviceFactory.CreateOrganizationService(context.UserId);&lt;/pre&gt;&lt;pre&gt;    &lt;span class="kwrd"&gt;string&lt;/span&gt; sdate = StringInput.Get&amp;lt;&lt;span class="kwrd"&gt;string&lt;/span&gt;&amp;gt;(executionContext);&lt;/pre&gt;&lt;pre class="alt"&gt;    DateOutput.Set(executionContext, DateTime.Parse(sdate));&lt;/pre&gt;&lt;pre&gt;}&lt;/pre&gt;&lt;pre class="alt"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;[Input(&lt;span class="str"&gt;"string"&lt;/span&gt;)]&lt;/pre&gt;&lt;pre class="alt"&gt;[Default(&lt;span class="str"&gt;"10/11/2010"&lt;/span&gt;)]&lt;/pre&gt;&lt;pre&gt;&lt;span class="kwrd"&gt;public&lt;/span&gt; InArgument StringInput { get; set; }&lt;/pre&gt;&lt;pre class="alt"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;[Output(&lt;span class="str"&gt;"Date"&lt;/span&gt;)]&lt;/pre&gt;&lt;pre class="alt"&gt;[Default(&lt;span class="str"&gt;"01/01/01"&lt;/span&gt;)]&lt;/pre&gt;&lt;pre&gt;&lt;span class="kwrd"&gt;public&lt;/span&gt; OutArgument DateOutput { get; set; }&lt;/pre&gt;&lt;pre class="alt"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;}&lt;/pre&gt;&lt;pre class="alt"&gt;}&lt;/pre&gt;&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;&lt;/div&gt;Register the assembly and use it in your dialog.&lt;br /&gt;&lt;br /&gt;Call the assembly and pass the date string and use the return value to set the date field as shown in screen shots below.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/-X90pjEajTXc/TeL1OZ-SM0I/AAAAAAAAAF4/TqYzRRspgzI/s1600/image1.png"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5612317713496159042" src="http://4.bp.blogspot.com/-X90pjEajTXc/TeL1OZ-SM0I/AAAAAAAAAF4/TqYzRRspgzI/s400/image1.png" style="cursor: hand; height: 233px; width: 400px;" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/-nmZYQUenG9U/TeL1XLw-MRI/AAAAAAAAAGA/7nldsYaj3tk/s1600/image2.png"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5612317864301048082" src="http://3.bp.blogspot.com/-nmZYQUenG9U/TeL1XLw-MRI/AAAAAAAAAGA/7nldsYaj3tk/s400/image2.png" style="cursor: hand; height: 232px; width: 400px;" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/datetime&gt;&lt;/string&gt;&lt;/string&gt;&lt;/iorganizationservicefactory&gt;&lt;/iworkflowcontext&gt;&lt;/test&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4535447606986422873-7384156223644517517?l=mscrmshop.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mscrmshop.blogspot.com/feeds/7384156223644517517/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mscrmshop.blogspot.com/2011/05/how-to-set-date-fields-in-mscrm-2011.html#comment-form' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4535447606986422873/posts/default/7384156223644517517'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4535447606986422873/posts/default/7384156223644517517'/><link rel='alternate' type='text/html' href='http://mscrmshop.blogspot.com/2011/05/how-to-set-date-fields-in-mscrm-2011.html' title='How to set Date fields in MSCRM 2011 Dialogs'/><author><name>Singh</name><uri>http://www.blogger.com/profile/04193418105246403607</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://4.bp.blogspot.com/_JIbxd7XP7Zc/TM37_rHOKjI/AAAAAAAAAFQ/R_AS52AN6LI/S220/victoria+pic+014.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/-X90pjEajTXc/TeL1OZ-SM0I/AAAAAAAAAF4/TqYzRRspgzI/s72-c/image1.png' height='72' width='72'/><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4535447606986422873.post-6517222770649619864</id><published>2010-10-31T16:17:00.000-07:00</published><updated>2010-11-04T15:21:07.147-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='facts about crm plugins'/><category scheme='http://www.blogger.com/atom/ns#' term='syntax changes in crm plugins'/><title type='text'>Changes in CRM 2011 plugins</title><content type='html'>There are a lot of syntax and functional changes in MSCRM 2011 plugins. I have listed some of them below:&lt;br /&gt;&lt;span style="FONT-WEIGHT: bold"&gt;1. New References&lt;/span&gt;&lt;br /&gt;• System.ServiceModel&lt;br /&gt;• System.Runtime.Serialization&lt;br /&gt;&lt;br /&gt;&lt;span style="FONT-WEIGHT: bold"&gt;2. Microsoft.Crm.Sdk has been replaced by Microsoft.Xrm.Sdk&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:0;"&gt;3. &lt;/span&gt;&lt;span style="FONT-WEIGHT: bold"&gt;The default parameter for execute method has been changed from&lt;br /&gt;IPluginExecutionContext to IServiceProvide&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;public void Execute(IServiceProvider serviceProvider)&lt;br /&gt;&lt;br /&gt;&lt;b&gt;4.&lt;/b&gt; &lt;span style="FONT-WEIGHT: bold"&gt;IpluginExecutionContext has been changed to a type of service &lt;/span&gt;and to get the reference use the following syntax.&lt;br /&gt;&lt;br /&gt;IPluginExecutionContext context = (IPluginExecutionContext)&lt;br /&gt;serviceProvider.GetService(typeof(IPluginExecutionContext));&lt;br /&gt;&lt;br /&gt;&lt;b&gt;5.&lt;/b&gt; &lt;span style="FONT-WEIGHT: bold"&gt;ICrmService has been changed to IOrganizationService&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;IOrganizationServiceFactory serviceFactory =&lt;br /&gt;IOrganizationServiceFactory)serviceProvider.GetService(typeof(IOrganizationServiceFactory));&lt;br /&gt;IOrganizationService service = serviceFactory.CreateOrganizationService(context.UserId);&lt;br /&gt;&lt;br /&gt;&lt;b&gt;6&lt;span style="font-size:0;"&gt;.&lt;/span&gt;&lt;/b&gt;&lt;span style="FONT-WEIGHT: bold"&gt; Dynamic entity has been changed to “Entity”&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;if (context.InputParameters.Contains("Target") &amp;amp;&amp;amp;&lt;br /&gt;context.InputParameters["Target"] is Entity)&lt;br /&gt;{&lt;br /&gt;Entity entity = (Entity)context.InputParameters["Target"];&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;7. Dynamic Entity’s properties syntax has been changed to attributes&lt;/b&gt; &lt;div&gt;&lt;br /&gt;entity.Attributes.Contains("accountnumber")&lt;br /&gt;&lt;br /&gt;&lt;b&gt;8. Strongly typed classes (account, contact) are missing in Microsoft.XRM.Sdk assembly&lt;/b&gt; but there is an exception to this.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;9. CRM 2011 provides the crm utility called “crmsvcutil&lt;/b&gt;” to generate strongly typed classes that can be used in plugins.&lt;br /&gt;&lt;br /&gt;10. &lt;span style="FONT-WEIGHT: bold"&gt;Strongly typed classes has been changed to use like loosely typed classes.&lt;/span&gt;&lt;br /&gt;Task task = new Task();&lt;br /&gt;Task[“description”] = ”test description”&lt;br /&gt;&lt;br /&gt;&lt;b&gt;11. No more soap exception&lt;/b&gt;&lt;br /&gt;catch (FaultException&lt;organizationservicefault&gt; ex)&lt;br /&gt;&lt;/organizationservicefault&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4535447606986422873-6517222770649619864?l=mscrmshop.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mscrmshop.blogspot.com/feeds/6517222770649619864/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mscrmshop.blogspot.com/2010/10/there-are-lot-of-syntax-and-functional.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4535447606986422873/posts/default/6517222770649619864'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4535447606986422873/posts/default/6517222770649619864'/><link rel='alternate' type='text/html' href='http://mscrmshop.blogspot.com/2010/10/there-are-lot-of-syntax-and-functional.html' title='Changes in CRM 2011 plugins'/><author><name>Singh</name><uri>http://www.blogger.com/profile/04193418105246403607</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://4.bp.blogspot.com/_JIbxd7XP7Zc/TM37_rHOKjI/AAAAAAAAAFQ/R_AS52AN6LI/S220/victoria+pic+014.JPG'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4535447606986422873.post-7149467968078709270</id><published>2010-10-26T20:43:00.000-07:00</published><updated>2011-05-30T05:25:08.498-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='step by step plugin tutorial'/><category scheme='http://www.blogger.com/atom/ns#' term='plugin'/><category scheme='http://www.blogger.com/atom/ns#' term='crm 2011'/><title type='text'>Step by step plugin tutorial for CRM 2011</title><content type='html'>This is a step by step guide to create a plug-in in CRM 2011.&lt;br /&gt;&lt;br /&gt;1. Create a class library project in vs2010.&lt;br /&gt;2. Sign the assembly by using the Signing tab of the project's properties sheet.&lt;br /&gt;3. Add references to microsoft.crm.sdk.proxy , Microsoft.xrm.sdk ,&lt;br /&gt;System.ServiceModel and System.Runtime.Serialization.&lt;br /&gt;4. Here is code for this tutorial. This plugin will check if the account number&lt;br /&gt;field is empty, create a task for the user to fill this up.&lt;br /&gt;&lt;br /&gt;using System;&lt;br /&gt;using System.Collections.Generic;&lt;br /&gt;using System.Linq;&lt;br /&gt;using System.Text;&lt;br /&gt;// Microsoft Dynamics CRM namespace(s)&lt;br /&gt;using Microsoft.Xrm.Sdk;&lt;br /&gt;using System.ServiceModel;&lt;br /&gt;&lt;br /&gt;namespace CRMPlugin1&lt;br /&gt;{&lt;br /&gt;public class createNote:IPlugin&lt;br /&gt;{&lt;br /&gt;public void Execute(IServiceProvider serviceProvider)&lt;br /&gt;{&lt;br /&gt;&lt;br /&gt;// Obtain the execution context from the service provider.&lt;br /&gt;IPluginExecutionContext context = (IPluginExecutionContext)&lt;br /&gt;serviceProvider.GetService(typeof(IPluginExecutionContext));&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;// The InputParameters collection contains all the data passed in the message request.&lt;br /&gt;if (context.InputParameters.Contains("Target") &amp;amp;&amp;amp;&lt;br /&gt;context.InputParameters["Target"] is Entity)&lt;br /&gt;{&lt;br /&gt;// Obtain the target entity from the input parmameters.&lt;br /&gt;Entity entity = (Entity)context.InputParameters["Target"];&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;try&lt;br /&gt;{&lt;br /&gt;//check if the account number exist&lt;br /&gt;&lt;br /&gt;if (entity.Attributes.Contains("account number") == false)&lt;br /&gt;{&lt;br /&gt;&lt;br /&gt;//create a task&lt;br /&gt;Entity task = new Entity("task");&lt;br /&gt;task["subject"] = "Account number is missing";&lt;br /&gt;task["regardingobjectid"] = new EntityReference("account",new Guid(context.OutputParameters["id"].ToString()));&lt;br /&gt;&lt;br /&gt;//adding attribute using the add function&lt;br /&gt;// task["description"] = "Account number is missng for the following account. Please enter the account number";&lt;br /&gt;task.Attributes.Add("description", "Account number is missng for the following account. Please enter the account number");&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;// Obtain the organization service reference.&lt;br /&gt;IOrganizationServiceFactory serviceFactory = (IOrganizationServiceFactory)serviceProvider.GetService(typeof(IOrganizationServiceFactory));&lt;br /&gt;IOrganizationService service = serviceFactory.CreateOrganizationService(context.UserId);&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;// Create the task in Microsoft Dynamics CRM.&lt;br /&gt;service.Create(task);&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;catch (FaultException&lt;organizationservicefault&gt; ex)&lt;br /&gt;{&lt;br /&gt;throw new InvalidPluginExecutionException("An error occurred in the plug-in.", ex);&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;}//end class&lt;br /&gt;}//end name space&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;5. Compile the code and register it on the registration tool provided with sdk.&lt;br /&gt;6. Register it on the post create event of account entity.&lt;br /&gt;Note :check the sdk for instructions to register a plugin&lt;br /&gt;&lt;br /&gt;Thanks&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4535447606986422873-7149467968078709270?l=mscrmshop.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mscrmshop.blogspot.com/feeds/7149467968078709270/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mscrmshop.blogspot.com/2010/10/crm-2011-plugin-tutorial.html#comment-form' title='26 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4535447606986422873/posts/default/7149467968078709270'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4535447606986422873/posts/default/7149467968078709270'/><link rel='alternate' type='text/html' href='http://mscrmshop.blogspot.com/2010/10/crm-2011-plugin-tutorial.html' title='Step by step plugin tutorial for CRM 2011'/><author><name>Singh</name><uri>http://www.blogger.com/profile/04193418105246403607</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://4.bp.blogspot.com/_JIbxd7XP7Zc/TM37_rHOKjI/AAAAAAAAAFQ/R_AS52AN6LI/S220/victoria+pic+014.JPG'/></author><thr:total>26</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4535447606986422873.post-1065063873140281818</id><published>2010-10-25T21:36:00.000-07:00</published><updated>2010-10-25T22:38:46.265-07:00</updated><title type='text'>CRM 2011 Beta - Sharepoint Integration Bug</title><content type='html'>Hi&lt;br /&gt;&lt;br /&gt;I am playing around with crm 2011 beta from last few weeks and I found a bug in crm-sharepoint integration. It occurs when you select your document management folder structure based on the entity, in my case I chose "account".&lt;br /&gt;&lt;br /&gt;If you create an account with spaces ("my test account"), click on the documents on left navigation bar, the system will prompt you to create a folder (htttp://localhost/account/my test account"). Press yes and system will create a folder "my test account" in sharepoint.&lt;br /&gt;&lt;br /&gt;Now create a new opportunity ("opportunity 1") and click on the documents on the left navigation bar. The system will prompt you to create a folder ("htttp://localhost/account/my test account/opportunity/opportuynity 1"). Press yes,&lt;br /&gt;the system will come back with the following message:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/_JIbxd7XP7Zc/TMZetZy8yDI/AAAAAAAAAEY/JVCiKux6Mlk/s1600/error1.png"&gt;&lt;img style="TEXT-ALIGN: center; MARGIN: 0px auto 10px; WIDTH: 400px; DISPLAY: block; HEIGHT: 194px; CURSOR: hand" id="BLOGGER_PHOTO_ID_5532213326382942258" border="0" alt="" src="http://2.bp.blogspot.com/_JIbxd7XP7Zc/TMZetZy8yDI/AAAAAAAAAEY/JVCiKux6Mlk/s400/error1.png" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;and the system will create a folder anyway.&lt;br /&gt;&lt;br /&gt;Now if you create another record like opportunity or invoice and click on documents the system will ask you to create the folder like ("htttp://localhost/account/my-test- account/opportunity/opportuynity 3"). Press yes and the system will create a new account folder "my-test- account" and create the "opportunity/opportunity 3" folder.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/_JIbxd7XP7Zc/TMZg8ApkovI/AAAAAAAAAEg/aU9Jb_qUu2o/s1600/error+2.png"&gt;&lt;img style="TEXT-ALIGN: center; MARGIN: 0px auto 10px; WIDTH: 400px; HEIGHT: 161px; CURSOR: hand" id="BLOGGER_PHOTO_ID_5532215776354018034" border="0" alt="" src="http://1.bp.blogspot.com/_JIbxd7XP7Zc/TMZg8ApkovI/AAAAAAAAAEg/aU9Jb_qUu2o/s400/error+2.png" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Every time you create a new folder for any related entity it will work properly and create all the sub folders in "my-test- account". But the first opportunity record still displays the error message. You do have an option to correct the location, buts it’s a bug and you end up with 2 folders, one with spaces and one with "-" s.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/_JIbxd7XP7Zc/TMZiwKx207I/AAAAAAAAAEo/AQusCghn7Lk/s1600/error3.png"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 155px;" src="http://3.bp.blogspot.com/_JIbxd7XP7Zc/TMZiwKx207I/AAAAAAAAAEo/AQusCghn7Lk/s400/error3.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5532217771937944498" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Good bye.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4535447606986422873-1065063873140281818?l=mscrmshop.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mscrmshop.blogspot.com/feeds/1065063873140281818/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mscrmshop.blogspot.com/2010/10/crm-2011-beta-shaepoint-integration-bug.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4535447606986422873/posts/default/1065063873140281818'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4535447606986422873/posts/default/1065063873140281818'/><link rel='alternate' type='text/html' href='http://mscrmshop.blogspot.com/2010/10/crm-2011-beta-shaepoint-integration-bug.html' title='CRM 2011 Beta - Sharepoint Integration Bug'/><author><name>Singh</name><uri>http://www.blogger.com/profile/04193418105246403607</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://4.bp.blogspot.com/_JIbxd7XP7Zc/TM37_rHOKjI/AAAAAAAAAFQ/R_AS52AN6LI/S220/victoria+pic+014.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_JIbxd7XP7Zc/TMZetZy8yDI/AAAAAAAAAEY/JVCiKux6Mlk/s72-c/error1.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4535447606986422873.post-6391147136654059620</id><published>2010-10-21T20:51:00.000-07:00</published><updated>2011-06-20T17:31:01.744-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='XRM'/><category scheme='http://www.blogger.com/atom/ns#' term='MSCRM'/><category scheme='http://www.blogger.com/atom/ns#' term='crm.xrm.client.dll'/><category scheme='http://www.blogger.com/atom/ns#' term='SDK 4.0.12'/><title type='text'>Using XRM SDK in MSCRM 4.0 Plugins</title><content type='html'>I am back and very excited about MSCRM 5.0. But today I am putting a sample to use xrm sdk in plugins. By default there no method in XrmDataContext class to pass plugin context.&lt;br /&gt;But there are ways around it. You can pass the connection as string or as crmconection  as follow&lt;br /&gt;&lt;br /&gt;Microsoft.Xrm.Client.CrmConnection.Parse(&lt;br /&gt;"Authentication Type=Integrated; Server=http://localhost:" +&lt;br /&gt;new Uri(Microsoft.Win32.Registry.LocalMachine.OpenSubKey ("SOFTWARE\\Microsoft\\MSCRM", false).GetValue("ServerUrl").ToString()).Port +&lt;br /&gt;"/" + context.OrganizationName)&lt;br /&gt;&lt;br /&gt;This worked for me.&lt;br /&gt;&lt;br /&gt;Here is sample code I have used to create a note for an account&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;public void Execute(IPluginExecutionContext context)&lt;br /&gt;       {&lt;br /&gt;           try&lt;br /&gt;           {&lt;br /&gt;               Guid ID = new Guid();&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;               switch (context.MessageName)&lt;br /&gt;               {&lt;br /&gt;                   case "Create":&lt;br /&gt;                       ID = new Guid(context.OutputParameters.Properties["id"].ToString());&lt;br /&gt;                       break;&lt;br /&gt;                   case "Update":&lt;br /&gt;                       ID = (Guid)((Microsoft.Crm.Sdk.Key)((Microsoft.Crm.Sdk.DynamicEntity)context.InputParameters.Properties["Target"]).Properties[context.PrimaryEntityName + "id"]).Value;&lt;br /&gt;                       break;&lt;br /&gt;                   case "SetState":&lt;br /&gt;                       ID = (Guid)((Microsoft.Crm.Sdk.Moniker)context.InputParameters.Properties["EntityMoniker"]).Id;&lt;br /&gt;                       break;&lt;br /&gt;                   case "SetStateDynamicEntity":&lt;br /&gt;                       ID = (Guid)((Microsoft.Crm.Sdk.Moniker)context.InputParameters.Properties["EntityMoniker"]).Id;&lt;br /&gt;                       break;&lt;br /&gt;                   case "Delete":&lt;br /&gt;                       ID = (Guid)((Microsoft.Crm.Sdk.Moniker)context.InputParameters.Properties["Target"]).Id;&lt;br /&gt;                       break;&lt;br /&gt;&lt;br /&gt;               }&lt;br /&gt;&lt;br /&gt;             &lt;br /&gt;               var crm = new XRM.MyDataContext(context);&lt;br /&gt;&lt;br /&gt;               var note = new XRM.annotation()&lt;br /&gt;               {&lt;br /&gt;                   subject = "My XRM Note",&lt;br /&gt;                   notetext = "This is my XRM Sample.",&lt;br /&gt;                   Account_Annotation_id = ID,&lt;br /&gt;                   objecttypecode = "account",&lt;br /&gt;                  &lt;br /&gt;               };&lt;br /&gt;               crm.AddToannotations(note);&lt;br /&gt;               crm.SaveChanges();&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4535447606986422873-6391147136654059620?l=mscrmshop.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mscrmshop.blogspot.com/feeds/6391147136654059620/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mscrmshop.blogspot.com/2010/10/using-xrm-sdk-in-mscrm-40-plugins.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4535447606986422873/posts/default/6391147136654059620'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4535447606986422873/posts/default/6391147136654059620'/><link rel='alternate' type='text/html' href='http://mscrmshop.blogspot.com/2010/10/using-xrm-sdk-in-mscrm-40-plugins.html' title='Using XRM SDK in MSCRM 4.0 Plugins'/><author><name>Singh</name><uri>http://www.blogger.com/profile/04193418105246403607</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://4.bp.blogspot.com/_JIbxd7XP7Zc/TM37_rHOKjI/AAAAAAAAAFQ/R_AS52AN6LI/S220/victoria+pic+014.JPG'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4535447606986422873.post-2364816268568581023</id><published>2009-05-18T23:22:00.000-07:00</published><updated>2009-05-21T07:18:11.038-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='using templates with attachments'/><category scheme='http://www.blogger.com/atom/ns#' term='MSCRM newsletter with attachment'/><title type='text'>Bulk Emails with attachments using MSCRM Templates</title><content type='html'>Hi Guyz,&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;I am working on a custom application from last few weeks. The application will send bulk emails with attachments using MSCRM templates. This functionality does not exist  in MSCRM.&lt;/div&gt;&lt;br /&gt;&lt;div&gt;The coding is almost finished. I am working on a deployment package.&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Any suggestions welcome. Here are few screen shots of the application.&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/_JIbxd7XP7Zc/ShJTCAdv5tI/AAAAAAAAAC0/mmQoSD_v9R4/s1600-h/Newletter1.jpg"&gt;&lt;img id="BLOGGER_PHOTO_ID_5337419802337076946" style="WIDTH: 400px; CURSOR: hand; HEIGHT: 247px" alt="" src="http://4.bp.blogspot.com/_JIbxd7XP7Zc/ShJTCAdv5tI/AAAAAAAAAC0/mmQoSD_v9R4/s400/Newletter1.jpg" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;ol&gt;&lt;li&gt;Choose a sender: Sender can be a user or a queue. User can send an email on behalf of another user&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Choose an entity: Entity can be account, contact,lead or an opportunity &lt;/li&gt;&lt;br /&gt;&lt;li&gt;Choose a list: Based on the choosen entity in step 2, the system will display advanced find queries available for selected entity and sender.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Choose a template: Based on the choosen entity in step 2, the system will display all the available templates available for selected entity and sender.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Attach the files: Choose a file to attach and press attach butoon as shoen in the screen shot above.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Files can be removed by clicking on remove link as shown in the screen shot above.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;The user have an option to send a test email by clicking send test email button.&lt;/li&gt;&lt;/ol&gt;&lt;br /&gt;&lt;p&gt;Send test email button will bring up lookup screen for the entity. For e.g. Account lookup in the screen shot below&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;div&gt;&lt;a href="http://2.bp.blogspot.com/_JIbxd7XP7Zc/ShJW1NvV1XI/AAAAAAAAAC8/KiNmtCoJBWA/s1600-h/Newletter2.jpg"&gt;&lt;img id="BLOGGER_PHOTO_ID_5337423980608738674" style="WIDTH: 400px; CURSOR: hand; HEIGHT: 297px" alt="" src="http://2.bp.blogspot.com/_JIbxd7XP7Zc/ShJW1NvV1XI/AAAAAAAAAC8/KiNmtCoJBWA/s400/Newletter2.jpg" border="0" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;Choose the test record and email will be sent to the selected record.&lt;/div&gt;&lt;div&gt;Check your test email, if every thing looks alright send the bulk email by clicking Send Email button.&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;This application is for sale like an addon. The sale price is $3000. The price is in Australian dollars. Please conatct me if you are interested.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4535447606986422873-2364816268568581023?l=mscrmshop.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mscrmshop.blogspot.com/feeds/2364816268568581023/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mscrmshop.blogspot.com/2009/05/bulk-emails-with-attachments-using.html#comment-form' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4535447606986422873/posts/default/2364816268568581023'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4535447606986422873/posts/default/2364816268568581023'/><link rel='alternate' type='text/html' href='http://mscrmshop.blogspot.com/2009/05/bulk-emails-with-attachments-using.html' title='Bulk Emails with attachments using MSCRM Templates'/><author><name>Singh</name><uri>http://www.blogger.com/profile/04193418105246403607</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://4.bp.blogspot.com/_JIbxd7XP7Zc/TM37_rHOKjI/AAAAAAAAAFQ/R_AS52AN6LI/S220/victoria+pic+014.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_JIbxd7XP7Zc/ShJTCAdv5tI/AAAAAAAAAC0/mmQoSD_v9R4/s72-c/Newletter1.jpg' height='72' width='72'/><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4535447606986422873.post-4729034285626922326</id><published>2009-05-07T07:17:00.001-07:00</published><updated>2009-05-07T07:25:12.321-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='MSCRM GP Connector'/><title type='text'>MSCRM GP Connector</title><content type='html'>Hi guys, How are you all going?&lt;br /&gt;I just started working on MSCRM GP Connector. I have few different versions of connector in mind.&lt;br /&gt;&lt;ul&gt;&lt;li&gt;First one that can be schedule to run at specified time or trigger by the user by pressing a button.&lt;/li&gt;&lt;li&gt;Second one that will use real time integration.&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;Hey guyz please send some suggestions, what would you like see in this connector?&lt;/p&gt;&lt;p&gt;Have a nice weekend.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4535447606986422873-4729034285626922326?l=mscrmshop.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mscrmshop.blogspot.com/feeds/4729034285626922326/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mscrmshop.blogspot.com/2009/05/mscrm-gp-connector.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4535447606986422873/posts/default/4729034285626922326'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4535447606986422873/posts/default/4729034285626922326'/><link rel='alternate' type='text/html' href='http://mscrmshop.blogspot.com/2009/05/mscrm-gp-connector.html' title='MSCRM GP Connector'/><author><name>Singh</name><uri>http://www.blogger.com/profile/04193418105246403607</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://4.bp.blogspot.com/_JIbxd7XP7Zc/TM37_rHOKjI/AAAAAAAAAFQ/R_AS52AN6LI/S220/victoria+pic+014.JPG'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4535447606986422873.post-1015278652817292004</id><published>2009-04-08T05:17:00.000-07:00</published><updated>2009-04-08T05:43:12.745-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Workflows are not firing'/><category scheme='http://www.blogger.com/atom/ns#' term='Data Imports are not working'/><category scheme='http://www.blogger.com/atom/ns#' term='MSCRM'/><category scheme='http://www.blogger.com/atom/ns#' term='Asynchronous Service'/><title type='text'>MSCRM Asynchronous Service is not working</title><content type='html'>Hi guys, I have come across this problem few times now. This is preety common with upgraded deployments. If your workflows are not firing or your data imports are not working and asynchronous services are running properly. Then what's the problem?&lt;br /&gt;&lt;br /&gt;The problem is there is an entry missing in your mscrm database.&lt;br /&gt;&lt;br /&gt;To fix this problem update column AsyncSdkRootDomain to servername:port&lt;br /&gt;(crmserver:5555) in DeploymentProperties table.&lt;br /&gt;&lt;br /&gt;Happy Easter.......&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4535447606986422873-1015278652817292004?l=mscrmshop.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mscrmshop.blogspot.com/feeds/1015278652817292004/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mscrmshop.blogspot.com/2009/04/mscrm-asynchronous-services-is-not.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4535447606986422873/posts/default/1015278652817292004'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4535447606986422873/posts/default/1015278652817292004'/><link rel='alternate' type='text/html' href='http://mscrmshop.blogspot.com/2009/04/mscrm-asynchronous-services-is-not.html' title='MSCRM Asynchronous Service is not working'/><author><name>Singh</name><uri>http://www.blogger.com/profile/04193418105246403607</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://4.bp.blogspot.com/_JIbxd7XP7Zc/TM37_rHOKjI/AAAAAAAAAFQ/R_AS52AN6LI/S220/victoria+pic+014.JPG'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4535447606986422873.post-5013081946099540454</id><published>2008-12-16T21:57:00.001-08:00</published><updated>2009-04-08T05:09:13.056-07:00</updated><title type='text'>MSCRM Book</title><content type='html'>&lt;p&gt;From last few months, I am going through this book called XCRM as Rapid Application Development. This is one of best CRM book I come across for CRM developers. This book includes a lot sample code, helper classes and a lot of valuable tips to turn your CRM development team into a CRM sausage factory.&lt;/p&gt;&lt;p&gt;It is written by David Yack.&lt;/p&gt;&lt;p&gt;Thanks&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4535447606986422873-5013081946099540454?l=mscrmshop.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mscrmshop.blogspot.com/feeds/5013081946099540454/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mscrmshop.blogspot.com/2008/12/mscrm-book.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4535447606986422873/posts/default/5013081946099540454'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4535447606986422873/posts/default/5013081946099540454'/><link rel='alternate' type='text/html' href='http://mscrmshop.blogspot.com/2008/12/mscrm-book.html' title='MSCRM Book'/><author><name>Singh</name><uri>http://www.blogger.com/profile/04193418105246403607</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://4.bp.blogspot.com/_JIbxd7XP7Zc/TM37_rHOKjI/AAAAAAAAAFQ/R_AS52AN6LI/S220/victoria+pic+014.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4535447606986422873.post-8060251129711010640</id><published>2008-11-08T14:16:00.000-08:00</published><updated>2008-11-08T14:49:09.973-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Changing Port number'/><title type='text'>Changing MSCRM Port number</title><content type='html'>Few months ago, One of my client asked me to change the CRM port number from 5555 to 80.&lt;br /&gt;They were having some backup problems because of port 5555.&lt;br /&gt;The process is very straight forward.&lt;br /&gt;&lt;br /&gt;Step 1.&lt;br /&gt;As usual take the backup of the orgname_MSCRM database.&lt;br /&gt;&lt;br /&gt;Step 2.&lt;br /&gt;Export all the customizations.&lt;br /&gt;&lt;br /&gt;Step 3.&lt;br /&gt;Go to IIS and change the port number of the MSCRM website to 80&lt;br /&gt;&lt;br /&gt;Step 4.&lt;br /&gt;Go to windows registry&lt;br /&gt;&lt;br /&gt;HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSCRM&lt;br /&gt;&lt;br /&gt;a) Change the port number on &lt;strong&gt;ServerURL &lt;/strong&gt;to your new port number&lt;br /&gt;&lt;br /&gt;It looks like &lt;a href="http://%3ccrmserver%3e:5555/MSCRMServices"&gt;http://&lt;crmserver&gt;:5555/MSCRMServices&lt;/a&gt;.&lt;br /&gt;To change the port number to 80 the url should look like&lt;br /&gt;&lt;a href="http://%3ccrmserver%3e/MSCRMServices"&gt;http://&lt;crmserver&gt;/MSCRMServices&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;b)Change the port number on &lt;strong&gt;LocalSdkPort&lt;/strong&gt; to your new port number.&lt;br /&gt;&lt;br /&gt;Check if the CRM is working.&lt;br /&gt;&lt;br /&gt;Step 5.&lt;br /&gt;Run the outlook configuration Wizard to change the outlook client.&lt;br /&gt;Choose the option change your configuration and add new URL for the MSCRM Server.&lt;br /&gt;&lt;br /&gt;Step 6.&lt;br /&gt;Change the Email Router configuration. To do that&lt;br /&gt;&lt;br /&gt;a) Go to Microsoft Dynamics CRM E-mail Router Configuration Manager.&lt;br /&gt;&lt;br /&gt;b) On the Deployments tab, update any deployments that are set up to use the Microsoft Dynamics CRM server that uses the new URL.&lt;br /&gt;c)Click Publish to save the changes.&lt;br /&gt;&lt;br /&gt;You are ready to go.&lt;br /&gt;&lt;br /&gt;I had a problem at this stage. Email Router configuration wizard did not accept the new SERVERURL.&lt;br /&gt;&lt;br /&gt;So I downloaded &lt;strong&gt;CRM Deployment Configuration Tool&lt;/strong&gt; from&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=6e211231-30fe-4df2-9b81-15cfb87adcf1"&gt;http://www.microsoft.com/downloads/details.aspx?FamilyID=6e211231-30fe-4df2-9b81-15cfb87adcf1&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Go to command prompt, type the path to the directory that contains the Microsoft.crm.deploymentconfigtool.exe file, and then run the following commands to correct this setting:&lt;br /&gt;&lt;br /&gt;microsoft.crm.deploymentconfigtool addresssettings update -webapprootdomain:&lt;span style="color:#ff0000;"&gt;crmserver:portnumber&lt;/span&gt;&lt;br /&gt;microsoft.crm.deploymentconfigtool addresssettings update -sdkrootdomain:&lt;span style="color:#ff0000;"&gt;crmserver:portnumber&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#ff0000;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#000000;"&gt;That's it&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Good Luck&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4535447606986422873-8060251129711010640?l=mscrmshop.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mscrmshop.blogspot.com/feeds/8060251129711010640/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mscrmshop.blogspot.com/2008/11/changing-mscrm-port-number.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4535447606986422873/posts/default/8060251129711010640'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4535447606986422873/posts/default/8060251129711010640'/><link rel='alternate' type='text/html' href='http://mscrmshop.blogspot.com/2008/11/changing-mscrm-port-number.html' title='Changing MSCRM Port number'/><author><name>Singh</name><uri>http://www.blogger.com/profile/04193418105246403607</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://4.bp.blogspot.com/_JIbxd7XP7Zc/TM37_rHOKjI/AAAAAAAAAFQ/R_AS52AN6LI/S220/victoria+pic+014.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4535447606986422873.post-6173473809481163217</id><published>2008-06-21T06:15:00.000-07:00</published><updated>2009-04-08T05:38:32.756-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='plugins'/><category scheme='http://www.blogger.com/atom/ns#' term='opportunity setstate'/><category scheme='http://www.blogger.com/atom/ns#' term='plugin'/><category scheme='http://www.blogger.com/atom/ns#' term='lose'/><category scheme='http://www.blogger.com/atom/ns#' term='win'/><category scheme='http://www.blogger.com/atom/ns#' term='lost'/><category scheme='http://www.blogger.com/atom/ns#' term='setstatedynamicentity'/><title type='text'>Opportunity setstate plugin problems</title><content type='html'>Few months ago, I was writing a plugin on opportunity setstate. I registered the plugin using registeration tool. My plugin never get triggered. After messing around for few hours, I registered the plugin on SetStateDynamicEntity message. Even then when I closed the opportunity, the plugin did not trigger, did not matter if it's won or lost opportunity, But plugin did  trigger when I reopened the closed opportunity. I tried a lot of different things and at the end I registerfed my pluggin for win and lose message instead of setstate or setstatedynamicentity message. It worked this time.&lt;br /&gt;I hope this will help some of you guys facing the same problem.&lt;br /&gt;&lt;br /&gt;Have a nice weekend.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4535447606986422873-6173473809481163217?l=mscrmshop.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mscrmshop.blogspot.com/feeds/6173473809481163217/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mscrmshop.blogspot.com/2008/06/opportunity-setstate-plugin-problems.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4535447606986422873/posts/default/6173473809481163217'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4535447606986422873/posts/default/6173473809481163217'/><link rel='alternate' type='text/html' href='http://mscrmshop.blogspot.com/2008/06/opportunity-setstate-plugin-problems.html' title='Opportunity setstate plugin problems'/><author><name>Singh</name><uri>http://www.blogger.com/profile/04193418105246403607</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://4.bp.blogspot.com/_JIbxd7XP7Zc/TM37_rHOKjI/AAAAAAAAAFQ/R_AS52AN6LI/S220/victoria+pic+014.JPG'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4535447606986422873.post-1770496911141205911</id><published>2008-06-15T21:09:00.000-07:00</published><updated>2008-06-15T21:15:19.700-07:00</updated><title type='text'>MSCRM Shop: Hidding unwanted views from the drop down</title><content type='html'>Hi&lt;br /&gt;&lt;br /&gt;I came across this beautiful article from Darren:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://msdynamicscrm-e.blogspot.com/2008/02/hiding-view-in-crm-40-using-plug-in.html"&gt;http://msdynamicscrm-e.blogspot.com/2008/02/hiding-view-in-crm-40-using-plug-in.html&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4535447606986422873-1770496911141205911?l=mscrmshop.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mscrmshop.blogspot.com/feeds/1770496911141205911/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mscrmshop.blogspot.com/2008/06/mscrm-shop-hidding-unwanted-views-from.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4535447606986422873/posts/default/1770496911141205911'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4535447606986422873/posts/default/1770496911141205911'/><link rel='alternate' type='text/html' href='http://mscrmshop.blogspot.com/2008/06/mscrm-shop-hidding-unwanted-views-from.html' title='MSCRM Shop: Hidding unwanted views from the drop down'/><author><name>Singh</name><uri>http://www.blogger.com/profile/04193418105246403607</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://4.bp.blogspot.com/_JIbxd7XP7Zc/TM37_rHOKjI/AAAAAAAAAFQ/R_AS52AN6LI/S220/victoria+pic+014.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4535447606986422873.post-839315840246791143</id><published>2008-06-10T04:38:00.000-07:00</published><updated>2009-04-08T05:33:41.035-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='MSCRM 4.0 Upgrade'/><title type='text'>Upgrade sbs MSCRM 3.0 to MSCRM 4.0</title><content type='html'>Recently, we did an upgrade for one of our client from SBS MSCRM 3.0 to 4.0.&lt;br /&gt;Everything was going great and suddenly we got an error message&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:78%;"&gt;Action Microsoft.Crm.Setup.Server.MsiInstallServerAction failed.This patch package could not be opened. Verify that the patch package exists and that you can access it, or contact the application vendor to verify that this is a valid Windows Installer patch package.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Till this point we did not have any problem. After the error message CRM stops working. We did not find any component of MSCRM 4.0 installed.&lt;br /&gt;&lt;br /&gt;We tried all sort of things but nothing worked. The problem was upgrade wizard could not find the installation package. It was looking for the package at some temporary internet files location.&lt;br /&gt;&lt;br /&gt;The problem was caused by the update installation files step of the upgrade.&lt;br /&gt;&lt;br /&gt;We tried to go ahead with the update without updating the files. It worked. We apply the the hotfixes after the installation.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4535447606986422873-839315840246791143?l=mscrmshop.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mscrmshop.blogspot.com/feeds/839315840246791143/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mscrmshop.blogspot.com/2008/06/upgrade-sbs-mscrm-30-to-mscrm-40.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4535447606986422873/posts/default/839315840246791143'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4535447606986422873/posts/default/839315840246791143'/><link rel='alternate' type='text/html' href='http://mscrmshop.blogspot.com/2008/06/upgrade-sbs-mscrm-30-to-mscrm-40.html' title='Upgrade sbs MSCRM 3.0 to MSCRM 4.0'/><author><name>Singh</name><uri>http://www.blogger.com/profile/04193418105246403607</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://4.bp.blogspot.com/_JIbxd7XP7Zc/TM37_rHOKjI/AAAAAAAAAFQ/R_AS52AN6LI/S220/victoria+pic+014.JPG'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4535447606986422873.post-1065789040721020915</id><published>2008-06-10T00:21:00.000-07:00</published><updated>2008-06-10T00:22:57.504-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Hot fixes and updates'/><title type='text'>MSCRM Hot fixes and Updates</title><content type='html'>Here the link for all the latest hot fixes and updates for MSCRM 4.0&lt;br /&gt;&lt;br /&gt;&lt;a href="http://support.microsoft.com/kb/949256/en-us"&gt;http://support.microsoft.com/kb/949256/en-us&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4535447606986422873-1065789040721020915?l=mscrmshop.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mscrmshop.blogspot.com/feeds/1065789040721020915/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mscrmshop.blogspot.com/2008/06/mscrm-hot-fixes-and-updates.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4535447606986422873/posts/default/1065789040721020915'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4535447606986422873/posts/default/1065789040721020915'/><link rel='alternate' type='text/html' href='http://mscrmshop.blogspot.com/2008/06/mscrm-hot-fixes-and-updates.html' title='MSCRM Hot fixes and Updates'/><author><name>Singh</name><uri>http://www.blogger.com/profile/04193418105246403607</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://4.bp.blogspot.com/_JIbxd7XP7Zc/TM37_rHOKjI/AAAAAAAAAFQ/R_AS52AN6LI/S220/victoria+pic+014.JPG'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4535447606986422873.post-4943343134388916390</id><published>2008-06-09T23:34:00.000-07:00</published><updated>2008-06-10T00:27:34.681-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='MSCRM'/><category scheme='http://www.blogger.com/atom/ns#' term='Spell Checker'/><category scheme='http://www.blogger.com/atom/ns#' term='Spellchecler'/><category scheme='http://www.blogger.com/atom/ns#' term='CRM'/><title type='text'>Spell Checker</title><content type='html'>A lot of clients ask us to add a spell checker to CRM email templates . There is free spell checker available called IESpell, which can be downloaded from &lt;a href="http://www.iespell.com/"&gt;http://www.iespell.com/&lt;/a&gt;. Plz check the term and condition on the web site. Install the software. Add a custom button on the CRM form and call the IESpell. It looks like&lt;br /&gt;&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/_JIbxd7XP7Zc/SE4jU6AU9oI/AAAAAAAAAAs/jmFASZ2mCBc/s1600-h/Spell+Check.jpg"&gt;&lt;/a&gt;&lt;p&gt;&lt;a href="http://2.bp.blogspot.com/_JIbxd7XP7Zc/SE4kUaAU9pI/AAAAAAAAAA0/Ajc3J6iG_Ls/s1600-h/spellcheck.jpg"&gt;&lt;img id="BLOGGER_PHOTO_ID_5210141751910921874" style="CURSOR: hand" alt="" src="http://2.bp.blogspot.com/_JIbxd7XP7Zc/SE4kUaAU9pI/AAAAAAAAAA0/Ajc3J6iG_Ls/s400/spellcheck.jpg" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;&lt;p&gt;The spell check can be added to any page of CRM. &lt;/p&gt;&lt;p&gt;If you need further assissatnce contact me at &lt;a href="mailto:asingh75@gmail.com"&gt;asingh75@gmail.com&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&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/4535447606986422873-4943343134388916390?l=mscrmshop.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mscrmshop.blogspot.com/feeds/4943343134388916390/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mscrmshop.blogspot.com/2008/06/spell-checker.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4535447606986422873/posts/default/4943343134388916390'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4535447606986422873/posts/default/4943343134388916390'/><link rel='alternate' type='text/html' href='http://mscrmshop.blogspot.com/2008/06/spell-checker.html' title='Spell Checker'/><author><name>Singh</name><uri>http://www.blogger.com/profile/04193418105246403607</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://4.bp.blogspot.com/_JIbxd7XP7Zc/TM37_rHOKjI/AAAAAAAAAFQ/R_AS52AN6LI/S220/victoria+pic+014.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_JIbxd7XP7Zc/SE4kUaAU9pI/AAAAAAAAAA0/Ajc3J6iG_Ls/s72-c/spellcheck.jpg' height='72' width='72'/><thr:total>1</thr:total></entry></feed>
