Archive for January, 2009

Who’s Linked In?

At the most recent DCRMUG meeting I showed a cool example of customizing the CRM Account form and using an IFRAME to display all of the Linkedin contacts for a specific Account record. I got the example from a blog post CRM MVP Matt Witteman made on the Dynamics CRM Team Blog. I’ve had a couple questions about it since so I’ll post the link to the blog post, and then the code.
 
 
Nice job, Matt!
 
Here’s the code, which needs to be in an html file stored on your CRM server. In Matt’s example he puts it in the ISV folder and calls it something like linkedin.html . This file will be the src of the IFRAME. So the IFRAME gets its display from the html file, which in turn calls the program running on the Linkedin server, passing the Account name as an argument.
 
To get this to work, I had to uncheck “Restrict cross-frame scripting”, and check “Pass record…parameters” for the IFRAME.
 
Matt’s article is more complete so I recommend you read it if you’re new to this kind of thing, but if you’re a wiley veteran or Ken Phelps, I’ll list the code next.
 
Richard Knudson – richardk@imginc.com
 

<html>

<head>

<script src=”http://www.linkedin.com/companyInsider?script&useBorder=no” type=”text/javascript”></script>

</head>

<body>

<center>

<span id=”getlinkedin”></span>

</center>

<script type=”text/javascript”>

var parentForm = parent.frames.document.crmForm;

new LinkedIn.CompanyInsiderBox(”getlinkedin”,parentForm.all.companyname.DataValue);

</script>

</body>

Leave a Comment

My Dynamics CRM 5 Wishlist

Not that I assume the Dynamics CRM product team hangs on my every blog post, but here’s my wish list of feature enhancements for Dynamics CRM 5.0:

·      Improvements to Views. You can use Advanced Find in Dynamics CRM 4.0 to find almost any data you need. You can filter on and include columns from entities related to each other using the great RDBMS features of CRM. But once you find the data you want, the actual data view itself isn’t very good. Here are two things they should do to improve views:

o   Ability to create groups and totals/sub-totals. Almost any database application has grouping and totals by group and overall, but not CRM! In SharePoint I can create a custom view on a list or library with all of the grouping and totaling I need; I think the SharePoint implementation makes a fine model for how to implement this. This grouping and totaling would solve another (related) problem with CRM 4 – namely how hard it is to get aggregate data about your entities. I shouldn’t have to export to Excel or create a marketing list just to find out how many Account or Contact records I have, but currently those are my best options unless I want to write some code.

o   Ability to dynamically filter a view. We should be able to create a view, expose it on an entity’s form using an IFRAME, and configure it to receive and filter on data from the current record. For an account, say, I could create a tab called Account Summary and have views (with groups and totals, of course!) of Opportunities, Orders and Invoices, all filtered for the current Account record. This might be a little harder, but it would be cool and would go a long way to countering the often-made and as I understand it correct contention that SalesForce.com has better dashboarding capabilities.

·     Internet Marketing. The “Internet Marketing” features included in the September Service Update for Dynamics CRM Online were an interesting experiment, but that’s about it. Besides being limited to CRM Online, the major limitations were: MS Live Ads only, a hardwired “Internet Advertising Campaign” type, and a few other things. What they should do is this: add a Landing Page entity, out of the box, that would have a many-to-many relationship to the Campaign entity. The Landing Page entity would have a URL attribute, and you could send out an email as a Campaign Activity and direct recipients to go to the landing page. If they click through and fill out the form on the page, a Campaign Response record gets created with a channel value of “Internet” nicely associated with the Campaign. For bonus points, things like the time they clicked, their IP address and so forth would be nice to have also.

If you’ve tried out the Internet Marketing features of CRM Online, the most promising feature (in my opinion) is the sweet landing pages Microsoft gives you tools to create. There’s no code required, the pages look great, Microsoft hosts the pages, and a response goes right into your CRM. (But as I mentioned above, that’s CRM Online only, and has all of the other limitations as well) Currently, in the on-premise edition of CRM 4, the fact that you have to write a bunch of code to capture information from a web form into your CRM really restricts the number of people who can do it, and it’s a critically important component of most organization’s marketing efforts – or at least it should be! So I think a good way for Microsoft to do this would be to extend the CRM Online landing page functionality to include it with on-premise 5.0, and allow us to link the Landing Pages we create to either our own on-premise ones, or to hosted ones we can create on a Microsoft site. This would really open up Internet Marketing functionality to lots of people who currently can’t do it, and it would be strategic for Microsoft also, since it would gently nudge customers a little further down the SaaS path.

