Hi Anders & Jake,
Thanks a lot for your responses and sorry for the extremely late reply.
We decided to take Anders approach for the time being, so we now have an extra set of functional tests that focus on testing that the external systems get updated properly. This worked fine for the simple cases, but we're having some issues as some of the external systems transform the information we send, and we don't want to duplicate the transformation logic in our tests. Also because that transformation is well beyond the scope of the test and the system we're trying to test. This means that we might need to relax the tests a bit.
Jake, thanks a lot for the reference to consumer-driven contracts. I hope we can put this into practice... but I'm quite sure that it will cause the same type of issues, not because this approach is flawed, but bacause we'll have the same core problem,
communication. I can really, really see teams not communicating that there was an update to the contracts, so the consumer and producer would be working on different versions without knowing it. This is partially because the teams are distributed across the globe :s.
Thanks again for your suggestions!
Augusto