<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>GotchaHunter.NET</title>
	<atom:link href="http://gotchahunter.net/feed/" rel="self" type="application/rss+xml" />
	<link>http://gotchahunter.net</link>
	<description>.NET, APM, CRM, and more</description>
	<lastBuildDate>Wed, 20 Mar 2013 19:48:45 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.3</generator>
		<item>
		<title>Recurring workflows in Dynamics CRM</title>
		<link>http://gotchahunter.net/2013/03/recurring-workflows-in-dynamics-crm/</link>
		<comments>http://gotchahunter.net/2013/03/recurring-workflows-in-dynamics-crm/#comments</comments>
		<pubDate>Wed, 20 Mar 2013 19:48:45 +0000</pubDate>
		<dc:creator>Alex Shlega</dc:creator>
				<category><![CDATA[Dynamics CRM]]></category>
		<category><![CDATA[Twitted]]></category>
		<category><![CDATA[Dynamics CRM 2011]]></category>

		<guid isPermaLink="false">http://gotchahunter.net/2013/03/recurring-workflows-in-dynamics-crm/</guid>
		<description><![CDATA[A recurring workflow is, basically, a workflow that starts itself. There have been rumors that recurring workflows in Dynamics CRM can be implemented using child workflow (for example, by adding &#8220;wait&#8221; step and, then, starting a child workflow of the &#8230; <a href="http://gotchahunter.net/2013/03/recurring-workflows-in-dynamics-crm/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>A recurring workflow is, basically, a workflow that starts itself. There have been rumors that recurring workflows in Dynamics CRM can be implemented using child workflow (for example, by adding &#8220;wait&#8221; step and, then, starting a child workflow of the same type). However, I&#8217;ve never been able to really make it work since Dynamics turned out to be very diligent when it comes to terminating this sort of workflows. It usually allows the workflow to run for a few times, and, then, just when you think you&#8217;ve finally tricked it into allowing the workflow to go on indefinitely, you see that message that a workflow has been terminated.
<p>Yet we do need such workflows &#8211; the most obvious example of why we do is &#8220;age&#8221; calculations. After all, people do want to send out an email to the customers/contacts having a birthday today.
<p>However, at some point, I actually gave up on the idea to use recurring workflows since I could never make them work.
<p>There are workarounds, of cause. One can write a console application/windows service/etc to do something in CRM periodically. Well, it works for some of us, and it does not work for others. After all, you have to deploy and schedule that application somewhere, and that introduces other issues.
<p>I&#8217;ve been dwelling on it for almost half a year, and, it seems, I&#8217;ve finally got my &#8220;a-ha&#8221; moment just a few days ago. There are recurring jobs in CRM, and those jobs are perfectly &#8220;legal&#8221; from CRM standpoint. One can always create a bulk delete job and schedule that job to run daily. Well, no, not more frequently. You&#8217;ll have to schedule more than one job for that.
<p>However, the point is, a recurring workflow can, then, be implemented like this:
<ul>
<li>Create a new entity</li>
<li>Schedule bulk delete job that deletes all records of that entity type</li>
<li>Add a workflow for that entity which starts whenever a record is deleted</li>
<li>Do whatever you need in that workflow (if you need a custom workflow activity, or a plugin.. go ahead)</li>
<li>At the end of the workflow, create new record of the same entity type </li>
</ul>
<p>Here you go &#8211; you&#8217;ve got a recurring workflow, and CRM has nothing to complain about.</p>
]]></content:encoded>
			<wfw:commentRss>http://gotchahunter.net/2013/03/recurring-workflows-in-dynamics-crm/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Dynamics CRM in Google Chrome</title>
		<link>http://gotchahunter.net/2013/01/dynamics-crm-in-google-chrome/</link>
		<comments>http://gotchahunter.net/2013/01/dynamics-crm-in-google-chrome/#comments</comments>
		<pubDate>Tue, 08 Jan 2013 02:49:28 +0000</pubDate>
		<dc:creator>Alex Shlega</dc:creator>
				<category><![CDATA[Dynamics CRM]]></category>
		<category><![CDATA[Twitted]]></category>
		<category><![CDATA[Dynamics CRM 2011]]></category>

		<guid isPermaLink="false">http://gotchahunter.net/2013/01/dynamics-crm-in-google-chrome/</guid>
		<description><![CDATA[The wait is over – it’s there! Chrome: IE: PS. Apparently, the very first javascript customization I checked did not work:) Well, there is work to do.]]></description>
			<content:encoded><![CDATA[<p>The wait is over – it’s there! </p>
<p>Chrome:</p>
<p><a href="http://gotchahunter.net/wp-content/uploads/2013/01/image.png"><img title="image" style="border-right: 0px; border-top: 0px; display: inline; border-left: 0px; border-bottom: 0px" height="462" alt="image" src="http://gotchahunter.net/wp-content/uploads/2013/01/image_thumb.png" width="644" border="0"></a> </p>
<p>IE:</p>
<p><a href="http://gotchahunter.net/wp-content/uploads/2013/01/image1.png"><img title="image" style="border-right: 0px; border-top: 0px; display: inline; border-left: 0px; border-bottom: 0px" height="473" alt="image" src="http://gotchahunter.net/wp-content/uploads/2013/01/image_thumb1.png" width="644" border="0"></a></p>
<p>PS. Apparently, the very first javascript customization I checked did not work:) Well, there is work to do.</p>
]]></content:encoded>
			<wfw:commentRss>http://gotchahunter.net/2013/01/dynamics-crm-in-google-chrome/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Dynamics CRM: get all updated fields in javascript</title>
		<link>http://gotchahunter.net/2012/11/dynamics-crm-get-all-updated-fields-in-javascript/</link>
		<comments>http://gotchahunter.net/2012/11/dynamics-crm-get-all-updated-fields-in-javascript/#comments</comments>
		<pubDate>Thu, 29 Nov 2012 18:47:45 +0000</pubDate>
		<dc:creator>Alex Shlega</dc:creator>
				<category><![CDATA[Dynamics CRM]]></category>
		<category><![CDATA[Twitted]]></category>
		<category><![CDATA[Dynamics CRM 2011]]></category>
		<category><![CDATA[Javascript]]></category>

		<guid isPermaLink="false">http://gotchahunter.net/2012/11/dynamics-crm-get-all-updated-fields-in-javascript/</guid>
		<description><![CDATA[I got somewhat strange form behaviour in Dynamics CRM this morning – for whatever reason, at attempt to close one of the phone call records kept brining up a “do you want to save the updates?” dialog. It did not &#8230; <a href="http://gotchahunter.net/2012/11/dynamics-crm-get-all-updated-fields-in-javascript/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>I got somewhat strange form behaviour in Dynamics CRM this morning – for whatever reason, at attempt to close one of the phone call records kept brining up a “do you want to save the updates?” dialog. It did not seem to matter that there were no updates, and, even once all the javascripts have been removed, this strange behaviour went on.</p>
<p>I figured that I may need to see which field is causing this, so, here is a javascript code snippet which does this job – if you run into a similar situation, just add a web resource with this code, and, then, add a call to showDirtyAttributes to the “onSave” event of your form:</p>
<p><em>function showDirtyAttributes()<br />{<br />&nbsp;&nbsp; var names = &#8220;&#8221;;<br />&nbsp;&nbsp; Xrm.Page.data.entity.attributes.forEach(function(attribute, index)<br />&nbsp;&nbsp;&nbsp;&nbsp; {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(attribute.getIsDirty())<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; names += attribute.getName()+&#8221;;&#8221;;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />&nbsp;&nbsp;&nbsp;&nbsp; });<br />&nbsp;&nbsp;&nbsp; alert(names);<br />}</em>
<p>It actually helped – to some extent. It turned out one of the lookup fields did not like the reference assigned to it for some reason. It did work, I could navigate from that field to the referenced record.. However, I had to update that referenced record and choose it for the lookup once again to finally get rid of the “do you want to save the updates?” dialog.&nbsp; I’m still wondering what was so unique about that record, though..</p>
]]></content:encoded>
			<wfw:commentRss>http://gotchahunter.net/2012/11/dynamics-crm-get-all-updated-fields-in-javascript/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Dynamics CRM: You can.. call a plugin from javascript.</title>
		<link>http://gotchahunter.net/2012/11/dynamics-crm-you-can-call-a-plugin-from-javascript/</link>
		<comments>http://gotchahunter.net/2012/11/dynamics-crm-you-can-call-a-plugin-from-javascript/#comments</comments>
		<pubDate>Thu, 29 Nov 2012 03:32:19 +0000</pubDate>
		<dc:creator>Alex Shlega</dc:creator>
				<category><![CDATA[Dynamics CRM]]></category>
		<category><![CDATA[Twitted]]></category>
		<category><![CDATA[Dynamics CRM 2011]]></category>

		<guid isPermaLink="false">http://gotchahunter.net/2012/11/dynamics-crm-you-can-call-a-plugin-from-javascript/</guid>
		<description><![CDATA[It’s been generally accepted that Dynamics CRM does not allow us to call plugins from javascripts. And, generally speaking, we can’t call just any plugin from javascript. However, we can still make use of CRM plugins in a little unusual &#8230; <a href="http://gotchahunter.net/2012/11/dynamics-crm-you-can-call-a-plugin-from-javascript/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>It’s been generally accepted that Dynamics CRM does not allow us to call plugins from javascripts. And, generally speaking, we can’t call just any plugin from javascript. However, we can still make use of CRM plugins in a little unusual way.</p>
<p>Here is the scenario: there is a client-side java script, and we need to:</p>
<p>- Initiate some server-side processing</p>
<p>- Get the results of that processing back to our javascript</p>
<p>A potential solution to that might be to implement a web service which would encapsulate server-side logic, and to call that web service from our javascript. That might not work with Dynamics CRM online since we can’t deploy our web service on the CRM server, and, so, we may end up with a cross-domain call from our javascript. That’s not to mention that we’ll need to deploy our web service somewhere.</p>
<p>As of now, the only type of server-side processing we can use in Dynamics CRM online is called “plugins”, though. So, can we use CRM plugins in the scenario described above?</p>
<p>Surprisingly, the answer is yes. </p>
<p>First of all, there is a straightforward solution. We might register a plugin which would kick in whenever a new record of specific type is created. We might create a record of that type using javascript; we might pass some parameters to the plugin through the record fields; and, then, we might get the results back through another record (which would be created by the plugin). Would it work? I guess it would. However, we’ll have to work around possible concurrent calls, and, in general, I don’t like the idea of having to store intermediate results in CRM database.</p>
<p>There is another solution which still requires a dedicated entity type, but no CRM records of that type will ever have to be created. Here is how it works:</p>
<ul>
<li>We need an entity to pass data from our plugin to javascript
<li>We need to register a post-operation plugin on “RetrieveMultiple” for that entity
<li>We also need to register a pre-operation plugin on “RetrieveMultiple” for that entity
<li>Finally, we need to have a javascript that will make retrievemultiple request to CRM using fetchxml. That fetchxml will basically ask CRM to return all records of our entity type, and it will also pass whatever parameters we need to pass to the plugin through fetchxml conditions</li>
</ul>
<p>The point is: such a request from the javascript will activate both of the plugins (pre/post operation). In the pre-operation plugin, we will extract request parameters from fetch xml conditions. In the post-operation plugin, we will populate context.OutputParameters[“BusinessEntityCollection”] with the fictitious records. As a result, our javascript will receive those records, and that’s how it will get data from the plugin. That’s when we’ll have our mission accomplished – we will have a javascript which uses CRM plugins to do server-side processing, yet we will not have to store any data in CRM.</p>
<p>The reason we need two plugins in this scenario is that we don’t have access to the fetch xml in our post-operation plugin, although we still need a post-operation plugin to create results for the javascript.</p>
<p>Basically, all we have to do in the pre-operation plugin is to extract request parameters from the fetch xml and pass those parameters to the post-operation plugin through the SharedVariables collection of plugin context.</p>
<p>In the post-operation plugin, we can do whatever server-side processing we need to do (based on the request parameters that we’ve already extraced in the pre-operation), and, once it’s done, we can populate [“BusinessEntityCollection”] member of the context output parameters collection (in case with this property, we can’t do it in pre-operation.. so, again, we need both pre and post-operation plug-ins in this scenario).</p>
<p>Just to add a bit more clarity, here is a quick diagram:</p>
<p><a href="http://gotchahunter.net/wp-content/uploads/2012/11/image.png"><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://gotchahunter.net/wp-content/uploads/2012/11/image_thumb.png" width="729" height="511"></a> </p>
</p>
<p>Finally, here is a real-life scenario where I used this approach:</p>
<ul>
<li>My client wanted to implement javascript-based “behind the scenes” address verification with QAS (qas.com)
<li>QAS web service is hosted on QAS server, so any attempt to use javascript to call that service ends up with a cross-domain call
<li>On the other hand, it’s not a problem at all to implement that sort of verification in C#</li>
</ul>
<p>This fits the scenario described above quite nicely. I have a javascript that makes retrieve mutliple request using fetch xml. There are two plugins on the CRM side. Pre-operation plugin extracts address details from fetch xml. Post-operation plugin makes a call to QAS web service, and, depending on the results of that call, creates a fictitious record&nbsp; (that record never gets stored in CRM), adds that record to the BusinessEntityCollection, and that’s how my javascript receives the results back. </p>
]]></content:encoded>
			<wfw:commentRss>http://gotchahunter.net/2012/11/dynamics-crm-you-can-call-a-plugin-from-javascript/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Different faces of Dynamics CRM</title>
		<link>http://gotchahunter.net/2012/11/different-faces-of-dynamics-crm/</link>
		<comments>http://gotchahunter.net/2012/11/different-faces-of-dynamics-crm/#comments</comments>
		<pubDate>Sat, 10 Nov 2012 03:11:32 +0000</pubDate>
		<dc:creator>Alex Shlega</dc:creator>
				<category><![CDATA[Dynamics CRM]]></category>
		<category><![CDATA[Twitted]]></category>
		<category><![CDATA[Dynamics CRM 2011]]></category>

		<guid isPermaLink="false">http://gotchahunter.net/2012/11/different-faces-of-dynamics-crm/</guid>
		<description><![CDATA[I have to admit I’ve been in the trenches, and that’s been happening for quite a long time since I’ve managed to miss this announcement: “What did CWR Mobility and Microsoft announce? CWR Mobility and Microsoft announced on February 6, &#8230; <a href="http://gotchahunter.net/2012/11/different-faces-of-dynamics-crm/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>I have to admit I’ve been in the trenches, and that’s been happening for quite a long time since I’ve managed to miss this announcement:</p>
<p>“What did CWR Mobility and Microsoft announce?</p>
<p>CWR Mobility and Microsoft announced on February 6, 2012 that the Microsoft Dynamics® CRM Q2 2012 service update will deliver the capability for customers to access the complete functionality of Microsoft Dynamics CRM on any device with a new cloud-based, cross-platform, native mobile client service called Microsoft Dynamics CRM Mobile for Windows® Phone 7, iPad®, iPhone®, Android™ and BlackBerry®&nbsp; mobile devices.”
<p>See details here: <a href="http://www.cwrmobility.com/mobile-crm-faq">http://www.cwrmobility.com/mobile-crm-faq</a>
<p>That did not happen in summer, though. However,  Microsoft has recently published it’s December release preview guide which sticks to the point that Dynamics is really going to be supported on tablets and browsers-other-than-IE, so it may still happen.. or may not:
<p><a href="http://crmpublish.blob.core.windows.net/docs/Release_Preview_Guide_December_2012_FINAL.pdf">http://crmpublish.blob.core.windows.net/docs/Release_Preview_Guide_December_2012_FINAL.pdf</a>&nbsp;
<p>That, combined with the fact that I’ve spent a couple of days this week evaluating Resco.NET and CWR for the client, multiplied by the fact that most of the users would love to customize Dynamics UI a little(or far) beyond what’s available out of the box, kicked of a different thought process. It would be great if someone came up with a powerful UI framework for CRM applications. Such systems as Dynamics and Salesforce have very efficient backends. However, when it comes to the UI, you suddenly feel like your very basic freedoms have been cut off. After all, I do want to be able to see a different logo when I log in. I do want to play with filters, forms, views – that’s what most of the users will be working with. But I can’t.
<p>And I don’t think I’m alone here, though some people may be taking it to the extreme (or are they?):
<p><a href="http://social.microsoft.com/Forums/en/crmdevelopment/thread/56355a6e-0333-4b0a-a0ba-6a05709a6436">http://social.microsoft.com/Forums/en/crmdevelopment/thread/56355a6e-0333-4b0a-a0ba-6a05709a6436</a>
<p>What CWR example really demonstrates, though, is that it’s doable, and Resco.NET gives yet another example (On a side note, I’m not sure if I like CWR more).
<p>So, would it be possible? Do you happen to know of any existing UI frameworks that can be easily connected with Dynamics? Should we kick off a codeplex project to finally give different faces to Dynamics CRM? </p>
<p><br/><br/>PS. With that said,  December release preview does mention browsers support, and it does not mention native clients. What&#8217;s interesting is that it specifically mentions very recent browser versions for non IE browsers(Chrome v22, for instance), which might be a hint of HTML 5 client being developed for Dynamics. December release preview also does not mention support for Android tablets, and CWR does have that support.. So, after all, maybe the deal did not work out and we are going to see something completely new from Microsoft.</p>
]]></content:encoded>
			<wfw:commentRss>http://gotchahunter.net/2012/11/different-faces-of-dynamics-crm/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Minor things that make a difference &#8211; naming your report files in Dynamics CRM 2011</title>
		<link>http://gotchahunter.net/2012/10/minor-things-that-make-a-difference-naming-your-report-files-in-dynamics-crm-2011/</link>
		<comments>http://gotchahunter.net/2012/10/minor-things-that-make-a-difference-naming-your-report-files-in-dynamics-crm-2011/#comments</comments>
		<pubDate>Wed, 31 Oct 2012 02:48:04 +0000</pubDate>
		<dc:creator>Alex Shlega</dc:creator>
				<category><![CDATA[Dynamics CRM]]></category>
		<category><![CDATA[Twitted]]></category>
		<category><![CDATA[Dynamics CRM 2011]]></category>

		<guid isPermaLink="false">http://gotchahunter.net/2012/10/minor-things-that-make-a-difference-naming-your-report-files-in-dynamics-crm-2011/</guid>
		<description><![CDATA[Did you ever want to build a report in Dynamics CRM and download it in PDF format without having to manually rename the file? This is one of those things that makes a difference from the end user perspective since &#8230; <a href="http://gotchahunter.net/2012/10/minor-things-that-make-a-difference-naming-your-report-files-in-dynamics-crm-2011/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Did you ever want to build a report in Dynamics CRM and download it in PDF format without having to manually rename the file? This is one of those things that makes a difference from the end user perspective since it streamlines the process – there is no need, anymore, to go back to the underlying record and copy-paste information from some of the fields to the file name.</p>
<p>Unfortunately, even though it seems reasonable, this feature is not supported out of the box. Moreover, Dynamics CRM uses SSRS for reporting, and, to the best of my knowledge, SSRS does not support this feature either. This is not to mention that we have limited control over SSRS functionality when working with Dynamics CRM in general and with the online version of Dynamics CRM in particular.</p>
<p>We can make it work, though, and you will find step-by-step instructions below. Please keep in mind that this solution uses some of the undocumented java script SSRS-related objects which may or may not exist in the newer versions of Dynamics CRM. As of now it works, though, and, I believe, all those undocumented features (there are really just one or two) will be available in the future.</p>
<p>So, here is what we have out of the box:</p>
<p><a href="http://gotchahunter.net/wp-content/uploads/2012/10/image.png"><img title="image" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="234" alt="image" src="http://gotchahunter.net/wp-content/uploads/2012/10/image_thumb.png" width="644" border="0"></a> </p>
</p>
<p>&nbsp;</p>
<p>It is the last step that we want to eliminate:</p>
<p>&nbsp;</p>
<p><a href="http://gotchahunter.net/wp-content/uploads/2012/10/image1.png"><img title="image" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="418" alt="image" src="http://gotchahunter.net/wp-content/uploads/2012/10/image_thumb1.png" width="1040" border="0"></a> </p>
<p>We want to be able to name the file automatically as part of the “Export to PDF” step.</p>
<p>Here is how we are going to do it:</p>
<ol>
<li>We will do it using “salesorder” entity as an example, but it is easy to do the same for other entities as well.
<li>We will create a java script that will be loaded as a web resource to the order form.
<li>In that java script, we will define a single function that will be called in form “onload”.
<li>That function will re-define <em>window.open </em>so that we can run additional code whenever user decides to build a report.
<li>Our additional code will use java script setTimeout in order to wait until the report is loaded, and, then, modify report file name. </li>
</ol>
<p>We will be using undocumented features of Dynamics CRM only once: in order to modify the file name, we will have to access java script instance of the reporting component. I believe this part of Dynamics CRM functionality is not really documented, but one can always use Internet Explorer developer tools (F12) to do some research.</p>
<p><strong>Let’s take a look at the details:</strong></p>
<ul>
<li>Create a new web resource (jscript)
<li>Give it a name (let’s use “new_reporting”)
<li>Using web resource “text editor” button, add the following java script:</li>
</ul>
<p><font size="1">function setHandlers()<br />{<br />&nbsp; var newFileName = Xrm.Page.getAttribute(&#8220;ordernumber&#8221;).getValue();//Change attribute name for other entities<br />&nbsp; window.open = function (open) {<br />&nbsp;&nbsp;&nbsp;&nbsp; return function (url, name, features) {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; var timeout = 2000;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; var newWindow = null;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(features != null) newWindow&nbsp; = open(url, name, features);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; else if(name != null) newWindow&nbsp; = open(url, name);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; else newWindow&nbsp; = open(url);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; function timeoutFunc()<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; var rv = null;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; var r = null;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; try<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; rv = newWindow.frames[ "resultFrame" ].$find(&#8220;reportViewer&#8221;);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; r =rv._getInternalViewer();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; catch(err)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; setTimeout(timeoutFunc, timeout);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(r == null)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; setTimeout(timeoutFunc, timeout);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; else<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; var url = r.ExportUrlBase;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; var i = url.indexOf(&#8220;FileName=&#8221;);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; var j = url.indexOf(&#8220;&amp;&#8221;, i+1);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; var oldFileName = url.substring(i+9, j);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; r.ExportUrlBase = url.substring(0,i) + &#8220;FileName=&#8221;+ newFileName + oldFileName + url.substring(j);//Use this line to assign new file name<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; };<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(url.indexOf(&#8220;viewer.aspx&#8221;) &gt; 0)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; setTimeout(timeoutFunc, timeout);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return newWindow;<br />&nbsp;&nbsp;&nbsp;&nbsp; };<br />&nbsp; }(window.open);<br />}</font>
<p>This function does the following:</p>
<ul>
<li>It overrides window.open with a new function</li>
<li>Whenever another java script makes a call to window.open, our overridden version will be called instead</li>
<li>First, we will forward that request to the original window.open. After that, we will verify if requested url contains “viewer.aspx” substring. If it does not contain such a substring, we don’t need to do anything.</li>
<li>If it does contain the substring, we will use setTimeout using internal “timeoutFunc” as a parameter</li>
<li>The purpose of the internal “timeoutFunc” function is simple:</li>
<li>It will verify if the report is loaded. If not, it will call another setTimeout, and it will keep doing it until the report is finally loaded (yes, there could be potential problem here)</li>
<li>If the report has been loaded, finally, it will update “ExportUrlBase “ property of the reporting control</li>
</ul>
<p>And that’s, pretty much, it.</p>
<p><strong>What’s left is:</strong></p>
<ul>
<li>Save this web resource and publish it</li>
<li>Add this web resource to the order form</li>
<li>Add “onload” event and specify setHandlers java script function for that event</li>
<li>Save order form and publish it</li>
</ul>
<p><strong>Finally, verify the results:</strong></p>
<p><a href="http://gotchahunter.net/wp-content/uploads/2012/10/image2.png"><img title="image" style="border-right: 0px; border-top: 0px; display: inline; border-left: 0px; border-bottom: 0px" height="270" alt="image" src="http://gotchahunter.net/wp-content/uploads/2012/10/image_thumb2.png" width="408" border="0"></a> </p>
<p>Hope this helps.</p>
]]></content:encoded>
			<wfw:commentRss>http://gotchahunter.net/2012/10/minor-things-that-make-a-difference-naming-your-report-files-in-dynamics-crm-2011/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Dynamics CRM: Scribe vs SSIS</title>
		<link>http://gotchahunter.net/2012/10/dynamics-crm-scribe-vs-ssis/</link>
		<comments>http://gotchahunter.net/2012/10/dynamics-crm-scribe-vs-ssis/#comments</comments>
		<pubDate>Sat, 06 Oct 2012 02:49:55 +0000</pubDate>
		<dc:creator>Alex Shlega</dc:creator>
				<category><![CDATA[Dynamics CRM]]></category>
		<category><![CDATA[SSIS]]></category>
		<category><![CDATA[Scribe]]></category>
		<category><![CDATA[Twitted]]></category>
		<category><![CDATA[Dynamics CRM 2011]]></category>

		<guid isPermaLink="false">http://gotchahunter.net/2012/10/dynamics-crm-scribe-vs-ssis/</guid>
		<description><![CDATA[I used to think that Scribe is almost the only choice when it comes to ETL tools for Dynamics CRM. It is convenient, it does the job, it is the first tool that comes to mind.. However, I recently tried &#8230; <a href="http://gotchahunter.net/2012/10/dynamics-crm-scribe-vs-ssis/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>I used to think that Scribe is almost the only choice when it comes to ETL tools for Dynamics CRM. It is convenient, it does the job, it is the first tool that comes to mind.. However, I recently tried to create an SSIS package using SSIS adapter for Dynamics CRM from Kingsway Soft, and I’m not so sure now.</p>
<p>SSIS adapter is convenient, it does the job, and, now, it’s the first tool that comes to mind. </p>
<p>Why? </p>
<p>Because it is different now.. There are SSIS adapters for Dynamics CRM from such companies as <a href="http://kingswaysoft.com">kingswaysoft.com</a>, <a href="http://cozyroc.com">CozyRoc.com</a>, and, probably, from some others. Those adapters make it much easier to create SSIS packages for Dynamics CRM.</p>
<p>I tried to look up a comparison of Scribe and SSIS (for Dynamics CRM), and the following link came up:</p>
<p><a href="http://cowia.com/ssis-vs-scribe/">http://cowia.com/ssis-vs-scribe/</a></p>
<p>Let’s face it – it’s not the best link. But it pretty much reflects my own subconscious ideas I had until recently, so I’ll still use it. The thing is, however, I believe that post is quite outdated now. Here is how it should look:</p>
<ul>
<li>Scribe has CRM adapter. SSIS has CRM adapters</li>
<li>SSIS is free tool from Microsoft. Scribe needs a license(and an expensive one)</li>
<li>SSIS has super performance. And you <strong>don’t </strong>need to spend a lot of time coding (because there is an adapter now)</li>
<li>Scribe has great performance – much less time needed to get your solution ready. This one is quite controversial. It really did not take that much time to create an SSIS package.</li>
</ul>
<p>And there is one item that I would still give to Scribe: automation, notifications, easy to install and redeploy. I’m not sure that justifies the cost of licenses, though. Since Scribe licensing depends on the number of CRM users, and none of the SSIS adapters I’ve seen so far take number of users into account, the difference can be more than significant (2k vs 20K).</p>
]]></content:encoded>
			<wfw:commentRss>http://gotchahunter.net/2012/10/dynamics-crm-scribe-vs-ssis/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Using different Live ID-s when working with Dynamics CRM online</title>
		<link>http://gotchahunter.net/2012/10/using-different-live-id-s-when-working-with-dynamics-crm-online/</link>
		<comments>http://gotchahunter.net/2012/10/using-different-live-id-s-when-working-with-dynamics-crm-online/#comments</comments>
		<pubDate>Sat, 06 Oct 2012 02:09:15 +0000</pubDate>
		<dc:creator>Alex Shlega</dc:creator>
				<category><![CDATA[Dynamics CRM]]></category>
		<category><![CDATA[Dynamics Tools]]></category>
		<category><![CDATA[Twitted]]></category>
		<category><![CDATA[Dynamics CRM 2011]]></category>

		<guid isPermaLink="false">http://gotchahunter.net/2012/10/using-different-live-id-s-when-working-with-dynamics-crm-online/</guid>
		<description><![CDATA[From what I know, there is no way to make IE remember different live id-s for different Dynamics CRM online instances. We are kind of stuck with having to sign out/sign in every time we need to connect to another &#8230; <a href="http://gotchahunter.net/2012/10/using-different-live-id-s-when-working-with-dynamics-crm-online/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>From what I know, there is no way to make IE remember different live id-s for different Dynamics CRM online instances. We are kind of stuck with having to sign out/sign in every time we need to connect to another instance. </p>
<p>There are a couple of workarounds:</p>
<ul>
<li>Use another machine to login to another instance of CRM online
<li>Use “run as” to start IE under another user account</li>
</ul>
<p>Maintaining a physical or virtual machine just for this seems to be a bit of an overkill. However, having to enter windows credentials in the windows “run as” dialog every time I need to start IE under another user account becomes quite annoying over time.</p>
<p>There turned out to be a simple solution..</p>
<ul>
<li>You will need a new user account (it might be local or domain account)
<li>You will need to create a batch file and put the following in that file:</li>
</ul>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <em>runas.exe /savecred /user:&#8221;<b>DOMAIN_OR_COMPUTER_NAME\USERNAME</b>&#8220;&nbsp; &#8220;C:\Program Files\Internet Explorer\iexplore.exe&#8221;<u></u><u></u></em>
<p><u></u><u></u>
<p>The first time you run that batch file, it will ask you for the user password. Once IE starts, login to CRM (don’t forget to enable “remember me” checkbox). That will be one-time setup. After that, you won’t have to enter usernames/passwords anymore – just start the batch file and navigate to CRM location.</p>
]]></content:encoded>
			<wfw:commentRss>http://gotchahunter.net/2012/10/using-different-live-id-s-when-working-with-dynamics-crm-online/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>The remote server returned an error: (407) Proxy Authentication Required.</title>
		<link>http://gotchahunter.net/2012/09/the-remote-server-returned-an-error-407-proxy-authentication-required/</link>
		<comments>http://gotchahunter.net/2012/09/the-remote-server-returned-an-error-407-proxy-authentication-required/#comments</comments>
		<pubDate>Sun, 30 Sep 2012 02:32:09 +0000</pubDate>
		<dc:creator>Alex Shlega</dc:creator>
				<category><![CDATA[Dynamics CRM]]></category>
		<category><![CDATA[Dynamics CRM 2011]]></category>

		<guid isPermaLink="false">http://gotchahunter.net/?p=1084</guid>
		<description><![CDATA[A couple of applications I used to believe should always work came up with the same sort of surprise this week. What would you say(or think) if BIDS started to display “407 proxy authentication required” error whenever you tried to &#8230; <a href="http://gotchahunter.net/2012/09/the-remote-server-returned-an-error-407-proxy-authentication-required/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>A couple of applications I used to believe should always work came up with the same sort of surprise this week. What would you say(or think) if BIDS started to display “407 proxy authentication required” error whenever you tried to connect to the Dynamics CRM server? Or when Dynamics CRM Adapter for Scribe just refused to connect to the CRM server for the reason unknown?</p>
<p>Well, I had quite a few thoughts myself, so I had to make sure I don’t articulate what I think. Instead, I brought up the most powerful troubleshooting tool I know of.. which is called “Google”, of cause.. and it did not take me long to figure out that here is what I needed:</p>
<p><em>&lt;?xml version=&#8221;1.0&#8243; encoding=&#8221;utf-8&#8243;?&gt;<br />&lt;configuration&gt;<br />&lt;system.net&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;defaultProxy useDefaultCredentials=&#8221;true&#8221;&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;proxy usesystemdefault=&#8221;true&#8221;/&gt;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/defaultProxy&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/system.net&gt;<br />&lt;/configuration&gt;</em></p>
<p>There was a corporate proxy in this environment. For whatever reason, neither BIDS nor Dynamics CRM could make it through the proxy to the online Dynamics CRM instance. I am not sure if any of those applications are implemented in .NET from top to bottom, but, at least, Dynamics CRM portion must be using .NET since adding defaultProxy section to the configuration files did help in both cases.</p>
<p>For BIDS, “defaultProxy” should be added to the devenv.exe.config.</p>
<p>For Scribe, I actually went on and added this section to each of the configuration files (you will find those files in the Scribe folder).</p>
]]></content:encoded>
			<wfw:commentRss>http://gotchahunter.net/2012/09/the-remote-server-returned-an-error-407-proxy-authentication-required/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Dynamics CRM: Country/Province (and other) dropdown lists</title>
		<link>http://gotchahunter.net/2012/06/dynamics-crm-countryprovince-and-other-dropdowns/</link>
		<comments>http://gotchahunter.net/2012/06/dynamics-crm-countryprovince-and-other-dropdowns/#comments</comments>
		<pubDate>Tue, 19 Jun 2012 17:07:34 +0000</pubDate>
		<dc:creator>Alex Shlega</dc:creator>
				<category><![CDATA[Dynamics CRM]]></category>
		<category><![CDATA[Dynamics CRM 2011]]></category>
		<category><![CDATA[OData]]></category>
		<category><![CDATA[Tools & Solutions]]></category>

		<guid isPermaLink="false">http://gotchahunter.net/2012/06/dynamics-crm-countryprovince-and-other-dropdowns/</guid>
		<description><![CDATA[Dynamics CRM does not support dropdowns for the lookup fields out of the box, but it is not unusual when we really need a dropdown rather than a lookup. The most obvious example is when we need to set country/state &#8230; <a href="http://gotchahunter.net/2012/06/dynamics-crm-countryprovince-and-other-dropdowns/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Dynamics CRM does not support dropdowns for the lookup fields out of the box, but it is not unusual when we really need a dropdown rather than a lookup. The most obvious example is when we need to set country/state for the address field in the contact record. Whatever the reason is, in the default Dynamics configuration we can only type in country/state names.</p>
<p>So, this post describes a javascript solution that allows for a few things:</p>
<ul>
<li>Create a drop down where we would normally have to use a lookup
<li>Propagate selected reference and/or text to the pre-existing entity field
<li>Implement parent-child relationships between two or more dropdowns</li>
</ul>
<p>This solution does use a bit of HTML manipulation to replace image web resource with a drop down, but, other than that, it relies on OData services and Xrm.Page client-side API.</p>
<p>You will need to download a couple of Dynamics solutions:</p>
<p><a title="http://gotchahunter.net/downloads/GotchaHunter_1_0.zip" href="http://gotchahunter.net/downloads/GotchaHunter_1_0.zip">http://gotchahunter.net/downloads/GotchaHunter_1_0.zip</a></p>
<p><a href="http://gotchahunter.net/downloads/GotchaHunterTests_1_0.zip">http://gotchahunter.net/downloads/GotchaHunterTests_1_0.zip</a></p>
<p>Please note that both solutions are unmanaged. The first one contains web resources only, so it is safe to deploy it. </p>
<p>The second one is for testing only since it has some customizations, yet it adds some other entities (such as <strong>country </strong>and <strong>province</strong>). In other words, use it as a reference and feel free to play with it in the test environment. Make sure you know what is there before you install it into a more “permanent” environment.</p>
<p>For the purpose of this blog post, you can use the second solution only (since it also contains all the scripts).</p>
<p>So, follow these steps to try the solution:</p>
<ol>
<li>Get a clean instance of Dynamic (CRM online would do<img class="wlEmoticon wlEmoticon-smile" style="border-top-style: none; border-right-style: none; border-left-style: none; border-bottom-style: none" alt="Smile" src="http://gotchahunter.net/wp-content/uploads/2012/06/wlEmoticon-smile.png"> )
<li>Deploy GotchaHunterTests_1_0.zip and publich customizations
<li>Make sure tcs_country and tcs_province entities are visible in the workplace (if not, update those two entities)
<li>Create a couple of countries
<li>Create a few provinces for at least one of those countries
<p><a href="http://gotchahunter.net/wp-content/uploads/2012/06/image7.png"><img title="image" style="border-top-width: 0px; padding-right: 0px; display: inline; padding-left: 0px; border-left-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; border-right-width: 0px" height="269" alt="image" src="http://gotchahunter.net/wp-content/uploads/2012/06/image_thumb7.png" width="683" border="0"></a></p>
<li>Now, go to one of the contacts
<li>Notice that you have two dropdowns. When you change selected item for any of those dropdowns, original text fields will be updates, too:</li>
<p><a href="http://gotchahunter.net/wp-content/uploads/2012/06/image8.png"><img title="image" style="border-top-width: 0px; padding-right: 0px; display: inline; padding-left: 0px; border-left-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; border-right-width: 0px" height="388" alt="image" src="http://gotchahunter.net/wp-content/uploads/2012/06/image_thumb8.png" width="786" border="0"></a></p>
<li>Technically, you don&#8217;t need to display those original text fields on the form, so you could update the form to &#8220;not display&#8221; those fields by default(just do not remove them from the form)</li>
</ol>
<p>  And that&#8217;s, pretty much, it. In the next post, I&#8217;m going to explain how to make these dropdowns work from scratch, without using my &#8220;Tests&#8221; solution (that&#8217;s where you will need the first link above &#8211; that solution contains all the required scripts and no other customizations).</p>
]]></content:encoded>
			<wfw:commentRss>http://gotchahunter.net/2012/06/dynamics-crm-countryprovince-and-other-dropdowns/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