·      Scheduled and “Batch” Workflows. I love the Dynamics CRM 4.0 workflow implementation. But two things I find myself wishing I could do is schedule a manual workflow, and run a manual workflow against more than 250 records at a time! I’m not exactly sure how this would work, but I can imagine a UI where an administrator could specify a schedule for when a workflow job would be run, and specify a saved view of records it would be run against.

 

·         A KPI entity. The view improvements I discussed previously would be helpful for creating “dashboard”-like functionality, but if you want real dashboard you need key performance indicators. Again, the SharePoint team has a nice model for this. In MOSS 2007, a KPI list is a special kind of list that can get its data from a specific view defined against an underlying SharePoint list. A record in the KPI list contains the goal values, and the measure (the actual data) can be a total, average, or some other aggregate function from the view. Heuristically, some rows in this KPI list might contain data like this:

Source Entity

Measure

View

Goal level 1

Goal level 2

Actual

Indicator

Opportunity

Actual Revenue

Q1

$100,000

$125,000

$137,500

 

Opportunity

Actual Revenue

Q2

$110,000

$135,000

$115,000

 

 

This kind of BI wouldn’t necessarily compete with Cognos, but not everybody needs that level of detail, and it would be a lot better than nothing!

·      Better integration with SharePoint, in a specific way. If you’re using CRM to manage customers, and you’re using SharePoint to manage web content, there are lots of times when you’ll want to offer those customers authenticated access to some of that content. But right now you have to jump through hoops to do this cleanly, and the coding effort required to implement what’s known as a “custom authentication provider” (which could essentially allow a user to access SharePoint content while authenticating against a Contact record in CRM) requires a significant development effort. I think this is essentially plumbing code (valuable plumbing, but plumbing nevertheless!) and that Microsoft should at the very least offer it as an add-on or a free download. (Like the CRM 4.0 Data Migration Manager, it wouldn’t be valuable to organizations if they didn’t have CRM and SharePoint.)

So that’s my (very) short list, as of mid February 2009. Maybe the Dynamics CRM team will drop some hints at Convergence, which is coming up in early March. Unfortunately, I can’t go this year (bummer!) so if you go, please shoot me an email and let me know what you find out.

And please let me know what you think by commenting on this post – what other new features should Microsoft add to the next release of Dynamics CRM?

Leave a Comment

Display a Google Map for an Account

Recently I delivered a private bootcamp for a consulting firm, and one of the students in that most excellent group embarassed me by finding a piece of information on my own site that I couldn’t find! It turns out she was authenticated on our Student Portal and this little nugget was a locked-down announcement on the portal. I was anonymous at the time and it wasn’t exposed outside. A little too well-hid, I thought to myself, so I re-used it for a blog post.
 
here’s the orignial post, from April of 2008: 
 
I’d been close on this a bunch of times but kept getting a script error (something like “GMap Application undefined…”). But then in San Francisco, Glen Willson of Millenium Systems showed me this code snippet that actually works! Here’s the note from Glen (with working jscript):
 
 
This is how I did it:  Made a new tab with an iFrame, added a custom bit value (yes or no radio buttons) called “shmap” and added this code as an onchange event.  Enjoy!!  …and don’t forget my credit on the web page!
 
if (crmForm.all.address1_postalcode.DataValue != null){
crmForm.all.IFRAME_gmap.src = “http://maps.google.com/maps?q=” +
crmForm.all.address1_line1.DataValue + “+” + crmForm.all.address1_city.DataValue + “,+” + crmForm.all.address1_postalcode.DataValue;
}
else
{
crmForm.all.IFRAME_gmap.src = “about:blank”
}
 
*******
 
There you have it. Thanks Glen — you rock!

Leave a Comment