Archive for June, 2009

Using Hyperlinks in Dynamics CRM 4

Hyperlinks come up in a lot of different contexts: included in emails, text links on a web page, and clickable graphics are just a few of the more common. In Dynamics CRM you can take advantage of them too, although sometimes it might not be so obvious how to do it.

I’ll give you two examples of how to use them here; there are plenty of others but these are the two methods I find myself and my customers using the most:

1. Add a hyperlink field to an entity’s form. If you look at the out-of-the-box Account form in Dynamics CRM you’ll notice a “web site” field. If you enter a URL in that field, a user can double-click on it to navigate to the site. A number of entities in CRM have this built in (Account, Contact and Competitor for example), but if you want to add a clickable URL field to a customizable entity or one of your own custom entities, it’s easy enough to do, following these steps:

a. Customize the entity in question (Click Settings, Customization, then Customize Entities. Locate the entity in the list and double-click it.)

b. Click Attributes, then click New. You should see a dialog titled “Attribute: New for <entity>”, where <entity> is whatever you’re customizing.

c. Name the new attribute and give it a Type of “nvarchar”, then select “URL” for the Format:

 landingpages

d. Save and close, then be sure to add the new attribute to the form for the entity, and publish the customizations. In the example I show here, I’ve added a clickable link to the form for a custom entity I use to keep track of Events. I called it “landing page”, and you can get an idea about how it works by looking at this screenshot:

 landingpages2

The way it’s implemented in Dynamics CRM, you actually have to double-click to navigate, so it behaves slightly differently than most hyperlinks, but in my experience users don’t complain too much about that.

 

2. Insert a hyperlink in an email template. This one is pretty well hidden, and it took me a while to realize it was even there! Suppose I’m creating an email template and I want to include a clickable hyperlink in it. In the following screenshot I’ve select the text for my company’s name and I want to insert a clickable link to our web site:

 landingpages3

Unless I’m missing it somewhere, there’s no menu command to let you do this! However, if you remember the keyboard shortcut you might often use in Outlook for the same thing – ctrl-k – and try it in this context, you’ll see that it works. Simply enter the URL you want a click on the text to navigate to, and you’re done:

 landingpages4

When I do this, however, I find that I still have to select the text afterwards and change its color to indicate to the reader it’s a link, since inserting the hyperlink doesn’t change its formatting in any way! There might be a default setting I could change, but so far I haven’t seen it – if you know how to fix that, please let me know!

Comments (2)

DCRMUG June Meeting Recordings Posted

Data Migration Manager and Internet Marketing

At the June meeting of the Dynamics CRM User Group, I presented on two topics: Internet Marketing in Dynamics CRM, and the Data Migration Manager.

Here are links to the summary pages for the respective topics:

I hope you find the information useful — and let me know if you have any questions!

By the way: I want to do a session at the July meeting on the general topic of “Mobility Solutions for Dynamics CRM” — I’m planning on researching some of the products and solutions available, but I’m looking for people with experience who can also discuss their experiences. Let me know if you have some experience and would like to present at the meeting. Tentative meeting date is set for July 23, 3:00 PM CDT. Of course we’d love to have you in person, but online is fine.

Richard – richardk@imginc.com

Leave a Comment

Internet Marketing in Dynamics CRM Online

I’ve written a few pieces on the general topic of Internet Marketing; you can see them all by selecting the “Internet” category for my blog. A good general introduction to the topic with a couple of videos is covered in this article.

At the June meeting of the Dynamics CRM User Group I’m going to present an updated session on this fast-changing area, I’ll review the new features of Dynamics CRM Online in some detail. I continue to be impressed by the new features the CRM Online team keeps adding! In the Internet Marketing (IM, for short) area I especially like the hsoted landing pages you can create. They’re way better than anything I could ever hope to create, although if you’re familiar with my design and creative skills you might think this is a pretty low bar. Here’s are two examples of IM pipelines I built for a client of mine (United Training — www.UnitedTraining.com — which has its production CRM on Dynamics CRM Online). 

