[WIP] Upgrade ONOS to karaf version 4.2.1

Change-Id: I7cd40c995bdf1c80f94b1895fb3344e32404c7fa
diff --git a/protocols/bgp/ctl/src/main/java/org/onosproject/bgp/controller/impl/BgpControllerImpl.java b/protocols/bgp/ctl/src/main/java/org/onosproject/bgp/controller/impl/BgpControllerImpl.java
index 92ca7a4..804fb80 100644
--- a/protocols/bgp/ctl/src/main/java/org/onosproject/bgp/controller/impl/BgpControllerImpl.java
+++ b/protocols/bgp/ctl/src/main/java/org/onosproject/bgp/controller/impl/BgpControllerImpl.java
@@ -16,10 +16,6 @@
 
 package org.onosproject.bgp.controller.impl;
 
-import org.apache.felix.scr.annotations.Activate;
-import org.apache.felix.scr.annotations.Component;
-import org.apache.felix.scr.annotations.Deactivate;
-import org.apache.felix.scr.annotations.Service;
 import org.onosproject.bgp.controller.BgpCfg;
 import org.onosproject.bgp.controller.BgpController;
 import org.onosproject.bgp.controller.BgpId;
@@ -35,22 +31,24 @@
 import org.onosproject.bgpio.types.BgpValueType;
 import org.onosproject.bgpio.types.MpReachNlri;
 import org.onosproject.bgpio.types.MpUnReachNlri;
+import org.osgi.service.component.annotations.Activate;
+import org.osgi.service.component.annotations.Component;
+import org.osgi.service.component.annotations.Deactivate;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 import java.util.Iterator;
 import java.util.LinkedList;
-import java.util.Map;
-import java.util.TreeMap;
 import java.util.List;
+import java.util.Map;
 import java.util.Set;
+import java.util.TreeMap;
 import java.util.concurrent.ConcurrentHashMap;
 import java.util.concurrent.CopyOnWriteArraySet;
 import java.util.concurrent.locks.Lock;
 import java.util.concurrent.locks.ReentrantLock;
 
-@Component(immediate = true)
-@Service
+@Component(immediate = true, service = BgpController.class)
 public class BgpControllerImpl implements BgpController {
 
     private static final Logger log = LoggerFactory.getLogger(BgpControllerImpl.class);
diff --git a/protocols/grpc/ctl/src/main/java/org/onosproject/grpc/ctl/GrpcControllerImpl.java b/protocols/grpc/ctl/src/main/java/org/onosproject/grpc/ctl/GrpcControllerImpl.java
index fb87571..232885c 100644
--- a/protocols/grpc/ctl/src/main/java/org/onosproject/grpc/ctl/GrpcControllerImpl.java
+++ b/protocols/grpc/ctl/src/main/java/org/onosproject/grpc/ctl/GrpcControllerImpl.java
@@ -31,14 +31,6 @@
 import io.grpc.MethodDescriptor;
 import io.grpc.Status;
 import io.grpc.StatusRuntimeException;
-import org.apache.felix.scr.annotations.Activate;
-import org.apache.felix.scr.annotations.Component;
-import org.apache.felix.scr.annotations.Deactivate;
-import org.apache.felix.scr.annotations.Modified;
-import org.apache.felix.scr.annotations.Property;
-import org.apache.felix.scr.annotations.Reference;
-import org.apache.felix.scr.annotations.ReferenceCardinality;
-import org.apache.felix.scr.annotations.Service;
 import org.onlab.util.Tools;
 import org.onosproject.cfg.ComponentConfigService;
 import org.onosproject.grpc.api.GrpcChannelId;
@@ -47,6 +39,12 @@
 import org.onosproject.grpc.proto.dummy.DummyServiceGrpc;
 import org.onosproject.net.DeviceId;
 import org.osgi.service.component.ComponentContext;
+import org.osgi.service.component.annotations.Activate;
+import org.osgi.service.component.annotations.Component;
+import org.osgi.service.component.annotations.Deactivate;
+import org.osgi.service.component.annotations.Modified;
+import org.osgi.service.component.annotations.Reference;
+import org.osgi.service.component.annotations.ReferenceCardinality;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -66,20 +64,19 @@
 /**
  * Default implementation of the GrpcController.
  */
-@Component(immediate = true)
-@Service
+@Component(immediate = true, service = GrpcController.class)
 public class GrpcControllerImpl implements GrpcController {
 
     private  static final String SET_FORWARDING_PIPELINE_CONFIG_METHOD = "p4.P4Runtime/SetForwardingPipelineConfig";
 
-    @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY)
+    @Reference(cardinality = ReferenceCardinality.MANDATORY)
     protected ComponentConfigService componentConfigService;
 
     // Hint: set to true to log all gRPC messages received/sent on all channels
     // Does not enable log on existing channels
     private static final boolean DEFAULT_LOG_LEVEL = false;
-    @Property(name = "enableMessageLog", boolValue =  DEFAULT_LOG_LEVEL,
-            label = "Indicates whether to log all gRPC messages sent and received on all channels")
+    //@Property(name = "enableMessageLog", boolValue =  DEFAULT_LOG_LEVEL,
+    //        label = "Indicates whether to log all gRPC messages sent and received on all channels")
     public static boolean enableMessageLog = DEFAULT_LOG_LEVEL;
 
     private final Logger log = LoggerFactory.getLogger(getClass());
diff --git a/protocols/isis/ctl/src/main/java/org/onosproject/isis/controller/impl/DefaultIsisController.java b/protocols/isis/ctl/src/main/java/org/onosproject/isis/controller/impl/DefaultIsisController.java
index 9cafc4c..1f17969 100644
--- a/protocols/isis/ctl/src/main/java/org/onosproject/isis/controller/impl/DefaultIsisController.java
+++ b/protocols/isis/ctl/src/main/java/org/onosproject/isis/controller/impl/DefaultIsisController.java
@@ -17,12 +17,6 @@
 
 import com.fasterxml.jackson.databind.JsonNode;
 import com.google.common.collect.Sets;
-import org.apache.felix.scr.annotations.Activate;
-import org.apache.felix.scr.annotations.Component;
-import org.apache.felix.scr.annotations.Deactivate;
-import org.apache.felix.scr.annotations.Reference;
-import org.apache.felix.scr.annotations.ReferenceCardinality;
-import org.apache.felix.scr.annotations.Service;
 import org.onosproject.isis.controller.IsisController;
 import org.onosproject.isis.controller.IsisProcess;
 import org.onosproject.isis.controller.topology.IsisAgent;
@@ -31,6 +25,11 @@
 import org.onosproject.isis.controller.topology.IsisRouter;
 import org.onosproject.isis.controller.topology.IsisRouterListener;
 import org.onosproject.net.driver.DriverService;
+import org.osgi.service.component.annotations.Activate;
+import org.osgi.service.component.annotations.Component;
+import org.osgi.service.component.annotations.Deactivate;
+import org.osgi.service.component.annotations.Reference;
+import org.osgi.service.component.annotations.ReferenceCardinality;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -41,13 +40,12 @@
 /**
  * Represents ISIS controller implementation.
  */
-@Component(immediate = true)
-@Service
+@Component(immediate = true, service = IsisController.class)
 public class DefaultIsisController implements IsisController {
 
     private static final Logger log = LoggerFactory.getLogger(DefaultIsisController.class);
     private final Controller controller = new Controller();
-    @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY)
+    @Reference(cardinality = ReferenceCardinality.MANDATORY)
     protected DriverService driverService;
     protected Set<IsisRouterListener> isisRouterListener = new HashSet<>();
     protected Set<IsisLinkListener> isisLinkListener = Sets.newHashSet();
diff --git a/protocols/lisp/ctl/src/main/java/org/onosproject/lisp/ctl/impl/LispControllerImpl.java b/protocols/lisp/ctl/src/main/java/org/onosproject/lisp/ctl/impl/LispControllerImpl.java
index ec71050..779e6c2 100644
--- a/protocols/lisp/ctl/src/main/java/org/onosproject/lisp/ctl/impl/LispControllerImpl.java
+++ b/protocols/lisp/ctl/src/main/java/org/onosproject/lisp/ctl/impl/LispControllerImpl.java
@@ -16,14 +16,6 @@
 package org.onosproject.lisp.ctl.impl;
 
 import com.google.common.collect.Maps;
-import org.apache.felix.scr.annotations.Activate;
-import org.apache.felix.scr.annotations.Component;
-import org.apache.felix.scr.annotations.Deactivate;
-import org.apache.felix.scr.annotations.Modified;
-import org.apache.felix.scr.annotations.Property;
-import org.apache.felix.scr.annotations.Reference;
-import org.apache.felix.scr.annotations.ReferenceCardinality;
-import org.apache.felix.scr.annotations.Service;
 import org.onlab.util.Tools;
 import org.onosproject.cfg.ComponentConfigService;
 import org.onosproject.core.CoreService;
@@ -39,6 +31,12 @@
 import org.onosproject.lisp.msg.protocols.LispInfoRequest;
 import org.onosproject.lisp.msg.protocols.LispMessage;
 import org.osgi.service.component.ComponentContext;
+import org.osgi.service.component.annotations.Activate;
+import org.osgi.service.component.annotations.Component;
+import org.osgi.service.component.annotations.Deactivate;
+import org.osgi.service.component.annotations.Modified;
+import org.osgi.service.component.annotations.Reference;
+import org.osgi.service.component.annotations.ReferenceCardinality;
 import org.slf4j.Logger;
 
 import java.util.Dictionary;
@@ -58,8 +56,7 @@
 /**
  * LISP controller initiation class.
  */
-@Component(immediate = true)
-@Service
+@Component(immediate = true, service = LispController.class)
 public class LispControllerImpl implements LispController {
 
     private static final String APP_ID = "org.onosproject.lisp-base";
@@ -69,27 +66,27 @@
     private static final String DEFAULT_LISP_AUTH_KEY = "onos";
     private static final short DEFAULT_LISP_AUTH_KEY_ID = 1;
 
-    @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY)
+    @Reference(cardinality = ReferenceCardinality.MANDATORY)
     protected CoreService coreService;
 
-    @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY)
+    @Reference(cardinality = ReferenceCardinality.MANDATORY)
     protected ComponentConfigService cfgService;
 
