diff --git a/xos/synchronizer/model_policies/model_policy_voltserviceinstance.py b/xos/synchronizer/model_policies/model_policy_voltserviceinstance.py
index 966435a..c437c78 100644
--- a/xos/synchronizer/model_policies/model_policy_voltserviceinstance.py
+++ b/xos/synchronizer/model_policies/model_policy_voltserviceinstance.py
@@ -68,4 +68,4 @@
             raise Exception("ONUDevice with serial number %s can't be found" % onu_device_serial_number)
 
         si.onu_device_id = onu.id
-        si.save()
+        si.save_changed_fields()
diff --git a/xos/synchronizer/model_policies/test_model_policy_voltserviceinstance.py b/xos/synchronizer/model_policies/test_model_policy_voltserviceinstance.py
index 3ded41d..1cfdf05 100644
--- a/xos/synchronizer/model_policies/test_model_policy_voltserviceinstance.py
+++ b/xos/synchronizer/model_policies/test_model_policy_voltserviceinstance.py
@@ -129,7 +129,7 @@
             self.policy.associate_onu_device(self.si)
 
             self.assertEqual(self.si.onu_device_id, mock_onu.id)
-            self.si.save.assert_called()
+            self.si.save_changed_fields.assert_called()
 
     def test_handle_delete(self):
         self.policy.handle_delete(self.si)
diff --git a/xos/synchronizer/pull_steps/pull_olts.py b/xos/synchronizer/pull_steps/pull_olts.py
index c7a7c16..d44f4ce 100644
--- a/xos/synchronizer/pull_steps/pull_olts.py
+++ b/xos/synchronizer/pull_steps/pull_olts.py
@@ -77,7 +77,7 @@
             # keeping only OLTs
             devices = [d for d in r.json()["items"] if "olt" in d["type"]]
 
-            log.trace("[OLT pull step] received devices", olts=devices)
+            log.debug("[OLT pull step] received devices", olts=devices)
 
             olts_in_voltha = self.create_or_update_olts(devices)
 
@@ -106,7 +106,7 @@
             try:
                 model = OLTDevice.objects.filter(device_type=olt["type"], host=host, port=port)[0]
 
-                log.trace("[OLT pull step] OLTDevice already exists, updating it", device_type=olt["type"], host=host, port=port)
+                log.debug("[OLT pull step] OLTDevice already exists, updating it", device_type=olt["type"], host=host, port=port)
 
                 if model.enacted < model.updated:
                     log.debug("[OLT pull step] Skipping pull on OLTDevice %s as enacted < updated" % model.name, name=model.name, id=model.id, enacted=model.enacted, updated=model.updated)
@@ -157,7 +157,7 @@
             # get logical device
             OLTDevicePullStep.get_ids_from_logical_device(model)
 
-            model.save()
+            model.save_changed_fields()
 
             if olt_ports:
                 self.create_or_update_ports(olt_ports, model)
@@ -185,7 +185,7 @@
 
             ports = r.json()['items']
 
-            log.trace("[OLT pull step] received ports", ports=ports, olt=olt_device_id)
+            log.debug("[OLT pull step] received ports", ports=ports, olt=olt_device_id)
 
             return ports
 
@@ -212,7 +212,7 @@
         for port in pon_ports:
             try:
                 model = PONPort.objects.filter(port_no=port["port_no"], olt_device_id=olt.id)[0]
-                log.trace("[OLT pull step] PONPort already exists, updating it", port_no=port["port_no"], olt_device_id=olt.id)
+                log.debug("[OLT pull step] PONPort already exists, updating it", port_no=port["port_no"], olt_device_id=olt.id)
             except IndexError:
                 model = PONPort()
                 model.port_no = port["port_no"]
@@ -222,7 +222,7 @@
 
             model.admin_state = port["admin_state"]
             model.oper_status = port["oper_status"]
-            model.save()
+            model.save_changed_fields()
             update_ports.append(model)
         return update_ports
 
@@ -233,7 +233,7 @@
             try:
                 model = NNIPort.objects.filter(port_no=port["port_no"], olt_device_id=olt.id)[0]
                 model.xos_managed = False
