Welcome to MSDN Blogs Sign in | Join | Help

Microsoft Dynamics CRM Online Team Blog

This blog is focused on Microsoft Dynamics CRM Online (crm.dynamics.com).

News

  • The views expressed in this blog are those of the individual and do not necessarily represent those of Microsoft. This information is provided by way of general information only and should not be relied on without obtaining independent expert advice. These postings are provided "AS IS" with no warranties and confer no rights. You assume all risk for your use.
CRM Sample Data – Product Fix

Have you imported the CRM Sample Data (YES, it works with CRM Online) and tried to add products to an opportunity?  Nothing there!  You look and see the products have been imported but notice the warning:

image

There are 295 products added as a part of the sample data.  You cannot set the default price list using the Bulk Edit feature so manual is your option.  Do you want to make 295 manual updates?  Neither did I.  So I investigated and determined the missing link for Products in the sample data, Price List Item.  I should have just made the changes manually.  It would have taken less time.  But then there would not be a proper fix / enhancement for you, our partners, customers, and prospects.  :)

In order to properly set up a Product in CRM you need to follow a hierarchical process as illustrated in the application (and screenshot below).
Product Catalog setup

  1. Create any Discount Lists (not required)
     image
  2. Create your Unit Groups (required)
    Unit Group 
    Units Unit Details
  3. Create your Price Lists (required)
    image Retail - Price List Item Details 
    image Wholesale - Price List Item Details
  4. Create your Products (required)
    Product

 

 

 

 

 

 

 

 

So assuming you have already loaded all the Microsoft CRM Sample data, you will now need to import the Unit Groups (identified in product.csv), update the Products to properly set these values and finally the Price List Items for each product.  Importing the Unit Groups was rather easy.  You simply needed to create a file to import Unit Group (name) and baseuomname.  The result is show below.
image

Next we need to update the Products to reflect the proper Unit (Not Default Unit) based on the Product.csv import file.  The easiest way to do this is to delete the Products (295) from CRM.  You will receive errors if the Products are associated with an Opportunity, so go into the Opportunities and remove the products (the original import does not have products – these would only be here if you fixed the products and added them to opportunities yourself).

Finally we need to add Price List Items for each product for each Price List.  In order to update the Default Price List lookup for each product you will need to import Price List Items.  If you were to manually create Price List Items for the Retail price list, the screen in CRM is as follows.
Price List Item

Viewing this screen helps us determine what data elements our import file should contain.  When using the Data Migration Manager to test this import process I discovered the following:

  • When mapping picklist values you must use the picklist ID not the value (different than the import wizard)
    • The picklist ID for a Quantity Selling Option value of “No Control” = 1 (not 0 as I had expected) – reference: SDK
    • The picklist ID for a Pricing Method value of “Currency Amount” = 1 (not 0 as I had expected) – used logic from above as you cannot access these attributes in CRM to confirm
  • The required Rounding attributes are only required if the Pricing Method is a value other than Currency Method

 

 

 

For the purpose of this post I uploaded Price List Items for the Wholesale Price List for each Product.

I took all my learning's from this process and created the following import files and data maps to bring it all together.  Simply download the zip file, extract, and import the files using their associated data maps (assuming you have the DMM installed and pointing to your CRM environment – if not reinstall).

  1. Import unitgroup using the UnitGroup DataMap
  2. Import product and price list item_wholesale using the Products_PriceListItem DataMap

Hopefully this will add value to each of your demo environments and possibly provide some better understanding how Products can be imported.

Enjoy!

-Eric Boocock

Making Your Existing Email Address Your Windows Live ID

