Dhara,
you're trying to resolve all issues at once. Proceed with each one by one.
What I'd suggest regarding the search is: put a controlled infinity loop in the mentioned BAdI, send an e-mail and catch it in tx. SM50 (through Administration - Program - Debugging menu). Something like:
DATA lf_flag. WHILE lf_flag IS INITIAL. IF lf_flag EQ 'X'. EXIT. ENDIF. ENDWHILE.
Then continue debugging and you'll see how the system search the assignment.
I'm pretty sure that the system does the search using Responsible No. If you have there an org. unit as you've stated above then you should adjust the search using this BAdI according to the note 1375170. That is it.