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 d4a8406..b2d5f39 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
@@ -15,8 +15,8 @@
  */
 package org.onosproject.ofagent.cli;
 
-import org.apache.karaf.shell.commands.Argument;
-import org.apache.karaf.shell.commands.Command;
+import org.apache.karaf.shell.api.action.Argument;
+import org.apache.karaf.shell.api.action.Command;
 import org.onlab.packet.IpAddress;
 import org.onlab.packet.TpPort;
 import org.onosproject.cli.AbstractShellCommand;
@@ -46,7 +46,7 @@
     private String strCtrl;
 
     @Override
-    protected void execute() {
+    protected void doExecute() {
         if (!isValidController(strCtrl)) {
             error("Invalid controller string %s, must be IP:PORT", strCtrl);
             return;
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 b70d191..66d3961 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
@@ -16,8 +16,8 @@
 package org.onosproject.ofagent.cli;
 
 import com.google.common.collect.Sets;
-import org.apache.karaf.shell.commands.Argument;
-import org.apache.karaf.shell.commands.Command;
+import org.apache.karaf.shell.api.action.Argument;
+import org.apache.karaf.shell.api.action.Command;
 import org.onlab.packet.IpAddress;
 import org.onlab.packet.TpPort;
 import org.onosproject.cli.AbstractShellCommand;
@@ -52,7 +52,7 @@
     private String[] strCtrls = {};
 
     @Override
-    protected void execute() {
+    protected void doExecute() {
         Set<OFController> ctrls = Sets.newHashSet();
         for (String strCtrl : strCtrls) {
             if (!isValidController(strCtrl)) {
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 042df71..578451a 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
@@ -15,8 +15,8 @@
  */
 package org.onosproject.ofagent.cli;
 
-import org.apache.karaf.shell.commands.Argument;
-import org.apache.karaf.shell.commands.Command;
+import org.apache.karaf.shell.api.action.Argument;
+import org.apache.karaf.shell.api.action.Command;
 import org.onlab.packet.IpAddress;
 import org.onlab.packet.TpPort;
 import org.onosproject.cli.AbstractShellCommand;
@@ -46,7 +46,7 @@
     private String strCtrl;
 
     @Override
-    protected void execute() {
+    protected void doExecute() {
         if (!isValidController(strCtrl)) {
             error("Invalid controller string %s, must be IP:PORT", strCtrl);
             return;
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 be8d838..845950a 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
@@ -15,7 +15,7 @@
  */
 package org.onosproject.ofagent.cli;
 
-import org.apache.karaf.shell.commands.Command;
+import org.apache.karaf.shell.api.action.Command;
 import org.onosproject.cli.AbstractShellCommand;
 import org.onosproject.ofagent.api.OFAgentService;
 
@@ -32,7 +32,7 @@
     private static final String CTRL = "%s:%s";
 
     @Override
-    protected void execute() {
+    protected void doExecute() {
         OFAgentService service = get(OFAgentService.class);
         print(FORMAT, "Network", "Status", "Controllers");
 
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 8d3cc75..c201858 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
@@ -15,8 +15,8 @@
  */
 package org.onosproject.ofagent.cli;
 
-import org.apache.karaf.shell.commands.Argument;
-import org.apache.karaf.shell.commands.Command;
+import org.apache.karaf.shell.api.action.Argument;
+import org.apache.karaf.shell.api.action.Command;
 import org.onosproject.cli.AbstractShellCommand;
 import org.onosproject.incubator.net.virtual.NetworkId;
 import org.onosproject.ofagent.api.OFAgent;
@@ -33,7 +33,7 @@
     private long networkId = NetworkId.NONE.id();
 
     @Override
-    protected void execute() {
+    protected void doExecute() {
         OFAgentAdminService adminService = get(OFAgentAdminService.class);
         OFAgent removed = adminService.removeAgent(NetworkId.networkId(networkId));
         if (removed != null) {
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 390101e..dfd0c83 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
@@ -15,8 +15,8 @@
  */
 package org.onosproject.ofagent.cli;
 
-import org.apache.karaf.shell.commands.Argument;
-import org.apache.karaf.shell.commands.Command;
+import org.apache.karaf.shell.api.action.Argument;
+import org.apache.karaf.shell.api.action.Command;
 import org.onosproject.cli.AbstractShellCommand;
 import org.onosproject.incubator.net.virtual.NetworkId;
 import org.onosproject.ofagent.api.OFAgentAdminService;
@@ -32,7 +32,7 @@
     private long networkId = NetworkId.NONE.id();
 
     @Override
-    protected void execute() {
+    protected void doExecute() {
         OFAgentAdminService adminService = get(OFAgentAdminService.class);
         adminService.startAgent(NetworkId.networkId(networkId));
         print("Successfully started OFAgent for network %s", networkId);
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 95367d9..087353d 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
@@ -15,8 +15,8 @@
  */
 package org.onosproject.ofagent.cli;
 
-import org.apache.karaf.shell.commands.Argument;
-import org.apache.karaf.shell.commands.Command;
+import org.apache.karaf.shell.api.action.Argument;
+import org.apache.karaf.shell.api.action.Command;
 import org.onosproject.cli.AbstractShellCommand;
 import org.onosproject.incubator.net.virtual.NetworkId;
 import org.onosproject.ofagent.api.OFAgentAdminService;
@@ -32,7 +32,7 @@
     private long networkId = NetworkId.NONE.id();
 
     @Override
-    protected void execute() {
+    protected void doExecute() {
         OFAgentAdminService adminService = get(OFAgentAdminService.class);
         adminService.stopAgent(NetworkId.networkId(networkId));
         print("Successfully stopped OFAgent for network %s", networkId);
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 4ac5f15..6539c52 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
@@ -15,8 +15,8 @@
  */
 package org.onosproject.ofagent.cli;
 
-import org.apache.karaf.shell.commands.Argument;
-import org.apache.karaf.shell.commands.Command;
+import org.apache.karaf.shell.api.action.Argument;
+import org.apache.karaf.shell.api.action.Command;
 import org.onosproject.cli.AbstractShellCommand;
 import org.onosproject.incubator.net.virtual.NetworkId;
 import org.onosproject.ofagent.api.OFSwitch;
@@ -38,7 +38,7 @@
     private long networkId = NetworkId.NONE.id();
 
     @Override
-    protected void execute() {
+    protected void doExecute() {
         OFSwitchService service = get(OFSwitchService.class);
 
         Set<OFSwitch> ofSwitches;
