diff --git a/xos/synchronizer/steps/sync_volt_service_instance.py b/xos/synchronizer/steps/sync_volt_service_instance.py
index 2598f60..9f005bd 100644
--- a/xos/synchronizer/steps/sync_volt_service_instance.py
+++ b/xos/synchronizer/steps/sync_volt_service_instance.py
@@ -67,4 +67,25 @@
         if request.status_code != 200:
             raise Exception("Failed to add subscriber in onos-voltha: %s" % request.text)
 
-        log.info("onos voltha response", response=request.text)
\ No newline at end of file
+        log.info("Added Subscriber in onos voltha", response=request.text)
+    
+    def delete_record(self, o):
+
+        log.info("Removing OLTServiceInstance", object=str(o), **o.tologdict())
+
+        volt_service = VOLTService.objects.get(id=o.owner_id)
+        onos_voltha = Helpers.get_onos_voltha_info(volt_service)
+        onos_voltha_basic_auth = HTTPBasicAuth(onos_voltha['user'], onos_voltha['pass'])
+
+        olt_device = o.onu_device.pon_port.olt_device
+        # NOTE each ONU has only one UNI port!
+        uni_port_id = o.onu_device.uni_ports.first().port_no
+
+        full_url = "%s:%d/onos/olt/oltapp/%s/%s" % (onos_voltha['url'], onos_voltha['port'], olt_device.dp_id, uni_port_id)
+
+        request = requests.delete(full_url, auth=onos_voltha_basic_auth)
+
+        if request.status_code != 204:
+            raise Exception("Failed to remove subscriber from onos-voltha: %s" % request.text)
+
+        log.info("Removed Subscriber from onos voltha", response=request.text)
\ No newline at end of file
diff --git a/xos/synchronizer/steps/test_sync_volt_service_instance.py b/xos/synchronizer/steps/test_sync_volt_service_instance.py
index 6fc377a..bf994d3 100644
--- a/xos/synchronizer/steps/test_sync_volt_service_instance.py
+++ b/xos/synchronizer/steps/test_sync_volt_service_instance.py
@@ -155,5 +155,18 @@
                 self.assertTrue(m.called)
                 self.assertEqual(e.exception.message, "Failed to add subscriber in onos voltha: Mock Error")
 
+    @requests_mock.Mocker()
+    def test_delete(self, m):
+        m.delete("http://onos_voltha_url:4321/onos/olt/oltapp/of:dp_id/uni_port_id", status_code=204)
+
+        self.onu_device.pon_port.olt_device.dp_id = "of:dp_id"
+
+        with patch.object(VOLTService.objects, "get") as olt_service_mock:
+            olt_service_mock.return_value = self.volt_service
+
+            self.sync_step().delete_record(self.o)
+            self.assertTrue(m.called)
+            self.assertEqual(m.call_count, 1)
+
 if __name__ == "__main__":
     unittest.main()
