diff --git a/VERSION b/VERSION
index bfac6fc..b9975ae 100644
--- a/VERSION
+++ b/VERSION
@@ -1,2 +1,2 @@
-2.1.36
+2.1.37
 
diff --git a/containers/xos/Dockerfile.client b/containers/xos/Dockerfile.client
index eed6feb..cc8c026 100644
--- a/containers/xos/Dockerfile.client
+++ b/containers/xos/Dockerfile.client
@@ -13,7 +13,7 @@
 # limitations under the License.
 
 # xosproject/xos-client
-FROM xosproject/xos-libraries:2.1.36
+FROM xosproject/xos-libraries:2.1.37
 
 # Install XOS client
 COPY lib/xos-api /tmp/xos-api
diff --git a/containers/xos/Dockerfile.libraries b/containers/xos/Dockerfile.libraries
index c96f241..66f9f01 100644
--- a/containers/xos/Dockerfile.libraries
+++ b/containers/xos/Dockerfile.libraries
@@ -13,7 +13,7 @@
 # limitations under the License.
 
 # xosproject/xos-libraries
-FROM xosproject/xos-base:2.1.36
+FROM xosproject/xos-base:2.1.37
 
 # Add libraries
 COPY lib /opt/xos/lib
diff --git a/containers/xos/Dockerfile.synchronizer-base b/containers/xos/Dockerfile.synchronizer-base
index 2ae3ed4..9230cd9 100644
--- a/containers/xos/Dockerfile.synchronizer-base
+++ b/containers/xos/Dockerfile.synchronizer-base
@@ -13,7 +13,7 @@
 # limitations under the License.
 
 # xosproject/xos-synchronizer-base
-FROM xosproject/xos-client:2.1.36
+FROM xosproject/xos-client:2.1.37
 
 COPY xos/synchronizers/new_base /opt/xos/synchronizers/new_base
 COPY xos/xos/logger.py /opt/xos/xos/logger.py
diff --git a/containers/xos/Dockerfile.xos-core b/containers/xos/Dockerfile.xos-core
index aa1eb15..0a92707 100644
--- a/containers/xos/Dockerfile.xos-core
+++ b/containers/xos/Dockerfile.xos-core
@@ -13,7 +13,7 @@
 # limitations under the License.
 
 # xosproject/xos-core
-FROM xosproject/xos-libraries:2.1.36
+FROM xosproject/xos-libraries:2.1.37
 
 # Install XOS
 ADD xos /opt/xos
diff --git a/lib/xos-api/xosapi/orm.py b/lib/xos-api/xosapi/orm.py
index 398d199..41d775f 100644
--- a/lib/xos-api/xosapi/orm.py
+++ b/lib/xos-api/xosapi/orm.py
@@ -18,6 +18,7 @@
 import threading
 import time
 import imp
+import traceback
 from xosconfig import Config
 from multistructlog import create_logger
 
@@ -47,6 +48,17 @@
 
 convenience_wrappers = {}
 
+# Find the topmost synchronizer-specific function in the call stack
+def get_synchronizer_function():
+    result = None
+    for file,line,func,stmt in traceback.extract_stack():
+        if file.startswith("/opt/xos/synchronizers"):
+            if not result:
+                result = "%s:%s()" % (file,func)
+            if not file.startswith("/opt/xos/synchronizers/new_base"):
+                result = "%s:%s()" % (file,func)
+                break
+    return result
 
 class ORMGenericContentNotFoundException(Exception):
     pass
@@ -409,13 +421,19 @@
         is_sync_save=False,
         is_policy_save=False,
     ):
+        classname = self._wrapped_class.__class__.__name__
         if self.is_new:
+            log.debug("save(): is new", classname=classname, syncstep=get_synchronizer_function())
             new_class = self.stub.invoke(
-                "Create%s" % self._wrapped_class.__class__.__name__, self._wrapped_class
+                "Create%s" % classname, self._wrapped_class
             )
             self._wrapped_class = new_class
             self.is_new = False
         else:
+            if self.has_changed:
+              log.debug("save(): updated", classname=classname, changed_fields=self.changed_fields, syncstep=get_synchronizer_function())
+            else:
+              log.debug("save(): no changes", classname=classname, syncstep=get_synchronizer_function())
             metadata = []
             if update_fields:
                 metadata.append(("update_fields", ",".join(update_fields)))
@@ -426,7 +444,7 @@
             if is_sync_save:
                 metadata.append(("is_sync_save", "1"))
             self.stub.invoke(
-                "Update%s" % self._wrapped_class.__class__.__name__,
+                "Update%s" % classname,
                 self._wrapped_class,
                 metadata=metadata,
             )
