How distributed OpenMRS deployments are synchronized?

Thanks @mksd for the info.

For the one-way scenario that you mentioned, what happens when data is missing from field instances (but present in other instances/HQ), e.g., a patient is registered at site A but that same patient later goes to site B? Is there any “cache-miss resolution” type of strategy to fall back to HQ?

Also is it fair to say that in all sync scenarios, there is at least one DB instance which will have all data items (e.g., HQ in your first production case)? Or will there be cases that no instance necessarily has all data (i.e., data is distributed between instances)?

FYI, I am mostly thinking about the sync problem and how the conflicts are being resolved in the context of streaming ETL/ELT/Analytics solutions (this thread) where multiple update streams might be needed to be merged. It is quite possible that I am overthinking this problem right now.