<?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>MSCRM Blogger &#187; General</title>
	<atom:link href="http://mscrmblogger.com/category/general/feed/" rel="self" type="application/rss+xml" />
	<link>http://mscrmblogger.com</link>
	<description>Achieving it all with Microsoft Dynamics CRM™</description>
	<lastBuildDate>Thu, 10 May 2012 20:24:54 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.2</generator>
		<item>
		<title>Lookup data from a related entity (Lookup) using JScript and the XrmServiceToolkit</title>
		<link>http://mscrmblogger.com/2012/05/10/lookup-data-from-a-related-entity-lookup-using-jscript-and-the-xrmservicetoolkit/</link>
		<comments>http://mscrmblogger.com/2012/05/10/lookup-data-from-a-related-entity-lookup-using-jscript-and-the-xrmservicetoolkit/#comments</comments>
		<pubDate>Thu, 10 May 2012 20:22:56 +0000</pubDate>
		<dc:creator>Carlton Colter</dc:creator>
				<category><![CDATA[API-SDK]]></category>
		<category><![CDATA[Extensions]]></category>
		<category><![CDATA[General]]></category>
		<category><![CDATA[Scripts]]></category>
		<category><![CDATA[Web Resources]]></category>
		<category><![CDATA[CodePlex]]></category>
		<category><![CDATA[crm]]></category>
		<category><![CDATA[crm 2011]]></category>
		<category><![CDATA[CRM Online]]></category>
		<category><![CDATA[crm sdk]]></category>
		<category><![CDATA[crm2011]]></category>
		<category><![CDATA[field]]></category>
		<category><![CDATA[forms]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[jscript]]></category>
		<category><![CDATA[lookup]]></category>
		<category><![CDATA[Microsoft Dynamics CRM 2011]]></category>
		<category><![CDATA[onchange]]></category>
		<category><![CDATA[script]]></category>
		<category><![CDATA[Web Resource]]></category>
		<category><![CDATA[XrmServiceToolkit]]></category>

		<guid isPermaLink="false">http://mscrmblogger.com/?p=1007</guid>
		<description><![CDATA[Lookup information from a related entity using the XrmServiceToolkit or just the REST endpoint.]]></description>
			<content:encoded><![CDATA[<p>Do you need the value from a related entity, like a lookup?  I had written this for CRM 4 a while back, and people use it, but I occasionally get questions about looking up other values in CRM.  This bit of code will help you find those values on a related object.  Below are two options to do this.  Option 1: using the REST SDK and JSON2, and then Option 2: using Jaimie Ji&#8217;s <a href="http://xrmservicetoolkit.codeplex.com/" target="_blank">XRM Service Toolkit</a>.</p>
<p>Jaimie Ji&#8217;s <a href="http://xrmservicetoolkit.codeplex.com/" target="_blank">XRM Service Toolkit</a> provides a comprehensive set of JScript libraries for interacting with the SOAP and REST SDK through JavaScript.  While Option 1 in this particular use case is fairly simple, when you start needing to do more advanced things, you may want to look at using that kit.  It is fairly comprehensive and he keeps it up to date.</p>
<h1>Option 1: Using the REST SDK and JSON2</h1>
<p>Using the REST SDK is great, and there are some really good examples in the CRM SDK help file.  Now in order to use the below code-block, you need to use JSON.</p>
<p>JSON, or JavaScript Object Notation, is a text format that is used to interchange data.  JSON2.js is a lightweight javascript that convert the strings to javascript objects and vice-versa.  The CRM REST SDK can return data in JSON format.</p>
<p>To get the code for JSON2, you can go <a href="https://github.com/douglascrockford/JSON-js" target="_blank">here</a>.  You will need to embed this code into your javascript file or include json2.js along with the code below.  Without it, you will not be able to parse the data properly, and the code below uses the JSON library in json2.js.</p>
<p>Ok, below we have 3 functions:</p>
<ul>
<li><b>getServerUrl</b> :  which gets the server URL &#8211; taken from the <a href="http://crmrestkit.codeplex.com/" target+"_blank">CrmRestKit</a></li>
<li><b>Lookup_Changed</b> : what you call when a lookup is changed</li>
<li><b>retrieveReqCallBack</b> : the callback function that performs any actions</li>
<li>
</li>
</ul>
<p>You would put Lookup_Changed in the change event of a lookup field and specify the attributes like one of the following:</p>
<ul>
<li>&#8216;contactid&#8217;,'Contact&#8217;,'contactlookup&#8217;</li>
<li>&#8216;contactid&#8217;,'Contact&#8217;,'contactlookup&#8217;,['Telephone1']</li>
<li>&#8216;contactid&#8217;,'Contact&#8217;,'contactlookup&#8217;,['Telephone1','FullName]</li>
</ul>
<p>Then you&#8217;d put your actions inside the retrieveReqCallBack.</p>
<pre name="code" class="javascript">
function getServerUrl() {
    // From CrmRestKit.js
    var localServerUrl = window.location.protocol + &quot;/&quot; + window.location.host;
    var context = parent.Xrm.Page.context;

    if (context.isOutlookClient() &amp;&amp; !context.isOutlookOnline()) {
        return localServerUrl;
    }
    else {
        var crmServerUrl = context.getServerUrl();
        crmServerUrl = crmServerUrl.replace(/^(http|https):\/\/([_a-zA-Z0-9\-\.]+)(:([0-9]{1,5}))?/, localServerUrl);
        crmServerUrl = crmServerUrl.replace(/\/$/, &quot;&quot;);
    }
    return crmServerUrl;
}

function Lookup_Changed(attributeName, entityName, callbackId, columns) {
    var serverUrl = Xrm.Page.context.getServerUrl();
    var ODataPath = serverUrl + &quot;/XRMServices/2011/OrganizationData.svc&quot;;

    var lookup = Xrm.Page.data.entity.attributes.get(attributeName).getValue();
    if (lookup===null) {
        return false;
    }

    var id = lookup[0].id;
    if (id == null) {
        return false;
    }

    var retrieveReq = new XMLHttpRequest();

    var url = ODataPath + &quot;/&quot;+entityName+&quot;Set(guid'&quot; + id + &quot;')&quot;;
    if (columns !== undefined &amp;&amp; columns !== null) {
        url = url + &quot;?$select=&quot; + columns.join(',');
    }

    retrieveReq.open(&quot;GET&quot;, url, true);
    retrieveReq.setRequestHeader(&quot;Accept&quot;, &quot;application/json&quot;);
    retrieveReq.setRequestHeader(&quot;Content-Type&quot;, &quot;application/json; charset=utf-8&quot;);
    retrieveReq.onreadystatechange = function () {
        if (this.readyState == 4 /* complete */) {
            if (this.status == 200) {
                var data;
                var jData;
                jData = JSON.parse(this.responseText);
                if (jData &amp;&amp; jData.d &amp;&amp; jData.d.results &amp;&amp; jData.d.results.length &gt; 0) {
                    data = jData.d.results[0];
                } else if (jData &amp;&amp; jData.d) {
                    data = jData.d;
                }

                if (data == null) {
                    return;
                }
                retrieveReqCallBack(callbackId, data);
            }
        }
    };
    retrieveReq.send();
    return true;
}

function retrieveReqCallBack(calltype, data) {
    var toLookup=function(data) {
        if (data==null || data==&quot;&quot; || (data.Id==null)) {
            return null;
        }

        var result=new Array();
        result[0] = {};
        result[0].id = data.Id;
        result[0].name = data.Name;
        result[0].entityType = data.LogicalName;
        return result;
    }

    switch (calltype) {
        case 'pricelookup':
            Xrm.Page.data.entity.attributes.get(&quot;new_pricecategorylookup&quot;).setValue(toLookup(c.new_pricecategorylookup);
            break;
        case 'contactlookup':
            Xrm.Page.data.entity.attributes.get(&quot;insp_poctelephonenumber&quot;).setValue(c.Telephone1);
            break;
        default:
            break;
    }
}
</pre>
<h1>Option 2: Using the XrmServiceToolkit with similar functions</h1>
<p>Ok, now let&#8217;s assume you are using the <a href="http://xrmservicetoolkit.codeplex.com/" target="_blank">XRM Service Toolkit</a>, and you want to do the same thing, using a Lookup_Changed function and the retrieveReqCallBack function.  Instead of embedding JSON and a method to get the server url, you can use the following:</p>
<pre name="code" class="javascript">
function Lookup_Changed(attributeName, entityName, callbackId, columns) {
    var lookup = Xrm.Page.data.entity.attributes.get(attributeName).getValue();
    if (lookup===null) {
        return false;
    }

    if (lookup[0].id == null) {
        return false;
    }

	XrmServiceToolkit.Rest.Retrieve(
        entityName,
        lookup[0].id,
        columns,
		null,
        function (result) {
            retrieveReqCallBack(callbackId, result);
        },
        function (error) {
            throw error;
        },
		true
    );
}

function retrieveReqCallBack(calltype, data) {
    var toLookup=function(data) {
        if (data==null || data==&quot;&quot; || (data.Id==null)) {
            return null;
        }

        var result=new Array();
        result[0] = {};
        result[0].id = data.Id;
        result[0].name = data.Name;
        result[0].entityType = data.LogicalName;
        return result;
    }

    switch (calltype) {
        case 'pricelookup':
            Xrm.Page.data.entity.attributes.get(&quot;new_pricecategorylookup&quot;).setValue(toLookup(c.new_pricecategorylookup);
            break;
        case 'contactlookup':
            Xrm.Page.data.entity.attributes.get(&quot;insp_poctelephonenumber&quot;).setValue(c.Telephone1);
            break;
        default:
            break;
    }
}
</pre>
<p>The <a href="http://xrmservicetoolkit.codeplex.com/" target="_blank">XRM Service Toolkit</a> does a lot, and I would suggest checking it out.</p>
]]></content:encoded>
			<wfw:commentRss>http://mscrmblogger.com/2012/05/10/lookup-data-from-a-related-entity-lookup-using-jscript-and-the-xrmservicetoolkit/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>InfoPath to CRM: Accepting Emailed InfoPath Forms</title>
		<link>http://mscrmblogger.com/2011/11/21/infopath-to-crm-accepting-emailed-infopath-forms/</link>
		<comments>http://mscrmblogger.com/2011/11/21/infopath-to-crm-accepting-emailed-infopath-forms/#comments</comments>
		<pubDate>Mon, 21 Nov 2011 19:05:51 +0000</pubDate>
		<dc:creator>Carlton Colter</dc:creator>
				<category><![CDATA[API-SDK]]></category>
		<category><![CDATA[Extensions]]></category>
		<category><![CDATA[General]]></category>
		<category><![CDATA[HTML]]></category>
		<category><![CDATA[Plugins]]></category>
		<category><![CDATA[Scripts]]></category>
		<category><![CDATA[Web Resources]]></category>
		<category><![CDATA[contact]]></category>
		<category><![CDATA[control]]></category>
		<category><![CDATA[crm]]></category>
		<category><![CDATA[crm 2011]]></category>
		<category><![CDATA[forms]]></category>
		<category><![CDATA[InfoPath]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[jscript]]></category>
		<category><![CDATA[Microsoft]]></category>
		<category><![CDATA[microsoft dynamics crm]]></category>
		<category><![CDATA[Microsoft Dynamics CRM 2011]]></category>
		<category><![CDATA[plugin]]></category>
		<category><![CDATA[script]]></category>
		<category><![CDATA[Web Resource]]></category>

		<guid isPermaLink="false">http://mscrmblogger.com/?p=889</guid>
		<description><![CDATA[Everybody loves to use InfoPath forms.  And let's face it, we all wish we could just take them and put them into CRM.  This post delves into how I integrated InfoPath &#38; CRM to dynamically allow InfoPath forms received by email into CRM records.  It is still <i>under development</i>, but the source code has been partially tested and works.]]></description>
			<content:encoded><![CDATA[<p>Everybody loves to use InfoPath forms.  And let&#8217;s face it, we all wish we could just take them and put them into CRM.  What I&#8217;ve written is a simple way to do that without the hassle of figuring out how to bind the InfoPath form schema to a custom WCF service.  It still doesn&#8217;t do everything I want it to, but it works, so I figured I&#8217;d go ahead and put it out there for everyone to look at, play with, and even use.</p>
<p>If you are interested in this solution, you can download the following:</p>
<ul>
<li><a href='http://mscrmblogger.com/wp-content/uploads/2011/11/InfoPath_1_0_0_0_managed.zip'>Managed Solution</a> (this is the only thing you need)</li>
<li><a href='http://mscrmblogger.com/wp-content/uploads/2011/11/InfoPath_1_0_0_0.zip'>Unmanaged Solution</a> (in case you want to modify mine, like add grid support, it is on my to-do list)</li>
<li><a href='http://mscrmblogger.com/wp-content/uploads/2011/11/InfoPath4CRMSourceCode.zip'>Source Code</a> (this is in case you would prefer to use a WCF service or if you just want to play around with my code)</li>
</ul>
<p>Once you&#8217;ve installed the managed solution, you&#8217;ll need to do the following to create / setup an InfoPath form:</p>
<ol>
<li>
<p>For this particular InfoPath integration, you need to create InfoPath Forms that mirror a CRM Entity.<br />
<strong>Note: </strong><em>You can always create a new entity for the form data.</em></p>
<p style="text-align: center"><img src="http://mscrmblogger.com/wp-content/uploads/2011/11/112111_1905_InfoPathtoC13.png" alt=""/></p>
</li>
<li>
<p>Rename the default form Group to the name of the entity (ex: Contact)</p>
<p style="text-align: center"><img src="http://mscrmblogger.com/wp-content/uploads/2011/11/112111_1905_InfoPathtoC23.png" alt=""/></p>
</li>
<li>
<p>Inside CRM create the InfoPath form (it is an entity included in the solution), select the entity and save the form.
</p>
<p style="text-align: center"><img src="http://mscrmblogger.com/wp-content/uploads/2011/11/112111_1905_InfoPathtoC31.png" alt=""/></p>
</li>
<li>
<p>Once it has been saved, you can copy the ID using the &#8220;Copy ID&#8221; link in the header.<br />
<br /><strong>Note: </strong>If you do not select the <em>Allow Any CRM Field </em>checkbox, you will need to add the individual Fields, which can be found in the left navigation.</p>
</li>
<li>
<p>In the InfoPath Form Designer, add a field named SubmissionCode with the Default Value as the ID you just copied.<br />
<br /><b>Note:</b> Using the submission code allows us to check and see if the form is valid, active, and allowed.</p>
<p style="text-align: center"><img src="http://mscrmblogger.com/wp-content/uploads/2011/11/submissioncode.png" alt=""/></p>
</li>
<li>
<p>Add a field for each of the fields in CRM that you want to be available, selecting the appropriate data type.<br />
<br /><b>Note:</b> Unfortunately I have not had the time to test the fields and have been using the checkbox on the infopath form record to enable any/all CRM fields.  However, I did not want to delay releasing the code and information as it currently is.  If someone identifies a problem with this or any other section of the code, I&#8217;ll be happy to look into it and work on resolving the issue.</p>
<p style="text-align: center"><img src="http://mscrmblogger.com/wp-content/uploads/2011/11/112111_1905_InfoPathtoC53.png" alt=""/></p>
</li>
<li>
<p>Layout the fields on the form, then click File &gt; Submit Options &gt; To Email</p>
<p style="text-align: center"><img src="http://mscrmblogger.com/wp-content/uploads/2011/11/112111_1905_InfoPathtoC63.png" alt=""/></p>
</li>
<li>
<p>Enter the Queue email or where you want new forms to be submitted.</p>
<p style="text-align: center"><img src="http://mscrmblogger.com/wp-content/uploads/2011/11/112111_1905_InfoPathtoC73.png" alt=""/></p>
</li>
<li>
<p>Click Next.</p>
<p style="text-align: center"><img src="http://mscrmblogger.com/wp-content/uploads/2011/11/112111_1905_InfoPathtoC83.png" alt=""/></p>
</li>
<li>
<p>Click Finish.</p>
<p style="text-align: center"><img src="http://mscrmblogger.com/wp-content/uploads/2011/11/112111_1905_InfoPathtoC93.png" alt=""/></p>
</li>
<li>Save and close the form designer.</li>
<li>
<p>Open the form and test submission.</p>
<p style="text-align: center"><img src="http://mscrmblogger.com/wp-content/uploads/2011/11/112111_1905_InfoPathtoC103.png" alt=""/></p>
</li>
</ol>
<p>Once the email comes into CRM, the process of reading the form is easy; you just open it up and click the <img src="http://mscrmblogger.com/wp-content/uploads/2011/11/112111_1905_InfoPathtoC113.png" alt=""/> Import InfoPath button on the ribbon.</p>
<p>Usually I would post the source-code and comment on how it works in great detail, but this time, it really depends on which component.  There is a plugin and WCF service written in C# as well as two Jscript files, one for the buttons and one for the InfoPath form inside CRM that creates a drop-down of the entities in CRM.  I would suggest downloading the unmanaged solution and source-code if you want to delve into those items.</p>
<p>Now, for complex situations or form conversions, binding the InfoPath schema is the way to go.  Using that method (the one described in detail on <a href="http://blogs.msdn.com/b/philoj/archive/2005/11/08/490200.aspx">Philo&#8217;s Weblog</a>) you can import the InfoPath form schema into Visual Studio:</p>
<ol>
<li>Create an InfoPath form and lay it out the way you want it.
</li>
<li>Extract the form files (File | Extract Form Files) to a location you can find later.
</li>
<li>Close the InfoPath form designer.
</li>
<li>Open the Visual Studio command prompt.
</li>
<li>Change to the directory where you extracted the files<br /><strong>cd c:\myinfopathfiles<br />
</strong></li>
<li>Run xsd against the myschema.xsd in that directory, and specify the namespace you would like to use.<br /><strong>Note: </strong>My WCF namespace is CrmInfoPathService and my plugin namespace is InfoPathPlugin.<br /><strong>xsd.exe myschema.xsd /classes /l:cs /n:InfoPathPlugin<br />
</strong></li>
<li>Then you can deserialize the xml into the object and store it in CRM or any other system using the logic embedded in your code.</li>
</ol>
<p>The key point to my solution was not to do something that everyone does on occasion, but to make something so that I can leverage it in the future and not have to create a new integration every time I wanted to leverage a new form.  Now, on that note, here are the list of things that if you delve into, I&#8217;d like to know, a.k.a. my to-do list for this project:
</p>
<ul>
<li>Add a button onto the grid for activities</li>
<li>Create a way to handle child entities.</li>
<li>Modify the plugin/WCF code to link the created entities to the form email using connections.</li>
<li>Change the button on the form to monitor for the results (success/failure) and report back to the user.</li>
<li><i>Any great ideas my readers think should be added!</i></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://mscrmblogger.com/2011/11/21/infopath-to-crm-accepting-emailed-infopath-forms/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>CRM 2011 Activity Feeds</title>
		<link>http://mscrmblogger.com/2011/10/25/crm-2011-activity-feeds/</link>
		<comments>http://mscrmblogger.com/2011/10/25/crm-2011-activity-feeds/#comments</comments>
		<pubDate>Tue, 25 Oct 2011 21:48:33 +0000</pubDate>
		<dc:creator>Carlton Colter</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[activity feeds]]></category>
		<category><![CDATA[crm 2011]]></category>
		<category><![CDATA[CRM Online]]></category>
		<category><![CDATA[crm2011]]></category>
		<category><![CDATA[solution]]></category>

		<guid isPermaLink="false">http://mscrmblogger.com/?p=856</guid>
		<description><![CDATA[CRM Activity Feeds are here!  They are great.  Microblog away.]]></description>
			<content:encoded><![CDATA[<h1>CRM Activity Feeds are <a href="http://dynamics.pinpoint.microsoft.com/en-us/applications/microsoft-dynamics-crm-activity-feeds-12884926310" target="_blank">here</a>!</h1>
<p>CRM&#8217;s Activity Feeds provide a quick and easy way to share information using short and quick updates.  Users can follow diffrent entities and see what changes occur as well as post and receive quick comments to your peers.  Once you have the solution installed you can find your feed in the <b>What&#8217;s New</b> section.</p>
<p><a href="http://mscrmblogger.com/wp-content/uploads/2011/10/whatsnew.png"><img src="http://mscrmblogger.com/wp-content/uploads/2011/10/whatsnew.png" alt="CRM 2011 Whats New" title="CRM 2011 Whats New" width="1196" height="925" class="aligncenter size-full wp-image-857" /></a></p>
<blockquote><p>Feed status updates can be posted manually by users or automatically based on pre-defined system rules through workflow. Activity Feeds can also be posted to by external applications through the Microsoft Dynamics CRM web services API. Activity Feeds expose Microsoft Office Lync real-time presence functionality so that users can initiate communication activities such as IM, phone calls and emails.</p></blockquote>
<p>Activity Feeds help increase awareness and that awareness can improve productivity.  Now workers can stay informed about what is important to them (and comment on it).</p>
<p>So now that you have them, how do you administer them?  Well there are two new sections in settings, <b>Activity Feeds Configuration</b> and <b>Activity Feeds Rules</b>.  You can use the activity feed configuration to add additional entities to appear on the wall.  You can read the MSDN documentation on activity feeds <a href="http://msdn.microsoft.com/en-us/library/hh547452.aspx" target="_blank">here</a>.</p>
<p>What&#8217;s cooler is the fact that there is already a <a href="http://www.windowsphone.com/en-US/apps/632921fd-ab99-4392-822f-f0ddbdbc856e" target="_blank">Windows Phone 7.5 mobile app that takes advantage of the activity feeds</a>.</p>
<blockquote><p>Microsoft Dynamics CRM Mobile is a Windows Phone 7.5 app which brings Activity Feeds to your mobile device.  Microsoft Dynamics CRM Activity Feeds will work with all deployment models for Microsoft Dynamics CRM including on-premise, Microsoft Dynamics CRM Online and partner-hosted.</p></blockquote>
<p>Check out the picture below.  A beautiful client.</p>
<p><a href="http://www.windowsphone.com/en-US/apps/632921fd-ab99-4392-822f-f0ddbdbc856e"><img src="http://mscrmblogger.com/wp-content/uploads/2011/10/wp7crm-1024x567.png" alt="Windows Phone 7.5 CRM Client" title="Windows Phone 7.5 CRM Client" width="695" height="384" class="aligncenter size-large wp-image-865" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://mscrmblogger.com/2011/10/25/crm-2011-activity-feeds/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Search for CRM 2011 Appointments in Silverlight</title>
		<link>http://mscrmblogger.com/2011/06/15/searchrequest/</link>
		<comments>http://mscrmblogger.com/2011/06/15/searchrequest/#comments</comments>
		<pubDate>Wed, 15 Jun 2011 05:46:49 +0000</pubDate>
		<dc:creator>Carlton Colter</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[appointment]]></category>
		<category><![CDATA[array]]></category>
		<category><![CDATA[crm]]></category>
		<category><![CDATA[crm 2011]]></category>
		<category><![CDATA[crm sdk]]></category>
		<category><![CDATA[default fields]]></category>
		<category><![CDATA[Dynamics CRM]]></category>
		<category><![CDATA[Microsoft Dynamics CRM 2011]]></category>
		<category><![CDATA[ObservableCollection]]></category>
		<category><![CDATA[SearchRequest]]></category>
		<category><![CDATA[serviceappointment]]></category>
		<category><![CDATA[Silverlight]]></category>
		<category><![CDATA[soap]]></category>
		<category><![CDATA[Web Resource]]></category>

		<guid isPermaLink="false">http://mscrmblogger.com/?p=632</guid>
		<description><![CDATA[Searching for appointments using the SOAP Web-Service from Silverlight can be tricky if you don't know to initialize the empty collections.  Once their initialized, scheduling is a breeze.]]></description>
			<content:encoded><![CDATA[<p>Okay, I&#8217;m not the best Silverlight developer, I&#8217;ve only recently gotten started.  And recently I was working on trying to find the appointments for a particular service.  If you look at the SDK, there is a <a href="http://msdn.microsoft.com/en-us/library/gg334219">Sample: Schedule a Resource</a>.  It works great if you are creating a console application, but the same code doesn&#8217;t work if you are using Silverlight.</p>
<p>Here is the code from the sample that creates the AppointmentRequest:</p>
<pre name="code" class="csharp">
AppointmentRequest appointmentReq = new AppointmentRequest
                    {
                        RequiredResources = new RequiredResource[] { vanReq },
                        Direction = SearchDirection.Backward,
                        Duration = 60,
                        NumberOfResults = 10,
                        ServiceId = _plumberServiceId,
                        // The search window describes the time when the resouce can be scheduled.
                        // It must be set.
                        SearchWindowStart = DateTime.Now.ToUniversalTime(),
                        SearchWindowEnd = DateTime.Now.AddDays(7).ToUniversalTime(),
                        UserTimeZoneCode = 1
                    };
</pre>
<p>Now, there are a lot of fields that they didn&#8217;t set, but since they are using the DLL files, they don&#8217;t need to.  The reason this same request would fail using Silverlight is because the web-service expects the arrays to not be null.  Using the DLL files, they end up as just empty arrays, but since we are using the ObservableCollection in Silverlight, we have to initialize the collections by creating empty fields.  Then our request will be accepted.</p>
<p><pre name="code" class="csharp">
AppointmentRequest appointmentReq = new AppointmentRequest
                    {
                        Objectives = new ObservableCollection<objectiverelation>(),
                        RequiredResources = new ObservableCollection<requiredresource>(),
                        AppointmentsToIgnore = new ObservableCollection<appointmentstoignore>(),
                        Constraints = new ObservableCollection<constraintrelation>(),
                        Sites = new ObservableCollection<guid>(),
                        // Required Fields:
                        Duration=duration,
                        Direction=SearchDirection.Forward,
                        NumberOfResults = 20
                    };
</guid></constraintrelation></appointmentstoignore></requiredresource></objectiverelation></pre>
</p>
<p>You&#8217;ll still have to set the TimeZoneCode and adjust the dates accordingly just like they do in the SDK example.  My personal preference here is to retrieve the usersettings and use the timezonecode from it.</p>
<p>Now, for all the people out there that use my <a href="http://silvercrmsoap.codeplex.com/">SilverCRMSoap Library</a> I have on codeplex, I did update the source code to include a BeginExecuteSearchRequest and modified the AppointmentRequest to have the default values specified.</p>
<p>With that, I think my bing maps scheduler will turn out great.  Once it is done, I might update this post with a screenshot.</p>
<p>Happy Scheduling!</p>
<p style="width=250px;text-align=right">&#8211; mscrmblogger</p>
]]></content:encoded>
			<wfw:commentRss>http://mscrmblogger.com/2011/06/15/searchrequest/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>CRM 2011: Supported or Unsupported?</title>
		<link>http://mscrmblogger.com/2011/05/12/crm-2011-supported-vs-unsupported/</link>
		<comments>http://mscrmblogger.com/2011/05/12/crm-2011-supported-vs-unsupported/#comments</comments>
		<pubDate>Thu, 12 May 2011 19:28:56 +0000</pubDate>
		<dc:creator>Carlton Colter</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[crm 2011]]></category>
		<category><![CDATA[customizations]]></category>
		<category><![CDATA[Microsoft Dynamics CRM 2011]]></category>
		<category><![CDATA[supported]]></category>
		<category><![CDATA[unsupported]]></category>

		<guid isPermaLink="false">http://mscrmblogger.com/?p=471</guid>
		<description><![CDATA[<p>I get a lot of questions about what is a supported change or what is an unsupported change.  Dynamics CRM is an extremely customizable system and provides tools to facilitate customization.  So just what is supported or unsupported?</p>]]></description>
			<content:encoded><![CDATA[<h1>Just what is supported? &#8211; And.. what&#8217;s not supported!?</h1>
<p>I get a lot of questions about what is a supported change or what is an unsupported change.  Dynamics CRM is an extremely customizable system and provides tools to facilitate customization.  The customizations described in the SDK are supported and will be upgradable to the next version of CRM unless they explicitly say they may not or are deprecated.  When I say something is unsupported on my blog, it means that if you call support they may not help you with it, it may contain a piece of code you&#8217;re not supposed to use, or it could be allowed, but it may not easily upgrade to the next version because it uses something that could change in the next release.</p>
<p>Following the <i><a href="http://msdn.microsoft.com/en-us/library/gg328350.aspx">Supported Extensions for Microsoft Dynamics CRM</a></i> from the SDK, I&#8217;ll provide a list of what is and is not supported.  I&#8217;ll try and simplify my list and the descriptions so that you can use it as a quick reference, then if you need more clarification on a particular item you can look it up in the <a href="http://msdn.microsoft.com/en-us/library/gg328350.aspx">Supported Extensions MSDN Article</a>.  Hopefully you can use this information as a quick-reference to know whether or not something will be upgradable, supported, or unsupported.</p>
<h1>CRM Web Services:</h1>
<div style="padding-left:15px">
<h2>Supported: <span style="font-size:0.5em;font-style:italic;">(CRM Web Services)</span></h2>
<ul>
<li>Using the following web-services:
<ul>
<li>DiscoveryService</li>
<li>DeploymentService</li>
<li>Organization Data Service</li>
<li>Web Resource End Points:
<ul>
<li>The SOAP End Point</li>
<li>The REST End Point</li>
</ul>
</li>
</ul>
</li>
</ul>
<h2>Unsupported: <span style="font-size:0.5em;font-style:italic;">(CRM Web Services)</span></h2>
<ul>
<li>Using the REST Endpoint outside a Web Resource.</li>
</ul>
</div>
<h1>Form Scripts:</h1>
<div style="padding-left:15px">
<h2>Supported: <span style="font-size:0.5em;font-style:italic;">(Form Scripts)</span></h2>
<ul>
<li>Jscript functions and events available through the form editor</li>
<li>Xrm.Page.data for data interaction</li>
<li>Xrm.Page.ui for form appearance and behavior</li>
</ul>
<h2>Unsupported: <span style="font-size:0.5em;font-style:italic;">(Form Scripts)</span></h2>
<ul>
<li>DOM changes and access because they may not be upgradable.  <i>The structure of forms and elements could change in future releases. </i></li>
<li>Accessing/using methods not published in the SDK such as the innerControl methods.</li>
</ul>
</div>
<h1>Ribbons</h1>
<div style="padding-left:15px">
<h2>Supported:  <span style="font-size:0.5em;font-style:italic;">(Ribbons)</span></h2>
<ul>
<li>Using the RibbonDiffXml to add, remove, or hide ribbon elements</li>
<li>Re-use of the ribbon commands defined by MCRM (however, they may be deprecated or changed later)</li>
</ul>
<h2>Unsupported:  <span style="font-size:0.5em;font-style:italic;">(Ribbons)</span></h2>
<ul>
<li>Re-use of JavaScript functions defined within ribbon commands</li>
</ul>
</div>
<h1>Solution File (customizations.xml)</h1>
<div style="padding-left:15px">
<h2>Supported:  <span style="font-size:0.5em;font-style:italic;">(Solutions File &#8211; cusotmizations.xml)</span></h2>
<ul>
<li><i>Changes to the customizations.xml file must conform to the CustomizationsSolution.xsd schema.</i></li>
<li>Changes to the ribbon</li>
<li>Changes to navigation using the SiteMap</li>
<li>Form and dashboards changes using FormXml</li>
<li>Customization of Saved Queries</li>
</ul>
<h2>Unsupported:   <span style="font-size:0.5em;font-style:italic;">(Solutions File &#8211; cusotmizations.xml)</span></h2>
<ul>
<li>Defining any other solution components (than the ones listed above) by editing the exported customizations.xml file is not supported. This includes the following:<br />
<table style="padding-left:15px;border-spacing: 20px 0px">
<tr>
<td>
<li>Entities</li>
</td>
<td>
<li>Attributes</li>
</td>
<td>
<li>Entity Relationships</li>
</td>
<td>
<li>Entity Messages</li>
</td>
</tr>
<tr>
<td>
<li>Option Sets</li>
</td>
<td>
<li>Web Resources</li>
</td>
<td>
<li>Processes (Workflows) </li>
</td>
<td>
<li>Plugin Assemblies</li>
</td>
</tr>
<tr>
<td>
<li>SDK Message Processing steps</li>
</td>
<td>
<li>Service Endpoints</li>
</td>
<td>
<li>Reports</li>
</td>
<td>
<li>Connection Roles</li>
</td>
</tr>
<tr>
<td>
<li>Article Templates</li>
</td>
<td>
<li>Contract Templates</li>
</td>
<td>
<li>E-mail Templates</li>
</td>
<td>
<li>Mail Merge Templates</li>
</td>
</tr>
<tr>
<td>
<li>Security Roles</li>
</td>
<td>
<li>Field Security Profiles</li>
</td>
<td></td>
<td></td>
</tr>
</table>
</li>
</ul>
</div>
<h1>Plugins</h1>
<div style="padding-left:15px">
<h2>Supported:  <span style="font-size:0.5em;font-style:italic;">(Plugins)</span></h2>
<ul>
<li>Plugins are supported for all CRM 2011 deployments, Online, on-premise, and IFD.</li>
<li>Adding your plug-in and custom workflow activity assemblies to the <b>%installdir%\server\bin\</b> folder is supported on Microsoft Dynamics CRM on-premises and IFD server installations only.</li>
<li>Non-Sandboxed plugins only work in CRM on-premises and IFD server installations.</li>
</ul>
<h2>Unsupported:   <span style="font-size:0.5em;font-style:italic;">(Plugins)</span></h2>
<ul>
<li><i>If it is a plugin and it works, it is supported.  There are limitations to plugins, but it does not have to do with supportability.</i></li>
</ul>
</div>
<h1>Workflow</h1>
<div style="padding-left:15px">
<h2>Supported:  <span style="font-size:0.5em;font-style:italic;">(Workflow)</span></h2>
<ul>
<li>Creating custom workflow activities (assemblies) </li>
<li>Editing XAML workflows</li>
</ul>
<h2>Unsupported:   <span style="font-size:0.5em;font-style:italic;">(Workflow)</span></h2>
<ul>
<li><i>Because workflow is not currently able to be sandboxed, custom workflow activities (assemblies) and modified XAML workflows only work in the CRM 2011 on-premise and IFD deployments.</i></li>
</ul>
</div>
<h1>ISV folder</h1>
<div style="padding-left:15px">
<h2>Supported:  <span style="font-size:0.5em;font-style:italic;">(ISV Folder)</span></h2>
<ul>
<li>Adding custom web-pages to the ISV folder in on-premise and IFD deployments is supported, but deprecated.  These pages must use the 2007 ASMX web-service end point.</li>
</ul>
<h2>Unsupported:   <span style="font-size:0.5em;font-style:italic;">(ISV Folder)</span></h2>
<ul>
<li><i>The ISV folder has been deprecated and it is preferable for these pages to utilize web-resources instead wherever possible. </i></li>
</ul>
</div>
<h1>Reports</h1>
<div style="padding-left:15px">
<h2>Supported:  <span style="font-size:0.5em;font-style:italic;">(Reports)</span></h2>
<ul>
<li>Fetch-Based reports for CRM Online, on-premise, and IFD deployments</li>
<li>SQL Based reports for on-premise and IFD deployments</li>
</ul>
<h2>Unsupported:   <span style="font-size:0.5em;font-style:italic;">(Reports)</span></h2>
<ul>
<li>SQL Based reports that access the tables and non-filtered CRM views.</li>
</ul>
</div>
<h1>Other Unsupported Customizations</h1>
<div style="padding-left:15px">
<ul>
<li>Modifications to any of the CRM web pages and files such as .aspx, .css, .htm, .xml, .jpg, and .gif.</li>
<li>Modifying the schema of the database (other than adding indexes)</li>
<li>Changing data using SQL commands or any program that does not leverage the SDK to make the changes.</li>
<li>Referencing any CRM DLL other than:<br />
<table style="padding-left:15px;border-spacing: 20px 0px">
<tr>
<td>Microsoft.Xrm.Sdk.dll</td>
<td>Microsoft.Crm.Sdk.Proxy.dll</td>
</tr>
<tr>
<td>Microsoft.Xrm.Sdk.Workflow.dll</td>
<td>Microsoft.Xrm.Sdk.Deployment.dll</td>
</tr>
<tr>
<td>Microsoft.Crm.Outlook.Sdk.dll</td>
<td>Microsoft.Crm.Tools.EmailProviders.dll</td>
</tr>
</table>
</li>
<li>Using the CRM JavaScript code not made available through the Xrm object or is not documented in the SDK.</li>
<li>Using custom HttpModules to inject HTML/DHTML into the CRM User Interface</li>
<li>Creating an IIS Virtual Director or Application inside the CRM website</li>
</ul>
</div>
]]></content:encoded>
			<wfw:commentRss>http://mscrmblogger.com/2011/05/12/crm-2011-supported-vs-unsupported/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Quickly Create Users in Active Directory from CSV for Demo Environment</title>
		<link>http://mscrmblogger.com/2011/05/05/create-users-in-ad/</link>
		<comments>http://mscrmblogger.com/2011/05/05/create-users-in-ad/#comments</comments>
		<pubDate>Thu, 05 May 2011 17:10:58 +0000</pubDate>
		<dc:creator>Carlton Colter</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[active directory]]></category>
		<category><![CDATA[create]]></category>
		<category><![CDATA[demo]]></category>
		<category><![CDATA[powershell]]></category>
		<category><![CDATA[script]]></category>
		<category><![CDATA[users]]></category>

		<guid isPermaLink="false">http://mscrmblogger.com/?p=431</guid>
		<description><![CDATA[Recently I needed to create some AD users for my CRM demo environment, and since I hate doing tedious repetative tasks I ended up using a powershell script.  I thought I would share the script so that other people doing demos don't create users 1 by 1.]]></description>
			<content:encoded><![CDATA[<p>Recently I was creating a new demo environment and had to create some AD users to use in my CRM deployment.  I hate doing tedious repetative tasks one-by-one, and ended up using a modified version of the powershell script from: <a href="http://www.thejoyofcode.com/Creating_AD_user_accounts_in_PowerShell.aspx">http://www.thejoyofcode.com/Creating_AD_user_accounts_in_PowerShell.aspx</a> &#8211; so I figured I&#8217;d share it with everyone else so that when they need to mass create some users and just have their first and last name, this will help.</p>
<p><b>Here is the powerhsell code:</b></p>
<pre name="code" class="powershell">
$domain = (get-addomain).distinguishedname
$path = "OU=Employees,$domain"
$employees = Get-ADObject -Filter {distinguishedname -eq $path}
If ( -not $employees) {
  $employees = $domain.Create("OrganizationalUnit", "ou=Employees")
  $employees.SetInfo()
}

$users = import-csv "C:\Scripts\usersToBeCreated.csv"
$ldappath = "LDAP://$path"
$container = [ADSI] $ldappath
$users | foreach {
    $first = $_.FirstName
    $last = $_.LastName
    $username = "$first" + "." + "$last"
    $email = "$username" + "@demo.local"
    $newUser = $container.Create("User", "cn=" + $username)
    $newUser.Put("sAMAccountName", $username)
    $newUser.Put("givenname",$first)
    $newUser.Put("sn",$last)
    $newUser.Put("mail",$email)
    $newUser.Put("description","Demo Account")
    $newUser.SetInfo()
    $newUser.psbase.InvokeSet('AccountDisabled', $false)
    $newUser.SetInfo()
    $newUser.SetPassword("somethingG00D!")
}
</pre>
<p>Hopefully that will help someone else save some time.</p>
]]></content:encoded>
			<wfw:commentRss>http://mscrmblogger.com/2011/05/05/create-users-in-ad/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>CRM 2011: Required Fields</title>
		<link>http://mscrmblogger.com/2011/04/10/crm-2011-required-fields/</link>
		<comments>http://mscrmblogger.com/2011/04/10/crm-2011-required-fields/#comments</comments>
		<pubDate>Sun, 10 Apr 2011 22:00:53 +0000</pubDate>
		<dc:creator>Carlton Colter</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[Scripts]]></category>
		<category><![CDATA[crm]]></category>
		<category><![CDATA[crm 2011]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[jscript]]></category>
		<category><![CDATA[Microsoft]]></category>
		<category><![CDATA[Microsoft Dynamics CRM 2011]]></category>
		<category><![CDATA[script]]></category>

		<guid isPermaLink="false">http://mscrmblogger.com/?p=410</guid>
		<description><![CDATA[This afternoon I was at the Microsoft Dynamics CRM booth at Convergence when someone asked me about required fields in CRM 2011. They wanted to know how to make fields required, but have different forms with different required fields for the same entity. First, in CRM 2011, when you make a field required by editing <a href='http://mscrmblogger.com/2011/04/10/crm-2011-required-fields/'>[...]</a>]]></description>
			<content:encoded><![CDATA[<p>This afternoon I was at the Microsoft Dynamics CRM booth at Convergence when someone asked me about required fields in CRM 2011.  They wanted to know how to make fields required, but have different forms with different required fields for the same entity.</p>
<p>First, in CRM 2011, when you make a field required by editing the field, you are making it required for all forms (that the field is on).</p>
<p><a href="http://mscrmblogger.com/wp-content/uploads/2011/04/RequirementLevel.png"><img src="http://mscrmblogger.com/wp-content/uploads/2011/04/RequirementLevel.png" alt="" title="Requirement Level when editing a field" width="653" height="267" class="aligncenter size-full wp-image-412" /></a></p>
<p>If you want to make a field required just for a particular form, you can use a form onload event to change the requirement level.  One of the great things about CRM 2011 is just how much is exposed to JScript through Xrm.Page.  There are <a href="http://msdn.microsoft.com/en-us/library/gg334409.aspx">methods on the attribute</a> to <a href="http://msdn.microsoft.com/en-us/library/gg334409.aspx#BKMK_getRequiredLevel">get the required level</a> and <a href="http://msdn.microsoft.com/en-us/library/gg334409.aspx#BKMK_setRequiredLevel">set the required level</a>.  Let&#8217;s suppose for example that we want to make the First Name required, but only on this form, then we could use the following onload function with the parameters &#8216;required&#8217;, &#8216;firstname&#8217; to make the field required.  If we needed to add multiple fields, then we would just specify them after &#8216;firstname&#8217;, such as &#8216;required&#8217;,'firstname&#8217;,'address1_city&#8217;.</p>
<pre name="code" class="javascript">
function updateRequirementLevel()
{
    var level = arguments[0];
    for (var i=1; i < arguments.length; i++)
    {
        var attribute = Xrm.Page.data.entity.attributes.get(arguments[i]);
        attribute.setRequiredLevel(level);
    }
}
</pre>
<p>That will make each field you specify after the level, required or recommended based on the level you pass as the first parameter.  Calling the function updateRequirementLevel('required','firstname'); will make the firstname required.</p>
</pre>
]]></content:encoded>
			<wfw:commentRss>http://mscrmblogger.com/2011/04/10/crm-2011-required-fields/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>IE9 Tabs instead of New Windows for CRM 2011</title>
		<link>http://mscrmblogger.com/2011/03/15/ie9tabs4crm201/</link>
		<comments>http://mscrmblogger.com/2011/03/15/ie9tabs4crm201/#comments</comments>
		<pubDate>Tue, 15 Mar 2011 21:21:26 +0000</pubDate>
		<dc:creator>Carlton Colter</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[browse]]></category>
		<category><![CDATA[crm]]></category>
		<category><![CDATA[crm 2011]]></category>
		<category><![CDATA[crm2011]]></category>
		<category><![CDATA[ie]]></category>
		<category><![CDATA[ie9]]></category>
		<category><![CDATA[internet explorer]]></category>
		<category><![CDATA[Microsoft]]></category>
		<category><![CDATA[microsoft dynamics crm]]></category>
		<category><![CDATA[Microsoft Dynamics CRM 2011]]></category>
		<category><![CDATA[new window]]></category>
		<category><![CDATA[popup]]></category>
		<category><![CDATA[tab]]></category>
		<category><![CDATA[user settings]]></category>

		<guid isPermaLink="false">http://mscrmblogger.com/?p=360</guid>
		<description><![CDATA[CRM 2011 is great. It's fast and effective.  It allows you to leverage JScript better and when it is teamed up with IE9, you get great performance.  The only problem is that I like to have my tabs on a separate row, and I don't like how CRM pops up a new window for everything, and I want the space for my tabs to display the name of the form, such as the contact name, etc.  Here’s how I setup my client machine.]]></description>
			<content:encoded><![CDATA[<p>CRM 2011 is great. It&#8217;s fast and effective.  It allows you to leverage JScript better and when it is teamed up with IE9, you get great performance.  The only problem is that I like to have my tabs on a separate row, and I don&#8217;t like how CRM pops up a new window for everything, and I want the space for my tabs to display the name of the form, such as the contact name, etc.  Here’s how I setup my client machine.</p>
<p>Change the IE9 setting to display tabs on a separate row.</p>
<ol>
<li>Right Click on the title bar &#8211; area above the URL</li>
<li>Click Show tabs on a separate row
<p>
<a href="http://mscrmblogger.com/wp-content/uploads/2011/03/IE9contextMenu.png"><img src="http://mscrmblogger.com/wp-content/uploads/2011/03/IE9contextMenu.png" alt="Show tabs on a separate row" title="IE9-Show Tabs on a separate row" width="276" height="293" class="aligncenter size-full wp-image-361" /></a></p>
</li>
</ol>
<p>Change the popups to display as tabs instead of a new window</p>
<ol>
<li>Click on the Settings Icon in IE9, then click on Internet Options
<p>
<a href="http://mscrmblogger.com/wp-content/uploads/2011/03/IE9-Options.png"><img src="http://mscrmblogger.com/wp-content/uploads/2011/03/IE9-Options.png" alt="How to pull up IE9&#039;s Internet Options" title="IE9 Internet Options" width="247" height="292" class="aligncenter size-full wp-image-362" /></a></p>
</li>
<li>Click on the Settings button in the Tabs section
<p>
<a href="http://mscrmblogger.com/wp-content/uploads/2011/03/IE9-OptionsDialog.png"><img src="http://mscrmblogger.com/wp-content/uploads/2011/03/IE9-OptionsDialog.png" alt="Internet Options Dialog with Tab Settings Button Highlighted" title="Internet Options Dialog with Tab Settings Button Highlighted" width="423" height="541" class="aligncenter size-full wp-image-363" /></a></p>
</li>
<li>Click on &quot;Always open pop-ups in a new tab&quot;
<p>
<a href="http://mscrmblogger.com/wp-content/uploads/2011/03/IE9-OptionsDialog4Tabs.png"><img src="http://mscrmblogger.com/wp-content/uploads/2011/03/IE9-OptionsDialog4Tabs.png" alt="Internet Options - Tab Settings - Always show popups in a new tab" title="Internet Options - Tab Settings - Always show popups in a new tab" width="391" height="483" class="aligncenter size-full wp-image-364" /></a></p>
</li>
</ol>
<p>This is what I end up with, a simple multi-tab CRM, where I can tell what entity I have on what tab, and what the name of it is.</p>
<p><a href="http://mscrmblogger.com/wp-content/uploads/2011/03/ContactForm.png"><img src="http://mscrmblogger.com/wp-content/uploads/2011/03/ContactForm.png" alt="Contact Form - with tabs" title="Contact Form" width="897" height="647" class="aligncenter size-full wp-image-365" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://mscrmblogger.com/2011/03/15/ie9tabs4crm201/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>CRM 4.0 &#8211; Adding the queue name to a saved advanced find for cases (incidents)</title>
		<link>http://mscrmblogger.com/2010/02/18/adding-the-queue-name-to-a-saved-advanced-find-for-cases-incidents/</link>
		<comments>http://mscrmblogger.com/2010/02/18/adding-the-queue-name-to-a-saved-advanced-find-for-cases-incidents/#comments</comments>
		<pubDate>Thu, 18 Feb 2010 18:56:43 +0000</pubDate>
		<dc:creator>Carlton Colter</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[SQL]]></category>
		<category><![CDATA[Unsupported]]></category>
		<category><![CDATA[advanced find]]></category>
		<category><![CDATA[cases]]></category>
		<category><![CDATA[crm4]]></category>
		<category><![CDATA[find]]></category>
		<category><![CDATA[incidents]]></category>
		<category><![CDATA[Microsoft]]></category>
		<category><![CDATA[microsoft dynamics CRM 4]]></category>
		<category><![CDATA[sql]]></category>

		<guid isPermaLink="false">http://mscrmblogger.com/?p=212</guid>
		<description><![CDATA[<p>Unfortunately, CRM does not currently support adding the queue to a case advanced find.  However, that doesn't mean it can't be done.  Follow the steps in this article to modify your fetchXML and your layoutXML to have the queue name show up in the advanced find.</p>]]></description>
			<content:encoded><![CDATA[<p>Unfortunately, CRM 4.0 does not currently support adding the queue to a case advanced find.  However, that doesn&#8217;t mean it can&#8217;t be done.</p>
<p>Please note, that this is not a supported modification or change.</p>
<p>Follow the steps below to modify your fetchXML and your layoutXML to have the queue name show up in the advanced find. You can even update the name in the UserQueryBase to rename your advanced find to something better.</p>
<ol>
<li>Create your advanced find, setup your filters etc.</li>
<li>Save your advanced find (name it something unique)</li>
<li>Get the guid of your advanced find (using open pop-ups in a new tab or using a select statement to look it up in the db.
<pre name="code" class="sql">
SELECT UserQueryID FROM UserQueryBase WHERE Name='Cases (w/Queue Name) - IT Example'
</pre>
</li>
<li>Then using the id, execute the following code to add the queue name:
<pre name="code" class="sql">
UPDATE UserQueryBase SET
FetchXml = REPLACE(FetchXml,'&lt;/entity&gt;',
'&lt;link-entity name=&quot;queueitem&quot; from=&quot;objectid&quot; to=&quot;incidentid&quot; visible=&quot;false&quot; link-type=&quot;outer&quot; alias=&quot;qi&quot;&gt;
&lt;link-entity name=&quot;queue&quot; from=&quot;queueid&quot; to=&quot;queueid&quot; visible=&quot;false&quot; link-type=&quot;outer&quot; alias=&quot;Q&quot;&gt;
&lt;attribute name=&quot;name&quot;/&gt;&lt;/link-entity&gt;&lt;/link-entity&gt;&lt;/entity&gt;')
,LayoutXML = REPLACE(LayoutXml,'&lt;/row&gt;',
'&lt;cell name=&quot;Q.name&quot; width=&quot;200&quot; disableSorting=&quot;0&quot;/&gt;&lt;/row&gt;')
-- Make sure to change the UserQueryID
WHERE UserQueryID='71F94C46-F217-DF11-A241-0050569B4FF3'
</pre>
</li>
<li>If you have your advanced find window open, close and reopen it before trying to run it and see the &quot;Q.name&quot; column.</li>
</ol>
<p>If you have any problems or questions, let me know.  Again this is setup to work on advanced find for cases, I&#8217;m sure it could be modified for other queue-able entities.</p>
<p>With CRM 2011, you can include fields from related entities, so you don&#8217;t have to use this method, you can just add the column through the user-interface.</p>
]]></content:encoded>
			<wfw:commentRss>http://mscrmblogger.com/2010/02/18/adding-the-queue-name-to-a-saved-advanced-find-for-cases-incidents/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>IE Developer Toolbar &#8211; Getting the ID</title>
		<link>http://mscrmblogger.com/2009/10/13/ie-developer-toolbar-getting-the-id/</link>
		<comments>http://mscrmblogger.com/2009/10/13/ie-developer-toolbar-getting-the-id/#comments</comments>
		<pubDate>Tue, 13 Oct 2009 20:11:31 +0000</pubDate>
		<dc:creator>Carlton Colter</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[developer toolbar]]></category>
		<category><![CDATA[ie7]]></category>
		<category><![CDATA[ie8]]></category>

		<guid isPermaLink="false">http://mscrmblogger.com/?p=182</guid>
		<description><![CDATA[Just in case you need to get the id of an element in CRM and you are new to CRM development or IE development, the IE developer toolbar is great tool and huge help.  You can check out this video on how to access it and hopefully it is enough of a teaser to convince you to start using it and play with it.]]></description>
			<content:encoded><![CDATA[<p>Just in case you need to get the id of an element in CRM and you are new to CRM development or IE development, the IE developer toolbar is great tool and huge help.  You can check out this video on how to access it and hopefully it is enough of a teaser to convince you to start using it and play with it.</p>
<p><object width="800" height="600"><param name="movie" value="http://www.youtube.com/v/T14tMtX9XpM&#038;hl=en&#038;fs=1&#038;ap=%2526fmt%3D22"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/T14tMtX9XpM&#038;hl=en&#038;fs=1&#038;ap=%2526fmt%3D22" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"></embed></object></p>
]]></content:encoded>
			<wfw:commentRss>http://mscrmblogger.com/2009/10/13/ie-developer-toolbar-getting-the-id/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

