diff --git a/src/test/utils/Channels.py b/src/test/utils/Channels.py
index 80a086e..b9363f9 100644
--- a/src/test/utils/Channels.py
+++ b/src/test/utils/Channels.py
@@ -90,6 +90,7 @@
         time.sleep(2)
 
     def ssm_table_load(self, groups):
+          return
           ssm_dict = {'apps' : { 'org.opencord.igmp' : { 'ssmTranslate' : [] } } }
           ssm_xlate_list = ssm_dict['apps']['org.opencord.igmp']['ssmTranslate']
           for g in groups:
@@ -101,6 +102,7 @@
           self.onos_load_config(ssm_dict)
 
     def cord_port_table_load(self, cord_port_map):
+          return
           cord_group_dict = {'apps' : { 'org.ciena.cordigmp' : { 'cordIgmpTranslate' : [] } } }
           cord_group_xlate_list = cord_group_dict['apps']['org.ciena.cordigmp']['cordIgmpTranslate']
           for group, ports in cord_port_map.items():
diff --git a/src/test/utils/OnosCtrl.py b/src/test/utils/OnosCtrl.py
index 319125e..95e6368 100644
--- a/src/test/utils/OnosCtrl.py
+++ b/src/test/utils/OnosCtrl.py
@@ -256,3 +256,20 @@
            resp = requests.post(url, auth = cls.auth, data = json_data)
            return resp.ok, resp.status_code
         return False, 400
+
+    @classmethod
+    def config_device_driver(cls, controller = None, dids = None, driver = 'pmc-olt'):
+        driver_apps = ('org.onosproject.drivers', 'org.onosproject.openflow-base',)
+        if dids is None:
+            dids = cls.get_device_ids(controller = controller)
+        device_map = {}
+        for did in dids:
+            device_map[did] = { 'basic' : { 'driver' : driver } }
+        network_cfg = { 'devices' : device_map }
+        cls.config(network_cfg)
+        for driver in driver_apps:
+            cls(driver).deactivate()
+        time.sleep(2)
+        for driver in driver_apps:
+            cls(driver).activate()
+        time.sleep(5)
