diff --git a/drivers/microsemi/src/test/java/org/onosproject/yang/MockMicrosemiRegistrator.java b/drivers/microsemi/src/test/java/org/onosproject/yang/MockMicrosemiRegistrator.java
index cdf53d0..268320f 100644
--- a/drivers/microsemi/src/test/java/org/onosproject/yang/MockMicrosemiRegistrator.java
+++ b/drivers/microsemi/src/test/java/org/onosproject/yang/MockMicrosemiRegistrator.java
@@ -17,11 +17,9 @@
 
 import org.onosproject.drivers.microsemi.yang.MicrosemiModelRegistrator;
 import org.onosproject.yang.compiler.datamodel.YangNode;
-import org.onosproject.yang.compiler.datamodel.utils.DataModelUtils;
 import org.onosproject.yang.runtime.DefaultModelRegistrationParam;
 import org.onosproject.yang.runtime.ModelRegistrationParam;
 import org.onosproject.yang.runtime.YangModelRegistry;
-import org.onosproject.yang.runtime.helperutils.YangApacheUtils;
 import org.onosproject.yang.runtime.impl.DefaultYangModelRegistry;
 
 import java.io.File;
@@ -29,6 +27,10 @@
 import java.util.ArrayList;
 import java.util.List;
 
+import static org.onosproject.yang.compiler.tool.YangCompilerManager.deSerializeDataModel;
+import static org.onosproject.yang.compiler.tool.YangCompilerManager.getYangNodes;
+import static org.onosproject.yang.compiler.tool.YangCompilerManager.processYangModel;
+
 public class MockMicrosemiRegistrator extends MicrosemiModelRegistrator {
     private static final String FS = File.separator;
     private static final String PATH = System.getProperty("user.dir") +
@@ -45,9 +47,9 @@
         modelRegistry = new DefaultYangModelRegistry();
         List<YangNode> nodes = new ArrayList<>();
         try {
-            nodes.addAll(DataModelUtils.deSerializeDataModel(META_PATH));
+            nodes.addAll(getYangNodes(deSerializeDataModel(META_PATH)));
 
-            model = YangApacheUtils.processYangModel(META_PATH, nodes);
+            model = processYangModel(META_PATH, nodes, "test", false);
             ModelRegistrationParam.Builder b =
                     DefaultModelRegistrationParam.builder().setYangModel(model);
             b.setYangModel(model);
diff --git a/drivers/microsemi/src/test/java/org/onosproject/yang/MockYangRuntimeManager.java b/drivers/microsemi/src/test/java/org/onosproject/yang/MockYangRuntimeManager.java
index e2f4389..5a7db94 100644
--- a/drivers/microsemi/src/test/java/org/onosproject/yang/MockYangRuntimeManager.java
+++ b/drivers/microsemi/src/test/java/org/onosproject/yang/MockYangRuntimeManager.java
@@ -26,9 +26,12 @@
 import org.onosproject.yang.model.NodeKey;
 import org.onosproject.yang.model.ResourceData;
 import org.onosproject.yang.model.ResourceId;
+import org.onosproject.yang.model.RpcContext;
 import org.onosproject.yang.model.SchemaContext;
 import org.onosproject.yang.model.SchemaContextProvider;
 import org.onosproject.yang.model.YangModel;
+import org.onosproject.yang.model.YangModule;
+import org.onosproject.yang.model.YangModuleId;
 import org.onosproject.yang.runtime.CompositeData;
 import org.onosproject.yang.runtime.CompositeStream;
 import org.onosproject.yang.runtime.ModelRegistrationParam;
@@ -38,6 +41,7 @@
 import org.onosproject.yang.runtime.YangSerializer;
 import org.onosproject.yang.runtime.YangSerializerRegistry;
 import org.onosproject.yang.runtime.impl.DefaultModelConverter;
+import org.onosproject.yang.runtime.impl.DefaultSchemaContextProvider;
 import org.onosproject.yang.runtime.impl.DefaultYangModelRegistry;
 import org.onosproject.yang.runtime.impl.DefaultYangRuntimeHandler;
 import org.onosproject.yang.runtime.impl.DefaultYangSerializerRegistry;
@@ -64,6 +68,7 @@
         private DefaultYangSerializerRegistry serializerRegistry;
         private DefaultYangRuntimeHandler runtimeService;
         private DefaultModelConverter modelConverter;
+        private DefaultSchemaContextProvider schemaContextProvider;
 
         public void setModelRegistry(DefaultYangModelRegistry yReg) {
             this.modelRegistry = yReg;
@@ -79,6 +84,7 @@
             serializerRegistry.registerSerializer(new JsonSerializer());
             serializerRegistry.registerSerializer(new XmlSerializer());
             modelConverter = new DefaultModelConverter(modelRegistry);
+            schemaContextProvider = new DefaultSchemaContextProvider(modelRegistry);
             log.info("Started");
         }
 
@@ -103,7 +109,17 @@
             return modelRegistry.getModels();
         }
 
-        @Override
+    @Override
+    public YangModel getModel(String s) {
+        return modelRegistry.getModel(s);
+    }
+
+    @Override
+    public YangModule getModule(YangModuleId yangModuleId) {
+        return modelRegistry.getModule(yangModuleId);
+    }
+
+    @Override
         public void registerSerializer(YangSerializer ys) {
             serializerRegistry.registerSerializer(ys);
         }
@@ -149,4 +165,9 @@
             log.info("To be implemented.");
             return null;
         }
+
+    @Override
+    public RpcContext getRpcContext(ResourceId resourceId) {
+        return schemaContextProvider.getRpcContext(resourceId);
+    }
 }
