I agree that this could be an opportunity to either fix the event module, or rewrite it such that we have something more useful.
The event module uses a hibernate interceptor to capture all changes to OpenmrsObjects. This is useful for Sync, and in general. We should leverage this, since it has been decently debugged, and even has some end-to-end test coverage.
The event module also delivers these events asynchronously (and outside of the hibernate/db transaction) using ActiveMQ. Sync's atom feeds are already going to support asynchronous reading, and having the write happen outside of the hibernate transaction might be a problem if you end up losing events in some failure mode.
I'm concerned that working asynchronously via ActiveMQ will add an extra moving part and possibility of failure, that we don't need. We should research this when deciding where to invest effort while working on Sync.
(Maybe this is an opportunity to remove the ActiveMQ dependency entirely, and make the event module simpler, just supporting a simple synchronous Java callback, and then move ActiveMQ into an extension module, if it's even needed anywhere. @mseaton, @mogoodrich do you know if you've used Event anywhere outside of sending radiology orders in Mirebalais/PIH-EMR? )