Because we've got multiple platforms, we're moving to the idea that events going from one system to another go in XML. If a back-end process that is currently on a Windows box moves to a Linux box or vice-versa, the sending application doesn't have to know.

Then simply capture every XML event and log it somewhere. Then we can query against the XML logs and recreate the entire life of an order.