Hi,
From what I understand is that whenever you connect via VPN you cannot change the presence status of your client.
Your approach is correct. I would get sniffer traces from both CUPC and CUP server at the same time while I reproduce the issue (change states on the client)
Whenever you change state, that state is propagated to the CUP server which in turn sends a SIP NOTIFY message back to the client (and all the other clients that are subscribed to this user's presence) containing an XML part which has the presence information
I would also compare the sniffer captures from a working and a non working scenario
But as you said if everything works without VPN and there is no firewall in the middle I would start checking the VPN connection (the sniffer captures may or may not provide some extra hints as to what might be wrong)
HTH,
Christos