-    @Property(name = "lispAuthKey", value = DEFAULT_LISP_AUTH_KEY,
-            label = "Authentication key which is used to calculate authentication " +
-                    "data for LISP control message; default value is onos")
+    //@Property(name = "lispAuthKey", value = DEFAULT_LISP_AUTH_KEY,
+    //        label = "Authentication key which is used to calculate authentication " +
+    //                "data for LISP control message; default value is onos")
     private String lispAuthKey = DEFAULT_LISP_AUTH_KEY;
 
-    @Property(name = "lispAuthKeyId", intValue = DEFAULT_LISP_AUTH_KEY_ID,
-            label = "Authentication key id which denotes the authentication method " +
-                    "that ONOS uses to calculate the authentication data; " +
-                    "1 denotes HMAC SHA1 encryption, 2 denotes HMAC SHA256 encryption; " +
-                    "default value is 1")
+    //@Property(name = "lispAuthKeyId", intValue = DEFAULT_LISP_AUTH_KEY_ID,
+    //        label = "Authentication key id which denotes the authentication method " +
+    //                "that ONOS uses to calculate the authentication data; " +
+    //                "1 denotes HMAC SHA1 encryption, 2 denotes HMAC SHA256 encryption; " +
+    //                "default value is 1")
     private int lispAuthKeyId = DEFAULT_LISP_AUTH_KEY_ID;
 
-    @Property(name = "enableSmr", boolValue = false,
-            label = "Enable to send SMR(Solicit Map Request) by map server; " +
-                    "By default SMR is not activated")
+    //@Property(name = "enableSmr", boolValue = false,
+    //        label = "Enable to send SMR(Solicit Map Request) by map server; " +
+    //                "By default SMR is not activated")
     private boolean enableSmr = false;
 
     ExecutorService executorMessages =
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 2d29fcd..b20bedd 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
@@ -49,7 +49,7 @@
     long timeoutSec = 30;
 
     @Override