The first is for a series of promotional seminars they’re using to drive demand for their ITIL training programs. Here’s the sweet landing page they can drive traffic to.

The second is for a similar webinar series for Dynamics CRM. Here’s the CRM Essentials Seminar Series landing page.

For either of these landing pages, if you fill out that form and click “register”, an “Internet Lead” record gets created in their CRM, and a campaign response gets created for an IM campaign. Gotta love those campaign responses!

If you attend the DCRMUG meeting on June 25 at 3:00 PM CDT I’ll go through a more complete how-to, discuss some of the pros and cons and alternative approaches. Visit www.DynamicsCRMUserGroup.com/register to register for the DCRMUG meeting.

Leave a Comment

Integrating Dynamics CRM 4 and SharePoint 2007

Excellent new Microsoft training class available now, Integrating Dynamics CRM and SharePoint

Full disclosure: I recently wrote this class for Microsoft. So I suppose I’m not exactly disinterested…but I actually do think it’s an excellent class and I suspect readers of this blog will be interested in it. So here’s the official landing page on the Microsoft Learning site for Course 80141, Integrating Microsoft Dynamics CRM 4 and Microsoft Office SharePoint 2007

If you’re a more or less regular reader of the Trick Bag you’ll know this is one of my favorite topics. I’ve written more than a few articles on this blog about it; you can see them all by selecting  ”SharePoint” from the Category drop-down on the right-hand side nav bar.

The course (and the accompanying book) has a “right tool for the job” theme:

  • SharePoint’s sweet spots are content and document management, collaboration, enterprise search, and internal/external web sites.
  • Dynamics CRM ships with out of the box support for sales force automation, marketing and service management; but where it really shines is as a platform for relational database applications.

Both are web server applications and can support an entirely browser-based user experience.  

Why Integrate?

SharePoint’s sold a lot more licenses than Dynamics CRM,  partly because it’s been in the market longer, and partly because it’s got a broader, more general purpose feature set.  Enterprises rolling out SharePoint will often deploy it to all or most of their desktops; Dynamics CRM tends to be more specifically deployed to sales, marketing and service areas.

CRM data are highly structured: so-called “entities” (accounts, contacts, leads, activities…) are related to one another, referential integrity is enforced, etc. SharePoint data are much less structured. Probably the most common use of SharePoint is to store documents in document libraries. Meta-data is typically used to describe those documents. You might have columns in a document library for “account” and “document type”, and since SharePoint is so good at search, this would make it easy for a user to get a list of all the proposals ever created for the Acme account. And even in small organizations, it doesn’t take long to accumulate hundreds of documents – P.O.’s, proposals, statements of work… —  relating to a single large account.

An example like this sheds light on one of the most useful integration points: SharePoint data as meta-data about Dynamics CRM records. Picture a Dynamics CRM account form with a tab for “SharePoint Search” which a user can click and see all or some of the documents stored in SharePoint that are related to the current account record. Once I started thinking of SharePoint as a repository of data about important CRM records I was surprised how often I came across requirements for this functionality.

I’d be interested to hear about your experience in this area.

Also: the courseware is good foundation content for custom workshops during which I train your team in the process of designing and building your integration solutions.  Let me know if you have questions — like I said, it’s one of my favorite topics!

Richard Knudson
richardk@imginc.com

Leave a Comment

Data Migration Manager and Configuration Workflows…

Go together like cold Negra Modelo and fresh Guacamole!

I recently visited Mexico City, and had the good fortune to stay in a hotel (the Fiesta Inn, in case you ever visit the Santa Fe district) that served the best guacamole I’ve ever tasted. It was even better if consumed with a couple cold Negra Modelos. As I enjoyed that particular combination, I also learned to enjoy another one: the Dynamics CRM 4.0 Data Migration Manager and automatic workflows to configure the account records I was migrating.

