“Link Object” lays the foundation of creating a parent child relationship between two entities in Siebel.
If we want to have parent child relationship between two business components here is what we do:
- Identify a field in child BC that will act as Foreign key in Child BC.
- Create a link between two Business Components.
- Define one BC as parent and the other as child
- Compile the objects
But what if someone comes and says “You need to have parent Child relationship but you cannot use link”. What do you think, Is it possible to do this?
The answer to the above question is, Yes. Two of my friends found a way to force parent child relationship between any two entities without using link.
First of all let me clarify. This can have performance issues so don’t use this solution until and unless it is absolutely required.
Here is what we need to do, but before going ahead I am assuming that I want to have “Opportunity” as Parent BC and “Target”as child BC
- Goto Opportunity BC > Server Scripts > BusComp_ChangeRecord Event.
- Write the following Script on Change Record
TheApplication().SetProfileAttr(“OpptyId”, this.GetFieldValue(“Id”)); - Goto “Target BC”.
- Create a Field that will act as foreign key and store Opportunity Id with following details
Name: OpptyId
Column: X_OPTY_ID (can by existing column or you can create a new column)
Pre-Default Value: Expr: “GetProfileAttr(‘OpptyId’)” - Goto an Target List Applet (I am assuming “Target List Applet” is based on “Target BC”)
- In Search Specification enter the following expression:
([OpptyId] = GetProfileAttr(“OpptyId”))
That’s it. Now when you will move between Opportunity records it will refresh and only show Target records related to that opportunity.
Note: We had a lot complex implementation and did a lot of other things in addition to this. I am only providing necessary steps to achieve this. In case if you try and it is not working then let me know, I will try to provide solution for your problem.

