Need a cheat sheet on the out-of-the-box Products and Pricing features of Microsoft CRM? How about the the Opportunity –> Quote –> Order –> Invoice process? Ok, here you go…
Defaulting of Currency and Price List
- A default Currency can be specified under each user’s Personal Options and on each Customer record. The Organisation too has a default currency set. Default Price Lists can be specified on Customer records.
- When creating a new Opportunity from the context of a Customer record the Currency and Price List specified on the Customer record will default down on to the Opportunity record.
- When creating a new Opportunity outside of the context of a Customer record the Currency field defaults based on the value set in your Personal Options. The Price List field does not default at all. If you don’t have a Currency set under your Personal Options then the Organisation default currency applies.
- Whenever selecting a Price List on an Opportunity, Quote or Order the list of selections will be filtered by the Currency specified. i.e. each Price List is tied to a Currency.
Product and Price Definitions
- When defining a Products a Unit Group must be specified.
- The Unit Group is a collection of ‘units of measure’ that the Product can be priced in – e.g. you might have a Unit Group called “Cans” and within that Group you might have the following Units: Each, 6-Pack, Tray, Carton and Pallet.
- The most granular unit should be defined as the Primary Unit – in the Can example this would be the “Each” Unit.
- On the other Units you define the unit translation required to get from the Primary Unit to this Unit, e.g. on 6-Pack you enter a quantity of 6 and on Tray you enter a quantity of 24. Although I’m not sure this is used in anyway by CRM, CRM does not attempt to track inventory levels – that is really an ERP function.
- Product Prices are stored on Price Lists. Under a Price List you create an entry for a Product where you specify the Price for a particular Unit. e.g. I have a Price List Item on the “USD Retail” Price List for the “Coke Can” Product where I say $5 is the price of a “6-Pack”.
- Each Price List item can have a specific Price entered against it or a % can be entered and the pricing derived by combining that % with the List Price or Cost Amount specified on the Product record. This allows you to have standard costs and prices for the Product but varying Price Lists.
- Discount Lists can be defined and applied to Price List Item records to add a Quantity Break discount table to the pricing (e.g. get 5% when you buy 10-20 units, get 10% off when you buy 21-30 units).
Product Selection and Line Item Pricing
- When creating a Opportunity, Quote or Order you need to specify a Price List before you can specify Products.
- Then when you go to select a Product the Products displayed to you will be filtered to only those that have Prices on that Price List.
- Having selected a Product you next need to select a Unit. The Units you can select from are filtered to only those that appear on the Price List for the Product selected.
- Lastly you enter a Quantity. With those inputs specified CRM can now price your line item.
User Entered Discounts
The following discount types are supported out-of-the-box (other types require jscript/plugins):
- A $ discount at the line item level, comes off of the line total (not the unit price)
- A % discount at the header level, reduces the pre-tax, pre-freight total
- A $ discount at the header level, reduces the pre-tax, pre-freight total, applies after the % discount
- A Quote can be created from an Opportunity – most of the Quote details are automatically populated.
- The Quote is automatically saved as it is created (you may see the screen flash as the form refreshes).
- All of the product, quantity, discount and freight details can be changed if required.
- When you are ready to present a Quote to a Customer you should click the Activate Quote button – this locks the Quote. It can now only be changed via a Revision process which will maintain version history.
- To change a Quote – e.g. to give the Customer a revised Quote – click the Revise button. The Quote record will be duplicated and the original Quote flagged as Closed. The new Quote will share the same Quote ID but have a unique Revision ID (behind the scenes it is a new Quote record with its own unique GUID).
- Bill To and Ship To addresses can be keyed into the Quote or can be retrieved via the Lookup Address button. Only child address records added against customers can be retrieved (this excludes the address1 and address2 address blocks on the customer record) [correction: address1 and address2 become selectable so long as the Address Name field is populated]
- There is a “Get Products” button on the Quote form that will allow you to copy the Products from the Quote’s parent Opportunity down to the Quote record (presumably catering for scenarios where the Opp has been updated after the Quote has been created). Fairly useless feature.
- The “Print Quote” button launches CRM’s native Mail Merge feature. You pick a Mail Merge template and Word will launch. The user experience is dreadful. The sample template included with Microsoft is abysmal. You will need a better solution than this if you need to produce Quotes from CRM. The minimal coding solution is to use an SSRS report but this is still a poor user experience, I would reach into the SDK for something a little smarter or go with a 3rd party add-on (e.g. MyCRM’s ePDF product).
- The “Close Quote” button allows you to close an activated Quote record. During this process you can request a revision be created which would give you the same end result as if you had pressed the Revise button. If you don’t chose to have a revision created you are effectively just cancelling/deactivating the quote and you get the option of closing the Opportunity as Lost at the same time. This whole experience feels clunky and unnecessarily complex, the button should just set the Quote status to inactive/cancelled and offer nothing else.
- To progress an activated Quote and indicate it has been accepted you click the “Create Order” button. A sub-screen is popped and you are given the option to close the related Opportunity as Won at the same time. This screen will close the Quote as Won, create an Order record based on the Quote and optionally close the related Opportunity as Won. If you opt for the Opportunity closure to happen and the Opportunity has other open Quotes attached to it they will be automatically cancelled (the concept being that these were alternative proposals and the customer went with the Quote that you have just closed so these other Quotes are no longer of interest).
- Order records are parented by Quote and Opportunity records, these lookup fields are placed low on the Order form by default. You can create Orders from Open Opportunities but I get the feeling you are really expected to follow the “Opportunity —> Quote –> Order” process flow.
- The Order Pricing is locked initially. If the pricing changes on the Price List and you click the Recalculate button the Order pricing will not update. If however you click the “Use Current Pricing” button the Order will be unlocked and the unit prices will be refreshed from the current pricing on the Price List. Whilst unlocked the Recalculate button will refresh the pricing from the Price List.
- The “Get Products” and “Lookup Address” buttons are here and work the same way.
- To progress the Order you have 3 options: the “Create Invoice” button, the “Fulfill Order” button or the “Cancel Order” button.
- The “Fulfill Order” button essentially closes the Order and updates the status to “Fulfilled” – i.e. we have shipped the order to the customer.
- The “Create Invoice” button creates an Invoice record. It does not change the status of the Order. Invoicing is treated as parallel process to Order Fulfilment, you can generate the Invoice before or after Fulfilment.
- The “Cancel Order” button changes the Order status to Cancelled but does nothing else. If an Invoice has been generated it remains active and the parent Quote record remains Won.
- Pretty much everything said for Orders applies for Invoices, the same set of buttons are available to update the Product details or Pricing or to cancel the Invoice.
- The last step of the sale process in CRM is to click the Invoice Paid button, which closes the Invoice and updates the Status.
The CRM functionality gets weaker as you progress through the sales process into Order and Invoice. You really are crossing across into ERP territory by this point and I think these CRM entities really exist as placeholders to represent ERP Order and Invoice data that is expected to be fed to CRM by integrations you implement.
There are sample SSRS reports for Order and Invoice available on each form which you can customise to your requirements.
Noticeably absent from this whole process is tax calculations. This is further evidence that Microsoft have not tried to create ERP competing sales order processing functionality.
- Sales Territories seem to have no effect in CRM, they exist to supply a data structure that you may chose to utilise in your reports and workflows. Or you can happily ignore Sales Territories (I’ve never used them on a CRM project).
- Each user can be associated to a single Territory
- Each Territory can be assigned a Manager
- Account records can be associated to a single Territory
- Sales Quotas are a deprecated feature from CRM 4.0 that is still around in CRM 2011 but not expected to be around in the next version. The Goals feature introduced in CRM 2011 is meant to be used instead.
- Whilst you will see Sales Quotas appear on the menu in CRM 2011 the feature is not usable. I guess Microsoft have retained a read only view of this data to allow those that were using it to move over to Goals once they upgraded.
- The Sales Literature feature in Microsoft CRM allows you to use CRM as Document/File repository.
- The Sales Literature record itself is a header record – maybe you would create one per Product. Beneath that header record you create Sales Attachment records. Each one of these has a file attachment and metadata that describes that document. Search keywords can be specified here but CRM never offers a useful way of searching against these.
- Instead of creating Sales Attachment records under a Sales Literature record you could implement Microsoft CRM’s native integration to SharePoint and enable a SharePoint document library under each Sales Literature header and have the documents stored in SharePoint rather than CRM. If you wanted to use SharePoint though maybe don’t even bother with the Sales Literature record, just enable a SharePoint site for each Product record.
- Sales Literature records can be associated to Products such that when looking up or drilling down on a Product in CRM you can easily access the Product’s Sales Literature. It’s a bit ‘clicky’ though.
- One nice thing you can do from the Sales Literature form is you can click a button and an CRM email form will be launched with all of the Sales Attachments added as Attachments.
- Sales Literature can also be associated with Competitor records and then easily accessed from the Competitor form.
- Competitor records in CRM are used to represent those organisations you compete with. You can store some competitive intel on these records for your sales force to refer to. You can associate Products from your Product Catalog to Competitors (not sure why you would want to, I guess the idea is to indicate which of your products each of your Competitors also sells).
- Open Opportunities can be associated to one or more Competitors. This has no real effect except for providing a description of the competitive landscape, something someone could refer to or some boffin could write reports about.
- As you close an Opportunity as Lost you can select the Competitor you lost to. This is quite valuable and a feature I always encourage customers to use.