Let’s say you want to invite your new users to CRM Online using their corporate email address, however you are not sure if their corporate email address is their Windows Live ID (WLID).  Why would I do this?  Well if you send the invite to a Windows Live account (like @live.com or @hotmail.com) the invitation will be delivered to that Hotmail account and they may not monitor it regularly, thus thinking they did not receive an invite or being unaware that they were invited.  The easiest way to ensure your users get their invite successfully is to instruct them to associate their corporate email address to WLID.  The following process illustrates exactly how to do this.

  1. Invite the user using their corporate email address.
  2. When the user receives the email address, click on the link to accept the invitation.
    User email invitation
  3. Click on Get a Windows Live ID
    WLID Sign In
  4. Enter your corporate email address and designate a password (this DOES NOT have to be your email providers password, rather you are setting a password for the new WLID), security question and enter the captcha phrase, click Continue
    WLID Sign Up

You now have associated your corporate email address to a WLID and will be able to successfully accept the CRM invitation by logging in with this newly created WLID email address and password.

- Eric Boocock

Auto-unsubscribe in CRM Online

In Microsoft Dynamics CRM there is a feature to automatically set the Do Not Email flag for a contact if the click on an Unsubscribe link in a CRM generated email.  In order to enable this functionality, navigate to Settings > Administration > System Settings.  Click on the Marketing tab and select Yes for the two options in the last section and indicate an unsubscribe template as shown below.
Auto-unsubscribe feature

Recently I had a customer who informed me that this does not work in CRM Online.  So I decided to test.  In order to test this functionality I started a mail merge from a contact record in CRM.
Mail Merge from Actions menu

I merged to Email and selected and Organizational mail merge template.
Mail Merge options

Start the Word mail merge process by confirming the recipients.  Click OK.Word mail merge

Click on Step 1 of 3 to Preview the merge.  If you have multiple recipients you can scroll through them to confirm accuracy.Preview mail merge

Click on Step 2 of 3 to Complete the merge and click on Electronic Mail.  Add a subject line for the emails and click OK.Email result

In the Create CRM activities dialog window, click on the second option to Create Microsoft Dynamics CRM activities and click on the checkbox to include an Unsubscribe link in the email.Create CRM activities

Click OK and complete the merge.
Finish merge

The resultant email is displayed below (note the fancy new O14 UI).  I clicked on the unsubscribe link and the following email was created.
Mail merged email resultunsubscribe back to CRM

I sent the email and the received email was automatically tracked in CRM (since it was generated in CRM) under the contact record it was regarding.
auto-tracked email response unsubscribe response in CRM history

So since the unsubscribe email was received the Do Not Allow email flag should be set but as shown below is not.Do Not Allow email not set

So to resolve this issue I created a simple workflow that runs when an Email is created and checks to see if the description contains “UNSUBSCRIBE”.  If it does it will send the Unsubscribe acknowledgement email template to the contact and update the Email and Bulk Email flags to Do Not Allow.
Set unsubscribe WF
Set email response propertiesContact...Set Properties

So I created another mail merge (and this time chose the Happy Birthday template) and clicked on the unsubscribe link.Second email merge

The response email was automatically tracked in CRM (again because it originated from CRM).
Unsubscribe response tracked in CRM

The workflow ran automatically and update the contact record to Do Not Allow Emails or Bulk Emails and sent the unsubscribe acknowledgement to the contact.
Do Not Allow email flags set

I have posted this workflow here so you can download and import into your CRM Online organization.

- Eric Boocock

eService Accelerator for CRM Online - Video

The Accelerators for Microsoft Dynamics CRM provided additional functionality for your CRM application. Please see the below links if you are not already familiar with them.

I’m did some research into modifications to the eService Accelerator to work with CRM Online. The eService Accelerator provides a sample portal that you can customize. The portal supports members of users and allows them to create customer service cases inside a Microsoft Dynamics CRM Org.

Some of the areas that required changes including modifying workflows, code changes to the portal, and how to invite CRM contacts to the portal site.

See eService Accelerator - CRM Online for a video that demos the portal and discuss the changes.

Also check out these blogs that discuss the Accelerators, if your not familiar with them already.

Accelerators Review

Event Management

Introduction

