diff --git a/lib/ext/Syncroton/Command/Sync.php b/lib/ext/Syncroton/Command/Sync.php
--- a/lib/ext/Syncroton/Command/Sync.php
+++ b/lib/ext/Syncroton/Command/Sync.php
@@ -599,7 +599,26 @@
             }
         }
 
+        // Handle Calendar folders first.
+        // Outlook can't match MeetingRequest with an event that wasn't synced yet, which
+        // leads to duplicated events in Outlook's calendar.
+        uasort(
+            $this->_collections,
+            function ($a, $b) {
+                $ac = $a->folder && $a->folder->class == Syncroton_Data_Factory::CLASS_CALENDAR;
+                $bc = $b->folder && $b->folder->class == Syncroton_Data_Factory::CLASS_CALENDAR;
+                if ($ac) {
+                    return $bc ? 0 : -1;
+                }
+                return $bc ? 1 : 0;
+            }
+        );
+
         foreach ($this->_collections as $collectionData) {
+            if ($this->_logger instanceof Zend_Log) {
+                $this->_logger->debug(__METHOD__ . '::' . __LINE__ . " Processing {$collectionData->collectionId}...");
+            }
+
             $collectionChanges = 0;
 
             /**