diff --git a/TestON/tests/USECASE/SegmentRouting/dependencies/Testcaselib.py b/TestON/tests/USECASE/SegmentRouting/dependencies/Testcaselib.py
index bc4bea6..6d1d21f 100644
--- a/TestON/tests/USECASE/SegmentRouting/dependencies/Testcaselib.py
+++ b/TestON/tests/USECASE/SegmentRouting/dependencies/Testcaselib.py
@@ -75,6 +75,7 @@
             main.configPath = main.path + ( "/.." if main.useCommonConf else "" ) + "/dependencies/"
             main.bmv2Path = "/tools/dev/mininet/"
             main.forJson = "json/"
+            main.forcfg = "netcfg/"
             main.forChart = "chart/"
             main.forConfig = "conf/"
             main.forHost = "host/"
@@ -214,6 +215,28 @@
             main.Cluster.active( 0 ).REST.setNetCfg( json.load( cfg ) )
 
     @staticmethod
+    def loadNewJson( main, suffix='' ):
+        returnValue = main.TRUE
+        with open( "%s%s.cfg%s" % ( main.configPath + main.forcfg,
+                                     main.cfgName, suffix ) ) as cfg:
+            desiredJSON = json.load ( cfg )
+            for device in desiredJSON ["ports"].keys():
+                deviceCfg = desiredJSON[ "ports" ][ device ]
+                currentJSON = main.Cluster.active( 0 ).REST.getNetCfg( subjectClass = "ports", subjectKey = device )
+
+                currentJSON = json.loads( currentJSON )
+                if currentJSON['interfaces'][0]['ips'] != deviceCfg['interfaces'][0]['ips']:
+                    currentJSON['interfaces'][0]['ips'] == deviceCfg['interfaces'][0]['ips']
+                    data = { 'interfaces': currentJSON['interfaces'] }
+                    A = main.Cluster.active( 0 ).REST.setNetCfg(  data , subjectClass = "ports", subjectKey = device )
+                    returnValue = returnValue and A
+                currentJSON['interfaces'] = deviceCfg['interfaces']
+                data = { 'interfaces': currentJSON['interfaces'] }
+                B = main.Cluster.active( 0 ).REST.setNetCfg( data , subjectClass = "ports", subjectKey = device )
+                returnValue = returnValue and B
+        return returnValue
+
+    @staticmethod
     def loadXconnects( main, suffix='' ):
         with open( "%s%s-xconnects.json%s" % ( main.configPath + main.forJson,
                                      main.cfgName, suffix ) ) as cfg:
