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:
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).
- Create any Discount Lists (not required)
- Create your Unit Groups (required)
- Create your Price Lists (required)
- Create your Products (required)
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.
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.

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).
- Import unitgroup using the UnitGroup DataMap
- 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
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.
- Invite the user using their corporate email address.
- When the user receives the email address, click on the link to accept the invitation.
- Click on Get a Windows Live ID
- 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

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
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.
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.
I merged to Email and selected and Organizational mail merge template.
Start the Word mail merge process by confirming the recipients. Click OK.
Click on Step 1 of 3 to Preview the merge. If you have multiple recipients you can scroll through them to confirm accuracy.
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.
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.
Click OK and complete the 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.


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.
So since the unsubscribe email was received the Do Not Allow email flag should be set but as shown below is not.
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.


So I created another mail merge (and this time chose the Happy Birthday template) and clicked on the unsubscribe link.
The response email was automatically tracked in CRM (again because it originated from 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.

I have posted this workflow here so you can download and import into your CRM Online organization.
- Eric Boocock
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
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.
You’ll also want to make sure you’ve added your url to the trusted sites.
cheers
-jonw
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
Workflow completed
Created by auditing entry logged
Auditing entity details showing creation details
Updated contact to add address details
Updated by auditing entry logged
Updated by auditing entry details
Another great accelerator to add to the list.
- Eric Boocock
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.

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
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.
- Eric Boocock
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:
-
Planning Guide
-
Installing Guide
-
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
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.

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.
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.
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.

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
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="<cookie page="1"><new_testid last="{C855BD56-D955-DE11-90B3-001E0B5E0BF6}" first="{37F4AB96-D755-DE11-90B3-001E0B5E0BF6}" /></cookie>"><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="<cookie page="1"><new_testid last="{C855BD56-D955-DE11-90B3-001E0B5E0BF6}" first="{37F4AB96-D755-DE11-90B3-001E0B5E0BF6}" /></cookie>”
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
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

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:
This will bring up the address book list.
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.
The reason is found by looking at the options under the CRM Outlook Client menu item.
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.
cheers
-Jon