Feb 25, 2013

Self-referential relationship explained

Parent-child relationship

Ability to use self-referential relationship in Dynamics CRM is quite cool. Especially, this caters the need of maintaining parent-child relationships using the same entity. Simply office entity (custom) can be used to keep records of parent office as same as child office. In fact, this is a 1:n relationship.

We will see simple way of setting up this relationship.  (Suppose I got custom entity called Test).
Simply go to the customization of the entity and move to n:1 relationships; then create new relationship. We can give meaningful (which explains parent-child relationship) names to lookup field display name and navigation item label name as below;


Now you can add this field to the main form. Now see how we see when record is opened.


Our intension is catered and the relationship is clear to the user.

Issue of using self-referential n:n

Now we will examine the usage of self-referential many-to-many relationship. Just go to n:n relationship section of the customization and create one. Relationship information will be seen as below by default.


Now this is how we see from the front end.


Confusing! This shows two associate links with the same name.

When Dynamics CRM 2011 create many-to-many relationships, it creates a third table with primary keys of the two tables involved in and front end identifies this table twice (since its self-referential, both fields contains primary key of same table) when listing the relationships for UI. This makes sense for a developer, but not for a user. Biggest issue is these two links are not the same, but two side of the relationship.

Now we will do little change to identify this. I open the relationship properties and give two different custom labels for display options. I though it’s meaningful to use something like “To” and “From” to identify the two ends as below;


Now I am able to identify two associate links of our relationship distinctly. Now I open my sample record “test  000” and add “test 001” and “test 002” records as “related to” as shown below.


Now open one of “test 001” or “test 002” and see how the related record is shown. (Under “Related From” link)


I think this explains the role of two links very clearly.

After giving the custom labels this relationship became “little” clearer. That means, when using self-referential n:n, at least we have to give a “meaning” to the relationship that gives distinct names to two sides. Ex: “advised by – advised to” and etc. Otherwise this becomes a mess to the user. This is a constraint.

If we take the big picture, CRM 2011 got a smart concept of maintaining relationships which is called Connections. So it is recommended to use Connections for most cases.

Below presentation summarize the way Connections can be used.



Hope this is helpful.

No comments:

Post a Comment