eService Accelerator

cheers
-jonw

Protected Mode Settings in IE

The IE Protected Mode Settings can sometimes cause you to get pop-up blocker messages when opening CRM forms.  Understanding IE Protected Mode . Sometimes your IT security policy might to turn this on.

If you see pop-blocker messages, try this to prevent them.

 

PM

You’ll also want to make sure you’ve added your url to the trusted sites.

 

TrustedSites

cheers
-jonw

Business Data Auditing Accelerator for Microsoft Dynamics CRM Online

The Business Data Auditing Accelerator provides basic audit capabilities for organizations using Microsoft Dynamics CRM. The accelerator takes a snapshot of a record whenever the relevant event occurs within the system such as Create, Update, Assign and Delete. Through workflow, auditing can be configured for any entity and any trigger event.
NOTE: This Accelerator will work with both the On-Premise and Online editions of Microsoft Dynamics CRM 4.0.

The following text is taken from the Business Productivity Business Data Auditing Accelerator Deployment Guide contained within the download for the accelerator.

********************************************************************************
How does the accelerator work?

The Business Data Auditing accelerator utilizes the workflow platform of Microsoft Dynamics CRM. Depending on what operations within your CRM system that you want to audit you can tailor the workflows accordingly. The basis of the accelerator is very simple: for each entity that is open to auditing there is a separate snapshot or audit entity, e.g. if you want to switch on auditing for accounts then there is an account audit entity supplied with the accelerator. Depending on what events you want to audit (create, update, assign or delete) then the workflows will create a copy of the current record in the relevant audit entity. This then means that you have a copy of each relevant change to the record during its life.

Because it is based on workflow definitions it is very easy to extend and configure exactly the information you wish to audit and what events within the system will trigger an audit to be recorded.

Out of the box the accelerator contains audit entity definitions and workflows to audit the following entities:

Account Contact Lead Case
Contract Opportunity Quote Order
Invoice Campaign User  

You can easily tailor the workflows to cater for any custom entities you have defined in your system (see the “How do I configure and extend the auditing capabilities?” section within the Business Productivity Business Data Auditing Accelerator Deployment Guide).
********************************************************************************

Since the accelerator uses custom entities to store the modifications and workflows to add the changed values to the custom entities it will work 100% with CRM Online.  I installed and tested the Business Data Auditing Accelerator with CRM Online.  Below are some screenshots of the functionality.

Contact record creation
CRM contact created

Workflow completed
audit workflow

 

Created by auditing entry logged
new audit entry

Auditing entity details showing creation details
auditing record

Updated contact to add address details
updated CRM contact 

Updated by auditing entry logged
updated by auditing entry

 

Updated by auditing entry details
updated by audit details

Another great accelerator to add to the list.

- Eric Boocock

Synchronizing and the Offline Client

One of the great features provided by Microsoft Dynamics CRM Online is the ability to take the application offline (i.e. work on a plane).  This capability is made possible by our S+S (software+services) vision of leveraging the best of services (CRM Online) coupled with the best of software (Outlook).  This is not possible in a SaaS (software as a service) model as locally installed software is required to achieve the functionality since an internet connection would not be available to serve up the hosted service.  The offline CRM Outlook client functionality is made possible by utilizing Outlook, a SQL Express database to store the offline CRM data and IIS on the laptop to render the web pages.  This is a competitive advantage of the Microsoft CRM offering that many of our competitors do not offer or are trying to replicate (thus proving the efficacy of the S+S vision).

Recently I was asked the following question:

“When I go Offline with the Outlook client and create a CRM Appointment, will it show up on my Outlook calendar?”

