diff --git a/src/test/cordSubscriber/cordSubscriberTest.py b/src/test/cordSubscriber/cordSubscriberTest.py
index d585323..180726a 100644
--- a/src/test/cordSubscriber/cordSubscriberTest.py
+++ b/src/test/cordSubscriber/cordSubscriberTest.py
@@ -17,6 +17,7 @@
 from nose.tools import *
 from nose.twistedtools import reactor, deferred
 from twisted.internet import defer
+from scapy.all import IP
 import time, monotonic
 import os, sys
 import tempfile
diff --git a/src/test/igmp/igmpTest.py b/src/test/igmp/igmpTest.py
index 7b1cda4..bd99d5e 100644
--- a/src/test/igmp/igmpTest.py
+++ b/src/test/igmp/igmpTest.py
@@ -111,8 +111,8 @@
         time.sleep(2)
 
     def onos_ssm_table_load(self, groups, src_list = ['1.2.3.4'],flag = False):
-          ssm_dict = {'apps' : { 'org.onosproject.igmp' : { 'ssmTranslate' : [] } } }
-          ssm_xlate_list = ssm_dict['apps']['org.onosproject.igmp']['ssmTranslate']
+          ssm_dict = {'apps' : { 'org.opencord.igmp' : { 'ssmTranslate' : [] } } }
+          ssm_xlate_list = ssm_dict['apps']['org.opencord.igmp']['ssmTranslate']
 	  if flag: #to maintain seperate group-source pair.
 	      for i in range(len(groups)):
 		  d = {}
@@ -2154,8 +2154,8 @@
     def test_igmp_registering_invalid_group(self):
         groups = ['218.18.19.29']
         source = [self.randomsourceip()]
-	ssm_dict = {'apps' : { 'org.onosproject.igmp' : { 'ssmTranslate' : [] } } }
-	ssm_xlate_list = ssm_dict['apps']['org.onosproject.igmp']['ssmTranslate']
+	ssm_dict = {'apps' : { 'org.opencord.igmp' : { 'ssmTranslate' : [] } } }
+	ssm_xlate_list = ssm_dict['apps']['org.opencord.igmp']['ssmTranslate']
 	for g in groups:
             for s in source:
                 d = {}
@@ -2172,8 +2172,8 @@
     def test_igmp_registering_invalid_source(self):
         groups = [self.random_mcast_ip()]
         sources = ['224.10.28.34','193.73.219.257']
-        ssm_dict = {'apps' : { 'org.onosproject.igmp' : { 'ssmTranslate' : [] } } }
-        ssm_xlate_list = ssm_dict['apps']['org.onosproject.igmp']['ssmTranslate']
+        ssm_dict = {'apps' : { 'org.opencord.igmp' : { 'ssmTranslate' : [] } } }
+        ssm_xlate_list = ssm_dict['apps']['org.opencord.igmp']['ssmTranslate']
         for g in groups:
             for s in sources:
                 d = {}
diff --git a/src/test/utils/Channels.py b/src/test/utils/Channels.py
index d755d5b..b44d6df 100644
--- a/src/test/utils/Channels.py
+++ b/src/test/utils/Channels.py
@@ -47,7 +47,7 @@
         self.ssm_list += ssm_list
         self.src_list = src_list
         self.delay = delay
-        self.onos_ctrl = OnosCtrl('org.onosproject.igmp',controller=self.controller)
+        self.onos_ctrl = OnosCtrl('org.opencord.igmp',controller=self.controller)
         self.onos_ctrl.activate()
 
     def igmp_load_ssm_config(self, ssm_list = []):
@@ -90,8 +90,8 @@
         time.sleep(2)
 
     def ssm_table_load(self, groups):
-          ssm_dict = {'apps' : { 'org.onosproject.igmp' : { 'ssmTranslate' : [] } } }
-          ssm_xlate_list = ssm_dict['apps']['org.onosproject.igmp']['ssmTranslate']
+          ssm_dict = {'apps' : { 'org.opencord.igmp' : { 'ssmTranslate' : [] } } }
+          ssm_xlate_list = ssm_dict['apps']['org.opencord.igmp']['ssmTranslate']
           for g in groups:
                 for s in self.src_list:
                       d = {}
