diff --git a/core/api/src/main/java/org/onosproject/cluster/ClusterStore.java b/core/api/src/main/java/org/onosproject/cluster/ClusterStore.java
index fdcd315..716168d 100644
--- a/core/api/src/main/java/org/onosproject/cluster/ClusterStore.java
+++ b/core/api/src/main/java/org/onosproject/cluster/ClusterStore.java
@@ -15,13 +15,11 @@
  */
 package org.onosproject.cluster;
 
-import org.joda.time.DateTime;
 import org.onlab.packet.IpAddress;
 import org.onosproject.core.Version;
 import org.onosproject.store.Store;
 
 import java.time.Instant;
-import java.util.Optional;
 import java.util.Set;
 
 /**
@@ -87,28 +85,7 @@
      * @param nodeId controller node identifier
      * @return system time when the availability state was last updated.
      */
-    default Instant getLastUpdatedInstant(NodeId nodeId) {
-        return Optional.ofNullable(getLastUpdated(nodeId))
-                    .map(DateTime::getMillis)
-                    .map(Instant::ofEpochMilli)
-                    .orElse(null);
-    }
-
-    /**
-     * Returns the system when the availability state was last updated.
-     *
-     * @param nodeId controller node identifier
-     * @return system time when the availability state was last updated.
-     *
-     * @deprecated in 1.12.0
-     */
-    @Deprecated
-    default DateTime getLastUpdated(NodeId nodeId) {
-        return Optional.ofNullable(getLastUpdatedInstant(nodeId))
-                .map(Instant::toEpochMilli)
-                .map(DateTime::new)
-                .orElse(null);
-    }
+    Instant getLastUpdatedInstant(NodeId nodeId);
 
     /**
      * Adds a new controller node to the cluster.
diff --git a/core/api/src/main/java/org/onosproject/cluster/DefaultPartition.java b/core/api/src/main/java/org/onosproject/cluster/DefaultPartition.java
index f0a73b6..491f9a9 100644
--- a/core/api/src/main/java/org/onosproject/cluster/DefaultPartition.java
+++ b/core/api/src/main/java/org/onosproject/cluster/DefaultPartition.java
@@ -15,13 +15,12 @@
  */
 package org.onosproject.cluster;
 
-import java.util.Collection;
-import java.util.Objects;
-
 import com.google.common.base.MoreObjects;
 import com.google.common.collect.ImmutableSet;
 import com.google.common.collect.Sets;
-import org.onosproject.core.Version;
+
+import java.util.Collection;
+import java.util.Objects;
 
 import static com.google.common.base.Preconditions.checkNotNull;
 
@@ -68,11 +67,6 @@
     }
 
     @Override
-    public Version getVersion() {
-        return null;
-    }
-
-    @Override
     public Collection<NodeId> getMembers() {
         return members;
     }
diff --git a/core/api/src/main/java/org/onosproject/cluster/Partition.java b/core/api/src/main/java/org/onosproject/cluster/Partition.java
index 33bc68f..c73357d 100644
--- a/core/api/src/main/java/org/onosproject/cluster/Partition.java
+++ b/core/api/src/main/java/org/onosproject/cluster/Partition.java
@@ -17,8 +17,6 @@
 
 import java.util.Collection;
 
-import org.onosproject.core.Version;
-
 /**
  * A partition or shard is a group of controller nodes that are work together to maintain state.
  * A ONOS cluster is typically made of of one or partitions over which the the data is partitioned.
@@ -32,15 +30,6 @@
     PartitionId getId();
 
     /**
-     * Returns the partition version.
-     *
-     * @return the partition version
-     * @deprecated since 1.14
-     */
-    @Deprecated
-    Version getVersion();
-
-    /**
      * Returns the controller nodes that are members of this partition.
      * @return collection of controller node identifiers
      */