This was a question I recently received from one of our customers.  I believed the answer was yes but I wanted to investigate and take the scenario a bit further to include the core synchronization elements (Appointments, Contacts and Tasks).  So to test I:

  1. Installed the Offline Outlook Client.  There is only 1 Outlook client that supports both subscriptions (Professional – No Offline and Professional Plus – Offline).  In order to achieve the Offline capabilities you must select to install Outlook with Offline Access during the installation process.
    Online or Offline installation option
    NOTE: If you have the Outlook Client installed and upgrade your CRM Online subscription to Professional Plus you will need to uninstall and reinstall the Outlook Client in order to gain the offline functionality.  This WILL NOT delete any of the records previously synchronized with CRM and upon reinstall will maintain the CRM and Outlook record linkage.
  2. Went offline but clicking on the Go Offline button in the CRM toolbar.
  3. Created a CRM Appointment.
    CRM Appointment Created while Offline
  4. Confirmed the synchronization of the CRM Appointment to the offline Outlook Calendar.
    Confirmation of Outlook Appointment created while Offline
  5. Created a CRM Contact
    CRM Contact created while Offline
  6. Confirmed the synchronization of the CRM Contact to the offline Outlook Contacts.
    Confirmation of Outlook Contact created while Offline
  7. Created a CRM Task.
    CRM Task creation while Offline
  8. Confirmed the synchronization of the CRM Task to the offline Outlook Task.
    Confirmation of Outlook Task created while Offline
  9. Created a CRM Appointment in the CRM web client.
    Appointment created in web client while Outlook is offline
  10. Confirmed the Appointment created in CRM Offline has not synchronized to the web database.
    Confirmation that Offline Outlook Appointment does not exist in CRM Online (web) database
  11. Confirmed that the Appointment created in the CRM web client did not synchronize to the Offline Outlook client (only appt. created in step 3 exists).  Synchronized Outlook and CRM by clicking on the Go Online button in the CRM toolbar.
    Confirmation that webclient Appointment does not exist in Outlook.  Synchronizing changes made to offline and web client
  12. Confirmed the Offline created CRM Appointment and CRM Task were synchronized to the CRM web database.
    Task created while Offline now exists in CRM webclient.
  13. Confirmed the Online created Appointment was synchronized to the Outlook client.
    Appointment created while Offline now exists in CRM webclient.

Hopefully this will help you get a better understanding of how the offline synchronization process works with the Microsoft Dynamics CRM Outlook client.

- Eric Boocock

Achieving Single Sign On with CRM Online

My company uses Active Directory for Authentication but CRM Online uses Windows Live ID.  How can I have single sign on if there are 2 different logins.  The answer is quite simple.  Load the CRM Online Outlook client and during the configuration process select the checkbox to save your Windows Live ID username and password.
Save WLID password

The next time you open Outlook you will NOT be prompted for your Windows Live ID and WILL be connected to CRM Online.  This is not true single sign on but from a user perspective appears to be so.  Bear in mind this is accomplished by saving the credentials on the PC.  For more details on how true single sign on can be accomplished between on-premise and cloud based applications I recommend you check out “Geneva”.  More to come on how Geneva can be utilized with CRM Online.

- Eric Boocock

Discounted CRM Online access for Microsoft Partners

Microsoft offers CRM Online to our Partners at the reduced rate of $19 per user per month.  This offer has been available for some time but I still encounter partners who are not aware of the offering.  As a Microsoft partner your company probably has access to CRM that you could deploy and manage on-premise within your infrastructure.  If you do not have the time to deploy or resources available to host the on-premise CRM functionality I would suggest looking into this reduced price CRM Online offering.

Note:  This is currently only available for Partners in North America.

image

- Eric Boocock

CRM Implementation Guide Now on TechNet

Looks like our content / documentation teams have made the CRM 4.0 Implementation Guide (IG) available on TechNet.  The IG is comprised of 3 major areas:

  1. Planning Guide
  2. Installing Guide
  3. Operating and Maintaining Guide

There are numerous supporting files to help you be most effective in deploying Dynamics CRM.  Keep in mind that there will be large swaths of information in these guides that will not apply to CRM Online.  For instance, sections on server hardware requirements won’t be of concern to CRM Online users.  But, there’s still a lot of great information around requirements gathering, planning, deploying the Outlook Client and more.

