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