diff --git a/apps/odtn/service/src/main/java/org/onosproject/odtn/cli/impl/OdtnTapiHandlersTestCommand.java b/apps/odtn/service/src/main/java/org/onosproject/odtn/cli/impl/OdtnTapiHandlersTestCommand.java
index e77706f..d622a42 100644
--- a/apps/odtn/service/src/main/java/org/onosproject/odtn/cli/impl/OdtnTapiHandlersTestCommand.java
+++ b/apps/odtn/service/src/main/java/org/onosproject/odtn/cli/impl/OdtnTapiHandlersTestCommand.java
@@ -17,6 +17,7 @@
 package org.onosproject.odtn.cli.impl;
 
 import org.apache.karaf.shell.api.action.Command;
+import org.apache.karaf.shell.api.action.lifecycle.Service;
 import org.onlab.util.XmlString;
 import org.onosproject.cli.AbstractShellCommand;
 import org.onosproject.config.DynamicConfigService;
@@ -61,10 +62,12 @@
 import static org.onosproject.odtn.utils.YangToolUtil.*;
 import static org.slf4j.LoggerFactory.getLogger;
 
-@Command(scope = "onos", name = "odtn-tapi-handlers-test")
+@Service
+@Command(scope = "onos", name = "odtn-tapi-handlers-test",
+         description = "TAPI Handlers test command")
 public class OdtnTapiHandlersTestCommand extends AbstractShellCommand {
 
-    private static final Logger log = getLogger(OdtnDcsModelCheckCommand.class);
+    private static final Logger log = getLogger(OdtnTapiHandlersTestCommand.class);
     private DynamicConfigService dcs;
     private ModelConverter modelConverter;
     private TapiContextHandler contextHandler;
@@ -82,15 +85,15 @@
         StringBuilder exp = loadXml("/test-tapi-context.xml");
 
         if (XmlString.prettifyXml(strNode).toString().contentEquals(exp)) {
-            log.info("result: ok");
+            printlog("result: ok");
         } else {
-            log.info("result: failed");
+            printlog("result: failed");
         }
     }
 
     private void printlog(String format, Object... objs) {
         print(format.replaceAll(Pattern.quote("{}"), "%s"), objs);
-        log.info(format, objs);
+        log.debug(format, objs);
     }
 
     private static StringBuilder loadXml(final String fileName) {
diff --git a/models/tapi/src/main/java/org/onosproject/models/tapi/TapiModelRegistrator.java b/models/tapi/src/main/java/org/onosproject/models/tapi/TapiModelRegistrator.java
index fa4313d..c7938b7 100644
--- a/models/tapi/src/main/java/org/onosproject/models/tapi/TapiModelRegistrator.java
+++ b/models/tapi/src/main/java/org/onosproject/models/tapi/TapiModelRegistrator.java
@@ -23,11 +23,15 @@
 import org.onosproject.yang.AbstractYangModelRegistrator;
 import org.onosproject.yang.gen.v1.tapicommon.rev20181210.TapiCommon;
 import org.onosproject.yang.gen.v1.tapiconnectivity.rev20181210.TapiConnectivity;
+import org.onosproject.yang.gen.v1.tapidsr.rev20181210.TapiDsr;
+import org.onosproject.yang.gen.v1.tapieth.rev20181210.TapiEth;
+import org.onosproject.yang.gen.v1.tapinotification.rev20181210.TapiNotification;
 import org.onosproject.yang.gen.v1.tapioam.rev20181210.TapiOam;
 import org.onosproject.yang.gen.v1.tapiodu.rev20181210.TapiOdu;
 import org.onosproject.yang.gen.v1.tapipathcomputation.rev20181210.TapiPathComputation;
 import org.onosproject.yang.gen.v1.tapiphotonicmedia.rev20181210.TapiPhotonicMedia;
 import org.onosproject.yang.gen.v1.tapitopology.rev20181210.TapiTopology;
+import org.onosproject.yang.gen.v1.tapivirtualnetwork.rev20181210.TapiVirtualNetwork;
 import org.onosproject.yang.model.DefaultYangModuleId;
 import org.onosproject.yang.model.YangModuleId;
 import org.onosproject.yang.runtime.AppModuleInfo;
@@ -73,6 +77,18 @@
         appInfo.put(new DefaultYangModuleId("tapi-path-computation", "2018-12-10"),
                 new DefaultAppModuleInfo(TapiPathComputation.class, null));
 
+        appInfo.put(new DefaultYangModuleId("tapi-notification", "2018-12-10"),
+                new DefaultAppModuleInfo(TapiNotification.class, null));
+
+        appInfo.put(new DefaultYangModuleId("tapi-virtual-network", "2018-12-10"),
+                new DefaultAppModuleInfo(TapiVirtualNetwork.class, null));
+
+        appInfo.put(new DefaultYangModuleId("tapi-dsr", "2018-12-10"),
+                new DefaultAppModuleInfo(TapiDsr.class, null));
+
+        appInfo.put(new DefaultYangModuleId("tapi-eth", "2018-12-10"),
+                new DefaultAppModuleInfo(TapiEth.class, null));
+
         return ImmutableMap.copyOf(appInfo);
     }
 }
