Related Object Enhancement - OneStart

advertisement
Enhancement Request: Related Objects
CONTACT INFO
PRODUCT INFO
Name
Dave Strus
Product name
Talisma 8.5 HE SP3
Title
Enterprise CRM Project Manager
Operating system
Windows Server 2008 R2
Organization
Indiana University
Database
SQL Server 2008 R2
Work Phone
812-856-3714
E-mail
dstrus@indiana.edu
URL
REQUEST Please describe the specific functionality requested.
We would like additional filtering options for related objects—specifically the operators available for Record Lists.
When adding a filter condition on a property on Record List tab, the following comparison operators are available:
contains
=
starts with
does not contain
ends with
is null
contains (in any row)
= (in any row)
starts with (in any row)
does not contain (in any row)
ends with (in any row)
is null (in any row)
When filtering on a property from a related object (where the relationship between the filter’s base object and the related
object is one-to-many or many-to-many), only the following operators are available:
contains
=
starts with
does not contain
ends with
is null
These operators behave like the “in any row” operators for Record Lists. We have no way to look for related object records
where two or more conditions are true for the same instance of the related object (other than using SQL filters, which are
not available in some contexts and which require knowledge of the database schema and additional permissions).
SCENARIO Please describe the use scenario or problem to help describe the request.
Suppose we have a COF object called Preference. Preference has a many-to-one relationship with Contact and a many-toone relationship with Campaign.
The Preference object has the following instances:
Preference ID
Contact ID
Campaign ID
Preference Type
Preference Value
45
001-944
004-810
Operational
Yes
82
001-944
006-502
Subscription
No
96
002-711
006-502
Subscription
Yes
We wish to identify all Contacts who have a subscription preference of “Yes” for Campaign 006-502. We create the
following Contact filter:
Object
Field
Operator
Value
And/Or
Contact > Preference > Campaign
Campaign ID
=
006-502
And
Contact > Preference
Preference Type
=
Subscription
And
Contact > Preference
Preference Value
=
Yes
Running this filter will return Contact 001-944 and Contact 002-711. There is no way for us to build a filter that correctly
returns only Contact 002-711.
IMPACT ASSESSMENT Please describe the impact of this scenario or problem (urgency, # of users affected).
The impact of this issue is severe. It has forced us to use Record Lists in our data model where we would have otherwise
used related objects, and to thus accept the compromises that Record Lists entail.
As we design a solution for communication preference management, this compromise is particularly painful. When
discussing potential solutions with Amit Mishra and Abhinesh Vemula in Summer 2010, this filtering shortcoming forced
us to eliminate any solutions that involved storing preferences in a COF object.
As a result, we’ve had to focus our solutions designs on using Record Lists to store such preferences. This introduces
several problems that we would not have with a related object solution:


Record List tabs cannot contain relationships to other objects (e.g. a reference to a Campaign).
Individual rows in a Record List cannot have any team-level restrictions. Only the tab itself can be restricted.
More recently we’ve re-examined preference management with Amit and Jeff Ross, but the same issues remain.
The lack of a satisfactory solution for preference management puts our enterprise implementation at considerable risk.
SCENARIO Please describe the use scenario or problem to help describe the request.
A custom IU Relation object exists, with two many-to-one relationships with the Contact object. Campaign support is
enabled on the IU Relation object.
The IU Relation object has the following instance:
IU Relation ID
Primary Contact
Secondary Contact
199
001-944
004-810
201
002-643
007-990
The Lead object has the following instances:
Lead ID
Link to Contact
Team
Status
45
001-944
IN UG ADM
Suspect
82
001-944
BL KSB UG ADM
Admitted
96
002-643
IN UG ADM
Admitted
We create a Campaign with IU Relation as the base object. We wish to create a Mailing List to identify all IU Relations
where the Primary Contact has been admitted to IUPUI undergrad: In other words, where the Primary Contact has a Lead in
the IN UG ADM team with a status of ‘Admitted’.
We created the following IU Relation filter:
Object
Field
Operator
Value
And/Or
IU Relation > Contact > Lead
Team
=
IN UG ADM
And
IU Relation > Contact > Lead
Status
=
Admitted
And
Running this filter will return IU Relation 199 and IU Relation 201. There is no way for us to build a filter that correctly
returns only IU Relation 201.
IMPACT ASSESSMENT Please describe the impact of this scenario or problem (urgency, # of users affected).
CMC has proposed, and IU has considered, several possible ways of modeling relationships between Contacts—for
example, students and their parents. Using a custom IU Relation object was the preferred approach, but the fact that this
filtering gap exists makes this solution unusuable.
SUGGESTED SOLUTION Describe the change you recommend.
Add conditional operators for related objects that behave like those for Record Lists:
contains
=
starts with
does not contain
ends with
is null
contains (in any row)
= (in any row)
starts with (in any row)
does not contain (in any row)
ends with (in any row)
is null (in any row)
Download