diff --git a/cli/src/main/java/org/onosproject/cli/net/DeviceSetControllersCommand.java b/cli/src/main/java/org/onosproject/cli/net/DeviceSetControllersCommand.java
index 556dcc9..5d0707d 100644
--- a/cli/src/main/java/org/onosproject/cli/net/DeviceSetControllersCommand.java
+++ b/cli/src/main/java/org/onosproject/cli/net/DeviceSetControllersCommand.java
@@ -18,7 +18,10 @@
 
 import org.apache.karaf.shell.commands.Argument;
 import org.apache.karaf.shell.commands.Command;
+import org.onlab.packet.IpAddress;
 import org.onosproject.cli.AbstractShellCommand;
+import org.onosproject.net.Annotations;
+import org.onosproject.net.DefaultAnnotations;
 import org.onosproject.net.DeviceId;
 import org.onosproject.net.behaviour.ControllerConfig;
 import org.onosproject.net.behaviour.ControllerInfo;
@@ -52,7 +55,7 @@
     protected void execute() {
 
         Arrays.asList(controllersListStrings).forEach(
-                cInfoString -> newControllers.add(new ControllerInfo(cInfoString)));
+                cInfoString -> newControllers.add(parseCInfoString(cInfoString)));
         DriverService service = get(DriverService.class);
         deviceId = DeviceId.deviceId(uri);
         DriverHandler h = service.createHandler(deviceId);
@@ -69,4 +72,31 @@
         print("size %d", config.getControllers().size());
     }
 
+
+    private ControllerInfo parseCInfoString(String cInfoString) {
+        Annotations annotation;
+
+        String[] config = cInfoString.split(",");
+        if (config.length == 2) {
+            String[] pair = config[1].split("=");
+
+            if (pair.length == 2) {
+                annotation = DefaultAnnotations.builder()
+                        .set(pair[0], pair[1]).build();
+            } else {
+                print("Wrong format {}", config[1]);
+                return null;
+            }
+
+            String[] data = config[0].split(":");
+            String type = data[0];
+            IpAddress ip = IpAddress.valueOf(data[1]);
+            int port = Integer.parseInt(data[2]);
+
+            return new ControllerInfo(ip, port, type, annotation);
+        } else {
+            print(config[0]);
+            return new ControllerInfo(config[0]);
+        }
+    }
 }
