[WIP] Add @Service tags to all commands and completers

Change-Id: I8d6ae6185ada30a92481ddb7b603af323656dc3a
diff --git a/apps/cfm/nbi/src/main/java/org/onosproject/cfm/cli/CfmMaAddCommand.java b/apps/cfm/nbi/src/main/java/org/onosproject/cfm/cli/CfmMaAddCommand.java
index 67deccf..911510e 100644
--- a/apps/cfm/nbi/src/main/java/org/onosproject/cfm/cli/CfmMaAddCommand.java
+++ b/apps/cfm/nbi/src/main/java/org/onosproject/cfm/cli/CfmMaAddCommand.java
@@ -17,6 +17,7 @@
 
 import org.apache.karaf.shell.api.action.Argument;
 import org.apache.karaf.shell.api.action.Command;
+import org.apache.karaf.shell.api.action.lifecycle.Service;
 import org.onlab.packet.VlanId;
 import org.onosproject.cli.AbstractShellCommand;
 import org.onosproject.incubator.net.l2monitoring.cfm.Component;
@@ -32,6 +33,7 @@
 /**
  * Adds a Maintenance Association to a Maintenance Domain.
  */
+@Service
 @Command(scope = "onos", name = "cfm-ma-add",
         description = "Add a CFM Maintenance Association to a Maintenance Domain.")
 public class CfmMaAddCommand extends AbstractShellCommand {
diff --git a/apps/cfm/nbi/src/main/java/org/onosproject/cfm/cli/CfmMaDeleteCommand.java b/apps/cfm/nbi/src/main/java/org/onosproject/cfm/cli/CfmMaDeleteCommand.java
index 493e064..31cdcb4 100644
--- a/apps/cfm/nbi/src/main/java/org/onosproject/cfm/cli/CfmMaDeleteCommand.java
+++ b/apps/cfm/nbi/src/main/java/org/onosproject/cfm/cli/CfmMaDeleteCommand.java
@@ -17,6 +17,7 @@
 
 import org.apache.karaf.shell.api.action.Argument;
 import org.apache.karaf.shell.api.action.Command;
+import org.apache.karaf.shell.api.action.lifecycle.Service;
 import org.onosproject.cli.AbstractShellCommand;
 import org.onosproject.incubator.net.l2monitoring.cfm.identifier.MaIdShort;
 import org.onosproject.incubator.net.l2monitoring.cfm.identifier.MdId;
@@ -26,6 +27,7 @@
 /**
  * Delete a Maintenance Association from the existing list of a Maintenance Domain.
  */
+@Service
 @Command(scope = "onos", name = "cfm-ma-delete",
         description = "Delete a CFM Maintenance Association and its children.")
 public class CfmMaDeleteCommand extends AbstractShellCommand {
diff --git a/apps/cfm/nbi/src/main/java/org/onosproject/cfm/cli/CfmMdAddCommand.java b/apps/cfm/nbi/src/main/java/org/onosproject/cfm/cli/CfmMdAddCommand.java
index a166a39..2b5a2bf 100644
--- a/apps/cfm/nbi/src/main/java/org/onosproject/cfm/cli/CfmMdAddCommand.java
+++ b/apps/cfm/nbi/src/main/java/org/onosproject/cfm/cli/CfmMdAddCommand.java
@@ -17,6 +17,7 @@
 
 import org.apache.karaf.shell.api.action.Command;
 import org.apache.karaf.shell.api.action.Argument;
+import org.apache.karaf.shell.api.action.lifecycle.Service;
 import org.onosproject.cli.AbstractShellCommand;
 import org.onosproject.incubator.net.l2monitoring.cfm.DefaultMaintenanceDomain;
 import org.onosproject.incubator.net.l2monitoring.cfm.MaintenanceDomain;
@@ -27,6 +28,7 @@
 /**
  * Adds a Maintenance Domain to the existing list.
  */
+@Service
 @Command(scope = "onos", name = "cfm-md-add",
         description = "Add a CFM Maintenance Domain.")
 public class CfmMdAddCommand extends AbstractShellCommand {
diff --git a/apps/cfm/nbi/src/main/java/org/onosproject/cfm/cli/CfmMdDeleteCommand.java b/apps/cfm/nbi/src/main/java/org/onosproject/cfm/cli/CfmMdDeleteCommand.java
index 8b68bc7..7cd07a1 100644
--- a/apps/cfm/nbi/src/main/java/org/onosproject/cfm/cli/CfmMdDeleteCommand.java
+++ b/apps/cfm/nbi/src/main/java/org/onosproject/cfm/cli/CfmMdDeleteCommand.java
@@ -17,6 +17,7 @@
 
 import org.apache.karaf.shell.api.action.Argument;
 import org.apache.karaf.shell.api.action.Command;
+import org.apache.karaf.shell.api.action.lifecycle.Service;
 import org.onosproject.cli.AbstractShellCommand;
 import org.onosproject.incubator.net.l2monitoring.cfm.identifier.MdId;
 import org.onosproject.incubator.net.l2monitoring.cfm.service.CfmConfigException;
@@ -25,6 +26,7 @@
 /**
  * Deletes a Maintenance Domain from the existing list.
  */
+@Service
 @Command(scope = "onos", name = "cfm-md-delete",
         description = "Delete a CFM Maintenance Domain and its children.")
 public class CfmMdDeleteCommand extends AbstractShellCommand {
diff --git a/apps/cfm/nbi/src/main/java/org/onosproject/cfm/cli/CfmMdListMdCommand.java b/apps/cfm/nbi/src/main/java/org/onosproject/cfm/cli/CfmMdListMdCommand.java
index 245f3d3..09bd807 100644
--- a/apps/cfm/nbi/src/main/java/org/onosproject/cfm/cli/CfmMdListMdCommand.java
+++ b/apps/cfm/nbi/src/main/java/org/onosproject/cfm/cli/CfmMdListMdCommand.java
@@ -17,6 +17,7 @@
 
 import org.apache.karaf.shell.api.action.Argument;
 import org.apache.karaf.shell.api.action.Command;
+import org.apache.karaf.shell.api.action.lifecycle.Service;
 import org.onosproject.cli.AbstractShellCommand;
 import org.onosproject.incubator.net.l2monitoring.cfm.MaintenanceAssociation;
 import org.onosproject.incubator.net.l2monitoring.cfm.MaintenanceDomain;
@@ -28,6 +29,7 @@
 /**
  * Lists a particular Maintenance Domain.
  */
+@Service
 @Command(scope = "onos", name = "cfm-md-list",
         description = "Lists a single CFM Maintenance Domain or all if none specified.")
 public class CfmMdListMdCommand extends AbstractShellCommand {
diff --git a/apps/cfm/nbi/src/main/java/org/onosproject/cfm/cli/CfmMepListCommand.java b/apps/cfm/nbi/src/main/java/org/onosproject/cfm/cli/CfmMepListCommand.java
index b36d7dc..f7c130f 100644
--- a/apps/cfm/nbi/src/main/java/org/onosproject/cfm/cli/CfmMepListCommand.java
+++ b/apps/cfm/nbi/src/main/java/org/onosproject/cfm/cli/CfmMepListCommand.java
@@ -17,6 +17,7 @@
 
 import org.apache.karaf.shell.api.action.Argument;
 import org.apache.karaf.shell.api.action.Command;
+import org.apache.karaf.shell.api.action.lifecycle.Service;
 import org.onosproject.cli.AbstractShellCommand;
 import org.onosproject.incubator.net.l2monitoring.cfm.MepEntry;
 import org.onosproject.incubator.net.l2monitoring.cfm.identifier.MaIdShort;
@@ -35,6 +36,7 @@
 /**
  * Lists a particular Maintenance Domain.
  */
+@Service
 @Command(scope = "onos", name = "cfm-mep-list",
         description = "Lists a filtered set of MEPs or all if no parameters specified.")
 public class CfmMepListCommand extends AbstractShellCommand {
diff --git a/apps/cfm/nbi/src/main/java/org/onosproject/cfm/cli/CfmMepListDeviceCommand.java b/apps/cfm/nbi/src/main/java/org/onosproject/cfm/cli/CfmMepListDeviceCommand.java
index e263214..ca60a1c 100644
--- a/apps/cfm/nbi/src/main/java/org/onosproject/cfm/cli/CfmMepListDeviceCommand.java
+++ b/apps/cfm/nbi/src/main/java/org/onosproject/cfm/cli/CfmMepListDeviceCommand.java
@@ -17,6 +17,7 @@
 
 import org.apache.karaf.shell.api.action.Argument;
 import org.apache.karaf.shell.api.action.Command;
+import org.apache.karaf.shell.api.action.lifecycle.Service;
 import org.onosproject.cli.AbstractShellCommand;
 import org.onosproject.incubator.net.l2monitoring.cfm.Mep;
 import org.onosproject.incubator.net.l2monitoring.cfm.service.CfmConfigException;
@@ -26,6 +27,7 @@
 /**
  * Lists all the MEPs on a particular device.
  */
+@Service
 @Command(scope = "onos", name = "cfm-mep-device-list",
         description = "Lists a set of MEPs filtered by device.")
 public class CfmMepListDeviceCommand extends AbstractShellCommand {
diff --git a/apps/cpman/app/src/main/java/org/onosproject/cpman/cli/ControlMetricsStatsListCommand.java b/apps/cpman/app/src/main/java/org/onosproject/cpman/cli/ControlMetricsStatsListCommand.java
index 77358ff..6ba7fb0 100644
--- a/apps/cpman/app/src/main/java/org/onosproject/cpman/cli/ControlMetricsStatsListCommand.java
+++ b/apps/cpman/app/src/main/java/org/onosproject/cpman/cli/ControlMetricsStatsListCommand.java
@@ -17,6 +17,7 @@
 
 import org.apache.karaf.shell.api.action.Argument;
 import org.apache.karaf.shell.api.action.Command;
+import org.apache.karaf.shell.api.action.lifecycle.Service;
 import org.onosproject.cli.AbstractShellCommand;
 import org.onosproject.cluster.NodeId;
 import org.onosproject.cpman.ControlLoadSnapshot;
@@ -36,6 +37,7 @@
 /**
  * Lists all stats information of control plane metrics.
  */
+@Service
 @Command(scope = "onos", name = "cpman-stats-list",
         description = "Lists control metrics statistics")
 public class ControlMetricsStatsListCommand extends AbstractShellCommand {
diff --git a/apps/dhcp/app/src/main/java/org/onosproject/dhcp/cli/DhcpLeaseDetails.java b/apps/dhcp/app/src/main/java/org/onosproject/dhcp/cli/DhcpLeaseDetails.java
index 74fd148..aee02b2 100644
--- a/apps/dhcp/app/src/main/java/org/onosproject/dhcp/cli/DhcpLeaseDetails.java
+++ b/apps/dhcp/app/src/main/java/org/onosproject/dhcp/cli/DhcpLeaseDetails.java
@@ -16,12 +16,14 @@
 package org.onosproject.dhcp.cli;
 
 import org.apache.karaf.shell.api.action.Command;
+import org.apache.karaf.shell.api.action.lifecycle.Service;
 import org.onosproject.cli.AbstractShellCommand;
 import org.onosproject.dhcp.DhcpService;
 
 /**
  * Lists all the default lease parameters offered by the DHCP Server.
  */
+@Service
 @Command(scope = "onos", name = "dhcp-lease",
         description = "Lists all the default lease parameters offered by the DHCP Server")
 public class DhcpLeaseDetails extends AbstractShellCommand {
diff --git a/apps/dhcp/app/src/main/java/org/onosproject/dhcp/cli/DhcpListAllMappings.java b/apps/dhcp/app/src/main/java/org/onosproject/dhcp/cli/DhcpListAllMappings.java
index f82f467..4fba0f0 100644
--- a/apps/dhcp/app/src/main/java/org/onosproject/dhcp/cli/DhcpListAllMappings.java
+++ b/apps/dhcp/app/src/main/java/org/onosproject/dhcp/cli/DhcpListAllMappings.java
@@ -16,6 +16,7 @@
 package org.onosproject.dhcp.cli;
 
 import org.apache.karaf.shell.api.action.Command;
+import org.apache.karaf.shell.api.action.lifecycle.Service;
 import org.onosproject.cli.AbstractShellCommand;
 import org.onosproject.dhcp.DhcpService;
 import org.onosproject.dhcp.IpAssignment;
@@ -26,6 +27,7 @@
 /**
  * Lists all the MacAddress to IP Address mappings held by the DHCP Server.
  */
+@Service
 @Command(scope = "onos", name = "dhcp-list",
         description = "Lists all the MAC to IP mappings held by the DHCP Server")
 public class DhcpListAllMappings extends AbstractShellCommand {
diff --git a/apps/dhcp/app/src/main/java/org/onosproject/dhcp/cli/DhcpRemoveStaticMapping.java b/apps/dhcp/app/src/main/java/org/onosproject/dhcp/cli/DhcpRemoveStaticMapping.java
index d494182..3d0e3fc 100644
--- a/apps/dhcp/app/src/main/java/org/onosproject/dhcp/cli/DhcpRemoveStaticMapping.java
+++ b/apps/dhcp/app/src/main/java/org/onosproject/dhcp/cli/DhcpRemoveStaticMapping.java
@@ -17,6 +17,7 @@
 
 import org.apache.karaf.shell.api.action.Argument;
 import org.apache.karaf.shell.api.action.Command;
+import org.apache.karaf.shell.api.action.lifecycle.Service;
 import org.onlab.packet.MacAddress;
 import org.onosproject.cli.AbstractShellCommand;
 import org.onosproject.dhcp.DhcpService;
@@ -24,6 +25,7 @@
 /**
  * Removes a static MAC Address to IP Mapping from the DHCP Server.
  */
+@Service
 @Command(scope = "onos", name = "dhcp-remove-static-mapping",
         description = "Removes a static MAC Address to IP Mapping from the DHCP Server")
 public class DhcpRemoveStaticMapping extends AbstractShellCommand {
diff --git a/apps/dhcp/app/src/main/java/org/onosproject/dhcp/cli/DhcpSetStaticMapping.java b/apps/dhcp/app/src/main/java/org/onosproject/dhcp/cli/DhcpSetStaticMapping.java
index 5b863bf..2c8ce13 100644
--- a/apps/dhcp/app/src/main/java/org/onosproject/dhcp/cli/DhcpSetStaticMapping.java
+++ b/apps/dhcp/app/src/main/java/org/onosproject/dhcp/cli/DhcpSetStaticMapping.java
@@ -17,6 +17,7 @@
 
 import org.apache.karaf.shell.api.action.Argument;
 import org.apache.karaf.shell.api.action.Command;
+import org.apache.karaf.shell.api.action.lifecycle.Service;
 import org.onlab.packet.Ip4Address;
 import org.onlab.packet.MacAddress;
 import org.onosproject.cli.AbstractShellCommand;
@@ -30,6 +31,7 @@
 /**
  * Registers a static MAC Address to IP Mapping with the DHCP Server.
  */
+@Service
 @Command(scope = "onos", name = "dhcp-set-static-mapping",
         description = "Registers a static MAC Address to IP Mapping with the DHCP Server")
 public class DhcpSetStaticMapping extends AbstractShellCommand {
diff --git a/apps/dhcprelay/src/main/java/org/onosproject/dhcprelay/cli/DhcpFpmAddCommand.java b/apps/dhcprelay/src/main/java/org/onosproject/dhcprelay/cli/DhcpFpmAddCommand.java
index dcfba01..db1abde 100644
--- a/apps/dhcprelay/src/main/java/org/onosproject/dhcprelay/cli/DhcpFpmAddCommand.java
+++ b/apps/dhcprelay/src/main/java/org/onosproject/dhcprelay/cli/DhcpFpmAddCommand.java
@@ -18,6 +18,7 @@
 
 //import org.apache.karaf.shell.api.action.Argument;
 import org.apache.karaf.shell.api.action.Command;
+import org.apache.karaf.shell.api.action.lifecycle.Service;
 import org.onosproject.cli.AbstractShellCommand;
 import org.apache.karaf.shell.api.action.Argument;
 import org.onlab.packet.IpPrefix;
@@ -28,6 +29,7 @@
 /**
  * Prints Dhcp FPM Routes information.
  */
+@Service
 @Command(scope = "onos", name = "dhcp-fpm-add",
          description = "Add DHCP FPM prefix in dhcp-fpm-store.")
 public class DhcpFpmAddCommand extends AbstractShellCommand {
diff --git a/apps/dhcprelay/src/main/java/org/onosproject/dhcprelay/cli/DhcpFpmDeleteCommand.java b/apps/dhcprelay/src/main/java/org/onosproject/dhcprelay/cli/DhcpFpmDeleteCommand.java
index 956cb7d..1925003 100644
--- a/apps/dhcprelay/src/main/java/org/onosproject/dhcprelay/cli/DhcpFpmDeleteCommand.java
+++ b/apps/dhcprelay/src/main/java/org/onosproject/dhcprelay/cli/DhcpFpmDeleteCommand.java
@@ -17,6 +17,7 @@
 package org.onosproject.dhcprelay.cli;
 
 import org.apache.karaf.shell.api.action.Command;
+import org.apache.karaf.shell.api.action.lifecycle.Service;
 import org.onosproject.cli.AbstractShellCommand;
 import org.apache.karaf.shell.api.action.Argument;
 import org.onlab.packet.IpPrefix;
@@ -25,6 +26,7 @@
 /**
  * Prints Dhcp FPM Routes information.
  */
+@Service
 @Command(scope = "onos", name = "dhcp-fpm-delete",
          description = "delete DHCP FPM prefix in dhcp-fpm-store")
 public class DhcpFpmDeleteCommand extends AbstractShellCommand {
diff --git a/apps/dhcprelay/src/main/java/org/onosproject/dhcprelay/cli/DhcpFpmRoutesCommand.java b/apps/dhcprelay/src/main/java/org/onosproject/dhcprelay/cli/DhcpFpmRoutesCommand.java
index f2573a5..c9bf364 100644
--- a/apps/dhcprelay/src/main/java/org/onosproject/dhcprelay/cli/DhcpFpmRoutesCommand.java
+++ b/apps/dhcprelay/src/main/java/org/onosproject/dhcprelay/cli/DhcpFpmRoutesCommand.java
@@ -18,6 +18,7 @@
 
 //import org.apache.karaf.shell.api.action.Argument;
 import org.apache.karaf.shell.api.action.Command;
+import org.apache.karaf.shell.api.action.lifecycle.Service;
 import org.onosproject.cli.AbstractShellCommand;
 
 import org.onosproject.dhcprelay.api.DhcpRelayService;
@@ -28,6 +29,7 @@
 /**
  * Prints Dhcp FPM Routes information.
  */
+@Service
 @Command(scope = "onos", name = "dhcp-fpm-routes",
          description = "DHCP FPM routes cli.")
 public class DhcpFpmRoutesCommand extends AbstractShellCommand {
diff --git a/apps/dhcprelay/src/main/java/org/onosproject/dhcprelay/cli/DhcpRelayAggCountersCommand.java b/apps/dhcprelay/src/main/java/org/onosproject/dhcprelay/cli/DhcpRelayAggCountersCommand.java
index 1af64e3..13990d3 100644
--- a/apps/dhcprelay/src/main/java/org/onosproject/dhcprelay/cli/DhcpRelayAggCountersCommand.java
+++ b/apps/dhcprelay/src/main/java/org/onosproject/dhcprelay/cli/DhcpRelayAggCountersCommand.java
@@ -18,6 +18,7 @@
 
 import org.apache.karaf.shell.api.action.Argument;
 import org.apache.karaf.shell.api.action.Command;
+import org.apache.karaf.shell.api.action.lifecycle.Service;
 import org.onosproject.cli.AbstractShellCommand;
 import org.onosproject.dhcprelay.api.DhcpRelayService;
 import org.onosproject.dhcprelay.store.DhcpRelayCounters;
@@ -30,6 +31,7 @@
 /**
  * Prints Dhcp FPM Routes information.
  */
+@Service
 @Command(scope = "onos", name = "dhcp-relay-agg-counters",
          description = "DHCP Relay Aggregate Counters cli.")
 public class DhcpRelayAggCountersCommand extends AbstractShellCommand {
diff --git a/apps/dhcprelay/src/main/java/org/onosproject/dhcprelay/cli/DhcpRelayCommand.java b/apps/dhcprelay/src/main/java/org/onosproject/dhcprelay/cli/DhcpRelayCommand.java
index 518263b..694cb45 100644
--- a/apps/dhcprelay/src/main/java/org/onosproject/dhcprelay/cli/DhcpRelayCommand.java
+++ b/apps/dhcprelay/src/main/java/org/onosproject/dhcprelay/cli/DhcpRelayCommand.java
@@ -19,6 +19,7 @@
 
 import org.apache.karaf.shell.api.action.Argument;
 import org.apache.karaf.shell.api.action.Command;
+import org.apache.karaf.shell.api.action.lifecycle.Service;
 import org.onlab.packet.IpAddress;
 import org.onlab.packet.MacAddress;
 import org.onlab.packet.VlanId;
@@ -41,6 +42,7 @@
 /**
  * Prints DHCP server and DHCP relay status.
  */
+@Service
 @Command(scope = "onos", name = "dhcp-relay", description = "DHCP relay app cli.")
 public class DhcpRelayCommand extends AbstractShellCommand {
     @Argument(index = 0, name = "counter",
diff --git a/apps/events/src/main/java/org/onosproject/events/EventsCommand.java b/apps/events/src/main/java/org/onosproject/events/EventsCommand.java
index 0a4329f..f21cd52 100644
--- a/apps/events/src/main/java/org/onosproject/events/EventsCommand.java
+++ b/apps/events/src/main/java/org/onosproject/events/EventsCommand.java
@@ -24,6 +24,7 @@
 
 import org.apache.karaf.shell.api.action.Command;
 import org.apache.karaf.shell.api.action.Option;
+import org.apache.karaf.shell.api.action.lifecycle.Service;
 import org.onlab.util.Tools;
 import org.onosproject.cli.AbstractShellCommand;
 import org.onosproject.cluster.ClusterEvent;
@@ -49,6 +50,7 @@
 /**
  * Command to print history of instance local ONOS Events.
  */
+@Service
 @Command(scope = "onos", name = "events",
          description = "Command to print history of instance local ONOS Events")
 public class EventsCommand
diff --git a/apps/evpnopenflow/src/main/java/org/onosproject/evpnopenflow/rsc/cli/EvpnPrivateRouteListCommand.java b/apps/evpnopenflow/src/main/java/org/onosproject/evpnopenflow/rsc/cli/EvpnPrivateRouteListCommand.java
index 0145acc..d069bc3 100644
--- a/apps/evpnopenflow/src/main/java/org/onosproject/evpnopenflow/rsc/cli/EvpnPrivateRouteListCommand.java
+++ b/apps/evpnopenflow/src/main/java/org/onosproject/evpnopenflow/rsc/cli/EvpnPrivateRouteListCommand.java
@@ -17,6 +17,7 @@
 package org.onosproject.evpnopenflow.rsc.cli;
 
 import org.apache.karaf.shell.api.action.Command;
+import org.apache.karaf.shell.api.action.lifecycle.Service;
 import org.onosproject.cli.AbstractShellCommand;
 import org.onosproject.evpnopenflow.manager.EvpnService;
 import org.onosproject.evpnopenflow.manager.impl.EvpnManager;
@@ -29,6 +30,7 @@
 /**
  * Support for displaying EVPN private routes.
  */
+@Service
 @Command(scope = "onos", name = "evpn-private-routes", description = "Lists" +
         " all EVPN private routes")
 public class EvpnPrivateRouteListCommand extends AbstractShellCommand {
diff --git a/apps/evpnopenflow/src/main/java/org/onosproject/evpnopenflow/rsc/cli/EvpnPublicRouteListCommand.java b/apps/evpnopenflow/src/main/java/org/onosproject/evpnopenflow/rsc/cli/EvpnPublicRouteListCommand.java
index 6da1752..809090d 100644
--- a/apps/evpnopenflow/src/main/java/org/onosproject/evpnopenflow/rsc/cli/EvpnPublicRouteListCommand.java
+++ b/apps/evpnopenflow/src/main/java/org/onosproject/evpnopenflow/rsc/cli/EvpnPublicRouteListCommand.java
@@ -17,6 +17,7 @@
 package org.onosproject.evpnopenflow.rsc.cli;
 
 import org.apache.karaf.shell.api.action.Command;
+import org.apache.karaf.shell.api.action.lifecycle.Service;
 import org.onosproject.cli.AbstractShellCommand;
 import org.onosproject.evpnrouteservice.EvpnRoute;
 import org.onosproject.evpnrouteservice.EvpnRouteSet;
@@ -29,6 +30,7 @@
 /**
  * Support for displaying EVPN public routes.
  */
+@Service
 @Command(scope = "onos", name = "evpn-public-routes", description = "Lists" +
         " all EVPN public routes")
 public class EvpnPublicRouteListCommand extends AbstractShellCommand {
diff --git a/apps/evpnopenflow/src/main/java/org/onosproject/evpnopenflow/rsc/cli/VpnInstListCommand.java b/apps/evpnopenflow/src/main/java/org/onosproject/evpnopenflow/rsc/cli/VpnInstListCommand.java
index 6f72289..33074f7 100644
--- a/apps/evpnopenflow/src/main/java/org/onosproject/evpnopenflow/rsc/cli/VpnInstListCommand.java
+++ b/apps/evpnopenflow/src/main/java/org/onosproject/evpnopenflow/rsc/cli/VpnInstListCommand.java
@@ -17,6 +17,7 @@
 package org.onosproject.evpnopenflow.rsc.cli;
 
 import org.apache.karaf.shell.api.action.Command;
+import org.apache.karaf.shell.api.action.lifecycle.Service;
 import org.onosproject.cli.AbstractShellCommand;
 import org.onosproject.evpnopenflow.rsc.EvpnConstants;
 import org.onosproject.evpnopenflow.rsc.VpnInstance;
@@ -27,6 +28,7 @@
 /**
  * Support for displaying EVPN VPN instances.
  */
+@Service
 @Command(scope = "onos", name = "evpn-instance-list", description = "Lists " +
         "all EVPN instances")
 public class VpnInstListCommand extends AbstractShellCommand {
diff --git a/apps/evpnopenflow/src/main/java/org/onosproject/evpnopenflow/rsc/cli/VpnPortListCommand.java b/apps/evpnopenflow/src/main/java/org/onosproject/evpnopenflow/rsc/cli/VpnPortListCommand.java
index fbf5447..a4c7da8 100644
--- a/apps/evpnopenflow/src/main/java/org/onosproject/evpnopenflow/rsc/cli/VpnPortListCommand.java
+++ b/apps/evpnopenflow/src/main/java/org/onosproject/evpnopenflow/rsc/cli/VpnPortListCommand.java
@@ -17,6 +17,7 @@
 package org.onosproject.evpnopenflow.rsc.cli;
 
 import org.apache.karaf.shell.api.action.Command;
+import org.apache.karaf.shell.api.action.lifecycle.Service;
 import org.onosproject.cli.AbstractShellCommand;
 import org.onosproject.evpnopenflow.rsc.VpnPort;
 import org.onosproject.evpnopenflow.rsc.vpnport.VpnPortService;
@@ -28,6 +29,7 @@
 /**
  * Support for displaying EVPN VPN ports.
  */
+@Service
 @Command(scope = "onos", name = "evpn-port-list", description = "Lists all" +
         "EVPN ports")
 public class VpnPortListCommand extends AbstractShellCommand {
diff --git a/apps/faultmanagement/fmcli/src/main/java/org/onosproject/faultmanagement/alarms/cli/GetAllAlarms.java b/apps/faultmanagement/fmcli/src/main/java/org/onosproject/faultmanagement/alarms/cli/GetAllAlarms.java
index 5860bfa..deefd22 100644
--- a/apps/faultmanagement/fmcli/src/main/java/org/onosproject/faultmanagement/alarms/cli/GetAllAlarms.java
+++ b/apps/faultmanagement/fmcli/src/main/java/org/onosproject/faultmanagement/alarms/cli/GetAllAlarms.java
@@ -20,6 +20,7 @@
 import org.apache.karaf.shell.api.action.Argument;
 import org.apache.karaf.shell.api.action.Command;
 import org.apache.karaf.shell.api.action.Option;
+import org.apache.karaf.shell.api.action.lifecycle.Service;
 import org.onosproject.cli.AbstractShellCommand;
 import org.onosproject.incubator.net.faultmanagement.alarm.Alarm;
 import org.onosproject.incubator.net.faultmanagement.alarm.AlarmService;
@@ -30,6 +31,7 @@
 /**
  * Lists alarms across all devices.
  */
+@Service
 @Command(scope = "onos", name = "alarms",
         description = "Lists alarms")
 public class GetAllAlarms extends AbstractShellCommand {
diff --git a/apps/faultmanagement/fmcli/src/main/java/org/onosproject/faultmanagement/alarms/cli/GetAllAlarmsCounts.java b/apps/faultmanagement/fmcli/src/main/java/org/onosproject/faultmanagement/alarms/cli/GetAllAlarmsCounts.java
index 5bbb2cee..0fa2e3e 100644
--- a/apps/faultmanagement/fmcli/src/main/java/org/onosproject/faultmanagement/alarms/cli/GetAllAlarmsCounts.java
+++ b/apps/faultmanagement/fmcli/src/main/java/org/onosproject/faultmanagement/alarms/cli/GetAllAlarmsCounts.java
@@ -20,6 +20,7 @@
 import org.apache.karaf.shell.api.action.Argument;
 import org.apache.karaf.shell.api.action.Command;
 import org.apache.karaf.shell.api.action.Option;
+import org.apache.karaf.shell.api.action.lifecycle.Service;
 import org.onosproject.cli.AbstractShellCommand;
 import org.onosproject.incubator.net.faultmanagement.alarm.Alarm;
 import org.onosproject.incubator.net.faultmanagement.alarm.AlarmService;
@@ -31,6 +32,7 @@
 /**
  * Lists alarm counts across all devices.
  */
+@Service
 @Command(scope = "onos", name = "alarms-counts",
         description = "Lists the count of alarms for each severity")
 public class GetAllAlarmsCounts extends AbstractShellCommand {
diff --git a/apps/flowanalyzer/src/main/java/org/onosproject/flowanalyzer/FlowAnalysisCommand.java b/apps/flowanalyzer/src/main/java/org/onosproject/flowanalyzer/FlowAnalysisCommand.java
index ba2b68c..7d83e08 100644
--- a/apps/flowanalyzer/src/main/java/org/onosproject/flowanalyzer/FlowAnalysisCommand.java
+++ b/apps/flowanalyzer/src/main/java/org/onosproject/flowanalyzer/FlowAnalysisCommand.java
@@ -16,11 +16,13 @@
 package org.onosproject.flowanalyzer;
 
 import org.apache.karaf.shell.api.action.Command;
+import org.apache.karaf.shell.api.action.lifecycle.Service;
 import org.onosproject.cli.AbstractShellCommand;
 
 /**
  * Analyzes flows for cycles and black holes.
  */
+@Service
 @Command(scope = "onos", name = "flow-analysis",
          description = "Analyzes flows for cycles and black holes")
 public class FlowAnalysisCommand extends AbstractShellCommand {
diff --git a/apps/fwd/src/main/java/org/onosproject/fwd/ReactiveForwardingCommand.java b/apps/fwd/src/main/java/org/onosproject/fwd/ReactiveForwardingCommand.java
index 0a8a6d0..d0468d2 100644
--- a/apps/fwd/src/main/java/org/onosproject/fwd/ReactiveForwardingCommand.java
+++ b/apps/fwd/src/main/java/org/onosproject/fwd/ReactiveForwardingCommand.java
@@ -15,6 +15,7 @@
  */
 package org.onosproject.fwd;
 import org.apache.karaf.shell.api.action.Command;
+import org.apache.karaf.shell.api.action.lifecycle.Service;
 import org.onosproject.cli.AbstractShellCommand;
 import org.apache.karaf.shell.api.action.Argument;
 import org.onlab.packet.MacAddress;
@@ -22,6 +23,7 @@
 /**
  * Sample reactive forwarding application.
  */
+@Service
 @Command(scope = "onos", name = "reactive-fwd-metrics",
         description = "List all the metrics of reactive fwd app based on mac address")
 public class ReactiveForwardingCommand extends AbstractShellCommand {
diff --git a/apps/intentsync/src/main/java/org/onosproject/intentsync/cli/PrimaryChangeCommand.java b/apps/intentsync/src/main/java/org/onosproject/intentsync/cli/PrimaryChangeCommand.java
index a7a2007..b7416d4 100644
--- a/apps/intentsync/src/main/java/org/onosproject/intentsync/cli/PrimaryChangeCommand.java
+++ b/apps/intentsync/src/main/java/org/onosproject/intentsync/cli/PrimaryChangeCommand.java
@@ -17,12 +17,14 @@
 
 import org.apache.karaf.shell.api.action.Argument;
 import org.apache.karaf.shell.api.action.Command;
+import org.apache.karaf.shell.api.action.lifecycle.Service;
 import org.onosproject.cli.AbstractShellCommand;
 import org.onosproject.intentsync.IntentSynchronizationAdminService;
 
 /**
  * Command to change whether this instance's intent synchronizer is primary.
  */
+@Service
 @Command(scope = "onos", name = "sdnip-set-primary",
          description = "Changes the primary status of this SDN-IP instance")
 public class PrimaryChangeCommand extends AbstractShellCommand {
diff --git a/apps/layout/src/main/java/org/onosproject/layout/AutoLayoutCommand.java b/apps/layout/src/main/java/org/onosproject/layout/AutoLayoutCommand.java
index d32a00b..5f928c5 100644
--- a/apps/layout/src/main/java/org/onosproject/layout/AutoLayoutCommand.java
+++ b/apps/layout/src/main/java/org/onosproject/layout/AutoLayoutCommand.java
@@ -17,11 +17,13 @@
 
 import org.apache.karaf.shell.api.action.Argument;
 import org.apache.karaf.shell.api.action.Command;
+import org.apache.karaf.shell.api.action.lifecycle.Service;
 import org.onosproject.cli.AbstractShellCommand;
 
 /**
  * Lays out the elements in the topology using the specified algorithm.
  */
+@Service
 @Command(scope = "onos", name = "topo-layout",
         description = "Lays out the elements in the topology using the specified algorithm")
 public class AutoLayoutCommand extends AbstractShellCommand {
diff --git a/apps/mappingmanagement/cli/src/main/java/org/onosproject/mapping/cli/MappingsListCommand.java b/apps/mappingmanagement/cli/src/main/java/org/onosproject/mapping/cli/MappingsListCommand.java
index 111372c..8bd31d9 100644
--- a/apps/mappingmanagement/cli/src/main/java/org/onosproject/mapping/cli/MappingsListCommand.java
+++ b/apps/mappingmanagement/cli/src/main/java/org/onosproject/mapping/cli/MappingsListCommand.java
@@ -22,6 +22,7 @@
 import org.apache.karaf.shell.api.action.Argument;
 import org.apache.karaf.shell.api.action.Command;
 import org.apache.karaf.shell.api.action.Option;
+import org.apache.karaf.shell.api.action.lifecycle.Service;
 import org.onosproject.cli.AbstractShellCommand;
 import org.onosproject.mapping.MappingEntry;
 import org.onosproject.mapping.MappingKey;
@@ -40,6 +41,7 @@
 /**
  * A command for querying mapping information.
  */
+@Service
 @Command(scope = "onos", name = "mappings",
         description = "Lists mappings")
 public class MappingsListCommand extends AbstractShellCommand {
diff --git a/apps/mcast/cli/src/main/java/org/onosproject/mcast/cli/McastHostJoinCommand.java b/apps/mcast/cli/src/main/java/org/onosproject/mcast/cli/McastHostJoinCommand.java
index 3d94f5d..eae5c48 100644
--- a/apps/mcast/cli/src/main/java/org/onosproject/mcast/cli/McastHostJoinCommand.java
+++ b/apps/mcast/cli/src/main/java/org/onosproject/mcast/cli/McastHostJoinCommand.java
@@ -17,6 +17,7 @@
 
 import org.apache.karaf.shell.api.action.Command;
 import org.apache.karaf.shell.api.action.Option;
+import org.apache.karaf.shell.api.action.lifecycle.Service;
 import org.onlab.packet.IpAddress;
 import org.onosproject.cli.AbstractShellCommand;
 import org.onosproject.mcast.api.McastRoute;
@@ -26,6 +27,7 @@
 /**
  * Installs a source, multicast group flow.
  */
+@Service
 @Command(scope = "onos", name = "mcast-host-join",
         description = "Installs a source, multicast group flow")
 public class McastHostJoinCommand extends AbstractShellCommand {
diff --git a/apps/mcast/cli/src/main/java/org/onosproject/mcast/cli/McastRoutesListCommand.java b/apps/mcast/cli/src/main/java/org/onosproject/mcast/cli/McastRoutesListCommand.java
index 14a1ea2..3a1faa5 100644
--- a/apps/mcast/cli/src/main/java/org/onosproject/mcast/cli/McastRoutesListCommand.java
+++ b/apps/mcast/cli/src/main/java/org/onosproject/mcast/cli/McastRoutesListCommand.java
@@ -16,6 +16,7 @@
 package org.onosproject.mcast.cli;
 
 import org.apache.karaf.shell.api.action.Command;
+import org.apache.karaf.shell.api.action.lifecycle.Service;
 import org.onlab.packet.IpAddress;
 import org.onosproject.cli.AbstractShellCommand;
 import org.onosproject.mcast.api.McastRoute;
@@ -30,6 +31,7 @@
 /**
  * Displays the source, multicast group flows entries.
  */
+@Service
 @Command(scope = "onos", name = "mcast-host-routes",
         description = "Lists routes in the mcast route store")
 public class McastRoutesListCommand extends AbstractShellCommand {
diff --git a/apps/mcast/cli/src/main/java/org/onosproject/mcast/cli/McastShowHostCommand.java b/apps/mcast/cli/src/main/java/org/onosproject/mcast/cli/McastShowHostCommand.java
index cfcbebc..63fb015 100644
--- a/apps/mcast/cli/src/main/java/org/onosproject/mcast/cli/McastShowHostCommand.java
+++ b/apps/mcast/cli/src/main/java/org/onosproject/mcast/cli/McastShowHostCommand.java
@@ -17,6 +17,7 @@
 
 import org.apache.karaf.shell.api.action.Command;
 import org.apache.karaf.shell.api.action.Option;
+import org.apache.karaf.shell.api.action.lifecycle.Service;
 import org.onlab.packet.IpAddress;
 import org.onosproject.cli.AbstractShellCommand;
 import org.onosproject.mcast.api.McastRoute;
@@ -34,6 +35,7 @@
 /**
  * Displays the source, multicast group flows entries.
  */
+@Service
 @Command(scope = "onos", name = "mcast-host-show", description = "Displays the source, multicast group flows")
 public class McastShowHostCommand extends AbstractShellCommand {
 
diff --git a/apps/mcast/cli/src/main/java/org/onosproject/mcast/cli/McastSinkDeleteCommand.java b/apps/mcast/cli/src/main/java/org/onosproject/mcast/cli/McastSinkDeleteCommand.java
index de7ab44..a6700e7 100644
--- a/apps/mcast/cli/src/main/java/org/onosproject/mcast/cli/McastSinkDeleteCommand.java
+++ b/apps/mcast/cli/src/main/java/org/onosproject/mcast/cli/McastSinkDeleteCommand.java
@@ -17,6 +17,7 @@
 
 import org.apache.karaf.shell.api.action.Command;
 import org.apache.karaf.shell.api.action.Option;
+import org.apache.karaf.shell.api.action.lifecycle.Service;
 import org.onlab.packet.IpAddress;
 import org.onosproject.cli.AbstractShellCommand;
 import org.onosproject.mcast.api.McastRoute;
@@ -26,6 +27,7 @@
 /**
  * Deletes a multicast route.
  */
+@Service
 @Command(scope = "onos", name = "mcast-sink-delete",
         description = "Delete a sink from multicast route flow. If no sin is specified removes the whole route.")
 public class McastSinkDeleteCommand extends AbstractShellCommand {
diff --git a/apps/mcast/cli/src/main/java/org/onosproject/mcast/cli/McastSourceDeleteCommand.java b/apps/mcast/cli/src/main/java/org/onosproject/mcast/cli/McastSourceDeleteCommand.java
index 0b05ef7..b4d07d6 100644
--- a/apps/mcast/cli/src/main/java/org/onosproject/mcast/cli/McastSourceDeleteCommand.java
+++ b/apps/mcast/cli/src/main/java/org/onosproject/mcast/cli/McastSourceDeleteCommand.java
@@ -17,6 +17,7 @@
 
 import org.apache.karaf.shell.api.action.Command;
 import org.apache.karaf.shell.api.action.Option;
+import org.apache.karaf.shell.api.action.lifecycle.Service;
 import org.onlab.packet.IpAddress;
 import org.onosproject.cli.AbstractShellCommand;
 import org.onosproject.mcast.api.McastRoute;
@@ -26,6 +27,7 @@
 /**
  * Deletes a multicast route.
  */
+@Service
 @Command(scope = "onos", name = "mcast-source-delete",
         description = "Delete a multicast route flow")
 public class McastSourceDeleteCommand extends AbstractShellCommand {
diff --git a/apps/metrics/src/main/java/org/onosproject/metrics/intent/cli/IntentEventsListCommand.java b/apps/metrics/src/main/java/org/onosproject/metrics/intent/cli/IntentEventsListCommand.java
index b6b2f88..4a441dd 100644
--- a/apps/metrics/src/main/java/org/onosproject/metrics/intent/cli/IntentEventsListCommand.java
+++ b/apps/metrics/src/main/java/org/onosproject/metrics/intent/cli/IntentEventsListCommand.java
@@ -22,6 +22,7 @@
 import com.fasterxml.jackson.databind.node.ArrayNode;
 import com.fasterxml.jackson.databind.node.ObjectNode;
 import org.apache.karaf.shell.api.action.Command;
+import org.apache.karaf.shell.api.action.lifecycle.Service;
 import org.onosproject.cli.AbstractShellCommand;
 import org.onosproject.metrics.intent.IntentMetricsService;
 import org.onosproject.net.intent.IntentEvent;
@@ -29,6 +30,7 @@
 /**
  * Command to show the list of last intent events.
  */
+@Service
 @Command(scope = "onos", name = "intents-events",
          description = "Lists the last intent events")
 public class IntentEventsListCommand extends AbstractShellCommand {
diff --git a/apps/metrics/src/main/java/org/onosproject/metrics/intent/cli/IntentEventsMetricsCommand.java b/apps/metrics/src/main/java/org/onosproject/metrics/intent/cli/IntentEventsMetricsCommand.java
index ae81832..9fa8fe0 100644
--- a/apps/metrics/src/main/java/org/onosproject/metrics/intent/cli/IntentEventsMetricsCommand.java
+++ b/apps/metrics/src/main/java/org/onosproject/metrics/intent/cli/IntentEventsMetricsCommand.java
@@ -26,6 +26,7 @@
 import com.fasterxml.jackson.databind.ObjectMapper;
 import com.fasterxml.jackson.databind.node.ObjectNode;
 import org.apache.karaf.shell.api.action.Command;
+import org.apache.karaf.shell.api.action.lifecycle.Service;
 import org.onlab.metrics.EventMetric;
 import org.onosproject.cli.AbstractShellCommand;
 import org.onosproject.metrics.intent.IntentMetricsService;
@@ -33,6 +34,7 @@
 /**
  * Command to show the intent events metrics.
  */
+@Service
 @Command(scope = "onos", name = "intents-events-metrics",
          description = "Lists intent events metrics")
 public class IntentEventsMetricsCommand extends AbstractShellCommand {
diff --git a/apps/metrics/src/main/java/org/onosproject/metrics/topology/cli/TopologyEventsListCommand.java b/apps/metrics/src/main/java/org/onosproject/metrics/topology/cli/TopologyEventsListCommand.java
index 71e7b54..2fdb5eb 100644
--- a/apps/metrics/src/main/java/org/onosproject/metrics/topology/cli/TopologyEventsListCommand.java
+++ b/apps/metrics/src/main/java/org/onosproject/metrics/topology/cli/TopologyEventsListCommand.java
@@ -22,6 +22,7 @@
 import com.fasterxml.jackson.databind.node.ArrayNode;
 import com.fasterxml.jackson.databind.node.ObjectNode;
 import org.apache.karaf.shell.api.action.Command;
+import org.apache.karaf.shell.api.action.lifecycle.Service;
 import org.onosproject.cli.AbstractShellCommand;
 import org.onosproject.event.Event;
 import org.onosproject.metrics.topology.TopologyMetricsService;
@@ -30,6 +31,7 @@
 /**
  * Command to show the list of last topology events.
  */
+@Service
 @Command(scope = "onos", name = "topology-events",
          description = "Lists the last topology events")
 public class TopologyEventsListCommand extends AbstractShellCommand {
diff --git a/apps/metrics/src/main/java/org/onosproject/metrics/topology/cli/TopologyEventsMetricsCommand.java b/apps/metrics/src/main/java/org/onosproject/metrics/topology/cli/TopologyEventsMetricsCommand.java
index b919fd9..39e0b7f 100644
--- a/apps/metrics/src/main/java/org/onosproject/metrics/topology/cli/TopologyEventsMetricsCommand.java
+++ b/apps/metrics/src/main/java/org/onosproject/metrics/topology/cli/TopologyEventsMetricsCommand.java
@@ -26,6 +26,7 @@
 import com.fasterxml.jackson.databind.ObjectMapper;
 import com.fasterxml.jackson.databind.node.ObjectNode;
 import org.apache.karaf.shell.api.action.Command;
+import org.apache.karaf.shell.api.action.lifecycle.Service;
 import org.onlab.metrics.EventMetric;
 import org.onosproject.cli.AbstractShellCommand;
 import org.onosproject.metrics.topology.TopologyMetricsService;
@@ -33,6 +34,7 @@
 /**
  * Command to show the topology events metrics.
  */
+@Service
 @Command(scope = "onos", name = "topology-events-metrics",
          description = "Lists topology events metrics")
 public class TopologyEventsMetricsCommand extends AbstractShellCommand {
diff --git a/apps/network-troubleshoot/cli/src/main/java/org/onosproject/fnl/cli/TsAllAnomalies.java b/apps/network-troubleshoot/cli/src/main/java/org/onosproject/fnl/cli/TsAllAnomalies.java
index cd75d87..8a903e0 100644
--- a/apps/network-troubleshoot/cli/src/main/java/org/onosproject/fnl/cli/TsAllAnomalies.java
+++ b/apps/network-troubleshoot/cli/src/main/java/org/onosproject/fnl/cli/TsAllAnomalies.java
@@ -16,12 +16,14 @@
 package org.onosproject.fnl.cli;
 
 import org.apache.karaf.shell.api.action.Command;
+import org.apache.karaf.shell.api.action.lifecycle.Service;
 import org.onosproject.cli.AbstractShellCommand;
 import org.onosproject.fnl.intf.NetworkDiagnosticService;
 
 /**
  * Search for all types of network anomalies.
  */
+@Service
 @Command(scope = "onos",
         name = "ts-all-anomalies",
         description = "search all types of network anomalies once",
diff --git a/apps/network-troubleshoot/cli/src/main/java/org/onosproject/fnl/cli/TsCheckLoop.java b/apps/network-troubleshoot/cli/src/main/java/org/onosproject/fnl/cli/TsCheckLoop.java
index 0de54db..f2ac8f6 100644
--- a/apps/network-troubleshoot/cli/src/main/java/org/onosproject/fnl/cli/TsCheckLoop.java
+++ b/apps/network-troubleshoot/cli/src/main/java/org/onosproject/fnl/cli/TsCheckLoop.java
@@ -16,6 +16,7 @@
 package org.onosproject.fnl.cli;
 
 import org.apache.karaf.shell.api.action.Command;
+import org.apache.karaf.shell.api.action.lifecycle.Service;
 import org.onosproject.fnl.intf.NetworkDiagnostic;
 import org.onosproject.fnl.intf.NetworkDiagnosticService;
 import org.onosproject.cli.AbstractShellCommand;
@@ -27,6 +28,7 @@
 /**
  * Search for all potential routing loops.
  */
+@Service
 @Command(scope = "onos",
         name = "ts-check-loops",
         description = "Check if there are some routing loops in the network",
diff --git a/apps/newoptical/src/main/java/org/onosproject/newoptical/cli/AddOpticalConnectivityCommand.java b/apps/newoptical/src/main/java/org/onosproject/newoptical/cli/AddOpticalConnectivityCommand.java
index 51984b3..55baec0 100644
--- a/apps/newoptical/src/main/java/org/onosproject/newoptical/cli/AddOpticalConnectivityCommand.java
+++ b/apps/newoptical/src/main/java/org/onosproject/newoptical/cli/AddOpticalConnectivityCommand.java
@@ -17,6 +17,7 @@
 
 import org.apache.karaf.shell.api.action.Argument;
 import org.apache.karaf.shell.api.action.Command;
+import org.apache.karaf.shell.api.action.lifecycle.Service;
 import org.onlab.util.Bandwidth;
 import org.onosproject.cli.AbstractShellCommand;
 import org.onosproject.cli.net.ConnectPointCompleter;
@@ -28,6 +29,7 @@
 import org.onosproject.net.DeviceId;
 import org.onosproject.net.PortNumber;
 
+@Service
 @Command(scope = "onos", name = "add-optical-connectivity",
         description = "Configure optical domain connectivity")
 public class AddOpticalConnectivityCommand extends AbstractShellCommand {
diff --git a/apps/newoptical/src/main/java/org/onosproject/newoptical/cli/ListOpticalConnectivityCommand.java b/apps/newoptical/src/main/java/org/onosproject/newoptical/cli/ListOpticalConnectivityCommand.java
index 0fa466d..7ddd88a 100644
--- a/apps/newoptical/src/main/java/org/onosproject/newoptical/cli/ListOpticalConnectivityCommand.java
+++ b/apps/newoptical/src/main/java/org/onosproject/newoptical/cli/ListOpticalConnectivityCommand.java
@@ -19,11 +19,13 @@
 import java.util.stream.Collectors;
 
 import org.apache.karaf.shell.api.action.Command;
+import org.apache.karaf.shell.api.action.lifecycle.Service;
 import org.onosproject.cli.AbstractShellCommand;
 import org.onosproject.net.LinkKey;
 import org.onosproject.newoptical.OpticalConnectivity;
 import org.onosproject.newoptical.api.OpticalPathService;
 
+@Service
 @Command(scope = "onos", name = "list-optical-connectivity",
         description = "List optical domain connectivity")
 public class ListOpticalConnectivityCommand extends AbstractShellCommand {
diff --git a/apps/newoptical/src/main/java/org/onosproject/newoptical/cli/RemoveOpticalConnectivityCommand.java b/apps/newoptical/src/main/java/org/onosproject/newoptical/cli/RemoveOpticalConnectivityCommand.java
index 5c01df7..52605a6 100644
--- a/apps/newoptical/src/main/java/org/onosproject/newoptical/cli/RemoveOpticalConnectivityCommand.java
+++ b/apps/newoptical/src/main/java/org/onosproject/newoptical/cli/RemoveOpticalConnectivityCommand.java
@@ -17,10 +17,12 @@
 
 import org.apache.karaf.shell.api.action.Argument;
 import org.apache.karaf.shell.api.action.Command;
+import org.apache.karaf.shell.api.action.lifecycle.Service;
 import org.onosproject.cli.AbstractShellCommand;
 import org.onosproject.newoptical.api.OpticalConnectivityId;
 import org.onosproject.newoptical.api.OpticalPathService;
 
+@Service
 @Command(scope = "onos", name = "remove-optical-connectivity",
         description = "Remove optical domain connectivity")
 public class RemoveOpticalConnectivityCommand extends AbstractShellCommand {
diff --git a/apps/nodemetrics/mgr/src/main/java/org/onosproject/nodemetrics/cli/ShowNodeCpuUsageCommand.java b/apps/nodemetrics/mgr/src/main/java/org/onosproject/nodemetrics/cli/ShowNodeCpuUsageCommand.java
index 3613d16..8b004a4 100644
--- a/apps/nodemetrics/mgr/src/main/java/org/onosproject/nodemetrics/cli/ShowNodeCpuUsageCommand.java
+++ b/apps/nodemetrics/mgr/src/main/java/org/onosproject/nodemetrics/cli/ShowNodeCpuUsageCommand.java
@@ -18,6 +18,7 @@
 
 import org.apache.karaf.shell.api.action.Argument;
 import org.apache.karaf.shell.api.action.Command;
+import org.apache.karaf.shell.api.action.lifecycle.Service;
 import org.onosproject.cli.AbstractShellCommand;
 import org.onosproject.cluster.NodeId;
 import org.onosproject.nodemetrics.NodeCpuUsage;
@@ -29,6 +30,7 @@
 /**
  * Lists cpu usage across nodes.
  */
+@Service
 @Command(scope = "onos", name = "node-cpu",
         description = "Lists all node cpu utilization")
 public class ShowNodeCpuUsageCommand extends AbstractShellCommand {
diff --git a/apps/nodemetrics/mgr/src/main/java/org/onosproject/nodemetrics/cli/ShowNodeDiskUsageCommand.java b/apps/nodemetrics/mgr/src/main/java/org/onosproject/nodemetrics/cli/ShowNodeDiskUsageCommand.java
index 24c5ace..7c9f4b8 100644
--- a/apps/nodemetrics/mgr/src/main/java/org/onosproject/nodemetrics/cli/ShowNodeDiskUsageCommand.java
+++ b/apps/nodemetrics/mgr/src/main/java/org/onosproject/nodemetrics/cli/ShowNodeDiskUsageCommand.java
@@ -18,6 +18,7 @@
 
 import org.apache.karaf.shell.api.action.Argument;
 import org.apache.karaf.shell.api.action.Command;
+import org.apache.karaf.shell.api.action.lifecycle.Service;
 import org.onosproject.cli.AbstractShellCommand;
 import org.onosproject.cluster.NodeId;
 import org.onosproject.nodemetrics.NodeDiskUsage;
@@ -29,6 +30,7 @@
 /**
  * Lists disk usage across nodes.
  */
+@Service
 @Command(scope = "onos", name = "node-disk",
         description = "Lists all node disk utilization")
 public class ShowNodeDiskUsageCommand extends AbstractShellCommand {
diff --git a/apps/nodemetrics/mgr/src/main/java/org/onosproject/nodemetrics/cli/ShowNodeMemoryUsageCommand.java b/apps/nodemetrics/mgr/src/main/java/org/onosproject/nodemetrics/cli/ShowNodeMemoryUsageCommand.java
index bbd44ba..6c87521 100644
--- a/apps/nodemetrics/mgr/src/main/java/org/onosproject/nodemetrics/cli/ShowNodeMemoryUsageCommand.java
+++ b/apps/nodemetrics/mgr/src/main/java/org/onosproject/nodemetrics/cli/ShowNodeMemoryUsageCommand.java
@@ -18,6 +18,7 @@
 
 import org.apache.karaf.shell.api.action.Argument;
 import org.apache.karaf.shell.api.action.Command;
+import org.apache.karaf.shell.api.action.lifecycle.Service;
 import org.onosproject.cli.AbstractShellCommand;
 import org.onosproject.cluster.NodeId;
 import org.onosproject.nodemetrics.NodeMemoryUsage;
@@ -29,6 +30,7 @@
 /**
  * Lists memory usage across nodes.
  */
+@Service
 @Command(scope = "onos", name = "node-memory",
         description = "Lists all node memory utilization")
 public class ShowNodeMemoryUsageCommand extends AbstractShellCommand {
diff --git a/apps/odtn/service/src/main/java/org/onosproject/odtn/cli/impl/OdtnDcsModelCheckCommand.java b/apps/odtn/service/src/main/java/org/onosproject/odtn/cli/impl/OdtnDcsModelCheckCommand.java
index 3f00cb7..feb12e4 100644
--- a/apps/odtn/service/src/main/java/org/onosproject/odtn/cli/impl/OdtnDcsModelCheckCommand.java
+++ b/apps/odtn/service/src/main/java/org/onosproject/odtn/cli/impl/OdtnDcsModelCheckCommand.java
@@ -18,6 +18,7 @@
 
 import java.util.regex.Pattern;
 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;
@@ -38,7 +39,7 @@
 import org.slf4j.Logger;
 import static org.slf4j.LoggerFactory.getLogger;
 
-
+@Service
 @Command(scope = "onos", name = "odtn-show-tapi-context")
 public class OdtnDcsModelCheckCommand extends AbstractShellCommand {
 
diff --git a/apps/odtn/service/src/main/java/org/onosproject/odtn/cli/impl/OdtnManualTestCommand.java b/apps/odtn/service/src/main/java/org/onosproject/odtn/cli/impl/OdtnManualTestCommand.java
index e61a2af..581f01b 100644
--- a/apps/odtn/service/src/main/java/org/onosproject/odtn/cli/impl/OdtnManualTestCommand.java
+++ b/apps/odtn/service/src/main/java/org/onosproject/odtn/cli/impl/OdtnManualTestCommand.java
@@ -34,6 +34,7 @@
 import org.apache.karaf.shell.api.action.Argument;
 import org.apache.karaf.shell.api.action.Command;
 import org.apache.karaf.shell.api.action.Option;
+import org.apache.karaf.shell.api.action.lifecycle.Service;
 import org.onlab.util.XmlString;
 import org.onosproject.cli.AbstractShellCommand;
 import org.onosproject.cli.net.DeviceIdCompleter;
@@ -58,7 +59,7 @@
 import com.google.common.collect.Lists;
 import com.google.common.io.CharSource;
 
-
+@Service
 @Command(scope = "onos", name = "odtn-manual-test",
          description = "ODTN manual test command")
 public class OdtnManualTestCommand extends AbstractShellCommand {
diff --git a/apps/ofagent/src/main/java/org/onosproject/ofagent/cli/OFAgentAddControllerCommand.java b/apps/ofagent/src/main/java/org/onosproject/ofagent/cli/OFAgentAddControllerCommand.java
index b2d5f39..52cfe23 100644
--- a/apps/ofagent/src/main/java/org/onosproject/ofagent/cli/OFAgentAddControllerCommand.java
+++ b/apps/ofagent/src/main/java/org/onosproject/ofagent/cli/OFAgentAddControllerCommand.java
@@ -17,6 +17,7 @@
 
 import org.apache.karaf.shell.api.action.Argument;
 import org.apache.karaf.shell.api.action.Command;
+import org.apache.karaf.shell.api.action.lifecycle.Service;
 import org.onlab.packet.IpAddress;
 import org.onlab.packet.TpPort;
 import org.onosproject.cli.AbstractShellCommand;
@@ -30,6 +31,7 @@
 /**
  * Adds a controller to the OFAgent.
  */
+@Service
 @Command(scope = "onos", name = "ofagent-controller-add",
         description = "Add a controller to the ofagent")
 public class OFAgentAddControllerCommand extends AbstractShellCommand {
diff --git a/apps/ofagent/src/main/java/org/onosproject/ofagent/cli/OFAgentCreateCommand.java b/apps/ofagent/src/main/java/org/onosproject/ofagent/cli/OFAgentCreateCommand.java
index 66d3961..3088d3e 100644
--- a/apps/ofagent/src/main/java/org/onosproject/ofagent/cli/OFAgentCreateCommand.java
+++ b/apps/ofagent/src/main/java/org/onosproject/ofagent/cli/OFAgentCreateCommand.java
@@ -18,6 +18,7 @@
 import com.google.common.collect.Sets;
 import org.apache.karaf.shell.api.action.Argument;
 import org.apache.karaf.shell.api.action.Command;
+import org.apache.karaf.shell.api.action.lifecycle.Service;
 import org.onlab.packet.IpAddress;
 import org.onlab.packet.TpPort;
 import org.onosproject.cli.AbstractShellCommand;
@@ -37,6 +38,7 @@
 /**
  * Creates a new OFAagent.
  */
+@Service
 @Command(scope = "onos", name = "ofagent-create", description = "Add a new ofagent")
 public class OFAgentCreateCommand extends AbstractShellCommand {
 
diff --git a/apps/ofagent/src/main/java/org/onosproject/ofagent/cli/OFAgentDeleteControllerCommand.java b/apps/ofagent/src/main/java/org/onosproject/ofagent/cli/OFAgentDeleteControllerCommand.java
index 578451a..6134329 100644
--- a/apps/ofagent/src/main/java/org/onosproject/ofagent/cli/OFAgentDeleteControllerCommand.java
+++ b/apps/ofagent/src/main/java/org/onosproject/ofagent/cli/OFAgentDeleteControllerCommand.java
@@ -17,6 +17,7 @@
 
 import org.apache.karaf.shell.api.action.Argument;
 import org.apache.karaf.shell.api.action.Command;
+import org.apache.karaf.shell.api.action.lifecycle.Service;
 import org.onlab.packet.IpAddress;
 import org.onlab.packet.TpPort;
 import org.onosproject.cli.AbstractShellCommand;
@@ -30,6 +31,7 @@
 /**
  * Removes the controller from the OFAgent.
  */
+@Service
 @Command(scope = "onos", name = "ofagent-controller-delete",
         description = "Deletes a controller from the ofagent")
 public class OFAgentDeleteControllerCommand extends AbstractShellCommand {
diff --git a/apps/ofagent/src/main/java/org/onosproject/ofagent/cli/OFAgentListCommand.java b/apps/ofagent/src/main/java/org/onosproject/ofagent/cli/OFAgentListCommand.java
index 845950a..452faf0 100644
--- a/apps/ofagent/src/main/java/org/onosproject/ofagent/cli/OFAgentListCommand.java
+++ b/apps/ofagent/src/main/java/org/onosproject/ofagent/cli/OFAgentListCommand.java
@@ -16,6 +16,7 @@
 package org.onosproject.ofagent.cli;
 
 import org.apache.karaf.shell.api.action.Command;
+import org.apache.karaf.shell.api.action.lifecycle.Service;
 import org.onosproject.cli.AbstractShellCommand;
 import org.onosproject.ofagent.api.OFAgentService;
 
@@ -25,6 +26,7 @@
 /**
  * Lists the existing OFAgents.
  */
+@Service
 @Command(scope = "onos", name = "ofagents", description = "Lists all ofagents")
 public class OFAgentListCommand extends AbstractShellCommand {
 
diff --git a/apps/ofagent/src/main/java/org/onosproject/ofagent/cli/OFAgentRemoveCommand.java b/apps/ofagent/src/main/java/org/onosproject/ofagent/cli/OFAgentRemoveCommand.java
index c201858..1ec25c0 100644
--- a/apps/ofagent/src/main/java/org/onosproject/ofagent/cli/OFAgentRemoveCommand.java
+++ b/apps/ofagent/src/main/java/org/onosproject/ofagent/cli/OFAgentRemoveCommand.java
@@ -17,6 +17,7 @@
 
 import org.apache.karaf.shell.api.action.Argument;
 import org.apache.karaf.shell.api.action.Command;
+import org.apache.karaf.shell.api.action.lifecycle.Service;
 import org.onosproject.cli.AbstractShellCommand;
 import org.onosproject.incubator.net.virtual.NetworkId;
 import org.onosproject.ofagent.api.OFAgent;
@@ -25,6 +26,7 @@
 /**
  * Removes the existing OFAgent.
  */
+@Service
 @Command(scope = "onos", name = "ofagent-remove", description = "Removes the ofagent")
 public class OFAgentRemoveCommand extends AbstractShellCommand {
 
diff --git a/apps/ofagent/src/main/java/org/onosproject/ofagent/cli/OFAgentStartCommand.java b/apps/ofagent/src/main/java/org/onosproject/ofagent/cli/OFAgentStartCommand.java
index dfd0c83..a7c3fd0 100644
--- a/apps/ofagent/src/main/java/org/onosproject/ofagent/cli/OFAgentStartCommand.java
+++ b/apps/ofagent/src/main/java/org/onosproject/ofagent/cli/OFAgentStartCommand.java
@@ -17,6 +17,7 @@
 
 import org.apache.karaf.shell.api.action.Argument;
 import org.apache.karaf.shell.api.action.Command;
+import org.apache.karaf.shell.api.action.lifecycle.Service;
 import org.onosproject.cli.AbstractShellCommand;
 import org.onosproject.incubator.net.virtual.NetworkId;
 import org.onosproject.ofagent.api.OFAgentAdminService;
@@ -24,6 +25,7 @@
 /**
  * Starts the OFAgent.
  */
+@Service
 @Command(scope = "onos", name = "ofagent-start", description = "Starts the ofagent")
 public class OFAgentStartCommand extends AbstractShellCommand {
 
diff --git a/apps/ofagent/src/main/java/org/onosproject/ofagent/cli/OFAgentStopCommand.java b/apps/ofagent/src/main/java/org/onosproject/ofagent/cli/OFAgentStopCommand.java
index 087353d..bfbfbd3 100644
--- a/apps/ofagent/src/main/java/org/onosproject/ofagent/cli/OFAgentStopCommand.java
+++ b/apps/ofagent/src/main/java/org/onosproject/ofagent/cli/OFAgentStopCommand.java
@@ -17,6 +17,7 @@
 
 import org.apache.karaf.shell.api.action.Argument;
 import org.apache.karaf.shell.api.action.Command;
+import org.apache.karaf.shell.api.action.lifecycle.Service;
 import org.onosproject.cli.AbstractShellCommand;
 import org.onosproject.incubator.net.virtual.NetworkId;
 import org.onosproject.ofagent.api.OFAgentAdminService;
@@ -24,6 +25,7 @@
 /**
  * Stops the OFAgent.
  */
+@Service
 @Command(scope = "onos", name = "ofagent-stop", description = "Stops the ofagent")
 public class OFAgentStopCommand extends AbstractShellCommand {
 
diff --git a/apps/ofagent/src/main/java/org/onosproject/ofagent/cli/OFSwitchListCommand.java b/apps/ofagent/src/main/java/org/onosproject/ofagent/cli/OFSwitchListCommand.java
index 6539c52..d78f43e 100644
--- a/apps/ofagent/src/main/java/org/onosproject/ofagent/cli/OFSwitchListCommand.java
+++ b/apps/ofagent/src/main/java/org/onosproject/ofagent/cli/OFSwitchListCommand.java
@@ -17,6 +17,7 @@
 
 import org.apache.karaf.shell.api.action.Argument;
 import org.apache.karaf.shell.api.action.Command;
+import org.apache.karaf.shell.api.action.lifecycle.Service;
 import org.onosproject.cli.AbstractShellCommand;
 import org.onosproject.incubator.net.virtual.NetworkId;
 import org.onosproject.ofagent.api.OFSwitch;
@@ -28,6 +29,7 @@
 /**
  * Lists virtual OF switches.
  */
+@Service
 @Command(scope = "onos", name = "ofagent-switches", description = "Lists all OF switches")
 public class OFSwitchListCommand extends AbstractShellCommand {
 
diff --git a/apps/openstacknetworking/app/src/main/java/org/onosproject/openstacknetworking/cli/DeleteExternalPeerRouterCommand.java b/apps/openstacknetworking/app/src/main/java/org/onosproject/openstacknetworking/cli/DeleteExternalPeerRouterCommand.java
index 2154cb8..25a7858 100644
--- a/apps/openstacknetworking/app/src/main/java/org/onosproject/openstacknetworking/cli/DeleteExternalPeerRouterCommand.java
+++ b/apps/openstacknetworking/app/src/main/java/org/onosproject/openstacknetworking/cli/DeleteExternalPeerRouterCommand.java
@@ -18,6 +18,7 @@
 import com.google.common.collect.Lists;
 import org.apache.karaf.shell.api.action.Argument;
 import org.apache.karaf.shell.api.action.Command;
+import org.apache.karaf.shell.api.action.lifecycle.Service;
 import org.onosproject.cli.AbstractShellCommand;
 import org.onosproject.openstacknetworking.api.ExternalPeerRouter;
 import org.onosproject.openstacknetworking.api.OpenstackNetworkAdminService;
@@ -27,6 +28,7 @@
 /**
  * Deletes external peer router.
  */
+@Service
 @Command(scope = "onos", name = "openstack-delete-peer-router",
         description = "Delete external peer router")
 public class DeleteExternalPeerRouterCommand extends AbstractShellCommand {
diff --git a/apps/openstacknetworking/app/src/main/java/org/onosproject/openstacknetworking/cli/ExternalPeerRouterListCommand.java b/apps/openstacknetworking/app/src/main/java/org/onosproject/openstacknetworking/cli/ExternalPeerRouterListCommand.java
index 0fd29d0..9f67ef9 100644
--- a/apps/openstacknetworking/app/src/main/java/org/onosproject/openstacknetworking/cli/ExternalPeerRouterListCommand.java
+++ b/apps/openstacknetworking/app/src/main/java/org/onosproject/openstacknetworking/cli/ExternalPeerRouterListCommand.java
@@ -19,6 +19,7 @@
 import com.fasterxml.jackson.databind.node.ArrayNode;
 import com.google.common.collect.Lists;
 import org.apache.karaf.shell.api.action.Command;
+import org.apache.karaf.shell.api.action.lifecycle.Service;
 import org.onosproject.cli.AbstractShellCommand;
 import org.onosproject.openstacknetworking.api.ExternalPeerRouter;
 import org.onosproject.openstacknetworking.api.OpenstackNetworkService;
@@ -30,6 +31,7 @@
 /**
  * Lists external peer router lists.
  */
+@Service
 @Command(scope = "onos", name = "openstack-peer-routers",
         description = "Lists external peer router lists")
 public class ExternalPeerRouterListCommand extends AbstractShellCommand {
diff --git a/apps/openstacknetworking/app/src/main/java/org/onosproject/openstacknetworking/cli/InstancePortListCommand.java b/apps/openstacknetworking/app/src/main/java/org/onosproject/openstacknetworking/cli/InstancePortListCommand.java
index 00c7e75..e8c901c 100644
--- a/apps/openstacknetworking/app/src/main/java/org/onosproject/openstacknetworking/cli/InstancePortListCommand.java
+++ b/apps/openstacknetworking/app/src/main/java/org/onosproject/openstacknetworking/cli/InstancePortListCommand.java
@@ -19,6 +19,7 @@
 import com.fasterxml.jackson.databind.node.ArrayNode;
 import com.google.common.collect.Lists;
 import org.apache.karaf.shell.api.action.Command;
+import org.apache.karaf.shell.api.action.lifecycle.Service;
 import org.onosproject.cli.AbstractShellCommand;
 import org.onosproject.openstacknetworking.api.InstancePort;
 import org.onosproject.openstacknetworking.api.InstancePortService;
@@ -31,6 +32,7 @@
 /**
  * Lists OpenStack instance ports.
  */
+@Service
 @Command(scope = "onos", name = "openstack-instance-ports",
         description = "Lists all OpenStack instance ports")
 public class InstancePortListCommand extends AbstractShellCommand {
diff --git a/apps/openstacknetworking/app/src/main/java/org/onosproject/openstacknetworking/cli/OpenstackAddAclCommand.java b/apps/openstacknetworking/app/src/main/java/org/onosproject/openstacknetworking/cli/OpenstackAddAclCommand.java
index 0e4fdde..845c258 100644
--- a/apps/openstacknetworking/app/src/main/java/org/onosproject/openstacknetworking/cli/OpenstackAddAclCommand.java
+++ b/apps/openstacknetworking/app/src/main/java/org/onosproject/openstacknetworking/cli/OpenstackAddAclCommand.java
@@ -17,6 +17,7 @@
 
 import org.apache.karaf.shell.api.action.Argument;
 import org.apache.karaf.shell.api.action.Command;
+import org.apache.karaf.shell.api.action.lifecycle.Service;
 import org.onlab.packet.Ethernet;
 import org.onlab.packet.IPv4;
 import org.onlab.packet.IpAddress;
@@ -41,6 +42,7 @@
 /**
  * Add acl.
  */
+@Service
 @Command(scope = "onos", name = "openstack-add-acl",
         description = "Add acl rules to VM")
 public class OpenstackAddAclCommand extends AbstractShellCommand {
diff --git a/apps/openstacknetworking/app/src/main/java/org/onosproject/openstacknetworking/cli/OpenstackConfigArpModeCommand.java b/apps/openstacknetworking/app/src/main/java/org/onosproject/openstacknetworking/cli/OpenstackConfigArpModeCommand.java
index 9d08658..0b5d226 100644
--- a/apps/openstacknetworking/app/src/main/java/org/onosproject/openstacknetworking/cli/OpenstackConfigArpModeCommand.java
+++ b/apps/openstacknetworking/app/src/main/java/org/onosproject/openstacknetworking/cli/OpenstackConfigArpModeCommand.java
@@ -17,6 +17,7 @@
 
 import org.apache.karaf.shell.api.action.Argument;
 import org.apache.karaf.shell.api.action.Command;
+import org.apache.karaf.shell.api.action.lifecycle.Service;
 import org.onosproject.cfg.ComponentConfigService;
 import org.onosproject.cli.AbstractShellCommand;
 import org.onosproject.core.ApplicationId;
@@ -37,6 +38,7 @@
 /**
  * Configure ARP mode.
  */
+@Service
 @Command(scope = "onos", name = "openstack-config-arp-mode",
         description = "Re-configure ARP mode (proxy | broadcast)")
 public class OpenstackConfigArpModeCommand extends AbstractShellCommand {
diff --git a/apps/openstacknetworking/app/src/main/java/org/onosproject/openstacknetworking/cli/OpenstackDirectPortAddCommand.java b/apps/openstacknetworking/app/src/main/java/org/onosproject/openstacknetworking/cli/OpenstackDirectPortAddCommand.java
index 16c36de..85da732 100644
--- a/apps/openstacknetworking/app/src/main/java/org/onosproject/openstacknetworking/cli/OpenstackDirectPortAddCommand.java
+++ b/apps/openstacknetworking/app/src/main/java/org/onosproject/openstacknetworking/cli/OpenstackDirectPortAddCommand.java
@@ -17,6 +17,7 @@
 
 import org.apache.karaf.shell.api.action.Argument;
 import org.apache.karaf.shell.api.action.Command;
+import org.apache.karaf.shell.api.action.lifecycle.Service;
 import org.onosproject.cli.AbstractShellCommand;
 import org.onosproject.net.device.DeviceService;
 import org.onosproject.openstacknetworking.api.OpenstackNetworkService;
@@ -36,6 +37,7 @@
  * VM is instantiated but the related VF port can't be added.
  * After recovering ovsdb connection, you can manually add VF ports by this CLI.
  */
+@Service
 @Command(scope = "onos", name = "openstack-direct-port-add",
         description = "Manually adds OpenStack direct ports to the device")
 public class OpenstackDirectPortAddCommand extends AbstractShellCommand {
diff --git a/apps/openstacknetworking/app/src/main/java/org/onosproject/openstacknetworking/cli/OpenstackDirectPortListCommand.java b/apps/openstacknetworking/app/src/main/java/org/onosproject/openstacknetworking/cli/OpenstackDirectPortListCommand.java
index 5c2eb7c..55e7c39 100644
--- a/apps/openstacknetworking/app/src/main/java/org/onosproject/openstacknetworking/cli/OpenstackDirectPortListCommand.java
+++ b/apps/openstacknetworking/app/src/main/java/org/onosproject/openstacknetworking/cli/OpenstackDirectPortListCommand.java
@@ -16,6 +16,7 @@
 package org.onosproject.openstacknetworking.cli;
 
 import org.apache.karaf.shell.api.action.Command;
+import org.apache.karaf.shell.api.action.lifecycle.Service;
 import org.onosproject.cli.AbstractShellCommand;
 import org.onosproject.openstacknetworking.api.OpenstackNetworkService;
 import org.openstack4j.model.network.IP;
@@ -32,6 +33,7 @@
 /**
  * Lists OpenStack direct ports.
  */
+@Service
 @Command(scope = "onos", name = "openstack-direct-ports",
         description = "Lists all OpenStack direct ports")
 public class OpenstackDirectPortListCommand extends AbstractShellCommand {
diff --git a/apps/openstacknetworking/app/src/main/java/org/onosproject/openstacknetworking/cli/OpenstackFloatingIpListCommand.java b/apps/openstacknetworking/app/src/main/java/org/onosproject/openstacknetworking/cli/OpenstackFloatingIpListCommand.java
index 49a6600..9af9a1a 100644
--- a/apps/openstacknetworking/app/src/main/java/org/onosproject/openstacknetworking/cli/OpenstackFloatingIpListCommand.java
+++ b/apps/openstacknetworking/app/src/main/java/org/onosproject/openstacknetworking/cli/OpenstackFloatingIpListCommand.java
@@ -20,6 +20,7 @@
 import com.google.common.base.Strings;
 import com.google.common.collect.Lists;
 import org.apache.karaf.shell.api.action.Command;
+import org.apache.karaf.shell.api.action.lifecycle.Service;
 import org.onosproject.cli.AbstractShellCommand;
 import org.onosproject.openstacknetworking.api.OpenstackRouterService;
 import org.openstack4j.model.network.NetFloatingIP;
@@ -34,6 +35,7 @@
 /**
  * Lists OpenStack floating IP addresses.
  */
+@Service
 @Command(scope = "onos", name = "openstack-floatingips",
         description = "Lists all OpenStack floating IP addresses")
 public class OpenstackFloatingIpListCommand extends AbstractShellCommand {
diff --git a/apps/openstacknetworking/app/src/main/java/org/onosproject/openstacknetworking/cli/OpenstackFlowTraceCommand.java b/apps/openstacknetworking/app/src/main/java/org/onosproject/openstacknetworking/cli/OpenstackFlowTraceCommand.java
index 25d78fe..ad5ef21 100644
--- a/apps/openstacknetworking/app/src/main/java/org/onosproject/openstacknetworking/cli/OpenstackFlowTraceCommand.java
+++ b/apps/openstacknetworking/app/src/main/java/org/onosproject/openstacknetworking/cli/OpenstackFlowTraceCommand.java
@@ -17,6 +17,7 @@
 
 import org.apache.karaf.shell.api.action.Argument;
 import org.apache.karaf.shell.api.action.Command;
+import org.apache.karaf.shell.api.action.lifecycle.Service;
 import org.onosproject.cli.AbstractShellCommand;
 import org.onosproject.openstacknetworking.api.InstancePort;
 import org.onosproject.openstacknetworking.api.InstancePortAdminService;
@@ -32,6 +33,7 @@
 /**
  * Requests flow trace command.
  */
+@Service
 @Command(scope = "onos", name = "openstack-flow-trace",
         description = "Requests flow trace command")
 public class OpenstackFlowTraceCommand extends AbstractShellCommand {
diff --git a/apps/openstacknetworking/app/src/main/java/org/onosproject/openstacknetworking/cli/OpenstackNetworkListCommand.java b/apps/openstacknetworking/app/src/main/java/org/onosproject/openstacknetworking/cli/OpenstackNetworkListCommand.java
index 8c55ccc..2c709f1 100644
--- a/apps/openstacknetworking/app/src/main/java/org/onosproject/openstacknetworking/cli/OpenstackNetworkListCommand.java
+++ b/apps/openstacknetworking/app/src/main/java/org/onosproject/openstacknetworking/cli/OpenstackNetworkListCommand.java
@@ -19,6 +19,7 @@
 import com.fasterxml.jackson.databind.node.ArrayNode;
 import com.google.common.collect.Lists;
 import org.apache.karaf.shell.api.action.Command;
+import org.apache.karaf.shell.api.action.lifecycle.Service;
 import org.onosproject.cli.AbstractShellCommand;
 import org.onosproject.openstacknetworking.api.OpenstackNetworkService;
 import org.openstack4j.model.network.Network;
@@ -35,6 +36,7 @@
 /**
  * Lists OpenStack networks.
  */
+@Service
 @Command(scope = "onos", name = "openstack-networks",
         description = "Lists all OpenStack networks")
 public class OpenstackNetworkListCommand extends AbstractShellCommand {
diff --git a/apps/openstacknetworking/app/src/main/java/org/onosproject/openstacknetworking/cli/OpenstackPortListCommand.java b/apps/openstacknetworking/app/src/main/java/org/onosproject/openstacknetworking/cli/OpenstackPortListCommand.java
index 9233e15..176d7f8 100644
--- a/apps/openstacknetworking/app/src/main/java/org/onosproject/openstacknetworking/cli/OpenstackPortListCommand.java
+++ b/apps/openstacknetworking/app/src/main/java/org/onosproject/openstacknetworking/cli/OpenstackPortListCommand.java
@@ -21,6 +21,7 @@
 import com.google.common.collect.Lists;
 import org.apache.karaf.shell.api.action.Argument;
 import org.apache.karaf.shell.api.action.Command;
+import org.apache.karaf.shell.api.action.lifecycle.Service;
 import org.onosproject.cli.AbstractShellCommand;
 import org.onosproject.openstacknetworking.api.OpenstackNetworkService;
 import org.openstack4j.model.network.IP;
@@ -38,6 +39,7 @@
 /**
  * Lists OpenStack ports.
  */
+@Service
 @Command(scope = "onos", name = "openstack-ports",
         description = "Lists all OpenStack ports")
 public class OpenstackPortListCommand extends AbstractShellCommand {
diff --git a/apps/openstacknetworking/app/src/main/java/org/onosproject/openstacknetworking/cli/OpenstackPurgeRulesCommand.java b/apps/openstacknetworking/app/src/main/java/org/onosproject/openstacknetworking/cli/OpenstackPurgeRulesCommand.java
index 371edd3..707b5e6 100644
--- a/apps/openstacknetworking/app/src/main/java/org/onosproject/openstacknetworking/cli/OpenstackPurgeRulesCommand.java
+++ b/apps/openstacknetworking/app/src/main/java/org/onosproject/openstacknetworking/cli/OpenstackPurgeRulesCommand.java
@@ -16,6 +16,7 @@
 package org.onosproject.openstacknetworking.cli;
 
 import org.apache.karaf.shell.api.action.Command;
+import org.apache.karaf.shell.api.action.lifecycle.Service;
 import org.onosproject.cli.AbstractShellCommand;
 import org.onosproject.core.ApplicationId;
 import org.onosproject.core.CoreService;
@@ -25,6 +26,7 @@
 /**
  * Purges all existing network states.
  */
+@Service
 @Command(scope = "onos", name = "openstack-purge-rules",
         description = "Purges all flow rules installed by OpenStack networking app")
 public class OpenstackPurgeRulesCommand extends AbstractShellCommand {
diff --git a/apps/openstacknetworking/app/src/main/java/org/onosproject/openstacknetworking/cli/OpenstackPurgeStateCommand.java b/apps/openstacknetworking/app/src/main/java/org/onosproject/openstacknetworking/cli/OpenstackPurgeStateCommand.java
index 87df4b4..ad65e69 100644
--- a/apps/openstacknetworking/app/src/main/java/org/onosproject/openstacknetworking/cli/OpenstackPurgeStateCommand.java
+++ b/apps/openstacknetworking/app/src/main/java/org/onosproject/openstacknetworking/cli/OpenstackPurgeStateCommand.java
@@ -16,6 +16,7 @@
 package org.onosproject.openstacknetworking.cli;
 
 import org.apache.karaf.shell.api.action.Command;
+import org.apache.karaf.shell.api.action.lifecycle.Service;
 import org.onosproject.cli.AbstractShellCommand;
 import org.onosproject.openstacknetworking.api.OpenstackNetworkAdminService;
 import org.onosproject.openstacknetworking.api.OpenstackRouterAdminService;
@@ -24,6 +25,7 @@
 /**
  * Purges all existing network states.
  */
+@Service
 @Command(scope = "onos", name = "openstack-purge-states",
         description = "Purges all OpenStack network states")
 public class OpenstackPurgeStateCommand extends AbstractShellCommand {
diff --git a/apps/openstacknetworking/app/src/main/java/org/onosproject/openstacknetworking/cli/OpenstackRemoveAclCommand.java b/apps/openstacknetworking/app/src/main/java/org/onosproject/openstacknetworking/cli/OpenstackRemoveAclCommand.java
index 3ce24e2..37a6b9c 100644
--- a/apps/openstacknetworking/app/src/main/java/org/onosproject/openstacknetworking/cli/OpenstackRemoveAclCommand.java
+++ b/apps/openstacknetworking/app/src/main/java/org/onosproject/openstacknetworking/cli/OpenstackRemoveAclCommand.java
@@ -17,6 +17,7 @@
 
 import org.apache.karaf.shell.api.action.Argument;
 import org.apache.karaf.shell.api.action.Command;
+import org.apache.karaf.shell.api.action.lifecycle.Service;
 import org.onlab.packet.Ethernet;
 import org.onlab.packet.IPv4;
 import org.onlab.packet.IpAddress;
@@ -38,6 +39,7 @@
 import static org.onosproject.openstacknetworking.api.Constants.OPENSTACK_NETWORKING_APP_ID;
 import static org.onosproject.openstacknetworking.api.Constants.PRIORITY_FORCED_ACL_RULE;
 
+@Service
 @Command(scope = "onos", name = "openstack-remove-acl",
         description = "Remove acl rules to VM")
 public class OpenstackRemoveAclCommand extends AbstractShellCommand {
diff --git a/apps/openstacknetworking/app/src/main/java/org/onosproject/openstacknetworking/cli/OpenstackResetPortsCommand.java b/apps/openstacknetworking/app/src/main/java/org/onosproject/openstacknetworking/cli/OpenstackResetPortsCommand.java
index fdd86c7..adfd5c2 100755
--- a/apps/openstacknetworking/app/src/main/java/org/onosproject/openstacknetworking/cli/OpenstackResetPortsCommand.java
+++ b/apps/openstacknetworking/app/src/main/java/org/onosproject/openstacknetworking/cli/OpenstackResetPortsCommand.java
@@ -18,6 +18,7 @@
 import org.apache.karaf.shell.api.action.Argument;
 import org.apache.karaf.shell.api.action.Command;
 import org.apache.karaf.shell.api.action.Option;
+import org.apache.karaf.shell.api.action.lifecycle.Service;
 import org.onosproject.cli.AbstractShellCommand;
 import org.onosproject.openstacknetworking.api.InstancePort;
 import org.onosproject.openstacknetworking.api.InstancePortAdminService;
@@ -28,6 +29,7 @@
 /**
  * Purges existing instance ports.
  */
+@Service
 @Command(scope = "onos", name = "openstack-reset-ports",
         description = "Reset existing instance ports created by OpenStack networking app")
 public class OpenstackResetPortsCommand extends AbstractShellCommand {
diff --git a/apps/openstacknetworking/app/src/main/java/org/onosproject/openstacknetworking/cli/OpenstackRouterListCommand.java b/apps/openstacknetworking/app/src/main/java/org/onosproject/openstacknetworking/cli/OpenstackRouterListCommand.java
index b6ace99..f635131 100644
--- a/apps/openstacknetworking/app/src/main/java/org/onosproject/openstacknetworking/cli/OpenstackRouterListCommand.java
+++ b/apps/openstacknetworking/app/src/main/java/org/onosproject/openstacknetworking/cli/OpenstackRouterListCommand.java
@@ -19,6 +19,7 @@
 import com.fasterxml.jackson.databind.node.ArrayNode;
 import com.google.common.collect.Lists;
 import org.apache.karaf.shell.api.action.Command;
+import org.apache.karaf.shell.api.action.lifecycle.Service;
 import org.onosproject.cli.AbstractShellCommand;
 import org.onosproject.openstacknetworking.api.OpenstackNetworkService;
 import org.onosproject.openstacknetworking.api.OpenstackRouterService;
@@ -39,6 +40,7 @@
 /**
  * Lists OpenStack routers.
  */
+@Service
 @Command(scope = "onos", name = "openstack-routers",
         description = "Lists all OpenStack routers")
 public class OpenstackRouterListCommand extends AbstractShellCommand {
diff --git a/apps/openstacknetworking/app/src/main/java/org/onosproject/openstacknetworking/cli/OpenstackSecurityGroupListCommand.java b/apps/openstacknetworking/app/src/main/java/org/onosproject/openstacknetworking/cli/OpenstackSecurityGroupListCommand.java
index 48bb374..e772840 100644
--- a/apps/openstacknetworking/app/src/main/java/org/onosproject/openstacknetworking/cli/OpenstackSecurityGroupListCommand.java
+++ b/apps/openstacknetworking/app/src/main/java/org/onosproject/openstacknetworking/cli/OpenstackSecurityGroupListCommand.java
@@ -20,6 +20,7 @@
 import com.google.common.collect.Lists;
 import org.apache.karaf.shell.api.action.Argument;
 import org.apache.karaf.shell.api.action.Command;
+import org.apache.karaf.shell.api.action.lifecycle.Service;
 import org.onosproject.cli.AbstractShellCommand;
 import org.onosproject.openstacknetworking.api.OpenstackSecurityGroupService;
 import org.openstack4j.model.network.SecurityGroup;
@@ -34,6 +35,7 @@
 /**
  * Lists OpenStack security groups.
  */
+@Service
 @Command(scope = "onos", name = "openstack-security-groups",
         description = "Lists all OpenStack security groups")
 public class OpenstackSecurityGroupListCommand extends AbstractShellCommand {
diff --git a/apps/openstacknetworking/app/src/main/java/org/onosproject/openstacknetworking/cli/OpenstackSyncRulesCommand.java b/apps/openstacknetworking/app/src/main/java/org/onosproject/openstacknetworking/cli/OpenstackSyncRulesCommand.java
index a539497..350655f 100644
--- a/apps/openstacknetworking/app/src/main/java/org/onosproject/openstacknetworking/cli/OpenstackSyncRulesCommand.java
+++ b/apps/openstacknetworking/app/src/main/java/org/onosproject/openstacknetworking/cli/OpenstackSyncRulesCommand.java
@@ -16,6 +16,7 @@
 package org.onosproject.openstacknetworking.cli;
 
 import org.apache.karaf.shell.api.action.Command;
+import org.apache.karaf.shell.api.action.lifecycle.Service;
 import org.onosproject.cli.AbstractShellCommand;
 import org.onosproject.openstacknode.api.NodeState;
 import org.onosproject.openstacknode.api.OpenstackNode;
@@ -27,6 +28,7 @@
 /**
  * Re-installs flow rules for OpenStack networking.
  */
+@Service
 @Command(scope = "onos", name = "openstack-sync-rules",
         description = "Re-installs flow rules for OpenStack networking")
 public class OpenstackSyncRulesCommand extends AbstractShellCommand {
diff --git a/apps/openstacknetworking/app/src/main/java/org/onosproject/openstacknetworking/cli/OpenstackSyncStateCommand.java b/apps/openstacknetworking/app/src/main/java/org/onosproject/openstacknetworking/cli/OpenstackSyncStateCommand.java
index fe3a3ed..f7495d6 100644
--- a/apps/openstacknetworking/app/src/main/java/org/onosproject/openstacknetworking/cli/OpenstackSyncStateCommand.java
+++ b/apps/openstacknetworking/app/src/main/java/org/onosproject/openstacknetworking/cli/OpenstackSyncStateCommand.java
@@ -17,6 +17,7 @@
 
 import com.google.common.base.Strings;
 import org.apache.karaf.shell.api.action.Command;
+import org.apache.karaf.shell.api.action.lifecycle.Service;
 import org.onosproject.cli.AbstractShellCommand;
 import org.onosproject.openstacknetworking.api.OpenstackNetworkAdminService;
 import org.onosproject.openstacknetworking.api.OpenstackRouterAdminService;
@@ -43,6 +44,7 @@
 /**
  * Synchronizes OpenStack network states.
  */
+@Service
 @Command(scope = "onos", name = "openstack-sync-states",
         description = "Synchronizes all OpenStack network states")
 public class OpenstackSyncStateCommand extends AbstractShellCommand {
diff --git a/apps/openstacknetworking/app/src/main/java/org/onosproject/openstacknetworking/cli/PurgeInstancePortsCommand.java b/apps/openstacknetworking/app/src/main/java/org/onosproject/openstacknetworking/cli/PurgeInstancePortsCommand.java
index f782c82..431472c 100644
--- a/apps/openstacknetworking/app/src/main/java/org/onosproject/openstacknetworking/cli/PurgeInstancePortsCommand.java
+++ b/apps/openstacknetworking/app/src/main/java/org/onosproject/openstacknetworking/cli/PurgeInstancePortsCommand.java
@@ -18,6 +18,7 @@
 import org.apache.karaf.shell.api.action.Argument;
 import org.apache.karaf.shell.api.action.Command;
 import org.apache.karaf.shell.api.action.Option;
+import org.apache.karaf.shell.api.action.lifecycle.Service;
 import org.onosproject.cli.AbstractShellCommand;
 import org.onosproject.openstacknetworking.api.InstancePort;
 import org.onosproject.openstacknetworking.api.InstancePortAdminService;
@@ -27,6 +28,7 @@
 /**
  * Purges existing instance ports.
  */
+@Service
 @Command(scope = "onos", name = "purge-instance-ports",
         description = "Purges existing instance ports created by OpenStack networking app")
 public class PurgeInstancePortsCommand extends AbstractShellCommand {
diff --git a/apps/openstacknetworking/app/src/main/java/org/onosproject/openstacknetworking/cli/UpdateExternalPeerRouterCommand.java b/apps/openstacknetworking/app/src/main/java/org/onosproject/openstacknetworking/cli/UpdateExternalPeerRouterCommand.java
index 2ef184f..81fcd8c 100644
--- a/apps/openstacknetworking/app/src/main/java/org/onosproject/openstacknetworking/cli/UpdateExternalPeerRouterCommand.java
+++ b/apps/openstacknetworking/app/src/main/java/org/onosproject/openstacknetworking/cli/UpdateExternalPeerRouterCommand.java
@@ -18,6 +18,7 @@
 import com.google.common.collect.Lists;
 import org.apache.karaf.shell.api.action.Argument;
 import org.apache.karaf.shell.api.action.Command;
+import org.apache.karaf.shell.api.action.lifecycle.Service;
 import org.onlab.packet.Ip4Address;
 import org.onlab.packet.IpAddress;
 import org.onlab.packet.MacAddress;
@@ -31,6 +32,7 @@
 /**
  * Updates external peer router.
  */
+@Service
 @Command(scope = "onos", name = "openstack-update-peer-router",
         description = "Update external peer router")
 public class UpdateExternalPeerRouterCommand extends AbstractShellCommand {
diff --git a/apps/openstacknetworking/app/src/main/java/org/onosproject/openstacknetworking/cli/UpdateExternalPeerRouterVlanCommand.java b/apps/openstacknetworking/app/src/main/java/org/onosproject/openstacknetworking/cli/UpdateExternalPeerRouterVlanCommand.java
index d547ced..9e84ebc 100644
--- a/apps/openstacknetworking/app/src/main/java/org/onosproject/openstacknetworking/cli/UpdateExternalPeerRouterVlanCommand.java
+++ b/apps/openstacknetworking/app/src/main/java/org/onosproject/openstacknetworking/cli/UpdateExternalPeerRouterVlanCommand.java
@@ -18,6 +18,7 @@
 import com.google.common.collect.Lists;
 import org.apache.karaf.shell.api.action.Argument;
 import org.apache.karaf.shell.api.action.Command;
+import org.apache.karaf.shell.api.action.lifecycle.Service;
 import org.onlab.packet.Ip4Address;
 import org.onlab.packet.IpAddress;
 import org.onlab.packet.VlanId;
@@ -34,6 +35,7 @@
 /**
  * Updates external peer router macc address.
  */
+@Service
 @Command(scope = "onos", name = "openstack-update-peer-router-vlan",
         description = "Updates external peer router vlan")
 public class UpdateExternalPeerRouterVlanCommand extends AbstractShellCommand {
diff --git a/apps/openstacknode/app/src/main/java/org/onosproject/openstacknode/cli/OpenstackHostnameCompleter.java b/apps/openstacknode/app/src/main/java/org/onosproject/openstacknode/cli/OpenstackHostnameCompleter.java
index 8dfd0fe..de8530e 100644
--- a/apps/openstacknode/app/src/main/java/org/onosproject/openstacknode/cli/OpenstackHostnameCompleter.java
+++ b/apps/openstacknode/app/src/main/java/org/onosproject/openstacknode/cli/OpenstackHostnameCompleter.java
@@ -15,6 +15,7 @@
  */
 package org.onosproject.openstacknode.cli;
 
+import org.apache.karaf.shell.api.action.lifecycle.Service;
 import org.apache.karaf.shell.api.console.CommandLine;
 import org.apache.karaf.shell.api.console.Completer;
 import org.apache.karaf.shell.api.console.Session;
@@ -31,6 +32,7 @@
 /**
  * Openstack host completer.
  */
+@Service
 public class OpenstackHostnameCompleter implements Completer {
 
     @Override
diff --git a/apps/openstacknode/app/src/main/java/org/onosproject/openstacknode/cli/OpenstackNodeCheckCommand.java b/apps/openstacknode/app/src/main/java/org/onosproject/openstacknode/cli/OpenstackNodeCheckCommand.java
index 8289c98..c67ff5b 100644
--- a/apps/openstacknode/app/src/main/java/org/onosproject/openstacknode/cli/OpenstackNodeCheckCommand.java
+++ b/apps/openstacknode/app/src/main/java/org/onosproject/openstacknode/cli/OpenstackNodeCheckCommand.java
@@ -18,6 +18,7 @@
 
 import org.apache.karaf.shell.api.action.Argument;
 import org.apache.karaf.shell.api.action.Command;
+import org.apache.karaf.shell.api.action.lifecycle.Service;
 import org.onosproject.cli.AbstractShellCommand;
 import org.onosproject.net.DeviceId;
 import org.onosproject.net.Port;
@@ -33,6 +34,7 @@
 /**
  * Checks detailed node init state.
  */
+@Service
 @Command(scope = "onos", name = "openstack-node-check",
         description = "Shows detailed node init state")
 public class OpenstackNodeCheckCommand extends AbstractShellCommand {
diff --git a/apps/openstacknode/app/src/main/java/org/onosproject/openstacknode/cli/OpenstackNodeInitCommand.java b/apps/openstacknode/app/src/main/java/org/onosproject/openstacknode/cli/OpenstackNodeInitCommand.java
index bfd4b31..155ecfc 100644
--- a/apps/openstacknode/app/src/main/java/org/onosproject/openstacknode/cli/OpenstackNodeInitCommand.java
+++ b/apps/openstacknode/app/src/main/java/org/onosproject/openstacknode/cli/OpenstackNodeInitCommand.java
@@ -19,6 +19,7 @@
 import org.apache.karaf.shell.api.action.Argument;
 import org.apache.karaf.shell.api.action.Command;
 import org.apache.karaf.shell.api.action.Option;
+import org.apache.karaf.shell.api.action.lifecycle.Service;
 import org.onosproject.cli.AbstractShellCommand;
 import org.onosproject.openstacknode.api.NodeState;
 import org.onosproject.openstacknode.api.OpenstackNode;
@@ -28,6 +29,7 @@
 /**
  * Initializes nodes for OpenStack node service.
  */
+@Service
 @Command(scope = "onos", name = "openstack-node-init",
         description = "Initializes nodes for OpenStack node service")
 public class OpenstackNodeInitCommand extends AbstractShellCommand {
diff --git a/apps/openstacknode/app/src/main/java/org/onosproject/openstacknode/cli/OpenstackNodeListCommand.java b/apps/openstacknode/app/src/main/java/org/onosproject/openstacknode/cli/OpenstackNodeListCommand.java
index e289030..92a1020 100644
--- a/apps/openstacknode/app/src/main/java/org/onosproject/openstacknode/cli/OpenstackNodeListCommand.java
+++ b/apps/openstacknode/app/src/main/java/org/onosproject/openstacknode/cli/OpenstackNodeListCommand.java
@@ -20,6 +20,7 @@
 import com.fasterxml.jackson.databind.node.ArrayNode;
 import com.google.common.collect.Lists;
 import org.apache.karaf.shell.api.action.Command;
+import org.apache.karaf.shell.api.action.lifecycle.Service;
 import org.onosproject.cli.AbstractShellCommand;
 import org.onosproject.openstacknode.api.OpenstackNode;
 import org.onosproject.openstacknode.api.OpenstackNodeService;
@@ -32,6 +33,7 @@
 /**
  * Lists all nodes registered to the service.
  */
+@Service
 @Command(scope = "onos", name = "openstack-nodes",
         description = "Lists all nodes registered in OpenStack node service")
 public class OpenstackNodeListCommand extends AbstractShellCommand {
diff --git a/apps/openstacktroubleshoot/app/src/main/java/org/onosproject/openstacktroubleshoot/cli/OpenstackEastWestProbeCommand.java b/apps/openstacktroubleshoot/app/src/main/java/org/onosproject/openstacktroubleshoot/cli/OpenstackEastWestProbeCommand.java
index ebb132f..943290b 100644
--- a/apps/openstacktroubleshoot/app/src/main/java/org/onosproject/openstacktroubleshoot/cli/OpenstackEastWestProbeCommand.java
+++ b/apps/openstacktroubleshoot/app/src/main/java/org/onosproject/openstacktroubleshoot/cli/OpenstackEastWestProbeCommand.java
@@ -19,6 +19,7 @@
 import org.apache.karaf.shell.api.action.Argument;
 import org.apache.karaf.shell.api.action.Command;
 import org.apache.karaf.shell.api.action.Option;
+import org.apache.karaf.shell.api.action.lifecycle.Service;
 import org.onlab.packet.IpAddress;
 import org.onosproject.cli.AbstractShellCommand;
 import org.onosproject.cluster.ClusterService;
@@ -41,6 +42,7 @@
 /**
  * Checks the east-west VMs connectivity.
  */
+@Service
 @Command(scope = "onos", name = "openstack-check-east-west",
         description = "Checks the east-west VMs connectivity")
 public class OpenstackEastWestProbeCommand extends AbstractShellCommand {
diff --git a/apps/openstacktroubleshoot/app/src/main/java/org/onosproject/openstacktroubleshoot/cli/OpenstackNorthSouthProbeCommand.java b/apps/openstacktroubleshoot/app/src/main/java/org/onosproject/openstacktroubleshoot/cli/OpenstackNorthSouthProbeCommand.java
index 4346bea..edef1c2 100644
--- a/apps/openstacktroubleshoot/app/src/main/java/org/onosproject/openstacktroubleshoot/cli/OpenstackNorthSouthProbeCommand.java
+++ b/apps/openstacktroubleshoot/app/src/main/java/org/onosproject/openstacktroubleshoot/cli/OpenstackNorthSouthProbeCommand.java
@@ -19,6 +19,7 @@
 import org.apache.karaf.shell.api.action.Argument;
 import org.apache.karaf.shell.api.action.Command;
 import org.apache.karaf.shell.api.action.Option;
+import org.apache.karaf.shell.api.action.lifecycle.Service;
 import org.onosproject.cli.AbstractShellCommand;
 import org.onosproject.cluster.ClusterService;
 import org.onosproject.cluster.NodeId;
@@ -38,6 +39,7 @@
 /**
  * Checks the north-south VM connectivity.
  */
+@Service
 @Command(scope = "onos", name = "openstack-check-north-south",
         description = "Checks the north-south VMs connectivity")
 public class OpenstackNorthSouthProbeCommand extends AbstractShellCommand {
diff --git a/apps/openstacktroubleshoot/app/src/main/java/org/onosproject/openstacktroubleshoot/cli/ResetMastershipCommand.java b/apps/openstacktroubleshoot/app/src/main/java/org/onosproject/openstacktroubleshoot/cli/ResetMastershipCommand.java
index ae5d39e..00a70e6 100644
--- a/apps/openstacktroubleshoot/app/src/main/java/org/onosproject/openstacktroubleshoot/cli/ResetMastershipCommand.java
+++ b/apps/openstacktroubleshoot/app/src/main/java/org/onosproject/openstacktroubleshoot/cli/ResetMastershipCommand.java
@@ -18,6 +18,7 @@
 
 import org.apache.karaf.shell.api.action.Command;
 import org.apache.karaf.shell.api.action.Option;
+import org.apache.karaf.shell.api.action.lifecycle.Service;
 import org.onosproject.cli.AbstractShellCommand;
 import org.onosproject.cluster.ClusterService;
 import org.onosproject.cluster.NodeId;
@@ -29,6 +30,7 @@
 /**
  * Re-configure mastership.
  */
+@Service
 @Command(scope = "onos", name = "openstack-reset-mastership",
         description = "Reconfigure the mastership")
 public class ResetMastershipCommand extends AbstractShellCommand {
diff --git a/apps/optical-model/src/main/java/org/onosproject/net/optical/cli/OpticalPortsListCommand.java b/apps/optical-model/src/main/java/org/onosproject/net/optical/cli/OpticalPortsListCommand.java
index 302e05f..d61c8bd 100644
--- a/apps/optical-model/src/main/java/org/onosproject/net/optical/cli/OpticalPortsListCommand.java
+++ b/apps/optical-model/src/main/java/org/onosproject/net/optical/cli/OpticalPortsListCommand.java
@@ -17,6 +17,7 @@
 
 import com.fasterxml.jackson.databind.ObjectMapper;
 import org.apache.karaf.shell.api.action.Command;
+import org.apache.karaf.shell.api.action.lifecycle.Service;
 import org.onlab.util.Frequency;
 import org.onosproject.cli.net.DevicePortsListCommand;
 import org.onosproject.net.Device;
@@ -38,6 +39,7 @@
 /**
  * Lists all ports or all ports of a device.
  */
+@Service
 @Command(scope = "onos", name = "optical-ports",
          description = "Lists all optical ports or all optical ports of a device")
 public class OpticalPortsListCommand extends DevicePortsListCommand {
diff --git a/apps/pce/app/src/main/java/org/onosproject/pce/cli/PceDeleteLoadBalancingPathCommand.java b/apps/pce/app/src/main/java/org/onosproject/pce/cli/PceDeleteLoadBalancingPathCommand.java
index e833279..fd8a3cb 100644
--- a/apps/pce/app/src/main/java/org/onosproject/pce/cli/PceDeleteLoadBalancingPathCommand.java
+++ b/apps/pce/app/src/main/java/org/onosproject/pce/cli/PceDeleteLoadBalancingPathCommand.java
@@ -20,6 +20,7 @@
 import org.apache.karaf.shell.api.action.Argument;
 import org.apache.karaf.shell.api.action.Command;
 
+import org.apache.karaf.shell.api.action.lifecycle.Service;
 import org.onosproject.cli.AbstractShellCommand;
 import org.onosproject.pce.pceservice.api.PceService;
 
@@ -28,6 +29,7 @@
 /**
  * Supports deleting pce load balancing path.
  */
+@Service
 @Command(scope = "onos", name = "pce-delete-load-balancing-path",
         description = "Supports deleting pce load balancing path.")
 public class PceDeleteLoadBalancingPathCommand extends AbstractShellCommand {
diff --git a/apps/pce/app/src/main/java/org/onosproject/pce/cli/PceDeletePathCommand.java b/apps/pce/app/src/main/java/org/onosproject/pce/cli/PceDeletePathCommand.java
index 777c4b5..e4a6ccc 100644
--- a/apps/pce/app/src/main/java/org/onosproject/pce/cli/PceDeletePathCommand.java
+++ b/apps/pce/app/src/main/java/org/onosproject/pce/cli/PceDeletePathCommand.java
@@ -20,6 +20,7 @@
 import org.apache.karaf.shell.api.action.Argument;
 import org.apache.karaf.shell.api.action.Command;
 
+import org.apache.karaf.shell.api.action.lifecycle.Service;
 import org.onosproject.cli.AbstractShellCommand;
 import org.onosproject.incubator.net.tunnel.TunnelId;
 import org.onosproject.pce.pceservice.api.PceService;
@@ -29,6 +30,7 @@
 /**
  * Supports deleting pce path.
  */
+@Service
 @Command(scope = "onos", name = "pce-delete-path", description = "Supports deleting pce path.")
 public class PceDeletePathCommand extends AbstractShellCommand {
     private final Logger log = getLogger(getClass());
diff --git a/apps/pce/app/src/main/java/org/onosproject/pce/cli/PceQueryLoadBalancingPathCommand.java b/apps/pce/app/src/main/java/org/onosproject/pce/cli/PceQueryLoadBalancingPathCommand.java
index c66465d..686ea45 100644
--- a/apps/pce/app/src/main/java/org/onosproject/pce/cli/PceQueryLoadBalancingPathCommand.java
+++ b/apps/pce/app/src/main/java/org/onosproject/pce/cli/PceQueryLoadBalancingPathCommand.java
@@ -20,6 +20,7 @@
 import org.apache.karaf.shell.api.action.Argument;
 import org.apache.karaf.shell.api.action.Command;
 
+import org.apache.karaf.shell.api.action.lifecycle.Service;
 import org.onosproject.cli.AbstractShellCommand;
 import org.onosproject.incubator.net.tunnel.Tunnel;
 import org.onosproject.incubator.net.tunnel.TunnelId;
@@ -33,6 +34,7 @@
 /**
  * Supports quering PCE load balanced path.
  */
+@Service
 @Command(scope = "onos", name = "pce-query-load-balancing-path",
         description = "Supports querying PCE path.")
 public class PceQueryLoadBalancingPathCommand extends AbstractShellCommand {
diff --git a/apps/pce/app/src/main/java/org/onosproject/pce/cli/PceQueryPathCommand.java b/apps/pce/app/src/main/java/org/onosproject/pce/cli/PceQueryPathCommand.java
index 1b092b7..5edb675 100644
--- a/apps/pce/app/src/main/java/org/onosproject/pce/cli/PceQueryPathCommand.java
+++ b/apps/pce/app/src/main/java/org/onosproject/pce/cli/PceQueryPathCommand.java
@@ -20,6 +20,7 @@
 import org.apache.karaf.shell.api.action.Command;
 import org.apache.karaf.shell.api.action.Option;
 
+import org.apache.karaf.shell.api.action.lifecycle.Service;
 import org.onosproject.cli.AbstractShellCommand;
 import org.onosproject.incubator.net.tunnel.Tunnel;
 import org.onosproject.incubator.net.tunnel.TunnelId;
@@ -34,6 +35,7 @@
 /**
  * Supports quering PCE path.
  */
+@Service
 @Command(scope = "onos", name = "pce-query-path",
         description = "Supports querying PCE path.")
 public class PceQueryPathCommand extends AbstractShellCommand {
diff --git a/apps/pce/app/src/main/java/org/onosproject/pce/cli/PceSetupPathCommand.java b/apps/pce/app/src/main/java/org/onosproject/pce/cli/PceSetupPathCommand.java
index deb85b4..253a166 100644
--- a/apps/pce/app/src/main/java/org/onosproject/pce/cli/PceSetupPathCommand.java
+++ b/apps/pce/app/src/main/java/org/onosproject/pce/cli/PceSetupPathCommand.java
@@ -28,6 +28,7 @@
 import org.apache.karaf.shell.api.action.Argument;
 import org.apache.karaf.shell.api.action.Command;
 import org.apache.karaf.shell.api.action.Option;
+import org.apache.karaf.shell.api.action.lifecycle.Service;
 import org.onlab.util.DataRateUnit;
 import org.onosproject.cli.AbstractShellCommand;
 import org.onosproject.incubator.net.tunnel.Tunnel;
@@ -49,6 +50,7 @@
 /**
  * Supports creating the pce path.
  */
+@Service
 @Command(scope = "onos", name = "pce-setup-path", description = "Supports creating pce path.")
 public class PceSetupPathCommand extends AbstractShellCommand {
     private final Logger log = getLogger(getClass());
diff --git a/apps/pce/app/src/main/java/org/onosproject/pce/cli/PceUpdatePathCommand.java b/apps/pce/app/src/main/java/org/onosproject/pce/cli/PceUpdatePathCommand.java
index df05347..96796b5 100644
--- a/apps/pce/app/src/main/java/org/onosproject/pce/cli/PceUpdatePathCommand.java
+++ b/apps/pce/app/src/main/java/org/onosproject/pce/cli/PceUpdatePathCommand.java
@@ -24,6 +24,7 @@
 import org.apache.karaf.shell.api.action.Command;
 import org.apache.karaf.shell.api.action.Option;
 
+import org.apache.karaf.shell.api.action.lifecycle.Service;
 import org.onlab.util.DataRateUnit;
 import org.onosproject.cli.AbstractShellCommand;
 import org.onosproject.incubator.net.tunnel.TunnelId;
@@ -37,6 +38,7 @@
 /**
  * Supports updating the PCE path.
  */
+@Service
 @Command(scope = "onos", name = "pce-update-path",
         description = "Supports updating PCE path.")
 public class PceUpdatePathCommand extends AbstractShellCommand {
diff --git a/apps/pim/src/main/java/org/onosproject/pim/cli/PimInterfacesListCommand.java b/apps/pim/src/main/java/org/onosproject/pim/cli/PimInterfacesListCommand.java
index 59e066c..36e045e 100644
--- a/apps/pim/src/main/java/org/onosproject/pim/cli/PimInterfacesListCommand.java
+++ b/apps/pim/src/main/java/org/onosproject/pim/cli/PimInterfacesListCommand.java
@@ -17,6 +17,7 @@
 package org.onosproject.pim.cli;
 
 import org.apache.karaf.shell.api.action.Command;
+import org.apache.karaf.shell.api.action.lifecycle.Service;
 import org.onosproject.cli.AbstractShellCommand;
 import org.onosproject.pim.impl.PimInterface;
 import org.onosproject.pim.impl.PimInterfaceService;
@@ -26,6 +27,7 @@
 /**
  * Lists the interfaces where PIM is enabled.
  */
+@Service
 @Command(scope = "onos", name = "pim-interfaces",
         description = "Lists the interfaces where PIM is enabled")
 public class PimInterfacesListCommand extends AbstractShellCommand {
diff --git a/apps/pim/src/main/java/org/onosproject/pim/cli/PimNeighborsListCommand.java b/apps/pim/src/main/java/org/onosproject/pim/cli/PimNeighborsListCommand.java
index dddb3294..659b399 100644
--- a/apps/pim/src/main/java/org/onosproject/pim/cli/PimNeighborsListCommand.java
+++ b/apps/pim/src/main/java/org/onosproject/pim/cli/PimNeighborsListCommand.java
@@ -17,6 +17,7 @@
 package org.onosproject.pim.cli;
 
 import org.apache.karaf.shell.api.action.Command;
+import org.apache.karaf.shell.api.action.lifecycle.Service;
 import org.onlab.util.Tools;
 import org.onosproject.cli.AbstractShellCommand;
 import org.onosproject.pim.impl.PimInterface;
@@ -28,6 +29,7 @@
 /**
  * Lists PIM neighbors.
  */
+@Service
 @Command(scope = "onos", name = "pim-neighbors",
         description = "Lists the PIM neighbors")
 public class PimNeighborsListCommand extends AbstractShellCommand {
diff --git a/apps/route-service/app/src/main/java/org/onosproject/routeservice/cli/RouteAddCommand.java b/apps/route-service/app/src/main/java/org/onosproject/routeservice/cli/RouteAddCommand.java
index c5d1a7f..e104d4c 100644
--- a/apps/route-service/app/src/main/java/org/onosproject/routeservice/cli/RouteAddCommand.java
+++ b/apps/route-service/app/src/main/java/org/onosproject/routeservice/cli/RouteAddCommand.java
@@ -18,6 +18,7 @@
 
 import org.apache.karaf.shell.api.action.Argument;
 import org.apache.karaf.shell.api.action.Command;
+import org.apache.karaf.shell.api.action.lifecycle.Service;
 import org.onlab.packet.IpAddress;
 import org.onlab.packet.IpPrefix;
 import org.onosproject.cli.AbstractShellCommand;
@@ -29,6 +30,7 @@
 /**
  * Command to add a route to the routing table.
  */
+@Service
 @Command(scope = "onos", name = "route-add",
         description = "Adds a route to the route table")
 public class RouteAddCommand extends AbstractShellCommand {
diff --git a/apps/route-service/app/src/main/java/org/onosproject/routeservice/cli/RouteRemoveCommand.java b/apps/route-service/app/src/main/java/org/onosproject/routeservice/cli/RouteRemoveCommand.java
index 5643358..eb6f01c 100644
--- a/apps/route-service/app/src/main/java/org/onosproject/routeservice/cli/RouteRemoveCommand.java
+++ b/apps/route-service/app/src/main/java/org/onosproject/routeservice/cli/RouteRemoveCommand.java
@@ -18,6 +18,7 @@
 
 import org.apache.karaf.shell.api.action.Argument;
 import org.apache.karaf.shell.api.action.Command;
+import org.apache.karaf.shell.api.action.lifecycle.Service;
 import org.onlab.packet.IpAddress;
 import org.onlab.packet.IpPrefix;
 import org.onosproject.cli.AbstractShellCommand;
@@ -29,6 +30,7 @@
 /**
  * Command to remove a route from the routing table.
  */
+@Service
 @Command(scope = "onos", name = "route-remove",
         description = "Removes a route from the route table")
 public class RouteRemoveCommand extends AbstractShellCommand {
diff --git a/apps/route-service/app/src/main/java/org/onosproject/routeservice/cli/RouteStoreCommand.java b/apps/route-service/app/src/main/java/org/onosproject/routeservice/cli/RouteStoreCommand.java
index 5d02840..64ec0a2 100644
--- a/apps/route-service/app/src/main/java/org/onosproject/routeservice/cli/RouteStoreCommand.java
+++ b/apps/route-service/app/src/main/java/org/onosproject/routeservice/cli/RouteStoreCommand.java
@@ -16,12 +16,14 @@
 package org.onosproject.routeservice.cli;
 
 import org.apache.karaf.shell.api.action.Command;
+import org.apache.karaf.shell.api.action.lifecycle.Service;
 import org.onosproject.cli.AbstractShellCommand;
 import org.onosproject.routeservice.RouteStore;
 
 /**
  * Command to show the current route store implementation.
  */
+@Service
 @Command(scope = "onos", name = "route-store",
         description = "Show the current route store implementation.")
 public class RouteStoreCommand extends AbstractShellCommand {
diff --git a/apps/route-service/app/src/main/java/org/onosproject/routeservice/cli/RoutesListCommand.java b/apps/route-service/app/src/main/java/org/onosproject/routeservice/cli/RoutesListCommand.java
index aabbabd..e2cb714 100644
--- a/apps/route-service/app/src/main/java/org/onosproject/routeservice/cli/RoutesListCommand.java
+++ b/apps/route-service/app/src/main/java/org/onosproject/routeservice/cli/RoutesListCommand.java
@@ -20,6 +20,7 @@
 import com.fasterxml.jackson.databind.node.ArrayNode;
 import com.fasterxml.jackson.databind.node.ObjectNode;
 import org.apache.karaf.shell.api.action.Command;
+import org.apache.karaf.shell.api.action.lifecycle.Service;
 import org.onosproject.cli.AbstractShellCommand;
 import org.onosproject.routeservice.ResolvedRoute;
 import org.onosproject.routeservice.RouteInfo;
@@ -34,6 +35,7 @@
 /**
  * Command to show the routes in the routing tables.
  */
+@Service
 @Command(scope = "onos", name = "routes",
         description = "Lists routes in the route store")
 public class RoutesListCommand extends AbstractShellCommand {
diff --git a/apps/routeradvertisement/src/main/java/org/onosproject/ra/cli/GlobalPrefixesListCommand.java b/apps/routeradvertisement/src/main/java/org/onosproject/ra/cli/GlobalPrefixesListCommand.java
index e22ae3c..d8ad1ca 100644
--- a/apps/routeradvertisement/src/main/java/org/onosproject/ra/cli/GlobalPrefixesListCommand.java
+++ b/apps/routeradvertisement/src/main/java/org/onosproject/ra/cli/GlobalPrefixesListCommand.java
@@ -18,6 +18,7 @@
 
 import java.util.List;
 
+import org.apache.karaf.shell.api.action.lifecycle.Service;
 import org.onosproject.net.DeviceId;
 import org.onosproject.net.host.InterfaceIpAddress;
 import org.onosproject.ra.RoutingAdvertisementService;
@@ -30,6 +31,7 @@
 /**
  * Command to list global-prefixes in Routing Advertisement.
  */
+@Service
 @Command(scope = "onos", name = "ra-global-prefixes",
         description = "List Routing Advertisement global prefixes")
 public class GlobalPrefixesListCommand extends AbstractShellCommand {
diff --git a/apps/routing/common/src/main/java/org/onosproject/routing/cli/AddPeerCommand.java b/apps/routing/common/src/main/java/org/onosproject/routing/cli/AddPeerCommand.java
index 515ffb5..f0f2f76 100644
--- a/apps/routing/common/src/main/java/org/onosproject/routing/cli/AddPeerCommand.java
+++ b/apps/routing/common/src/main/java/org/onosproject/routing/cli/AddPeerCommand.java
@@ -18,6 +18,7 @@
 
 import org.apache.karaf.shell.api.action.Argument;
 import org.apache.karaf.shell.api.action.Command;
+import org.apache.karaf.shell.api.action.lifecycle.Service;
 import org.onlab.packet.IpAddress;
 import org.onosproject.cli.AbstractShellCommand;
 import org.onosproject.core.ApplicationId;
@@ -30,6 +31,7 @@
 /**
  * Command to add new BGP peer to existing internal speaker.
  */
+@Service
 @Command(scope = "onos", name = "bgp-peer-add",
         description = "Adds an external BGP router as peer to an existing BGP speaker")
 public class AddPeerCommand extends AbstractShellCommand {
diff --git a/apps/routing/common/src/main/java/org/onosproject/routing/cli/AddSpeakerCommand.java b/apps/routing/common/src/main/java/org/onosproject/routing/cli/AddSpeakerCommand.java
index 61128ea..5ce0b8d 100644
--- a/apps/routing/common/src/main/java/org/onosproject/routing/cli/AddSpeakerCommand.java
+++ b/apps/routing/common/src/main/java/org/onosproject/routing/cli/AddSpeakerCommand.java
@@ -18,6 +18,7 @@
 
 import org.apache.karaf.shell.api.action.Argument;
 import org.apache.karaf.shell.api.action.Command;
+import org.apache.karaf.shell.api.action.lifecycle.Service;
 import org.onlab.packet.IpAddress;
 import org.onlab.packet.VlanId;
 import org.onosproject.cli.AbstractShellCommand;
@@ -34,6 +35,7 @@
 /**
  * Command to add a new internal BGP speaker.
  */
+@Service
 @Command(scope = "onos", name = "bgp-speaker-add",
         description = "Adds an internal BGP speaker")
 public class AddSpeakerCommand extends AbstractShellCommand {
diff --git a/apps/routing/common/src/main/java/org/onosproject/routing/cli/BgpNeighborsListCommand.java b/apps/routing/common/src/main/java/org/onosproject/routing/cli/BgpNeighborsListCommand.java
index 0080b37..b220fd5 100644
--- a/apps/routing/common/src/main/java/org/onosproject/routing/cli/BgpNeighborsListCommand.java
+++ b/apps/routing/common/src/main/java/org/onosproject/routing/cli/BgpNeighborsListCommand.java
@@ -22,6 +22,7 @@
 import com.fasterxml.jackson.databind.node.ObjectNode;
 import org.apache.karaf.shell.api.action.Command;
 import org.apache.karaf.shell.api.action.Option;
+import org.apache.karaf.shell.api.action.lifecycle.Service;
 import org.onosproject.cli.AbstractShellCommand;
 import org.onosproject.routing.bgp.BgpInfoService;
 import org.onosproject.routing.bgp.BgpSession;
@@ -31,6 +32,7 @@
 /**
  * Command to show the BGP neighbors.
  */
+@Service
 @Command(scope = "onos", name = "bgp-neighbors",
          description = "Lists the BGP neighbors")
 public class BgpNeighborsListCommand extends AbstractShellCommand {
diff --git a/apps/routing/common/src/main/java/org/onosproject/routing/cli/BgpRoutesListCommand.java b/apps/routing/common/src/main/java/org/onosproject/routing/cli/BgpRoutesListCommand.java
index 1aafb0e..c4b49e3 100644
--- a/apps/routing/common/src/main/java/org/onosproject/routing/cli/BgpRoutesListCommand.java
+++ b/apps/routing/common/src/main/java/org/onosproject/routing/cli/BgpRoutesListCommand.java
@@ -22,6 +22,7 @@
 import com.fasterxml.jackson.databind.node.ObjectNode;
 import org.apache.karaf.shell.api.action.Command;
 import org.apache.karaf.shell.api.action.Option;
+import org.apache.karaf.shell.api.action.lifecycle.Service;
 import org.onosproject.cli.AbstractShellCommand;
 import org.onosproject.routing.bgp.BgpConstants;
 import org.onosproject.routing.bgp.BgpInfoService;
@@ -34,6 +35,7 @@
 /**
  * Command to show the routes learned through BGP.
  */
+@Service
 @Command(scope = "onos", name = "bgp-routes",
          description = "Lists all BGP best routes")
 public class BgpRoutesListCommand extends AbstractShellCommand {
diff --git a/apps/routing/common/src/main/java/org/onosproject/routing/cli/BgpSpeakersListCommand.java b/apps/routing/common/src/main/java/org/onosproject/routing/cli/BgpSpeakersListCommand.java
index f296e70..6a784cc 100644
--- a/apps/routing/common/src/main/java/org/onosproject/routing/cli/BgpSpeakersListCommand.java
+++ b/apps/routing/common/src/main/java/org/onosproject/routing/cli/BgpSpeakersListCommand.java
@@ -18,6 +18,7 @@
 
 import com.google.common.collect.Lists;
 import org.apache.karaf.shell.api.action.Command;
+import org.apache.karaf.shell.api.action.lifecycle.Service;
 import org.onosproject.cli.AbstractShellCommand;
 import org.onosproject.utils.Comparators;
 import org.onosproject.core.ApplicationId;
@@ -33,6 +34,7 @@
 /**
  * Lists the BGP speakers configured in the system.
  */
+@Service
 @Command(scope = "onos", name = "bgp-speakers",
         description = "Lists all BGP speakers")
 public class BgpSpeakersListCommand extends AbstractShellCommand {
diff --git a/apps/routing/common/src/main/java/org/onosproject/routing/cli/RemovePeerCommand.java b/apps/routing/common/src/main/java/org/onosproject/routing/cli/RemovePeerCommand.java
index d13d2f2..a4b2912 100644
--- a/apps/routing/common/src/main/java/org/onosproject/routing/cli/RemovePeerCommand.java
+++ b/apps/routing/common/src/main/java/org/onosproject/routing/cli/RemovePeerCommand.java
@@ -18,6 +18,7 @@
 
 import org.apache.karaf.shell.api.action.Argument;
 import org.apache.karaf.shell.api.action.Command;
+import org.apache.karaf.shell.api.action.lifecycle.Service;
 import org.onlab.packet.IpAddress;
 import org.onosproject.cli.AbstractShellCommand;
 import org.onosproject.core.ApplicationId;
@@ -29,6 +30,7 @@
 /**
  * Command to remove existing BGP peer.
  */
+@Service
 @Command(scope = "onos", name = "bgp-peer-remove",
         description = "Removes a BGP peer")
 public class RemovePeerCommand extends AbstractShellCommand {
diff --git a/apps/routing/common/src/main/java/org/onosproject/routing/cli/RemoveSpeakerCommand.java b/apps/routing/common/src/main/java/org/onosproject/routing/cli/RemoveSpeakerCommand.java
index 4a9c3f3..9d52e71 100644
--- a/apps/routing/common/src/main/java/org/onosproject/routing/cli/RemoveSpeakerCommand.java
+++ b/apps/routing/common/src/main/java/org/onosproject/routing/cli/RemoveSpeakerCommand.java
@@ -18,6 +18,7 @@
 
 import org.apache.karaf.shell.api.action.Argument;
 import org.apache.karaf.shell.api.action.Command;
+import org.apache.karaf.shell.api.action.lifecycle.Service;
 import org.onosproject.cli.AbstractShellCommand;
 import org.onosproject.core.ApplicationId;
 import org.onosproject.core.CoreService;
@@ -28,6 +29,7 @@
 /**
  * Command to remove a internal BGP speaker.
  */
+@Service
 @Command(scope = "onos", name = "bgp-speaker-remove",
         description = "Removes an internal BGP speaker")
 public class RemoveSpeakerCommand extends AbstractShellCommand {
diff --git a/apps/routing/fpm/app/src/main/java/org/onosproject/routing/fpm/cli/FpmConnectionsList.java b/apps/routing/fpm/app/src/main/java/org/onosproject/routing/fpm/cli/FpmConnectionsList.java
index d999431..d797844 100644
--- a/apps/routing/fpm/app/src/main/java/org/onosproject/routing/fpm/cli/FpmConnectionsList.java
+++ b/apps/routing/fpm/app/src/main/java/org/onosproject/routing/fpm/cli/FpmConnectionsList.java
@@ -17,6 +17,7 @@
 package org.onosproject.routing.fpm.cli;
 
 import org.apache.karaf.shell.api.action.Command;
+import org.apache.karaf.shell.api.action.lifecycle.Service;
 import org.onlab.packet.IpAddress;
 import org.onlab.util.Tools;
 import org.onosproject.cli.AbstractShellCommand;
@@ -31,6 +32,7 @@
 /**
  * Displays the current FPM connections.
  */
+@Service
 @Command(scope = "onos", name = "fpm-connections",
         description = "Displays the current FPM connections")
 public class FpmConnectionsList extends AbstractShellCommand {
diff --git a/apps/routing/fpm/app/src/main/java/org/onosproject/routing/fpm/cli/FpmPushRoutesCommand.java b/apps/routing/fpm/app/src/main/java/org/onosproject/routing/fpm/cli/FpmPushRoutesCommand.java
index d3400f3..0379442 100644
--- a/apps/routing/fpm/app/src/main/java/org/onosproject/routing/fpm/cli/FpmPushRoutesCommand.java
+++ b/apps/routing/fpm/app/src/main/java/org/onosproject/routing/fpm/cli/FpmPushRoutesCommand.java
@@ -17,6 +17,7 @@
 package org.onosproject.routing.fpm.cli;
 
 import org.apache.karaf.shell.api.action.Command;
+import org.apache.karaf.shell.api.action.lifecycle.Service;
 import org.onosproject.cli.AbstractShellCommand;
 import org.onosproject.routing.fpm.FpmInfoService;
 
@@ -24,6 +25,7 @@
 /**
  * Displays the current FPM connections.
  */
+@Service
 @Command(scope = "onos", name = "fpm-push-routes",
         description = "Pushes all local FPM routes to route store")
 public class FpmPushRoutesCommand extends AbstractShellCommand {
diff --git a/apps/scalablegateway/src/main/java/org/onosproject/scalablegateway/cli/ScalableGatewayAddCommand.java b/apps/scalablegateway/src/main/java/org/onosproject/scalablegateway/cli/ScalableGatewayAddCommand.java
index 0f0364a..cb51402 100644
--- a/apps/scalablegateway/src/main/java/org/onosproject/scalablegateway/cli/ScalableGatewayAddCommand.java
+++ b/apps/scalablegateway/src/main/java/org/onosproject/scalablegateway/cli/ScalableGatewayAddCommand.java
@@ -18,6 +18,7 @@
 
 import org.apache.karaf.shell.api.action.Argument;
 import org.apache.karaf.shell.api.action.Command;
+import org.apache.karaf.shell.api.action.lifecycle.Service;
 import org.onlab.packet.Ip4Address;
 import org.onosproject.cli.AbstractShellCommand;
 import org.onosproject.net.DeviceId;
@@ -27,7 +28,7 @@
 /**
  * Adds gateway node information for scalablegateway node managements.
  */
-
+@Service
 @Command(scope = "onos", name = "gateway-add",
         description = "Adds gateway node information for scalablegateway node managements")
 public class ScalableGatewayAddCommand extends AbstractShellCommand {
diff --git a/apps/scalablegateway/src/main/java/org/onosproject/scalablegateway/cli/ScalableGatewayDeleteCommand.java b/apps/scalablegateway/src/main/java/org/onosproject/scalablegateway/cli/ScalableGatewayDeleteCommand.java
index 22ef6be..edfe52f 100644
--- a/apps/scalablegateway/src/main/java/org/onosproject/scalablegateway/cli/ScalableGatewayDeleteCommand.java
+++ b/apps/scalablegateway/src/main/java/org/onosproject/scalablegateway/cli/ScalableGatewayDeleteCommand.java
@@ -18,6 +18,7 @@
 
 import org.apache.karaf.shell.api.action.Argument;
 import org.apache.karaf.shell.api.action.Command;
+import org.apache.karaf.shell.api.action.lifecycle.Service;
 import org.onosproject.cli.AbstractShellCommand;
 import org.onosproject.net.DeviceId;
 import org.onosproject.scalablegateway.api.GatewayNode;
@@ -26,7 +27,7 @@
 /**
  * Deletes gateway node information for scalablegateway node managements.
  */
-
+@Service
 @Command(scope = "onos", name = "gateway-delete",
         description = "Deletes gateway node information for scalablegateway node managements")
 public class ScalableGatewayDeleteCommand extends AbstractShellCommand {
diff --git a/apps/scalablegateway/src/main/java/org/onosproject/scalablegateway/cli/ScalableGatewayListCommand.java b/apps/scalablegateway/src/main/java/org/onosproject/scalablegateway/cli/ScalableGatewayListCommand.java
index 52fadf8..d8a89f5 100644
--- a/apps/scalablegateway/src/main/java/org/onosproject/scalablegateway/cli/ScalableGatewayListCommand.java
+++ b/apps/scalablegateway/src/main/java/org/onosproject/scalablegateway/cli/ScalableGatewayListCommand.java
@@ -17,13 +17,14 @@
 package org.onosproject.scalablegateway.cli;
 
 import org.apache.karaf.shell.api.action.Command;
+import org.apache.karaf.shell.api.action.lifecycle.Service;
 import org.onosproject.cli.AbstractShellCommand;
 import org.onosproject.scalablegateway.api.ScalableGatewayService;
 
 /**
  * Lists all gateway node information of scalablegateway.
  */
-
+@Service
 @Command(scope = "onos", name = "gateways",
         description = "Lists gateway node information")
 public class ScalableGatewayListCommand extends AbstractShellCommand {
diff --git a/apps/sdnip/src/main/java/org/onosproject/sdnip/cli/SdnIpCommand.java b/apps/sdnip/src/main/java/org/onosproject/sdnip/cli/SdnIpCommand.java
index 1db8780..2181114 100644
--- a/apps/sdnip/src/main/java/org/onosproject/sdnip/cli/SdnIpCommand.java
+++ b/apps/sdnip/src/main/java/org/onosproject/sdnip/cli/SdnIpCommand.java
@@ -17,6 +17,7 @@
 
 import org.apache.karaf.shell.api.action.Argument;
 import org.apache.karaf.shell.api.action.Command;
+import org.apache.karaf.shell.api.action.lifecycle.Service;
 import org.onosproject.cli.AbstractShellCommand;
 import org.onosproject.core.ApplicationId;
 import org.onosproject.core.CoreService;
@@ -28,6 +29,7 @@
 /**
  * CLI to interact with the SDN-IP application.
  */
+@Service
 @Command(scope = "onos", name = "sdnip",
         description = "Manages the SDN-IP application")
 public class SdnIpCommand extends AbstractShellCommand {
diff --git a/apps/segmentrouting/app/src/main/java/org/onosproject/segmentrouting/cli/BlackHoleCommand.java b/apps/segmentrouting/app/src/main/java/org/onosproject/segmentrouting/cli/BlackHoleCommand.java
index b776500..c45ff8e 100644
--- a/apps/segmentrouting/app/src/main/java/org/onosproject/segmentrouting/cli/BlackHoleCommand.java
+++ b/apps/segmentrouting/app/src/main/java/org/onosproject/segmentrouting/cli/BlackHoleCommand.java
@@ -21,6 +21,7 @@
 import com.google.common.collect.Sets;
 import org.apache.karaf.shell.api.action.Argument;
 import org.apache.karaf.shell.api.action.Command;
+import org.apache.karaf.shell.api.action.lifecycle.Service;
 import org.onlab.packet.IpPrefix;
 import org.onosproject.cli.AbstractShellCommand;
 import org.onosproject.net.config.NetworkConfigService;
@@ -32,6 +33,7 @@
 /**
  * CLI command for managing black hole routes.
  */
+@Service
 @Command(scope = "onos", name = "sr-blackhole",
         description = "Manage black hole routes")
 public class BlackHoleCommand extends AbstractShellCommand {
diff --git a/apps/segmentrouting/app/src/main/java/org/onosproject/segmentrouting/cli/DeviceSubnetListCommand.java b/apps/segmentrouting/app/src/main/java/org/onosproject/segmentrouting/cli/DeviceSubnetListCommand.java
index b833987..8f706b0 100644
--- a/apps/segmentrouting/app/src/main/java/org/onosproject/segmentrouting/cli/DeviceSubnetListCommand.java
+++ b/apps/segmentrouting/app/src/main/java/org/onosproject/segmentrouting/cli/DeviceSubnetListCommand.java
@@ -17,6 +17,7 @@
 package org.onosproject.segmentrouting.cli;
 
 import org.apache.karaf.shell.api.action.Command;
+import org.apache.karaf.shell.api.action.lifecycle.Service;
 import org.onlab.packet.IpPrefix;
 import org.onosproject.cli.AbstractShellCommand;
 import org.onosproject.net.DeviceId;
@@ -28,6 +29,7 @@
 /**
  * Command to list device-subnet mapping in Segment Routing.
  */
+@Service
 @Command(scope = "onos", name = "sr-device-subnets",
         description = "List device-subnet mapping in Segment Routing")
 public class DeviceSubnetListCommand extends AbstractShellCommand {
diff --git a/apps/segmentrouting/app/src/main/java/org/onosproject/segmentrouting/cli/EcmpGraphCommand.java b/apps/segmentrouting/app/src/main/java/org/onosproject/segmentrouting/cli/EcmpGraphCommand.java
index ce6dd0f..269134d 100644
--- a/apps/segmentrouting/app/src/main/java/org/onosproject/segmentrouting/cli/EcmpGraphCommand.java
+++ b/apps/segmentrouting/app/src/main/java/org/onosproject/segmentrouting/cli/EcmpGraphCommand.java
@@ -20,6 +20,7 @@
 import java.util.Map;
 
 import org.apache.karaf.shell.api.action.Command;
+import org.apache.karaf.shell.api.action.lifecycle.Service;
 import org.onosproject.cli.AbstractShellCommand;
 import org.onosproject.net.DeviceId;
 import org.onosproject.segmentrouting.EcmpShortestPathGraph;
@@ -29,6 +30,7 @@
  * Command to read the current state of the ECMP shortest-path graph.
  *
  */
+@Service
 @Command(scope = "onos", name = "sr-ecmp-spg",
         description = "Displays the current ecmp shortest-path-graph in this "
                 + "controller instance")
diff --git a/apps/segmentrouting/app/src/main/java/org/onosproject/segmentrouting/cli/InvalidateNextCommand.java b/apps/segmentrouting/app/src/main/java/org/onosproject/segmentrouting/cli/InvalidateNextCommand.java
index 666afdd..094bea9 100644
--- a/apps/segmentrouting/app/src/main/java/org/onosproject/segmentrouting/cli/InvalidateNextCommand.java
+++ b/apps/segmentrouting/app/src/main/java/org/onosproject/segmentrouting/cli/InvalidateNextCommand.java
@@ -19,6 +19,7 @@
 
 import org.apache.karaf.shell.api.action.Argument;
 import org.apache.karaf.shell.api.action.Command;
+import org.apache.karaf.shell.api.action.lifecycle.Service;
 import org.onlab.osgi.ServiceNotFoundException;
 import org.onosproject.cli.AbstractShellCommand;
 import org.onosproject.segmentrouting.SegmentRoutingService;
@@ -26,6 +27,7 @@
 /**
  * Command to invalidate next id from SR internal stores.
  */
+@Service
 @Command(scope = "onos", name = "sr-next-invalidate",
         description = "Invalidate given next id from SR internal stores")
 public class InvalidateNextCommand extends AbstractShellCommand {
diff --git a/apps/segmentrouting/app/src/main/java/org/onosproject/segmentrouting/cli/LinkStateCommand.java b/apps/segmentrouting/app/src/main/java/org/onosproject/segmentrouting/cli/LinkStateCommand.java
index 5d2773e..9d7147b 100644
--- a/apps/segmentrouting/app/src/main/java/org/onosproject/segmentrouting/cli/LinkStateCommand.java
+++ b/apps/segmentrouting/app/src/main/java/org/onosproject/segmentrouting/cli/LinkStateCommand.java
@@ -21,6 +21,7 @@
 import java.util.Set;
 
 import org.apache.karaf.shell.api.action.Command;
+import org.apache.karaf.shell.api.action.lifecycle.Service;
 import org.onosproject.cli.AbstractShellCommand;
 import org.onosproject.net.DeviceId;
 import org.onosproject.net.Link;
@@ -34,6 +35,7 @@
  * Command to read the current state of the DestinationSetNextObjectiveStore.
  *
  */
+@Service
 @Command(scope = "onos", name = "sr-link-state", description = "Displays the current internal link state "
         + "noted by this instance of the controller")
 public class LinkStateCommand extends AbstractShellCommand {
diff --git a/apps/segmentrouting/app/src/main/java/org/onosproject/segmentrouting/cli/McastLeaderListCommand.java b/apps/segmentrouting/app/src/main/java/org/onosproject/segmentrouting/cli/McastLeaderListCommand.java
index e87de18..337a65d 100644
--- a/apps/segmentrouting/app/src/main/java/org/onosproject/segmentrouting/cli/McastLeaderListCommand.java
+++ b/apps/segmentrouting/app/src/main/java/org/onosproject/segmentrouting/cli/McastLeaderListCommand.java
@@ -18,6 +18,7 @@
 
 import org.apache.karaf.shell.api.action.Command;
 import org.apache.karaf.shell.api.action.Option;
+import org.apache.karaf.shell.api.action.lifecycle.Service;
 import org.onlab.packet.IpAddress;
 import org.onosproject.cli.AbstractShellCommand;
 import org.onosproject.cluster.NodeId;
@@ -31,6 +32,7 @@
 /**
  * Command to show the mcast leaders of the groups.
  */
+@Service
 @Command(scope = "onos", name = "sr-mcast-leader",
         description = "Lists all mcast leaders")
 public class McastLeaderListCommand extends AbstractShellCommand {
diff --git a/apps/segmentrouting/app/src/main/java/org/onosproject/segmentrouting/cli/McastNextListCommand.java b/apps/segmentrouting/app/src/main/java/org/onosproject/segmentrouting/cli/McastNextListCommand.java
index 128f9b5..aad9a7e 100644
--- a/apps/segmentrouting/app/src/main/java/org/onosproject/segmentrouting/cli/McastNextListCommand.java
+++ b/apps/segmentrouting/app/src/main/java/org/onosproject/segmentrouting/cli/McastNextListCommand.java
@@ -19,6 +19,7 @@
 import com.google.common.collect.Maps;
 import org.apache.karaf.shell.api.action.Command;
 import org.apache.karaf.shell.api.action.Option;
+import org.apache.karaf.shell.api.action.lifecycle.Service;
 import org.onlab.packet.IpAddress;
 import org.onlab.packet.VlanId;
 import org.onosproject.cli.AbstractShellCommand;
@@ -37,6 +38,7 @@
 /**
  * Command to show the list of mcast nextids.
  */
+@Service
 @Command(scope = "onos", name = "sr-next-mcast",
         description = "Lists all mcast nextids")
 public class McastNextListCommand extends AbstractShellCommand {
diff --git a/apps/segmentrouting/app/src/main/java/org/onosproject/segmentrouting/cli/McastRoleListCommand.java b/apps/segmentrouting/app/src/main/java/org/onosproject/segmentrouting/cli/McastRoleListCommand.java
index ed5e6da..a00663b 100644
--- a/apps/segmentrouting/app/src/main/java/org/onosproject/segmentrouting/cli/McastRoleListCommand.java
+++ b/apps/segmentrouting/app/src/main/java/org/onosproject/segmentrouting/cli/McastRoleListCommand.java
@@ -21,6 +21,7 @@
 import com.google.common.collect.Multimap;
 import org.apache.karaf.shell.api.action.Command;
 import org.apache.karaf.shell.api.action.Option;
+import org.apache.karaf.shell.api.action.lifecycle.Service;
 import org.onlab.packet.IpAddress;
 import org.onosproject.cli.AbstractShellCommand;
 import org.onosproject.mcast.cli.McastGroupCompleter;
@@ -40,6 +41,7 @@
 /**
  * Command to show the list of mcast roles.
  */
+@Service
 @Command(scope = "onos", name = "sr-mcast-role",
         description = "Lists all mcast roles")
 public class McastRoleListCommand extends AbstractShellCommand {
diff --git a/apps/segmentrouting/app/src/main/java/org/onosproject/segmentrouting/cli/McastTreeListCommand.java b/apps/segmentrouting/app/src/main/java/org/onosproject/segmentrouting/cli/McastTreeListCommand.java
index 92fbf2c..2d08196 100644
--- a/apps/segmentrouting/app/src/main/java/org/onosproject/segmentrouting/cli/McastTreeListCommand.java
+++ b/apps/segmentrouting/app/src/main/java/org/onosproject/segmentrouting/cli/McastTreeListCommand.java
@@ -23,6 +23,7 @@
 import com.google.common.collect.Multimap;
 import org.apache.karaf.shell.api.action.Command;
 import org.apache.karaf.shell.api.action.Option;
+import org.apache.karaf.shell.api.action.lifecycle.Service;
 import org.onlab.packet.IpAddress;
 import org.onosproject.cli.AbstractShellCommand;
 import org.onosproject.mcast.cli.McastGroupCompleter;
@@ -38,6 +39,7 @@
 /**
  * Command to show the list of mcast trees.
  */
+@Service
 @Command(scope = "onos", name = "sr-mcast-tree",
         description = "Lists all mcast trees")
 public class McastTreeListCommand extends AbstractShellCommand {
diff --git a/apps/segmentrouting/app/src/main/java/org/onosproject/segmentrouting/cli/NextDstCommand.java b/apps/segmentrouting/app/src/main/java/org/onosproject/segmentrouting/cli/NextDstCommand.java
index 1e257c8..e6da695 100644
--- a/apps/segmentrouting/app/src/main/java/org/onosproject/segmentrouting/cli/NextDstCommand.java
+++ b/apps/segmentrouting/app/src/main/java/org/onosproject/segmentrouting/cli/NextDstCommand.java
@@ -22,6 +22,7 @@
 import java.util.Map;
 
 import org.apache.karaf.shell.api.action.Command;
+import org.apache.karaf.shell.api.action.lifecycle.Service;
 import org.onosproject.cli.AbstractShellCommand;
 import org.onosproject.segmentrouting.SegmentRoutingService;
 import org.onosproject.segmentrouting.grouphandler.NextNeighbors;
@@ -30,6 +31,7 @@
 /**
  * Command to read the current state of the DestinationSetNextObjectiveStore.
  */
+@Service
 @Command(scope = "onos", name = "sr-next-dst",
         description = "Displays the current next-hops seen by each switch "
                 + "towards a set of destinations and the next-id it maps to")
diff --git a/apps/segmentrouting/app/src/main/java/org/onosproject/segmentrouting/cli/NextPortCommand.java b/apps/segmentrouting/app/src/main/java/org/onosproject/segmentrouting/cli/NextPortCommand.java
index 4bc832a..fddc1d7 100644
--- a/apps/segmentrouting/app/src/main/java/org/onosproject/segmentrouting/cli/NextPortCommand.java
+++ b/apps/segmentrouting/app/src/main/java/org/onosproject/segmentrouting/cli/NextPortCommand.java
@@ -17,6 +17,7 @@
 package org.onosproject.segmentrouting.cli;
 
 import org.apache.karaf.shell.api.action.Command;
+import org.apache.karaf.shell.api.action.lifecycle.Service;
 import org.onosproject.cli.AbstractShellCommand;
 import org.onosproject.segmentrouting.SegmentRoutingService;
 import org.onosproject.segmentrouting.storekey.PortNextObjectiveStoreKey;
@@ -28,6 +29,7 @@
 /**
  * Command to read the current state of the portNextObjStore.
  */
+@Service
 @Command(scope = "onos", name = "sr-next-port",
         description = "Displays the current port / next-id it mapping")
 public class NextPortCommand extends AbstractShellCommand {
diff --git a/apps/segmentrouting/app/src/main/java/org/onosproject/segmentrouting/cli/NextVlanCommand.java b/apps/segmentrouting/app/src/main/java/org/onosproject/segmentrouting/cli/NextVlanCommand.java
index d759ab5..8518a5f 100644
--- a/apps/segmentrouting/app/src/main/java/org/onosproject/segmentrouting/cli/NextVlanCommand.java
+++ b/apps/segmentrouting/app/src/main/java/org/onosproject/segmentrouting/cli/NextVlanCommand.java
@@ -17,6 +17,7 @@
 package org.onosproject.segmentrouting.cli;
 
 import org.apache.karaf.shell.api.action.Command;
+import org.apache.karaf.shell.api.action.lifecycle.Service;
 import org.onosproject.cli.AbstractShellCommand;
 import org.onosproject.segmentrouting.SegmentRoutingService;
 import org.onosproject.segmentrouting.storekey.VlanNextObjectiveStoreKey;
@@ -28,6 +29,7 @@
 /**
  * Command to read the current state of the vlanNextObjStore.
  */
+@Service
 @Command(scope = "onos", name = "sr-next-vlan",
         description = "Displays the current vlan / next-id it mapping")
 public class NextVlanCommand extends AbstractShellCommand {
diff --git a/apps/segmentrouting/app/src/main/java/org/onosproject/segmentrouting/cli/PolicyAddCommand.java b/apps/segmentrouting/app/src/main/java/org/onosproject/segmentrouting/cli/PolicyAddCommand.java
index 01c0075..1f75317 100644
--- a/apps/segmentrouting/app/src/main/java/org/onosproject/segmentrouting/cli/PolicyAddCommand.java
+++ b/apps/segmentrouting/app/src/main/java/org/onosproject/segmentrouting/cli/PolicyAddCommand.java
@@ -17,6 +17,7 @@
 
 import org.apache.karaf.shell.api.action.Argument;
 import org.apache.karaf.shell.api.action.Command;
+import org.apache.karaf.shell.api.action.lifecycle.Service;
 import org.onosproject.cli.AbstractShellCommand;
 import org.onosproject.segmentrouting.Policy;
 import org.onosproject.segmentrouting.PolicyHandler;
@@ -26,6 +27,7 @@
 /**
  * Command to add a new policy.
  */
+@Service
 @Command(scope = "onos", name = "sr-policy-add",
         description = "Create a new policy")
 public class PolicyAddCommand extends AbstractShellCommand {
diff --git a/apps/segmentrouting/app/src/main/java/org/onosproject/segmentrouting/cli/PolicyListCommand.java b/apps/segmentrouting/app/src/main/java/org/onosproject/segmentrouting/cli/PolicyListCommand.java
index b6ef61b..3520fba 100644
--- a/apps/segmentrouting/app/src/main/java/org/onosproject/segmentrouting/cli/PolicyListCommand.java
+++ b/apps/segmentrouting/app/src/main/java/org/onosproject/segmentrouting/cli/PolicyListCommand.java
@@ -16,6 +16,7 @@
 package org.onosproject.segmentrouting.cli;
 
 import org.apache.karaf.shell.api.action.Command;
+import org.apache.karaf.shell.api.action.lifecycle.Service;
 import org.onosproject.cli.AbstractShellCommand;
 import org.onosproject.segmentrouting.Policy;
 import org.onosproject.segmentrouting.SegmentRoutingService;
@@ -24,6 +25,7 @@
 /**
  * Command to show the list of policies.
  */
+@Service
 @Command(scope = "onos", name = "sr-policy-list",
         description = "Lists all policies")
 public class PolicyListCommand extends AbstractShellCommand {
diff --git a/apps/segmentrouting/app/src/main/java/org/onosproject/segmentrouting/cli/PolicyRemoveCommand.java b/apps/segmentrouting/app/src/main/java/org/onosproject/segmentrouting/cli/PolicyRemoveCommand.java
index 61bd1b96..575d35f 100644
--- a/apps/segmentrouting/app/src/main/java/org/onosproject/segmentrouting/cli/PolicyRemoveCommand.java
+++ b/apps/segmentrouting/app/src/main/java/org/onosproject/segmentrouting/cli/PolicyRemoveCommand.java
@@ -18,6 +18,7 @@
 
 import org.apache.karaf.shell.api.action.Argument;
 import org.apache.karaf.shell.api.action.Command;
+import org.apache.karaf.shell.api.action.lifecycle.Service;
 import org.onosproject.cli.AbstractShellCommand;
 import org.onosproject.segmentrouting.PolicyHandler;
 import org.onosproject.segmentrouting.SegmentRoutingService;
@@ -26,6 +27,7 @@
 /**
  * Command to remove a policy.
  */
+@Service
 @Command(scope = "onos", name = "sr-policy-remove",
         description = "Remove a policy")
 public class PolicyRemoveCommand extends AbstractShellCommand {
diff --git a/apps/segmentrouting/app/src/main/java/org/onosproject/segmentrouting/cli/PseudowireAddCommand.java b/apps/segmentrouting/app/src/main/java/org/onosproject/segmentrouting/cli/PseudowireAddCommand.java
index f699e40..d595d5c 100644
--- a/apps/segmentrouting/app/src/main/java/org/onosproject/segmentrouting/cli/PseudowireAddCommand.java
+++ b/apps/segmentrouting/app/src/main/java/org/onosproject/segmentrouting/cli/PseudowireAddCommand.java
@@ -18,6 +18,7 @@
 
 import org.apache.karaf.shell.api.action.Argument;
 import org.apache.karaf.shell.api.action.Command;
+import org.apache.karaf.shell.api.action.lifecycle.Service;
 import org.onosproject.cli.AbstractShellCommand;
 import org.onosproject.net.ConnectPoint;
 import org.onosproject.segmentrouting.SegmentRoutingService;
@@ -35,6 +36,7 @@
 /**
  * Command to add a pseuwodire.
  */
+@Service
 @Command(scope = "onos", name = "sr-pw-add",
         description = "Add a pseudowire to the network configuration, if it already exists update it.")
 public class PseudowireAddCommand extends AbstractShellCommand {
diff --git a/apps/segmentrouting/app/src/main/java/org/onosproject/segmentrouting/cli/PseudowireListCommand.java b/apps/segmentrouting/app/src/main/java/org/onosproject/segmentrouting/cli/PseudowireListCommand.java
index e1da70a..475ce26 100644
--- a/apps/segmentrouting/app/src/main/java/org/onosproject/segmentrouting/cli/PseudowireListCommand.java
+++ b/apps/segmentrouting/app/src/main/java/org/onosproject/segmentrouting/cli/PseudowireListCommand.java
@@ -16,6 +16,7 @@
 package org.onosproject.segmentrouting.cli;
 
 import org.apache.karaf.shell.api.action.Command;
+import org.apache.karaf.shell.api.action.lifecycle.Service;
 import org.onlab.packet.VlanId;
 import org.onosproject.cli.AbstractShellCommand;
 import org.onosproject.segmentrouting.SegmentRoutingService;
@@ -23,6 +24,7 @@
 /**
  * Command to show the pseudowires.
  */
+@Service
 @Command(scope = "onos", name = "sr-pw-list",
         description = "Lists all pseudowires")
 public class PseudowireListCommand extends AbstractShellCommand {
diff --git a/apps/segmentrouting/app/src/main/java/org/onosproject/segmentrouting/cli/PseudowireNextListCommand.java b/apps/segmentrouting/app/src/main/java/org/onosproject/segmentrouting/cli/PseudowireNextListCommand.java
index 82a30ff..f2b3e8d 100644
--- a/apps/segmentrouting/app/src/main/java/org/onosproject/segmentrouting/cli/PseudowireNextListCommand.java
+++ b/apps/segmentrouting/app/src/main/java/org/onosproject/segmentrouting/cli/PseudowireNextListCommand.java
@@ -17,6 +17,7 @@
 package org.onosproject.segmentrouting.cli;
 
 import org.apache.karaf.shell.api.action.Command;
+import org.apache.karaf.shell.api.action.lifecycle.Service;
 import org.onosproject.cli.AbstractShellCommand;
 import org.onosproject.net.flowobjective.NextObjective;
 import org.onosproject.segmentrouting.SegmentRoutingService;
@@ -28,6 +29,7 @@
 /**
  * Command to read the current state of the pseudowire next stores.
  */
+@Service
 @Command(scope = "onos", name = "sr-next-pw",
         description = "Displays the current next-id for pseudowire")
 public class PseudowireNextListCommand extends AbstractShellCommand {
diff --git a/apps/segmentrouting/app/src/main/java/org/onosproject/segmentrouting/cli/PseudowireRemoveCommand.java b/apps/segmentrouting/app/src/main/java/org/onosproject/segmentrouting/cli/PseudowireRemoveCommand.java
index 8be0dad..fb1705c 100644
--- a/apps/segmentrouting/app/src/main/java/org/onosproject/segmentrouting/cli/PseudowireRemoveCommand.java
+++ b/apps/segmentrouting/app/src/main/java/org/onosproject/segmentrouting/cli/PseudowireRemoveCommand.java
@@ -18,6 +18,7 @@
 
 import org.apache.karaf.shell.api.action.Argument;
 import org.apache.karaf.shell.api.action.Command;
+import org.apache.karaf.shell.api.action.lifecycle.Service;
 import org.onosproject.cli.AbstractShellCommand;
 import org.onosproject.segmentrouting.SegmentRoutingManager;
 import org.onosproject.segmentrouting.SegmentRoutingService;
@@ -29,6 +30,7 @@
 /**
  * Command to remove a pseudowire.
  */
+@Service
 @Command(scope = "onos", name = "sr-pw-remove",
         description = "Remove a pseudowire")
 public class PseudowireRemoveCommand extends AbstractShellCommand {
diff --git a/apps/segmentrouting/app/src/main/java/org/onosproject/segmentrouting/cli/RerouteNetworkCommand.java b/apps/segmentrouting/app/src/main/java/org/onosproject/segmentrouting/cli/RerouteNetworkCommand.java
index cde5921..6e8d3e9 100644
--- a/apps/segmentrouting/app/src/main/java/org/onosproject/segmentrouting/cli/RerouteNetworkCommand.java
+++ b/apps/segmentrouting/app/src/main/java/org/onosproject/segmentrouting/cli/RerouteNetworkCommand.java
@@ -18,6 +18,7 @@
 
 
 import org.apache.karaf.shell.api.action.Command;
+import org.apache.karaf.shell.api.action.lifecycle.Service;
 import org.onosproject.cli.AbstractShellCommand;
 import org.onosproject.segmentrouting.SegmentRoutingService;
 
@@ -25,6 +26,7 @@
  * Command to manually trigger routing and rule-population in the network.
  *
  */
+@Service
 @Command(scope = "onos", name = "sr-reroute-network",
         description = "Repopulate routing rules given current network state")
 public class RerouteNetworkCommand extends AbstractShellCommand {
diff --git a/apps/segmentrouting/app/src/main/java/org/onosproject/segmentrouting/cli/ShouldProgramCommand.java b/apps/segmentrouting/app/src/main/java/org/onosproject/segmentrouting/cli/ShouldProgramCommand.java
index 46ebc89..250fb3b 100644
--- a/apps/segmentrouting/app/src/main/java/org/onosproject/segmentrouting/cli/ShouldProgramCommand.java
+++ b/apps/segmentrouting/app/src/main/java/org/onosproject/segmentrouting/cli/ShouldProgramCommand.java
@@ -17,6 +17,7 @@
 package org.onosproject.segmentrouting.cli;
 
 import org.apache.karaf.shell.api.action.Command;
+import org.apache.karaf.shell.api.action.lifecycle.Service;
 import org.onosproject.cli.AbstractShellCommand;
 import org.onosproject.cluster.NodeId;
 import org.onosproject.net.DeviceId;
@@ -28,6 +29,7 @@
 /**
  * Display current shouldProgram map.
  */
+@Service
 @Command(scope = "onos", name = "sr-should-program",
         description = "Display current shouldProgram map")
 public class ShouldProgramCommand extends AbstractShellCommand {
diff --git a/apps/segmentrouting/app/src/main/java/org/onosproject/segmentrouting/cli/TunnelAddCommand.java b/apps/segmentrouting/app/src/main/java/org/onosproject/segmentrouting/cli/TunnelAddCommand.java
index 3cbe974..0e487d0 100644
--- a/apps/segmentrouting/app/src/main/java/org/onosproject/segmentrouting/cli/TunnelAddCommand.java
+++ b/apps/segmentrouting/app/src/main/java/org/onosproject/segmentrouting/cli/TunnelAddCommand.java
@@ -17,6 +17,7 @@
 
 import org.apache.karaf.shell.api.action.Argument;
 import org.apache.karaf.shell.api.action.Command;
+import org.apache.karaf.shell.api.action.lifecycle.Service;
 import org.onosproject.cli.AbstractShellCommand;
 import org.onosproject.segmentrouting.DefaultTunnel;
 import org.onosproject.segmentrouting.SegmentRoutingService;
@@ -30,6 +31,7 @@
 /**
  * Command to add a new tunnel.
  */
+@Service
 @Command(scope = "onos", name = "sr-tunnel-add",
         description = "Create a new tunnel")
 public class TunnelAddCommand extends AbstractShellCommand {
diff --git a/apps/segmentrouting/app/src/main/java/org/onosproject/segmentrouting/cli/TunnelListCommand.java b/apps/segmentrouting/app/src/main/java/org/onosproject/segmentrouting/cli/TunnelListCommand.java
index 8df30e1..6c5f33d 100644
--- a/apps/segmentrouting/app/src/main/java/org/onosproject/segmentrouting/cli/TunnelListCommand.java
+++ b/apps/segmentrouting/app/src/main/java/org/onosproject/segmentrouting/cli/TunnelListCommand.java
@@ -16,6 +16,7 @@
 package org.onosproject.segmentrouting.cli;
 
 import org.apache.karaf.shell.api.action.Command;
+import org.apache.karaf.shell.api.action.lifecycle.Service;
 import org.onosproject.cli.AbstractShellCommand;
 import org.onosproject.segmentrouting.SegmentRoutingService;
 import org.onosproject.segmentrouting.Tunnel;
@@ -23,6 +24,7 @@
 /**
  * Command to show the list of tunnels.
  */
+@Service
 @Command(scope = "onos", name = "sr-tunnel-list",
         description = "Lists all tunnels")
 public class TunnelListCommand extends AbstractShellCommand {
diff --git a/apps/segmentrouting/app/src/main/java/org/onosproject/segmentrouting/cli/TunnelRemoveCommand.java b/apps/segmentrouting/app/src/main/java/org/onosproject/segmentrouting/cli/TunnelRemoveCommand.java
index ac35c0b..f5f0299 100644
--- a/apps/segmentrouting/app/src/main/java/org/onosproject/segmentrouting/cli/TunnelRemoveCommand.java
+++ b/apps/segmentrouting/app/src/main/java/org/onosproject/segmentrouting/cli/TunnelRemoveCommand.java
@@ -19,6 +19,7 @@
 import com.google.common.collect.Lists;
 import org.apache.karaf.shell.api.action.Argument;
 import org.apache.karaf.shell.api.action.Command;
+import org.apache.karaf.shell.api.action.lifecycle.Service;
 import org.onosproject.cli.AbstractShellCommand;
 import org.onosproject.segmentrouting.DefaultTunnel;
 import org.onosproject.segmentrouting.SegmentRoutingService;
@@ -28,6 +29,7 @@
 /**
  * Command to remove a tunnel.
  */
+@Service
 @Command(scope = "onos", name = "sr-tunnel-remove",
         description = "Remove a tunnel")
 public class TunnelRemoveCommand extends AbstractShellCommand {
diff --git a/apps/segmentrouting/app/src/main/java/org/onosproject/segmentrouting/cli/VerifyGroupsCommand.java b/apps/segmentrouting/app/src/main/java/org/onosproject/segmentrouting/cli/VerifyGroupsCommand.java
index 9138810..59b4315 100644
--- a/apps/segmentrouting/app/src/main/java/org/onosproject/segmentrouting/cli/VerifyGroupsCommand.java
+++ b/apps/segmentrouting/app/src/main/java/org/onosproject/segmentrouting/cli/VerifyGroupsCommand.java
@@ -18,6 +18,7 @@
 
 import org.apache.karaf.shell.api.action.Argument;
 import org.apache.karaf.shell.api.action.Command;
+import org.apache.karaf.shell.api.action.lifecycle.Service;
 import org.onosproject.cli.AbstractShellCommand;
 import org.onosproject.net.Device;
 import org.onosproject.net.DeviceId;
@@ -29,6 +30,7 @@
  * and corrects the buckets if necessary. Outcome can be viewed in the 'groups'
  * command.
  */
+@Service
 @Command(scope = "onos", name = "sr-verify-groups",
         description = "Triggers the verification of hashed groups in the specified "
                 + "device. Does not return any output; users can query the results "
diff --git a/apps/segmentrouting/app/src/main/java/org/onosproject/segmentrouting/cli/XconnectAddCommand.java b/apps/segmentrouting/app/src/main/java/org/onosproject/segmentrouting/cli/XconnectAddCommand.java
index ebf33ec..01c3001 100644
--- a/apps/segmentrouting/app/src/main/java/org/onosproject/segmentrouting/cli/XconnectAddCommand.java
+++ b/apps/segmentrouting/app/src/main/java/org/onosproject/segmentrouting/cli/XconnectAddCommand.java
@@ -18,6 +18,7 @@
 import com.google.common.collect.Sets;
 import org.apache.karaf.shell.api.action.Argument;
 import org.apache.karaf.shell.api.action.Command;
+import org.apache.karaf.shell.api.action.lifecycle.Service;
 import org.onlab.packet.VlanId;
 import org.onosproject.cli.AbstractShellCommand;
 import org.onosproject.net.DeviceId;
@@ -29,6 +30,7 @@
 /**
  * Creates Xconnect.
  */
+@Service
 @Command(scope = "onos", name = "sr-xconnect-add", description = "Create Xconnect")
 public class XconnectAddCommand extends AbstractShellCommand {
     @Argument(index = 0, name = "deviceId",
diff --git a/apps/segmentrouting/app/src/main/java/org/onosproject/segmentrouting/cli/XconnectListCommand.java b/apps/segmentrouting/app/src/main/java/org/onosproject/segmentrouting/cli/XconnectListCommand.java
index bcb9a63..44a7d37 100644
--- a/apps/segmentrouting/app/src/main/java/org/onosproject/segmentrouting/cli/XconnectListCommand.java
+++ b/apps/segmentrouting/app/src/main/java/org/onosproject/segmentrouting/cli/XconnectListCommand.java
@@ -16,12 +16,14 @@
 package org.onosproject.segmentrouting.cli;
 
 import org.apache.karaf.shell.api.action.Command;
+import org.apache.karaf.shell.api.action.lifecycle.Service;
 import org.onosproject.cli.AbstractShellCommand;
 import org.onosproject.segmentrouting.xconnect.api.XconnectService;
 
 /**
  * Lists Xconnects.
  */
+@Service
 @Command(scope = "onos", name = "sr-xconnect", description = "Lists all Xconnects")
 public class XconnectListCommand extends AbstractShellCommand {
     @Override
diff --git a/apps/segmentrouting/app/src/main/java/org/onosproject/segmentrouting/cli/XconnectNextListCommand.java b/apps/segmentrouting/app/src/main/java/org/onosproject/segmentrouting/cli/XconnectNextListCommand.java
index 0982daf..0b81186 100644
--- a/apps/segmentrouting/app/src/main/java/org/onosproject/segmentrouting/cli/XconnectNextListCommand.java
+++ b/apps/segmentrouting/app/src/main/java/org/onosproject/segmentrouting/cli/XconnectNextListCommand.java
@@ -17,6 +17,7 @@
 package org.onosproject.segmentrouting.cli;
 
 import org.apache.karaf.shell.api.action.Command;
+import org.apache.karaf.shell.api.action.lifecycle.Service;
 import org.onosproject.cli.AbstractShellCommand;
 import org.onosproject.segmentrouting.xconnect.api.XconnectKey;
 import org.onosproject.segmentrouting.xconnect.api.XconnectService;
@@ -28,6 +29,7 @@
 /**
  * Command to read the current state of the xconnect next stores.
  */
+@Service
 @Command(scope = "onos", name = "sr-next-xconnect",
         description = "Displays the current next-id for xconnect")
 public class XconnectNextListCommand extends AbstractShellCommand {
diff --git a/apps/segmentrouting/app/src/main/java/org/onosproject/segmentrouting/cli/XconnectRemoveCommand.java b/apps/segmentrouting/app/src/main/java/org/onosproject/segmentrouting/cli/XconnectRemoveCommand.java
index 057cadc..e0f77de 100644
--- a/apps/segmentrouting/app/src/main/java/org/onosproject/segmentrouting/cli/XconnectRemoveCommand.java
+++ b/apps/segmentrouting/app/src/main/java/org/onosproject/segmentrouting/cli/XconnectRemoveCommand.java
@@ -17,6 +17,7 @@
 
 import org.apache.karaf.shell.api.action.Argument;
 import org.apache.karaf.shell.api.action.Command;
+import org.apache.karaf.shell.api.action.lifecycle.Service;
 import org.onlab.packet.VlanId;
 import org.onosproject.cli.AbstractShellCommand;
 import org.onosproject.net.DeviceId;
@@ -25,6 +26,7 @@
 /**
  * Deletes Xconnect.
  */
+@Service
 @Command(scope = "onos", name = "sr-xconnect-remove", description = "Remove Xconnect")
 public class XconnectRemoveCommand extends AbstractShellCommand {
     @Argument(index = 0, name = "deviceId",
diff --git a/apps/t3/app/src/main/java/org/onosproject/t3/cli/TroubleshootMcastCommand.java b/apps/t3/app/src/main/java/org/onosproject/t3/cli/TroubleshootMcastCommand.java
index 441e557..d3fefec 100644
--- a/apps/t3/app/src/main/java/org/onosproject/t3/cli/TroubleshootMcastCommand.java
+++ b/apps/t3/app/src/main/java/org/onosproject/t3/cli/TroubleshootMcastCommand.java
@@ -19,6 +19,7 @@
 import org.apache.commons.lang.StringUtils;
 import org.apache.karaf.shell.api.action.Command;
 import org.apache.karaf.shell.api.action.Option;
+import org.apache.karaf.shell.api.action.lifecycle.Service;
 import org.onlab.packet.EthType;
 import org.onlab.packet.IpPrefix;
 import org.onlab.packet.VlanId;
@@ -39,6 +40,7 @@
 /**
  * Starts a Static Packet Trace for all the multicast routes in the system and prints the result.
  */
+@Service
 @Command(scope = "onos", name = "t3-troubleshoot-mcast",
         description = "Traces all the mcast routes present in the system")
 public class TroubleshootMcastCommand extends AbstractShellCommand {
diff --git a/apps/t3/app/src/main/java/org/onosproject/t3/cli/TroubleshootPingAllCommand.java b/apps/t3/app/src/main/java/org/onosproject/t3/cli/TroubleshootPingAllCommand.java
index abdd4ff..96f540f 100644
--- a/apps/t3/app/src/main/java/org/onosproject/t3/cli/TroubleshootPingAllCommand.java
+++ b/apps/t3/app/src/main/java/org/onosproject/t3/cli/TroubleshootPingAllCommand.java
@@ -19,6 +19,7 @@
 import org.apache.commons.lang.StringUtils;
 import org.apache.karaf.shell.api.action.Command;
 import org.apache.karaf.shell.api.action.Option;
+import org.apache.karaf.shell.api.action.lifecycle.Service;
 import org.onlab.packet.IpAddress;
 import org.onosproject.cli.AbstractShellCommand;
 import org.onosproject.net.Host;
@@ -38,6 +39,7 @@
 /**
  * Starts a Static Packet Trace for a given input and prints the result.
  */
+@Service
 @Command(scope = "onos", name = "t3-troubleshoot-pingall",
         description = "Traces a ping between all hosts in the system of a given ETH type")
 public class TroubleshootPingAllCommand extends AbstractShellCommand {
diff --git a/apps/t3/app/src/main/java/org/onosproject/t3/cli/TroubleshootSimpleTraceCommand.java b/apps/t3/app/src/main/java/org/onosproject/t3/cli/TroubleshootSimpleTraceCommand.java
index a7c5c36..fa7f393 100644
--- a/apps/t3/app/src/main/java/org/onosproject/t3/cli/TroubleshootSimpleTraceCommand.java
+++ b/apps/t3/app/src/main/java/org/onosproject/t3/cli/TroubleshootSimpleTraceCommand.java
@@ -19,6 +19,7 @@
 import org.apache.karaf.shell.api.action.Argument;
 import org.apache.karaf.shell.api.action.Command;
 import org.apache.karaf.shell.api.action.Option;
+import org.apache.karaf.shell.api.action.lifecycle.Service;
 import org.onosproject.cli.AbstractShellCommand;
 import org.onosproject.cli.net.HostIdCompleter;
 import org.onosproject.net.HostId;
@@ -32,6 +33,7 @@
 /**
  * Starts a Static Packet Trace for a given input and prints the result.
  */
+@Service
 @Command(scope = "onos", name = "t3-troubleshoot-simple",
         description = "Given two hosts troubleshoots flows and groups between them, in case of segment routing")
 public class TroubleshootSimpleTraceCommand extends AbstractShellCommand {
diff --git a/apps/t3/app/src/main/java/org/onosproject/t3/cli/TroubleshootTraceCommand.java b/apps/t3/app/src/main/java/org/onosproject/t3/cli/TroubleshootTraceCommand.java
index 29b8621..ed11cbe 100644
--- a/apps/t3/app/src/main/java/org/onosproject/t3/cli/TroubleshootTraceCommand.java
+++ b/apps/t3/app/src/main/java/org/onosproject/t3/cli/TroubleshootTraceCommand.java
@@ -19,6 +19,7 @@
 import com.google.common.base.Preconditions;
 import org.apache.karaf.shell.api.action.Command;
 import org.apache.karaf.shell.api.action.Option;
+import org.apache.karaf.shell.api.action.lifecycle.Service;
 import org.onlab.packet.IpAddress;
 import org.onlab.packet.MacAddress;
 import org.onlab.packet.MplsLabel;
@@ -38,6 +39,7 @@
 /**
  * Starts a Static Packet Trace for a given input and prints the result.
  */
+@Service
 @Command(scope = "onos", name = "t3-troubleshoot",
         description = "troubleshoots flows and groups between source and destination")
 public class TroubleshootTraceCommand extends AbstractShellCommand {
diff --git a/apps/test/cluster-ha/src/main/java/org/onosproject/clusterha/cli/ClusterHATestCommand.java b/apps/test/cluster-ha/src/main/java/org/onosproject/clusterha/cli/ClusterHATestCommand.java
index 94e1c7e..a627292 100644
--- a/apps/test/cluster-ha/src/main/java/org/onosproject/clusterha/cli/ClusterHATestCommand.java
+++ b/apps/test/cluster-ha/src/main/java/org/onosproject/clusterha/cli/ClusterHATestCommand.java
@@ -18,9 +18,11 @@
 
 import org.apache.karaf.shell.api.action.Argument;
 import org.apache.karaf.shell.api.action.Command;
+import org.apache.karaf.shell.api.action.lifecycle.Service;
 import org.onosproject.cli.AbstractShellCommand;
 import org.onosproject.clusterha.ClusterHATest;
 
+@Service
 @Command(scope = "onos", name = "cluster-ha-test",
         description = "test addition & deletion on consistent map")
 public class ClusterHATestCommand extends AbstractShellCommand {
diff --git a/apps/test/distributed-primitives/src/main/java/org/onosproject/distributedprimitives/cli/AtomicValueTestCommand.java b/apps/test/distributed-primitives/src/main/java/org/onosproject/distributedprimitives/cli/AtomicValueTestCommand.java
index 1f3b489..61f1409 100644
--- a/apps/test/distributed-primitives/src/main/java/org/onosproject/distributedprimitives/cli/AtomicValueTestCommand.java
+++ b/apps/test/distributed-primitives/src/main/java/org/onosproject/distributedprimitives/cli/AtomicValueTestCommand.java
@@ -17,6 +17,7 @@
 
 import org.apache.karaf.shell.api.action.Argument;
 import org.apache.karaf.shell.api.action.Command;
+import org.apache.karaf.shell.api.action.lifecycle.Service;
 import org.onosproject.cli.AbstractShellCommand;
 import org.onosproject.store.serializers.KryoNamespaces;
 import org.onosproject.store.service.AtomicValue;
@@ -26,6 +27,7 @@
 /**
  * CLI command to manipulate a distributed value.
  */
+@Service
 @Command(scope = "onos", name = "value-test",
         description = "Manipulate a distributed value")
 public class AtomicValueTestCommand extends AbstractShellCommand {
diff --git a/apps/test/distributed-primitives/src/main/java/org/onosproject/distributedprimitives/cli/ConsistentMapTestCommand.java b/apps/test/distributed-primitives/src/main/java/org/onosproject/distributedprimitives/cli/ConsistentMapTestCommand.java
index a719fea..309d90a 100644
--- a/apps/test/distributed-primitives/src/main/java/org/onosproject/distributedprimitives/cli/ConsistentMapTestCommand.java
+++ b/apps/test/distributed-primitives/src/main/java/org/onosproject/distributedprimitives/cli/ConsistentMapTestCommand.java
@@ -17,6 +17,7 @@
 
 import org.apache.karaf.shell.api.action.Argument;
 import org.apache.karaf.shell.api.action.Command;
+import org.apache.karaf.shell.api.action.lifecycle.Service;
 import org.onosproject.cli.AbstractShellCommand;
 import org.onosproject.core.Version;
 import org.onosproject.store.serializers.KryoNamespaces;
@@ -28,6 +29,7 @@
 /**
  * CLI command to manipulate a distributed value.
  */
+@Service
 @Command(scope = "onos", name = "map-test",
         description = "Manipulate a consistent map")
 public class ConsistentMapTestCommand extends AbstractShellCommand {
diff --git a/apps/test/distributed-primitives/src/main/java/org/onosproject/distributedprimitives/cli/CounterTestCommand.java b/apps/test/distributed-primitives/src/main/java/org/onosproject/distributedprimitives/cli/CounterTestCommand.java
index f441508..cdf0a97 100644
--- a/apps/test/distributed-primitives/src/main/java/org/onosproject/distributedprimitives/cli/CounterTestCommand.java
+++ b/apps/test/distributed-primitives/src/main/java/org/onosproject/distributedprimitives/cli/CounterTestCommand.java
@@ -17,6 +17,7 @@
 
 import org.apache.karaf.shell.api.action.Argument;
 import org.apache.karaf.shell.api.action.Command;
+import org.apache.karaf.shell.api.action.lifecycle.Service;
 import org.onosproject.cli.AbstractShellCommand;
 import org.onosproject.store.service.AtomicCounter;
 import org.onosproject.store.service.StorageService;
@@ -24,6 +25,7 @@
 /**
  * CLI command to increment a distributed counter.
  */
+@Service
 @Command(scope = "onos", name = "counter-test",
         description = "Manipulate a distributed counter")
 public class CounterTestCommand extends AbstractShellCommand {
diff --git a/apps/test/distributed-primitives/src/main/java/org/onosproject/distributedprimitives/cli/CounterTestIncrementCommand.java b/apps/test/distributed-primitives/src/main/java/org/onosproject/distributedprimitives/cli/CounterTestIncrementCommand.java
index 2aee8a4..04d75c2 100644
--- a/apps/test/distributed-primitives/src/main/java/org/onosproject/distributedprimitives/cli/CounterTestIncrementCommand.java
+++ b/apps/test/distributed-primitives/src/main/java/org/onosproject/distributedprimitives/cli/CounterTestIncrementCommand.java
@@ -18,6 +18,7 @@
 import org.apache.karaf.shell.api.action.Argument;
 import org.apache.karaf.shell.api.action.Command;
 import org.apache.karaf.shell.api.action.Option;
+import org.apache.karaf.shell.api.action.lifecycle.Service;
 import org.onosproject.cli.AbstractShellCommand;
 import org.onosproject.store.service.AsyncAtomicCounter;
 import org.onosproject.store.service.StorageService;
@@ -33,6 +34,7 @@
 /**
  * CLI command to increment a distributed counter.
  */
+@Service
 @Command(scope = "onos", name = "counter-test-increment",
         description = "Increment a distributed counter")
 public class CounterTestIncrementCommand extends AbstractShellCommand {
diff --git a/apps/test/distributed-primitives/src/main/java/org/onosproject/distributedprimitives/cli/DistributedLockTestCommand.java b/apps/test/distributed-primitives/src/main/java/org/onosproject/distributedprimitives/cli/DistributedLockTestCommand.java
index 3bc0b36..d6760c6 100644
--- a/apps/test/distributed-primitives/src/main/java/org/onosproject/distributedprimitives/cli/DistributedLockTestCommand.java
+++ b/apps/test/distributed-primitives/src/main/java/org/onosproject/distributedprimitives/cli/DistributedLockTestCommand.java
@@ -19,10 +19,12 @@
 
 import org.apache.karaf.shell.api.action.Argument;
 import org.apache.karaf.shell.api.action.Command;
+import org.apache.karaf.shell.api.action.lifecycle.Service;
 import org.onosproject.cli.AbstractShellCommand;
 import org.onosproject.distributedprimitives.DistributedPrimitivesTest;
 import org.onosproject.store.service.DistributedLock;
 
+@Service
 @Command(scope = "onos", name = "lock-test",
     description = "DistributedLock test cli fixture")
 public class DistributedLockTestCommand extends AbstractShellCommand {
diff --git a/apps/test/distributed-primitives/src/main/java/org/onosproject/distributedprimitives/cli/EventuallyConsistentMapTestCommand.java b/apps/test/distributed-primitives/src/main/java/org/onosproject/distributedprimitives/cli/EventuallyConsistentMapTestCommand.java
index 249bd30..7789479 100644
--- a/apps/test/distributed-primitives/src/main/java/org/onosproject/distributedprimitives/cli/EventuallyConsistentMapTestCommand.java
+++ b/apps/test/distributed-primitives/src/main/java/org/onosproject/distributedprimitives/cli/EventuallyConsistentMapTestCommand.java
@@ -17,6 +17,7 @@
 
 import org.apache.karaf.shell.api.action.Argument;
 import org.apache.karaf.shell.api.action.Command;
+import org.apache.karaf.shell.api.action.lifecycle.Service;
 import org.onosproject.cli.AbstractShellCommand;
 import org.onosproject.distributedprimitives.DistributedPrimitivesTest;
 import org.onosproject.store.service.EventuallyConsistentMap;
@@ -24,6 +25,7 @@
 /**
  * CLI command to manipulate a distributed map.
  */
+@Service
 @Command(scope = "onos", name = "ec-map-test",
         description = "Manipulate an eventually consistent map")
 public class EventuallyConsistentMapTestCommand extends AbstractShellCommand {
diff --git a/apps/test/distributed-primitives/src/main/java/org/onosproject/distributedprimitives/cli/LeaderElectorTestCommand.java b/apps/test/distributed-primitives/src/main/java/org/onosproject/distributedprimitives/cli/LeaderElectorTestCommand.java
index 743e3f2..b28f0ad 100644
--- a/apps/test/distributed-primitives/src/main/java/org/onosproject/distributedprimitives/cli/LeaderElectorTestCommand.java
+++ b/apps/test/distributed-primitives/src/main/java/org/onosproject/distributedprimitives/cli/LeaderElectorTestCommand.java
@@ -17,6 +17,7 @@
 
 import org.apache.karaf.shell.api.action.Argument;
 import org.apache.karaf.shell.api.action.Command;
+import org.apache.karaf.shell.api.action.lifecycle.Service;
 import org.onosproject.cli.AbstractShellCommand;
 import org.onosproject.cluster.ClusterService;
 import org.onosproject.cluster.Leadership;
@@ -26,6 +27,7 @@
 
 import com.google.common.base.Joiner;
 
+@Service
 @Command(scope = "onos", name = "leader-test",
 description = "LeaderElector test cli fixture")
 public class LeaderElectorTestCommand extends AbstractShellCommand {
diff --git a/apps/test/distributed-primitives/src/main/java/org/onosproject/distributedprimitives/cli/SetTestAddCommand.java b/apps/test/distributed-primitives/src/main/java/org/onosproject/distributedprimitives/cli/SetTestAddCommand.java
index dd2be54..5320ea4 100644
--- a/apps/test/distributed-primitives/src/main/java/org/onosproject/distributedprimitives/cli/SetTestAddCommand.java
+++ b/apps/test/distributed-primitives/src/main/java/org/onosproject/distributedprimitives/cli/SetTestAddCommand.java
@@ -17,6 +17,7 @@
 
 import org.apache.karaf.shell.api.action.Argument;
 import org.apache.karaf.shell.api.action.Command;
+import org.apache.karaf.shell.api.action.lifecycle.Service;
 import org.onlab.util.KryoNamespace;
 import org.onosproject.cli.AbstractShellCommand;
 import org.onosproject.store.serializers.KryoNamespaces;
@@ -29,6 +30,7 @@
 /**
  * CLI command to add elements to a distributed set.
  */
+@Service
 @Command(scope = "onos", name = "set-test-add",
         description = "Add to a distributed set")
 public class SetTestAddCommand extends AbstractShellCommand {
diff --git a/apps/test/distributed-primitives/src/main/java/org/onosproject/distributedprimitives/cli/SetTestGetCommand.java b/apps/test/distributed-primitives/src/main/java/org/onosproject/distributedprimitives/cli/SetTestGetCommand.java
index 08b0af4..208c47a 100644
--- a/apps/test/distributed-primitives/src/main/java/org/onosproject/distributedprimitives/cli/SetTestGetCommand.java
+++ b/apps/test/distributed-primitives/src/main/java/org/onosproject/distributedprimitives/cli/SetTestGetCommand.java
@@ -18,6 +18,7 @@
 import org.apache.karaf.shell.api.action.Argument;
 import org.apache.karaf.shell.api.action.Command;
 import org.apache.karaf.shell.api.action.Option;
+import org.apache.karaf.shell.api.action.lifecycle.Service;
 import org.onlab.util.KryoNamespace;
 import org.onosproject.cli.AbstractShellCommand;
 import org.onosproject.store.serializers.KryoNamespaces;
@@ -30,6 +31,7 @@
 /**
  * CLI command to get the elements in a distributed set.
  */
+@Service
 @Command(scope = "onos", name = "set-test-get",
         description = "Get the elements in a distributed set")
 public class SetTestGetCommand extends AbstractShellCommand {
diff --git a/apps/test/distributed-primitives/src/main/java/org/onosproject/distributedprimitives/cli/SetTestRemoveCommand.java b/apps/test/distributed-primitives/src/main/java/org/onosproject/distributedprimitives/cli/SetTestRemoveCommand.java
index 1915621..675747f 100644
--- a/apps/test/distributed-primitives/src/main/java/org/onosproject/distributedprimitives/cli/SetTestRemoveCommand.java
+++ b/apps/test/distributed-primitives/src/main/java/org/onosproject/distributedprimitives/cli/SetTestRemoveCommand.java
@@ -18,6 +18,7 @@
 import org.apache.karaf.shell.api.action.Argument;
 import org.apache.karaf.shell.api.action.Command;
 import org.apache.karaf.shell.api.action.Option;
+import org.apache.karaf.shell.api.action.lifecycle.Service;
 import org.onlab.util.KryoNamespace;
 import org.onosproject.cli.AbstractShellCommand;
 import org.onosproject.store.serializers.KryoNamespaces;
@@ -30,6 +31,7 @@
 /**
  * CLI command to remove elements from a distributed set.
  */
+@Service
 @Command(scope = "onos", name = "set-test-remove",
         description = "Remove from a distributed set")
 public class SetTestRemoveCommand extends AbstractShellCommand {
diff --git a/apps/test/distributed-primitives/src/main/java/org/onosproject/distributedprimitives/cli/TransactionalMapTestGetCommand.java b/apps/test/distributed-primitives/src/main/java/org/onosproject/distributedprimitives/cli/TransactionalMapTestGetCommand.java
index f103641..f8dc239 100644
--- a/apps/test/distributed-primitives/src/main/java/org/onosproject/distributedprimitives/cli/TransactionalMapTestGetCommand.java
+++ b/apps/test/distributed-primitives/src/main/java/org/onosproject/distributedprimitives/cli/TransactionalMapTestGetCommand.java
@@ -17,6 +17,7 @@
 
 import org.apache.karaf.shell.api.action.Argument;
 import org.apache.karaf.shell.api.action.Command;
+import org.apache.karaf.shell.api.action.lifecycle.Service;
 import org.onosproject.cli.AbstractShellCommand;
 import org.onosproject.store.serializers.KryoNamespaces;
 import org.onosproject.store.service.Serializer;
@@ -27,6 +28,7 @@
 /**
  * CLI command to get a value associated with a specific key in a transactional map.
  */
+@Service
 @Command(scope = "onos", name = "transactional-map-test-get",
         description = "Get a value associated with a specific key in a transactional map")
 public class TransactionalMapTestGetCommand extends AbstractShellCommand {
diff --git a/apps/test/distributed-primitives/src/main/java/org/onosproject/distributedprimitives/cli/TransactionalMapTestPutCommand.java b/apps/test/distributed-primitives/src/main/java/org/onosproject/distributedprimitives/cli/TransactionalMapTestPutCommand.java
index 231833b..8d70c2a 100644
--- a/apps/test/distributed-primitives/src/main/java/org/onosproject/distributedprimitives/cli/TransactionalMapTestPutCommand.java
+++ b/apps/test/distributed-primitives/src/main/java/org/onosproject/distributedprimitives/cli/TransactionalMapTestPutCommand.java
@@ -17,6 +17,7 @@
 
 import org.apache.karaf.shell.api.action.Argument;
 import org.apache.karaf.shell.api.action.Command;
+import org.apache.karaf.shell.api.action.lifecycle.Service;
 import org.onosproject.cli.AbstractShellCommand;
 import org.onosproject.store.serializers.KryoNamespaces;
 import org.onosproject.store.service.Serializer;
@@ -27,6 +28,7 @@
 /**
  * CLI command to put a value into a transactional map.
  */
+@Service
 @Command(scope = "onos", name = "transactional-map-test-put",
         description = "Put a value into a transactional map")
 public class TransactionalMapTestPutCommand extends AbstractShellCommand {
diff --git a/apps/test/distributed-primitives/src/main/java/org/onosproject/distributedprimitives/cli/WorkQueueTestCommand.java b/apps/test/distributed-primitives/src/main/java/org/onosproject/distributedprimitives/cli/WorkQueueTestCommand.java
index b3f1d62..5caef40 100644
--- a/apps/test/distributed-primitives/src/main/java/org/onosproject/distributedprimitives/cli/WorkQueueTestCommand.java
+++ b/apps/test/distributed-primitives/src/main/java/org/onosproject/distributedprimitives/cli/WorkQueueTestCommand.java
@@ -17,6 +17,7 @@
 
 import org.apache.karaf.shell.api.action.Argument;
 import org.apache.karaf.shell.api.action.Command;
+import org.apache.karaf.shell.api.action.lifecycle.Service;
 import org.onosproject.cli.AbstractShellCommand;
 import org.onosproject.store.serializers.KryoNamespaces;
 import org.onosproject.store.service.DistributedPrimitive;
@@ -34,6 +35,7 @@
 /**
  * CLI command to test a distributed work queue.
  */
+@Service
 @Command(scope = "onos", name = "work-queue-test",
         description = "Test a distributed work queue")
 public class WorkQueueTestCommand extends AbstractShellCommand {
diff --git a/apps/test/election/src/main/java/org/onosproject/election/cli/ElectionTestLeaderCommand.java b/apps/test/election/src/main/java/org/onosproject/election/cli/ElectionTestLeaderCommand.java
index 16e426e..ed6c982 100644
--- a/apps/test/election/src/main/java/org/onosproject/election/cli/ElectionTestLeaderCommand.java
+++ b/apps/test/election/src/main/java/org/onosproject/election/cli/ElectionTestLeaderCommand.java
@@ -15,6 +15,7 @@
  */
 package org.onosproject.election.cli;
 
+import org.apache.karaf.shell.api.action.lifecycle.Service;
 import org.onosproject.cluster.NodeId;
 import org.apache.karaf.shell.api.action.Command;
 import org.onosproject.cli.AbstractShellCommand;
@@ -23,6 +24,7 @@
 /**
  * CLI command to get the current leader for the Election test application.
  */
+@Service
 @Command(scope = "onos", name = "election-test-leader",
         description = "Get the current leader for the Election test application")
 public class ElectionTestLeaderCommand extends AbstractShellCommand {
diff --git a/apps/test/election/src/main/java/org/onosproject/election/cli/ElectionTestRunCommand.java b/apps/test/election/src/main/java/org/onosproject/election/cli/ElectionTestRunCommand.java
index 2850bdb..ded59b5 100644
--- a/apps/test/election/src/main/java/org/onosproject/election/cli/ElectionTestRunCommand.java
+++ b/apps/test/election/src/main/java/org/onosproject/election/cli/ElectionTestRunCommand.java
@@ -16,12 +16,14 @@
 package org.onosproject.election.cli;
 
 import org.apache.karaf.shell.api.action.Command;
+import org.apache.karaf.shell.api.action.lifecycle.Service;
 import org.onosproject.cli.AbstractShellCommand;
 import org.onosproject.cluster.LeadershipService;
 
 /**
  * CLI command to run for leadership of the Election test application.
  */
+@Service
 @Command(scope = "onos", name = "election-test-run",
         description = "Run for leader of the Election test application")
 public class ElectionTestRunCommand extends AbstractShellCommand {
diff --git a/apps/test/election/src/main/java/org/onosproject/election/cli/ElectionTestWithdrawCommand.java b/apps/test/election/src/main/java/org/onosproject/election/cli/ElectionTestWithdrawCommand.java
index e854164..52cdb4d 100644
--- a/apps/test/election/src/main/java/org/onosproject/election/cli/ElectionTestWithdrawCommand.java
+++ b/apps/test/election/src/main/java/org/onosproject/election/cli/ElectionTestWithdrawCommand.java
@@ -16,6 +16,7 @@
 package org.onosproject.election.cli;
 
 import org.apache.karaf.shell.api.action.Command;
+import org.apache.karaf.shell.api.action.lifecycle.Service;
 import org.onosproject.cli.AbstractShellCommand;
 import org.onosproject.cluster.LeadershipService;
 
@@ -23,6 +24,7 @@
  * CLI command to withdraw the local node from leadership election for
  * the Election test application.
  */
+@Service
 @Command(scope = "onos", name = "election-test-withdraw",
         description = "Withdraw node from leadership election for the Election test application")
 public class ElectionTestWithdrawCommand extends AbstractShellCommand {
diff --git a/apps/test/intent-perf/src/main/java/org/onosproject/intentperf/IntentPerfListCommand.java b/apps/test/intent-perf/src/main/java/org/onosproject/intentperf/IntentPerfListCommand.java
index 2f1358e..28dfb35 100644
--- a/apps/test/intent-perf/src/main/java/org/onosproject/intentperf/IntentPerfListCommand.java
+++ b/apps/test/intent-perf/src/main/java/org/onosproject/intentperf/IntentPerfListCommand.java
@@ -17,6 +17,7 @@
 
 import org.apache.karaf.shell.api.action.Command;
 import org.apache.karaf.shell.api.action.Option;
+import org.apache.karaf.shell.api.action.lifecycle.Service;
 import org.onosproject.cli.AbstractShellCommand;
 import org.onosproject.intentperf.IntentPerfCollector.Sample;
 
@@ -27,6 +28,7 @@
 /**
  * Displays accumulated performance metrics.
  */
+@Service
 @Command(scope = "onos", name = "intent-perf",
         description = "Displays accumulated performance metrics")
 public class IntentPerfListCommand extends AbstractShellCommand {
diff --git a/apps/test/intent-perf/src/main/java/org/onosproject/intentperf/IntentPerfStartCommand.java b/apps/test/intent-perf/src/main/java/org/onosproject/intentperf/IntentPerfStartCommand.java
index 17d60c4..77f5081 100644
--- a/apps/test/intent-perf/src/main/java/org/onosproject/intentperf/IntentPerfStartCommand.java
+++ b/apps/test/intent-perf/src/main/java/org/onosproject/intentperf/IntentPerfStartCommand.java
@@ -16,11 +16,13 @@
 package org.onosproject.intentperf;
 
 import org.apache.karaf.shell.api.action.Command;
+import org.apache.karaf.shell.api.action.lifecycle.Service;
 import org.onosproject.cli.AbstractShellCommand;
 
 /**
  * Starts intent performance test run.
  */
+@Service
 @Command(scope = "onos", name = "intent-perf-start",
         description = "Starts intent performance test run")
 public class IntentPerfStartCommand extends AbstractShellCommand {
diff --git a/apps/test/intent-perf/src/main/java/org/onosproject/intentperf/IntentPerfStopCommand.java b/apps/test/intent-perf/src/main/java/org/onosproject/intentperf/IntentPerfStopCommand.java
index 1ce91ff..b938430 100644
--- a/apps/test/intent-perf/src/main/java/org/onosproject/intentperf/IntentPerfStopCommand.java
+++ b/apps/test/intent-perf/src/main/java/org/onosproject/intentperf/IntentPerfStopCommand.java
@@ -16,11 +16,13 @@
 package org.onosproject.intentperf;
 
 import org.apache.karaf.shell.api.action.Command;
+import org.apache.karaf.shell.api.action.lifecycle.Service;
 import org.onosproject.cli.AbstractShellCommand;
 
 /**
  * Stops intent performance test run.
  */
+@Service
 @Command(scope = "onos", name = "intent-perf-stop",
         description = "Stops intent performance test run")
 public class IntentPerfStopCommand extends AbstractShellCommand {
diff --git a/apps/test/primitive-perf/src/main/java/org/onosproject/primitiveperf/PrimitivePerfListCommand.java b/apps/test/primitive-perf/src/main/java/org/onosproject/primitiveperf/PrimitivePerfListCommand.java
index e804676..d443865 100644
--- a/apps/test/primitive-perf/src/main/java/org/onosproject/primitiveperf/PrimitivePerfListCommand.java
+++ b/apps/test/primitive-perf/src/main/java/org/onosproject/primitiveperf/PrimitivePerfListCommand.java
@@ -21,12 +21,14 @@
 
 import org.apache.karaf.shell.api.action.Command;
 import org.apache.karaf.shell.api.action.Option;
+import org.apache.karaf.shell.api.action.lifecycle.Service;
 import org.onosproject.cli.AbstractShellCommand;
 import org.onosproject.primitiveperf.PrimitivePerfCollector.Sample;
 
 /**
  * Displays accumulated performance metrics.
  */
+@Service
 @Command(scope = "onos", name = "primitive-perf",
         description = "Displays accumulated performance metrics")
 public class PrimitivePerfListCommand extends AbstractShellCommand {
diff --git a/apps/test/primitive-perf/src/main/java/org/onosproject/primitiveperf/PrimitivePerfStartCommand.java b/apps/test/primitive-perf/src/main/java/org/onosproject/primitiveperf/PrimitivePerfStartCommand.java
index 0f0e3ef..af45199 100644
--- a/apps/test/primitive-perf/src/main/java/org/onosproject/primitiveperf/PrimitivePerfStartCommand.java
+++ b/apps/test/primitive-perf/src/main/java/org/onosproject/primitiveperf/PrimitivePerfStartCommand.java
@@ -16,11 +16,13 @@
 package org.onosproject.primitiveperf;
 
 import org.apache.karaf.shell.api.action.Command;
+import org.apache.karaf.shell.api.action.lifecycle.Service;
 import org.onosproject.cli.AbstractShellCommand;
 
 /**
  * Starts primitive performance test run.
  */
+@Service
 @Command(scope = "onos", name = "primitive-perf-start",
         description = "Starts primitive performance test run")
 public class PrimitivePerfStartCommand extends AbstractShellCommand {
diff --git a/apps/test/primitive-perf/src/main/java/org/onosproject/primitiveperf/PrimitivePerfStopCommand.java b/apps/test/primitive-perf/src/main/java/org/onosproject/primitiveperf/PrimitivePerfStopCommand.java
index 2c48ee9..6702c11 100644
--- a/apps/test/primitive-perf/src/main/java/org/onosproject/primitiveperf/PrimitivePerfStopCommand.java
+++ b/apps/test/primitive-perf/src/main/java/org/onosproject/primitiveperf/PrimitivePerfStopCommand.java
@@ -16,11 +16,13 @@
 package org.onosproject.primitiveperf;
 
 import org.apache.karaf.shell.api.action.Command;
+import org.apache.karaf.shell.api.action.lifecycle.Service;
 import org.onosproject.cli.AbstractShellCommand;
 
 /**
  * Stops primitive performance test run.
  */
+@Service
 @Command(scope = "onos", name = "primitive-perf-stop",
         description = "Stops primitive performance test run")
 public class PrimitivePerfStopCommand extends AbstractShellCommand {
diff --git a/apps/test/proxy/src/main/java/org/onosproject/proxytest/ProxyTestCommand.java b/apps/test/proxy/src/main/java/org/onosproject/proxytest/ProxyTestCommand.java
index 9a5d917..1ef2782 100644
--- a/apps/test/proxy/src/main/java/org/onosproject/proxytest/ProxyTestCommand.java
+++ b/apps/test/proxy/src/main/java/org/onosproject/proxytest/ProxyTestCommand.java
@@ -21,6 +21,7 @@
 
 import org.apache.karaf.shell.api.action.Argument;
 import org.apache.karaf.shell.api.action.Command;
+import org.apache.karaf.shell.api.action.lifecycle.Service;
 import org.onosproject.cli.AbstractShellCommand;
 import org.onosproject.cluster.NodeId;
 import org.onosproject.net.DeviceId;
@@ -28,6 +29,7 @@
 /**
  * Proxy test command.
  */
+@Service
 @Command(scope = "onos", name = "proxy-test", description = "Manipulate a distributed proxy")
 public class ProxyTestCommand extends AbstractShellCommand {
 
diff --git a/apps/test/route-scale/src/main/java/org/onosproject/routescale/CreateFlows.java b/apps/test/route-scale/src/main/java/org/onosproject/routescale/CreateFlows.java
index bd1d1d6..2bcee51 100644
--- a/apps/test/route-scale/src/main/java/org/onosproject/routescale/CreateFlows.java
+++ b/apps/test/route-scale/src/main/java/org/onosproject/routescale/CreateFlows.java
@@ -17,12 +17,14 @@
 
 import org.apache.karaf.shell.api.action.Argument;
 import org.apache.karaf.shell.api.action.Command;
+import org.apache.karaf.shell.api.action.lifecycle.Service;
 import org.onosproject.cfg.ComponentConfigService;
 import org.onosproject.cli.AbstractShellCommand;
 
 /**
  * Creates the specified number of routes for scale testing.
  */
+@Service
 @Command(scope = "onos", name = "scale-flows",
         description = "Sets the specified number of flows for scale testing")
 public class CreateFlows extends AbstractShellCommand {
diff --git a/apps/test/route-scale/src/main/java/org/onosproject/routescale/CreateRoutes.java b/apps/test/route-scale/src/main/java/org/onosproject/routescale/CreateRoutes.java
index a04c518..5fdcb7a 100644
--- a/apps/test/route-scale/src/main/java/org/onosproject/routescale/CreateRoutes.java
+++ b/apps/test/route-scale/src/main/java/org/onosproject/routescale/CreateRoutes.java
@@ -17,12 +17,14 @@
 
 import org.apache.karaf.shell.api.action.Argument;
 import org.apache.karaf.shell.api.action.Command;
+import org.apache.karaf.shell.api.action.lifecycle.Service;
 import org.onosproject.cfg.ComponentConfigService;
 import org.onosproject.cli.AbstractShellCommand;
 
 /**
  * Creates the specified number of routes for scale testing.
  */
+@Service
 @Command(scope = "onos", name = "scale-routes",
         description = "Sets the specified number of routes for scale testing")
 public class CreateRoutes extends AbstractShellCommand {
diff --git a/apps/virtualbng/src/main/java/org/onosproject/virtualbng/cli/MappingListCommand.java b/apps/virtualbng/src/main/java/org/onosproject/virtualbng/cli/MappingListCommand.java
index 91f9aa2..0dbf4a0 100644
--- a/apps/virtualbng/src/main/java/org/onosproject/virtualbng/cli/MappingListCommand.java
+++ b/apps/virtualbng/src/main/java/org/onosproject/virtualbng/cli/MappingListCommand.java
@@ -20,6 +20,7 @@
 import java.util.Map.Entry;
 
 import org.apache.karaf.shell.api.action.Command;
+import org.apache.karaf.shell.api.action.lifecycle.Service;
 import org.onlab.packet.IpAddress;
 import org.onosproject.cli.AbstractShellCommand;
 import org.onosproject.virtualbng.VbngConfigurationService;
@@ -27,6 +28,7 @@
 /**
  * Command to show the list of vBNG IP address mapping entries.
  */
+@Service
 @Command(scope = "onos", name = "vbngs",
         description = "Lists all vBNG IP address mapping entries")
 public class MappingListCommand extends AbstractShellCommand {
diff --git a/apps/vpls/src/main/java/org/onosproject/vpls/cli/VplsCommand.java b/apps/vpls/src/main/java/org/onosproject/vpls/cli/VplsCommand.java
index 0aac0e1..1f64422 100644
--- a/apps/vpls/src/main/java/org/onosproject/vpls/cli/VplsCommand.java
+++ b/apps/vpls/src/main/java/org/onosproject/vpls/cli/VplsCommand.java
@@ -18,6 +18,7 @@
 import com.google.common.collect.ImmutableSet;
 import org.apache.karaf.shell.api.action.Argument;
 import org.apache.karaf.shell.api.action.Command;
+import org.apache.karaf.shell.api.action.lifecycle.Service;
 import org.onosproject.cli.AbstractShellCommand;
 import org.onosproject.net.intf.Interface;
 import org.onosproject.net.intf.InterfaceService;
@@ -39,6 +40,7 @@
 /**
  * CLI to interact with the VPLS application.
  */
+@Service
 @Command(scope = "onos", name = "vpls",
         description = "Manages the VPLS application")
 public class VplsCommand extends AbstractShellCommand {
diff --git a/apps/vtn/vtnmgr/src/main/java/org/onosproject/vtn/cli/VtnCommand.java b/apps/vtn/vtnmgr/src/main/java/org/onosproject/vtn/cli/VtnCommand.java
index 443f730..1fed65f 100644
--- a/apps/vtn/vtnmgr/src/main/java/org/onosproject/vtn/cli/VtnCommand.java
+++ b/apps/vtn/vtnmgr/src/main/java/org/onosproject/vtn/cli/VtnCommand.java
@@ -17,12 +17,14 @@
 
 import org.apache.karaf.shell.api.action.Command;
 import org.apache.karaf.shell.api.action.Option;
+import org.apache.karaf.shell.api.action.lifecycle.Service;
 import org.onosproject.cli.AbstractShellCommand;
 import org.onosproject.vtn.manager.impl.VtnManager;
 
 /**
  * Supports for updating the external gateway virtualPort.
  */
+@Service
 @Command(scope = "onos", name = "externalportname-set",
         description = "Supports for setting the external port name.")
 public class VtnCommand extends AbstractShellCommand {
diff --git a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/cli/floatingip/FloatingIpCreateCommand.java b/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/cli/floatingip/FloatingIpCreateCommand.java
index 45c6297..e21cbc3 100644
--- a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/cli/floatingip/FloatingIpCreateCommand.java
+++ b/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/cli/floatingip/FloatingIpCreateCommand.java
@@ -20,6 +20,7 @@
 import org.apache.karaf.shell.api.action.Argument;
 import org.apache.karaf.shell.api.action.Command;
 import org.apache.karaf.shell.api.action.Option;
+import org.apache.karaf.shell.api.action.lifecycle.Service;
 import org.onlab.packet.IpAddress;
 import org.onosproject.cli.AbstractShellCommand;
 import org.onosproject.vtnrsc.DefaultFloatingIp;
@@ -37,6 +38,7 @@
 /**
  * Supports for create a floating IP.
  */
+@Service
 @Command(scope = "onos", name = "floatingip-create",
         description = "Supports for creating a floating IP")
 public class FloatingIpCreateCommand extends AbstractShellCommand {
diff --git a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/cli/floatingip/FloatingIpQueryCommand.java b/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/cli/floatingip/FloatingIpQueryCommand.java
index 62a8e05..d4b08a7 100644
--- a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/cli/floatingip/FloatingIpQueryCommand.java
+++ b/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/cli/floatingip/FloatingIpQueryCommand.java
@@ -17,6 +17,7 @@
 
 import org.apache.karaf.shell.api.action.Command;
 import org.apache.karaf.shell.api.action.Option;
+import org.apache.karaf.shell.api.action.lifecycle.Service;
 import org.onosproject.cli.AbstractShellCommand;
 import org.onosproject.vtnrsc.FloatingIpId;
 import org.onosproject.vtnrsc.FloatingIp;
@@ -25,6 +26,7 @@
 /**
  * Supports for query a floating IP.
  */
+@Service
 @Command(scope = "onos", name = "floatingips", description = "Supports for querying a floating IP")
 public class FloatingIpQueryCommand extends AbstractShellCommand {
     @Option(name = "-I", aliases = "--id", description = "The floating IP identifier",
diff --git a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/cli/floatingip/FloatingIpRemoveCommand.java b/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/cli/floatingip/FloatingIpRemoveCommand.java
index 41eeb03..4071cd8 100644
--- a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/cli/floatingip/FloatingIpRemoveCommand.java
+++ b/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/cli/floatingip/FloatingIpRemoveCommand.java
@@ -19,6 +19,7 @@
 
 import org.apache.karaf.shell.api.action.Command;
 import org.apache.karaf.shell.api.action.Option;
+import org.apache.karaf.shell.api.action.lifecycle.Service;
 import org.onosproject.cli.AbstractShellCommand;
 import org.onosproject.vtnrsc.FloatingIp;
 import org.onosproject.vtnrsc.FloatingIpId;
@@ -29,6 +30,7 @@
 /**
  * Supports for remove a floating IP.
  */
+@Service
 @Command(scope = "onos", name = "floatingip-remove", description = "Supports for removing a floating IP")
 public class FloatingIpRemoveCommand extends AbstractShellCommand {
     @Option(name = "-I", aliases = "--id", description = "The floating IP identifier",
diff --git a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/cli/floatingip/FloatingIpUpdateCommand.java b/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/cli/floatingip/FloatingIpUpdateCommand.java
index b93a455..5ec16c9 100644
--- a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/cli/floatingip/FloatingIpUpdateCommand.java
+++ b/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/cli/floatingip/FloatingIpUpdateCommand.java
@@ -20,6 +20,7 @@
 import org.apache.karaf.shell.api.action.Argument;
 import org.apache.karaf.shell.api.action.Command;
 import org.apache.karaf.shell.api.action.Option;
+import org.apache.karaf.shell.api.action.lifecycle.Service;
 import org.onlab.packet.IpAddress;
 import org.onosproject.cli.AbstractShellCommand;
 import org.onosproject.vtnrsc.DefaultFloatingIp;
@@ -37,6 +38,7 @@
 /**
  * Supports for update a floating IP.
  */
+@Service
 @Command(scope = "onos", name = "floatingip-update",
         description = "Supports for updating a floating IP")
 public class FloatingIpUpdateCommand extends AbstractShellCommand {
diff --git a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/cli/network/TenantNetworkCreateCommand.java b/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/cli/network/TenantNetworkCreateCommand.java
index 03e7f54..40669cb 100644
--- a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/cli/network/TenantNetworkCreateCommand.java
+++ b/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/cli/network/TenantNetworkCreateCommand.java
@@ -20,6 +20,7 @@
 import org.apache.karaf.shell.api.action.Argument;
 import org.apache.karaf.shell.api.action.Command;
 import org.apache.karaf.shell.api.action.Option;
+import org.apache.karaf.shell.api.action.lifecycle.Service;
 import org.onosproject.cli.AbstractShellCommand;
 import org.onosproject.vtnrsc.DefaultTenantNetwork;
 import org.onosproject.vtnrsc.PhysicalNetwork;
@@ -34,6 +35,7 @@
 /**
  * Supports for creating a TenantNetwork.
  */
+@Service
 @Command(scope = "onos", name = "tenantnetwork-create",
         description = "Supports for creating a TenantNetwork")
 public class TenantNetworkCreateCommand extends AbstractShellCommand {
diff --git a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/cli/network/TenantNetworkQueryCommand.java b/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/cli/network/TenantNetworkQueryCommand.java
index 64b0260..7521eff 100644
--- a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/cli/network/TenantNetworkQueryCommand.java
+++ b/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/cli/network/TenantNetworkQueryCommand.java
@@ -17,6 +17,7 @@
 
 import org.apache.karaf.shell.api.action.Command;
 import org.apache.karaf.shell.api.action.Option;
+import org.apache.karaf.shell.api.action.lifecycle.Service;
 import org.onosproject.cli.AbstractShellCommand;
 import org.onosproject.vtnrsc.TenantNetwork;
 import org.onosproject.vtnrsc.TenantNetworkId;
@@ -25,6 +26,7 @@
 /**
  * Supports for querying TenantNetworks by network id.
  */
+@Service
 @Command(scope = "onos", name = "tenantnetworks", description = "Supports for querying"
         + "tenantNetworks by networkid")
 public class TenantNetworkQueryCommand extends AbstractShellCommand {
diff --git a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/cli/network/TenantNetworkRemoveCommand.java b/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/cli/network/TenantNetworkRemoveCommand.java
index 6ca426e..d6a8673 100644
--- a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/cli/network/TenantNetworkRemoveCommand.java
+++ b/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/cli/network/TenantNetworkRemoveCommand.java
@@ -19,6 +19,7 @@
 
 import org.apache.karaf.shell.api.action.Argument;
 import org.apache.karaf.shell.api.action.Command;
+import org.apache.karaf.shell.api.action.lifecycle.Service;
 import org.onosproject.cli.AbstractShellCommand;
 import org.onosproject.vtnrsc.TenantNetworkId;
 import org.onosproject.vtnrsc.tenantnetwork.TenantNetworkService;
@@ -28,6 +29,7 @@
 /**
  * Supports for removing a TenantNetwork by network id.
  */
+@Service
 @Command(scope = "onos", name = "tenantnetwork-remove", description = "Supports for removing"
         + " a tenantNetwork by tenantNetworkid")
 public class TenantNetworkRemoveCommand extends AbstractShellCommand {
diff --git a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/cli/network/TenantNetworkUpdateCommand.java b/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/cli/network/TenantNetworkUpdateCommand.java
index 918c5d3..88c342e 100644
--- a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/cli/network/TenantNetworkUpdateCommand.java
+++ b/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/cli/network/TenantNetworkUpdateCommand.java
@@ -20,6 +20,7 @@
 import org.apache.karaf.shell.api.action.Argument;
 import org.apache.karaf.shell.api.action.Command;
 import org.apache.karaf.shell.api.action.Option;
+import org.apache.karaf.shell.api.action.lifecycle.Service;
 import org.onosproject.cli.AbstractShellCommand;
 import org.onosproject.vtnrsc.DefaultTenantNetwork;
 import org.onosproject.vtnrsc.PhysicalNetwork;
@@ -34,6 +35,7 @@
 /**
  * Supports for updating a TenantNetwork.
  */
+@Service
 @Command(scope = "onos", name = "tenantnetwork-update",
         description = "Supports for updating a TenantNetwork")
 public class TenantNetworkUpdateCommand extends AbstractShellCommand {
diff --git a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/cli/router/RouterCreateCommand.java b/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/cli/router/RouterCreateCommand.java
index b593ffa..4c0aee4 100644
--- a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/cli/router/RouterCreateCommand.java
+++ b/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/cli/router/RouterCreateCommand.java
@@ -22,6 +22,7 @@
 import org.apache.karaf.shell.api.action.Argument;
 import org.apache.karaf.shell.api.action.Command;
 import org.apache.karaf.shell.api.action.Option;
+import org.apache.karaf.shell.api.action.lifecycle.Service;
 import org.onosproject.cli.AbstractShellCommand;
 import org.onosproject.vtnrsc.DefaultRouter;
 import org.onosproject.vtnrsc.Router;
@@ -36,6 +37,7 @@
 /**
  * Supports for create a router.
  */
+@Service
 @Command(scope = "onos", name = "router-create",
         description = "Supports for creating a router")
 public class RouterCreateCommand extends AbstractShellCommand {
diff --git a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/cli/router/RouterQueryCommand.java b/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/cli/router/RouterQueryCommand.java
index 77dbe7a..dc447d6 100644
--- a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/cli/router/RouterQueryCommand.java
+++ b/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/cli/router/RouterQueryCommand.java
@@ -17,6 +17,7 @@
 
 import org.apache.karaf.shell.api.action.Command;
 import org.apache.karaf.shell.api.action.Option;
+import org.apache.karaf.shell.api.action.lifecycle.Service;
 import org.onosproject.cli.AbstractShellCommand;
 import org.onosproject.vtnrsc.Router;
 import org.onosproject.vtnrsc.RouterId;
@@ -25,6 +26,7 @@
 /**
  * Supports for query a list of router.
  */
+@Service
 @Command(scope = "onos", name = "routers", description = "Supports for creating a router")
 public class RouterQueryCommand extends AbstractShellCommand {
     @Option(name = "-i", aliases = "--id", description = "The router identifier",
diff --git a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/cli/router/RouterRemoveCommand.java b/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/cli/router/RouterRemoveCommand.java
index d053239..45d642c 100644
--- a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/cli/router/RouterRemoveCommand.java
+++ b/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/cli/router/RouterRemoveCommand.java
@@ -19,6 +19,7 @@
 
 import org.apache.karaf.shell.api.action.Command;
 import org.apache.karaf.shell.api.action.Option;
+import org.apache.karaf.shell.api.action.lifecycle.Service;
 import org.onosproject.cli.AbstractShellCommand;
 import org.onosproject.vtnrsc.Router;
 import org.onosproject.vtnrsc.RouterId;
@@ -29,6 +30,7 @@
 /**
  * Supports for remove a router.
  */
+@Service
 @Command(scope = "onos", name = "router-remove", description = "Supports for removing a router")
 public class RouterRemoveCommand extends AbstractShellCommand {
     @Option(name = "-i", aliases = "--id", description = "The router identifier",
diff --git a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/cli/router/RouterUpdateCommand.java b/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/cli/router/RouterUpdateCommand.java
index 16f0096..0b2d89f 100644
--- a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/cli/router/RouterUpdateCommand.java
+++ b/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/cli/router/RouterUpdateCommand.java
@@ -22,6 +22,7 @@
 import org.apache.karaf.shell.api.action.Argument;
 import org.apache.karaf.shell.api.action.Command;
 import org.apache.karaf.shell.api.action.Option;
+import org.apache.karaf.shell.api.action.lifecycle.Service;
 import org.onosproject.cli.AbstractShellCommand;
 import org.onosproject.vtnrsc.DefaultRouter;
 import org.onosproject.vtnrsc.Router;
@@ -36,6 +37,7 @@
 /**
  * Supports for update a router.
  */
+@Service
 @Command(scope = "onos", name = "router-update", description = "Supports for updating a router")
 public class RouterUpdateCommand extends AbstractShellCommand {
     @Argument(index = 0, name = "id", description = "The router identifier",
diff --git a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/cli/routerinterface/RouterInterfaceCreateCommand.java b/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/cli/routerinterface/RouterInterfaceCreateCommand.java
index 8c0532c..c8c39cb 100644
--- a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/cli/routerinterface/RouterInterfaceCreateCommand.java
+++ b/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/cli/routerinterface/RouterInterfaceCreateCommand.java
@@ -17,6 +17,7 @@
 
 import org.apache.karaf.shell.api.action.Argument;
 import org.apache.karaf.shell.api.action.Command;
+import org.apache.karaf.shell.api.action.lifecycle.Service;
 import org.onosproject.cli.AbstractShellCommand;
 import org.onosproject.vtnrsc.RouterId;
 import org.onosproject.vtnrsc.RouterInterface;
@@ -28,6 +29,7 @@
 /**
  * Supports for create a router interface.
  */
+@Service
 @Command(scope = "onos", name = "routerinterface-create", description = "Supports for creating a router interface")
 public class RouterInterfaceCreateCommand extends AbstractShellCommand {
     @Argument(index = 0, name = "routerId", description = "The router identifier of router interface",
diff --git a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/cli/routerinterface/RouterInterfaceQueryCommand.java b/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/cli/routerinterface/RouterInterfaceQueryCommand.java
index 733067f..7486c12 100644
--- a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/cli/routerinterface/RouterInterfaceQueryCommand.java
+++ b/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/cli/routerinterface/RouterInterfaceQueryCommand.java
@@ -17,6 +17,7 @@
 
 import org.apache.karaf.shell.api.action.Command;
 import org.apache.karaf.shell.api.action.Option;
+import org.apache.karaf.shell.api.action.lifecycle.Service;
 import org.onosproject.cli.AbstractShellCommand;
 import org.onosproject.vtnrsc.RouterInterface;
 import org.onosproject.vtnrsc.SubnetId;
@@ -25,6 +26,7 @@
 /**
  * Supports for query a router interface.
  */
+@Service
 @Command(scope = "onos", name = "routerinterfaces", description = "Supports for querying a router interface")
 public class RouterInterfaceQueryCommand extends AbstractShellCommand {
     @Option(name = "-s", aliases = "--subnetId", description = "The subnet identifier of router interface",
diff --git a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/cli/routerinterface/RouterInterfaceRemoveCommand.java b/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/cli/routerinterface/RouterInterfaceRemoveCommand.java
index 18f1307..3bfd7d2 100644
--- a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/cli/routerinterface/RouterInterfaceRemoveCommand.java
+++ b/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/cli/routerinterface/RouterInterfaceRemoveCommand.java
@@ -17,6 +17,7 @@
 
 import org.apache.karaf.shell.api.action.Command;
 import org.apache.karaf.shell.api.action.Option;
+import org.apache.karaf.shell.api.action.lifecycle.Service;
 import org.onosproject.cli.AbstractShellCommand;
 import org.onosproject.vtnrsc.RouterInterface;
 import org.onosproject.vtnrsc.SubnetId;
@@ -25,6 +26,7 @@
 /**
  * Supports for remove a router interface.
  */
+@Service
 @Command(scope = "onos", name = "routerinterface-remove", description = "Supports for removing a router interface")
 public class RouterInterfaceRemoveCommand extends AbstractShellCommand {
     @Option(name = "-s", aliases = "--subnetId", description = "The subnet identifier of router interface",
diff --git a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/cli/subnet/SubnetCreateCommand.java b/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/cli/subnet/SubnetCreateCommand.java
index 245865f..8a0a034 100644
--- a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/cli/subnet/SubnetCreateCommand.java
+++ b/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/cli/subnet/SubnetCreateCommand.java
@@ -20,6 +20,7 @@
 import org.apache.karaf.shell.api.action.Argument;
 import org.apache.karaf.shell.api.action.Command;
 import org.apache.karaf.shell.api.action.Option;
+import org.apache.karaf.shell.api.action.lifecycle.Service;
 import org.onlab.packet.IpAddress;
 import org.onlab.packet.IpAddress.Version;
 import org.onlab.packet.IpPrefix;
@@ -39,6 +40,7 @@
 /**
  * Supports for creating a subnet.
  */
+@Service
 @Command(scope = "onos", name = "subnet-create", description = "Supports for creating a subnet")
 public class SubnetCreateCommand extends AbstractShellCommand {
 
diff --git a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/cli/subnet/SubnetQueryCommand.java b/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/cli/subnet/SubnetQueryCommand.java
index 9eed7f0..9cc3269 100644
--- a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/cli/subnet/SubnetQueryCommand.java
+++ b/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/cli/subnet/SubnetQueryCommand.java
@@ -17,6 +17,7 @@
 
 import org.apache.karaf.shell.api.action.Command;
 import org.apache.karaf.shell.api.action.Option;
+import org.apache.karaf.shell.api.action.lifecycle.Service;
 import org.onosproject.cli.AbstractShellCommand;
 import org.onosproject.vtnrsc.Subnet;
 import org.onosproject.vtnrsc.SubnetId;
@@ -25,6 +26,7 @@
 /**
  * Supports for querying a subnet.
  */
+@Service
 @Command(scope = "onos", name = "subnets", description = "Supports for querying a subnet")
 public class SubnetQueryCommand extends AbstractShellCommand {
 
diff --git a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/cli/subnet/SubnetRemoveCommand.java b/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/cli/subnet/SubnetRemoveCommand.java
index 951c477..4955bc9 100644
--- a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/cli/subnet/SubnetRemoveCommand.java
+++ b/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/cli/subnet/SubnetRemoveCommand.java
@@ -19,6 +19,7 @@
 
 import org.apache.karaf.shell.api.action.Argument;
 import org.apache.karaf.shell.api.action.Command;
+import org.apache.karaf.shell.api.action.lifecycle.Service;
 import org.onosproject.cli.AbstractShellCommand;
 import org.onosproject.vtnrsc.SubnetId;
 import org.onosproject.vtnrsc.subnet.SubnetService;
@@ -28,6 +29,7 @@
 /**
  * Supports for removing a subnet.
  */
+@Service
 @Command(scope = "onos", name = "subnet-remove", description = "Supports for removing a subnet")
 public class SubnetRemoveCommand extends AbstractShellCommand {
 
diff --git a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/cli/subnet/SubnetUpdateCommand.java b/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/cli/subnet/SubnetUpdateCommand.java
index 90d57e6..50cfaa2 100644
--- a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/cli/subnet/SubnetUpdateCommand.java
+++ b/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/cli/subnet/SubnetUpdateCommand.java
@@ -20,6 +20,7 @@
 import org.apache.karaf.shell.api.action.Argument;
 import org.apache.karaf.shell.api.action.Command;
 import org.apache.karaf.shell.api.action.Option;
+import org.apache.karaf.shell.api.action.lifecycle.Service;
 import org.onlab.packet.IpAddress;
 import org.onlab.packet.IpAddress.Version;
 import org.onlab.packet.IpPrefix;
@@ -39,6 +40,7 @@
 /**
  * Supports for updating a subnet.
  */
+@Service
 @Command(scope = "onos", name = "subnet-update", description = "Supports for updating a subnet")
 public class SubnetUpdateCommand extends AbstractShellCommand {
 
diff --git a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/cli/virtualport/VirtualPortCreateCommand.java b/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/cli/virtualport/VirtualPortCreateCommand.java
index 9163895..4bf53ff 100644
--- a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/cli/virtualport/VirtualPortCreateCommand.java
+++ b/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/cli/virtualport/VirtualPortCreateCommand.java
@@ -21,6 +21,7 @@
 import org.apache.karaf.shell.api.action.Argument;
 import org.apache.karaf.shell.api.action.Command;
 import org.apache.karaf.shell.api.action.Option;
+import org.apache.karaf.shell.api.action.lifecycle.Service;
 import org.onlab.packet.MacAddress;
 import org.onosproject.cli.AbstractShellCommand;
 import org.onosproject.net.DeviceId;
@@ -41,6 +42,7 @@
 /**
  * Supports for creating a virtualPort.
  */
+@Service
 @Command(scope = "onos", name = "virtualport-create",
         description = "Supports for creating a virtualPort.")
 public class VirtualPortCreateCommand extends AbstractShellCommand {
diff --git a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/cli/virtualport/VirtualPortExGwUpdateCommand.java b/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/cli/virtualport/VirtualPortExGwUpdateCommand.java
index 3f9a2f9..113fd44 100644
--- a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/cli/virtualport/VirtualPortExGwUpdateCommand.java
+++ b/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/cli/virtualport/VirtualPortExGwUpdateCommand.java
@@ -20,6 +20,7 @@
 
 import org.apache.karaf.shell.api.action.Command;
 import org.apache.karaf.shell.api.action.Option;
+import org.apache.karaf.shell.api.action.lifecycle.Service;
 import org.onlab.packet.IpAddress;
 import org.onlab.packet.MacAddress;
 import org.onosproject.cli.AbstractShellCommand;
@@ -41,6 +42,7 @@
 /**
  * Supports for updating the external gateway virtualPort.
  */
+@Service
 @Command(scope = "onos", name = "externalgateway-update",
         description = "Supports for updating the external gateway virtualPort.")
 public class VirtualPortExGwUpdateCommand extends AbstractShellCommand {
diff --git a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/cli/virtualport/VirtualPortQueryCommand.java b/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/cli/virtualport/VirtualPortQueryCommand.java
index e60b843..520a33a 100644
--- a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/cli/virtualport/VirtualPortQueryCommand.java
+++ b/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/cli/virtualport/VirtualPortQueryCommand.java
@@ -19,6 +19,7 @@
 
 import org.apache.karaf.shell.api.action.Command;
 import org.apache.karaf.shell.api.action.Option;
+import org.apache.karaf.shell.api.action.lifecycle.Service;
 import org.onosproject.cli.AbstractShellCommand;
 import org.onosproject.net.DeviceId;
 import org.onosproject.vtnrsc.TenantNetworkId;
@@ -29,6 +30,7 @@
 /**
  * Supports for querying virtualPorts.
  */
+@Service
 @Command(scope = "onos", name = "virtualports", description = "Supports for querying virtualPorts.")
 public class VirtualPortQueryCommand extends AbstractShellCommand {
 
diff --git a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/cli/virtualport/VirtualPortRemoveCommand.java b/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/cli/virtualport/VirtualPortRemoveCommand.java
index c71b2a9..4984099 100644
--- a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/cli/virtualport/VirtualPortRemoveCommand.java
+++ b/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/cli/virtualport/VirtualPortRemoveCommand.java
@@ -19,6 +19,7 @@
 
 import org.apache.karaf.shell.api.action.Argument;
 import org.apache.karaf.shell.api.action.Command;
+import org.apache.karaf.shell.api.action.lifecycle.Service;
 import org.onosproject.cli.AbstractShellCommand;
 import org.onosproject.vtnrsc.VirtualPortId;
 import org.onosproject.vtnrsc.virtualport.VirtualPortService;
@@ -28,6 +29,7 @@
 /**
  * Supports for removing a virtualPort.
  */
+@Service
 @Command(scope = "onos", name = "virtualport-remove",
         description = "Supports for removing a virtualPort.")
 public class VirtualPortRemoveCommand extends AbstractShellCommand {
diff --git a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/cli/virtualport/VirtualPortUpdateCommand.java b/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/cli/virtualport/VirtualPortUpdateCommand.java
index 1eb1372..6cd7791 100644
--- a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/cli/virtualport/VirtualPortUpdateCommand.java
+++ b/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/cli/virtualport/VirtualPortUpdateCommand.java
@@ -21,6 +21,7 @@
 import org.apache.karaf.shell.api.action.Argument;
 import org.apache.karaf.shell.api.action.Command;
 import org.apache.karaf.shell.api.action.Option;
+import org.apache.karaf.shell.api.action.lifecycle.Service;
 import org.onlab.packet.MacAddress;
 import org.onosproject.cli.AbstractShellCommand;
 import org.onosproject.net.DeviceId;
@@ -41,6 +42,7 @@
 /**
  * Supports for updating a virtualPort.
  */
+@Service
 @Command(scope = "onos", name = "virtualport-update",
         description = "Supports for updating a virtualPort.")
 public class VirtualPortUpdateCommand extends AbstractShellCommand {
diff --git a/apps/yang/src/main/java/org/onosproject/yang/impl/YangCompileCommand.java b/apps/yang/src/main/java/org/onosproject/yang/impl/YangCompileCommand.java
index 9b82399..a366073 100644
--- a/apps/yang/src/main/java/org/onosproject/yang/impl/YangCompileCommand.java
+++ b/apps/yang/src/main/java/org/onosproject/yang/impl/YangCompileCommand.java
@@ -19,6 +19,7 @@
 import org.apache.karaf.shell.api.action.Argument;
 import org.apache.karaf.shell.api.action.Command;
 import org.apache.karaf.shell.api.action.Option;
+import org.apache.karaf.shell.api.action.lifecycle.Service;
 import org.onosproject.app.ApplicationAdminService;
 import org.onosproject.cli.AbstractShellCommand;
 import org.onosproject.core.ApplicationId;
@@ -31,6 +32,7 @@
 /**
  * Compiles the provided YANG source files and installs the resulting model extension.
  */
+@Service
 @Command(scope = "onos", name = "compile-model",
         description = "Compiles the provided YANG source files and installs the resulting model extension")
 public class YangCompileCommand extends AbstractShellCommand {
diff --git a/apps/yang/src/main/java/org/onosproject/yang/impl/YangModelsListCommand.java b/apps/yang/src/main/java/org/onosproject/yang/impl/YangModelsListCommand.java
index e102af4..d75b999 100644
--- a/apps/yang/src/main/java/org/onosproject/yang/impl/YangModelsListCommand.java
+++ b/apps/yang/src/main/java/org/onosproject/yang/impl/YangModelsListCommand.java
@@ -20,6 +20,7 @@
 import com.fasterxml.jackson.databind.node.ArrayNode;
 import com.fasterxml.jackson.databind.node.ObjectNode;
 import org.apache.karaf.shell.api.action.Command;
+import org.apache.karaf.shell.api.action.lifecycle.Service;
 import org.onosproject.cli.AbstractShellCommand;
 import org.onosproject.yang.model.YangModel;
 import org.onosproject.yang.model.YangModule;
@@ -28,6 +29,7 @@
 /**
  * Lists registered YANG models.
  */
+@Service
 @Command(scope = "onos", name = "models",
         description = "Lists registered YANG models")
 public class YangModelsListCommand extends AbstractShellCommand {
diff --git a/protocols/netconf/ctl/src/main/java/org/onosproject/netconf/cli/impl/NetconfGetCommand.java b/protocols/netconf/ctl/src/main/java/org/onosproject/netconf/cli/impl/NetconfGetCommand.java
index 027a047..ba6f2f8 100644
--- a/protocols/netconf/ctl/src/main/java/org/onosproject/netconf/cli/impl/NetconfGetCommand.java
+++ b/protocols/netconf/ctl/src/main/java/org/onosproject/netconf/cli/impl/NetconfGetCommand.java
@@ -23,6 +23,7 @@
 import org.apache.karaf.shell.api.action.Argument;
 import org.apache.karaf.shell.api.action.Command;
 import org.apache.karaf.shell.api.action.Option;
+import org.apache.karaf.shell.api.action.lifecycle.Service;
 import org.onosproject.cli.AbstractShellCommand;
 import org.onosproject.net.DeviceId;
 import org.onosproject.netconf.NetconfController;
@@ -34,6 +35,7 @@
  * Command that retrieves running configuration and device state.
  * If configuration cannot be retrieved it prints an error string.
  */
+@Service
 @Command(scope = "onos", name = "netconf-get",
         description = "Retrieve running configuration and "
                 + "device state information from specified device.")
diff --git a/protocols/netconf/ctl/src/main/java/org/onosproject/netconf/cli/impl/NetconfGetConfigCommand.java b/protocols/netconf/ctl/src/main/java/org/onosproject/netconf/cli/impl/NetconfGetConfigCommand.java
index 4369052..58057ab 100644
--- a/protocols/netconf/ctl/src/main/java/org/onosproject/netconf/cli/impl/NetconfGetConfigCommand.java
+++ b/protocols/netconf/ctl/src/main/java/org/onosproject/netconf/cli/impl/NetconfGetConfigCommand.java
@@ -25,6 +25,7 @@
 import org.apache.karaf.shell.api.action.Argument;
 import org.apache.karaf.shell.api.action.Command;
 import org.apache.karaf.shell.api.action.Option;
+import org.apache.karaf.shell.api.action.lifecycle.Service;
 import org.onosproject.cli.AbstractShellCommand;
 import org.onosproject.net.DeviceId;
 import org.onosproject.netconf.NetconfController;
@@ -36,6 +37,7 @@
  * Command that gets the configuration of the specified type from the specified
  * device. If configuration cannot be retrieved it prints an error string.
  */
+@Service
 @Command(scope = "onos", name = "netconf-get-config",
         description = "Gets the configuration of the specified type from the" +
                 "specified device.")
diff --git a/protocols/netconf/ctl/src/main/java/org/onosproject/netconf/cli/impl/NetconfRpcTestCommand.java b/protocols/netconf/ctl/src/main/java/org/onosproject/netconf/cli/impl/NetconfRpcTestCommand.java
index 385bd7f..1cc4b5f 100644
--- a/protocols/netconf/ctl/src/main/java/org/onosproject/netconf/cli/impl/NetconfRpcTestCommand.java
+++ b/protocols/netconf/ctl/src/main/java/org/onosproject/netconf/cli/impl/NetconfRpcTestCommand.java
@@ -17,6 +17,7 @@
 
 import org.apache.karaf.shell.api.action.Argument;
 import org.apache.karaf.shell.api.action.Command;
+import org.apache.karaf.shell.api.action.lifecycle.Service;
 import org.onosproject.cli.AbstractShellCommand;
 import org.onosproject.net.DeviceId;
 import org.onosproject.net.behaviour.ConfigSetter;
@@ -35,7 +36,7 @@
 //Temporary Developer tool, NOT TO BE USED in production or as example for
 // future commands.
 //FIXME Remove dependency to ConfigSetter.
-
+@Service
 @Command(scope = "onos", name = "netconf-rpc-test",
         description = "Debug tool to send NETCONF RPC request")
 public class NetconfRpcTestCommand extends AbstractShellCommand {
diff --git a/protocols/netconf/ctl/src/main/java/org/onosproject/netconf/cli/impl/NetconfSubscriptionTestCommand.java b/protocols/netconf/ctl/src/main/java/org/onosproject/netconf/cli/impl/NetconfSubscriptionTestCommand.java
index d561ca6..de58fa5 100644
--- a/protocols/netconf/ctl/src/main/java/org/onosproject/netconf/cli/impl/NetconfSubscriptionTestCommand.java
+++ b/protocols/netconf/ctl/src/main/java/org/onosproject/netconf/cli/impl/NetconfSubscriptionTestCommand.java
@@ -18,6 +18,7 @@
 import org.apache.karaf.shell.api.action.Argument;
 import org.apache.karaf.shell.api.action.Command;
 import org.apache.karaf.shell.api.action.Option;
+import org.apache.karaf.shell.api.action.lifecycle.Service;
 import org.onosproject.cli.AbstractShellCommand;
 import org.onosproject.cli.net.DeviceIdCompleter;
 import org.onosproject.net.DeviceId;
@@ -28,6 +29,7 @@
 /**
  * Debug command to start subscription on specified device.
  */
+@Service
 @Command(scope = "onos", name = "netconf-subscription-test",
          description = "Debug command to start subscription on specified device")
 public class NetconfSubscriptionTestCommand extends AbstractShellCommand {
diff --git a/providers/bgp/cli/src/main/java/org/onosproject/bgp/cli/BgpConfiguration.java b/providers/bgp/cli/src/main/java/org/onosproject/bgp/cli/BgpConfiguration.java
index 2608076..3123001 100644
--- a/providers/bgp/cli/src/main/java/org/onosproject/bgp/cli/BgpConfiguration.java
+++ b/providers/bgp/cli/src/main/java/org/onosproject/bgp/cli/BgpConfiguration.java
@@ -17,6 +17,7 @@
 
 import org.apache.karaf.shell.api.action.Argument;
 import org.apache.karaf.shell.api.action.Command;
+import org.apache.karaf.shell.api.action.lifecycle.Service;
 import org.onosproject.bgp.controller.BgpCfg;
 import org.onosproject.bgp.controller.BgpConnectPeer;
 import org.onosproject.bgp.controller.BgpController;
@@ -28,7 +29,7 @@
 import java.util.Set;
 import java.util.TreeMap;
 
-
+@Service
 @Command(scope = "onos", name = "bgp", description = "lists configuration")
 public class BgpConfiguration extends AbstractShellCommand {
     private static final Logger log = LoggerFactory.getLogger(BgpConfiguration.class);
diff --git a/providers/bgp/cli/src/main/java/org/onosproject/bgp/cli/BgpExceptions.java b/providers/bgp/cli/src/main/java/org/onosproject/bgp/cli/BgpExceptions.java
index 742ce92..d4e14f8 100644
--- a/providers/bgp/cli/src/main/java/org/onosproject/bgp/cli/BgpExceptions.java
+++ b/providers/bgp/cli/src/main/java/org/onosproject/bgp/cli/BgpExceptions.java
@@ -17,6 +17,7 @@
 
 import org.apache.karaf.shell.api.action.Argument;
 import org.apache.karaf.shell.api.action.Command;
+import org.apache.karaf.shell.api.action.lifecycle.Service;
 import org.onosproject.bgp.controller.BgpController;
 import org.onosproject.cli.AbstractShellCommand;
 import org.slf4j.Logger;
@@ -26,7 +27,7 @@
 import java.util.Map;
 import java.util.Set;
 
-
+@Service
 @Command(scope = "onos", name = "bgp-exception", description = "Displays Exceptions")
 public class BgpExceptions extends AbstractShellCommand {
     public static final String ACTIVESESSION = "activesession";
diff --git a/providers/bgp/cli/src/main/java/org/onosproject/bgp/cli/BgpLocalRibDisplay.java b/providers/bgp/cli/src/main/java/org/onosproject/bgp/cli/BgpLocalRibDisplay.java
index 4eb7e41..6620865 100644
--- a/providers/bgp/cli/src/main/java/org/onosproject/bgp/cli/BgpLocalRibDisplay.java
+++ b/providers/bgp/cli/src/main/java/org/onosproject/bgp/cli/BgpLocalRibDisplay.java
@@ -17,6 +17,7 @@
 
 import org.apache.karaf.shell.api.action.Argument;
 import org.apache.karaf.shell.api.action.Command;
+import org.apache.karaf.shell.api.action.lifecycle.Service;
 import org.onosproject.bgp.controller.BgpController;
 import org.onosproject.bgp.controller.BgpLocalRib;
 import org.onosproject.bgpio.protocol.BgpLSNlri;
@@ -54,7 +55,7 @@
 import java.util.Arrays;
 
 
-
+@Service
 @Command(scope = "onos", name = "bgp-rib", description = "lists RIB configuration")
 public class BgpLocalRibDisplay extends AbstractShellCommand {
     private static final Logger log = LoggerFactory.getLogger(BgpLocalRibDisplay.class);
diff --git a/providers/isis/cli/src/main/java/org/onosproject/isis/cli/ApplicationIsisCommand.java b/providers/isis/cli/src/main/java/org/onosproject/isis/cli/ApplicationIsisCommand.java
index 437f0af..f15555c 100644
--- a/providers/isis/cli/src/main/java/org/onosproject/isis/cli/ApplicationIsisCommand.java
+++ b/providers/isis/cli/src/main/java/org/onosproject/isis/cli/ApplicationIsisCommand.java
@@ -15,6 +15,7 @@
  */
 package org.onosproject.isis.cli;
 
+import org.apache.karaf.shell.api.action.lifecycle.Service;
 import org.osgi.service.component.annotations.Activate;
 import org.osgi.service.component.annotations.Deactivate;
 import org.apache.karaf.shell.api.action.Argument;
@@ -43,6 +44,7 @@
 /**
  * Lists ISIS neighbors, database and interfaces details.
  */
+@Service
 @Command(scope = "onos", name = "isis", description = "lists database, neighbors and interfaces")
 public class ApplicationIsisCommand extends AbstractShellCommand {
     private static final Logger log = LoggerFactory.getLogger(ApplicationIsisCommand.class);
diff --git a/providers/lldp/src/main/java/org/onosproject/provider/lldp/cli/ConfigLinkDiscoveryCommand.java b/providers/lldp/src/main/java/org/onosproject/provider/lldp/cli/ConfigLinkDiscoveryCommand.java
index 1fee3d8..394a4c9 100644
--- a/providers/lldp/src/main/java/org/onosproject/provider/lldp/cli/ConfigLinkDiscoveryCommand.java
+++ b/providers/lldp/src/main/java/org/onosproject/provider/lldp/cli/ConfigLinkDiscoveryCommand.java
@@ -20,6 +20,7 @@
 import org.apache.karaf.shell.api.action.Argument;
 import org.apache.karaf.shell.api.action.Command;
 import org.apache.karaf.shell.api.action.Option;
+import org.apache.karaf.shell.api.action.lifecycle.Service;
 import org.onosproject.cli.AbstractShellCommand;
 import org.onosproject.cli.net.DeviceIdCompleter;
 import org.onosproject.cli.net.PortNumberCompleter;
@@ -34,6 +35,7 @@
 /**
  *
  */
+@Service
 @Command(scope = "onos", name = "config-link-discovery",
          description = "Adds configuration to disable LLDP link discovery")
 public class ConfigLinkDiscoveryCommand extends AbstractShellCommand {
diff --git a/providers/null/src/main/java/org/onosproject/provider/nil/cli/CreateNullDevice.java b/providers/null/src/main/java/org/onosproject/provider/nil/cli/CreateNullDevice.java
index 809d90d..bbe1e131 100644
--- a/providers/null/src/main/java/org/onosproject/provider/nil/cli/CreateNullDevice.java
+++ b/providers/null/src/main/java/org/onosproject/provider/nil/cli/CreateNullDevice.java
@@ -17,6 +17,7 @@
 
 import org.apache.karaf.shell.api.action.Argument;
 import org.apache.karaf.shell.api.action.Command;
+import org.apache.karaf.shell.api.action.lifecycle.Service;
 import org.onlab.util.Tools;
 import org.onosproject.net.Device;
 import org.onosproject.net.DeviceId;
@@ -29,6 +30,7 @@
 /**
  * Adds a simulated device to the custom topology simulation.
  */
+@Service
 @Command(scope = "onos", name = "null-create-device",
         description = "Adds a simulated device to the custom topology simulation")
 public class CreateNullDevice extends CreateNullEntity {
diff --git a/providers/null/src/main/java/org/onosproject/provider/nil/cli/CreateNullEntity.java b/providers/null/src/main/java/org/onosproject/provider/nil/cli/CreateNullEntity.java
index a9efa78..237c79d 100644
--- a/providers/null/src/main/java/org/onosproject/provider/nil/cli/CreateNullEntity.java
+++ b/providers/null/src/main/java/org/onosproject/provider/nil/cli/CreateNullEntity.java
@@ -17,6 +17,7 @@
 
 import com.google.common.collect.ImmutableList;
 import com.google.common.primitives.Longs;
+import org.apache.karaf.shell.api.action.lifecycle.Service;
 import org.onlab.util.Tools;
 import org.onosproject.cli.AbstractShellCommand;
 import org.onosproject.net.ConnectPoint;
@@ -33,6 +34,7 @@
 /**
  * Base command for adding simulated entities to the custom topology simulation.
  */
+@Service
 public abstract class CreateNullEntity extends AbstractShellCommand {
 
     protected static final String GEO = "geo";
diff --git a/providers/null/src/main/java/org/onosproject/provider/nil/cli/CreateNullHost.java b/providers/null/src/main/java/org/onosproject/provider/nil/cli/CreateNullHost.java
index 682496b..2eb3fe3 100644
--- a/providers/null/src/main/java/org/onosproject/provider/nil/cli/CreateNullHost.java
+++ b/providers/null/src/main/java/org/onosproject/provider/nil/cli/CreateNullHost.java
@@ -19,6 +19,7 @@
 import com.google.common.collect.ImmutableSet;
 import org.apache.karaf.shell.api.action.Argument;
 import org.apache.karaf.shell.api.action.Command;
+import org.apache.karaf.shell.api.action.lifecycle.Service;
 import org.onlab.packet.IpAddress;
 import org.onlab.util.Tools;
 import org.onosproject.net.ConnectPoint;
@@ -38,6 +39,7 @@
 /**
  * Adds a simulated end-station host to the custom topology simulation.
  */
+@Service
 @Command(scope = "onos", name = "null-create-host",
         description = "Adds a simulated end-station host to the custom topology simulation")
 public class CreateNullHost extends CreateNullEntity {
diff --git a/providers/null/src/main/java/org/onosproject/provider/nil/cli/CreateNullHosts.java b/providers/null/src/main/java/org/onosproject/provider/nil/cli/CreateNullHosts.java
index b8618e0..cf769fd 100644
--- a/providers/null/src/main/java/org/onosproject/provider/nil/cli/CreateNullHosts.java
+++ b/providers/null/src/main/java/org/onosproject/provider/nil/cli/CreateNullHosts.java
@@ -18,6 +18,7 @@
 
 import org.apache.karaf.shell.api.action.Argument;
 import org.apache.karaf.shell.api.action.Command;
+import org.apache.karaf.shell.api.action.lifecycle.Service;
 import org.onlab.packet.IpAddress;
 import org.onlab.util.Tools;
 import org.onosproject.net.ConnectPoint;
@@ -34,6 +35,7 @@
 /**
  * Adds a simulated end-station host to the custom topology simulation.
  */
+@Service
 @Command(scope = "onos", name = "null-create-hosts",
         description = "Adds a simulated end-station host to the custom topology simulation")
 public class CreateNullHosts extends CreateNullEntity {
diff --git a/providers/null/src/main/java/org/onosproject/provider/nil/cli/CreateNullLink.java b/providers/null/src/main/java/org/onosproject/provider/nil/cli/CreateNullLink.java
index f0bac10..5063e12 100644
--- a/providers/null/src/main/java/org/onosproject/provider/nil/cli/CreateNullLink.java
+++ b/providers/null/src/main/java/org/onosproject/provider/nil/cli/CreateNullLink.java
@@ -19,6 +19,7 @@
 import org.apache.karaf.shell.api.action.Argument;
 import org.apache.karaf.shell.api.action.Command;
 import org.apache.karaf.shell.api.action.Option;
+import org.apache.karaf.shell.api.action.lifecycle.Service;
 import org.onosproject.net.ConnectPoint;
 import org.onosproject.net.Link;
 import org.onosproject.provider.nil.CustomTopologySimulator;
@@ -28,6 +29,7 @@
 /**
  * Adds a simulated link to the custom topology simulation.
  */
+@Service
 @Command(scope = "onos", name = "null-create-link",
         description = "Adds a simulated link to the custom topology simulation")
 public class CreateNullLink extends CreateNullEntity {
diff --git a/providers/null/src/main/java/org/onosproject/provider/nil/cli/NullControlCommand.java b/providers/null/src/main/java/org/onosproject/provider/nil/cli/NullControlCommand.java
index c901a6a..9ebcf4b 100644
--- a/providers/null/src/main/java/org/onosproject/provider/nil/cli/NullControlCommand.java
+++ b/providers/null/src/main/java/org/onosproject/provider/nil/cli/NullControlCommand.java
@@ -17,6 +17,7 @@
 
 import org.apache.karaf.shell.api.action.Argument;
 import org.apache.karaf.shell.api.action.Command;
+import org.apache.karaf.shell.api.action.lifecycle.Service;
 import org.onosproject.cfg.ComponentConfigService;
 import org.onosproject.cli.AbstractShellCommand;
 import org.onosproject.provider.nil.NullProviders;
@@ -27,6 +28,7 @@
 /**
  * Starts or stops topology simulation.
  */
+@Service
 @Command(scope = "onos", name = "null-simulation",
         description = "Starts or stops topology simulation")
 public class NullControlCommand extends AbstractShellCommand {
diff --git a/providers/null/src/main/java/org/onosproject/provider/nil/cli/NullDeviceCommand.java b/providers/null/src/main/java/org/onosproject/provider/nil/cli/NullDeviceCommand.java
index 6f88be8..69557f5 100644
--- a/providers/null/src/main/java/org/onosproject/provider/nil/cli/NullDeviceCommand.java
+++ b/providers/null/src/main/java/org/onosproject/provider/nil/cli/NullDeviceCommand.java
@@ -17,6 +17,7 @@
 
 import org.apache.karaf.shell.api.action.Argument;
 import org.apache.karaf.shell.api.action.Command;
+import org.apache.karaf.shell.api.action.lifecycle.Service;
 import org.onosproject.cli.AbstractShellCommand;
 import org.onosproject.net.DeviceId;
 import org.onosproject.provider.nil.NullProviders;
@@ -27,6 +28,7 @@
 /**
  * Downs or repairs a simulated device.
  */
+@Service
 @Command(scope = "onos", name = "null-device",
         description = "Downs or repairs a simulated device")
 public class NullDeviceCommand extends AbstractShellCommand {
diff --git a/providers/null/src/main/java/org/onosproject/provider/nil/cli/NullLinkCommand.java b/providers/null/src/main/java/org/onosproject/provider/nil/cli/NullLinkCommand.java
index 8d3314d9..263bf5a 100644
--- a/providers/null/src/main/java/org/onosproject/provider/nil/cli/NullLinkCommand.java
+++ b/providers/null/src/main/java/org/onosproject/provider/nil/cli/NullLinkCommand.java
@@ -17,6 +17,7 @@
 
 import org.apache.karaf.shell.api.action.Argument;
 import org.apache.karaf.shell.api.action.Command;
+import org.apache.karaf.shell.api.action.lifecycle.Service;
 import org.onosproject.cli.AbstractShellCommand;
 import org.onosproject.net.ConnectPoint;
 import org.onosproject.provider.nil.NullProviders;
@@ -27,6 +28,7 @@
 /**
  * Severs or repairs a simulated link.
  */
+@Service
 @Command(scope = "onos", name = "null-link",
         description = "Severs or repairs a simulated link")
 public class NullLinkCommand extends AbstractShellCommand {
diff --git a/providers/null/src/main/java/org/onosproject/provider/nil/cli/TopologyShapeCompleter.java b/providers/null/src/main/java/org/onosproject/provider/nil/cli/TopologyShapeCompleter.java
index 52a78cb1..dec1467 100644
--- a/providers/null/src/main/java/org/onosproject/provider/nil/cli/TopologyShapeCompleter.java
+++ b/providers/null/src/main/java/org/onosproject/provider/nil/cli/TopologyShapeCompleter.java
@@ -16,6 +16,7 @@
 package org.onosproject.provider.nil.cli;
 
 import com.google.common.collect.ImmutableList;
+import org.apache.karaf.shell.api.action.lifecycle.Service;
 import org.onosproject.cli.AbstractChoicesCompleter;
 
 import java.util.List;
@@ -23,6 +24,7 @@
 /**
  * Topology shape completer.
  */
+@Service
 public class TopologyShapeCompleter extends AbstractChoicesCompleter {
     @Override
     public List<String> choices() {
diff --git a/providers/ospf/cli/src/main/java/org/onosproject/ospf/cli/ApplicationOspfCommand.java b/providers/ospf/cli/src/main/java/org/onosproject/ospf/cli/ApplicationOspfCommand.java
index a625d55..15cfa9b 100644
--- a/providers/ospf/cli/src/main/java/org/onosproject/ospf/cli/ApplicationOspfCommand.java
+++ b/providers/ospf/cli/src/main/java/org/onosproject/ospf/cli/ApplicationOspfCommand.java
@@ -15,6 +15,7 @@
 */
 package org.onosproject.ospf.cli;
 
+import org.apache.karaf.shell.api.action.lifecycle.Service;
 import org.osgi.service.component.annotations.Activate;
 import org.osgi.service.component.annotations.Component;
 import org.osgi.service.component.annotations.Deactivate;
@@ -39,6 +40,7 @@
 /**
  * Representation of OSPF cli commands.
  */
+@Service
 @Component(immediate = true)
 @Command(scope = "onos", name = "ospf", description = "list database")
 public class ApplicationOspfCommand extends AbstractShellCommand {
diff --git a/providers/pcep/cli/src/main/java/org/onosproject/pcep/cli/PcepSessionCommand.java b/providers/pcep/cli/src/main/java/org/onosproject/pcep/cli/PcepSessionCommand.java
index e1fc2a5..68315e3 100644
--- a/providers/pcep/cli/src/main/java/org/onosproject/pcep/cli/PcepSessionCommand.java
+++ b/providers/pcep/cli/src/main/java/org/onosproject/pcep/cli/PcepSessionCommand.java
@@ -18,6 +18,7 @@
 
 import org.apache.karaf.shell.api.action.Argument;
 import org.apache.karaf.shell.api.action.Command;
+import org.apache.karaf.shell.api.action.lifecycle.Service;
 import org.onosproject.cli.AbstractShellCommand;
 import org.onosproject.pcep.server.PcepClientController;
 import org.onosproject.pcep.server.PcepErrorDetail;
@@ -31,7 +32,7 @@
 import java.util.ArrayList;
 import java.util.TreeMap;
 
-
+@Service
 @Command(scope = "onos", name = "pcep", description = "Pcep Session Info")
 public class PcepSessionCommand extends AbstractShellCommand {
     private static final Logger log = LoggerFactory.getLogger(PcepSessionCommand.class);
diff --git a/tools/package/archetypes/cli/src/main/resources/archetype-resources/src/main/java/AppCommand.java b/tools/package/archetypes/cli/src/main/resources/archetype-resources/src/main/java/AppCommand.java
index 23d2c84..b9ac3ec 100644
--- a/tools/package/archetypes/cli/src/main/resources/archetype-resources/src/main/java/AppCommand.java
+++ b/tools/package/archetypes/cli/src/main/resources/archetype-resources/src/main/java/AppCommand.java
@@ -16,11 +16,13 @@
 package ${package};
 
 import org.apache.karaf.shell.api.action.Command;
+import org.apache.karaf.shell.api.action.lifecycle.Service;
 import org.onosproject.cli.AbstractShellCommand;
 
 /**
  * Sample Apache Karaf CLI command
  */
+@Service
 @Command(scope = "onos", name = "sample",
          description = "Sample Apache Karaf CLI command")
 public class AppCommand extends AbstractShellCommand {
diff --git a/tools/package/etc/org.apache.karaf.features.cfg b/tools/package/etc/org.apache.karaf.features.cfg
index d986a57..9578400 100644
--- a/tools/package/etc/org.apache.karaf.features.cfg
+++ b/tools/package/etc/org.apache.karaf.features.cfg
@@ -55,8 +55,8 @@
     war/4.2.1, \
     onos-api, \
     onos-core, \
-    onos-incubator
-    #onos-cli,
+    onos-incubator, \
+    onos-cli,
     #onos-gui,
     #onos-rest
 
diff --git a/web/gui/src/main/java/org/onosproject/ui/impl/cli/UiPreferencesListCommand.java b/web/gui/src/main/java/org/onosproject/ui/impl/cli/UiPreferencesListCommand.java
index eea1348..bd26ea7 100644
--- a/web/gui/src/main/java/org/onosproject/ui/impl/cli/UiPreferencesListCommand.java
+++ b/web/gui/src/main/java/org/onosproject/ui/impl/cli/UiPreferencesListCommand.java
@@ -18,12 +18,14 @@
 import com.fasterxml.jackson.databind.ObjectMapper;
 import com.fasterxml.jackson.databind.node.ObjectNode;
 import org.apache.karaf.shell.api.action.Command;
+import org.apache.karaf.shell.api.action.lifecycle.Service;
 import org.onosproject.cli.AbstractShellCommand;
 import org.onosproject.ui.UiPreferencesService;
 
 /**
  * Lists all UI user preferences.
  */
+@Service
 @Command(scope = "onos", name = "ui-prefs",
         description = "Lists all UI user preferences")
 public class UiPreferencesListCommand extends AbstractShellCommand {
diff --git a/web/gui/src/main/java/org/onosproject/ui/impl/cli/UiViewListCommand.java b/web/gui/src/main/java/org/onosproject/ui/impl/cli/UiViewListCommand.java
index b72210c..cb0007d 100644
--- a/web/gui/src/main/java/org/onosproject/ui/impl/cli/UiViewListCommand.java
+++ b/web/gui/src/main/java/org/onosproject/ui/impl/cli/UiViewListCommand.java
@@ -19,6 +19,7 @@
 import com.fasterxml.jackson.databind.ObjectMapper;
 import com.fasterxml.jackson.databind.node.ArrayNode;
 import org.apache.karaf.shell.api.action.Command;
+import org.apache.karaf.shell.api.action.lifecycle.Service;
 import org.onosproject.cli.AbstractShellCommand;
 import org.onosproject.ui.UiExtension;
 import org.onosproject.ui.UiExtensionService;
@@ -28,6 +29,7 @@
 /**
  * Lists all registered UI views.
  */
+@Service
 @Command(scope = "onos", name = "ui-views",
         description = "Lists all registered UI views")
 public class UiViewListCommand extends AbstractShellCommand {
diff --git a/web/gui/src/main/java/org/onosproject/ui/impl/topo/cli/UiCacheDevicesCommand.java b/web/gui/src/main/java/org/onosproject/ui/impl/topo/cli/UiCacheDevicesCommand.java
index 138a979..a2244e8 100644
--- a/web/gui/src/main/java/org/onosproject/ui/impl/topo/cli/UiCacheDevicesCommand.java
+++ b/web/gui/src/main/java/org/onosproject/ui/impl/topo/cli/UiCacheDevicesCommand.java
@@ -17,11 +17,13 @@
 package org.onosproject.ui.impl.topo.cli;
 
 import org.apache.karaf.shell.api.action.Command;
+import org.apache.karaf.shell.api.action.lifecycle.Service;
 import org.onosproject.ui.impl.topo.model.UiSharedTopologyModel;
 
 /**
  * CLI command to list the UiDevices stored in the ModelCache.
  */
+@Service
 @Command(scope = "onos", name = "ui-cache-devices",
         description = "Lists UiDevices in the Model Cache")
 public class UiCacheDevicesCommand extends AbstractUiCacheElementCommand {
diff --git a/web/gui/src/main/java/org/onosproject/ui/impl/topo/cli/UiCacheHostsCommand.java b/web/gui/src/main/java/org/onosproject/ui/impl/topo/cli/UiCacheHostsCommand.java
index 99a0360..ffb203c 100644
--- a/web/gui/src/main/java/org/onosproject/ui/impl/topo/cli/UiCacheHostsCommand.java
+++ b/web/gui/src/main/java/org/onosproject/ui/impl/topo/cli/UiCacheHostsCommand.java
@@ -17,11 +17,13 @@
 package org.onosproject.ui.impl.topo.cli;
 
 import org.apache.karaf.shell.api.action.Command;
+import org.apache.karaf.shell.api.action.lifecycle.Service;
 import org.onosproject.ui.impl.topo.model.UiSharedTopologyModel;
 
 /**
  * CLI command to list the UiH0osts stored in the ModelCache.
  */
+@Service
 @Command(scope = "onos", name = "ui-cache-hosts",
         description = "Lists UiHosts in the Model Cache")
 public class UiCacheHostsCommand extends AbstractUiCacheElementCommand {
diff --git a/web/gui/src/main/java/org/onosproject/ui/impl/topo/cli/UiCacheLinksCommand.java b/web/gui/src/main/java/org/onosproject/ui/impl/topo/cli/UiCacheLinksCommand.java
index 929da23..14b8659 100644
--- a/web/gui/src/main/java/org/onosproject/ui/impl/topo/cli/UiCacheLinksCommand.java
+++ b/web/gui/src/main/java/org/onosproject/ui/impl/topo/cli/UiCacheLinksCommand.java
@@ -17,11 +17,13 @@
 package org.onosproject.ui.impl.topo.cli;
 
 import org.apache.karaf.shell.api.action.Command;
+import org.apache.karaf.shell.api.action.lifecycle.Service;
 import org.onosproject.ui.impl.topo.model.UiSharedTopologyModel;
 
 /**
  * CLI command to list the UiLinks stored in the ModelCache.
  */
+@Service
 @Command(scope = "onos", name = "ui-cache-links",
         description = "Lists UiLinks in the Model Cache")
 public class UiCacheLinksCommand extends AbstractUiCacheElementCommand {
diff --git a/web/gui/src/main/java/org/onosproject/ui/impl/topo/cli/UiCacheMembersCommand.java b/web/gui/src/main/java/org/onosproject/ui/impl/topo/cli/UiCacheMembersCommand.java
index 6db4e25..ac3c264 100644
--- a/web/gui/src/main/java/org/onosproject/ui/impl/topo/cli/UiCacheMembersCommand.java
+++ b/web/gui/src/main/java/org/onosproject/ui/impl/topo/cli/UiCacheMembersCommand.java
@@ -17,11 +17,13 @@
 package org.onosproject.ui.impl.topo.cli;
 
 import org.apache.karaf.shell.api.action.Command;
+import org.apache.karaf.shell.api.action.lifecycle.Service;
 import org.onosproject.ui.impl.topo.model.UiSharedTopologyModel;
 
 /**
  * CLI command to list the UiClusterMembers stored in the ModelCache.
  */
+@Service
 @Command(scope = "onos", name = "ui-cache-members",
         description = "Lists UiClusterMembers in the Model Cache")
 public class UiCacheMembersCommand extends AbstractUiCacheElementCommand {
diff --git a/web/gui/src/main/java/org/onosproject/ui/impl/topo/cli/UiCacheRegionsCommand.java b/web/gui/src/main/java/org/onosproject/ui/impl/topo/cli/UiCacheRegionsCommand.java
index c35af78..5a1bb46 100644
--- a/web/gui/src/main/java/org/onosproject/ui/impl/topo/cli/UiCacheRegionsCommand.java
+++ b/web/gui/src/main/java/org/onosproject/ui/impl/topo/cli/UiCacheRegionsCommand.java
@@ -17,11 +17,13 @@
 package org.onosproject.ui.impl.topo.cli;
 
 import org.apache.karaf.shell.api.action.Command;
+import org.apache.karaf.shell.api.action.lifecycle.Service;
 import org.onosproject.ui.impl.topo.model.UiSharedTopologyModel;
 
 /**
  * CLI command to list the UiRegions stored in the ModelCache.
  */
+@Service
 @Command(scope = "onos", name = "ui-cache-regions",
         description = "Lists UiRegions in the Model Cache")
 public class UiCacheRegionsCommand extends AbstractUiCacheElementCommand {
diff --git a/web/gui/src/main/java/org/onosproject/ui/impl/topo/cli/UiClearMetaCommand.java b/web/gui/src/main/java/org/onosproject/ui/impl/topo/cli/UiClearMetaCommand.java
index 22b096a..b53a8dc 100644
--- a/web/gui/src/main/java/org/onosproject/ui/impl/topo/cli/UiClearMetaCommand.java
+++ b/web/gui/src/main/java/org/onosproject/ui/impl/topo/cli/UiClearMetaCommand.java
@@ -18,12 +18,14 @@
 package org.onosproject.ui.impl.topo.cli;
 
 import org.apache.karaf.shell.api.action.Command;
+import org.apache.karaf.shell.api.action.lifecycle.Service;
 import org.onosproject.cli.AbstractShellCommand;
 import org.onosproject.ui.impl.TopologyViewMessageHandlerBase;
 
 /**
  * Clears meta-UI data for topology view.
  */
+@Service
 @Command(scope = "onos", name = "ui-clear-meta",
         description = "Clears meta-UI data for topology view")
 public class UiClearMetaCommand extends AbstractShellCommand {
diff --git a/web/gui/src/main/java/org/onosproject/ui/impl/topo/cli/UiGeoMapListCommand.java b/web/gui/src/main/java/org/onosproject/ui/impl/topo/cli/UiGeoMapListCommand.java
index 107a7da..e7594f7 100644
--- a/web/gui/src/main/java/org/onosproject/ui/impl/topo/cli/UiGeoMapListCommand.java
+++ b/web/gui/src/main/java/org/onosproject/ui/impl/topo/cli/UiGeoMapListCommand.java
@@ -18,6 +18,7 @@
 package org.onosproject.ui.impl.topo.cli;
 
 import org.apache.karaf.shell.api.action.Command;
+import org.apache.karaf.shell.api.action.lifecycle.Service;
 import org.onosproject.cli.AbstractShellCommand;
 import org.onosproject.ui.UiExtensionService;
 import org.onosproject.ui.UiTopoMapFactory;
@@ -26,6 +27,7 @@
  * CLI command to list the registered geographic maps, that may be used
  * by the topology view.
  */
+@Service
 @Command(scope = "onos", name = "ui-geo-map-list",
         description = "Lists available geographic maps for topology view")
 public class UiGeoMapListCommand extends AbstractShellCommand {