My hope is that you will get some ideas on how to use Microsoft CRM to support processes that are not built into the application.
Have comments? Please share them!
Functional Requirements
1) Cover two scenarios/subprocesses:
a) Send catalog to new leads who either request it directly, or who are deemed to be qualified leads by sales person.
b) Sales person sends specific information to specific individuals (leads or contacts).
2) Track two different addresses on both the Lead and Contact: 1) work, and 2) home.
3) Track which address is the preferred address for mailings on both the Lead and Contact.
4) Track fulfillment orders for both Leads and Contacts.
5) Track an unlimited number of requests.
6) Allow an unlimited number of items per request (e.g., catalog, brochure, and voucher all on one request).
7) Capture the following data for each fulfillment order:
a) Who (lead, account, or contact)
b) Preferred Address (home vs. work)
c) Which item(s) to fulfill
d) Quantity of each item
e) Date requested
f) Date sent/fulfilled
8) All fulfillment order records are stored together throughout the life of the person's relationship, starting from the time they were entered as a lead and continuing with them becoming an account or contact. This provides a complete, reportable history of all fulfillment orders.
9) Print labels for each request.
10) Print packing slip for each request.
11) Automate various aspects of the process.
12) Allow for a centralized fulfillment center, where a designated person or people can:
a) Determine all requests to be fulfilled
b) Print all labels.
c) Print all packing slips.
d) Prepare all packages appropriately.
e) Indicate that requests have been fulfilled.
14) Maximize use of standard functionality in Microsoft CRM to minimize costs and maximize speed of implementation.
15) Minimize clicks and typing to maximize speed of data entry.
Design Options
Given the functional requirements, two options were identified. Each option includes the following assumptions.
Assumptions
1) There will be no advanced fulfillment functionality such as tracking of backordered items.
2) Only two addresses will be tracked for fulfillment purposes - Work and Home.
a) Standard address1 fields in Lead and Contact will represent Work address.
b) Standard address2 fields in Lead and Contact will represent Home address.
Option 1
The first option we considered was to use the standard functionality provided by Products and Orders. Unfortunately, this option was not viable because Orders can not be created for Leads. Orders can only be created for customers (Accounts and Contacts).
Option 2
The second option, and the one our client chose, was to create our own version of Products and Orders. This option addresses all specified requirements, and all changes can be made using the standard customization tools and some basic JScript.
Solution
1) Created three custom entities:
a) Items (similar to Products)
b) Fulfillment Orders (similar to Orders) - related to both Lead and Contact entities.
c) Fulfillment Order Items (similar to Order Products, a.k.a. Order Line Items)
2) Customized the forms and views.
3) Added JScript to automate the handling of the preferred address and setting default values.
4) Created workflow rules to automate the processing of the fulfillment orders:
a) Set date fulfilled to current date
b) Change status of fulfillment order to inactive
c) Change status reason to "Fulfilled"
5) Created two reports:
a) Mailing labels
b) Packing slip
Process Flows with New Design
Create Fulfillment Order
1) From open Lead or Contact record, select New Fulfillment Order.
2) Lead or Contact preferred address information will be filled in automatically (using mapping). Status Reason will default to "Draft". In almost all cases, there is no need to manually enter data. Save the record.
3) From Fulfillment Order record, select New Fulfillment Order Item. Using JScript, the Item will default to the catalog item, and Quantity will default to 1. Change information on Fulfillment Order Item record, if necessary. Save the record.
4) Create remaining Fulfillment Order Item records.
5) On the Fulfillment Order record, change Status Reason to "Ready to Fulfill". Close the record.
Process Fulfillment Order
1) Open view of Fulfillment Orders with Status Reason of "Ready for Fulfillment"
2) Select Fulfillment Orders to be processed.
3) Print labels.
4) Print packing slips.
5) Apply workflow rule to:
a) Fill in the Date Sent field
b) Deactivate the Fulfillment Order
c) Update the status reason picklist to "Fulfilled"
6) Prepare and mail packages.
Conclusion
Our client was quite happy with this solution. It gives them the ability to:
1) Easily create fulfillment orders for Leads and Contacts.
2) Track fulfillment orders for a person from the time they are a lead to when the lead is converted to a contact.
3) Track fulfillment orders through their lifecycle.
4) Have a centralized person or group process the fulfillment orders so that the sales people don't waste precious time printing labels or putting together the packages.
5) Ensure that all orders are fulfilled in a timely fashion.
6) Report on which items are most frequently ordered.
This is a good example of what can be done with Microsoft CRM to enable and support a custom business process.
I'm sure there are other ways that this requirement could have been handled. If you have other ideas, please share with us!