-    protected void execute() {
+    protected void doExecute() {
         DeviceId deviceId = DeviceId.deviceId(uri);
 
         NetconfController controller = get(NetconfController.class);
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 2aedaa9..6ef87ee 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
@@ -58,7 +58,7 @@
     private DeviceId deviceId;
 
     @Override
-    protected void execute() {
+    protected void doExecute() {
         deviceId = DeviceId.deviceId(uri);
 
         NetconfController controller = get(NetconfController.class);
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 b994789..9a03a2a 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
@@ -51,7 +51,7 @@
     private DeviceId deviceId;
 
     @Override
-    protected void execute() {
+    protected void doExecute() {
         DriverService service = get(DriverService.class);
         deviceId = DeviceId.deviceId(uri);
         DriverHandler h = service.createHandler(deviceId);
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 226f789..56b9587 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
@@ -46,7 +46,7 @@
 
 
     @Override
-    protected void execute() {
+    protected void doExecute() {
         NetconfController controller = get(NetconfController.class);
         DeviceId did = DeviceId.deviceId(uri);
 
diff --git a/protocols/netconf/ctl/src/main/java/org/onosproject/netconf/ctl/impl/NetconfControllerImpl.java b/protocols/netconf/ctl/src/main/java/org/onosproject/netconf/ctl/impl/NetconfControllerImpl.java
index 75dce05..e18714c 100644
--- a/protocols/netconf/ctl/src/main/java/org/onosproject/netconf/ctl/impl/NetconfControllerImpl.java
+++ b/protocols/netconf/ctl/src/main/java/org/onosproject/netconf/ctl/impl/NetconfControllerImpl.java
@@ -16,14 +16,6 @@
 
 package org.onosproject.netconf.ctl.impl;
 
-import org.apache.felix.scr.annotations.Activate;
-import org.apache.felix.scr.annotations.Component;
-import org.apache.felix.scr.annotations.Deactivate;
-import org.apache.felix.scr.annotations.Modified;
-import org.apache.felix.scr.annotations.Property;
-import org.apache.felix.scr.annotations.Reference;
-import org.apache.felix.scr.annotations.ReferenceCardinality;
-import org.apache.felix.scr.annotations.Service;
 import org.bouncycastle.jce.provider.BouncyCastleProvider;
 import org.onlab.packet.IpAddress;
 import org.onosproject.cfg.ComponentConfigService;
@@ -47,6 +39,12 @@
 import org.onosproject.netconf.config.NetconfDeviceConfig;
 import org.onosproject.netconf.config.NetconfSshClientLib;
 import org.osgi.service.component.ComponentContext;
+import org.osgi.service.component.annotations.Activate;
+import org.osgi.service.component.annotations.Component;
+import org.osgi.service.component.annotations.Deactivate;
+import org.osgi.service.component.annotations.Modified;
+import org.osgi.service.component.annotations.Reference;
+import org.osgi.service.component.annotations.ReferenceCardinality;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -67,47 +65,46 @@
 /**
  * The implementation of NetconfController.
  */
-@Component(immediate = true)
-@Service
+@Component(immediate = true, service = NetconfController.class)
 public class NetconfControllerImpl implements NetconfController {
 
     protected static final int DEFAULT_CONNECT_TIMEOUT_SECONDS = 5;
     private static final String PROP_NETCONF_CONNECT_TIMEOUT = "netconfConnectTimeout";
     // FIXME @Property should not be static
-    @Property(name = PROP_NETCONF_CONNECT_TIMEOUT, intValue = DEFAULT_CONNECT_TIMEOUT_SECONDS,
-            label = "Time (in seconds) to wait for a NETCONF connect.")
+    //@Property(name = PROP_NETCONF_CONNECT_TIMEOUT, intValue = DEFAULT_CONNECT_TIMEOUT_SECONDS,
+    //        label = "Time (in seconds) to wait for a NETCONF connect.")
     protected static int netconfConnectTimeout = DEFAULT_CONNECT_TIMEOUT_SECONDS;
 
     private static final String PROP_NETCONF_REPLY_TIMEOUT = "netconfReplyTimeout";
     protected static final int DEFAULT_REPLY_TIMEOUT_SECONDS = 5;
     // FIXME @Property should not be static
-    @Property(name = PROP_NETCONF_REPLY_TIMEOUT, intValue = DEFAULT_REPLY_TIMEOUT_SECONDS,
-            label = "Time (in seconds) waiting for a NetConf reply")
+    //@Property(name = PROP_NETCONF_REPLY_TIMEOUT, intValue = DEFAULT_REPLY_TIMEOUT_SECONDS,
+    //        label = "Time (in seconds) waiting for a NetConf reply")
     protected static int netconfReplyTimeout = DEFAULT_REPLY_TIMEOUT_SECONDS;
 
     private static final String PROP_NETCONF_IDLE_TIMEOUT = "netconfIdleTimeout";
     protected static final int DEFAULT_IDLE_TIMEOUT_SECONDS = 300;
     // FIXME @Property should not be static
-    @Property(name = PROP_NETCONF_IDLE_TIMEOUT, intValue = DEFAULT_IDLE_TIMEOUT_SECONDS,
-            label = "Time (in seconds) SSH session will close if no traffic seen")
+    //@Property(name = PROP_NETCONF_IDLE_TIMEOUT, intValue = DEFAULT_IDLE_TIMEOUT_SECONDS,
+    //        label = "Time (in seconds) SSH session will close if no traffic seen")
     protected static int netconfIdleTimeout = DEFAULT_IDLE_TIMEOUT_SECONDS;
 
     private static final String SSH_LIBRARY = "sshLibrary";
     private static final String APACHE_MINA_STR = "apache-mina";
-    @Property(name = SSH_LIBRARY, value = APACHE_MINA_STR,
-            label = "Ssh client library to use")
+    //@Property(name = SSH_LIBRARY, value = APACHE_MINA_STR,
+    //        label = "Ssh client library to use")
     protected NetconfSshClientLib sshLibrary = NetconfSshClientLib.APACHE_MINA;
 
-    @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY)
+    @Reference(cardinality = ReferenceCardinality.MANDATORY)
     protected ComponentConfigService cfgService;
 
-    @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY)
+    @Reference(cardinality = ReferenceCardinality.MANDATORY)
     protected DeviceService deviceService;
 
-    @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY)
+    @Reference(cardinality = ReferenceCardinality.MANDATORY)
     protected DeviceKeyService deviceKeyService;
 
-    @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY)
+    @Reference(cardinality = ReferenceCardinality.MANDATORY)
     protected NetworkConfigRegistry netCfgService;
 
     public static final Logger log = LoggerFactory
diff --git a/protocols/openflow/ctl/src/main/java/org/onosproject/openflow/controller/impl/OpenFlowControllerImpl.java b/protocols/openflow/ctl/src/main/java/org/onosproject/openflow/controller/impl/OpenFlowControllerImpl.java
index bcf9edf..3e9b802b 100644
--- a/protocols/openflow/ctl/src/main/java/org/onosproject/openflow/controller/impl/OpenFlowControllerImpl.java
+++ b/protocols/openflow/ctl/src/main/java/org/onosproject/openflow/controller/impl/OpenFlowControllerImpl.java
@@ -18,14 +18,6 @@
 import com.google.common.collect.ArrayListMultimap;
 import com.google.common.collect.ImmutableList;
 import com.google.common.collect.Multimap;
-import org.apache.felix.scr.annotations.Activate;
-import org.apache.felix.scr.annotations.Component;
-import org.apache.felix.scr.annotations.Deactivate;
-import org.apache.felix.scr.annotations.Modified;
-import org.apache.felix.scr.annotations.Property;
-import org.apache.felix.scr.annotations.Reference;
-import org.apache.felix.scr.annotations.ReferenceCardinality;
-import org.apache.felix.scr.annotations.Service;
 import org.onosproject.cfg.ComponentConfigService;
 import org.onosproject.core.CoreService;
 import org.onosproject.net.DeviceId;
@@ -48,6 +40,12 @@
 import org.onosproject.openflow.controller.RoleState;
 import org.onosproject.openflow.controller.driver.OpenFlowAgent;
 import org.osgi.service.component.ComponentContext;
+import org.osgi.service.component.annotations.Activate;
+import org.osgi.service.component.annotations.Component;
+import org.osgi.service.component.annotations.Deactivate;
+import org.osgi.service.component.annotations.Modified;
+import org.osgi.service.component.annotations.Reference;
+import org.osgi.service.component.annotations.ReferenceCardinality;
 import org.projectfloodlight.openflow.protocol.OFCalientFlowStatsEntry;
 import org.projectfloodlight.openflow.protocol.OFCalientFlowStatsReply;
 import org.projectfloodlight.openflow.protocol.OFCircuitPortStatus;
@@ -95,8 +93,7 @@
 import static org.onlab.util.Tools.groupedThreads;
 
 
-@Component(immediate = true)
-@Service
+@Component(immediate = true, service = OpenFlowController.class)
 public class OpenFlowControllerImpl implements OpenFlowController {
     private static final String APP_ID = "org.onosproject.openflow-base";
     private static final String DEFAULT_OFPORT = "6633,6653";
@@ -106,44 +103,44 @@
     private static final Logger log =
             LoggerFactory.getLogger(OpenFlowControllerImpl.class);
 
-    @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY)
+    @Reference(cardinality = ReferenceCardinality.MANDATORY)
     protected CoreService coreService;
 
-    @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY)
+    @Reference(cardinality = ReferenceCardinality.MANDATORY)
     protected DriverService driverService;
 
-    @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY)
+    @Reference(cardinality = ReferenceCardinality.MANDATORY)
     protected ComponentConfigService cfgService;
 
-    @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY)
+    @Reference(cardinality = ReferenceCardinality.MANDATORY)
     protected NetworkConfigRegistry netCfgService;
 
-    @Property(name = "openflowPorts", value = DEFAULT_OFPORT,
-            label = "Port numbers (comma separated) used by OpenFlow protocol; default is 6633,6653")
+    //@Property(name = "openflowPorts", value = DEFAULT_OFPORT,
+    //        label = "Port numbers (comma separated) used by OpenFlow protocol; default is 6633,6653")
     private String openflowPorts = DEFAULT_OFPORT;
 
-    @Property(name = "workerThreads", intValue = DEFAULT_WORKER_THREADS,
-            label = "Number of controller worker threads")
+    //@Property(name = "workerThreads", intValue = DEFAULT_WORKER_THREADS,
+    //        label = "Number of controller worker threads")
     private int workerThreads = DEFAULT_WORKER_THREADS;
 
-    @Property(name = "tlsMode", value = "",
-              label = "TLS mode for OpenFlow channel; options are: disabled [default], enabled, strict")
+    //@Property(name = "tlsMode", value = "",
+    //          label = "TLS mode for OpenFlow channel; options are: disabled [default], enabled, strict")
     private String tlsModeString;
 
-    @Property(name = "keyStore", value = "",
-            label = "File path to key store for TLS connections")
+    //@Property(name = "keyStore", value = "",
+    //        label = "File path to key store for TLS connections")
     private String keyStore;
 
-    @Property(name = "keyStorePassword", value = "",
-            label = "Key store password")
+    //@Property(name = "keyStorePassword", value = "",
+    //        label = "Key store password")
     private String keyStorePassword;
 
-    @Property(name = "trustStore", value = "",
-            label = "File path to trust store for TLS connections")
+    //@Property(name = "trustStore", value = "",
+    //        label = "File path to trust store for TLS connections")
     private String trustStore;
 
-    @Property(name = "trustStorePassword", value = "",
-            label = "Trust store password")
+    //@Property(name = "trustStorePassword", value = "",
+    //        label = "Trust store password")
     private String trustStorePassword;
 
     protected ExecutorService executorMsgs =
diff --git a/protocols/ospf/ctl/src/main/java/org/onosproject/ospf/controller/impl/OspfControllerImpl.java b/protocols/ospf/ctl/src/main/java/org/onosproject/ospf/controller/impl/OspfControllerImpl.java
index a9c3309..dc63617 100644
--- a/protocols/ospf/ctl/src/main/java/org/onosproject/ospf/controller/impl/OspfControllerImpl.java
+++ b/protocols/ospf/ctl/src/main/java/org/onosproject/ospf/controller/impl/OspfControllerImpl.java
@@ -18,12 +18,6 @@
 
 import com.fasterxml.jackson.databind.JsonNode;
 import com.google.common.collect.Sets;
-import org.apache.felix.scr.annotations.Activate;
-import org.apache.felix.scr.annotations.Component;
-import org.apache.felix.scr.annotations.Deactivate;
-import org.apache.felix.scr.annotations.Reference;
-import org.apache.felix.scr.annotations.ReferenceCardinality;
-import org.apache.felix.scr.annotations.Service;
 import org.onosproject.net.driver.DriverService;
 import org.onosproject.ospf.controller.OspfAgent;
 import org.onosproject.ospf.controller.OspfController;
@@ -32,6 +26,11 @@
 import org.onosproject.ospf.controller.OspfProcess;
 import org.onosproject.ospf.controller.OspfRouter;
 import org.onosproject.ospf.controller.OspfRouterListener;
+import org.osgi.service.component.annotations.Activate;
+import org.osgi.service.component.annotations.Component;
+import org.osgi.service.component.annotations.Deactivate;
+import org.osgi.service.component.annotations.Reference;
+import org.osgi.service.component.annotations.ReferenceCardinality;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -43,13 +42,12 @@
  * Representation of an OSPF controller implementation.
  * Serves as a one stop shop for obtaining OSPF devices and (un)register listeners on OSPF events
  */
-@Component(immediate = true)
-@Service
+@Component(immediate = true, service = OspfController.class)
 public class OspfControllerImpl implements OspfController {
 
     private static final Logger log = LoggerFactory.getLogger(OspfControllerImpl.class);
     private final Controller ctrl = new Controller();
-    @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY)
+    @Reference(cardinality = ReferenceCardinality.MANDATORY)
     protected DriverService driverService;
     protected Set<OspfRouterListener> ospfRouterListener = new HashSet<>();
     protected Set<OspfLinkListener> ospfLinkListener = Sets.newHashSet();
diff --git a/protocols/ovsdb/ctl/src/main/java/org/onosproject/ovsdb/controller/impl/OvsdbControllerImpl.java b/protocols/ovsdb/ctl/src/main/java/org/onosproject/ovsdb/controller/impl/OvsdbControllerImpl.java
index 11bfaae..dde2416 100644
--- a/protocols/ovsdb/ctl/src/main/java/org/onosproject/ovsdb/controller/impl/OvsdbControllerImpl.java
+++ b/protocols/ovsdb/ctl/src/main/java/org/onosproject/ovsdb/controller/impl/OvsdbControllerImpl.java
@@ -18,14 +18,6 @@
 import com.fasterxml.jackson.databind.JsonNode;
 import com.google.common.base.Strings;
 import com.google.common.collect.ImmutableList;
-import org.apache.felix.scr.annotations.Activate;
-import org.apache.felix.scr.annotations.Component;
-import org.apache.felix.scr.annotations.Deactivate;
-import org.apache.felix.scr.annotations.Modified;
-import org.apache.felix.scr.annotations.Property;
-import org.apache.felix.scr.annotations.Reference;
-import org.apache.felix.scr.annotations.ReferenceCardinality;
-import org.apache.felix.scr.annotations.Service;
 import org.onlab.packet.IpAddress;
 import org.onlab.packet.MacAddress;
 import org.onlab.packet.TpPort;
@@ -63,6 +55,12 @@
 import org.onosproject.ovsdb.rfc.table.TableGenerator;
 import org.onosproject.ovsdb.rfc.utils.FromJsonUtil;
 import org.osgi.service.component.ComponentContext;
+import org.osgi.service.component.annotations.Activate;
+import org.osgi.service.component.annotations.Component;
+import org.osgi.service.component.annotations.Deactivate;
+import org.osgi.service.component.annotations.Modified;
+import org.osgi.service.component.annotations.Reference;
+import org.osgi.service.component.annotations.ReferenceCardinality;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -83,17 +81,16 @@
 
 import static com.google.common.base.Preconditions.checkNotNull;
 import static org.onlab.util.Tools.get;
-import static org.onosproject.ovsdb.controller.OvsdbConstant.SERVER_MODE;
-import static org.onosproject.ovsdb.controller.OvsdbConstant.DEFAULT_KS_PASSWORD;
 import static org.onosproject.ovsdb.controller.OvsdbConstant.DEFAULT_KS_FILE;
+import static org.onosproject.ovsdb.controller.OvsdbConstant.DEFAULT_KS_PASSWORD;
 import static org.onosproject.ovsdb.controller.OvsdbConstant.OVSDB_TLS_FLAG;
+import static org.onosproject.ovsdb.controller.OvsdbConstant.SERVER_MODE;
 import static org.onosproject.ovsdb.controller.impl.Controller.MIN_KS_LENGTH;
 
 /**
  * The implementation of OvsdbController.
  */
-@Component(immediate = true)
-@Service
+@Component(immediate = true, service = OvsdbController.class)
 public class OvsdbControllerImpl implements OvsdbController {
 
     public static final Logger log = LoggerFactory
@@ -110,31 +107,31 @@
             new ConcurrentHashMap<>();
     protected ConcurrentHashMap<String, String> requestDbName = new ConcurrentHashMap<>();
 
-    @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY)
+    @Reference(cardinality = ReferenceCardinality.MANDATORY)
     protected ComponentConfigService configService;
 
-    @Property(name = "serverMode", boolValue = SERVER_MODE,
-            label = "Run as server mode, listen on 6640 port")
+    //@Property(name = "serverMode", boolValue = SERVER_MODE,
+    //        label = "Run as server mode, listen on 6640 port")
     private boolean serverMode = SERVER_MODE;
 
-    @Property(name = "enableOvsdbTls", boolValue = OVSDB_TLS_FLAG,
-            label = "TLS mode for OVSDB channel; options are: true false")
+    //@Property(name = "enableOvsdbTls", boolValue = OVSDB_TLS_FLAG,
+    //        label = "TLS mode for OVSDB channel; options are: true false")
     private boolean enableOvsdbTls = OVSDB_TLS_FLAG;
 
-    @Property(name = "keyStoreLocation", value = DEFAULT_KS_FILE,
-            label = "File path to KeyStore for Ovsdb TLS Connections")
+    //@Property(name = "keyStoreLocation", value = DEFAULT_KS_FILE,
+    //        label = "File path to KeyStore for Ovsdb TLS Connections")
     protected String keyStoreLocation = DEFAULT_KS_FILE;
 
-    @Property(name = "trustStoreLocation", value = DEFAULT_KS_FILE,
-            label = "File path to TrustStore for Ovsdb TLS Connections")
+    //@Property(name = "trustStoreLocation", value = DEFAULT_KS_FILE,
+    //        label = "File path to TrustStore for Ovsdb TLS Connections")
     protected String trustStoreLocation = DEFAULT_KS_FILE;
 
-    @Property(name = "keyStorePassword", value = DEFAULT_KS_PASSWORD,
-            label = "KeyStore Password")
+    //@Property(name = "keyStorePassword", value = DEFAULT_KS_PASSWORD,
+    //        label = "KeyStore Password")
     protected String keyStorePassword = DEFAULT_KS_PASSWORD;
 
-    @Property(name = "trustStorePassword", value = DEFAULT_KS_PASSWORD,
-            label = "TrustStore Password")
+    //@Property(name = "trustStorePassword", value = DEFAULT_KS_PASSWORD,
+    //        label = "TrustStore Password")
     protected String trustStorePassword = DEFAULT_KS_PASSWORD;
 
     @Activate
diff --git a/protocols/p4runtime/ctl/src/main/java/org/onosproject/p4runtime/ctl/P4RuntimeControllerImpl.java b/protocols/p4runtime/ctl/src/main/java/org/onosproject/p4runtime/ctl/P4RuntimeControllerImpl.java
index cb413bc..5d7fed3 100644
--- a/protocols/p4runtime/ctl/src/main/java/org/onosproject/p4runtime/ctl/P4RuntimeControllerImpl.java
+++ b/protocols/p4runtime/ctl/src/main/java/org/onosproject/p4runtime/ctl/P4RuntimeControllerImpl.java
@@ -21,12 +21,6 @@
 import io.grpc.ManagedChannel;
 import io.grpc.ManagedChannelBuilder;
 import io.grpc.netty.NettyChannelBuilder;
-import org.apache.felix.scr.annotations.Activate;
-import org.apache.felix.scr.annotations.Component;
-import org.apache.felix.scr.annotations.Deactivate;
-import org.apache.felix.scr.annotations.Reference;
-import org.apache.felix.scr.annotations.ReferenceCardinality;
-import org.apache.felix.scr.annotations.Service;
 import org.onosproject.event.AbstractListenerManager;
 import org.onosproject.grpc.api.GrpcChannelId;
 import org.onosproject.grpc.api.GrpcController;
@@ -39,6 +33,11 @@
 import org.onosproject.p4runtime.api.P4RuntimeEvent;
 import org.onosproject.p4runtime.api.P4RuntimeEventListener;
 import org.onosproject.store.service.StorageService;
+import org.osgi.service.component.annotations.Activate;
+import org.osgi.service.component.annotations.Component;
+import org.osgi.service.component.annotations.Deactivate;
+import org.osgi.service.component.annotations.Reference;
+import org.osgi.service.component.annotations.ReferenceCardinality;
 import org.slf4j.Logger;
 
 import java.io.IOException;
@@ -55,8 +54,7 @@
 /**
  * P4Runtime controller implementation.
  */
-@Component(immediate = true)
-@Service
+@Component(immediate = true, service = P4RuntimeController.class)
 public class P4RuntimeControllerImpl
         extends AbstractListenerManager<P4RuntimeEvent, P4RuntimeEventListener>
         implements P4RuntimeController {
@@ -73,10 +71,10 @@
 
     private DistributedElectionIdGenerator electionIdGenerator;
 
-    @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY)
+    @Reference(cardinality = ReferenceCardinality.MANDATORY)
     private GrpcController grpcController;
 
-    @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY)
+    @Reference(cardinality = ReferenceCardinality.MANDATORY)
     private StorageService storageService;
 
     @Activate
diff --git a/protocols/pcep/server/api/src/test/java/org/onosproject/pcep/server/PcepClientControllerAdapter.java b/protocols/pcep/server/api/src/test/java/org/onosproject/pcep/server/PcepClientControllerAdapter.java
index 80e6561..b5e448e 100644
--- a/protocols/pcep/server/api/src/test/java/org/onosproject/pcep/server/PcepClientControllerAdapter.java
+++ b/protocols/pcep/server/api/src/test/java/org/onosproject/pcep/server/PcepClientControllerAdapter.java
@@ -17,8 +17,8 @@
 
 
 import com.google.common.collect.Sets;
-import org.apache.felix.scr.annotations.Activate;
-import org.apache.felix.scr.annotations.Deactivate;
+import org.osgi.service.component.annotations.Activate;
+import org.osgi.service.component.annotations.Deactivate;
 import org.onlab.packet.IpAddress;
 import org.onosproject.incubator.net.tunnel.DefaultLabelStack;
 import org.onosproject.incubator.net.tunnel.LabelStack;
diff --git a/protocols/pcep/server/ctl/src/main/java/org/onosproject/pcelabelstore/DistributedPceLabelStore.java b/protocols/pcep/server/ctl/src/main/java/org/onosproject/pcelabelstore/DistributedPceLabelStore.java
index 4c6a3cf..6288134 100644
--- a/protocols/pcep/server/ctl/src/main/java/org/onosproject/pcelabelstore/DistributedPceLabelStore.java
+++ b/protocols/pcep/server/ctl/src/main/java/org/onosproject/pcelabelstore/DistributedPceLabelStore.java
@@ -15,25 +15,10 @@
  */
 package org.onosproject.pcelabelstore;
 
-import static com.google.common.base.Preconditions.checkNotNull;
-
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Map;
-import java.util.stream.Collectors;
-
-import org.apache.felix.scr.annotations.Activate;
-import org.apache.felix.scr.annotations.Component;
-import org.apache.felix.scr.annotations.Deactivate;
-import org.apache.felix.scr.annotations.Reference;
-import org.apache.felix.scr.annotations.ReferenceCardinality;
-import org.apache.felix.scr.annotations.Service;
-
 import org.onlab.util.KryoNamespace;
-import org.onosproject.incubator.net.tunnel.TunnelId;
 import org.onosproject.incubator.net.resource.label.LabelResource;
 import org.onosproject.incubator.net.resource.label.LabelResourceId;
+import org.onosproject.incubator.net.tunnel.TunnelId;
 import org.onosproject.net.DeviceId;
 import org.onosproject.net.Link;
 import org.onosproject.pcelabelstore.api.LspLocalLabelInfo;
@@ -42,15 +27,26 @@
 import org.onosproject.store.service.ConsistentMap;
 import org.onosproject.store.service.Serializer;
 import org.onosproject.store.service.StorageService;
-
+import org.osgi.service.component.annotations.Activate;
+import org.osgi.service.component.annotations.Component;
+import org.osgi.service.component.annotations.Deactivate;
+import org.osgi.service.component.annotations.Reference;
+import org.osgi.service.component.annotations.ReferenceCardinality;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
+
+import static com.google.common.base.Preconditions.checkNotNull;
+
 /**
  * Manages the pool of available labels to devices, links and tunnels.
  */
-@Component(immediate = true)
-@Service
+@Component(immediate = true, service = PceLabelStore.class)
 public class DistributedPceLabelStore implements PceLabelStore {
 
     private static final String DEVICE_ID_NULL = "Device ID cannot be null";
@@ -61,7 +57,7 @@
 
     private final Logger log = LoggerFactory.getLogger(getClass());
 
-    @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY)
+    @Reference(cardinality = ReferenceCardinality.MANDATORY)
     protected StorageService storageService;
 
     // Mapping device with global node label
diff --git a/protocols/pcep/server/ctl/src/main/java/org/onosproject/pcep/server/impl/PcepClientControllerImpl.java b/protocols/pcep/server/ctl/src/main/java/org/onosproject/pcep/server/impl/PcepClientControllerImpl.java
index 1bb5610..2624804 100644
--- a/protocols/pcep/server/ctl/src/main/java/org/onosproject/pcep/server/impl/PcepClientControllerImpl.java
+++ b/protocols/pcep/server/ctl/src/main/java/org/onosproject/pcep/server/impl/PcepClientControllerImpl.java
@@ -15,27 +15,7 @@
  */
 package org.onosproject.pcep.server.impl;
 
-import java.util.Map;
-import java.util.TreeMap;
-import java.util.List;
-import java.util.LinkedList;
-import java.util.Set;
-import java.util.HashSet;
-import java.util.HashMap;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.ListIterator;
-import java.util.Arrays;
-import java.util.Iterator;
-import java.util.Map.Entry;
-import java.util.concurrent.ConcurrentHashMap;
-
-import org.apache.felix.scr.annotations.Activate;
-import org.apache.felix.scr.annotations.Component;
-import org.apache.felix.scr.annotations.Deactivate;
-import org.apache.felix.scr.annotations.Reference;
-import org.apache.felix.scr.annotations.ReferenceCardinality;
-import org.apache.felix.scr.annotations.Service;
+import com.google.common.collect.Sets;
 import org.onlab.packet.Ip4Address;
 import org.onlab.packet.IpAddress;
 import org.onosproject.incubator.net.resource.label.LabelResourceAdminService;
@@ -46,8 +26,8 @@
 import org.onosproject.incubator.net.tunnel.IpTunnelEndPoint;
 import org.onosproject.incubator.net.tunnel.LabelStack;
 import org.onosproject.incubator.net.tunnel.Tunnel;
-import org.onosproject.incubator.net.tunnel.TunnelService;
 import org.onosproject.incubator.net.tunnel.Tunnel.State;
+import org.onosproject.incubator.net.tunnel.TunnelService;
 import org.onosproject.mastership.MastershipService;
 import org.onosproject.net.DefaultAnnotations;
 import org.onosproject.net.DefaultAnnotations.Builder;
@@ -100,64 +80,81 @@
 import org.onosproject.pcepio.types.SrEroSubObject;
 import org.onosproject.pcepio.types.StatefulIPv4LspIdentifiersTlv;
 import org.onosproject.pcepio.types.SymbolicPathNameTlv;
+import org.osgi.service.component.annotations.Activate;
+import org.osgi.service.component.annotations.Component;
+import org.osgi.service.component.annotations.Deactivate;
+import org.osgi.service.component.annotations.Reference;
+import org.osgi.service.component.annotations.ReferenceCardinality;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-import com.google.common.collect.Sets;
-import static com.google.common.base.Preconditions.checkNotNull;
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Iterator;
+import java.util.LinkedList;
+import java.util.List;
+import java.util.ListIterator;
+import java.util.Map;
+import java.util.Map.Entry;
+import java.util.Set;
+import java.util.TreeMap;
+import java.util.concurrent.ConcurrentHashMap;
 
-import static org.onosproject.pcep.server.PcepSyncStatus.IN_SYNC;
+import static com.google.common.base.Preconditions.checkNotNull;
 import static org.onosproject.pcep.server.LspType.WITHOUT_SIGNALLING_AND_WITHOUT_SR;
 import static org.onosproject.pcep.server.LspType.WITH_SIGNALLING;
-import static org.onosproject.pcep.server.PcepLspSyncAction.REMOVE;
-import static org.onosproject.pcep.server.PcepLspSyncAction.SEND_UPDATE;
-import static org.onosproject.pcep.server.PcepLspSyncAction.UNSTABLE;
-import static org.onosproject.pcepio.types.PcepErrorDetailInfo.ERROR_TYPE_19;
-import static org.onosproject.pcepio.types.PcepErrorDetailInfo.ERROR_VALUE_5;
 import static org.onosproject.pcep.server.PcepAnnotationKeys.BANDWIDTH;
+import static org.onosproject.pcep.server.PcepAnnotationKeys.COST_TYPE;
+import static org.onosproject.pcep.server.PcepAnnotationKeys.DELEGATE;
 import static org.onosproject.pcep.server.PcepAnnotationKeys.LOCAL_LSP_ID;
 import static org.onosproject.pcep.server.PcepAnnotationKeys.LSP_SIG_TYPE;
 import static org.onosproject.pcep.server.PcepAnnotationKeys.PCC_TUNNEL_ID;
 import static org.onosproject.pcep.server.PcepAnnotationKeys.PCE_INIT;
 import static org.onosproject.pcep.server.PcepAnnotationKeys.PLSP_ID;
-import static org.onosproject.pcep.server.PcepAnnotationKeys.DELEGATE;
-import static org.onosproject.pcep.server.PcepAnnotationKeys.COST_TYPE;
-import static org.onosproject.pcep.server.PcepSyncStatus.SYNCED;
+import static org.onosproject.pcep.server.PcepLspSyncAction.REMOVE;
+import static org.onosproject.pcep.server.PcepLspSyncAction.SEND_UPDATE;
+import static org.onosproject.pcep.server.PcepLspSyncAction.UNSTABLE;
+import static org.onosproject.pcep.server.PcepSyncStatus.IN_SYNC;
 import static org.onosproject.pcep.server.PcepSyncStatus.NOT_SYNCED;
+import static org.onosproject.pcep.server.PcepSyncStatus.SYNCED;
+import static org.onosproject.pcepio.types.PcepErrorDetailInfo.ERROR_TYPE_19;
+import static org.onosproject.pcepio.types.PcepErrorDetailInfo.ERROR_VALUE_5;
 
 /**
  * Implementation of PCEP client controller.
  */
-@Component(immediate = true)
-@Service
+@Component(immediate = true, service = PcepClientController.class)
 public class PcepClientControllerImpl implements PcepClientController {
 
     private static final Logger log = LoggerFactory.getLogger(PcepClientControllerImpl.class);
     private static final long IDENTIFIER_SET = 0x100000000L;
     private static final long SET = 0xFFFFFFFFL;
 
-    @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY)
+    @Reference(cardinality = ReferenceCardinality.MANDATORY)
     protected DeviceService deviceService;
 
-    @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY)
+    @Reference(cardinality = ReferenceCardinality.MANDATORY)
     protected LinkService linkService;
 