I recorded a video on the topic (the DMM and account configuration workflows, that is), and if you’d like to simply jump in and watch it, here’s the link:

Using the Data Migration Manager and Automatically Configuring Account Records

Background

Until recently, I’d had limited experience with the Dynamics CRM 4.0 Data Migration Manager (henceforth, DMM). Mainly I’d used it to migrate the sample data set you can download here. You’d expect it to work well with a sample data set designed for the purpose, and it does. A few weeks back I needed to use it for a real customer engagement…so I finally had to actually learn it. My impression from a recent meeting of the Dynamics CRM User Group is that not many people are using it, perhaps assuming that tools like the ones offered by Scribe Software are a practical requirement to migrate real data. I might have thought that before I learned how to use it but I don’t anymore. If you need to migrate data into Dynamics CRM 4 I encourage you to consider the DMM. Certainly it has the advantage of being free, and while there are plenty of things Scribe can do that the DMM cannot (e.g., real-time data integration applications), my guess is that for a wide class of data migration scenarios the DMM will do just fine.

Dynamics CRM 4.0 Data Migration Manager

The DMM is a standalone application. You run it on a PC with an Internet connection (or at least, with a connection to your CRM server), and you must be a system administrator to run it. It’s worthwhile comparing it to the Import Data Wizard, which is exposed from within the CRM interface, and can be used by any CRM user with sufficient permissions. Here’s a quick summary of the things the DMM can do that the Import Wizard cannot:

Feature Data Migration Manager Data Import Wizard
Import multiple file, relational data sets Yes No
Maintain owners of imported records Yes No
Maintain the historical value of dates records were created Yes No
Can import status and status reason values Yes No
Can create custom entities during import Yes No

 

These five features are important, and with the exception of the last one (which is a nice-to-have but maybe not a must), come pretty close to defining a baseline required feature set for an enterprise-capable data migration tool.

Here are the features I illustrate in the video:

  • Migrate a complex, relational data set. I show a data migration of Accounts, Contacts and activity (phone call) records. These are related to each other, and as you’ll see if you watch the video, the DMM is excellent at migrating complex data sets like this.
  • Maintain actual historical values of “created date” for migrated records. Unless you want to lose the dates records were created, this is a must-have feature, and the DMM handles it nicely.
  • Can create custom entities on the fly. As I said above, this might not be a must-have feature, but it sure is convenient!

 In some other videos I’ll focus more on some of the other important features.

Account Configuration Workflows

OK, what does any of this have to do with account configuration workflows? Well, strictly speaking, not much. But just as my favorite guacamole is better with Negra Modelo, my argument is that the DMM is better with one of these. The key thing is that if you have a published workflow triggered by “create record” for account (any entity, for that matter, but these are generally more valuable for account records), it doesn’t matter how a record is created – the workflow will always run.

In the example I show, the imported account records have values for the country they’re located in, and the U.S. records contain zip codes. I’ve got territories defined (using the out of the box CRM Territory entity) of these values: International, East, Central, West. My organization’s base currency is the U.S. dollar, and I’ve got additional currencies (Mexican Peso, Canadian dollar, and the Euro). Here’s the heuristic structure and logic of the workflow:

  • First, update any information that should be shared by all account records
  • Next, check to see if country=US
    • If so, check zip code value
      • If starts with 1,2,3 or 4, set Territory=”East”
      • If starts with 5 or 6, set Territory=”Central”
      • If starts with 7,8 or 9, set Territory=”West”
  • If country value <> US
    • Set Territory=”International”
    • Check country value
      • If MX, set default currency = Peso
      • If CA, set default currency = Canadian dollar
      • If GE, FR, EN, set default currency = Euro

As I said, it’s a relatively simple workflow, but it improves my account data a lot! After migrating the data, in the video I show how easy it is to create a graphical view of how your data are distributed across various categories. I show a pie chart of how my new accounts are distributed across territories, but I could just as easily do it for countries, currencies, or any other piece of data stored on the account records.

