As I said ; you need to "code" the lookup to return the "old RM" value when its is set on your object instance even when your existing logic does not return the "old RM"
--
I'm going to explain this is
psuedo-code not NSQL (since I have no idea what your object or columns are called) ....
So you have a parameterised lookup that says;
SELECT resource_manager details
FROM
some tables with some joins
WHERE
<< your parameter id >> IS NULL OR << your parameter id >> = SRM_RES.ID
...and your join login in "
some tables with some joins" only picks up the resource_manager that is current (so does NOT return the existing resource manager when you have change the data)
--
What I'm saying is that you need your parameterised lookup to say something like ;
SELECT resource_manager details
FROM
some tables with some joins
WHERE
<< your parameter id >> IS NULL OR << your parameter id >> = SRM_RES.ID
UNION
SELECT user_details
FROM srm_resources & cmn_sec_users -- note there are NO joins on the "current resource manager" in this part of the select
WHERE srm_resources.id = ( SELECT the current value of your [u]custom attribute[/u] FROM your custom object instance WHERE id = << the object id of your custom object instance >>
(Note that this has introduced a second parameter to your lookup; "the object id of your custom object instance")