<?xml version="1.0" encoding="UTF-8"?>
<!--Generated by Squarespace V5 Site Server v5.13.158 (http://www.squarespace.com) on Tue, 21 May 2013 22:00:59 GMT--><rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd" xmlns:dc="http://purl.org/dc/elements/1.1/" version="2.0"><channel><title>MrDave's (David Yack) CRM Blog!</title><link>http://crm.davidyack.com/journal/</link><description></description><lastBuildDate>Fri, 19 Oct 2012 18:07:04 +0000</lastBuildDate><copyright></copyright><language>en-US</language><generator>Squarespace V5 Site Server v5.13.158 (http://www.squarespace.com)</generator><item><title>Extending Dynamics CRM via Acquisition</title><dc:creator>David Yack</dc:creator><pubDate>Fri, 19 Oct 2012 18:07:03 +0000</pubDate><link>http://crm.davidyack.com/journal/2012/10/19/extending-dynamics-crm-via-acquisition.html</link><guid isPermaLink="false">82353:708256:29959801</guid><description><![CDATA[<p>Couple days ago Microsoft announced they acquired <a href="http://www.marketingpilot.com/marketing_software.html">MarketingPilot</a> – while I don’t know a lot specifically about MarketingPilot as a product, from a strategic point of view this is a big deal.&#160; I don’t think it’s a big deal just because of the company acquired but because it signals to me a desire to fill product gaps by acquiring.&#160; In the past, this was done via complicated alliances / IP licensing that just made it confusing to everyone should they use the built-in or the partner directly.&#160; Acquisition is clean, product is absorbed into the core product and no confusion exists.&#160; It’s also a fast way to fill gaps and add innovation in a proven way. </p>  <p>You can read the announcement by Bob Stutz the new corporate vice president for Dynamics CRM <a href="https://community.dynamics.com/product/crm/crmnontechnical/b/crmconnection/archive/2012/10/17/microsoft-dynamics-crm-steps-forward-in-the-marketing-automation-space.aspx">here</a></p>]]></description><wfw:commentRss>http://crm.davidyack.com/journal/rss-comments-entry-29959801.xml</wfw:commentRss></item><item><title>Choosing Smart Defaults for New Entities</title><dc:creator>David Yack</dc:creator><pubDate>Wed, 29 Aug 2012 23:22:27 +0000</pubDate><link>http://crm.davidyack.com/journal/2012/8/29/choosing-smart-defaults-for-new-entities.html</link><guid isPermaLink="false">82353:708256:26279693</guid><description><![CDATA[<p>When creating a new entity some of the choices you make will stick with you for the life of the entity.&#160; Prior to CRM 2011 the general advice used to be turn on things if you think you might ever need them.&#160; For example, Notes and Activities – in the past if you didn’t enable them there was not a supported way to enable them.</p>  <p>CRM 2011 changes this, most of the options like these in the Communication and Collaboration section can be enabled later.&#160; The defaults though that come up have them enabled as you can see below:</p>  <p><a href="http://crm.davidyack.com/resource/Windows-Live-Writer-Choosing-Smart-Defaults-for-New-Entities_F1FD-?fileId=20062308" rel="lightbox"><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://crm.davidyack.com/resource/Windows-Live-Writer-Choosing-Smart-Defaults-for-New-Entities_F1FD-?fileId=20062309" width="573" height="189" /></a></p>  <p>The + sign next to an item indicates that once enabled it cannot be disabled later.&#160; So what I recommend is unchecking all of them and only enabling it WHEN you need it.&#160; Ideally in the future maybe the new entity form will get updated to not have those defaulted but until then take a few seconds and be smart about what you need!</p>]]></description><wfw:commentRss>http://crm.davidyack.com/journal/rss-comments-entry-26279693.xml</wfw:commentRss></item><item><title>CRM Client Extension Data Access Strategies</title><dc:creator>David Yack</dc:creator><pubDate>Tue, 26 Jun 2012 19:50:01 +0000</pubDate><link>http://crm.davidyack.com/journal/2012/6/26/crm-client-extension-data-access-strategies.html</link><guid isPermaLink="false">82353:708256:17078557</guid><description><![CDATA[<p>The following are the three primary options for accessing CRM data/services from a client side extension that is implemented as a web resource:</p>  <ul>   <li>REST endpoint that implements the OData protocol</li>    <li>SOAP endpoint for web resources</li>    <li>Commanding Pattern using either of the prior options</li> </ul>  <p>Each of these approaches can be used regardless of HTML (with scripting) or Silverlight client extensions. Keep in mind for standalone client applications there are other considerations not covered.</p>  <h4>Synchronous vs. Asynchronous</h4>  <p>Requests from the client extension to the CRM server requests can be made synchronous or asynchronously<b>. The best practice is to use asynchronous requests to ensure the best user experience.</b> Synchronous requests by nature can block the UI. Developers like Synchronous requests because it simplifies the programming model. Similar simplification of Async requests using C# async /await support or a similar library for scripting often times minimizes the programming challenges.</p>  <h4>REST Endpoint using OData</h4>  <p>The REST endpoint implements the OData protocol (<a href="http://www.odata.org">http://www.odata.org</a>) to allow flexible access to CRM data. This supports basic data access (Create, Retrieve, Update,Delete) but does not allow execution of CRM service requests like Start Workflow, or any Meta Data access.</p>  <p><b>Use When</b></p>  <ul>   <li>Low volume data access</li>    <li>Client side control of transaction is not required. By client side control of transactions this means where you need deterministic control if all changes are made or rolled back.</li> </ul>  <p><b>Avoid Use When</b></p>  <ul>   <li>Interactions that require large number (typically &gt; 10-25 at a time) requests to server</li>    <li>Interactions that require all to work or all to fail – you need a client controlled transaction</li>    <li>You need aggregate values – the SOAP endpoint is preferred then because you can run a Fetch Query</li>    <li>You need formatted values that are returned from the SOAP service or Option Set labels – or at least understand you need to handle this yourself.</li> </ul>  <p>It’s worth noting that while OData provides a flexible query pattern but can be slightly bloated in the size of data it returns. This can be mitigated using $select or by qualifying the data being returned. </p>  <h4>SOAP Endpoint</h4>  <p>The SOAP endpoint extends to the client the CRM Organization service giving access to both data and service operations. This includes the ability to query and modify CRM metadata.</p>  <p><b>Use When</b></p>  <ul>   <li>You need access to CRM Services or Metadata</li>    <li>For basic data access OData is not working</li>    <li>When you want control of setting Related entities which can simulate a client side transaction. For example you could insert an Account and related Activities in one server interaction. This is only available for related entities to the primary entity being created/updated.</li> </ul>  <p>Note: SDK documents Deep Insert for the REST endpoint that can accomplish similar actions but it is not documented if this is within the scope of a transaction</p>  <ul>   <li>Low volume data and service access</li>    <li>Client side control of transaction is not required beyond related entities</li> </ul>  <p><b>Avoid Use When</b></p>  <ul>   <li>Interactions that require large number (typically &gt; 10-25 at a time) requests to server, this is similar to the REST endpoint</li>    <li>Interactions that require all to work or all to fail – you need a client controlled transaction</li>    <li>For basic data access unless OData is not meeting needs</li> </ul>  <h4>Commanding Pattern</h4>  <p>The commanding pattern allows a client side requests to be communicated to the server and processed by a plug-in. The plug-in can run in a transaction and can perform one or more CRM service operations all of which would be included in the transaction. This pattern is best used when client extensions need to perform many server interactions or need support for client controlled transactions. This pattern also moves the chatty requests from client side with high latency to server side with low latency improving the total time to perform multiple operations. Additionally, if you have existing server code performing business logic, this pattern allows easy reuse.</p>  <p>The mechanics of this approach is a custom entity is created. Let’s call it “ServerCommand”. It contains at a minimum a RequestData attribute and a ResponseData attribute. The client extension using either OData or SOAP creates a ServerCommand entity instance populating the RequestData attribute. Server side a plug-in is created and registered against the Pre-Operation Create on ServerCommand. The plug-in looks at the RequestData does whatever work it needs to do and places the results in ResponseData. That work could be one or more service calls or data operations. Because this is done in the Pre-Operation stage of the event pipeline the response is written to the database during the create operation requiring no extra updates. Back client side, using the ID returned from Create the client extension would perform a read operation to get the ResponseData that was created by the plug-in. Server side you do need to bulk delete the completed ServerCommand records at some point.</p>  <p><b>Use When</b></p>  <ul>   <li>You need client controlled transactions</li>    <li>You need to perform several operations</li>    <li>You need to server side logic</li>    <li>You want to shift processing to the server </li> </ul>  <p><b>Avoid Use When</b></p>  <ul>   <li>You don’t need client controlled transactions</li>    <li>You are only making a few calls</li> </ul>  <h4>Mix and Match</h4>  <p>While it would be nice to suggest one single approach for working with CRM data / services, however as client extensions become more complex a single approach is likely not optimal. By using a mixed approach you can take the best of each of the patterns above as needed to provide the best user experience and meet the demands of the client extension.</p>  <p>Using a manager style class or other client side code pattern that hides the details of the implementation for each interaction with the CRM server client side developers can isolate the code and choices and giving flexibility for future changes. This technique is also helpful in larger client extension developed by multiple developers or where many client side extensions need the same interactions with the CRM server.</p>  <p>Wow, you made it to the end <img class="wlEmoticon wlEmoticon-smile" style="border-top-style: none; border-left-style: none; border-bottom-style: none; border-right-style: none" alt="Smile" src="http://crm.davidyack.com/resource/Windows-Live-Writer-CRM-Client-Extension-Data-Access-Strateg_BF0B-?fileId=18964246" />&#160; If you made it this far and have opinions drop me an <a href="http://crm.davidyack.com/send-me-e-mail/">e-mail</a>.</p>]]></description><wfw:commentRss>http://crm.davidyack.com/journal/rss-comments-entry-17078557.xml</wfw:commentRss></item><item><title>Using Early Types across assemblies in plugins</title><dc:creator>David Yack</dc:creator><pubDate>Thu, 31 May 2012 16:24:04 +0000</pubDate><link>http://crm.davidyack.com/journal/2012/5/31/using-early-types-across-assemblies-in-plugins.html</link><guid isPermaLink="false">82353:708256:16510559</guid><description><![CDATA[<p>It’s not uncommon for us to have are generated types in one assembly and have a plugin that uses the code that in another assembly.&#160; When doing that CRM doesn’t do well with resolving the classes.&#160; </p>  <p>To work around this you can give CRM a hint by setting the ProxyTypeAssembly.&#160; To do this you must first get a reference to the IProxyTypeAssemblyProvider – we typically do this by casting the IOrganizationServiceFactory instance we get to that type and go from there.&#160; Here’s an example of a helper method to get the Organization Service and setup the ProxyTypeAssembly prior to creation of the service instance.</p>  <p> public IOrganizationService CreateService(Guid? userID)&#160; <br /> {</p>  <p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; var factory = ServiceProvider.GetService(typeof(IOrganizationServiceFactory))    <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; as IOrganizationServiceFactory;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; var proxyProvider = factory as IProxyTypesAssemblyProvider;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; proxyProvider.ProxyTypesAssembly = ProxyTypeAssembly;&#160;&#160;&#160;&#160;&#160; </p>  <p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; return&#160; factory.CreateOrganizationService(userID);&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; <br /> }</p>  <p>ProxyTypeAssembly in this example would need to be the assembly that contains your generated classes.&#160; Clearly I’ve stripped out any error handling and other good stuff from this method but you get the general idea. </p>]]></description><wfw:commentRss>http://crm.davidyack.com/journal/rss-comments-entry-16510559.xml</wfw:commentRss></item><item><title>Working with Field Level Security from a Plugin</title><dc:creator>David Yack</dc:creator><pubDate>Sun, 13 May 2012 06:20:50 +0000</pubDate><link>http://crm.davidyack.com/journal/2012/5/13/working-with-field-level-security-from-a-plugin.html</link><guid isPermaLink="false">82353:708256:16235015</guid><description><![CDATA[<p>Question: I was wondering if a plugin could update a field that is protected by Field Level Security (FLS), or if that is blocked in the platform</p>  <p>Answer: It Depends</p>  <p>If the plugin is running pre-operation stage and is modifying the entity image that is input parameters before the platform operation occurs then it doesn’t matter if the user that caused the operation to occur has permission to update the secured field the plugin will still be able to modify the value. It also doesn’t matter the context in which the plugin was registered to run in the plugin registration tool. The following is simple example of modifying new_secretcode that is enabled for field level security. This code was run from a plugin registered on create of account in the pre-operation stage.</p>  <p>var context = serviceProvider.GetService(typeof(IPluginExecutionContext)) as IPluginExecutionContext;</p>  <p>var target = context.InputParameters[&quot;Target&quot;] as Entity;</p>  <p>target[&quot;new_secretcode&quot;] = &quot;1234&quot;;</p>  <p>To dive a little bit deeper let’s explore what happens when a plugin runs in post operation stage and attempts to create a record and populate the value of a secured field. For this example, I’ve modified the plugin to create a new account anytime a contact is created. As part of that it gets an organization service that runs in the context of the user that caused the platform operation to run. When run by the administration user the plugin fires and creates the account without any problem. When the contact was created by a user that did not have access to update secret code you would see the following error:</p>  <p><a href="http://crm.davidyack.com/resource/Windows-Live-Writer-75d15b811356_A5B3-?fileId=18171761" rel="lightbox"><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="clip_image001" border="0" alt="clip_image001" src="http://crm.davidyack.com/resource/Windows-Live-Writer-75d15b811356_A5B3-?fileId=18171762" width="389" height="100" /></a></p>  <p>Here’s the revised code that is running when a contact is created and attempts to create the account and update the secured field:</p>  <p>var context = serviceProvider.GetService(typeof(IPluginExecutionContext)) as IPluginExecutionContext;</p>  <p>var target = new Entity(&quot;account&quot;);</p>  <p>target[&quot;name&quot;] = &quot;test 3&quot;;</p>  <p>target[&quot;new_secretcode&quot;] = &quot;1234&quot;;</p>  <p>var sf = serviceProvider.GetService(typeof(IOrganizationServiceFactory)) as IOrganizationServiceFactory;</p>  <p>var service = sf.CreateOrganizationService(Guid.Empty);</p>  <p>service.Create(target);</p>  <p>The key line to pay attention to above is the CreateOrganizationService call that we pass Guid.Empty. Passing Guid.Empty instructs the method to give back an organization service configured to run in the context of the user. If instead we passed null to that method the organization service would be configured to run in the system context and the plugin would be able to update the secured field.</p>]]></description><wfw:commentRss>http://crm.davidyack.com/journal/rss-comments-entry-16235015.xml</wfw:commentRss></item><item><title>Export&amp;ndash;Missing Required Components</title><dc:creator>David Yack</dc:creator><pubDate>Tue, 20 Mar 2012 06:53:44 +0000</pubDate><link>http://crm.davidyack.com/journal/2012/3/20/exportndashmissing-required-components.html</link><guid isPermaLink="false">82353:708256:15505721</guid><description><![CDATA[<p>This has been happening for a while now, but I seem to see it come up more often.&#160; The scenario is you just created a solution, added existing entity Contact to it.&#160; You’ve added a single custom attribute&#160; and added the attribute to the form.&#160; You then go to export the solution to move it to another organization and you see the following dialog…</p>  <p><a href="http://crm.davidyack.com/resource/Windows-Live-Writer-ExportMissing-Required-Components_B58-?fileId=17216470" rel="lightbox"><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://crm.davidyack.com/resource/Windows-Live-Writer-ExportMissing-Required-Components_B58-?fileId=17216471" width="463" height="165" /></a></p>    <p>This is a valid dialog to see at this point, but not for why it is showing itself now.&#160; The real purpose of this dialog is to inform you of a missing component, a dependency that is not included in your solution and if not already in the target organization will block the import of this solution.&#160; As best I can tell what you are seeing above for this specific scenario is a bug…it shouldn’t be showing.&#160; </p>  <p>The risk here is you get so accustomed to seeing it for system entities that aren’t an issue you might miss the real deal.&#160; So stay focused look past the system entities and make sure you agree with what is on the list.&#160; Which should be true components that you are dependent on.&#160; By the way, one easy way to keep this list short is to build your solution as you go.&#160; As you use existing components ,add existing of them to your solution.&#160; If you create new components, create them from within the custom solution.&#160; It makes for less work when you go to publish your solution in the future.</p>]]></description><wfw:commentRss>http://crm.davidyack.com/journal/rss-comments-entry-15505721.xml</wfw:commentRss></item><item><title>Security update for ASP.NET and CRM</title><dc:creator>David Yack</dc:creator><pubDate>Thu, 29 Dec 2011 21:21:41 +0000</pubDate><link>http://crm.davidyack.com/journal/2011/12/29/security-update-for-aspnet-and-crm.html</link><guid isPermaLink="false">82353:708256:14372590</guid><description><![CDATA[<p>Today Microsoft released a security update for a vulnerability with ASP.NET.&#160; If you are using CRM via CRM Online this has already been patched for you.&#160; If you are running CRM on-premise you need to take action. </p>  <p>The security advisory can be found <a href="http://technet.microsoft.com/en-us/security/advisory/2659883">here</a>.&#160; The urgency around this is related to details being released at a security conference yesterday.</p>]]></description><wfw:commentRss>http://crm.davidyack.com/journal/rss-comments-entry-14372590.xml</wfw:commentRss></item><item><title>Turn on Communication and Collaboration as needed in CRM 2011</title><dc:creator>David Yack</dc:creator><pubDate>Tue, 11 Oct 2011 02:50:29 +0000</pubDate><link>http://crm.davidyack.com/journal/2011/10/11/turn-on-communication-and-collaboration-as-needed-in-crm-201.html</link><guid isPermaLink="false">82353:708256:13152468</guid><description><![CDATA[<p>In prior versions of CRM you had to decide at the time you created an entity if you wanted things like Notes, Activities etc. enabled.&#160; Now in CRM 2011 you can defer that decision and make it anytime in the future.&#160; When you had to make a final decision at time of entity creation it used to be always a good idea to turn them on if you “Think” you might ever need them.&#160; Now, I would say the opposite, don’t turn them on till you need them.</p>  <p><a href="http://crm.davidyack.com/resource/Windows-Live-Writer-Turn-on-Communication-and-Collaboration-_123DB-?fileId=14571331" rel="lightbox"><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://crm.davidyack.com/resource/Windows-Live-Writer-Turn-on-Communication-and-Collaboration-_123DB-?fileId=14571333" width="537" height="184" /></a></p>  <p>Keep in mind that the + after the item indicates that once you turn it on it can’t be turned off. </p>  <p>Sometimes the toughest part of learning a new version is forgetting old version habits!</p>]]></description><wfw:commentRss>http://crm.davidyack.com/journal/rss-comments-entry-13152468.xml</wfw:commentRss></item><item><title>CRM + Silverlight Book Released</title><dc:creator>David Yack</dc:creator><pubDate>Fri, 09 Sep 2011 16:43:35 +0000</pubDate><link>http://crm.davidyack.com/journal/2011/9/9/crm-silverlight-book-released.html</link><guid isPermaLink="false">82353:708256:12789540</guid><description><![CDATA[<table border="0" cellspacing="0" cellpadding="2" width="536"><tbody>     <tr>       <td valign="top" width="200"><a href="http://crm.davidyack.com/resource/Windows-Live-Writer-CRM--Silverlight_8EBF-?fileId=14072572" rel="lightbox"><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="slpluscrm" border="0" alt="slpluscrm" src="http://crm.davidyack.com/resource/Windows-Live-Writer-CRM--Silverlight_8EBF-?fileId=14072573" width="162" height="193" /></a></td>        <td valign="top" width="334">         <p>Silverlight has always been a good fit for extending the Microsoft Dynamics CRM user experience.&#160; CRM 2011 takes that a step further by providing first class support including the ability to host Silverlight content as web resources on the server.&#160; Silverlight can be used for a little widget on a form to a full blown rich page of content.&#160; In fact, we start out the book by talking about where it is a good fit and where it isn’t.</p>       </td>     </tr>      <tr>       <td valign="top" width="200">&nbsp;</td>        <td valign="top" width="334">&nbsp;</td>     </tr>   </tbody></table>  <p>The Silverlight + CRM book takes the best parts of our Silverlight Jumpstart book and adds a ton of CRM specific content.&#160; In fact I think its safe to say right now it’s the most CRM + Silverlight content found anywhere.&#160; We cover everything from where Silverlight can be used with CRM to how to use OData and the WCF services to perform data and service actions.&#160; You can read the full table of contents <a href="http://www.silverlightpluscrm.com/Home/Chapters">here</a>.</p>      <p>If you’ve purchased one of our other books check your e-mail we sent you a really good discount.&#160; If you haven’t bought one of our books or are just too lazy to look in your email here’s some codes to help you along as well.</p>  <table border="0" cellspacing="0" cellpadding="2" width="400"><tbody>     <tr>       <td valign="top" width="133">Discount Code</td>        <td valign="top" width="133">Product</td>        <td valign="top" width="133">Price</td>     </tr>      <tr>       <td valign="top" width="133">DaveBlog</td>        <td valign="top" width="133">ebook</td>        <td valign="top" width="133">$19.99</td>     </tr>      <tr>       <td valign="top" width="133">DaveBlogPrint</td>        <td valign="top" width="133">print</td>        <td valign="top" width="133">$34.99</td>     </tr>      <tr>       <td valign="top" width="133">DaveBlogBoth</td>        <td valign="top" width="133">print + ebook</td>        <td valign="top" width="133">$54.98</td>     </tr>   </tbody></table>  <p>   <br />You can find the book site at <a href="http://www.silverlightpluscrm.com">http://www.silverlightpluscrm.com</a> </p>  <p>Finally, I know a number of you have been asking me about updates to our full CRM book CRM as a Rapid Application Development Platform. We have been crazy busy working on that as well. In fact, last night was another late night!&#160; Part of what takes so long is not just updating content but making sure we cover new CRM 2011 features.&#160; Got ideas for either of these books of stuff we should cover?&#160; Send it over but only if you don’t mind if we write about it!</p>]]></description><wfw:commentRss>http://crm.davidyack.com/journal/rss-comments-entry-12789540.xml</wfw:commentRss></item><item><title>CRM 2011 Dialog Response Data Type Matters</title><dc:creator>David Yack</dc:creator><pubDate>Sat, 03 Sep 2011 07:19:37 +0000</pubDate><link>http://crm.davidyack.com/journal/2011/9/3/crm-2011-dialog-response-data-type-matters.html</link><guid isPermaLink="false">82353:708256:12716480</guid><description><![CDATA[<p>I’ve seen a number of people using CRM 2011 Dialogs run into the issue of not setting your data type on a Prompt and Response.&#160; Before I get too far, if you haven’t looked at Dialogs in CRM 2011 jump over <a href="http://channel9.msdn.com/Series/DynamicsCRM2011/Processes-Dialogs">here</a> and watch this video first before you continue.&#160; The scenario we are talking about here is imagine if you have a OptionSet on an entity and you want to collect a value from a user running a Dialog and set the OptionSet value on the entity from the response of the user.&#160; For our discussion imagine if you created a FavoriteColor option set on Contact and you are updating it by running a dialog that person running the dialog can collect the contacts favorite color.&#160; So I probably have a Page in my dialog that has a Prompt and Response that looks something like the following :</p>  <p><a href="http://crm.davidyack.com/resource/Windows-Live-Writer-CRM-2011-Dialog-Response-Data-Type-Matte_D35-?fileId=13976494" rel="lightbox"><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://crm.davidyack.com/resource/Windows-Live-Writer-CRM-2011-Dialog-Response-Data-Type-Matte_D35-?fileId=13976495" width="421" height="193" /></a></p>  <p>Next, I setup the response detail and choose a response type of Option Set.&#160; First of all, don’t confuse choosing Option Set here with anything to do with the Contact entity that has a real OptionSet attribute on it for the contacts favorite color. There is not currently anyway that you can pull those values&#160; and reuse them here to avoid duplication.&#160; Trust me I’ve suggested that be changes so hopefully we will see it in the future where you can simply reuse the values!</p>  <p><a href="http://crm.davidyack.com/resource/Windows-Live-Writer-CRM-2011-Dialog-Response-Data-Type-Matte_D35-?fileId=13976496" rel="lightbox"><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://crm.davidyack.com/resource/Windows-Live-Writer-CRM-2011-Dialog-Response-Data-Type-Matte_D35-?fileId=13976497" width="457" height="89" /></a></p>  <p>Notice that the Data Type is set by default to Text.&#160; This is where a lot of people fail to make the important change.&#160; You must set this to integer if you want to have any luck ever assigning the value collected to an OptionSet field on an entity.&#160; Another great reason to make sure you change it right away is the fact that you can’t change it after the prompt and response is saved unless you delete it and start over.&#160; You have been warned!</p>  <p><a href="http://crm.davidyack.com/resource/Windows-Live-Writer-CRM-2011-Dialog-Response-Data-Type-Matte_D35-?fileId=13976498" rel="lightbox"><img style="background-image: none; border-bottom: 0px; border-left: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://crm.davidyack.com/resource/Windows-Live-Writer-CRM-2011-Dialog-Response-Data-Type-Matte_D35-?fileId=13976499" width="244" height="72" /></a></p>  <p>In the mean time you need to setup your favorite colors using the Response Values section of the form as you can see below.</p>  <p><a href="http://crm.davidyack.com/resource/Windows-Live-Writer-CRM-2011-Dialog-Response-Data-Type-Matte_D35-?fileId=13976500" rel="lightbox"><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://crm.davidyack.com/resource/Windows-Live-Writer-CRM-2011-Dialog-Response-Data-Type-Matte_D35-?fileId=13976501" width="460" height="120" /></a></p>  <p>So for our example we’ve added Red, Green and Blue or RGB!&#160; The Value field on the right is really important if you are trying to collect values that will be used to set OptionSet values on an entity if that is the case these values must match the values of the attribute OptionSet.&#160; So for example&#160; they may be like 100,0001 or some large number to keep them unique if that is the case you MUST use the same values here if you ever expect it to work.</p>  <p>Once you take care of those two things using Dialogs to collect OptionSet values is possible.&#160; Hopefully in the future Dialogs will be enhanced so we can reuse the OptionSet values from the global definition.&#160;&#160; </p>  <p>What other features would you like to see Dialogs have?</p>]]></description><wfw:commentRss>http://crm.davidyack.com/journal/rss-comments-entry-12716480.xml</wfw:commentRss></item></channel></rss>