diff --git a/core/store/primitives/src/main/java/org/onosproject/store/primitives/impl/AntiEntropyAdvertisement.java b/core/store/primitives/src/main/java/org/onosproject/store/primitives/impl/AntiEntropyAdvertisement.java
index 3914ffd..df51a64 100644
--- a/core/store/primitives/src/main/java/org/onosproject/store/primitives/impl/AntiEntropyAdvertisement.java
+++ b/core/store/primitives/src/main/java/org/onosproject/store/primitives/impl/AntiEntropyAdvertisement.java
@@ -17,6 +17,7 @@
 
 import com.google.common.base.MoreObjects;
 import com.google.common.collect.ImmutableMap;
+
 import org.onosproject.cluster.NodeId;
 
 import java.util.Map;
@@ -28,7 +29,6 @@
  */
 public class AntiEntropyAdvertisement<K> {
 
-    private final long creationTime;
     private final NodeId sender;
     private final Map<K, MapValue.Digest> digest;
 
@@ -40,21 +40,11 @@
      */
     public AntiEntropyAdvertisement(NodeId sender,
                                     Map<K, MapValue.Digest> digest) {
-        this.creationTime = System.currentTimeMillis();
         this.sender = checkNotNull(sender);
         this.digest = ImmutableMap.copyOf(checkNotNull(digest));
     }
 
     /**
-     * Returns the ad creation time.
-     *
-     * @return ad creation time
-     */
-    public long creationTime() {
-        return creationTime;
-    }
-
-    /**
      * Returns the sender's node ID.
      *
      * @return the sender's node ID
diff --git a/core/store/primitives/src/main/java/org/onosproject/store/primitives/impl/EventuallyConsistentMapImpl.java b/core/store/primitives/src/main/java/org/onosproject/store/primitives/impl/EventuallyConsistentMapImpl.java
index b45e1b2..ba43143 100644
--- a/core/store/primitives/src/main/java/org/onosproject/store/primitives/impl/EventuallyConsistentMapImpl.java
+++ b/core/store/primitives/src/main/java/org/onosproject/store/primitives/impl/EventuallyConsistentMapImpl.java
@@ -581,6 +581,7 @@
     }
 
     private void sendAdvertisementToPeer(NodeId peer) {
+        long adCreationTime = System.currentTimeMillis();
         AntiEntropyAdvertisement<K> ad = createAdvertisement();
         clusterCommunicator.sendAndReceive(ad,
                 antiEntropyAdvertisementSubject,
@@ -591,7 +592,7 @@
                     if (error != null) {
                         log.debug("Failed to send anti-entropy advertisement to {}", peer, error);
                     } else if (result == AntiEntropyResponse.PROCESSED) {
-                        antiEntropyTimes.put(peer, ad.creationTime());
+                        antiEntropyTimes.put(peer, adCreationTime);
                     }
                 });
     }
