<?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>Richard Knudson&#039;s Dynamics CRM Trick Bag</title>
	<atom:link href="http://www.dynamicscrmtrickbag.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.dynamicscrmtrickbag.com</link>
	<description>Building business value on Dynamics CRM</description>
	<lastBuildDate>Fri, 27 Jan 2012 14:42:03 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.6</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>CRM MVPs on Marketing Automation Best Practices</title>
		<link>http://www.dynamicscrmtrickbag.com/2012/01/26/crm-mvps-on-marketing-automation-best-practices/</link>
		<comments>http://www.dynamicscrmtrickbag.com/2012/01/26/crm-mvps-on-marketing-automation-best-practices/#comments</comments>
		<pubDate>Fri, 27 Jan 2012 03:40:34 +0000</pubDate>
		<dc:creator>Richard Knudson</dc:creator>
				<category><![CDATA[CRM Add-Ons]]></category>
		<category><![CDATA[Marketing]]></category>
		<category><![CDATA[News You Can Use]]></category>

		<guid isPermaLink="false">http://www.dynamicscrmtrickbag.com/2012/01/26/crm-mvps-on-marketing-automation-best-practices/</guid>
		<description><![CDATA[January 26, 2012 -  Today I had the pleasure of co-presenting a webinar with John Gravely and Matt Wittemann of ClickDimensions, with the snazzy title, "CRM MVPs Reveal Best Practices: What Works in Marketing Automation". Not only was the title good, but I thought the session was as well. Here's a a summary of my part of the webinar, and a link to the recorded session. ]]></description>
			<content:encoded><![CDATA[<div>January 26, 2012 – Today I had the pleasure of co-presenting a webinar with John Gravely and Matt Wittemann of <a href="http://www.clickdimensions.com/">ClickDimensions</a>, <strong><em>CRM MVPs Reveal Best Practices: What Works in Marketing Automation</em></strong>. If you know me even a little bit, you&#8217;ll probably guess that I didn&#8217;t <em>name</em> the session. But as I said, I presented, and in addition to giving you a <a href="http://vimeo.com/35711851">link to the recorded session on Vimeo</a>, I thought I&#8217;d write up a summary while it was still fresh in my mind.</div>
<div>The session was built around case-study/scenarios. This was John&#8217;s idea and I think it was a good one: with six different case studies discussed in a sixty minute session, we moved pretty quickly and didn&#8217;t have a lot of time for marketing fluff. As a matter of fact, I think John set the record for the <em>least amount of pitching time by a CEO</em>.</div>
<div>I recently wrote an overview piece on using the <a href="http://www.dynamicscrmtrickbag.com/2011/12/03/marketing-automation-in-dynamics-crm/">ClickDimensions marketing automation solution in Dynamics CRM</a>, and in this article I&#8217;ll summarize the two slightly more detailed scenarios I discussed in today&#8217;s presentation: nurture marketing and customer surveys.</div>
<h1>Nurture Marketing</h1>
<div>I started by defining terms and contrasting <em>traditional</em> marketing with <em>nurture</em>:</div>
<ul>
<li>Traditional marketing was essentially a 1:N model, with nurture, the goal is to create a personal, 1:1 relationship with a client.</li>
<li>Traditional marketing was event-based, with every activity essentially an independent event. In contrast, nurture marketing is relationship-based, with activities part of an ongoing conversation, each activity making use of information gathered from all the others.</li>
<li>Traditional marketing was targeted at a demographic, at best. With Nurture marketing the goal is to create a tailored set of activities, specifically crafted for an individual.</li>
</ul>
<div>Now this is a bit of a straw-man comparison: contrasted like that, who <em>wouldn&#8217;t</em> want to do nurture marketing? Of course, the answer is because with the tools we&#8217;ve traditionally had it&#8217;s so much more difficult! With the data-driven marketing foundation provided by Dynamics CRM, and the ClickDimensions add-on solution, you&#8217;ve got the tools to do nurture marketing, and your only real constraint is your creativity and imagination as a marketer.</div>
<div>I focused specifically on email marketing, and for the discussion I made a distinction between <em>drip</em> and <em>trigger</em> marketing:</div>
<ul>
<li><em>Drip</em> marketing is where a pre-determined set of emails go out, one after the other…<em>drip</em>…<em>drip</em>…In this context, a good example would be the confirmation email you get when you register for a seminar; then the day-before reminder, then the post-event email with a link to a session evaluation. Another drip marketing scenario was described in a <a href="http://blog.clickdimensions.com/2011/01/using-clickdimensions-and-microsoft-crm-workflow-to-create-a-nurture-drip-program.html">ClickDimensions blog post</a> from last year.</li>
<li><em>Trigger</em> marketing is more adaptive – where specific marketing activities depend on a customer&#8217;s behavior. You could inject a trigger component into the webinar example by sending a different post-event email depending on whether somebody attends or doesn&#8217;t.  I showed a different application of trigger marketing in Dynamics CRM in my demo, using CD as the foundation, combining it with a custom Dynamics CRM workflow.</li>
</ul>
<div>Here&#8217;s a Visio diagram that describes the process I demonstrated:</div>
<div><img src="http://www.dynamicscrmtrickbag.com/wp-content/uploads/2012/01/012712_0339_CRMMVPsonMa1.png" alt="" /></div>
<ul>
<li>I send out my monthly email newsletter using CD. If I send an email and it bounces, an automatic workflow creates a <em>Bounce Followup</em> task for the record owner.</li>
<li>If it doesn&#8217;t bounce, we wait to see what happens</li>
<li>If nothing happens for a certain number of days, we send another email – maybe with a reworded subject line</li>
<li>But if before then we get an open we take a different path: wait for a click and if we get one create a <em>Click Followup</em> task for the record owner.</li>
</ul>
<div>Here&#8217;s what that process looks like in the form a Dynamics CRM workflow:</div>
<div><img src="http://www.dynamicscrmtrickbag.com/wp-content/uploads/2012/01/012712_0339_CRMMVPsonMa2.png" alt="" /></div>
<div>This workflow really consists of three logical branches:</div>
<ul>
<li>The first one tests for a click-through, and creates a <em>click followup</em> task if appropriate.</li>
<li>Next, if an email bounces we create the <em>bounce followup</em> task, and as a best practice I go straight to LinkedIn when that happens.</li>
<li>And if neither of those two things happens, we sit and wait for 5 days, eventually sending a second email, generally with a re-worded subject line so as not to be tedious.</li>
</ul>
<div>If you have a little experience with Dynamics CRM workflows, you might recognize this entire <strong>Wait, otherwise, timeout until</strong> block as a good example of parallel wait conditions. These are characteristic of workflows like this, where you&#8217;re waiting for a number of different events and you don&#8217;t know which will happen first.</div>
<div>That workflow is written for a custom entity that&#8217;s part of the ClickDimensions solution, <strong>Sent Email</strong>. Records of this type are created when I distribute a ClickDimensions email, with one <em>sent email</em> going to every member of the marketing list. Here&#8217;s a screenshot of the sent emails from the most recent edition of my newsletter, the one I used to drive registrations for this webinar:</div>
<div><img src="http://www.dynamicscrmtrickbag.com/wp-content/uploads/2012/01/012712_0339_CRMMVPsonMa3.png" alt="" /></div>
<div>You can see that aggregate statistics are calculated on this record type, such how many opens, clicks, bounces, opt-outs and so forth. And you can probably guess that those are used to calculate the <em>score</em> field that the list shown above is sorted on. And, that&#8217;s why the nurture marketing workflow needs to be written for the sent email entity: when each email is sent, the workflow fires, and waits for whichever event happens first &#8212; an open/click combo, a bounce, or <em>nothing</em> – and takes appropriate action.</div>
<div>Not to go all <a href="http://en.wikipedia.org/wiki/Nihilism">nihilist</a> on you, but in this scenario, <em>nothing</em> is an important event.</div>
<h1>Surveys</h1>
<div>Surveys are a great example of a highly structured, data-intensive conversation we can have with our customers…which means they&#8217;re perfect for ClickDimensions and CRM. There may be scenarios where anonymous surveys add value, but for the kinds of scenarios discussed in this session, you definitely want survey responses attached to a customer record, which you get out of the box with ClickDimensions.</div>
<div>Here&#8217;s a stylized life cycle for a survey deployed against Dynamics CRM customer records using the ClickDimensions survey functionality:</div>
<div><img src="http://www.dynamicscrmtrickbag.com/wp-content/uploads/2012/01/012712_0339_CRMMVPsonMa4.png" alt="" /></div>
<div>In a recent email campaign I included a link to a survey asking people to rate content topics for my blog, so I could use the results to guide my content development efforts. Here&#8217;s a screenshot of the data, in the form of a whole bunch of records in the CD custom entity Survey Answers…and if ever there was a case where a <a href="http://www.edwardtufte.com/tufte/books_vdqi">visual display of quantitative information</a> improved my ability to digest and do something with the data, this is it!</div>
<div><img src="http://www.dynamicscrmtrickbag.com/wp-content/uploads/2012/01/012712_0339_CRMMVPsonMa5.png" alt="" /></div>
<div>There&#8217;s a little more detail on how to create surveys <a href="http://www.dynamicscrmtrickbag.com/2011/12/03/marketing-automation-in-dynamics-crm/">here</a>, but there&#8217;s a lot more in the <a href="http://vimeo.com/35711851">recording for the session</a>.</div>
<div>And be sure to let me know if you have any questions about marketing automation in Dynamics CRM, ClickDimensions, nihilism, <a href="http://thehistoryofrome.typepad.com/the_history_of_rome/">the history of Rome</a>, or related topics. Cheers!</div>
]]></content:encoded>
			<wfw:commentRss>http://www.dynamicscrmtrickbag.com/2012/01/26/crm-mvps-on-marketing-automation-best-practices/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Using JScript to Link Records in an N:N Relationship</title>
		<link>http://www.dynamicscrmtrickbag.com/2012/01/19/using-jscript-to-link-records-in-an-nn-relationship/</link>
		<comments>http://www.dynamicscrmtrickbag.com/2012/01/19/using-jscript-to-link-records-in-an-nn-relationship/#comments</comments>
		<pubDate>Fri, 20 Jan 2012 02:55:31 +0000</pubDate>
		<dc:creator>Richard Knudson</dc:creator>
				<category><![CDATA[Customization]]></category>
		<category><![CDATA[Form Script]]></category>

		<guid isPermaLink="false">http://www.dynamicscrmtrickbag.com/2012/01/19/using-jscript-to-link-records-in-an-nn-relationship/</guid>
		<description><![CDATA[January 19, 2012 – I get lots of Dynamics CRM questions in my inbox, but rarely as well-articulated as one I received today. A question does not have to be polished to deserve an answer, but if you want it to turn, unedited, into an article, it helps. Forthwith, January's Dynamics CRM Trick Bag Stump the Experts question, regarding how to use JScript to link records in an N:N relationship.]]></description>
			<content:encoded><![CDATA[<p>January 19, 2012 – I get lots of Dynamics CRM questions in my inbox, but rarely as well-articulated as one I received today. A question does not have to be polished to deserve an answer, but if you want it to turn, unedited, into an article, it helps. Forthwith, January&#8217;s Dynamics CRM Trick Bag &#8220;Stump the Experts&#8221; question. Calling it &#8220;Stump the Experts&#8221; makes me feel better, since I couldn&#8217;t answer it. But I&#8217;m betting that more than a few of you can, so please weigh in, in the form of comments on this post, with advice on how to programmatically link records in an N:N relationship.
</p>
<p>Here&#8217;s the note I received:
</p>
<p style="margin-left: 36pt">Hi Richard,
</p>
<p style="margin-left: 36pt">I heard you speak at Extreme last year. I have been stumped on something and was wondering if you had time to help a noob with a weird problem. Maybe make a blog post out of it? I apologize if this is not the right way to beg for help.
</p>
<p style="margin-left: 36pt">We have a custom entity called a Project, from which multiple Marketing Lists hang off of it. Using javascript triggered from the Project, we want to be able to create marketing lists and associate the new marketing list with the Project. I can&#8217;t seem to figure out how to associate it with the Project. I can make the Marketing List, fill in the all the correct information, but am failing at the association with the project.
</p>
<p style="margin-left: 36pt">I tried using some code from here:
</p>
<p style="margin-left: 36pt"><a href="http://stackoverflow.com/questions/7358482/how-to-link-two-records-with-javascript-and-a-nm-relationship">http://stackoverflow.com/questions/7358482/how-to-link-two-records-with-javascript-and-a-nm-relationship</a>
	</p>
<p style="margin-left: 36pt">to use this call:
</p>
<p style="margin-left: 36pt"><span style="font-family:Courier New; font-size:8pt">AssociateEntities(data.ListId, &#8220;ListSet&#8221;, Xrm.Page.data.entity.getId(), &#8220;ags_projectSet&#8221;);</p>
<p></span></p>
<p style="margin-left: 36pt">Am I passing the IDs incorrectly? Not sure. Is this code sensitive to there being curly brackets around the IDs? For the xml, how do you know which object to put first? Is this the wrong piece of code since I am trying to fill in a 1:N relationship instead of N:M? Any help you can give me would be awesome. Thanks.
</p>
<p style="margin-left: 36pt">on this function:
</p>
<p style="margin-left: 36pt"><span style="font-family:Courier New; font-size:8pt">function AssociateEntities(id1, entityType1, id2, entityType2, relationshipName) {</p>
<p></span></p>
<p style="margin-left: 36pt"><span style="font-family:Courier New; font-size:8pt">    var xml;</p>
<p></span></p>
<p style="margin-left: 36pt"><span style="font-family:Courier New; font-size:8pt">    var resultXml;</p>
<p></span></p>
<p style="margin-left: 36pt">
<p style="margin-left: 36pt"><span style="font-family:Courier New; font-size:8pt">    xml = &#8220;&lt;Execute xmlns=&#8217;http://schemas.microsoft.com/crm/2007/WebServices&#8217;&gt;&#8221;;</p>
<p></span></p>
<p style="margin-left: 36pt"><span style="font-family:Courier New; font-size:8pt">    xml += &#8220;&lt;Request xsi:type=&#8217;AssociateEntitiesRequest&#8217;&gt;&#8221;;</p>
<p></span></p>
<p style="margin-left: 36pt"><span style="font-family:Courier New; font-size:8pt">    xml += &#8220;&lt;Moniker1&gt;&lt;Id xmlns=&#8217;http://schemas.microsoft.com/crm/2006/CoreTypes&#8217;&gt;&#8221; + id1 + &#8220;&lt;/Id&gt;&#8221;;</p>
<p></span></p>
<p style="margin-left: 36pt"><span style="font-family:Courier New; font-size:8pt">    xml += &#8220;&lt;Name xmlns=&#8217;http://schemas.microsoft.com/crm/2006/CoreTypes&#8217;&gt;&#8221; + entityType1 + &#8220;&lt;/Name&gt;&lt;/Moniker1&gt;&#8221;;</p>
<p></span></p>
<p style="margin-left: 36pt"><span style="font-family:Courier New; font-size:8pt">    xml += &#8220;&lt;Moniker2&gt;&lt;Id xmlns=&#8217;http://schemas.microsoft.com/crm/2006/CoreTypes&#8217;&gt;&#8221; + id2 + &#8220;&lt;/Id&gt;&#8221;;</p>
<p></span></p>
<p style="margin-left: 36pt"><span style="font-family:Courier New; font-size:8pt">    xml += &#8220;&lt;Name xmlns=&#8217;http://schemas.microsoft.com/crm/2006/CoreTypes&#8217;&gt;&#8221; + entityType2 + &#8220;&lt;/Name&gt;&lt;/Moniker2&gt;&#8221;;</p>
<p></span></p>
<p style="margin-left: 36pt"><span style="font-family:Courier New; font-size:8pt">    xml += &#8220;&lt;RelationshipName&gt;&#8221; + relationshipName + &#8220;&lt;/RelationshipName&gt;&#8221;;</p>
<p></span></p>
<p style="margin-left: 36pt"><span style="font-family:Courier New; font-size:8pt">    xml += &#8220;&lt;/Request&gt;&lt;/Execute&gt;&#8221;;</p>
<p></span></p>
<p style="margin-left: 36pt">
<p style="margin-left: 36pt">
<p style="margin-left: 36pt"><span style="font-family:Courier New; font-size:8pt">    var xHReq = new ActiveXObject(&#8221;Msxml2.XMLHTTP&#8221;);</p>
<p></span></p>
<p style="margin-left: 36pt"><span style="font-family:Courier New; font-size:8pt">    xHReq.Open(&#8221;POST&#8221;, &#8220;/mscrmservices/2007/CrmService.asmx&#8221;, false);</p>
<p></span></p>
<p style="margin-left: 36pt"><span style="font-family:Courier New; font-size:8pt">    xHReq.setRequestHeader(&#8221;SOAPAction&#8221;,&#8221;<a href="http://schemas.microsoft.com/crm/2007/WebServices/Execute">http://schemas.microsoft.com/crm/2007/WebServices/Execute</a>&#8220;);</p>
<p></span></p>
<p style="margin-left: 36pt"><span style="font-family:Courier New; font-size:8pt">    xHReq.setRequestHeader(&#8221;Content-Type&#8221;, &#8220;text/xml; charset=utf-8&#8243;);</p>
<p></span></p>
<p style="margin-left: 36pt"><span style="font-family:Courier New; font-size:8pt">    xHReq.setRequestHeader(&#8221;Content-Length&#8221;, xml.length);</p>
<p></span></p>
<p style="margin-left: 36pt"><span style="font-family:Courier New; font-size:8pt">    xHReq.send(xml);</p>
<p></span></p>
<p style="margin-left: 36pt">
<p style="margin-left: 36pt"><span style="font-family:Courier New; font-size:8pt">    resultXml = xHReq.responseXML;</p>
<p></span></p>
<p style="margin-left: 36pt">
<p style="margin-left: 36pt"><span style="font-family:Courier New; font-size:8pt">    if (resultXml) {</p>
<p></span></p>
<p style="margin-left: 36pt"><span style="font-family:Courier New; font-size:8pt">        return &#8220;success&#8221;;</p>
<p></span></p>
<p style="margin-left: 36pt"><span style="font-family:Courier New; font-size:8pt">    }</p>
<p></span></p>
<p style="margin-left: 36pt"><span style="font-family:Courier New; font-size:8pt">    else {</p>
<p></span></p>
<p style="margin-left: 36pt"><span style="font-family:Courier New; font-size:8pt">        return null;</p>
<p></span></p>
<p style="margin-left: 36pt"><span style="font-family:Courier New; font-size:8pt">    }</p>
<p></span></p>
<p style="margin-left: 36pt"><span style="font-family:Courier New; font-size:8pt">}</p>
<p></span></p></p>
]]></content:encoded>
			<wfw:commentRss>http://www.dynamicscrmtrickbag.com/2012/01/19/using-jscript-to-link-records-in-an-nn-relationship/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Profile and Survey Customers with CRM 2011 Dialog Processes</title>
		<link>http://www.dynamicscrmtrickbag.com/2011/12/31/profile-and-survey-customers-with-crm-2011-dialog-processes/</link>
		<comments>http://www.dynamicscrmtrickbag.com/2011/12/31/profile-and-survey-customers-with-crm-2011-dialog-processes/#comments</comments>
		<pubDate>Sat, 31 Dec 2011 20:34:16 +0000</pubDate>
		<dc:creator>Richard Knudson</dc:creator>
				<category><![CDATA[CRM 2011 Business Process Book]]></category>
		<category><![CDATA[Dynamics CRM Workflows]]></category>

		<guid isPermaLink="false">http://www.dynamicscrmtrickbag.com/2011/12/31/profile-and-survey-customers-with-crm-2011-dialog-processes/</guid>
		<description><![CDATA[December 31, 2011 - One of the most obvious applications of dialog processes are scripted conversations. And one of the most obvious examples of a scripted conversation is a survey. Dialog processes work great for all kinds of surveying and profiling requirements, and that's what this special New Year's Eve edition of the Dynamics CRM Trick Bag is all about. And for the record, without intending any disrespect to the Mayans, I think 2012 is going to be an excellent 365-day year!]]></description>
			<content:encoded><![CDATA[<div>One of the most obvious applications of dialog processes are scripted conversations. And one of the most obvious examples of a scripted conversation is a survey. Dialog processes work great for all kinds of surveying and profiling requirements, and we&#8217;ll review an example of that here. But first, let&#8217;s review our choice of tools: there are lots of ways to conduct surveys, and it&#8217;s reasonable to ask why you might consider using a Dynamics CRM dialog process for one rather than say, Survey Monkey (<a href="http://www.surveymonkey.com/">http://www.surveymonkey.com/</a>).</div>
<div>Here are some of the factors that would make the Dynamics CRM approach appropriate for a job like this:</div>
<ul>
<li>If the people you want to survey are in your CRM (e.g., as contacts), taking a CRM-centric approach is compelling. This is the same argument as using a CRM add-on solution for email marketing rather than, say Constant Contact: survey results might be as important a piece of customer history as email click-throughs, so it&#8217;s natural to want them in your CRM.</li>
<li>The kind of surveying and profiling described next can be done with the out-of-the-box CRM feature set plus a few customizations, so you won&#8217;t pay additional licensing fees or have to learn a new application.</li>
</ul>
<div>Why might you <em>not</em> want to use Dynamics CRM dialog processes for surveys?</div>
<ul>
<li>Complex survey functionality will be more easily implemented with a dedicated survey application. As you&#8217;ll see, using Dynamics CRM for a job like this one is a bit of a DIY project, and as with all DIY projects, you&#8217;re essentially making a<em> build v. buy</em> decision.</li>
<li>Dialog processes must be run by a licensed CRM user. So if you need to provide a self-service survey option, the CRM-centric approach discussed here won&#8217;t be an option.</li>
</ul>
<ol>
<li>
<h4>Profiling and Surveying Customers: The Goal</h4>
<div>This approach I&#8217;ll describe here requires some customizations, and there are many different ways of implementing it: from simple and specific, to complex and flexible. Let&#8217;s start by examining how this surveying solution works, so you know what we&#8217;re shooting for.</div>
<div>Some organizations have highly structured &#8220;onboarding&#8221; process to be applied when new customers are signed up. For example, a bank might have a standard set of questions to ask of new savings account customers, or a marketing department might want to know if a new customer was influenced by any of its ads, mailings and so forth. Other common requirements of onboarding processes like these are to get feedback from the customer on their overall satisfaction level and to confirm that important information on the customer record is correct.</div>
<div>The following figure shows the single page of our dialog process as it&#8217;s being run by a user. This process is written for the contact entity, and you can see in the first (highlighted) prompt that we&#8217;re using dynamic values to provide the user with a customized script (<strong><em>Hello, Eva</em></strong>) and to call attention to some of the most important contact information we want our user to verify or correct.</div>
<div>Notice also that in the Tip section we&#8217;ve provided a link (<span style="color: #4f81bd; text-decoration: underline;"><strong>Navigate to contact record</strong></span>) and instructed the user to go directly to the contact form if they need to make any changes:</div>
<div><img src="http://www.dynamicscrmtrickbag.com/wp-content/uploads/2011/12/123111_2032_ProfileandS1.png" alt="" /></div>
<div>The next figure highlights the <strong>How did you hear about us</strong> option set. You&#8217;ll see below that we used a custom entity to store these values, and a query in the dialog process to present them to the user.</div>
<div><img src="http://www.dynamicscrmtrickbag.com/wp-content/uploads/2011/12/123111_2032_ProfileandS2.png" alt="" /></div>
<div>The following figure presents the &#8220;rate your overall experience on a 1-5 scale&#8221; question.</div>
<div><img src="http://www.dynamicscrmtrickbag.com/wp-content/uploads/2011/12/123111_2032_ProfileandS3.png" alt="" /></div>
<div>After the user clicks the Finish button, the process creates three records for a custom entity,<strong> Survey Response</strong>, one for each of the questions. (It might look like there are four, but remember the first one is just a prompt, with no response being captured.)</div>
<div>The following figure illustrates that the Survey Response entity has an N:1 relationship to contact, so our design requirement of having survey responses be part of the comprehensive customer history is satisfied:</div>
<div><img src="http://www.dynamicscrmtrickbag.com/wp-content/uploads/2011/12/123111_2032_ProfileandS4.png" alt="" /></div>
<div>Here&#8217;s the data grid for survey responses with the All Survey Responses view selected. Notice that I&#8217;ve added several different fields to store different kinds of responses. This is an important detail and I&#8217;ll describe it more fully below.</div>
<div><img src="http://www.dynamicscrmtrickbag.com/wp-content/uploads/2011/12/123111_2032_ProfileandS5.png" alt="" /></div>
<div>Finally, the following figure really starts to highlight some of the potential benefits of this approach. A custom view filters survey response records to only include records for the Experience Rating question. This means that a custom chart can be used to visualize the results:</div>
<div><img src="http://www.dynamicscrmtrickbag.com/wp-content/uploads/2011/12/123111_2032_ProfileandS6.png" alt="" /></div>
<div>Here, the chart is constructed with the average value of the <strong>Response (Decimal)</strong> field as the <strong>Series</strong>, and the data are distributed across the owners of the underlying contact records.</div>
</li>
<li>
<h4>Setting Up</h4>
<div>I used three custom entities to implement this solution: Survey, Survey Response, and Lead Source. The following Visio diagram illustrates how they&#8217;re related to each other and to Contact:</div>
<div><img src="http://www.dynamicscrmtrickbag.com/wp-content/uploads/2011/12/123111_2032_ProfileandS7.png" alt="" /></div>
<div>Contact and Survey both have 1:N relationships to Survey Response, effectively creating an N:N between Contact and Survey. Notice that Lead Source isn&#8217;t related to anything. Of course, it could be related to other entities, but for this example it is not required to be. As you&#8217;ll see below, the only role the Lead Source plays here is to allow us to query the values so we don&#8217;t have to enter them in the dialog designer!</div>
<div>
<table border="0" style="border-collapse:collapse">
<colgroup>
<col style="width: 143px;"></col>
<col style="width: 143px;"></col>
<col style="width: 353px;"></col>
</colgroup>
<tbody>
<tr style="background: #4f81bd">
<td style="padding-left: 7px; padding-right: 7px; border-top:  solid 0.5pt; border-left:  solid 0.5pt; border-bottom:  solid 0.5pt; border-right:  solid 0.5pt" colspan="2">
<div><span style="color:white"><strong>Entity</strong></span></div>
</td>
<td style="padding-left: 7px; padding-right: 7px; border-top:  solid 0.5pt; border-left:  none; border-bottom:  solid 0.5pt; border-right:  solid 0.5pt">
<div><span style="color:white"><strong>Custom Fields</strong></span></div>
</td>
<td style="padding-left: 7px; padding-right: 7px; border-top:  solid 0.5pt; border-left:  none; border-bottom:  solid 0.5pt; border-right:  solid 0.5pt">
<div><span style="color:white"><strong>Field Type and Purpose</strong></span></div>
</td>
</tr>
<tr>
<td style="background: #4f81bd; padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  solid 0.5pt; border-bottom:  solid 0.5pt; border-right:  solid 0.5pt" colspan="2" rowspan="2">
<div><span style="color:white"><strong>Survey<br />
</strong></span></div>
</td>
<td style="background: #d8d8d8; padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid 0.5pt; border-right:  solid 0.5pt">
<div>Survey Name</div>
</td>
<td style="background: #d8d8d8; padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid 0.5pt; border-right:  solid 0.5pt">
<div><strong>Single Line of Text.</strong></div>
</td>
</tr>
<tr>
<td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  solid 0.5pt; border-bottom:  solid 0.5pt; border-right:  solid 0.5pt">
<div>Survey Date</div>
</td>
<td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid 0.5pt; border-right:  solid 0.5pt">
<div><strong>Date and Time.</strong></div>
</td>
</tr>
<tr>
<td style="background: #4f81bd; padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  solid 0.5pt; border-bottom:  solid 0.5pt; border-right:  solid 0.5pt" colspan="2" rowspan="7">
<div><span style="color:white"><strong>Survey Response</strong></span></div>
</td>
<td style="background: #d8d8d8; padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid 0.5pt; border-right:  solid 0.5pt">
<div>Name</div>
</td>
<td style="background: #d8d8d8; padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid 0.5pt; border-right:  solid 0.5pt">
<div><strong>Single Line of Text. </strong>Auto-filled by workflow.</div>
</td>
</tr>
<tr>
<td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  solid 0.5pt; border-bottom:  solid 0.5pt; border-right:  solid 0.5pt">
<div>Question</div>
</td>
<td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid 0.5pt; border-right:  solid 0.5pt">
<div><strong>Single Line of Text. </strong></div>
</td>
</tr>
<tr style="background: #d8d8d8">
<td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  solid 0.5pt; border-bottom:  solid 0.5pt; border-right:  solid 0.5pt">
<div>Respondent</div>
</td>
<td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid 0.5pt; border-right:  solid 0.5pt">
<div><strong>Lookup to Contact entity</strong>.</div>
<div>Creates a custom 1:N relationship from Contact to Survey Response</div>
</td>
</tr>
<tr>
<td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  solid 0.5pt; border-bottom:  solid 0.5pt; border-right:  solid 0.5pt">
<div>Survey</div>
</td>
<td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid 0.5pt; border-right:  solid 0.5pt">
<div><strong>Lookup to Survey entity.<br />
</strong></div>
<div>Creates a custom 1:N from Survey to Survey Response.</div>
</td>
</tr>
<tr style="background: #d8d8d8">
<td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  solid 0.5pt; border-bottom:  solid 0.5pt; border-right:  solid 0.5pt">
<div>Response (Whole Number)</div>
</td>
<td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid 0.5pt; border-right:  solid 0.5pt">
<div><strong>Whole Number</strong>.</div>
</td>
</tr>
<tr>
<td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  solid 0.5pt; border-bottom:  solid 0.5pt; border-right:  solid 0.5pt">
<div>Response (Decimal)</div>
</td>
<td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid 0.5pt; border-right:  solid 0.5pt">
<div><strong>Decimal Number</strong>. This is important for reporting and charting, and is the appropriate field type for most numeric survey responses.</div>
</td>
</tr>
<tr style="background: #d8d8d8">
<td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  solid 0.5pt; border-bottom:  solid 0.5pt; border-right:  solid 0.5pt">
<div>Response (Short Text)</div>
</td>
<td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid 0.5pt; border-right:  solid 0.5pt">
<div><strong>Single Line of Text.</strong></div>
</td>
</tr>
<tr>
<td style="background: #4f81bd; padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  solid 0.5pt; border-bottom:  solid 0.5pt; border-right:  solid 0.5pt" colspan="2">
<div><span style="color:white"><strong>Lead Source</strong></span></div>
</td>
<td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid 0.5pt; border-right:  solid 0.5pt">
<div>Lead Source Name</div>
</td>
<td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid 0.5pt; border-right:  solid 0.5pt">
<div><strong>Single Line of Text.</strong></div>
</td>
</tr>
</tbody>
</table>
</div>
<div>After creating and publishing these customizations, customize the security role of any user that will be conducting surveys. This is an important step: it&#8217;s easy to forget, and if you don&#8217;t do it the dialog process will not work! The way I&#8217;ve written the dialog process, it creates the survey responses and assigns them to the owner of the contact providing the responses. Survey Response is a custom entity, and by default no security roles except System Administrator have privileges to custom entities. The following figure shows the minimum privileges required for this to work (user-level read privilege for the Survey Response entity), assuming a participating user has the Salesperson security role:</div>
<div><img src="http://www.dynamicscrmtrickbag.com/wp-content/uploads/2011/12/123111_2032_ProfileandS8.png" alt="" /></div>
</li>
<li>
<h4>How it Works</h4>
<div>The dialog process is written for the Contact entity, and is only available to run on-demand. To make it easier to understand I built it with three stages, shown collapsed in the process designer here:</div>
<div><img src="http://www.dynamicscrmtrickbag.com/wp-content/uploads/2011/12/123111_2032_ProfileandS9.png" alt="" /></div>
<div><strong>Stage 1</strong> only does one thing: uses <strong>Query CRM Data</strong> to build a static query for Lead Sources:</div>
<div><img src="http://www.dynamicscrmtrickbag.com/wp-content/uploads/2011/12/123111_2032_ProfileandS10.png" alt="" /></div>
<div><strong>Stage 2</strong> contains the dialog&#8217;s single page, with four <strong>Prompt and Response</strong> pairs:</div>
<div><img src="http://www.dynamicscrmtrickbag.com/wp-content/uploads/2011/12/123111_2032_ProfileandS11.png" alt="" /></div>
<div>The first Prompt and Response is actually a prompt with no response:</div>
<div><img src="http://www.dynamicscrmtrickbag.com/wp-content/uploads/2011/12/123111_2032_ProfileandS12.png" alt="" /></div>
<div>Note the use of dynamic values in the prompt, to both personalize the conversation and display some of the most important fields from the contact record. Also of interest is the use of the dynamic record URL in the tip text. This important functionality was first introduced in the November 2011 Service Update and it allows you to dynamically generate a link so the user can easily open a record&#8217;s form from the context of the dialog process.</div>
<div>The <strong>Insert Hyperlink <img src="http://www.dynamicscrmtrickbag.com/wp-content/uploads/2011/12/123111_2032_ProfileandS13.png" alt="" /></strong> icon is available both for Prompt Text and Tip Text. The following figure illustrates how I constructed the link for this example, which I then combined with static text to provide complete instructions to the user:</div>
<div><img src="http://www.dynamicscrmtrickbag.com/wp-content/uploads/2011/12/123111_2032_ProfileandS14.png" alt="" /></div>
<div>The next figure shows the Prompt and Response properties for the Source. Rather than entering the values within the dialog designer, I queries the Lead Source custom entity.</div>
<div><img src="http://www.dynamicscrmtrickbag.com/wp-content/uploads/2011/12/123111_2032_ProfileandS15.png" alt="" /></div>
<div>If you wondered before why I took that approach, now you can probably appreciate the design decision. Even though it took a little work to set it up, here are the three main reasons I chose this approach in the present example:</div>
</li>
</ol>
<ul style="margin-left: 38pt">
<li>It&#8217;s much easier for a user to maintain Lead Source values as an entity than it is to customize the dialog process itself.</li>
<li>Something like <strong>Lead Source is</strong> a good candidate for re-use across different entities. For example, there&#8217;s an option set field with the same name available on the lead entity in CRM. I generally prefer the custom entity approach over the option set approach, and keeping track of lead sources is a pretty common requirement.  So even if my only <em>current</em> requirement for a lead source lookup is within this dialog process, chances are good another one will come along later, and I&#8217;ll be ready when it does.</li>
<li>It&#8217;s time-consuming and tedious to enter hard-wired values in the process designer in the first place!</li>
</ul>
<div>The next figure shows the actual survey question. This is handled with a simple option set, and this time I used the Define Values option. The most important thing here is the make sure you select the Integer data type as I&#8217;ve done, so you can place the response into a numeric field in the survey response record:</div>
<div><img src="http://www.dynamicscrmtrickbag.com/wp-content/uploads/2011/12/123111_2032_ProfileandS16.png" alt="" /></div>
<div>So it&#8217;s on to Stage 3, which I usually refer to as the post-dialog processing stage. Stage 3 has four steps, each one a Create Record step. The first three create the survey response records, each associated with the contact providing the responses, and the fourth creates an e-mail:</div>
<div><img src="http://www.dynamicscrmtrickbag.com/wp-content/uploads/2011/12/123111_2032_ProfileandS17.png" alt="" /></div>
<div>The three <strong>Create Survey Response</strong> steps are similar; the following figure shows the properties for the Experience Rating response:</div>
<div><img src="http://www.dynamicscrmtrickbag.com/wp-content/uploads/2011/12/123111_2032_ProfileandS18.png" alt="" /></div>
<div>Dynamic values are combined with static text to fill in the Name field. The record is associated with the contact with dynamic values on the Respondent field. The Question field is filled with static text, and it&#8217;s important to note here that I&#8217;m placing the response value into the custom Response (Decimal) field. Also, notice the survey response record is associated with the actual survey with a hardwired selection in the Survey lookup field.</div>
<div>Finally, the <strong>Create E-mail</strong> step properties are shown in the following figure:</div>
<div><img src="http://www.dynamicscrmtrickbag.com/wp-content/uploads/2011/12/123111_2032_ProfileandS19.png" alt="" /></div>
<div>I&#8217;m sending this to the owner of the contact record, but you could easily imagine sending a summary to the contact as well, and that would work fine. Dynamic values are used in the Regarding field to attach the email activity as part of the contact history, and note the use again of the <strong>Insert Hyperlink/Record URL(Dynamic)</strong> combo. That&#8217;s quickly become one of my most frequently used features in workflow and dialog processes.</div>
<ol>
<li>
<h4>Reporting, Charting, Extensions and a Few Tips &amp; Tricks</h4>
<div>This example raises a number of interesting issues and there are several different design decisions you might consider. I&#8217;ll review a few of those here.</div>
</li>
</ol>
<ul>
<li>
<div>I mentioned a couple of times <strong>the importance of using the Decimal Number data type</strong> for the experience rating response in this example. You might think that the Whole Number data type would work just as well, and in fact, I&#8217;ve (mistakenly) taken that approach at least twice now. Why would it be a mistake for this solution?  To understand this, consider again the chart I showed above:</div>
<div><img src="http://www.dynamicscrmtrickbag.com/wp-content/uploads/2011/12/123111_2032_ProfileandS20.png" alt="" /></div>
<div>Notice that the average values displayed on the chart include two decimal places. If instead of placing the experience rating response into a Decimal Number field I&#8217;d placed it into a Whole Number field, the charting engine would display every data point with no decimal places, rounding it up or down to the nearest whole number! It&#8217;s not clear to me why the charting engine does this, but it does, so be sure to use the Decimal Number field type if you want to use the built-in charting and dashboarding features in CRM for applications like this.</div>
</li>
<li>
<div>Another data type anomaly lurks in this example as well: <strong>the difference between the Single Line of Text and the Multiple Lines of Text field types.</strong> Remember that in the approach I took, the source response was placed into a Single Line of Text field. That allows me to create a chart that shows how contacts are distributed across Lead Sources, like this:</div>
<div><img src="http://www.dynamicscrmtrickbag.com/wp-content/uploads/2011/12/123111_2032_ProfileandS21.png" alt="" /></div>
<div>To create a chart like this, you first need an appropriate view to filter down to the right question type, and then you can create the chart in the Chart Designer, like this:</div>
<div><img src="http://www.dynamicscrmtrickbag.com/wp-content/uploads/2011/12/123111_2032_ProfileandS22.png" alt="" /></div>
<div>The first time I tried this I stored a response to a <strong>Multiple Lines of Text</strong> field, and in the chart designer I couldn&#8217;t use it as the Category field: it just doesn&#8217;t show up. So, just remember: if you want to see counts of how records in a view are distributed across various values of a text field, make sure it&#8217;s a Single Line of Text field.</div>
</li>
<li>
<div><strong>Possible extensions</strong>. Remember how I used Query CRM Data so I wouldn&#8217;t have to enter the Lead Source values manually in the process designer?  And remember how in the experience rating prompt/response step I entered them manually? Well, suppose you needed to create a survey with several separate rating type questions, and suppose further that they were all on a 1-9 scale. (I once owned a training company and for years we gave students post-class evaluations on 9-point scales to rate things like the instructor&#8217;s subject matter expertise, courseware quality, facility quality and the overall value of the learning experience, so I know for a fact people perform surveys like that.) Anyway, manually entering the first set of nine values might not seem so bad, but as you entered the second set you&#8217;d probably wonder if there was a better way. And by the time you got to the third set you&#8217;d be tempted to just go with a paper-based process instead!</div>
<div>If you do have surveys that require multiple questions of the same type (the same rating scale, for example), there are better approaches you can take. For example, consider the following figure:</div>
<div><img src="http://www.dynamicscrmtrickbag.com/wp-content/uploads/2011/12/123111_2032_ProfileandS23.png" alt="" /></div>
<div>This is a custom entity – <strong>Possible Survey Responses</strong> – with two fields: Response Type is an option set, with values such as <em>Three point scale</em>, <em>Five point scale</em> and so forth. There&#8217;s a single record for each possible response for the response type, with an appropriate value in the response value field. You can then take advantage of a custom entity like this in the dialog design process, querying the entity for the possible response values for each response type, as the following figures illustrate.</div>
<div>Suppose you start by building queries for the different kinds of survey questions a survey has:</div>
<div><img src="http://www.dynamicscrmtrickbag.com/wp-content/uploads/2011/12/123111_2032_ProfileandS24.png" alt="" /></div>
<div>Each query is simple. The next figure shows the properties of the <strong>Five point scale</strong> query, which simply filters on the Response Type option set:</div>
<div><img src="http://www.dynamicscrmtrickbag.com/wp-content/uploads/2011/12/123111_2032_ProfileandS25.png" alt="" /></div>
<div>Once you&#8217;ve done that, you&#8217;re all set for the Prompt and Response steps, since you can get the option set values directly from the queries, rather than entering them manually:</div>
<div><img src="http://www.dynamicscrmtrickbag.com/wp-content/uploads/2011/12/123111_2032_ProfileandS26.png" alt="" /></div>
</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.dynamicscrmtrickbag.com/2011/12/31/profile-and-survey-customers-with-crm-2011-dialog-processes/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>CRM 2011 Dashboard Examples</title>
		<link>http://www.dynamicscrmtrickbag.com/2011/12/14/crm-2011-dashboard-examples/</link>
		<comments>http://www.dynamicscrmtrickbag.com/2011/12/14/crm-2011-dashboard-examples/#comments</comments>
		<pubDate>Wed, 14 Dec 2011 17:37:32 +0000</pubDate>
		<dc:creator>Richard Knudson</dc:creator>
				<category><![CDATA[CRM 2011]]></category>
		<category><![CDATA[Tips, Tricks, Q&A]]></category>

		<guid isPermaLink="false">http://www.dynamicscrmtrickbag.com/2011/12/14/crm-2011-dashboard-examples/</guid>
		<description><![CDATA[December 15, 2011 - The more I use dashboards, the more uses I find for them. Judging by the number of questions I get on the topic, other people are finding them useful as well. This article contains several examples of how Dynamics CRM 2011 dashboards can help you visualize your information and get things done, plus a few dashboard implementation tips. ]]></description>
			<content:encoded><![CDATA[<p>The more I use dashboards, the more uses I come up with for them. (That&#8217;s always a good sign, compared to features where the more you use them, the less useful they seem!) This article is a little different from most of the ones I write, in that it&#8217;s more of a what-you-can-do piece rather than my typical how-to. I&#8217;m thinking this might be useful for dashboards: my experience is that once you get the basics down, the hard part is coming up with good applications for them rather than the technical implementation details.</p>
<p>Anyway, let me know what you think. What kinds of interesting applications have you come up with for dashboards in Dynamics CRM 2011?</p>
<p>Here are six examples of how you might use dashboards, followed by a few dashboard implementation tips to keep in mind.</p>
<h2>Example 1: Tracking User Activity and Record Creation</h2>
<p>This dashboard provides a heuristic visualization of user adoption. The top row shows 3 charts, each one displaying counts of records created over the last 6 months for selected record types. The bottom row shows a different slice of the same data: for each record type over the same time period, which users created the records?</p>
<p><img src="http://www.dynamicscrmtrickbag.com/wp-content/uploads/2011/12/121411_1736_CRM2011Dash1.png" alt="" /></p>
<p>Here&#8217;s an article I wrote recently describing an approach to <a href="http://www.dynamicscrmtrickbag.com/2011/12/13/tracking-and-scoring-user-activity/">track and score user activity.</a><br />
<h2>Example 2: Metrics and KPIs for Custom Record Types</h2>
<p>Whether you&#8217;ve created your own or imported them as part of a solution, remember that custom entities are just as &#8220;dashboard-able&#8221; as anything else. For example, the one I show in the next figure uses the custom <strong>Page View</strong> entity that&#8217;s part of the ClickDimensions managed solution for marketing automation in Dynamics CRM. After getting provisioned with their solution and dropping some tracking script on your web site, page view records start getting created automatically. All I had to do for this one was create a couple of custom views and charts. (And notice the Trick Bag almost hit the 10,000 page views in a week milestone last week!)</p>
<p><img src="http://www.dynamicscrmtrickbag.com/wp-content/uploads/2011/12/121411_1736_CRM2011Dash2.png" alt="" /></p>
<h2>Example 3: My Activities</h2>
<p>OK, enough with the pretty pictures. Another good use of dashboards is to <strong>help users do something</strong>. One of my favorite examples is what I refer to as the My Activities dashboard. Two things about this one I like a lot:</p>
<ol>
<li>It makes sense for every user, since it uses slightly tweaked &#8220;My Activities&#8221; views to filter out all records not owned by the current user.</li>
<li>It encourages good activity management by making it easy.</li>
</ol>
<p>It contains two lists. The top one is for open activities, sorted by Start Date (you can also use the Due Date field) in ascending order, so you see first things first. If you&#8217;re keeping your activities up to date, there shouldn&#8217;t be anything in that list earlier than today&#8217;s date. The second one is for completed activities:</p>
<p><img src="http://www.dynamicscrmtrickbag.com/wp-content/uploads/2011/12/121411_1736_CRM2011Dash31.png" alt="" /></p>
<p>The nice thing about this is that if you expose a list on a dashboard, the ribbon for the list is exposed as well. In this case it means that a user can use the Mark Complete button to push something from the top list to the bottom:</p>
<p><img src="http://www.dynamicscrmtrickbag.com/wp-content/uploads/2011/12/121411_1736_CRM2011Dash41.png" alt="" /></p>
<p>Simple, but useful!</p>
<h2>Example 4: Launch Dialog Processes</h2>
<p>I wrote a <a href="http://www.dynamicscrmtrickbag.com/2011/11/20/crm2011-dialog-power-tips-run-a-dialog-from-a-dashboard/">detailed how-to article</a> on this topic, but this technique is definitely general enough to include here. Dialogs can be launched with a URL, and you can use JavaScript and web resources to do things like dynamically figure out the current user and so forth. I&#8217;ve got a client for whom internal lead referrals are very important, so I created a &#8220;My Referred Leads&#8221; dashboard that lets a user both kick off a lead referral dialog session as well as see what&#8217;s happened to leads they&#8217;ve previously referred:</p>
<p><img src="http://www.dynamicscrmtrickbag.com/wp-content/uploads/2011/12/121411_1736_CRM2011Dash51.png" alt="" /></p>
<h2>Example 5: Links to Commonly used Views and Reports</h2>
<p>Here&#8217;s a slightly different take on the &#8220;put a link on a dashboard&#8221; theme. This dashboard in this example consists of a single HTML web resource that contains hyperlinks to views. Remember that every view in Dynamics CRM (similarly to forms, dialog processes and so forth) is addressable via its very own persistent URL. You can exploit &#8220;URL-addressable forms &amp; views&#8221; to create the ultimate KISS dashboard, such as the following one:</p>
<p><img src="http://www.dynamicscrmtrickbag.com/wp-content/uploads/2011/12/121411_1736_CRM2011Dash61.png" alt="" /></p>
<p>In the previous figure, if I click Hot Opportunities and the JavaScript in the HTML web resource is written right, the Hot Opportunities view will open in its own window:</p>
<p><img src="http://www.dynamicscrmtrickbag.com/wp-content/uploads/2011/12/121411_1736_CRM2011Dash71.png" alt="" /></p>
<h2>Example 6: Use HTML Web Resources for Training/Documentation Content</h2>
<p>Another way to push user adoption is to make it easier to access things like training content, system documentation and so forth. The following figure shows an example of this. These are all simple, straight HTML web page resources with nothing but text. But with a little more work you could embed links to the views mentioned in the content, links to demonstration videos, more detailed content and the like:</p>
<p><img src="http://www.dynamicscrmtrickbag.com/wp-content/uploads/2011/12/121411_1736_CRM2011Dash81.png" alt="" /></p>
<h2>A Few Dashboard Implementation Tips</h2>
<p>Here are a few dashboard factoids that weren&#8217;t obvious to me when I first started working with them:</p>
<ul>
<li>System dashboards can only be created by system administrator-type security roles, and are visible to all users who can see dashboards. This means you can&#8217;t <em>target</em> system dashboards, so if you only create system dashboards you might end up with a LOT of dashboards and a cluttered user experience.</li>
<li>Personal dashboards can be created by any user and by default can only be seen by that user. But they can be shared (to users or teams), so if you want to create a targeted dashboard experience, consider creating personal dashboards and sharing them.</li>
<li>System dashboards cannot contain personal views or personal charts.</li>
<li>Personal dashboards can contain personal views and charts, OR system views and charts.</li>
<li>But remember: if you try to create a targeted dashboard experience by creating a personal dashboard and sharing it, remember to share out any views or charts used in the dashboard!</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.dynamicscrmtrickbag.com/2011/12/14/crm-2011-dashboard-examples/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Tracking and Scoring User Activity</title>
		<link>http://www.dynamicscrmtrickbag.com/2011/12/13/tracking-and-scoring-user-activity/</link>
		<comments>http://www.dynamicscrmtrickbag.com/2011/12/13/tracking-and-scoring-user-activity/#comments</comments>
		<pubDate>Wed, 14 Dec 2011 00:30:35 +0000</pubDate>
		<dc:creator>Richard Knudson</dc:creator>
				<category><![CDATA[CRM 2011 Business Process Book]]></category>
		<category><![CDATA[Customization]]></category>
		<category><![CDATA[Dynamics CRM Workflows]]></category>

		<guid isPermaLink="false">http://www.dynamicscrmtrickbag.com/2011/12/13/tracking-and-scoring-user-activity/</guid>
		<description><![CDATA[December 14, 2011 - Everybody agrees that user adoption is a good thing, and that high user adoption is a key measure of the overall success of a CRM implementation. But how can you measure "user adoption?" This article describes a simple approach, combining a couple of customizations and a few workflows, to come up with a single metric by which users can be ranked. And for best results, don't tell your users you're measuring their activity!]]></description>
			<content:encoded><![CDATA[<div>Everybody agrees that user adoption is a good thing, and that high user adoption is a key measure of the overall success of a CRM implementation. But there&#8217;s less agreement on how to <em>measure</em> user adoption. One way is to use a dashboard to directly display measures of &#8220;what users are doing&#8221;. For example, suppose you&#8217;re interested in tracking how many records are created, over time and by user, for several key record types, such as accounts, contacts, and opportunities, and examine the following figure:</div>
<div><img src="http://www.dynamicscrmtrickbag.com/wp-content/uploads/2011/12/121411_0029_Trackingand1.png" alt="" /></div>
<div>This dashboard displays a set of time series charts in the first row, of total records created over the last six months for accounts, contacts and opportunities. In the second row, a corresponding chart for each record type shows the distribution of the same records across their owning users.</div>
<div>Dashboards like this can of course be created for any record type – activities, cases, leads, custom entities – and can provide a good high level view of &#8220;who&#8217;s doing what.&#8221; But although visualizations like this are a good start, they don&#8217;t go far enough in several ways. For example:</div>
<ul>
<li>They provide visualization, but they don&#8217;t really provide a <em>measure</em>.</li>
<li>They don&#8217;t scale very well. For example, if you need to measure and compare usage for dozens or more users, they won&#8217;t be very effective.</li>
</ul>
<div>However, you could <em>score</em> various user activities, assigning a certain number of points for different kinds of activities. For example, consider the following table:</div>
<div>
<table style="border-collapse:collapse" border="0">
<colgroup>
<col style="width: 217px;"></col>
<col style="width: 132px;"></col>
</colgroup>
<tbody>
<tr style="background: #4f81bd">
<td style="padding-left: 7px; padding-right: 7px; border-top:  solid 0.5pt; border-left:  solid 0.5pt; border-bottom:  solid 0.5pt; border-right:  solid 0.5pt"><span style="color:white"><strong>Activity</strong></span></td>
<td style="padding-left: 7px; padding-right: 7px; border-top:  solid 0.5pt; border-left:  none; border-bottom:  solid 0.5pt; border-right:  solid 0.5pt"><span style="color:white"><strong>Score</strong></span></td>
</tr>
<tr>
<td style="background: #4f81bd; padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  solid 0.5pt; border-bottom:  solid 0.5pt; border-right:  solid 0.5pt"><span style="color:white">Completed Appointment</span></td>
<td style="background: #d8d8d8; padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid 0.5pt; border-right:  solid 0.5pt">2</td>
</tr>
<tr>
<td style="background: #4f81bd; padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  solid 0.5pt; border-bottom:  solid 0.5pt; border-right:  solid 0.5pt"><span style="color:white">Completed Phone Call</span></td>
<td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid 0.5pt; border-right:  solid 0.5pt">2</td>
</tr>
<tr>
<td style="background: #4f81bd; padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  solid 0.5pt; border-bottom:  solid 0.5pt; border-right:  solid 0.5pt"><span style="color:white">New Contact </span></td>
<td style="background: #d8d8d8; padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid 0.5pt; border-right:  solid 0.5pt">5</td>
</tr>
<tr>
<td style="background: #4f81bd; padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  solid 0.5pt; border-bottom:  solid 0.5pt; border-right:  solid 0.5pt"><span style="color:white">New Account</span></td>
<td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid 0.5pt; border-right:  solid 0.5pt">5</td>
</tr>
<tr>
<td style="background: #4f81bd; padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  solid 0.5pt; border-bottom:  solid 0.5pt; border-right:  solid 0.5pt"><span style="color:white">New Opportunity</span></td>
<td style="background: #d8d8d8; padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid 0.5pt; border-right:  solid 0.5pt">5</td>
</tr>
<tr>
<td style="background: #4f81bd; padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  solid 0.5pt; border-bottom:  solid 0.5pt; border-right:  solid 0.5pt"><span style="color:white">Won Opportunity</span></td>
<td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid 0.5pt; border-right:  solid 0.5pt">10</td>
</tr>
</tbody>
</table>
</div>
<div>Obviously the scheme you use to score users&#8217; activities will differ for every business, but something like this one accords with common business requirements as well as with the way Dynamics CRM is intended to be used:</div>
<ul>
<li>For activity records, it&#8217;s completed ones that matter. Canceled ones don&#8217;t count.</li>
<li>Contacts and accounts – the customer records – are worth more than a completed activity.</li>
<li>And while opportunities are worth something to create, they&#8217;re worth even more to close as won!</li>
</ul>
<div>Tracking and scoring user activity can be accomplished by combining several customizations and workflows, and an example of this is presented next. The end-goal is a dashboard like the one in the following figure:</div>
<div><img src="http://www.dynamicscrmtrickbag.com/wp-content/uploads/2011/12/121411_0029_Trackingand2.png" alt="" /></div>
<div>The key concept is that a single all-up score is tracked for each user. This is displayed in the <strong>Activity Score Leaders</strong> chart in the top row. The first two charts in the top row break out users&#8217; scores by activity type, for different time periods: today and the last 30 days. The grid shown underneath the charts is a custom entity, here playing the role of a reminder to users, so they know how different activities are scored.</div>
<h2>Setting Up</h2>
<div>There are two main customizations required for the user activity scoring approach described here:</div>
<ul>
<li>A single custom field is added to the user entity to maintain an all-up &#8220;total score&#8221; value.</li>
<li>And because it might be important to report on a user&#8217;s score over different time periods, I use a custom entity – Activity Counter Records – to store the detail on every activity contributing to the overall score.</li>
</ul>
<div>
<table style="border-collapse:collapse" border="0">
<colgroup>
<col style="width: 142px;"></col>
<col style="width: 142px;"></col>
<col style="width: 354px;"></col>
</colgroup>
<tbody>
<tr style="background: #4f81bd">
<td style="padding-left: 7px; padding-right: 7px; border-top:  solid 0.5pt; border-left:  solid 0.5pt; border-bottom:  solid 0.5pt; border-right:  solid 0.5pt"><span style="color:white"><strong>Entity</strong></span></td>
<td style="padding-left: 7px; padding-right: 7px; border-top:  solid 0.5pt; border-left:  none; border-bottom:  solid 0.5pt; border-right:  solid 0.5pt"><span style="color:white"><strong>Custom Fields</strong></span></td>
<td style="padding-left: 7px; padding-right: 7px; border-top:  solid 0.5pt; border-left:  none; border-bottom:  solid 0.5pt; border-right:  solid 0.5pt"><span style="color:white"><strong>Field Type and Purpose</strong></span></td>
</tr>
<tr>
<td style="background: #4f81bd; padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  solid 0.5pt; border-bottom:  solid 0.5pt; border-right:  solid 0.5pt" rowspan="4"><span style="color:white"><strong>Activity Counter (custom)</strong></span></td>
<td style="background: #d8d8d8; padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid 0.5pt; border-right:  solid 0.5pt">Name</td>
<td style="background: #d8d8d8; padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid 0.5pt; border-right:  solid 0.5pt"><strong>Single Line of Text.</strong> Name of record</td>
</tr>
<tr>
<td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  solid 0.5pt; border-bottom:  solid 0.5pt; border-right:  solid 0.5pt">Record Type</td>
<td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid 0.5pt; border-right:  solid 0.5pt"><strong>Single Line of Text</strong>. Account, contact, appointment, etc.</td>
</tr>
<tr style="background: #d8d8d8">
<td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  solid 0.5pt; border-bottom:  solid 0.5pt; border-right:  solid 0.5pt">Event</td>
<td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid 0.5pt; border-right:  solid 0.5pt"><strong>Single Line of Text</strong>. Create, Complete, Won, etc.</p>
<div>Creates a custom 1:N relationship from User to SLA</div>
</td>
</tr>
<tr>
<td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  solid 0.5pt; border-bottom:  solid 0.5pt; border-right:  solid 0.5pt">Score</td>
<td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid 0.5pt; border-right:  solid 0.5pt"><strong>Whole Number</strong>. Tracks score for each activity</td>
</tr>
<tr>
<td style="background: #4f81bd; padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  solid 0.5pt; border-bottom:  solid 0.5pt; border-right:  solid 0.5pt"></td>
<td style="background: #d8d8d8; padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid 0.5pt; border-right:  solid 0.5pt">User</td>
<td style="background: #d8d8d8; padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid 0.5pt; border-right:  solid 0.5pt"><strong>Lookup to User. </strong>Associates each record with the user performing the activity. You can use the system Owner field for this, or create a custom lookup field. In the approach described here a custom lookup field is used.</td>
</tr>
<tr>
<td style="background: #4f81bd; padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  solid 0.5pt; border-bottom:  solid 0.5pt; border-right:  solid 0.5pt"><span style="color:white"><strong>User</strong></span></td>
<td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid 0.5pt; border-right:  solid 0.5pt">Activity Counter Aggregate Score</td>
<td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid 0.5pt; border-right:  solid 0.5pt"><strong>Whole Number.</strong> This field stores the all-up &#8220;aggregate&#8221; score for each user.</td>
</tr>
</tbody>
</table>
</div>
<h2>How it Works</h2>
<div>To focus on the essentials, let&#8217;s implement a simple version of user activity scoring according to these rules:</div>
<div>
<table style="border-collapse:collapse" border="0">
<colgroup>
<col style="width: 217px;"></col>
<col style="width: 132px;"></col>
</colgroup>
<tbody>
<tr style="background: #4f81bd">
<td style="padding-left: 7px; padding-right: 7px; border-top:  solid 0.5pt; border-left:  solid 0.5pt; border-bottom:  solid 0.5pt; border-right:  solid 0.5pt"><span style="color:white"><strong>Activity</strong></span></td>
<td style="padding-left: 7px; padding-right: 7px; border-top:  solid 0.5pt; border-left:  none; border-bottom:  solid 0.5pt; border-right:  solid 0.5pt"><span style="color:white"><strong>Score</strong></span></td>
</tr>
<tr>
<td style="background: #4f81bd; padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  solid 0.5pt; border-bottom:  solid 0.5pt; border-right:  solid 0.5pt"><span style="color:white">Completed Appointment</span></td>
<td style="background: #d8d8d8; padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid 0.5pt; border-right:  solid 0.5pt">2</td>
</tr>
<tr>
<td style="background: #4f81bd; padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  solid 0.5pt; border-bottom:  solid 0.5pt; border-right:  solid 0.5pt"><span style="color:white">New Contact </span></td>
<td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid 0.5pt; border-right:  solid 0.5pt">5</td>
</tr>
<tr>
<td style="background: #4f81bd; padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  solid 0.5pt; border-bottom:  solid 0.5pt; border-right:  solid 0.5pt"><span style="color:white">New Opportunity</span></td>
<td style="background: #d8d8d8; padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid 0.5pt; border-right:  solid 0.5pt">5</td>
</tr>
<tr>
<td style="background: #4f81bd; padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  solid 0.5pt; border-bottom:  solid 0.5pt; border-right:  solid 0.5pt"><span style="color:white">Won Opportunity</span></td>
<td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid 0.5pt; border-right:  solid 0.5pt">10</td>
</tr>
</tbody>
</table>
</div>
<div>One workflow will be used for each of these activities, and it will perform the following actions:</div>
<ul>
<li>Create an activity counter record with the appropriate values, and associate it with the user performing the activity being scored.</li>
<li>Update the aggregate score field on the user&#8217;s record.</li>
</ul>
<div>Here are the four workflows as they appear in the process grid:</div>
<div><img src="http://www.dynamicscrmtrickbag.com/wp-content/uploads/2011/12/121411_0029_Trackingand3.png" alt="" /></div>
<div>The following three figures illustrate the workflow that performs the scoring for the completed appointment activity. First, the following figure shows the workflow properties and overall structure:</div>
<div><img src="http://www.dynamicscrmtrickbag.com/wp-content/uploads/2011/12/121411_0029_Trackingand4.png" alt="" /></div>
<div>It&#8217;s triggered by <strong>Record status changes</strong>, and the first <strong>If</strong> condition checks the status, only proceeding if the appointment is completed. I wrote this to also perform a check on whether the <strong>Regarding</strong> field contains data. This illustrates a possible requirement that only certain kinds of appointments get scored, such as those associated with account or contact records, etc.</div>
<div>The first action performed by the workflow is to create an activity counter record:</div>
<div><img src="http://www.dynamicscrmtrickbag.com/wp-content/uploads/2011/12/121411_0029_Trackingand5.png" alt="" /></div>
<div>The most important point to note here is that the only way an activity counter record gets created is via these workflows. So in this approach, every (or almost every) field will get filled in automatically, behind the scenes. Records like these are not intended to be created interactively by a user! This accounts for why we can use simple text fields for things like <strong>Record Type</strong> and <strong>Event</strong>: since they&#8217;re always filled by the workflow, they&#8217;ll always be entered correctly.</div>
<div>Also, notice that the <strong>Score</strong> field is simply set to a fixed value, in this case 2.</div>
<div>The activity counter record is associated with the user with dynamic values on the custom User lookup field. In this example I filled both the <strong>Owner</strong> and custom <strong>User</strong> field, although that&#8217;s not really required.</div>
<div>The next step is to update the aggregate score field on the user record:</div>
<div><img src="http://www.dynamicscrmtrickbag.com/wp-content/uploads/2011/12/121411_0029_Trackingand6.png" alt="" /></div>
<div>Here, the most important difference is the use of the <strong>Increment by</strong> operator: that&#8217;s how we get a convenient single all-up activity score stored on the user record.</div>
<div>The logic of the other three workflows is essentially the same. Here are a few things to think about and variations you might try:</div>
<ul>
<li>
<div>If all you need to do is track an aggregate score for each user, you don&#8217;t need the custom entity I used (activity counter). But remember, if you don&#8217;t have that you lose the time dimension along with activity details. For example, the following figure shows a specific user&#8217;s activity counter records from the context of the user form, one of which you&#8217;d have without the custom entity:</div>
<div><img src="http://www.dynamicscrmtrickbag.com/wp-content/uploads/2011/12/121411_0029_Trackingand7.png" alt="" /></div>
</li>
<li>
<div>Notice that the scoring logic in this approach is embedded in the workflow processes. In that sense it&#8217;s a little bit &#8220;hardwired&#8221;. With a little more work, you could create the ability for a user to configure settings for scoring, so that if you needed to change the score a user receives for an activity, you could update a record rather than the workflow process itself. One way to do this would be to create another custom entity, such as <strong>Activity Counter Settings</strong>, and have each activity counter record be a child record of a specific settings record. If you take another look at the way I created the activity counter record you&#8217;ll see a clue about how this approach can work:</div>
<div><img src="http://www.dynamicscrmtrickbag.com/wp-content/uploads/2011/12/121411_0029_Trackingand8.png" alt="" /></div>
<div>The <strong>Counter Setting</strong> field is a lookup, which if filled in will associate a counter record with a parent setting record. If you took this approach, then the Score field could be filled with dynamic values rather than directly as in this approach.</div>
</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.dynamicscrmtrickbag.com/2011/12/13/tracking-and-scoring-user-activity/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Round-Robin Record Assignment with CRM 2011 Dialog Processes</title>
		<link>http://www.dynamicscrmtrickbag.com/2011/12/11/round-robin-record-assignment-with-crm-2011-dialog-processes/</link>
		<comments>http://www.dynamicscrmtrickbag.com/2011/12/11/round-robin-record-assignment-with-crm-2011-dialog-processes/#comments</comments>
		<pubDate>Sun, 11 Dec 2011 19:26:13 +0000</pubDate>
		<dc:creator>Richard Knudson</dc:creator>
				<category><![CDATA[CRM 2011 Business Process Book]]></category>
		<category><![CDATA[Customization]]></category>
		<category><![CDATA[Dynamics CRM Workflows]]></category>

		<guid isPermaLink="false">http://www.dynamicscrmtrickbag.com/2011/12/11/round-robin-record-assignment-with-crm-2011-dialog-processes/</guid>
		<description><![CDATA[December 12, 2011 - The Dynamics CRM literature is replete with articles about round-robin schemes to assign records. It turns out to be easier to implement processes like this with dialogs than with workflows, because a dialog process can extend its data context as it runs. Here's an example. Enjoy!]]></description>
			<content:encoded><![CDATA[<h2>Round-Robin Processes</h2>
<p>There are many flavors of round-robin record assignment processes, but they all share some fundamental properties. The most important is that they all implement what you might refer to as an &#8220;egalitarian&#8221; record assignment process. For example, records are assigned first to sales rep 1, then to sales rep 2, and so on until sales rep N gets her assignment, then the process starts over again with sales rep 1 next in line.</p>
<p>We&#8217;ll examine a dialog process version of this here, but since we&#8217;re on the topic it might be worth characterizing several different assignment processes, all of which could be implemented with workflows or dialogs in Dynamics CRM:</p>
<ul>
<li>If you create an opportunity record, you own it. Call this the &#8220;chew your own meat&#8221; school of record assignment.</li>
<li>If an opportunity is created for a customer you own, you get the opportunity. This is the strong version of the owned-account school of record assignment.</li>
<li>If an opportunity is created for an industry or product in which you have expertise, it gets assigned to you. Call this the strong version of the industry expertise school.</li>
</ul>
<p>Many organizations combine several different styles of record assignment, within or across business units. For example, you might use a strong owned-account assignment approach for opportunities created for owned accounts, but have a set of accounts designated as &#8220;house accounts&#8221;, and assign opportunities for those accounts on a round-robin basis.</p>
<p>Or if you&#8217;re a mortgage banker, you might assign loan modifications on a round-robin basis. Since load modifications don&#8217;t have new money associated with them, you might put them in the take-one-for-the-team category and distribute them equally to a pool of loan modification processers.</p>
<h2>Workflows v. Dialogs for Round-Robin Assignment</h2>
<p>Remember our <a href="http://www.dynamicscrmtrickbag.com/2011/11/30/crm-2011-dialogs-should-you-use-query-crm-data-or-lookup/">discussion comparing the data context of workflow and dialog processes</a>. One implication of that discussion is that round-robin processes are much easier to implement with dialog processes than with workflows. This is because a running instance of a workflow doesn&#8217;t have any way of knowing anything about other instances, and thus doesn&#8217;t know anything about previous record assignments. The standard way of getting around this in a workflow is to create a custom entity that functions as the parent record of every opportunity needing to be assigned. (For example, Ben Vollmer wrote the first <a href="http://blogs.msdn.com/b/crm/archive/2009/02/10/microsoft-dynamics-crm-round-robin-lead-assignment.aspx">article on this topic</a>.)</p>
<p>The workflow can then both query the parent record for things like which user got the last assignment, as well as update it with who&#8217;s getting the current assignment. As you will see here, this kind of workaround in unnecessary for dialogs, since they can create their own data context as they run.</p>
<p>The scenario for this example is as follows:</p>
<ol>
<li>A user selects a specific opportunity record and starts the dialog process.</li>
<li>The dialog builds a query of &#8220;participating users&#8221;: that is, users designated as participating in the round-robin process.</li>
<li>The query will be in ascending date order by the date each participating user was last assigned an opportunity by the process.</li>
<li>The user will be instructed to select the user at the top of the list, but can depart from the &#8220;last-in first-out&#8221; rule if necessary.</li>
<li>After the user is selected, the dialog assigns the record and performs some other data updates.</li>
</ol>
<h2>Setting Up</h2>
<p>This dialog requires customizations to the User entity: a check-box field to specify participating users, and a date field to keep track of the last assignment date:</p>
<div>
<table style="border-collapse:collapse" border="0">
<colgroup>
<col style="width: 140px;"></col>
<col style="width: 145px;"></col>
<col style="width: 353px;"></col>
</colgroup>
<tbody>
<tr style="background: #4f81bd">
<td style="padding-left: 7px; padding-right: 7px; border-top:  solid 0.5pt; border-left:  solid 0.5pt; border-bottom:  solid 0.5pt; border-right:  solid 0.5pt" colspan="2"><span style="color:white"><strong>Entity</strong></span></td>
<td style="padding-left: 7px; padding-right: 7px; border-top:  solid 0.5pt; border-left:  none; border-bottom:  solid 0.5pt; border-right:  solid 0.5pt"><span style="color:white"><strong>Customizations</strong></span></td>
<td style="padding-left: 7px; padding-right: 7px; border-top:  solid 0.5pt; border-left:  none; border-bottom:  solid 0.5pt; border-right:  solid 0.5pt"><span style="color:white"><strong>Field Type and Purpose</strong></span></td>
</tr>
<tr>
<td style="background: #4f81bd; padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  solid 0.5pt; border-bottom:  solid 0.5pt; border-right:  solid 0.5pt" colspan="2" rowspan="2"><span style="color:white"><strong>User</strong></span></td>
<td style="background: #d8d8d8; padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid 0.5pt; border-right:  solid 0.5pt">Field: Participates in Round-Robin Process</td>
<td style="background: #d8d8d8; padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid 0.5pt; border-right:  solid 0.5pt"><strong>Two Options.</strong> Specifies a user&#8217;s participation in process.</td>
</tr>
<tr>
<td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  solid 0.5pt; border-bottom:  solid 0.5pt; border-right:  solid 0.5pt">Field: Last Assignment Date</td>
<td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid 0.5pt; border-right:  solid 0.5pt"><strong>Date and Time</strong>. Date of last assignment as part of process.</td>
</tr>
</tbody>
</table>
</div>
<p>The following figure shows how these fields could be placed on a user form:</p>
<p><img src="http://www.dynamicscrmtrickbag.com/wp-content/uploads/2011/12/121111_1925_RoundRobinR1.png" alt="" /></p>
<p>Of course in a production environment you don&#8217;t want any old user going in and changing these things, so you&#8217;d need to come up with an approach for making sure that the only users who can change them are the ones that are supposed to be able to.</p>
<h2>How it Works</h2>
<p>For this example, let&#8217;s start by examining the user experience. To keep it simple, I&#8217;ll start from the opportunity data grid, but in a production environment you might start from a queue for unassigned opportunities, and lock down the queue so that only certain users can kick off the process. The following figure shows how it looks as a user runs the process: a single opportunity record is selected on the grid, and the dialog prompts to select the user to whom the record should be assigned:</p>
<p><img src="http://www.dynamicscrmtrickbag.com/wp-content/uploads/2011/12/121111_1925_RoundRobinR2.png" alt="" /></p>
<p>The two most important things to notice about this are as follows:</p>
<ul>
<li>Only a subset of users are available for selection. You&#8217;ll see how the query uses the <strong>Participates in Round Robin Process</strong> field to filter out non-participating user records.</li>
<li>The list of participating users is presented in ascending order by the <strong>Last Assignment Date </strong>field. Essentially, this prompts the user to apply the last-in-first-out logic, but allows for out of order selection. The user is instructed to provide an explanation for any out of order assignments in the text field.</li>
</ul>
<p>Suppose I finish that dialog by selecting User A. The selected opportunity is removed from the My Opportunities view (unless I happen to be User A!) because the dialog process assigns it to that user. Now if I run it again, the experience is slightly different:</p>
<p><img src="http://www.dynamicscrmtrickbag.com/wp-content/uploads/2011/12/121111_1925_RoundRobinR3.png" alt="" /></p>
<p>Now User B percolates to the top of the list. As you&#8217;ll see next, this is because the dialog process updates the Last Assignment Date field so you&#8217;ll always have the ability to sort by that field.</p>
<ol>
<li>
<h4>Building the Dialog Process</h4>
<p>The dialog itself (name) is created for the Opportunity entity, and is available to run only on demand. The following figure shows the step editor for the dialog process. I&#8217;ve used stages to organize the process in the designer, in what is a very common configuration for a dialog process that uses a query:</p>
<ol>
<li><strong>Query.</strong> This stage contains the single Query step.</li>
<li><strong>Dialog UI.</strong> This stage presents the user experience; the first prompt uses the query to present the the list of participating users.</li>
<li><strong>Post-dialog Processing</strong>. After the user clicks Finish, the steps in this stage create records, assign them, update them as necessary and so forth.</li>
</ol>
<p><img src="http://www.dynamicscrmtrickbag.com/wp-content/uploads/2011/12/121111_1925_RoundRobinR4.png" alt="" /></p>
<p>The next figure shows how to construct the Participating Users query. The single filter condition uses the custom field added to the user entity (<strong>Participates in Round Robin Process</strong>). To sort the query in ascending order by <strong>Last Assignment Date</strong>, click the Edit Columns button:</p>
<p><img src="http://www.dynamicscrmtrickbag.com/wp-content/uploads/2011/12/121111_1925_RoundRobinR5.png" alt="" /></p>
<p>The next figure shows how to construct the Prompt and Response using this query. I used the <strong>Prompt Text</strong> to instruct the user on what to do for out of order assignments, but if my advice got much longer than this, I&#8217;d probably use the <strong>Tip Text</strong> to give it a cleaner look. Also, notice how I constructed the Separator, using a semi-colon and some static text to make it more obvious what the date field refers to:</p>
<p><img src="http://www.dynamicscrmtrickbag.com/wp-content/uploads/2011/12/121111_1925_RoundRobinR6.png" alt="" /></p>
<p>The first step in stage 3 is pretty obvious: it assigns the selected record to the selected user. The second step is more interesting. This updates the <strong>Last Assignment Date</strong> field on the user record with the current time, so that next time you run the process the user with the most recent assignment goes to the bottom of the list:</p>
<p><img src="http://www.dynamicscrmtrickbag.com/wp-content/uploads/2011/12/121111_1925_RoundRobinR7.png" alt="" /></p>
<p>Some time ago I made a video on this kind of a dialog process. You can see it, along with a few others, on the <a href="http://www.dynamicscrmtrickbag.com/trick-bag-video/">Trick Bag Video page</a>.</li>
</ol>
]]></content:encoded>
			<wfw:commentRss>http://www.dynamicscrmtrickbag.com/2011/12/11/round-robin-record-assignment-with-crm-2011-dialog-processes/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Use Microsoft Connect to Drive Product Improvement</title>
		<link>http://www.dynamicscrmtrickbag.com/2011/12/07/use-microsoft-connect-to-drive-product-improvement/</link>
		<comments>http://www.dynamicscrmtrickbag.com/2011/12/07/use-microsoft-connect-to-drive-product-improvement/#comments</comments>
		<pubDate>Wed, 07 Dec 2011 13:58:13 +0000</pubDate>
		<dc:creator>Richard Knudson</dc:creator>
				<category><![CDATA[Tips, Tricks, Q&A]]></category>

		<guid isPermaLink="false">http://www.dynamicscrmtrickbag.com/2011/12/07/use-microsoft-connect-to-drive-product-improvement/</guid>
		<description><![CDATA[December 7, 2011 - A long time ago I wrote an article, My Dynamics CRM 5 Wish-List, on some of the features I most wanted to see in the next release of Dynamics CRM. I received plenty of comments and emails about that post, but these days if I really feel strongly about a feature I use the Microsoft Connect site: https://connect.microsoft.com. ]]></description>
			<content:encoded><![CDATA[<p>A long time ago I wrote an article, <a href="http://www.dynamicscrmtrickbag.com/2009/01/15/my-dynamics-crm-5-wishlist/">My Dynamics CRM 5 Wish-List</a>, on some of the features I most wanted to see in the next release of Dynamics CRM. I received plenty of comments and emails about that post, but these days if I really feel strongly about a feature I use the Microsoft Connect site: <a href="https://connect.microsoft.com">https://connect.microsoft.com</a>.</p>
<p>This site is a great resource and I recommend you use it. You can sign in with your Windows Live ID, and once in you can go directly to pages like this one: <a href="https://connect.microsoft.com/dynamicssuggestions/Feedback">https://connect.microsoft.com/dynamicssuggestions/Feedback</a></p>
<p>My personal favorite of the top ten most requested new features is currently at the number two spot:</p>
<p><img src="http://www.dynamicscrmtrickbag.com/wp-content/uploads/2011/12/120711_1357_UseMicrosof1.png" alt="" /></p>
<p>The ability to do &#8220;NOT&#8221; searches just seems like something the product should have. Customer tend to assume it&#8217;s there, and it&#8217;s difficult explaining to a customer why we can&#8217;t create an Advanced Find query showing which customers have <strong>not</strong> purchased product A, or which leads <strong>don&#8217;t</strong> have any activities created for them:</p>
<p style="margin-left: 36pt"><em>While you can do queries like that easily with SQL, you cannot use the Advanced Find UI to create them.<br />
</em></p>
<p>And eyes <em>really</em> start glazing over when you try explaining why you cannot build <em>reports</em> showing information like that in Dynamics CRM Online, while you can in an on-premise deployment:</p>
<p style="margin-left: 36pt"><em>Dynamics CRM Online can do SSRS reports now, bringing it closer to parity with the on-premise version. But you cannot use SQL in custom &#8220;SSRS&#8221; reports for Dynamics CRM Online; you must use FetchXML instead. And FetchXML cannot do NotExists (sub queries) or NotIn (queries)</em><br />
<em>like SQL can. (I guess we should really refer to them as FXMLRS reports!)<br />
</em></p>
<p>I&#8217;m always impressed with the quality of the feature requests on the Connect site; the Dynamics CRM suggestions in particular are full of things that, if added, would really save us working-class CRM consultants a lot of time.</p>
<p>Here&#8217;s a tip: for maximum impact, review the list before you post a suggestion to see if somebody else has already suggested it. Currently 30 votes gets a suggestion in the top ten, and my guess is a single top-ten suggestion is more likely to be added than if it&#8217;s actually hidden in three separate but similar suggestions each with 10 votes. For example, I was surprised that Pablo&#8217;s suggestion only had 8 votes:</p>
<p><img src="http://www.dynamicscrmtrickbag.com/wp-content/uploads/2011/12/120711_1357_UseMicrosof2.png" alt="" /></p>
<p>Surely that&#8217;s a top ten or at least a top twenty suggestion! But then I noticed a few other suggestions that were close enough to siphon off some votes. Anyway, Pablo&#8217;s suggestion now has 9 votes, and I encourage you to get in there and make your voice heard.</p>
<p><em><br />
</em></p>
]]></content:encoded>
			<wfw:commentRss>http://www.dynamicscrmtrickbag.com/2011/12/07/use-microsoft-connect-to-drive-product-improvement/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Customizing One-to-Many Relationships</title>
		<link>http://www.dynamicscrmtrickbag.com/2011/12/03/customizing-one-to-many-relationships/</link>
		<comments>http://www.dynamicscrmtrickbag.com/2011/12/03/customizing-one-to-many-relationships/#comments</comments>
		<pubDate>Sat, 03 Dec 2011 18:11:03 +0000</pubDate>
		<dc:creator>Richard Knudson</dc:creator>
				<category><![CDATA[CRM 2011]]></category>
		<category><![CDATA[Customization]]></category>
		<category><![CDATA[Tips, Tricks, Q&A]]></category>

		<guid isPermaLink="false">http://www.dynamicscrmtrickbag.com/2011/12/03/customizing-one-to-many-relationships/</guid>
		<description><![CDATA[December 3, 2011 - One-to-Many (or 1:N) relationships are ubiquitous in Dynamics CRM. A reader's question prompted this article on how to customize the default behavior of 1:N relationships, such as what happens to child records when their parents are assigned, shared and the like. ]]></description>
			<content:encoded><![CDATA[<p>I recently received a question from Trick Bag reader Sara Hall, who asked the following question:
</p>
<p style="margin-left: 36pt"><span style="color:#2a3845; font-family:Arial; font-size:9pt">In my company&#8217;s structure we have both business units and security roles. I am not sure if the question I am going to ask pertains to either of these but I thought I should give it a shot. <em>When a person &#8220;shares&#8221; a parent record … let&#8217;s say an account with another individual inside or outside of their same business units does that mean all &#8220;child&#8221; records i.e. opportunities, contacts of that account are now visible to the person the account record was shared with?<br />
</em></span></p>
<p>Excellent question, Sara. I thought I must have written about that, so I searched the last two year&#8217;s worth of Trick Bag articles. I found lots of articles on many-to-many relationships, but not a single one on the more common one-to-many variety. So I thought I better write one.
</p>
<p>While there is a business unit/security roles component in the answer to your question, it really has more to do with customizing the default one-to-many relationships than it does with security roles.
</p>
<h2>Default One-to-Many Relationships<br />
</h2>
<p>Let&#8217;s start with how Dynamics CRM entity relationships work out of the box. I&#8217;ll use the account entity to illustrate, partly because it&#8217;s at the top of the relationship heap in CRM and has more child records than most other record types. For example, account has built-in 1:N relationships to contact, opportunity, email, task, appointment, and so forth. Generally speaking, the links you see in left navigation on a CRM form are entities the form entity has a 1:N relationship to.
</p>
<p>The default behavior of all of the system 1:N relationships is what&#8217;s known as <strong>Parental</strong>. This means that anything you do to a parent record cascades down to all child records. A good way to understand this is to examine the scary dialog you see when you try to delete an account record:
</p>
<p><img src="http://www.dynamicscrmtrickbag.com/wp-content/uploads/2011/12/120311_1810_Customizing1.png" alt=""/>
	</p>
<p>In the parlance of 1:N relationships, we say that deleting the parent record &#8220;cascades down&#8221; to child records. It turns out that the other things you might do to a parent record &#8212; such as assigning and sharing it – also cascade down to all child records. So there&#8217;s the specific answer to your question about sharing: unless somebody&#8217;s customized your Dynamics CRM, when a parent record is shared all of its child records are shared as well.
</p>
<h2>Customizing 1:N Relationships<br />
</h2>
<p>But that parental behavior can be customized. For example, if you open up the solution explorer (i.e., start customizing!) and drill down into the Account entity, you can click the 1:N Relationships tab and see something like the following figure:
</p>
<p><img src="http://www.dynamicscrmtrickbag.com/wp-content/uploads/2011/12/120311_1810_Customizing2.png" alt=""/>
	</p>
<p>I say &#8220;something like&#8221; since this is customized and might look a little different from yours. In particular, notice that in the figure the Contact and Opportunity relationships are set to <strong>Configurable Cascading</strong>. These are customized, away from their default Parental behavior. You can customize these by double-clicking on one of the rows to open its Relationship Definition dialog. The following figure shows what this looks like for the Account -&gt; Contact 1:N relationship in my example:
</p>
<p><img src="http://www.dynamicscrmtrickbag.com/wp-content/uploads/2011/12/120311_1810_Customizing3.png" alt=""/>
	</p>
<p>Notice that the <strong>Type of Behavior</strong> is set to <strong>Configurable Cascading</strong>, and <strong>Share</strong> is set to <strong>Cascade None</strong>. That&#8217;s how I configured the relationship for opportunity as well. So in this scenario, if I shared an account record with another user, here&#8217;s what would happen:
</p>
<ul>
<li>Appointments, tasks, e-mails would all be shared
</li>
<li>Contacts and opportunities would not be shared
</li>
</ul>
<p>This specific customization could account for child records not being shared along with the parent, which was one of the issues reported by Sara&#8217;s users.
</p>
<p>There are four options in these &#8220;cascade&#8221; drop-downs:
</p>
<div>
<table style="border-collapse:collapse" border="0">
<colgroup>
<col style="width:233px"/>
<col style="width:366px"/></colgroup>
<tbody valign="top">
<tr>
<td style="padding-left: 7px; padding-right: 7px; border-top:  solid 0.5pt; border-left:  solid 0.5pt; border-bottom:  solid 0.5pt; border-right:  solid 0.5pt">
<p>Cascade All</p>
</td>
<td style="padding-left: 7px; padding-right: 7px; border-top:  solid 0.5pt; border-left:  none; border-bottom:  solid 0.5pt; border-right:  solid 0.5pt">
<p>The default</p>
</td>
</tr>
<tr>
<td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  solid 0.5pt; border-bottom:  solid 0.5pt; border-right:  solid 0.5pt">
<p>Cascade Active</p>
</td>
<td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid 0.5pt; border-right:  solid 0.5pt">
<p>Only cascade for active records (e.g., don&#8217;t reassign closed opportunities!)</p>
</td>
</tr>
<tr>
<td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  solid 0.5pt; border-bottom:  solid 0.5pt; border-right:  solid 0.5pt">
<p>Cascade User-Owned</p>
</td>
<td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid 0.5pt; border-right:  solid 0.5pt">
<p>Only cascade for child records owned by the same user as the parent</p>
</td>
</tr>
<tr>
<td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  solid 0.5pt; border-bottom:  solid 0.5pt; border-right:  solid 0.5pt">
<p>Cascade None</p>
</td>
<td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid 0.5pt; border-right:  solid 0.5pt">
<p>Don&#8217;t cascade anything</p>
</td>
</tr>
</tbody>
</table>
</div>
<p>When you make changes like this, after you publish customizations they take effect, so it&#8217;s a good idea not to do this in a production environment unless you&#8217;ve thoroughly tested first.
</p>
<p>So that&#8217;s how you customize the behavior of the default 1:N relationships. And just remember it&#8217;s the relationships that are referred to as Parental that are the ones you want to customize. There are plenty of relationships that are described as <strong>System</strong> (I didn&#8217;t show any of these in the example above, but they&#8217;re there!), and the system relationships cannot be customized.
</p>
<h2>Sharing and Security Roles<br />
</h2>
<p>What this has to do with security roles is that <strong>Share</strong> is a security privilege. The default security roles have pretty generous sharing privileges, as you can see from the following figure. Salesperson is one of the least generous security roles and even it has organization level sharing privilege.
</p>
<p><img src="http://www.dynamicscrmtrickbag.com/wp-content/uploads/2011/12/120311_1810_Customizing4.png" alt=""/>
	</p>
<p>You could customize this, for example by dialing the Share privilege on Account down to User-level (a yellow quarter pie-piece, obviously <span style="font-family:Wingdings">J</span> ), and then users would only be able to share records they owned. But if they could share a record, the cascading behavior is determined by the customizable behavior of the 1:N relationship.
</p></p>
]]></content:encoded>
			<wfw:commentRss>http://www.dynamicscrmtrickbag.com/2011/12/03/customizing-one-to-many-relationships/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Marketing Automation in Dynamics CRM</title>
		<link>http://www.dynamicscrmtrickbag.com/2011/12/03/marketing-automation-in-dynamics-crm/</link>
		<comments>http://www.dynamicscrmtrickbag.com/2011/12/03/marketing-automation-in-dynamics-crm/#comments</comments>
		<pubDate>Sat, 03 Dec 2011 15:32:27 +0000</pubDate>
		<dc:creator>Richard Knudson</dc:creator>
				<category><![CDATA[CRM Add-Ons]]></category>
		<category><![CDATA[Marketing]]></category>

		<guid isPermaLink="false">http://www.dynamicscrmtrickbag.com/2011/12/03/marketing-automation-in-dynamics-crm/</guid>
		<description><![CDATA[December 3, 2011 - I recently began using ClickDimensions for my crm-centric marketing automation solution, and it's been working great. This article summarizes the primary benefits of marketing automation add-ons for Dynamics CRM, and uses ClickDimenions examples to illustrate. Enjoy!]]></description>
			<content:encoded><![CDATA[<p>I&#8217;m not happy with the title of this article. But I&#8217;m less unhappy with it than any of the alternatives I could come up with, such as <em>E-mail Marketing, Web Analytics, Nurture Marketing, Lead Scoring, Social Discovery and Demand Generation in Dynamics CRM</em>.
</p>
<p>So I&#8217;ll go with the short version and emphasize the <strong>IN Dynamics CRM</strong> part. For a good overview discussion of marketing automation, visit the <a href="http://en.wikipedia.org/wiki/Marketing_automation">Wikipedia page for marketing automation</a>.
</p>
<p>Anyway, however you refer to it, in my view it&#8217;s the single most important category of Dynamics CRM add-on solutions.
</p>
<p>In this article I&#8217;ll provide a mini-case study of my early experiences with <a href="http://www.clickdimensions.com/">ClickDimensions</a>, which is one of the leading providers in the space and which I recently began using.  If you&#8217;re new to the topic or new to Dynamics CRM, you might wonder why you&#8217;d need something like this at all. After all, Dynamics CRM has a marketing module – why can&#8217;t you just use the built-in features?
</p>
<p>That&#8217;s a good question, and to answer it I&#8217;ll list the most important requirements that would cause a business to consider purchasing a marketing automation add-on to Dynamics CRM. You can think of this as a laundry list of &#8220;things you&#8217;d like to do in Dynamics CRM, that are not available in the base feature set, and that marketing automation add-ons can do&#8221;.
</p>
<h2>E-mail Tracking<br />
</h2>
<p>This is probably the most important thing these add-ons provide that you don&#8217;t get out of the box in Dynamics CRM. This <em>is</em> a standard feature in standalone applications like Constant Contact: after sending an e-mail, you can see who opened it, who clicked through, which pages they clicked to, which e-mails were undeliverable and who wants to opt out, as well as the date and time all of these events happened. The obvious problem with standalone applications is … they&#8217;re standalone. Constant Contact does a great job with e-mail marketing, but it&#8217;s not a CRM and it&#8217;s not where your customer records live, so you have to spend a lot of tedious time exporting, importing and moving records back and forth. With e-mail tracking integrated in your CRM, you can send an e-mail and then see statistics like these:
</p>
<p><img src="http://www.dynamicscrmtrickbag.com/wp-content/uploads/2011/12/120311_1532_MarketingAu1.png" alt=""/>Those are summary statistics, but even more important is what they&#8217;re a <em>summary of</em>: special activity records, stored in CRM and associated directly with your customer records. The following figure illustrates one of my favorite ClickDimension activity types, the <strong>Click</strong>. You can see they&#8217;re associated with contacts, we know what page they visited, the time they clicked and so forth:
</p>
<p><img src="http://www.dynamicscrmtrickbag.com/wp-content/uploads/2011/12/120311_1532_MarketingAu2.png" alt=""/>
	</p>
<p>This is the &#8220;big bang&#8221; of CRM-centric marketing automation: if you organization combines email marketing with direct sales follow up, providing your sales team with actionable information like this can improve your selling effectiveness more than any other single factor.
</p>
<p>
 </p>
<h2>E-Mail Template Design<br />
</h2>
<p><strong>E-mail design</strong> is another feature gap addressed by marketing automation add-ons. Dynamics CRM does have an e-mail template editor…but it&#8217;s very limited and only supports very basic text editing capabilities. If you want to create really nice HTML templates and don&#8217;t want to write the HTML from scratch, you&#8217;ll need advanced template editing features, and this is a checklist item for CRM marketing automation add-ons. The ClickDimension template editor is rock-solid, and as you can see from the following figure, about as full-featured as you&#8217;re likely to have time for.
</p>
<p style="margin-left: 18pt"><img src="http://www.dynamicscrmtrickbag.com/wp-content/uploads/2011/12/120311_1532_MarketingAu3.png" alt=""/>
	</p>
<h2>Analytics<br />
</h2>
<p>I&#8217;ve been using various forms of marketing automation add-ons in CRM for several years, and when I first started, the analytics features were the ones I cared the least about. Basically, what these give you is the ability to track web site analytics  – visits, page views, and the like. And just as with email tracking, the big advantage of having this inside CRM is the ability to track activities directly back to your lead and customer records. So while it&#8217;s true Google Analytics will outpoint any of these add-ons in a feature-walk, tying visits and views back to my contact records is not something Google does, nor is it something I&#8217;d want them doing!
</p>
<p>Here&#8217;s a good example of the power of web analytics integrated in CRM: the following figure is a dashboard in my company&#8217;s production Dynamics CRM. Both charts are daily time series for the last 30 days of a custom ClickDimensions entity, <strong>Page Views</strong>. The top one is all page views, and is similar to what you might see in external analytics apps. But the bottom one is filtered to only show page views tied back to contact records. Notice the two spikes I&#8217;ve highlighted. Those are on the same days as the most recent two sends of my email newsletter. Once you see this, it&#8217;s obvious that you should expect to get a lot more non-anonymous page views immediately after an email blast goes out…but it&#8217;s nice to see that it actually happens that way!
</p>
<p><img src="http://www.dynamicscrmtrickbag.com/wp-content/uploads/2011/12/120311_1532_MarketingAu4.png" alt=""/>
	</p>
<h2>E-mail Deliverability<br />
</h2>
<p>This is a pretty specialized area, and the more emails you send, the more important it is. For lots of reasons – avoiding heavy load on your email server, getting tagged as a spammer and so forth – most email marketers prefer to outsource delivery to specialists. Here&#8217;s a link to the ClickDimensions page that describes their <a href="http://www.clickdimensions.com/tour/email-marketing.asp">deliverability features</a>.
</p>
<p>In this area, ClickDimensions has a nice feature that plugs <a href="http://spamassassin.apache.org/">Spam Assassin</a> directly into CRM. For example, the following figure shows the window that pops up when I send a test email for a campaign.
</p>
<p>
 </p>
<p><img src="http://www.dynamicscrmtrickbag.com/wp-content/uploads/2011/12/120311_1532_MarketingAu5.png" alt=""/>
	</p>
<p>I&#8217;m not a Spam Assassin SME, but with some tweaking based on advice from ClickDimension&#8217;s support folks, I was able to get my Spam Score down to 2.5 from 4.5, and when it comes to your Spam Score, lower is better.
</p>
<h2>Internet Lead Capture Forms and Surveys<br />
</h2>
<p>You might think that features like these are the marketing automation version of feature bloat, but once you start using one of these add-ons it turns out there are lots of benefits of going all-in. The basic idea is to track as much interaction as you can back to CRM leads, contacts and accounts. Filling out a form on your web site and responding to a survey are two important interaction channels, and if a marketing automation add-on provides these features you can track back responses much more easily than with the ala carte approach, using form capture, survey tools and the like from lots of different vendors, none of which track back to CRM records.
</p>
<p>In my most recent e-mail newsletter, I included a link to a survey I built with the ClickDimensions survey designer which like all of their functionality is available within Dynamics CRM. I called it the Trick Bag Content Survey, and each question allowed a respondent to indicate their preference, on a 1-10 scale, for a topic area.
</p>
<p>The following figures highlight several of the advantages of the CRM-centric approach of these marketing automation add-ons:
</p>
<p><img src="http://www.dynamicscrmtrickbag.com/wp-content/uploads/2011/12/120311_1532_MarketingAu6.png" alt=""/>
	</p>
<ul>
<li><strong>Custom view for Survey Answers entity</strong>. ClickDimensions is installed as a Dynamics CRM 2011 managed solution, and several custom entities are included as solution components. One of these is the <strong>Survey Answers</strong> entity, highlighted in the figure. The entity is customizable, and you can see the custom view I created to include just the answers to the survey I deployed through my newsletter.
</li>
<li><strong>Question responses scored and associated with customer records</strong>. The highlighted column includes enough of the contact field to demonstrate the power of the crm-centric approach: survey answers, submitted forms, e-mail responses, site visits, page views…these and other interactions can all be tied back to customer records.
</li>
</ul>
<p>And to assist in the visual display of this quantitative information (paraphrasing from <a href="http://www.edwardtufte.com/tufte/books_vdqi">http://www.edwardtufte.com/tufte/books_vdqi</a> ) I created a custom chart:
</p>
<p><img src="http://www.dynamicscrmtrickbag.com/wp-content/uploads/2011/12/120311_1532_MarketingAu7.png" alt=""/>
	</p>
<p>Several Trick Bag readers have correctly emphasized the importance of avoiding gratuitous use of charts and dashboards in CRM. I think this chart is a good example of how visualization really <em>can</em> add value: there&#8217;s really no way from the grid alone to extract the information conveyed by the chart, and a report would be too much information.
</p>
<p>And besides being the best way to present these survey results, the information communicated by the chart is actionable: I guess I better write more articles about workflows, charts and dashboards, and dialogs!
</p>
<p style="margin-left: 18pt">
 </p>
<p>
 </p>
<p>
 </p>
<p>
 </p>
<p>
 </p>
<p>
 </p>
]]></content:encoded>
			<wfw:commentRss>http://www.dynamicscrmtrickbag.com/2011/12/03/marketing-automation-in-dynamics-crm/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>CRM 2011 Dialogs: Should you use Query CRM Data, or Lookup?</title>
		<link>http://www.dynamicscrmtrickbag.com/2011/11/30/crm-2011-dialogs-should-you-use-query-crm-data-or-lookup/</link>
		<comments>http://www.dynamicscrmtrickbag.com/2011/11/30/crm-2011-dialogs-should-you-use-query-crm-data-or-lookup/#comments</comments>
		<pubDate>Thu, 01 Dec 2011 00:43:01 +0000</pubDate>
		<dc:creator>Richard Knudson</dc:creator>
				<category><![CDATA[CRM 2011]]></category>
		<category><![CDATA[CRM 2011 Business Process Book]]></category>
		<category><![CDATA[CRM 2011 R7]]></category>

		<guid isPermaLink="false">http://www.dynamicscrmtrickbag.com/2011/11/30/crm-2011-dialogs-should-you-use-query-crm-data-or-lookup/</guid>
		<description><![CDATA[November 30, 2011 - Now that we've got two ways of looking up records in dialog processes, how do you know which approach is better? Here's a short article with some guidance on that topic, as well as some reflections on why your choice of record type is not as important for dialogs as for workflows. Enjoy!]]></description>
			<content:encoded><![CDATA[<h2>When Looking up Records: Query CRM Data, or Lookup?</h2>
<div>If you need to look up records in a Dynamics CRM 2011 dialog process, there are two basic approaches you can use. In <a href="http://www.dynamicscrmtrickbag.com/2011/11/30/crm-2011-dialog-drill-down-on-lookups/">Drilling Down on Lookups</a>, I discussed how to do this using the Lookup response type, introduced in the November 2011 service update. In several other articles in the <a href="http://www.dynamicscrmtrickbag.com/category/crm2011_book/">CRM 2011 Business Process Book</a> category, I talked about how to do this with queries, using the <strong>Query CRM Data</strong> action.</div>
<div>Which approach is better? Well, as always with a question like that, the correct answer is &#8220;it depends.&#8221;</div>
<div>To review, the <strong>Lookup response type</strong> uses the system <strong>Look Up</strong> view defined for the entity you want to look up. In some situations this might be what you want: users can work with it interactively, search on any columns included as view columns in the <strong>Quick Find</strong> view, and so forth. On the other hand, this approach can only use the Look Up view defined for the entity; an important limitation of this approach is that you cannot provide a filtered list to perform the look up against.</div>
<div>In contrast, the <strong>Query CRM Data</strong> approach presents the user with an option set populated with data returned from a query. The option set is less flexible in some ways: you cannot search or sort, and only have access to the records returned by the query. Also, as we&#8217;ve seen, an option set is not a very good way to navigate hundreds, let alone thousands, of records! On the other hand, in contrast to using the Lookup response type, this approach does support filtered lookups. This is probably the biggest advantage of using queries, and leads to at least a couple of definitive guidelines:</div>
<ul>
<li>If you want users to be able to search and select from a look up of all active records, you must use the <strong>Lookup</strong> response type approach.</li>
<li>If you want to provide more structure to a look up and present users with pre-filtered or dynamically filtered lists to select from, you must use the <strong>Query CRM Data</strong> approach.</li>
</ul>
<div><img src="http://www.dynamicscrmtrickbag.com/wp-content/uploads/2011/11/120111_0043_CRM2011Dial1.png" alt="" /></div>
<h2>Querying CRM Data and CRM Data Relationships</h2>
<div>In the previous discussion of the <strong>Lookup</strong> response type, I described that approach as piggybacking off of existing entity relationships. It&#8217;s worth contrasting that dependence on <em>existing</em> data relationships with what you&#8217;ve just seen can be accomplished by querying data. With the <strong>Query CRM Data</strong> approach, you are not limited to existing relationships, and can in fact build a query for any record type you can get to through Advanced Find. You can see this in the <strong>Define Query</strong> dialog, such as the one illustrated here, where I&#8217;m passing a parameter, captured as a response, in to the FetchXML to make a dynamic query.</div>
<div><img src="http://www.dynamicscrmtrickbag.com/wp-content/uploads/2011/11/120111_0043_CRM2011Dial2.png" alt="" /></div>
<h2>Dialog Processes and Data Context</h2>
<div>Taking this a little further, the ability to query CRM data allows you to extend the <em>data context</em> of a dialog process well beyond what can be done in a workflow. The data context of a workflow process is entirely determined by the relationships that exist between the workflow&#8217;s primary entity and other entities in your Dynamics CRM. But because dialog processes can prompt a user with the results of a query against <em>any</em> record type, they don&#8217;t have the same limitation.</div>
<div></p>
<div>For example, a <em>workflow</em> process might be automatically triggered to send an auto-responder e-mail to a new lead created from a form submitted from your web site. But the information included in the e-mail will be limited to entities with a relationship to lead. And since the lead entity does not have built-in relationships to other entities such as sales literature or product you would not be able to include information from those record types without customizing the system. But a dialog process can build queries for any of these record types, extending its data context beyond the lead entity&#8217;s existing relationships and including virtually any information you need to include in a response.</div>
<div></p>
<div>When I first started working with dialog processes, I couldn&#8217;t quite figure out why it was generally harder to figure out which record type to write them for than it was for workflow processes. It seemed like half the time I couldn&#8217;t really come up with anything else so I&#8217;d just write them for the User entity. Now that I understand them better I realize why this was: it&#8217;s because with dialogs the choice of record type doesn&#8217;t matter as much. In a sense, dialogs are more forgiving than workflows: since you can extend the data context of a dialog process by allowing users to look up information in records not related to the dialog entity, you&#8217;ve got more leeway in your choice of the primary entity than you do for a workflow process.</div>
<div></p>
<div>I&#8217;m not saying the choice of an entity for a dialog isn&#8217;t important, and sometimes it&#8217;s just as obvious as it generally is for a workflow. For example, it would be an odd choice if you created a custom dialog process to convert <strong>Lead</strong> records, and wrote it for the <strong>Foo</strong> record type. But…if a foo record contained important information on <em>how</em> a lead should be converted, and you didn&#8217;t mind presenting users with a prompt to select the lead to convert, it might make sense, now that I think about it.</div>
</div>
</div>
</div>
]]></content:encoded>
			<wfw:commentRss>http://www.dynamicscrmtrickbag.com/2011/11/30/crm-2011-dialogs-should-you-use-query-crm-data-or-lookup/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
	</channel>
</rss>