-    @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY)
+    @Reference(cardinality = ReferenceCardinality.MANDATORY)
     protected TunnelService tunnelService;
 
-    @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY)
+    @Reference(cardinality = ReferenceCardinality.MANDATORY)
     protected NetworkConfigService netCfgService;
 
-    @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY)
+    @Reference(cardinality = ReferenceCardinality.MANDATORY)
     protected MastershipService mastershipService;
 
-    @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY)
+    @Reference(cardinality = ReferenceCardinality.MANDATORY)
     protected LabelResourceAdminService labelRsrcAdminService;
 
-    @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY)
+    @Reference(cardinality = ReferenceCardinality.MANDATORY)
     protected LabelResourceService labelRsrcService;
 
-    @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY)
+    @Reference(cardinality = ReferenceCardinality.MANDATORY)
     protected PceLabelStore pceStore;
 
     protected ConcurrentHashMap<PccId, PcepClient> connectedClients =
diff --git a/protocols/pcep/server/ctl/src/main/java/org/onosproject/pcep/server/impl/PcepControllerImpl.java b/protocols/pcep/server/ctl/src/main/java/org/onosproject/pcep/server/impl/PcepControllerImpl.java
index 8d9bc23..2d1477a 100644
--- a/protocols/pcep/server/ctl/src/main/java/org/onosproject/pcep/server/impl/PcepControllerImpl.java
+++ b/protocols/pcep/server/ctl/src/main/java/org/onosproject/pcep/server/impl/PcepControllerImpl.java
@@ -16,11 +16,6 @@
 package org.onosproject.pcep.server.impl;
 
 import com.google.common.collect.Sets;