Here’s the link:

http://technet.microsoft.com/en-us/library/dd979443.aspx

New Workflow Book

One of our Partners, Richard Knudson at The Information Management Group (IMG), just published the Second Edition of his book, Building Workflows in Microsoft Dynamics CRM 4.0.  He has published it as an Electronic Book available for download in PDF format, or in a just-in-time paperback format.  I go back a ways with Richard as he was the instructor for a couple of my initial CRM bootcamp training sessions.

His blog, Richard Knudson’s Dynamics CRM Trick Bag, is one of my RSS Feeds, too.

image

Architectural Model : CRM Online Extensions with Azure

Rarely will a  commercial off the self software system provide you 100% of the functionality that your business will need. The reason is there is just too many situations that would have to be accounted for. When purchasing COTS solutions, you’ll want to understand the flexibility of the platform it offers.

Microsoft Dynamics CRM Online provides a variety of ways to extend the functionality of your business applications via configuration/customization changes and the CRM Web Services.

Microsoft’s recently announced cloud platform, Azure, offers a number of services to help enable building extensions to your CRM Online solutions. While, you can certainly build out extensions on any hosted platform, the Azure platform will provided you with many benefits such as storage services, infrastructure and a familiar development platform. Another interesting aspect of Azure is the idea of running code in it’s own space ( i.e. Worker Role ). This code can run independent of a user so it’s excellent option for batch processing and responding to events. Web Roles in the Azure platform provide the functionality of applications that are user interactive.

BkUpDiagram

One such extension might be a cloud based back up application. In my example, the back up application would consist of 2 user interfaces and a backend process. The diagram above gives an over all view of the model. The first component is a user interface that allows the configuration information to be collected. This information would specify aspects such as which records to back up and when to run the back up. The second user interfaces would allow the user to access the data sets and perhaps re-instate the data or export out to external storage. Here’s an example of what the configuration user interface might like look like in CRM Online.

Config

Using the Azure platform, the application could take advantage of cloud data storage to hold the datasets.

This next image shows a user interface screen that would allow user to view the back up data sets.

DataSets

To summarize, you can build and extend functionality in your CRM Online system by using hosting applications and the CRM web services to access information. By using the Azure platform you can benefit from the cloud storage, infrastructure, and as well the worker services. You can also host your user interface inside the CRM application giving your users a singular experience.

-cheers
jonw

Fetch It Part 2

In the first blog on using Fetch XML, I introduced a tool that I had created that would allow you to execute Fetch XML statements to retrieve CRM data. In this blog, I want to discuss some of the inner workings to executing Fetch XML statements to retrieve more than a single page of records. Here’s the link to the updated FetchIt tool

The mechanism is a paging cookie that tells the CRM system were to start the retrieve from. The paging cookie is returned on a fetch execute statement in the data set. The first step is to execute a fetch xml request. This is pretty simple and documented well in the SDK.

string QueryString = @"<fetch mapping='logical'><entity name='new_test'><all-attributes/></entity></fetch>";
Result = this.m_crmService.Fetch(QueryString);

This will return a string of xml data.

<resultset morerecords="1" paging-cookie="&lt;cookie page=&quot;1&quot;&gt;&lt;new_testid last=&quot;{C855BD56-D955-DE11-90B3-001E0B5E0BF6}&quot; first=&quot;{37F4AB96-D755-DE11-90B3-001E0B5E0BF6}&quot; /&gt;&lt;/cookie&gt;"><result>……

Notice in the root element are the attributes morerecords and paging-cookie.

The morerecords indicates there is more data from the query. The limit per retrieve is 5000 records. To get more, you simply need to add the paging cookie to the next request.

string QueryString = @"<fetch mapping='logical' page='2' count='5000' " + Cookie + "><entity name='new_test'><all-attributes/></entity></fetch>";

