diff --git a/core/api/src/main/java/org/onosproject/net/DefaultAnnotations.java b/core/api/src/main/java/org/onosproject/net/DefaultAnnotations.java
index 4215d65..7c97ecd 100644
--- a/core/api/src/main/java/org/onosproject/net/DefaultAnnotations.java
+++ b/core/api/src/main/java/org/onosproject/net/DefaultAnnotations.java
@@ -21,6 +21,8 @@
 import java.util.Objects;
 import java.util.Set;
 
+import com.google.common.collect.Maps;
+
 import static com.google.common.base.Preconditions.checkNotNull;
 
 /**
@@ -59,6 +61,15 @@
     }
 
     /**
+     * Returns the annotations as a map.
+     *
+     * @return a copy of the contents of the annotations as a map.
+     */
+    public HashMap<String, String> asMap() {
+        return Maps.newHashMap(this.map);
+    }
+
+    /**
      * Creates a new set of annotations using clone of the specified hash map.
      *
      * @param map hash map of key/value pairs
diff --git a/core/store/serializers/src/main/java/org/onosproject/store/serializers/AnnotationsSerializer.java b/core/store/serializers/src/main/java/org/onosproject/store/serializers/AnnotationsSerializer.java
new file mode 100644
index 0000000..febb4ad
--- /dev/null
+++ b/core/store/serializers/src/main/java/org/onosproject/store/serializers/AnnotationsSerializer.java
@@ -0,0 +1,32 @@
+package org.onosproject.store.serializers;
+
+import org.onosproject.net.DefaultAnnotations;
+
+import com.esotericsoftware.kryo.Kryo;
+import com.esotericsoftware.kryo.Serializer;
+import com.esotericsoftware.kryo.io.Input;
+import com.esotericsoftware.kryo.io.Output;
+
+import java.util.HashMap;
+
+public class AnnotationsSerializer extends Serializer<DefaultAnnotations> {
+
+    public AnnotationsSerializer() {
+        super(false, true);
+    }
+
+    @Override
+    public void write(Kryo kryo, Output output, DefaultAnnotations object) {
+        kryo.writeObject(output, object.asMap());
+    }
+
+    @Override
+    public DefaultAnnotations read(Kryo kryo, Input input, Class<DefaultAnnotations> type) {
+        DefaultAnnotations.Builder b = DefaultAnnotations.builder();
+        HashMap<String, String> map = kryo.readObject(input, HashMap.class);
+        map.forEach((k, v) -> b.set(k, v));
+
+        return b.build();
+    }
+
+}
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 3c14cb0..8996e3b 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
@@ -264,7 +264,6 @@
                     Device.Type.class,
                     Port.Type.class,
                     ChassisId.class,
-                    DefaultAnnotations.class,
                     DefaultControllerNode.class,
                     DefaultDevice.class,
                     DefaultDeviceDescription.class,
@@ -411,6 +410,7 @@
             .register(new MastershipTermSerializer(), MastershipTerm.class)
             .register(new HostLocationSerializer(), HostLocation.class)
             .register(new DefaultOutboundPacketSerializer(), DefaultOutboundPacket.class)
+            .register(new AnnotationsSerializer(), DefaultAnnotations.class)
             .register(Versioned.class)
             .register(MapEvent.class)
             .register(MapEvent.Type.class)
