diff --git a/apps/newoptical/src/main/java/org/onosproject/newoptical/OpticalPathProvisioner.java b/apps/newoptical/src/main/java/org/onosproject/newoptical/OpticalPathProvisioner.java
index 8dc73c1..7ef2c00 100644
--- a/apps/newoptical/src/main/java/org/onosproject/newoptical/OpticalPathProvisioner.java
+++ b/apps/newoptical/src/main/java/org/onosproject/newoptical/OpticalPathProvisioner.java
@@ -593,11 +593,13 @@
 
             // Avoid inactive links
             if (l.state() == Link.State.INACTIVE) {
+                log.trace("{} is not active", l);
                 return -1.0;
             }
 
             // Avoid cross connect links with used ports
             if (isCrossConnectLink(l) && usedCrossConnectLinkSet.contains(l)) {
+                log.trace("Cross connect {} in use", l);
                 return -1.0;
             }
 
@@ -606,6 +608,7 @@
                 if (hasEnoughBandwidth(l.src()) && hasEnoughBandwidth(l.dst())) {
                     return 1.0;
                 } else {
+                    log.trace("Not enought bandwidth on {}", l);
                     return -1.0;
                 }
             } else {
@@ -639,7 +642,13 @@
                     // Check if enough amount of bandwidth resource remains
                     ContinuousResource resource = Resources.continuous(cp.deviceId(), cp.port(), Bandwidth.class)
                             .resource(bandwidth.bps());
-                    return resourceService.isAvailable(resource);
+                    try {
+                        return resourceService.isAvailable(resource);
+                    } catch (Exception e) {
+                        log.error("Resource service failed checking availability of {}",
+                                  resource, e);
+                        throw e;
+                    }
                 }
             }
             return false;
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 3df2ff8..8d8c30a 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
@@ -19,8 +19,11 @@
 import org.apache.karaf.shell.commands.Command;
 import org.onlab.util.Bandwidth;
 import org.onosproject.cli.AbstractShellCommand;
+import org.onosproject.cli.net.ConnectPointCompleter;
 import org.onosproject.newoptical.api.OpticalConnectivityId;
 import org.onosproject.newoptical.api.OpticalPathService;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 import org.onosproject.net.ConnectPoint;
 import org.onosproject.net.DeviceId;
 import org.onosproject.net.PortNumber;
@@ -29,6 +32,11 @@
         description = "Configure optical domain connectivity")
 public class AddOpticalConnectivityCommand extends AbstractShellCommand {
 
+    private final Logger log = LoggerFactory.getLogger(getClass());
+
+    // for OSGi import workaround
+    ConnectPointCompleter portCompleter;
+
     @Argument(index = 0, name = "ingress", description = "Ingress connect point",
             required = true, multiValued = false)
     String ingressStr = null;
@@ -41,8 +49,9 @@
             required = false, multiValued = false)
     String bandwidthStr = null;
 
+    // not supported yet
     @Argument(index = 3, name = "latency", description = "Latency",
-            required = true, multiValued = false)
+            required = false, multiValued = false)
     String latencyStr = null;
 
 
@@ -63,10 +72,15 @@
         print("Trying to setup connectivity between %s and %s.", ingress, egress);
         OpticalConnectivityId id = opticalPathService.setupConnectivity(ingress, egress, bandwidth, null);
         if (id == null) {
-            print("Failed.");
+            print("Failed. See ONOS log for more details.");
+            print(" log:set TRACE org.onosproject.newoptical.OpticalPathProvisioner");
             return;
         }
+        // FIXME This is the last chance to know the Optical path ID.
+        //       there's no other way to know existing Optical Path ID
         print("Optical path ID : %s", id.id());
+        log.info("Optical path ID {} for connectivity between %s and %s: {}",
+                 id.id(), ingress, egress);
     }
 
     private ConnectPoint readConnectPoint(String str) {
diff --git a/apps/newoptical/src/main/resources/OSGI-INF/blueprint/shell-config.xml b/apps/newoptical/src/main/resources/OSGI-INF/blueprint/shell-config.xml
index 7d7f035..72bdcaa 100644
--- a/apps/newoptical/src/main/resources/OSGI-INF/blueprint/shell-config.xml
+++ b/apps/newoptical/src/main/resources/OSGI-INF/blueprint/shell-config.xml
@@ -18,10 +18,18 @@
     <command-bundle xmlns="http://karaf.apache.org/xmlns/shell/v1.1.0">
         <command>
             <action class="org.onosproject.newoptical.cli.AddOpticalConnectivityCommand"/>
+            <completers>
+                <ref component-id="connectPointCompleter"/>
+                <ref component-id="connectPointCompleter"/>
+                <null/>
+            </completers>
         </command>
         <command>
             <action class="org.onosproject.newoptical.cli.RemoveOpticalConnectivityCommand"/>
         </command>
     </command-bundle>
 
+    <!-- TODO complete only applicable ports -->
+    <bean id="connectPointCompleter" class="org.onosproject.cli.net.ConnectPointCompleter"/>
+
 </blueprint>
