One work around is to send a dummy imsi along with a VLR id which would correspond to a dummy SMSC GT of our network on a request from other network.
Doing this When a roaming subscriber sends you a message your network would provide a dummy imsi( dummy imsi) and a vlr id which would pertain to your network and terminate in your smsc , then on your smsc should process the destination and origination number along with the data context and terminate the same to the B party, and simply ignore imsi sent across.
1)Roaming sub initiates a SMS , it reaches his home SMSC (sms submit)
2)local SMSC does a SRI_SM query to your HLR ( here it would be your smsc GT ) over SS7 and get the VLR id and imsi from your network
3) your HLR (smsc here) send a dummy imsi with valid VLRId ( GT of SMSC sever) back to him
4) His SMSC then tries to deliver the message ( FORWARD SM) to your VLR ID mentioned , here it would be your SMSC GT.
5) Throughh SS7 links you get the MT deliver packet on to yur SMSC system and its your internal lookout of how the system can be designed to handle requests ignoring imsi field and just taking orig and dest field.
6) you then send a deliver acknowlege to the remote smsc who terminated a message to you.
In a nut shell your SMSC should cater to HLR/VLR/SMSC functionality for a foriegn network .
Hope it helps !!