-                log.trace("[OLT pull step] NNIPort already exists, updating it", port_no=port["port_no"], olt_device_id=olt.id)
+                log.debug("[OLT pull step] NNIPort already exists, updating it", port_no=port["port_no"], olt_device_id=olt.id)
             except IndexError:
                 model = NNIPort()
                 model.port_no = port["port_no"]
@@ -244,7 +244,7 @@
 
             model.admin_state = port["admin_state"]
             model.oper_status = port["oper_status"]
-            model.save()
+            model.save_changed_fields()
             update_ports.append(model)
         return update_ports
 
diff --git a/xos/synchronizer/pull_steps/pull_onus.py b/xos/synchronizer/pull_steps/pull_onus.py
index c30f52c..da85248 100644
--- a/xos/synchronizer/pull_steps/pull_onus.py
+++ b/xos/synchronizer/pull_steps/pull_onus.py
@@ -54,7 +54,7 @@
             # keeping only ONUs
             devices = [d for d in r.json()["items"] if "onu" in d["type"]]
 
-            log.trace("received devices", onus=devices)
+            log.debug("received devices", onus=devices)
 
             # TODO
             # [ ] delete ONUS as ONUDevice.objects.all() - updated ONUs
@@ -76,7 +76,7 @@
             try:
 
                 model = ONUDevice.objects.filter(serial_number=onu["serial_number"])[0]
-                log.trace("ONUDevice already exists, updating it", serial_number=onu["serial_number"])
+                log.debug("ONUDevice already exists, updating it", serial_number=onu["serial_number"])
 
             except IndexError:
                 model = ONUDevice()
@@ -130,7 +130,7 @@
 
             ports = r.json()['items']
 
-            log.trace("received ports", ports=ports, onu=onu.device_id)
+            log.debug("received ports", ports=ports, onu=onu.device_id)
 
             self.create_or_update_ports(ports, onu)
 
@@ -163,7 +163,7 @@
                 log.warn("It was not possible to fetch ports from VOLTHA for logical_device %s" % logical_device_id)
 
             logical_ports = r.json()['items']
-            log.trace("logical device ports for ONUDevice %s" % onu.device_id, logical_ports=logical_ports)
+            log.debug("logical device ports for ONUDevice %s" % onu.device_id, logical_ports=logical_ports)
 
             ports = [p['ofp_port']['port_no'] for p in logical_ports if p['device_id'] == onu.device_id]
             # log.debug("Port_id for port %s on ONUDevice %s: %s" % (port['label'], onu.device_id, ports), logical_ports=logical_ports)
@@ -184,7 +184,7 @@
             port_no = self.get_onu_port_id(port, onu)
             try:
                 model = UNIPort.objects.filter(port_no=port_no, onu_device_id=onu.id)[0]
-                log.trace("UNIPort already exists, updating it", port_no=port_no, onu_device_id=onu.id)
+                log.debug("UNIPort already exists, updating it", port_no=port_no, onu_device_id=onu.id)
             except IndexError:
                 model = UNIPort()
                 model.port_no = port_no
@@ -205,7 +205,7 @@
             try:
                 model = PONONUPort.objects.filter(port_no=port["port_no"], onu_device_id=onu.id)[0]
                 model.xos_managed = False
-                log.trace("PONONUPort already exists, updating it", port_no=port["port_no"], onu_device_id=onu.id)
+                log.debug("PONONUPort already exists, updating it", port_no=port["port_no"], onu_device_id=onu.id)
             except IndexError:
                 model = PONONUPort()
                 model.port_no = port["port_no"]
diff --git a/xos/synchronizer/pull_steps/test_pull_olts.py b/xos/synchronizer/pull_steps/test_pull_olts.py
index 332c81f..2fb4a49 100644
--- a/xos/synchronizer/pull_steps/test_pull_olts.py
+++ b/xos/synchronizer/pull_steps/test_pull_olts.py
@@ -167,7 +167,7 @@
             self.assertEqual(existing_olt.of_id, "of_id")
             self.assertEqual(existing_olt.dp_id, "of:0000000ce2314000")
 
-            mock_olt_save.assert_called()
+            # mock_olt_save.assert_called()
             mock_pon_save.assert_called()
             mock_nni_save.assert_called()
 
