diff --git a/core/store/serializers/src/main/java/org/onosproject/store/serializers/DefaultPortSerializer.java b/core/store/serializers/src/main/java/org/onosproject/store/serializers/DefaultPortSerializer.java
index 5d5a463..60d09fb 100644
--- a/core/store/serializers/src/main/java/org/onosproject/store/serializers/DefaultPortSerializer.java
+++ b/core/store/serializers/src/main/java/org/onosproject/store/serializers/DefaultPortSerializer.java
@@ -15,8 +15,10 @@
  */
 package org.onosproject.store.serializers;
 
+import org.onosproject.net.Annotations;
 import org.onosproject.net.DefaultPort;
 import org.onosproject.net.Element;
+import org.onosproject.net.Port;
 import org.onosproject.net.PortNumber;
 
 import com.esotericsoftware.kryo.Kryo;
@@ -43,15 +45,21 @@
         kryo.writeClassAndObject(output, object.element());
         kryo.writeObject(output, object.number());
         output.writeBoolean(object.isEnabled());
+        kryo.writeObject(output, object.type());
+        output.writeLong(object.portSpeed());
+        kryo.writeClassAndObject(output, object.annotations());
     }
 
     @Override
-    public DefaultPort read(Kryo kryo, Input input,
-            Class<DefaultPort> type) {
+    public DefaultPort read(Kryo kryo, Input input, Class<DefaultPort> aClass) {
         Element element = (Element) kryo.readClassAndObject(input);
         PortNumber number = kryo.readObject(input, PortNumber.class);
         boolean isEnabled = input.readBoolean();
+        Port.Type type = kryo.readObject(input, Port.Type.class);
+        long portSpeed = input.readLong();
+        Annotations annotations = (Annotations) kryo.readClassAndObject(input);
 
-        return new DefaultPort(element, number, isEnabled);
+        return new DefaultPort(element, number, isEnabled, type, portSpeed, annotations);
     }
+
 }
diff --git a/core/store/serializers/src/main/java/org/onosproject/store/serializers/KryoNamespaces.java b/core/store/serializers/src/main/java/org/onosproject/store/serializers/KryoNamespaces.java
index 17eb374..a918e2d 100644
--- a/core/store/serializers/src/main/java/org/onosproject/store/serializers/KryoNamespaces.java
+++ b/core/store/serializers/src/main/java/org/onosproject/store/serializers/KryoNamespaces.java
@@ -28,6 +28,7 @@
 import org.onlab.packet.IpPrefix;
 import org.onlab.packet.MacAddress;
 import org.onlab.packet.VlanId;
+import org.onlab.util.Frequency;
 import org.onlab.util.KryoNamespace;
 import org.onosproject.app.ApplicationState;
 import org.onosproject.cluster.ControllerNode;
@@ -41,6 +42,7 @@
 import org.onosproject.core.DefaultGroupId;
 import org.onosproject.core.Version;
 import org.onosproject.mastership.MastershipTerm;
+import org.onosproject.net.Annotations;
 import org.onosproject.net.ConnectPoint;
 import org.onosproject.net.DefaultAnnotations;
 import org.onosproject.net.DefaultDevice;
@@ -55,6 +57,9 @@
 import org.onosproject.net.HostLocation;
 import org.onosproject.net.Link;
 import org.onosproject.net.LinkKey;
+import org.onosproject.net.OchPort;
+import org.onosproject.net.OduCltPort;
+import org.onosproject.net.OmsPort;
 import org.onosproject.net.Port;
 import org.onosproject.net.PortNumber;
 import org.onosproject.net.device.DefaultDeviceDescription;
@@ -348,8 +353,10 @@
                     AnnotationConstraint.class,
                     BooleanConstraint.class,
                     IntentOperation.class,
-                    FlowRuleExtPayLoad.class
-                    )
+                    FlowRuleExtPayLoad.class,
+                    Frequency.class,
+                    DefaultAnnotations.class
+            )
             .register(new DefaultApplicationIdSerializer(), DefaultApplicationId.class)
             .register(new URISerializer(), URI.class)
             .register(new NodeIdSerializer(), NodeId.class)
@@ -365,6 +372,14 @@
             .register(new DefaultOutboundPacketSerializer(), DefaultOutboundPacket.class)
             .register(Versioned.class)
             .register(DefaultGroupId.class)
+            .register(Annotations.class)
+            .register(OmsPort.class)
+            .register(OchPort.class)
+            .register(OchPort.SignalType.class)
+            .register(OchPort.GridType.class)
+            .register(OchPort.ChannelSpacing.class)
+            .register(OduCltPort.class)
+            .register(OduCltPort.SignalType.class)
             .register(
                     MplsIntent.class,
                     MplsPathIntent.class,
@@ -373,7 +388,7 @@
                     MplsLabel.class,
                     org.onlab.packet.MplsLabel.class,
                     org.onlab.packet.MPLS.class
-                    )
+            )
 
             .build();
 