To accomplish this you’ll need to do a bit of parsing and string manipulation. Make sure you grab the quote on the end.

string Cookie= paging-cookie="&lt;cookie page=&quot;1&quot;&gt;&lt;new_testid last=&quot;{C855BD56-D955-DE11-90B3-001E0B5E0BF6}&quot; first=&quot;{37F4AB96-D755-DE11-90B3-001E0B5E0BF6}&quot; /&gt;&lt;/cookie&gt;”

then insert into the query along with a paging attribute.

string QueryString2 = @"<fetch mapping='logical' page='2' count='5000'" + Cookie + "’><entity name='new_test'><all-attributes/></entity></fetch>";

Next, all you need to is execute the fetch request with the new string. On each call, increase the page number from the last until morerecords = 0.

Here’s some code snippets. Make sure you add appropriate error handling. I put this together as a conceptual example.

string GetCookie(int idx,string DataChunk)

{

    int end = DataChunk.IndexOf(">", idx);

    int start = DataChunk.IndexOf("paging-cookie=");

    int nCnt = end - start;

    string Cookie = DataChunk.Substring(start, nCnt);

    return Cookie;

}

 

public static string InsertCookie(string fetchXml,

                     int PageNum, string Cookie)

{

    string Root = "<fetch mapping='logical' page='"

     + PageNum.ToString() + "' count='5000' "

     + Cookie + ">";

 

    int end = fetchXml.IndexOf(">");

    if (end < 0)

    {

      return “”;  // need to handle empty string

    }

 

    StringBuilder builder

            = new StringBuilder(fetchXml);

    int RootEnd = fetchXml.IndexOf(“>”);

    if (RootEnd > -1)

    {

        int length = RootEnd + 1;

 

        // Remove old root attributes.

        builder.Remove(0, length);

       

        // Insert new root element attributes

        builder.Insert(0, Root);

    }

  

    return builder.ToString();

}

 

cheers

-jonw

Enhanced Internet Lead Capture capabilities now available

For those currently using the Internet Lead Capture capabilities within CRM Online you may have noticed that the functionality was enhanced recently. 

Here are some highlights of what has improved:

- Canadian customers can now take advantage of Internet Lead Capture (AdCenter integration does not apply in Canada)

- There is support for vanity URLs which allows you to leverage your unique CRM Online org name for a specific landing page URL if you decide to have Microsoft host your internet lead capture page

- You have the ability to add any lead field (including custom lead fields) to the Internet Lead Capture web form

- There is an improved Lead Capture Home Page with embedded charts to show lead capture effectiveness

If you aren’t using this functionality today, you can easily activate it by clicking on “Landing Pages” or “Internet Leads” from the Sales or Marketing Tab within the left navigation

image

Using the CRM Address Book in Outlook Pt 2

Adding to an earlier post Using the CRM Address Book in Outlook Pt 1, K|Dubya ( aka – Kevin Williamson ) introduce the concept of using CRM contacts in your Outlook Client Adddress Book.

I wanted explain a few configuration items on using the Address Book provider. It’s possible that when you first look at CRM contacts in the Address Book, you might not see anything.

First step, is to start a new email. Then click To:

ToEmail

This will bring up the address book list.

adrbook

Notice that the address book has the Microsoft Dynamics CRM Address Book Provider. This allows you to select CRM records to send email to.

After selecting CRM Contacts, it’s possible that you don’t see any contacts.

AddBookContactEmpty

The reason is found by looking at the options under the CRM Outlook Client menu item.

AddrBookContact

Notice the options

1. Match only against contact synchronized to Microsoft Dynamics CRM.
2. Match all contacts.

Make sure that either you have contacts in Outlook that you have synchronized to CRM or that you select all contacts. Of course, security rules apply so you’ll only see the ones that you have rights to.

AddBookContactFull

 

cheers
-Jon

More Posts Next page »
Page view tracker