For more information…

At the Dynamics CRM User Group Meeting on June 25th, 2009, I’m going to give a more thorough presentation on the topic of the Data Migration Manager, so if you’re interested, please join us: register here.

Also: I’ve got a whole book on workflows, chock-full of examples, explanations, and tips & tricks. It’s available in print, downloadable, and even a cool new e-Book version for you Kindle readers. You can buy it from my lulu.com storefront, at http://stores.lulu.com/richardknudson 

Or if you prefer, you can get it on Amazon for the same price.

Cheers -

Richard – richardk@imginc.com

Comments (4)

Quote-centric Sales Process

It’s not always Opportunities that Drive the Sales Process

Business processes come in as many varieties as there are businesses, and in Dynamics CRM this is amply illustrated by the rich variety of workflows organizations implement to drive the sales process. Many of these sales process workflows are created for the Opportunity entity. This is appropriate, since it represents a “potential sale”, and when an opportunity gets closed out with a status of “Won”, well…that’s a closed sale. An entire sales process might be built entirely around opportunities: tasks get assigned, approvals are required, proposals get delivered. One characteristic implementation uses workflow “stages” to represent the stages of a sales process, and to assign various tasks (create a proposal, meet with the client…) in each stage. A workflow can be made to wait in a stage until required tasks are completed, and a sales pipeline report might the total potential revenue across all the open opportunities in the various sales stages.

But while the Opportunity entity is important, it’s only one of several convenient out of the box entities you can use to build your overall sales process. The others, more or less in order of how they fit into the Dynamics CRM pipeline, are:

  • Quote. If you have a formal process for presenting a quote, proposal, bid or whatever you call it, that’s what the “Quote” entity’s for in Dynamics CRM.
  • Order. If you need to alert the production or shipping crew when a sale is made, you can use the “Order” entity for that. If you’re fully bought in to the CRM pipeline, you can have CRM create the Order record automatically when a customer accepts one of those quote records.
  • Invoice. Need a record for accounting? Few organizations use CRM as an accounting system, but plenty of them use the “Invoice” entity in Dynamics CRM for historical reporting on sales, and some build ERP integrations, so accounting can maintain invoices in the system of record, and the sales team can still see everything in CRM.

It’s easy to get in the habit of thinking of a simplistic CRM sales process, like this:

Opportunity -> Quote -> Order -> Invoice

It’s not correct, however; the platform is actually much more flexible than that. I’ll show an example of a workflow here that makes quotes the center of the action. Quotes are good for scenarios like this: submit quote -> negotiate -> revise quote -> re-submit, etc. – and they give you the ability to track all of these negotiations and resubmissions.

Plus, quotes are part and parcel of the sales process: one can be automatically created from an opportunity record, and when it is, it’s a “child” record of the opportunity. The approach in this workflow will exploit that relationship: I’ll write the workflow for the Quote entity; it will check to see if the quote is related to an opportunity, and if it is, the workflow will update the parent opportunity record so we will always have an accurate pipeline for reporting services.

How it Works

This workflow requires one customization of the Opportunity entity: there’s a Sales Stage picklist attribute that I customized to have the following values:

  • 1. Qualify Opportunity
  • 2. Draft Quote
  • 3. Active Quote

As I mentioned, the workflow is written on the Quote entity, and will run automatically when a new quote record is created and when the status of a quote record changes; it’s actually relatively simple. Here’s what it looks like:

 quoteworkflow1

