When you have a master-detail chain of objects several levels deep, sometimes a lookup field to the root object on each child object is helpful for easy navigation or to show deeper records than the immediate child records as a root object related list.

It is a while since I set something like this up, and in the past have had to do it via triggers because it is not possible to create a formula field of type "Lookup Relationship".

Has anything changed in the platform to make solving this problem easier e.g. declarative rather than code?

  • personally, i'd do this in a domain class for each child object as it avoids any recursion from a PB (plus you'll end up with testmethods). But PB should work
    – cropredy
    Sep 22 '19 at 23:58
  • Thanks @cropredy. Do you mean that the domain class writes the lookup or that you use the domain class to navigate up and down the relationships? I want to be able to show e.g. the grand-child objects as a related list using layout UI, so need fields too.
    – Keith C
    Sep 23 '19 at 7:28
  • Domain class writes the lookups.
    – cropredy
    Sep 23 '19 at 13:00

I've not tried it but this should be possible with Process Builder/Flow (on the child objects). Those do especially support cross-object formulas while workflow field updates don't.

Reparenting on an intermediate level may still require some sophistication (e.g. in a hierarchy Level_0__c <-- Level_1__c <-- Level_2__c, if you have a lookup from Level_2__c to Level_0__c and allow reparenting of a Level_1__c record to a different Level_0__c record - how do you update the lookups from all Level_2__c children of that Level_1__c record to the new Level_0__c record).

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.