By comparing the HO REQUIRED, HO REQUEST and HO COMMAND (and more) on each side, you should be able to detect exactly where is located your problem.
As for the timer expiry : which timer ? If you know which timer is expiring, you will know which message the MSC or BSC is waiting and not receiving. And you’ll know exactly what is going wrong.
External HO problems are very interesting to solve, because you must work with QoS, OMC and NSS people.