Self-Referential Relationships and Closed Records

I recently received an interesting email from Bob Haverty, a former student in a CRM class I’d taught a while back. It’s a specific issue having to do with parent-child relationships between quote records, and what happens when the parent record is closed. I’m initially stumped by this one, so I thought I’d post it as an interesting and fun challenge for TrickBag readers. Bob summarizes the issue pretty well in his first email, but I included the rest of the thread in case you want all the detail. If you have input, please comment on the article – thanks in advance!

Here’s the thread, starting with Bob’s first email:

 

Hi Richard,

I was a student of yours on a week long web class something around 6 to 8 months ago. I have come across a question in my current environment that I have not been able to locate an answer to and I hoping you can help.

As a matter of business process, I have a need to be able to create a self-referential relationship on my quote entity, allowing me to link a quote to any other quote in the system.  The reason is that often times the quote that is presented to the customer is not the one that gets ordered.  After presenting the quote to the customer, it may further be modified, triggering revisions, but we would like to link back to the quote that was originally presented to the customer.  The issue is that the quote that was presented is now closed. The lookup field on my quote is not allowing me to see closed quotes (earlier revisions).  Do you know of anyway for me to create this type of relationship to see closed quotes from another quote via a lookup?

Thanks in advance for any advice.

Bob Haverty

Corporate Technologies

I replied:

…rather than creating a custom self-referential relationship like you’ve done, why not just use the built-in quote revision process? (activate a quote to present it to customer and lock it down; if revisions are necessary, revise the quote which increments the revision id but keeps it tied to the same underlying quote, etc., etc.) Is there something about that process that doesn’t fit your requirements? …

Richard

Bob responded:

We certainly use the revision process while we are going through the sales process with the customer as the sales rep is refining the quote in either pricing or content, however we are presented with two different scenarios where the revision process breaks down for us quickly.

The first scenario, which is the easier one (an arguably the easier issue to solve) is that the sales rep presents a quote to a customer, the customer orders the quote, but the quote that needs to get booked through order actually ends up being very different because the sales rep hid discounts or part numbers from the customer.  In this case we would need the ability to go back to the customer quote to be sure that regardless of what was ordered, we invoice them according to the customer quote.  That’s why it is critical to tie them together.  We could probably do this through revisions.

The second scenario is a case where a customer orders product from us, as well as maintenance on that product.  The sales rep presents the quote to the customer, they approve it and issue a PO.  That quote is activated(locked), but we then revise the quote at time of order because we actually split the quote into two pieces (one product and one maintenance piece).  We do this with a “copy quote” function.  At this point we now have:

Quote A – which is the original quote that the customer ordered with all parts on it.  This quote is closed because we have……..

Quote A1 – which is the revision of quote A.  This has just the product pieces on it.  Maintenance items have been removed.

Quote B – which is a copy of A1, except it has the product items removed and left with only the maintenance items.

Both Quotes A1 and B will become orders after following their respective workflows through different depts., but we would like to be able to link them back to Quote A so we always have a reference what the customer actually issues a PO against.

I know it is confusing as all get out.  Took me a while to get my head around it.  Let me know if you have further questions.

Thanks, Bob

3 Comments »

  1. Jukka Niiranen Said,

    August 20, 2009 @ 12:12 pm

    I’m not sure if it will work for this particular scenario, but the article below by Jim Wang offers a couple of workarounds for presenting inactive records in lookups. I’ve used the “alllookups” script for overcoming this limit on custom entities.

    http://jianwang.blogspot.com/2009/04/show-both-active-and-inactive-records.html

  2. Richard Knudson Said,

    August 20, 2009 @ 12:18 pm

    Hi Jukka — thanks for the suggestion! It looks like it might work, and certainly a useful think to know about in plenty of scenarios like this.

    Bob, what do you think? Will that help, or is there something more specific about the Quote/Quote revision process that requires a different approach?

  3. Bob Haverty Said,

    August 20, 2009 @ 3:34 pm

    Richard and Jukka,

    That seems to have done the trick. This was so easy to do. This should go in everyone’s trick bag. I can see where this would be used in many places in CRM.

    Thanks both for all of your help!

    Bob

Leave a Comment