Here are the most important points of the workflow:

  • 1. Since quote records can be but are not required to be created from an opportunity, we start by checking whether or not this quote record has a parent opportunity.The Quote entity (like the Order and Invoice entities as well) has an attribute called “Opportunity” – that’s what this is for. I use the condition “If <something> contains data” all the time. In this case the <something> is this attribute, and the way I wrote this workflow, the rest of it will run if the condition is met (this quote is related to an opportunity), otherwise, not.
  • 2. Next, I’ve got a conditional block that checks the status of the quote. Quotes start out in “draft” status, and what this workflow does in that case is update the (parent) opportunity record, setting the value of Sales Stage (described above) to the appropriate value.

 Here’s the key point: you can’t write this workflow on Opportunity, since parent records don’t know anything about child records in the context of a workflow. But child records know lots about parent records, so these Update Record actions can really make any changes to the parent opportunity record we need them to!  

Summary

This is a relatively simple workflow, but it illustrates a general point: if your sales process involves more than just the Opportunity entity, you need to write one (or more) workflows for the child entities Quote, Order and Invoice. For example, if you create an Order record when a Quote is accepted, you might need to also write an automatic workflow like this on Order. That might be slightly complicated by the possibility of the Opportunity being closed at that point: how can a workflow update a closed (won or lost) Opportunity record? But let’s take this one stage at a time and leave that problem for another day. And you can quote me on that.

And if you like this one…

I’ve got a whole book on workflows, chock-full of examples, explanations, and tips & tricks. It’s available in print, downloadable, and even a cool new e-Book version for you Kindle readers. You can buy it from my lulu.com storefront, at http://stores.lulu.com/richardknudson 

Or if you prefer, you can get it on Amazon for the same price.

Cheers -

Richard – richardk@imginc.com

Leave a Comment

Who Needs Rosetta Stone?

Learn Spanish and Have Fun, the Dynamics CRM 4.0 Way

Recently I had the privilege to conduct a Dynamics CRM 4.0 training session in Mexico City for an enterprise client of mine. I’ve never learned Spanish, and my son Jack’s fluency in the language didn’t help me much in my new attempt; apparently his inherited instructor gene is recessive. I’d intended to buy Rosetta Stone to do a crash course, but never quite got around to it.

So, I decided to kill two birds with one stone, and learn as much Spanish as I could with Dynamics CRM 4.0. Here’s my story.

Dynamics CRM 4.0 Language Packs – Multi-Lingual Out of the Box

Dynamics CRM 4 supports multiple languages almost out of the box with what we call “language packs”. A CRM 4.0 deployment has a base language baked into its license key, but you can drop a language pack on top of your base language and give users the ability to toggle the CRM user interface back and forth between the base language and any language added with a language pack. Language packs are free (they don’t do you much good without Dynamics CRM 4.0!), and you can download them from here: http://www.microsoft.com/downloads/details.aspx?FamilyId=50761E58-6040-4CF3-853A-F5AB535F7194&displaylang=en

To turn one on, follow these steps. (one language at a time, I’ll use Spanish for my example):

  • 1. Download the language pack onto your CRM server machine.
  • 2. Run the setup program. The file name of the Spanish language pack setup program is MUISetup_3082_i386.msi. The “3082″ part identifies Spanish as the language (English is 1033 in case you wondered.) Just double-click it and everything else is automatic.
  • 3. After installing the language pack on the server it needs to be “enabled” from within CRM. Assuming you’ve got sufficient privileges (like the System Administrator security role), click Settings, Administration, then Languages. You should see the language you installed available for selection in the list. “Enable” it for your users by selecting the checkbox, and clicking Apply. (it takes a few minutes to enable the language, so plan ahead and make sure you have something productive to do at this point, such as visiting www.lulu.com/richardknudson and purchasing a fresh copy of my book on CRM 4.0 workflows) Here’s what the Language Settings dialog looks like with Spanish enabled:

 lp_1

 That’s pretty much all you need to do, as long as you’re using the web client. (the Outlook client requires a little more work – more on that in a separate article).

Now, any user can go to their Personal Options (Tools, Options, then click on the Languages tab) and select either the base language or the newly available language for their “User Interface Language” or their “Help Language”. (more discussion later on that distinction between the UI and help languages.)

This is a personal option, remember, so once a language pack is enabled, all users have the option of toggling back and forth between languages. Here’s what the languages tab looks like:

