diff --git a/src/test/utils/CordContainer.py b/src/test/utils/CordContainer.py
index ba62ef7..b7933f8 100644
--- a/src/test/utils/CordContainer.py
+++ b/src/test/utils/CordContainer.py
@@ -587,9 +587,9 @@
     JAVA_OPTS_DEFAULT = JAVA_OPTS_FORMAT.format(*SYSTEM_MEMORY) #-XX:+PrintGCDetails -XX:+PrintGCTimeStamps'
     JAVA_OPTS_CLUSTER_DEFAULT = JAVA_OPTS_FORMAT.format(*INSTANCE_MEMORY)
     env = { 'ONOS_APPS' : 'drivers,openflow,proxyarp,vrouter', 'JAVA_OPTS' : JAVA_OPTS_DEFAULT }
-    onos_cord_apps = ( ['cord-config', '1.2-SNAPSHOT'],
-                       ['aaa', '1.2-SNAPSHOT'],
-                       ['igmp', '1.2-SNAPSHOT'],
+    onos_cord_apps = ( ['cord-config', '1.2-SNAPSHOT', 'org.opencord.config'],
+                       ['aaa', '1.2-SNAPSHOT', 'org.opencord.aaa'],
+                       ['igmp', '1.2-SNAPSHOT', 'org.opencord.igmp'],
                        )
     cord_apps_version_updated = False
     expose_port = False
@@ -994,7 +994,7 @@
     @classmethod
     def install_cord_apps(cls, onos_ip = None):
         cls.update_cord_apps_version(onos_ip = onos_ip)
-        for app, version in cls.onos_cord_apps:
+        for app, version,_ in cls.onos_cord_apps:
             app_file = '{}/{}-{}.oar'.format(cls.cord_apps_dir, app, version)
             ok, code = OnosCtrl.install_app(app_file, onos_ip = onos_ip)
             ##app already installed (conflicts)
@@ -1003,6 +1003,21 @@
             print('ONOS app %s, version %s %s' %(app, version, 'installed' if ok else 'failed to install'))
             time.sleep(2)
 
+    @classmethod
+    def activate_apps(cls, apps, onos_ip = None, deactivate = False):
+        for app in apps:
+            if deactivate is True:
+                OnosCtrl(app, controller = onos_ip).deactivate()
+                time.sleep(2)
+            OnosCtrl(app, controller = onos_ip).activate()
+
+        time.sleep(5)
+
+    @classmethod
+    def activate_cord_apps(cls, onos_ip = None, deactivate = True):
+        cord_apps = map(lambda a: a[2], cls.onos_cord_apps)
+        cls.activate_apps(cord_apps, onos_ip = onos_ip, deactivate = deactivate)
+
 class OnosStopWrapper(Container):
     def __init__(self, name):
         super(OnosStopWrapper, self).__init__(name, Onos.IMAGE, tag = Onos.TAG, prefix = Container.IMAGE_PREFIX)
diff --git a/src/test/utils/VolthaCtrl.py b/src/test/utils/VolthaCtrl.py
index fe2761c..2702b9a 100644
--- a/src/test/utils/VolthaCtrl.py
+++ b/src/test/utils/VolthaCtrl.py
@@ -143,6 +143,7 @@
     UPLINK_VLAN_MAP = { 'of:0000000000000001' : '222' }
     REST_PORT = 8881
     HOST = '172.17.0.1'
+    ONOS_APPS = ('org.onosproject.dhcp', 'org.onosproject.dhcp-relay', 'org.ciena.cordigmp')
 
     def __init__(self, host = HOST, rest_port = REST_PORT, uplink_vlan_map = UPLINK_VLAN_MAP, uplink_vlan_start = UPLINK_VLAN_START):
         self.host = host
@@ -201,10 +202,13 @@
             OnosCtrl('org.onosproject.drivers').deactivate()
             OnosCtrl('org.onosproject.openflow-base').deactivate()
             OnosCtrl.config(device_config)
-            time.sleep(2)
+            time.sleep(10)
             OnosCtrl('org.onosproject.drivers').activate()
             OnosCtrl('org.onosproject.openflow-base').activate()
             time.sleep(5)
+            log.info('Reactivating CORD and ONOS apps')
+            Onos.activate_cord_apps(deactivate = True)
+            Onos.activate_apps(self.ONOS_APPS, deactivate = True)
 
         return self.switch_map
 
