Я скину сюда свои два цента.
Я реализовал решение двусторонней синхронизации календаря на своем рабочем месте с приложением Ruby-on-Rails. Требование было практически идентично тому, что вы перечислили, хотя синхронизация должна выполняться почти в реальном времени. Что я сделал, так это написал службу Windows с использованием веб-служб Exchange (а не текущего управляемого API). Были использованы как push, так и Pull-уведомления - push-уведомление, чтобы обеспечить синхронизацию в реальном времени, в то время как pull-синхронизация для синхронизации устаревших локальных копий Тогда это было немного сложно, поскольку документация была очень скудной, а API - очень многословным. Новый управляемый API гораздо более лаконичен.
Сервис работает хорошо уже более двух лет.