diff --git a/core/net/src/main/java/org/onosproject/net/device/impl/DeviceManager.java b/core/net/src/main/java/org/onosproject/net/device/impl/DeviceManager.java
index 5f6fb04..60fd95a 100644
--- a/core/net/src/main/java/org/onosproject/net/device/impl/DeviceManager.java
+++ b/core/net/src/main/java/org/onosproject/net/device/impl/DeviceManager.java
@@ -352,7 +352,8 @@
             final Device device = getDevice(deviceId);
 
             List<PortDescription> descs = ports.stream().map(
-              port -> (!(Device.Type.ROADM.equals(device.type()))) ?
+              port -> (!(Device.Type.ROADM.equals(device.type()) ||
+                        (Device.Type.OTN.equals(device.type())))) ?
                   new DefaultPortDescription(port.number(), false,
                           port.type(), port.portSpeed()) :
                       OpticalPortOperator.descriptionOf(port, false)
@@ -439,7 +440,8 @@
                 return;
             }
             Device device = nullIsNotFound(getDevice(deviceId), "Device not found");
-            if ((Device.Type.ROADM.equals(device.type()))) {
+            if ((Device.Type.ROADM.equals(device.type())) ||
+                (Device.Type.OTN.equals(device.type()))) {
                 Port port = getPort(deviceId, portDescription.portNumber());
                 portDescription = OpticalPortOperator.descriptionOf(port, portDescription.isEnabled());
             }
diff --git a/core/net/src/main/java/org/onosproject/net/device/impl/OpticalPortOperator.java b/core/net/src/main/java/org/onosproject/net/device/impl/OpticalPortOperator.java
index 8f60149..ca720e2 100644
--- a/core/net/src/main/java/org/onosproject/net/device/impl/OpticalPortOperator.java
+++ b/core/net/src/main/java/org/onosproject/net/device/impl/OpticalPortOperator.java
@@ -23,6 +23,7 @@
 import org.onosproject.net.AnnotationKeys;
 import org.onosproject.net.DefaultAnnotations;
 import org.onosproject.net.OchPort;
+import org.onosproject.net.OtuPort;
 import org.onosproject.net.OduCltPort;
 import org.onosproject.net.OmsPort;
 import org.onosproject.net.Port;
@@ -32,6 +33,7 @@
 import org.onosproject.net.device.OchPortDescription;
 import org.onosproject.net.device.OduCltPortDescription;
 import org.onosproject.net.device.OmsPortDescription;
+import org.onosproject.net.device.OtuPortDescription;
 import org.onosproject.net.device.PortDescription;
 import org.slf4j.Logger;
 
@@ -115,6 +117,9 @@
             case COPPER:
                 return new DefaultPortDescription(port, descr.isEnabled(), descr.type(),
                         descr.portSpeed(), sa);
+            case OTU:
+                OtuPortDescription otu = (OtuPortDescription) descr;
+                return new OtuPortDescription(port, otu.isEnabled(), otu.signalType(), sa);
             default:
                 log.warn("Unsupported optical port type {} - can't update", descr.type());
                 return descr;
@@ -183,6 +188,9 @@
             case ODUCLT:
                 OduCltPort odu = (OduCltPort) port;
                 return new OduCltPortDescription(ptn, isup, odu.signalType(), an);
+            case OTU:
+                OtuPort otu = (OtuPort) port;
+                return new OtuPortDescription(ptn, isup, otu.signalType(), an);
             default:
                 return new DefaultPortDescription(ptn, isup, port.type(), port.portSpeed(), an);
         }
diff --git a/core/net/src/test/java/org/onosproject/net/device/impl/BasicDeviceOperatorTest.java b/core/net/src/test/java/org/onosproject/net/device/impl/BasicDeviceOperatorTest.java
index 138283c..54e7a4a 100644
--- a/core/net/src/test/java/org/onosproject/net/device/impl/BasicDeviceOperatorTest.java
+++ b/core/net/src/test/java/org/onosproject/net/device/impl/BasicDeviceOperatorTest.java
@@ -34,11 +34,13 @@
 import static org.junit.Assert.assertEquals;
 import static org.onosproject.net.Device.Type.ROADM;
 import static org.onosproject.net.Device.Type.SWITCH;
+import static org.onosproject.net.Device.Type.OTN;
 
 public class BasicDeviceOperatorTest {
 
     private static final String NAME1 = "of:foo";
     private static final String NAME2 = "of:bar";
+    private static final String NAME3 = "of:otn";
     private static final String OWNER = "somebody";
     private static final URI DURI = URI.create(NAME1);
     private static final String MFR = "whitebox";
@@ -64,6 +66,7 @@
 
     private static final BasicDeviceConfig SW_BDC = new BasicDeviceConfig();
     private static final BasicDeviceConfig RD_BDC = new BasicDeviceConfig();
+    private static final BasicDeviceConfig OT_BDC = new BasicDeviceConfig();
 
     @Before
     public void setUp() {
@@ -72,6 +75,8 @@
         RD_BDC.init(DeviceId.deviceId(NAME2), NAME2, JsonNodeFactory.instance.objectNode(), mapper, delegate);
         RD_BDC.type(ROADM).manufacturer(MANUFACTURER).hwVersion(HW_VERSION)
                 .swVersion(SW_VERSION).serial(SERIAL).managementAddress(MANAGEMENT_ADDRESS).driver(DRIVER).owner(OWNER);
+        OT_BDC.init(DeviceId.deviceId(NAME3), NAME3, JsonNodeFactory.instance.objectNode(), mapper, delegate);
+        OT_BDC.type(OTN);
     }
 
     @Test
@@ -92,5 +97,9 @@
         assertEquals("Wrong serial", SERIAL, desc.serialNumber());
         assertEquals("Wrong management Address", MANAGEMENT_ADDRESS,
                      desc.annotations().value(AnnotationKeys.MANAGEMENT_ADDRESS));
+
+        // override Device type
+        desc = BasicDeviceOperator.combine(OT_BDC, DEV1);
+        assertEquals(OTN, desc.type());
     }
 }
