diff --git a/xos/synchronizer/steps/sync_onu_device.py b/xos/synchronizer/steps/sync_onu_device.py
index 579c13e..611496b 100644
--- a/xos/synchronizer/steps/sync_onu_device.py
+++ b/xos/synchronizer/steps/sync_onu_device.py
@@ -31,14 +31,29 @@
 
     observes = ONUDevice
 
+    def disable_onu(self, o):
+        volt_service = o.pon_port.olt_device.volt_service
+        voltha = Helpers.get_voltha_info(volt_service)
+
+        log.info("Disabling device %s in voltha" % o.device_id)
+        request = requests.post("%s:%d/api/v1/devices/%s/disable" % (voltha['url'], voltha['port'], o.device_id))
+
+        if request.status_code != 200:
+            raise Exception("Failed to disable ONU device %s: %s" % (o.serial_number, request.text))
+
+    def enable_onu(self, o):
+        volt_service = o.pon_port.olt_device.volt_service
+        voltha = Helpers.get_voltha_info(volt_service)
+
+        log.info("Enabling device %s in voltha" % o.device_id)
+        request = requests.post("%s:%d/api/v1/devices/%s/enable" % (voltha['url'], voltha['port'], o.device_id))
+
+        if request.status_code != 200:
+            raise Exception("Failed to enable ONU device %s: %s" % (o.serial_number, request.text))
+
     def sync_record(self, o):
 
         if o.admin_state == "DISABLED":
-            volt_service = o.pon_port.olt_device.volt_service
-            voltha = Helpers.get_voltha_info(volt_service)
-
-            log.info("Disabling device %s in voltha" % o.device_id)
-            request = requests.post("%s:%d/api/v1/devices/%s/disable" % (voltha['url'], voltha['port'], o.device_id))
-
-            if request.status_code != 200:
-                raise Exception("Failed to disable ONU device: %s" % request.text)
\ No newline at end of file
+            self.disable_onu(o)
+        if o.admin_state == "ENABLED":
+            self.enable_onu(o)
\ No newline at end of file
diff --git a/xos/synchronizer/steps/test_sync_onu_device.py b/xos/synchronizer/steps/test_sync_onu_device.py
index 85a4021..3cf1062 100644
--- a/xos/synchronizer/steps/test_sync_onu_device.py
+++ b/xos/synchronizer/steps/test_sync_onu_device.py
@@ -87,10 +87,12 @@
         sys.path = self.sys_path_save
 
     @requests_mock.Mocker()
-    def test_do_nothing(self, m):
+    def test_enable(self, m):
+        m.post("http://voltha_url:1234/api/v1/devices/test_id/enable")
+
         self.o.admin_state = "ENABLED"
         self.sync_step().sync_record(self.o)
-        self.assertFalse(m.called)
+        self.assertTrue(m.called)
 
     @requests_mock.Mocker()
     def test_disable(self, m):
