Friday, June 29, 2007

Designing a Fulfillment Process for Marketing Materials in Microsoft Dynamics CRM

A recent client wanted to design a process using Microsoft CRM to create and fulfill orders for marketing materials such as catalogs and brochures. This post describes the client's requirements and our solution.

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!

Monday, June 25, 2007

Update Rollup 2 for Microsoft CRM v3.0 released Monday, June 25th

Update Rollup 2 for Microsoft Dynamics v3.0

Microsoft CRM Sustained Engineering plans to release Microsoft Dynamics CRM 3.0 Update Rollup 2 Monday, June 25th. Update Rollup 2 is a well tested, cumulative set of updates for Microsoft Dynamics CRM Server 3.0 and Microsoft Dynamics CRM client for Outlook 3.0, including performance enhancements, which are packaged together for easy deployment. Sincere thanks to the many customers, partners, and ISVs who have helped us test this Rollup during our pre-release testing program.
Comprehensive information about this release will be available via the Microsoft Knowledge Base article 927751, which will be simultaneously published with the Rollup packages on the Microsoft Download Center. When published, the Update Rollup 2 packages will be available via http://www.microsoft.com/downloads/details.aspx?FamilyId=81674DA5-FFEF-492A-A7B1-7E1F1951B05F
This update rollup includes packages for Microsoft Dynamics CRM Server and Microsoft Dynamics CRM client for Outlook 3.0 to maintain parity between the client and server components of Microsoft Dynamics CRM 3.0.

Please see Microsoft Dynamics CRM Team Blog for Q&A at:

http://blogs.msdn.com/crm/archive/2007/06/22/update-rollup-2-for-microsoft-dynamics-v3-0.aspx

Thanks Greg Nichols!