diff --git a/xos/synchronizer/config.yaml b/xos/synchronizer/config.yaml
index 8a1a51e..f83dfa5 100644
--- a/xos/synchronizer/config.yaml
+++ b/xos/synchronizer/config.yaml
@@ -25,7 +25,6 @@
 models_dir: "/opt/xos/synchronizers/volt/models"
 steps_dir: "/opt/xos/synchronizers/volt/steps"
 pull_steps_dir: "/opt/xos/synchronizers/volt/pull_steps"
-event_steps_dir: "/opt/xos/synchronizers/volt/event_steps"
 logging:
   version: 1
   handlers:
diff --git a/xos/synchronizer/steps/sync_volt_service_instance.py b/xos/synchronizer/steps/sync_volt_service_instance.py
index 10091cf..11675a4 100644
--- a/xos/synchronizer/steps/sync_volt_service_instance.py
+++ b/xos/synchronizer/steps/sync_volt_service_instance.py
@@ -36,16 +36,10 @@
         if o.policy_code != 1:
             raise DeferredException("Waiting for ModelPolicy to complete")
 
-
         volt_service = VOLTService.objects.get(id=o.owner_id)
 
-        si = ServiceInstance.objects.get(id=o.id)
-
         log.info("Synching OLTServiceInstance", object=str(o), **o.tologdict())
 
-        c_tag = si.get_westbound_service_instance_properties("c_tag")
-        s_tag = si.get_westbound_service_instance_properties("s_tag")
-
         olt_device = o.onu_device.pon_port.olt_device
 
         try:
@@ -59,27 +53,19 @@
             raise DeferredException("Waiting for OLTDevice %s to be synchronized" % olt_device.name)
 
         log.debug("Adding subscriber with info",
-                 c_tag = c_tag,
-                 s_tag = s_tag,
                  uni_port_id = uni_port_id,
-                 dp_id = olt_device.dp_id)
+                 dp_id = olt_device.dp_id
+        )
 
         # Send request to ONOS
         onos_voltha = Helpers.get_onos_voltha_info(volt_service)
         onos_voltha_basic_auth = HTTPBasicAuth(onos_voltha['user'], onos_voltha['pass'])
 
-        full_url = "%s:%d/onos/olt/oltapp/subscribers" % (onos_voltha['url'], onos_voltha['port'])
+        full_url = "%s:%d/onos/olt/oltapp/%s/%s" % (onos_voltha['url'], onos_voltha['port'], olt_device.dp_id, uni_port_id)
 
-        data = {
-            "deviceId" : olt_device.dp_id,
-            "port" : uni_port_id,
-            "sVlan" : s_tag,
-            "cVlan" : c_tag
-        }
+        log.info("Sending request to onos-voltha", url=full_url)
 
-        log.info("Sending request to onos-voltha", url=full_url, data=data)
-
-        request = requests.post(full_url, auth=onos_voltha_basic_auth, json=data)
+        request = requests.post(full_url, auth=onos_voltha_basic_auth)
 
         if request.status_code != 200:
             raise Exception("Failed to add subscriber in onos-voltha: %s" % request.text)
diff --git a/xos/synchronizer/steps/test_sync_volt_service_instance.py b/xos/synchronizer/steps/test_sync_volt_service_instance.py
index d7877f6..1f9505d 100644
--- a/xos/synchronizer/steps/test_sync_volt_service_instance.py
+++ b/xos/synchronizer/steps/test_sync_volt_service_instance.py
@@ -41,15 +41,6 @@
     raise Exception("Unable to find service=%s xproto=%s" % (service_name, xproto_name))
 # END generate model from xproto
 
-def mock_get_westbound_service_instance_properties(prop):
-    return prop
-
-def match_json(desired, req):
-    if desired!=req.json():
-        raise Exception("Got request %s, but body is not matching" % req.url)
-        return False
-    return True
-
 class TestSyncVOLTServiceInstance(unittest.TestCase):
     def setUp(self):
         global DeferredException
@@ -89,9 +80,6 @@
         volt_service.onos_voltha_user = "onos_voltha_user"
         volt_service.onos_voltha_pass = "onos_voltha_pass"
 
-        si = Mock()
-        si.get_westbound_service_instance_properties = mock_get_westbound_service_instance_properties
-
         uni_port = Mock()
         uni_port.port_no = "uni_port_id"
 
@@ -110,7 +98,6 @@
         o.tologdict.return_value = {}
 
         self.o = o
-        self.si = si
         self.onu_device = onu_device
         self.volt_service = volt_service
 
@@ -122,9 +109,7 @@
     def test_do_not_sync(self, m):
         self.onu_device.pon_port.olt_device.dp_id = None
 
-        with patch.object(ServiceInstance.objects, "get") as service_instance_mock, \
-                patch.object(VOLTService.objects, "get") as olt_service_mock:
-            service_instance_mock.return_value = self.si
+        with patch.object(VOLTService.objects, "get") as olt_service_mock:
             olt_service_mock.return_value = self.volt_service
 
             with self.assertRaises(DeferredException) as e:
@@ -137,19 +122,10 @@
     def test_do_sync(self, m):
 
         self.onu_device.pon_port.olt_device.dp_id = "of:dp_id"
-        
-        expected_conf = {
-            "deviceId" : "of:dp_id",
-            "port" : "uni_port_id",
-            "sVlan" : "s_tag",
-            "cVlan" : "c_tag"
-        }
 
-        m.post("http://onos_voltha_url:4321/onos/olt/oltapp/subscribers", status_code=200, json={}, additional_matcher=functools.partial(match_json, expected_conf))
+        m.post("http://onos_voltha_url:4321/onos/olt/oltapp/of:dp_id/uni_port_id", status_code=200, json={})
 
-        with patch.object(ServiceInstance.objects, "get") as service_instance_mock, \
-                patch.object(VOLTService.objects, "get") as olt_service_mock:
-            service_instance_mock.return_value = self.si
+        with patch.object(VOLTService.objects, "get") as olt_service_mock:
             olt_service_mock.return_value = self.volt_service
 
             self.sync_step().sync_record(self.o)
@@ -158,20 +134,11 @@
     @requests_mock.Mocker()
     def test_do_sync_fail(self, m):
 
-        expected_conf = {
-            "deviceId" : "of:dp_id",
-            "port" : "uni_port_id",
-            "sVlan" : "s_tag",
-            "cVlan" : "c_tag"
-        }
-
-        m.post("http://onos_voltha_url:4321/onos/olt/oltapp/subscribers", status_code=500, text="Mock Error", additional_matcher=functools.partial(match_json, expected_conf))
+        m.post("http://onos_voltha_url:4321/onos/olt/oltapp/of:dp_id/uni_port_id", status_code=500, text="Mock Error")
 
         self.onu_device.pon_port.olt_device.dp_id = "of:dp_id"
 
-        with patch.object(ServiceInstance.objects, "get") as service_instance_mock, \
-                patch.object(VOLTService.objects, "get") as olt_service_mock:
-            service_instance_mock.return_value = self.si
+        with patch.object(VOLTService.objects, "get") as olt_service_mock:
             olt_service_mock.return_value = self.volt_service
 
             with self.assertRaises(Exception) as e:
