diff --git a/apps/mappingmanagement/api/src/main/java/org/onosproject/mapping/MappingStore.java b/apps/mappingmanagement/api/src/main/java/org/onosproject/mapping/MappingStore.java
index a46ce3c..fb59b7f 100644
--- a/apps/mappingmanagement/api/src/main/java/org/onosproject/mapping/MappingStore.java
+++ b/apps/mappingmanagement/api/src/main/java/org/onosproject/mapping/MappingStore.java
@@ -80,7 +80,7 @@
      * @param type    store type
      * @param mapping the mapping to add
      */
-    void storeMapping(Type type, Mapping mapping);
+    void storeMapping(Type type, MappingEntry mapping);
 
     /**
      * Marks a mapping for deletion. Actual deletion will occur when the
diff --git a/apps/mappingmanagement/mgr/src/main/java/org/onosproject/mapping/impl/DistributedMappingStore.java b/apps/mappingmanagement/mgr/src/main/java/org/onosproject/mapping/impl/DistributedMappingStore.java
index d84032f..8465e45 100644
--- a/apps/mappingmanagement/mgr/src/main/java/org/onosproject/mapping/impl/DistributedMappingStore.java
+++ b/apps/mappingmanagement/mgr/src/main/java/org/onosproject/mapping/impl/DistributedMappingStore.java
@@ -191,7 +191,7 @@
     }
 
     @Override
-    public void storeMapping(Type type, Mapping mapping) {
+    public void storeMapping(Type type, MappingEntry mapping) {
 
         getStore(type).put(mapping.id(), mapping);
     }
diff --git a/apps/mappingmanagement/mgr/src/main/java/org/onosproject/mapping/impl/SimpleMappingStore.java b/apps/mappingmanagement/mgr/src/main/java/org/onosproject/mapping/impl/SimpleMappingStore.java
index 8b02868..0eca4bb 100644
--- a/apps/mappingmanagement/mgr/src/main/java/org/onosproject/mapping/impl/SimpleMappingStore.java
+++ b/apps/mappingmanagement/mgr/src/main/java/org/onosproject/mapping/impl/SimpleMappingStore.java
@@ -26,6 +26,7 @@
 import org.onosproject.mapping.DefaultMappingEntry;
 import org.onosproject.mapping.Mapping;
 import org.onosproject.mapping.MappingEntry;
+import org.onosproject.mapping.MappingEntry.MappingEntryState;
 import org.onosproject.mapping.MappingEvent;
 import org.onosproject.mapping.MappingId;
 import org.onosproject.mapping.MappingStore;
@@ -213,14 +214,15 @@
     }
 
     @Override
-    public void storeMapping(Type type, Mapping mapping) {
+    public void storeMapping(Type type, MappingEntry mapping) {
 
         List<StoredMappingEntry> entries =
                 getMappingEntriesInternal(type, mapping.deviceId(), mapping.id());
 
         synchronized (entries) {
             if (!entries.contains(mapping)) {
-                StoredMappingEntry entry = new DefaultMappingEntry(mapping);
+                StoredMappingEntry entry =
+                        new DefaultMappingEntry(mapping, mapping.state());
                 entries.add(entry);
             }
         }
@@ -252,7 +254,7 @@
             for (StoredMappingEntry stored : entries) {
                 if (stored.equals(entry)) {
                     if (stored.state() == PENDING_ADD) {
-                        stored.setState(MappingEntry.MappingEntryState.ADDED);
+                        stored.setState(MappingEntryState.ADDED);
                         return new MappingEvent(MAPPING_ADDED, entry);
                     }
                     return new MappingEvent(MAPPING_UPDATED, entry);
diff --git a/apps/mappingmanagement/mgr/src/test/java/org/onosproject/mapping/impl/DistributedMappingStoreTest.java b/apps/mappingmanagement/mgr/src/test/java/org/onosproject/mapping/impl/DistributedMappingStoreTest.java
index 9246f6d..e8cb335 100644
--- a/apps/mappingmanagement/mgr/src/test/java/org/onosproject/mapping/impl/DistributedMappingStoreTest.java
+++ b/apps/mappingmanagement/mgr/src/test/java/org/onosproject/mapping/impl/DistributedMappingStoreTest.java
@@ -22,10 +22,12 @@
 import org.onlab.packet.ChassisId;
 import org.onlab.packet.IpPrefix;
 import org.onosproject.mapping.DefaultMapping;
+import org.onosproject.mapping.DefaultMappingEntry;
 import org.onosproject.mapping.DefaultMappingKey;
 import org.onosproject.mapping.DefaultMappingTreatment;
 import org.onosproject.mapping.DefaultMappingValue;
 import org.onosproject.mapping.Mapping;
+import org.onosproject.mapping.MappingEntry;
 import org.onosproject.mapping.MappingKey;
 import org.onosproject.mapping.MappingTreatment;
 import org.onosproject.mapping.MappingValue;
@@ -59,8 +61,8 @@
     private static final String IP_ADDRESS = "1.2.3.4/24";
 
     private DistributedMappingStore mappingStore;
-    private Mapping mapping1;
-    private Mapping mapping2;
+    private MappingEntry mapping1;
+    private MappingEntry mapping2;
 
     private Device device1;
     private Device device2;
@@ -103,20 +105,23 @@
                 "foo.inc", "0", "0", "0", null,
                 DefaultAnnotations.builder().build());
 
-        mapping1 = DefaultMapping.builder()
+        Mapping originalMapping1 = DefaultMapping.builder()
                 .forDevice(DEVICE_ID_1)
                 .withId(1000L)
                 .withKey(key)
                 .withValue(value)
                 .build();
 
-        mapping2 = DefaultMapping.builder()
+        Mapping originalMapping2 = DefaultMapping.builder()
                 .forDevice(DEVICE_ID_2)
                 .withId(2000L)
                 .withKey(key)
                 .withValue(value)
                 .build();
 
+        mapping1 = new DefaultMappingEntry(originalMapping1);
+        mapping2 = new DefaultMappingEntry(originalMapping2);
+
         mappingStore.activate();
     }
 