lp_2

Immediately after selecting the language in personal options, the entire out of the box CRM UI switches to the selected language. Here’s what the web client looks like in Spanish, with the Ventas are of the site map selected:

lp_3

One of the primary limitations of this method of learning a foreign language is that you develop a somewhat limited and very specific vocabulary. For example, here’s a more or less complete list of the nouns I know in Spanish, and their English equivalents:

Contactos Contacts
Cuentas Accounts
Clientas potenciales Leads
Opportunidades Opportunities
Ofertas Quotes
Pedidos Orders
Facturas Invoices
Casos Cases
Competidores Competitors
Productos Products
Docmentacion de ventas Sales Literature
Knowledge Base Knowledge Base
Contractos Contracts

 I also learned a relatively limited number of interesting adverbs (nouns that describe verbs):

Tarea Task
Fax Fax
Llamada de telefono Phone Call
Correo electronico E-mail
Carta Letter
Cita Appointment
Actividad de servicio Service activity
Respuesta de campana Campaign response

 With just a little more study, I reasoned my way to a wider vocabulary. Here are just a few examples:

  • When you make a nuevo ofertas and click Guardar , it has an Estado of Borrador.
  • Both Campanas and Campanas expres can have respuesta de campanas. Both can also have activadades de la campana, but campanas expres can only have uno of those.
  • Trabajo means “work”, and flujos means “flow”.

How fun is this?

On a more serious note, one of the really cool things about the out of the box experience is the nice job the CRM team did at translating the standard CRM reports. One of my favorite examples of this is in the reports for transaction entities such as Ofertas, Pedidos and Facturas (quotes, orders, invoices). From the standard forms for these entities you can run a nice report the takes very little (sometimes none) customization to share with clients. These translate 100% with the out of the box language packs. Here’s an example of what it looks like when you open a Pedidos forma and select Pedido from the Informes pull-down menu:

lp_4

Handy Tools for Translating Custom Entities

You might wonder how custom entities get translated. If I create a custom entity called “Event”, how will the out of the box Spanish language pack translate it? The answer is, it won’t. All customizations must be performed in the base language (in my example, English), and if I have custom entities and toggle the UI into Spanish, my custom entities will still display in English. So if that’s as far as I go, I (and all my users) will have a mixed language experience.

There’s no magic AI tool that will translate everything for you, but if you have a translator, you can use the Export Labels for Translation and Import Labels for Translation utilities to make the translator’s job quite easy. Here’s an example to show how these work:

  • 1. I created a custom entity called “Event”. (Remember, as I mentioned above, all customizations must be created in the base language; this means that if your base language is English, you cannot directly create the custom entity in Spanish)
  • 2. I exported the labels for translation (click Settings, Customization, Export Labels…). This creates a zipped up XML file with the default name of CRMCustomizations.zip. I unzipped this and used Excel to edit the Excel-editable xml file it conveniently creates. Here’s what it looks like:

  lp_5

  • 3. In the figure I’ve selected the “localized labels” tab, which contains the things that need to be translated. The labels in column c are the base language labels, which by definition won’t be empty. So all you need to do is locate the empty rows in column d (the Spanish labels in my example). These will be the non-translated labels for your custom entities, so all you have to do is fill them in, save, import the file back in, and publish. Presto – when I toggle to Spanish now, my Evento forma looks like this:

 lp_61

Notice that not only the more obvious labels (form display labels, say) can be translated, but also things like pick-list values. In the xml translation file, there was an empty column next to the “Other” value for Locacion de Evento, so I cleverly added “Otro” there.   

Granted, I only had one custom entity to translate for this example. During my flight to Mexico City I was seated next to a high-school girl from Berwyn and she graciously helped me with my translations. It only took about ten minutes; a more rigorous approach would of course require allocating some time & budget for a real translator, but the important point is that the translation effort doesn’t require any CRM knowledge.

Comments (3)