Is reliance on transitive effects indicative of a poor design?


If system A sends a (command) message to system B, can system A rely on side-effects that the command handler performs against a 3rd system, system C?

Instintively, it seems like a bad practice to me. Yet it’s prelevant at my organisation - but I’m having trouble articularing to my co-workers why it’s bad.

I guess my rationale is that you should only rely on what is contractually promised (whether messaging or web-services, it kind of doesn’t matter).