diff --git a/.gitreview b/.gitreview
index 97703b1..30b5762 100644
--- a/.gitreview
+++ b/.gitreview
@@ -3,3 +3,4 @@
 port=29418
 project=att-workflow-driver.git
 defaultremote=origin
+defaultbranch=1.0
diff --git a/Dockerfile.synchronizer b/Dockerfile.synchronizer
index 0cf80bc..dcaa44a 100644
--- a/Dockerfile.synchronizer
+++ b/Dockerfile.synchronizer
@@ -16,7 +16,7 @@
 
 # xosproject/att-workflow-driver-synchronizer
 
-FROM xosproject/xos-synchronizer-base:2.1.38
+FROM xosproject/xos-synchronizer-base:2.1.55
 
 COPY xos/synchronizer /opt/xos/synchronizers/att-workflow-driver
 COPY VERSION /opt/xos/synchronizers/att-workflow-driver/
diff --git a/VERSION b/VERSION
index fae6d73..a934990 100644
--- a/VERSION
+++ b/VERSION
@@ -1,2 +1,2 @@
-1.0.19-dev
+1.0.19
 
diff --git a/xos/synchronizer/event_steps/onu_event.py b/xos/synchronizer/event_steps/onu_event.py
index 905b6dc..bae496d 100644
--- a/xos/synchronizer/event_steps/onu_event.py
+++ b/xos/synchronizer/event_steps/onu_event.py
@@ -48,16 +48,14 @@
         value = json.loads(event.value)
         self.log.info("onu.events: received event", value=value)
 
-        att_si = self.get_att_si(value)
         if value["status"] == "activated":
             self.log.info("onu.events: activated onu", value=value)
+            att_si = self.get_att_si(value)
             att_si.onu_state = "ENABLED"
+            att_si.save_changed_fields(always_update_timestamp=True)
         elif value["status"] == "disabled":
-            self.log.info("onu.events: disabled onu", value=value)
-            att_si.onu_state = "DISABLED"
-            att_si.authentication_state = "AWAITING"
+            self.log.info("onu.events: disabled onu, not taking any action", value=value)
+            return
         else:
-            self.log.warn("onu.events: Unkown status value: %s" % value["status"], value=value)
-        att_si.save_changed_fields(always_update_timestamp=True)
-
-
+            self.log.warn("onu.events: Unknown status value: %s" % value["status"], value=value)
+            return
diff --git a/xos/synchronizer/event_steps/test_onu_events.py b/xos/synchronizer/event_steps/test_onu_events.py
index 537f535..4e939b8 100644
--- a/xos/synchronizer/event_steps/test_onu_events.py
+++ b/xos/synchronizer/event_steps/test_onu_events.py
@@ -123,23 +123,12 @@
         }
         self.event.value = json.dumps(self.event_dict)
 
-        with patch.object(AttWorkflowDriverServiceInstance.objects, "get_items") as att_si_mock , \
-            patch.object(AttWorkflowDriverService.objects, "get_items") as service_mock, \
-            patch.object(AttWorkflowDriverServiceInstance, "save", autospec=True) as mock_save:
-
-            att_si_mock.return_value = []
-            service_mock.return_value = [self.att]
+        with patch.object(AttWorkflowDriverServiceInstance, "save", autospec=True) as mock_save:
 
             self.event_step.process_event(self.event)
 
-            att_si = mock_save.call_args[0][0]
-
-            self.assertEqual(mock_save.call_count, 1)
-
-            self.assertEqual(att_si.serial_number, self.event_dict['serial_number'])
-            self.assertEqual(att_si.of_dpid, self.event_dict['of_dpid'])
-            self.assertEqual(att_si.uni_port_id, self.event_dict['uni_port_id'])
-            self.assertEqual(att_si.onu_state, "DISABLED")
+            self.assertEqual(mock_save.call_count, 0)
+            
 
 if __name__ == '__main__':
     sys.path.append("..")  # for import of helpers.py
