diff --git a/core/api/src/main/java/org/onosproject/net/PortNumber.java b/core/api/src/main/java/org/onosproject/net/PortNumber.java
index 18f822c..1de463b 100644
--- a/core/api/src/main/java/org/onosproject/net/PortNumber.java
+++ b/core/api/src/main/java/org/onosproject/net/PortNumber.java
@@ -96,6 +96,17 @@
     }
 
     /**
+     * Returns the port number representing the specified long value and name.
+     *
+     * @param number port number as string value
+     * @param name port name as string value
+     * @return port number
+     */
+    public static PortNumber portNumber(String number, String name) {
+        return new PortNumber(UnsignedLongs.decode(number), name);
+    }
+
+    /**
      * Indicates whether or not this port number is a reserved logical one or
      * whether it corresponds to a normal physical port of a device or NIC.
      *
diff --git a/web/api/src/main/java/org/onosproject/rest/resources/ConfigProvider.java b/web/api/src/main/java/org/onosproject/rest/resources/ConfigProvider.java
index da76b86..bfc1de7 100644
--- a/web/api/src/main/java/org/onosproject/rest/resources/ConfigProvider.java
+++ b/web/api/src/main/java/org/onosproject/rest/resources/ConfigProvider.java
@@ -278,9 +278,6 @@
     }
 
     private void updatePorts(ConnectPoint src, ConnectPoint dst, SparseAnnotations annotations) {
-        if (annotations == null) {
-            return;
-        }
         final String linkType = annotations.value("optical.type");
         if ("cross-connect".equals(linkType)) {
             String value = annotations.value("bandwidth").trim();
@@ -468,7 +465,7 @@
     // Produces set of annotations from the given JSON node.
     private SparseAnnotations annotations(JsonNode node) {
         if (node == null) {
-            return null;
+            return (SparseAnnotations) DefaultAnnotations.EMPTY;
         }
 
         DefaultAnnotations.Builder builder = DefaultAnnotations.builder();
@@ -483,8 +480,9 @@
     // Produces a connection point from the specified uri/port text.
     private ConnectPoint connectPoint(String text) {
         int i = text.lastIndexOf("/");
+        String portStr = text.substring(i + 1);
         return new ConnectPoint(deviceId(text.substring(0, i)),
-                                portNumber(text.substring(i + 1)));
+                                portNumber(portStr.matches(".*[a-zA-Z].*") ? "0" : portStr, portStr));
     }
 
     // Returns string form of the named property in the given JSON object.
