I've noticed a slight issue with MOH that could be better-tweaked at the SIP protocol level.
In a network scenario using a generic SIP Trunk configuration (an Asterisk gateway), where the peer is configured for ReInvite=Y, Replace=N, PBXDeliverAudio=N located on WanSubnetA, the 3CX is on WanSubnetB, and the and the IP PHone being a Polycom 560 (3.2.2 firmware) originating from WanSubnetC.
Whenever I perform a HOLD action on the Polycom, the MOH that is received originates from the Trunk provider. It would be nice that 3CX intercepts this request for HOLD, and instructs the current call session to be the acting MOH source. Evidently, when I put 3CX in the media path with PBXDeliverAudio=Y, at this point, the MOH is 100% delivered from 3CX, but the voice latency tax created by this action is problematic.
Cheers