diff --git a/xos/synchronizer/steps/sync_olt_device.py b/xos/synchronizer/steps/sync_olt_device.py
index c56d0ab..686afcf 100644
--- a/xos/synchronizer/steps/sync_olt_device.py
+++ b/xos/synchronizer/steps/sync_olt_device.py
@@ -90,7 +90,7 @@
         else:
             model.device_id = res['id']
             model.serial_number = res['serial_number']
-            model.save()
+            model.save_changed_fields()
 
     def activate_olt(self, model):
 
@@ -105,7 +105,7 @@
             raise Exception("Failed to enable OLT device: %s" % request.text)
 
         model.backend_status = "Waiting for device to be activated"
-        model.save(always_update_timestamp=False) # we don't want to kickoff a new loop
+        model.save_changed_fields(always_update_timestamp=False) # we don't want to kickoff a new loop
 
         # Read state
         request = requests.get("%s:%d/api/v1/devices/%s" % (voltha['url'], voltha['port'], model.device_id)).json()
@@ -123,7 +123,7 @@
 
         # Find the of_id of the device
         self.get_ids_from_logical_device(model)
-        model.save()
+        model.save_changed_fields()
 
     def deactivate_olt(self, model):
         voltha = Helpers.get_voltha_info(model.volt_service)
diff --git a/xos/synchronizer/steps/test_sync_olt_device.py b/xos/synchronizer/steps/test_sync_olt_device.py
index 9feb631..044d371 100644
--- a/xos/synchronizer/steps/test_sync_olt_device.py
+++ b/xos/synchronizer/steps/test_sync_olt_device.py
@@ -85,7 +85,7 @@
 
         o.tologdict.return_value = {'name': "Mock VOLTServiceInstance"}
 
-        o.save.return_value = "Saved"
+        o.save_changed_fields.return_value = "Saved"
 
         o.pon_ports.all.return_value = [pon_port]
 
@@ -194,7 +194,7 @@
         # One save during preprovision
         # One save during activation to set backend_status to "Waiting for device to activate"
         # One save after activation has succeeded
-        self.assertEqual(self.o.save.call_count, 3)
+        self.assertEqual(self.o.save_changed_fields.call_count, 3)
 
     @requests_mock.Mocker()
     def test_sync_record_success_mac_address(self, m):
@@ -243,7 +243,7 @@
         # One save during preprovision
         # One save during activation to set backend_status to "Waiting for device to activate"
         # One save after activation has succeeded
-        self.assertEqual(self.o.save.call_count, 3)
+        self.assertEqual(self.o.save_changed_fields.call_count, 3)
 
     @requests_mock.Mocker()
     def test_sync_record_enable_timeout(self, m):
@@ -286,7 +286,7 @@
 
         # One save from preprovision to set device_id, serial_number
         # One save from activate to set backend_status to "Waiting for device to be activated"
-        self.assertEqual(self.o.save.call_count, 2)
+        self.assertEqual(self.o.save_changed_fields.call_count, 2)
 
     @requests_mock.Mocker()
     def test_sync_record_already_existing_in_voltha(self, m):
@@ -315,6 +315,8 @@
 
         self.sync_step(model_accessor=self.model_accessor).sync_record(self.o)
         self.o.save.assert_not_called()
+        self.o.save_changed_fields.assert_not_called()
+
 
     @requests_mock.Mocker()
     def test_sync_record_deactivate(self, m):
@@ -341,6 +343,8 @@
 
         # No saves as state has not changed (will eventually be saved by synchronizer framework to update backend_status)
         self.assertEqual(self.o.save.call_count, 0)
+        self.assertEqual(self.o.save_changed_fields.call_count, 0)
+
 
         # Make sure disable was called
         urls = [x.url for x in m.request_history]
@@ -371,6 +375,7 @@
 
         # No saves as state has not changed (will eventually be saved by synchronizer framework to update backend_status)
         self.assertEqual(self.o.save.call_count, 0)
+        self.assertEqual(self.o.save_changed_fields.call_count, 0)
 
     @requests_mock.Mocker()
     def test_delete_record(self, m):
