Product Recommendations in CRM For Dynamics 365 Using Machine Learning

If you are a company that sells various products and/or services, and you use CRM for Dynamics 365 for your selling operations, it’s highly likely that you use the Product Catalog, and also link up your products for cross selling opportunities. If you haven’t linked them yet, there’s good news – machine learning can do it for you! Based on patterns that it finds in historical sales transactions, CRM, with the help of the Recommendations API, can now provide product recommendations to cross sell for your sales people as they pursue opportunities.

Have you manually linked up your products for cross selling in CRM already?  There’s good news. You don’t have to keep doing it anymore! Why? See above.

But how does this all work?

Here’s the basic premise:

  • You have historic transactions that consist of products that have been sold by your sales team. Many of these products are cross sold, which means that if one product was being considered, at least another product was recommended in that sales opportunity as well.
  • There may be ways for you to look at historic data and see which products are more successful than others, but there is no easy way to see which products are recommended as cross sell products during a sales opportunity when a certain product is being considered.
  • That’s where machine learning comes in. The Recommendations  API looks at all of your historic data, and finds patterns of recommended/cross sold products. Then it rates those products.
  • Based on those ratings, you create your recommendation model. For example, when I am selling product A, recommend other products to cross sell. (Duh!) However, these recommended products  must have a rating greater than, let’s say 0.5 (ratings are between 0 and 1).  A higher rating means the recommended product has been in many historic “won” transactions.

Product Recommendations

Note: You will have to connect Recommendations API to CRM before proceeding. Read this article first.

When you go in to Product Recommendations in CRM for Dynamics 365 (Settings->Product Catalog), there are certain things you’ll see – In the Details area, perhaps the most important field is the “Minimum Recommendations Rating”. This is the rating that is generated by the Recommendations API when it looks at our historic data. Here, we are saying that we want only those products to be recommended for cross selling that have a score of at least 0.50. Anything below it will not be recommended.


Digression: This is what the ratings look like in case you are wondering:

Let’s come back to the Recommendation Model.


Basket Data Entities

These are the entities for which historic data is present. By default, three are included – Opportunity,  Order, Quote. You can add your own as well.  Here, you can also tell the Recommendations API to look at very specific set of historic transactions. For example, we can set a filter that makes the  API look at only Won Opportunities in the last 12 months. (double click the Opportunity line item in the subgrid below)

Recommendation Entities

These are the entities for which recommendations are available. They also default to Opportunity, Order, Quote.


As you get more historic data, you can build various versions of your recommendation model. To do so, set your Minimum Recommendations Rating (see above) and click Build Model Version.  This is where the algorithms start learning from your historic data, find cross sell patterns, and rate products.

Note: The build will take a while. I only had sample data and it took 6 minutes to complete the version build.

You can test your model also by clicking “Test Recommendations”. Choose a product, and a version. Click “Show Results”. This will show you a sample of what products will be recommended if a certain product is being considered in an opportunity.

If you see recommended products with scores attached, it means that you have an up and running recommendation model!

Note: I want to quickly talk about “Precision”. Precision represents the frequency with which sales people pick suggested products.  Higher the precision, the better. Try multiple models over a course of time and see how the precision changes. I have 0 because I have very minimal data in my demo org.

Now, let’s see the recommendation model in action!

First, though, let’s look at some older opportunities we have won so that we can see what the product recommendations will be based on. In the past, whenever we’ve sold the Southridge Laptop 19W Xq980 laptop, we have also cross sold a few more products with it.

Historic opportunity 1:

Historic opportunity 2:

Now, let’s see what our recommendation model recommends to us when we create a new opportunity for the same laptop. After adding the product, we click Suggestions.

And this is what we get. (We want recommend products with a score > 0.50)

From these suggestions, you can pick whatever you want and update your opportunity with more products!


So what are we really doing here besides making suggestions easier for our sales team? After all, we could set these recommendations manually anyway in CRM, right?

First of all, you are utilizing your historic transactions to determine what really sells. Not only that, you are also scoring the effectiveness of each product when it comes to cross-selling. Just that infuses good confidence in your salesperson to include more products in their opportunities and ultimately bring in more revenue.

Second, it automates the whole process, which means that your analyst or customizer, who painstakingly set up all those product relationships (and probably ended up with arthritis from all those mouse clicks) doesn’t have to keep doing it manually anymore. Instead, with all the time saved now, they can probably learn a new skill to help you with your business operations.

Third, piggybacking on the first advantage listed above – if there are products that have lower rating, you can probably think of retiring them or getting them from a different manufacturer.

So, give Product Recommendations a shot, and see how well it works for you! Remember, this is still a preview so don’t screw around with it in your production environment! 😉