The parent and child relationship should only apply to the topology of the environment. When discussing inheritance, you should use the terms base class and extended class. This differentiation can significantly help when describing your issue.
From your post, it looks like common_chain is your base class, and dut_Integ_chain is an extended class. Is this correct?
The first topology you posted shows variable ‘integexp’ of type ‘dut_Integ_chain’ under ‘m_dutallchains’.
You state that you redefine ‘integexp’ of type ‘dut_Integ_Scanchain’ to ‘common_chain’. This doesn’t match the above topology (‘dut_Integ_chain vs. dut_Integ_Scanchain’), so it is not clear what you are changing. Is ‘dut_Integ_Scanchain’ also an extended class of class ‘common_chain’?
You then try to override the instance ‘m_allchains.integexp’, which doesn’t match any instance in the first topology you posted (‘m_dutallchains.integexp’ seems to be the closest). Also, the second topology posted shows ‘m_dutscanchains.integexp’, which is even more confusing.
It seems like you are mixing several environments based on the different instance names and hierarchies which makes determining your issue very difficult. Can you restate your issue using a consistent example so we can provide further assistance?