-
-import org.apache.felix.scr.annotations.Activate;
-import org.apache.felix.scr.annotations.Component;
-import org.apache.felix.scr.annotations.Deactivate;
-import org.apache.felix.scr.annotations.Service;
 import org.onosproject.net.DeviceId;
 import org.onosproject.pcep.api.PcepController;
 import org.onosproject.pcep.api.PcepDpid;
@@ -29,6 +24,9 @@
 import org.onosproject.pcep.api.PcepSwitchListener;
 import org.onosproject.pcep.api.PcepTunnel;
 import org.onosproject.pcep.api.PcepTunnelListener;
+import org.osgi.service.component.annotations.Activate;
+import org.osgi.service.component.annotations.Component;
+import org.osgi.service.component.annotations.Deactivate;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -37,8 +35,7 @@
 /**
  * Implementation of PCEP controller [protocol].
  */
-@Component(immediate = true)
-@Service
+@Component(immediate = true, service = PcepController.class)
 public class PcepControllerImpl implements PcepController {
 
     private static final Logger log = LoggerFactory.getLogger(PcepControllerImpl.class);
diff --git a/protocols/rest/ctl/src/main/java/org/onosproject/protocol/rest/ctl/RestSBControllerImpl.java b/protocols/rest/ctl/src/main/java/org/onosproject/protocol/rest/ctl/RestSBControllerImpl.java
index a527e0e..5a75ef9 100644
--- a/protocols/rest/ctl/src/main/java/org/onosproject/protocol/rest/ctl/RestSBControllerImpl.java
+++ b/protocols/rest/ctl/src/main/java/org/onosproject/protocol/rest/ctl/RestSBControllerImpl.java
@@ -17,12 +17,6 @@
 package org.onosproject.protocol.rest.ctl;
 
 import com.google.common.collect.ImmutableSet;
-import org.apache.felix.scr.annotations.Activate;
-import org.apache.felix.scr.annotations.Component;
-import org.apache.felix.scr.annotations.Deactivate;
-import org.apache.felix.scr.annotations.Reference;
-import org.apache.felix.scr.annotations.ReferenceCardinality;
-import org.apache.felix.scr.annotations.Service;
 import org.onosproject.event.EventDeliveryService;
 import org.onosproject.event.ListenerRegistry;
 import org.onosproject.event.ListenerService;
@@ -32,6 +26,11 @@
 import org.onosproject.protocol.rest.RestSBDevice;
 import org.onosproject.protocol.rest.RestSBEventListener;
 import org.onosproject.protocol.rest.RestSBServerSentEvent;
+import org.osgi.service.component.annotations.Activate;
+import org.osgi.service.component.annotations.Component;
+import org.osgi.service.component.annotations.Deactivate;
+import org.osgi.service.component.annotations.Reference;
+import org.osgi.service.component.annotations.ReferenceCardinality;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -45,15 +44,14 @@
 /**
  * The implementation of RestSBController.
  */
-@Component(immediate = true)
-@Service
+@Component(immediate = true, service = { RestSBController.class, ListenerService.class })
 public class RestSBControllerImpl extends HttpSBControllerImpl
         implements RestSBController, ListenerService<RestSBServerSentEvent, RestSBEventListener> {
 
     private static final Logger log =
             LoggerFactory.getLogger(RestSBControllerImpl.class);
 
-    @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY)
+    @Reference(cardinality = ReferenceCardinality.MANDATORY)
     protected EventDeliveryService eventDispatcher;
 
     protected final ListenerRegistry<RestSBServerSentEvent, RestSBEventListener> listenerRegistry =
diff --git a/protocols/restconf/client/ctl/src/main/java/org/onosproject/protocol/restconf/ctl/RestConfSBControllerImpl.java b/protocols/restconf/client/ctl/src/main/java/org/onosproject/protocol/restconf/ctl/RestConfSBControllerImpl.java
index 38f296d..aaa106e 100644
--- a/protocols/restconf/client/ctl/src/main/java/org/onosproject/protocol/restconf/ctl/RestConfSBControllerImpl.java
+++ b/protocols/restconf/client/ctl/src/main/java/org/onosproject/protocol/restconf/ctl/RestConfSBControllerImpl.java
@@ -15,10 +15,6 @@
  */
 package org.onosproject.protocol.restconf.ctl;
 
-import org.apache.felix.scr.annotations.Activate;
-import org.apache.felix.scr.annotations.Component;
-import org.apache.felix.scr.annotations.Deactivate;
-import org.apache.felix.scr.annotations.Service;
 import org.glassfish.jersey.client.ChunkedInput;
 import org.onlab.packet.IpAddress;
 import org.onosproject.net.DeviceId;
@@ -26,6 +22,9 @@
 import org.onosproject.protocol.rest.RestSBDevice;
 import org.onosproject.protocol.restconf.RestConfSBController;
 import org.onosproject.protocol.restconf.RestconfNotificationEventListener;
+import org.osgi.service.component.annotations.Activate;
+import org.osgi.service.component.annotations.Component;
+import org.osgi.service.component.annotations.Deactivate;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -42,8 +41,7 @@
 /**
  * The implementation of RestConfSBController.
  */
-@Component(immediate = true)
-@Service
+@Component(immediate = true, service = RestConfSBController.class)
 public class RestConfSBControllerImpl extends HttpSBControllerImpl
         implements RestConfSBController {
 
diff --git a/protocols/snmp/ctl/src/main/java/org/onosproject/snmp/ctl/DefaultSnmpController.java b/protocols/snmp/ctl/src/main/java/org/onosproject/snmp/ctl/DefaultSnmpController.java
index 6cc18af..a9eab3d 100644
--- a/protocols/snmp/ctl/src/main/java/org/onosproject/snmp/ctl/DefaultSnmpController.java
+++ b/protocols/snmp/ctl/src/main/java/org/onosproject/snmp/ctl/DefaultSnmpController.java
@@ -23,9 +23,6 @@
 import com.btisystems.pronx.ems.core.snmp.SnmpSessionFactory;
 import com.btisystems.pronx.ems.core.snmp.V2cSnmpConfiguration;
 import com.google.common.base.Preconditions;
-import org.apache.felix.scr.annotations.Activate;
-import org.apache.felix.scr.annotations.Deactivate;
-import org.apache.felix.scr.annotations.Service;
 import org.onosproject.incubator.net.faultmanagement.alarm.Alarm;
 import org.onosproject.incubator.net.faultmanagement.alarm.AlarmId;
 import org.onosproject.incubator.net.faultmanagement.alarm.DefaultAlarm;
@@ -33,7 +30,9 @@
 import org.onosproject.snmp.SnmpController;
 import org.onosproject.snmp.SnmpDevice;
 import org.osgi.service.component.ComponentContext;
+import org.osgi.service.component.annotations.Activate;
 import org.osgi.service.component.annotations.Component;
+import org.osgi.service.component.annotations.Deactivate;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -47,8 +46,7 @@
 /**
  * Default implementation of the SNMP sub-controller.
  */
-@Component(immediate = true)
-@Service
+@Component(immediate = true, service = SnmpController.class)
 public class DefaultSnmpController implements SnmpController {
 
     private final Logger log = LoggerFactory
diff --git a/protocols/tl1/ctl/src/main/java/org/onosproject/tl1/impl/DefaultTl1Controller.java b/protocols/tl1/ctl/src/main/java/org/onosproject/tl1/impl/DefaultTl1Controller.java
index 70ccf1f..6f0ccfe 100644
--- a/protocols/tl1/ctl/src/main/java/org/onosproject/tl1/impl/DefaultTl1Controller.java
+++ b/protocols/tl1/ctl/src/main/java/org/onosproject/tl1/impl/DefaultTl1Controller.java
@@ -32,12 +32,6 @@
 import io.netty.handler.codec.string.StringDecoder;
 import io.netty.util.CharsetUtil;
 import org.apache.commons.lang.StringUtils;
-import org.apache.felix.scr.annotations.Activate;
-import org.apache.felix.scr.annotations.Component;
-import org.apache.felix.scr.annotations.Deactivate;
-import org.apache.felix.scr.annotations.Reference;
-import org.apache.felix.scr.annotations.ReferenceCardinality;
-import org.apache.felix.scr.annotations.Service;
 import org.onlab.util.Tools;
 import org.onosproject.mastership.MastershipService;
 import org.onosproject.net.DeviceId;
@@ -45,6 +39,11 @@
 import org.onosproject.tl1.Tl1Controller;
 import org.onosproject.tl1.Tl1Device;
 import org.onosproject.tl1.Tl1Listener;
+import org.osgi.service.component.annotations.Activate;
+import org.osgi.service.component.annotations.Component;
+import org.osgi.service.component.annotations.Deactivate;
+import org.osgi.service.component.annotations.Reference;
+import org.osgi.service.component.annotations.ReferenceCardinality;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -70,8 +69,7 @@
  *
  * Per device, we track commands using a simple ctag-keyed map. This assumes the client is sending out unique ctag's.
  */
-@Component(immediate = true)
-@Service
+@Component(immediate = true, service = Tl1Controller.class)
 public class DefaultTl1Controller implements Tl1Controller {
     private final Logger log = LoggerFactory.getLogger(DefaultTl1Controller.class);
 
@@ -80,7 +78,7 @@
     private static final String COMPLD = "COMPLD";
     private static final String DENY = "DENY";
 
-    @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY)
+    @Reference(cardinality = ReferenceCardinality.MANDATORY)
     protected MastershipService mastershipService;
 
     private ConcurrentMap<DeviceId, Tl1Device> deviceMap = new ConcurrentHashMap<>();
diff --git a/protocols/xmpp/core/ctl/src/main/java/org/onosproject/xmpp/core/ctl/XmppControllerImpl.java b/protocols/xmpp/core/ctl/src/main/java/org/onosproject/xmpp/core/ctl/XmppControllerImpl.java
index 44db54d..178018a 100644
--- a/protocols/xmpp/core/ctl/src/main/java/org/onosproject/xmpp/core/ctl/XmppControllerImpl.java
+++ b/protocols/xmpp/core/ctl/src/main/java/org/onosproject/xmpp/core/ctl/XmppControllerImpl.java
@@ -20,25 +20,23 @@
 import com.google.common.collect.Maps;
 import com.google.common.collect.Multimap;
 import com.google.common.collect.Multimaps;
-import org.apache.felix.scr.annotations.Activate;
-import org.apache.felix.scr.annotations.Component;
-import org.apache.felix.scr.annotations.Deactivate;
-import org.apache.felix.scr.annotations.Modified;
-import org.apache.felix.scr.annotations.Property;
-import org.apache.felix.scr.annotations.Reference;
-import org.apache.felix.scr.annotations.ReferenceCardinality;
-import org.apache.felix.scr.annotations.Service;
 import org.onosproject.cfg.ComponentConfigService;
 import org.onosproject.core.CoreService;
 import org.onosproject.xmpp.core.XmppController;
 import org.onosproject.xmpp.core.XmppDevice;
+import org.onosproject.xmpp.core.XmppDeviceAgent;
 import org.onosproject.xmpp.core.XmppDeviceId;
 import org.onosproject.xmpp.core.XmppDeviceListener;
 import org.onosproject.xmpp.core.XmppIqListener;
 import org.onosproject.xmpp.core.XmppMessageListener;
 import org.onosproject.xmpp.core.XmppPresenceListener;
-import org.onosproject.xmpp.core.XmppDeviceAgent;
 import org.osgi.service.component.ComponentContext;
+import org.osgi.service.component.annotations.Activate;
+import org.osgi.service.component.annotations.Component;
+import org.osgi.service.component.annotations.Deactivate;
+import org.osgi.service.component.annotations.Modified;
+import org.osgi.service.component.annotations.Reference;
+import org.osgi.service.component.annotations.ReferenceCardinality;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.xmpp.packet.IQ;
@@ -60,8 +58,7 @@
  * 3. Configuration parameters initialization.
  * 4. Notifing listeners about XMPP events/packets.
  */
-@Component(immediate = true)
-@Service
+@Component(immediate = true, service = XmppController.class)
 public class XmppControllerImpl implements XmppController {
 
     private static final String APP_ID = "org.onosproject.xmpp";
@@ -71,15 +68,15 @@
             LoggerFactory.getLogger(XmppControllerImpl.class);
 
     // core services declaration
-    @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY)
+    @Reference(cardinality = ReferenceCardinality.MANDATORY)
     protected CoreService coreService;
 
-    @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY)
+    @Reference(cardinality = ReferenceCardinality.MANDATORY)
     protected ComponentConfigService cfgService;
 
     // configuration properties definition
-    @Property(name = "xmppPort", value = XMPP_PORT,
-            label = "Port number used by XMPP protocol; default is 5269")
+    //@Property(name = "xmppPort", value = XMPP_PORT,
+    //        label = "Port number used by XMPP protocol; default is 5269")
     private String xmppPort = XMPP_PORT;
 
 
diff --git a/protocols/xmpp/pubsub/ctl/src/main/java/org/onosproject/xmpp/pubsub/ctl/XmppPubSubControllerImpl.java b/protocols/xmpp/pubsub/ctl/src/main/java/org/onosproject/xmpp/pubsub/ctl/XmppPubSubControllerImpl.java
index cb9900d..04fd01b 100644
--- a/protocols/xmpp/pubsub/ctl/src/main/java/org/onosproject/xmpp/pubsub/ctl/XmppPubSubControllerImpl.java
+++ b/protocols/xmpp/pubsub/ctl/src/main/java/org/onosproject/xmpp/pubsub/ctl/XmppPubSubControllerImpl.java
@@ -16,12 +16,6 @@
 
 package org.onosproject.xmpp.pubsub.ctl;
 
-import org.apache.felix.scr.annotations.Activate;
-import org.apache.felix.scr.annotations.Component;
-import org.apache.felix.scr.annotations.Deactivate;
-import org.apache.felix.scr.annotations.Reference;
-import org.apache.felix.scr.annotations.ReferenceCardinality;
-import org.apache.felix.scr.annotations.Service;
 import org.dom4j.Element;
 import org.onosproject.net.DeviceId;
 import org.onosproject.xmpp.core.XmppController;
@@ -37,6 +31,11 @@
 import org.onosproject.xmpp.pubsub.model.XmppRetract;
 import org.onosproject.xmpp.pubsub.model.XmppSubscribe;
 import org.onosproject.xmpp.pubsub.model.XmppUnsubscribe;
+import org.osgi.service.component.annotations.Activate;
+import org.osgi.service.component.annotations.Component;
+import org.osgi.service.component.annotations.Deactivate;
+import org.osgi.service.component.annotations.Reference;
+import org.osgi.service.component.annotations.ReferenceCardinality;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.xmpp.packet.IQ;
@@ -53,14 +52,13 @@
  * The main class implementing XMPP Publish/Subscribe extension.
  * It listens to IQ stanzas and generates PubSub events based on the payload.
  */
-@Component(immediate = true)
-@Service
+@Component(immediate = true, service = XmppPubSubController.class)
 public class XmppPubSubControllerImpl implements XmppPubSubController {
 
     private static final Logger log =
             LoggerFactory.getLogger(XmppPubSubControllerImpl.class);
 
-    @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY)
+    @Reference(cardinality = ReferenceCardinality.MANDATORY)
     protected XmppController xmppController;
 
     protected Set<XmppPublishEventsListener> xmppPublishEventsListeners =