Things to check in case correlation is not working:
a) On VM-A, look for "good looking" Backend metric which comes close to your Web Service
b) On VM-B, look for a good looking Frontend metric which comes close to your Web Service or alternative (Pre-APM 10) look for a Web Services|Server metric which looks good.
c) Analyze a transaction Trace on VM-A. You are able to see on the trace your good looking Backend
d) Analyze a Transaction Trace on VM-B. You are able to see on the trace your good looking Frontend
e) You click on the root component of Trace from the VM-B and you can see a property "Caller Txn Trace Id" (maybe similar name) and the property Cross Process Sequence Number (or similar) shows a number higher than 1. For example 1:1 or 1:1:2
f) You still don't see both traces correlated
Here the error analysis:
a) fails: Your WS protocol is not covered by Introscope or SPM / Introscope extension is not installed correctly
b) fails: Your WS protocol is not covered by Introscope or SPM / Introscope extension is not installed correctly
c) fails: Your application does the transaction across multiple Threads and this would become a special case we would have to look into where's the problem (Tibco, Oracle OSB, WAS Process Server, JBoss Fuse, Mule ESB... - we can fix those)
d) fails: Identical problem to c)
e) fails: Something is in between VM-A and VM-B which modifies the HTTP headers / rewrites the message.
f) fails: You are most probably running into a TT Clamp session. Check Transaction Trace clamp configurations and agent log messages.