diff --git a/core/store/primitives/src/main/java/org/onosproject/store/primitives/impl/StorageNamespaces.java b/core/store/primitives/src/main/java/org/onosproject/store/primitives/impl/StorageNamespaces.java
index 8350499..6639f72 100644
--- a/core/store/primitives/src/main/java/org/onosproject/store/primitives/impl/StorageNamespaces.java
+++ b/core/store/primitives/src/main/java/org/onosproject/store/primitives/impl/StorageNamespaces.java
@@ -76,19 +76,6 @@
 import io.atomix.protocols.raft.storage.log.entry.QueryEntry;
 import io.atomix.protocols.raft.storage.system.Configuration;
 import org.onlab.util.KryoNamespace;
-import org.onosproject.store.primitives.resources.impl.AtomixAtomicCounterMapOperations;
-import org.onosproject.store.primitives.resources.impl.AtomixConsistentMapEvents;
-import org.onosproject.store.primitives.resources.impl.AtomixConsistentMapOperations;
-import org.onosproject.store.primitives.resources.impl.AtomixConsistentSetMultimapEvents;
-import org.onosproject.store.primitives.resources.impl.AtomixConsistentSetMultimapOperations;
-import org.onosproject.store.primitives.resources.impl.AtomixConsistentTreeMapOperations;
-import org.onosproject.store.primitives.resources.impl.AtomixCounterOperations;
-import org.onosproject.store.primitives.resources.impl.AtomixDocumentTreeEvents;
-import org.onosproject.store.primitives.resources.impl.AtomixDocumentTreeOperations;
-import org.onosproject.store.primitives.resources.impl.AtomixLeaderElectorEvents;
-import org.onosproject.store.primitives.resources.impl.AtomixLeaderElectorOperations;
-import org.onosproject.store.primitives.resources.impl.AtomixWorkQueueEvents;
-import org.onosproject.store.primitives.resources.impl.AtomixWorkQueueOperations;
 import org.onosproject.store.serializers.KryoNamespaces;
 
 /**
@@ -137,7 +124,11 @@
             .register(RaftResponse.Status.class)
             .register(RaftError.class)
             .register(RaftError.Type.class)
-            .register(ReadConsistency.class)
+            .register(RaftOperation.class)
+            .register(DefaultOperationId.class)
+            .register(OperationType.class)
+            .register(RaftEvent.class)
+            .register(DefaultEventType.class)
             .register(RaftSessionMetadata.class)
             .register(CloseSessionEntry.class)
             .register(CommandEntry.class)
@@ -147,11 +138,6 @@
             .register(MetadataEntry.class)
             .register(OpenSessionEntry.class)
             .register(QueryEntry.class)
-            .register(RaftOperation.class)
-            .register(RaftEvent.class)
-            .register(DefaultEventType.class)
-            .register(DefaultOperationId.class)
-            .register(OperationType.class)
             .register(ReadConsistency.class)
             .register(ArrayList.class)
             .register(LinkedList.class)
@@ -163,19 +149,6 @@
             .register(RaftMember.Type.class)
             .register(Instant.class)
             .register(Configuration.class)
-            .register(AtomixAtomicCounterMapOperations.class)
-            .register(AtomixConsistentMapEvents.class)
-            .register(AtomixConsistentMapOperations.class)
-            .register(AtomixConsistentSetMultimapOperations.class)
-            .register(AtomixConsistentSetMultimapEvents.class)
-            .register(AtomixConsistentTreeMapOperations.class)
-            .register(AtomixCounterOperations.class)
-            .register(AtomixDocumentTreeEvents.class)
-            .register(AtomixDocumentTreeOperations.class)
-            .register(AtomixLeaderElectorEvents.class)
-            .register(AtomixLeaderElectorOperations.class)
-            .register(AtomixWorkQueueEvents.class)
-            .register(AtomixWorkQueueOperations.class)
             .build("RaftProtocol");
 
     /**
@@ -193,6 +166,8 @@
             .register(OpenSessionEntry.class)
             .register(QueryEntry.class)
             .register(RaftOperation.class)
+            .register(DefaultOperationId.class)
+            .register(OperationType.class)
             .register(ReadConsistency.class)
             .register(ArrayList.class)
             .register(HashSet.class)
@@ -201,14 +176,6 @@
             .register(RaftMember.Type.class)
             .register(Instant.class)
             .register(Configuration.class)
-            .register(AtomixAtomicCounterMapOperations.class)
-            .register(AtomixConsistentMapOperations.class)
-            .register(AtomixConsistentSetMultimapOperations.class)
-            .register(AtomixConsistentTreeMapOperations.class)
-            .register(AtomixCounterOperations.class)
-            .register(AtomixDocumentTreeOperations.class)
-            .register(AtomixLeaderElectorOperations.class)
-            .register(AtomixWorkQueueOperations.class)
             .build("RaftStorage");
 
     private StorageNamespaces() {
diff --git a/core/store/primitives/src/main/java/org/onosproject/store/primitives/resources/impl/AtomixAtomicCounterMapOperations.java b/core/store/primitives/src/main/java/org/onosproject/store/primitives/resources/impl/AtomixAtomicCounterMapOperations.java
index 7267923..7b2cba2 100644
--- a/core/store/primitives/src/main/java/org/onosproject/store/primitives/resources/impl/AtomixAtomicCounterMapOperations.java
+++ b/core/store/primitives/src/main/java/org/onosproject/store/primitives/resources/impl/AtomixAtomicCounterMapOperations.java
@@ -24,33 +24,31 @@
  * Atomic counter map commands.
  */
 public enum AtomixAtomicCounterMapOperations implements OperationId {
-    PUT("put", OperationType.COMMAND),
-    PUT_IF_ABSENT("putIfAbsent", OperationType.COMMAND),
-    GET("get", OperationType.QUERY),
-    REPLACE("replace", OperationType.COMMAND),
-    REMOVE("remove", OperationType.COMMAND),
-    REMOVE_VALUE("removeValue", OperationType.COMMAND),
-    GET_AND_INCREMENT("getAndIncrement", OperationType.COMMAND),
-    GET_AND_DECREMENT("getAndDecrement", OperationType.COMMAND),
-    INCREMENT_AND_GET("incrementAndGet", OperationType.COMMAND),
-    DECREMENT_AND_GET("decrementAndGet", OperationType.COMMAND),
-    ADD_AND_GET("addAndGet", OperationType.COMMAND),
-    GET_AND_ADD("getAndAdd", OperationType.COMMAND),
-    SIZE("size", OperationType.QUERY),
-    IS_EMPTY("isEmpty", OperationType.QUERY),
-    CLEAR("clear", OperationType.COMMAND);
+    PUT(OperationType.COMMAND),
+    PUT_IF_ABSENT(OperationType.COMMAND),
+    GET(OperationType.QUERY),
+    REPLACE(OperationType.COMMAND),
+    REMOVE(OperationType.COMMAND),
+    REMOVE_VALUE(OperationType.COMMAND),
+    GET_AND_INCREMENT(OperationType.COMMAND),
+    GET_AND_DECREMENT(OperationType.COMMAND),
+    INCREMENT_AND_GET(OperationType.COMMAND),
+    DECREMENT_AND_GET(OperationType.COMMAND),
+    ADD_AND_GET(OperationType.COMMAND),
+    GET_AND_ADD(OperationType.COMMAND),
+    SIZE(OperationType.QUERY),
+    IS_EMPTY(OperationType.QUERY),
+    CLEAR(OperationType.COMMAND);
 
-    private final String id;
     private final OperationType type;
 
-    AtomixAtomicCounterMapOperations(String id, OperationType type) {
-        this.id = id;
+    AtomixAtomicCounterMapOperations(OperationType type) {
         this.type = type;
     }
 
     @Override
     public String id() {
-        return id;
+        return name();
     }
 
     @Override
diff --git a/core/store/primitives/src/main/java/org/onosproject/store/primitives/resources/impl/AtomixConsistentMapEvents.java b/core/store/primitives/src/main/java/org/onosproject/store/primitives/resources/impl/AtomixConsistentMapEvents.java
index c7a1f1f..a0429da 100644
--- a/core/store/primitives/src/main/java/org/onosproject/store/primitives/resources/impl/AtomixConsistentMapEvents.java
+++ b/core/store/primitives/src/main/java/org/onosproject/store/primitives/resources/impl/AtomixConsistentMapEvents.java
@@ -24,17 +24,11 @@
  * Atomix consistent map events.
  */
 public enum AtomixConsistentMapEvents implements EventType {
-    CHANGE("change");
-
-    private final String id;
-
-    AtomixConsistentMapEvents(String id) {
-        this.id = id;
-    }
+    CHANGE;
 
     @Override
     public String id() {
-        return id;
+        return name();
     }
 
     public static final KryoNamespace NAMESPACE = KryoNamespace.newBuilder()
diff --git a/core/store/primitives/src/main/java/org/onosproject/store/primitives/resources/impl/AtomixConsistentMapOperations.java b/core/store/primitives/src/main/java/org/onosproject/store/primitives/resources/impl/AtomixConsistentMapOperations.java
index 31d5bf8..248c4eb 100644
--- a/core/store/primitives/src/main/java/org/onosproject/store/primitives/resources/impl/AtomixConsistentMapOperations.java
+++ b/core/store/primitives/src/main/java/org/onosproject/store/primitives/resources/impl/AtomixConsistentMapOperations.java
@@ -33,44 +33,42 @@
  * {@link AtomixConsistentMap} resource state machine operations.
  */
 public enum AtomixConsistentMapOperations implements OperationId {
-    IS_EMPTY("isEmpty", OperationType.QUERY),
-    SIZE("size", OperationType.QUERY),
-    CONTAINS_KEY("containsKey", OperationType.QUERY),
-    CONTAINS_VALUE("containsValue", OperationType.QUERY),
-    GET("get", OperationType.QUERY),
-    GET_OR_DEFAULT("getOrDefault", OperationType.QUERY),
-    KEY_SET("keySet", OperationType.QUERY),
-    VALUES("values", OperationType.QUERY),
-    ENTRY_SET("entrySet", OperationType.QUERY),
-    PUT("put", OperationType.COMMAND),
-    PUT_IF_ABSENT("putIfAbsent", OperationType.COMMAND),
-    PUT_AND_GET("putAndGet", OperationType.COMMAND),
-    REMOVE("remove", OperationType.COMMAND),
-    REMOVE_VALUE("removeValue", OperationType.COMMAND),
-    REMOVE_VERSION("removeVersion", OperationType.COMMAND),
-    REPLACE("replace", OperationType.COMMAND),
-    REPLACE_VALUE("replaceValue", OperationType.COMMAND),
-    REPLACE_VERSION("replaceVersion", OperationType.COMMAND),
-    CLEAR("clear", OperationType.COMMAND),
-    ADD_LISTENER("addListener", OperationType.COMMAND),
-    REMOVE_LISTENER("removeListener", OperationType.COMMAND),
-    BEGIN("begin", OperationType.COMMAND),
-    PREPARE("prepare", OperationType.COMMAND),
-    PREPARE_AND_COMMIT("prepareAndCommit", OperationType.COMMAND),
-    COMMIT("commit", OperationType.COMMAND),
-    ROLLBACK("rollback", OperationType.COMMAND);
+    IS_EMPTY(OperationType.QUERY),
+    SIZE(OperationType.QUERY),
+    CONTAINS_KEY(OperationType.QUERY),
+    CONTAINS_VALUE(OperationType.QUERY),
+    GET(OperationType.QUERY),
+    GET_OR_DEFAULT(OperationType.QUERY),
+    KEY_SET(OperationType.QUERY),
+    VALUES(OperationType.QUERY),
+    ENTRY_SET(OperationType.QUERY),
+    PUT(OperationType.COMMAND),
+    PUT_IF_ABSENT(OperationType.COMMAND),
+    PUT_AND_GET(OperationType.COMMAND),
+    REMOVE(OperationType.COMMAND),
+    REMOVE_VALUE(OperationType.COMMAND),
+    REMOVE_VERSION(OperationType.COMMAND),
+    REPLACE(OperationType.COMMAND),
+    REPLACE_VALUE(OperationType.COMMAND),
+    REPLACE_VERSION(OperationType.COMMAND),
+    CLEAR(OperationType.COMMAND),
+    ADD_LISTENER(OperationType.COMMAND),
+    REMOVE_LISTENER(OperationType.COMMAND),
+    BEGIN(OperationType.COMMAND),
+    PREPARE(OperationType.COMMAND),
+    PREPARE_AND_COMMIT(OperationType.COMMAND),
+    COMMIT(OperationType.COMMAND),
+    ROLLBACK(OperationType.COMMAND);
 
-    private final String id;
     private final OperationType type;
 
-    AtomixConsistentMapOperations(String id, OperationType type) {
-        this.id = id;
+    AtomixConsistentMapOperations(OperationType type) {
         this.type = type;
     }
 
     @Override
     public String id() {
-        return id;
+        return name();
     }
 
     @Override
diff --git a/core/store/primitives/src/main/java/org/onosproject/store/primitives/resources/impl/AtomixConsistentSetMultimapEvents.java b/core/store/primitives/src/main/java/org/onosproject/store/primitives/resources/impl/AtomixConsistentSetMultimapEvents.java
index 7bdac8a..7ccb5b7 100644
--- a/core/store/primitives/src/main/java/org/onosproject/store/primitives/resources/impl/AtomixConsistentSetMultimapEvents.java
+++ b/core/store/primitives/src/main/java/org/onosproject/store/primitives/resources/impl/AtomixConsistentSetMultimapEvents.java
@@ -24,17 +24,11 @@
  * Atomix consistent set multimap events.
  */
 public enum AtomixConsistentSetMultimapEvents implements EventType {
-    CHANGE("change");
-
-    private final String id;
-
-    AtomixConsistentSetMultimapEvents(String id) {
-        this.id = id;
-    }
+    CHANGE;
 
     @Override
     public String id() {
-        return id;
+        return name();
     }
 
     public static final KryoNamespace NAMESPACE = KryoNamespace.newBuilder()
diff --git a/core/store/primitives/src/main/java/org/onosproject/store/primitives/resources/impl/AtomixConsistentSetMultimapOperations.java b/core/store/primitives/src/main/java/org/onosproject/store/primitives/resources/impl/AtomixConsistentSetMultimapOperations.java
index 02cad03..329113d 100644
--- a/core/store/primitives/src/main/java/org/onosproject/store/primitives/resources/impl/AtomixConsistentSetMultimapOperations.java
+++ b/core/store/primitives/src/main/java/org/onosproject/store/primitives/resources/impl/AtomixConsistentSetMultimapOperations.java
@@ -34,35 +34,33 @@
  * AsyncConsistentMultimap state machine commands.
  */
 public enum AtomixConsistentSetMultimapOperations implements OperationId {
-    GET("get", OperationType.QUERY),
-    SIZE("size", OperationType.QUERY),
-    IS_EMPTY("isEmpty", OperationType.QUERY),
-    CONTAINS_KEY("containsKey", OperationType.QUERY),
-    CONTAINS_VALUE("containsValue", OperationType.QUERY),
-    CONTAINS_ENTRY("containsEntry", OperationType.QUERY),
-    KEY_SET("keySet", OperationType.QUERY),
-    KEYS("keys", OperationType.QUERY),
-    VALUES("values", OperationType.QUERY),
-    ENTRIES("entries", OperationType.QUERY),
-    PUT("put", OperationType.COMMAND),
-    REMOVE("remove", OperationType.COMMAND),
-    REMOVE_ALL("removeAll", OperationType.COMMAND),
-    REPLACE("replace", OperationType.COMMAND),
-    CLEAR("clear", OperationType.COMMAND),
-    ADD_LISTENER("addListener", OperationType.COMMAND),
-    REMOVE_LISTENER("removeListener", OperationType.COMMAND);
+    GET(OperationType.QUERY),
+    SIZE(OperationType.QUERY),
+    IS_EMPTY(OperationType.QUERY),
+    CONTAINS_KEY(OperationType.QUERY),
+    CONTAINS_VALUE(OperationType.QUERY),
+    CONTAINS_ENTRY(OperationType.QUERY),
+    KEY_SET(OperationType.QUERY),
+    KEYS(OperationType.QUERY),
+    VALUES(OperationType.QUERY),
+    ENTRIES(OperationType.QUERY),
+    PUT(OperationType.COMMAND),
+    REMOVE(OperationType.COMMAND),
+    REMOVE_ALL(OperationType.COMMAND),
+    REPLACE(OperationType.COMMAND),
+    CLEAR(OperationType.COMMAND),
+    ADD_LISTENER(OperationType.COMMAND),
+    REMOVE_LISTENER(OperationType.COMMAND);
 
-    private final String id;
     private final OperationType type;
 
-    AtomixConsistentSetMultimapOperations(String id, OperationType type) {
-        this.id = id;
+    AtomixConsistentSetMultimapOperations(OperationType type) {
         this.type = type;
     }
 
     @Override
     public String id() {
-        return id;
+        return name();
     }
 
     @Override
diff --git a/core/store/primitives/src/main/java/org/onosproject/store/primitives/resources/impl/AtomixConsistentTreeMapOperations.java b/core/store/primitives/src/main/java/org/onosproject/store/primitives/resources/impl/AtomixConsistentTreeMapOperations.java
index efcfe68..ccb722e 100644
--- a/core/store/primitives/src/main/java/org/onosproject/store/primitives/resources/impl/AtomixConsistentTreeMapOperations.java
+++ b/core/store/primitives/src/main/java/org/onosproject/store/primitives/resources/impl/AtomixConsistentTreeMapOperations.java
@@ -34,33 +34,31 @@
  * state machine operations.
  */
 public enum AtomixConsistentTreeMapOperations implements OperationId {
-    SUB_MAP("subMap", OperationType.QUERY),
-    FIRST_KEY("firstKey", OperationType.QUERY),
-    LAST_KEY("lastKey", OperationType.QUERY),
-    FIRST_ENTRY("firstEntry", OperationType.QUERY),
-    LAST_ENTRY("lastEntry", OperationType.QUERY),
-    POLL_FIRST_ENTRY("pollFirstEntry", OperationType.QUERY),
-    POLL_LAST_ENTRY("pollLastEntry", OperationType.QUERY),
-    LOWER_ENTRY("lowerEntry", OperationType.QUERY),
-    LOWER_KEY("lowerKey", OperationType.QUERY),
-    FLOOR_ENTRY("floorEntry", OperationType.QUERY),
-    FLOOR_KEY("floorKey", OperationType.QUERY),
-    CEILING_ENTRY("ceilingEntry", OperationType.QUERY),
-    CEILING_KEY("ceilingKey", OperationType.QUERY),
-    HIGHER_ENTRY("higherEntry", OperationType.QUERY),
-    HIGHER_KEY("higherKey", OperationType.QUERY);
+    SUB_MAP(OperationType.QUERY),
+    FIRST_KEY(OperationType.QUERY),
+    LAST_KEY(OperationType.QUERY),
+    FIRST_ENTRY(OperationType.QUERY),
+    LAST_ENTRY(OperationType.QUERY),
+    POLL_FIRST_ENTRY(OperationType.QUERY),
+    POLL_LAST_ENTRY(OperationType.QUERY),
+    LOWER_ENTRY(OperationType.QUERY),
+    LOWER_KEY(OperationType.QUERY),
+    FLOOR_ENTRY(OperationType.QUERY),
+    FLOOR_KEY(OperationType.QUERY),
+    CEILING_ENTRY(OperationType.QUERY),
+    CEILING_KEY(OperationType.QUERY),
+    HIGHER_ENTRY(OperationType.QUERY),
+    HIGHER_KEY(OperationType.QUERY);
 
-    private final String id;
     private final OperationType type;
 
-    AtomixConsistentTreeMapOperations(String id, OperationType type) {
-        this.id = id;
+    AtomixConsistentTreeMapOperations(OperationType type) {
         this.type = type;
     }
 
     @Override
     public String id() {
-        return id;
+        return name();
     }
 
     @Override
diff --git a/core/store/primitives/src/main/java/org/onosproject/store/primitives/resources/impl/AtomixCounterOperations.java b/core/store/primitives/src/main/java/org/onosproject/store/primitives/resources/impl/AtomixCounterOperations.java
index f6ec6d8..67ff936 100644
--- a/core/store/primitives/src/main/java/org/onosproject/store/primitives/resources/impl/AtomixCounterOperations.java
+++ b/core/store/primitives/src/main/java/org/onosproject/store/primitives/resources/impl/AtomixCounterOperations.java
@@ -24,25 +24,23 @@
  * Counter commands.
  */
 public enum AtomixCounterOperations implements OperationId {
-    SET("set", OperationType.COMMAND),
-    COMPARE_AND_SET("compareAndSet", OperationType.COMMAND),
-    INCREMENT_AND_GET("incrementAndGet", OperationType.COMMAND),
-    GET_AND_INCREMENT("getAndIncrement", OperationType.COMMAND),
-    ADD_AND_GET("addAndGet", OperationType.COMMAND),
-    GET_AND_ADD("getAndAdd", OperationType.COMMAND),
-    GET("get", OperationType.QUERY);
+    SET(OperationType.COMMAND),
+    COMPARE_AND_SET(OperationType.COMMAND),
+    INCREMENT_AND_GET(OperationType.COMMAND),
+    GET_AND_INCREMENT(OperationType.COMMAND),
+    ADD_AND_GET(OperationType.COMMAND),
+    GET_AND_ADD(OperationType.COMMAND),
+    GET(OperationType.QUERY);
 
-    private final String id;
     private final OperationType type;
 
-    AtomixCounterOperations(String id, OperationType type) {
-        this.id = id;
+    AtomixCounterOperations(OperationType type) {
         this.type = type;
     }
 
     @Override
     public String id() {
-        return id;
+        return name();
     }
 
     @Override
diff --git a/core/store/primitives/src/main/java/org/onosproject/store/primitives/resources/impl/AtomixDocumentTreeEvents.java b/core/store/primitives/src/main/java/org/onosproject/store/primitives/resources/impl/AtomixDocumentTreeEvents.java
index 43f2a20..47dcd31 100644
--- a/core/store/primitives/src/main/java/org/onosproject/store/primitives/resources/impl/AtomixDocumentTreeEvents.java
+++ b/core/store/primitives/src/main/java/org/onosproject/store/primitives/resources/impl/AtomixDocumentTreeEvents.java
@@ -24,17 +24,11 @@
  * Atomix document tree events.
  */
 public enum AtomixDocumentTreeEvents implements EventType {
-    CHANGE("change");
-
-    private final String id;
-
-    AtomixDocumentTreeEvents(String id) {
-        this.id = id;
-    }
+    CHANGE;
 
     @Override
     public String id() {
-        return id;
+        return name();
     }
 
     public static final KryoNamespace NAMESPACE = KryoNamespace.newBuilder()
diff --git a/core/store/primitives/src/main/java/org/onosproject/store/primitives/resources/impl/AtomixDocumentTreeOperations.java b/core/store/primitives/src/main/java/org/onosproject/store/primitives/resources/impl/AtomixDocumentTreeOperations.java
index d05215c..6ec6091 100644
--- a/core/store/primitives/src/main/java/org/onosproject/store/primitives/resources/impl/AtomixDocumentTreeOperations.java
+++ b/core/store/primitives/src/main/java/org/onosproject/store/primitives/resources/impl/AtomixDocumentTreeOperations.java
@@ -35,29 +35,27 @@
  * {@link AtomixDocumentTree} resource state machine operations.
  */
 public enum AtomixDocumentTreeOperations implements OperationId {
-    ADD_LISTENER("set", OperationType.COMMAND),
-    REMOVE_LISTENER("compareAndSet", OperationType.COMMAND),
-    GET("incrementAndGet", OperationType.QUERY),
-    GET_CHILDREN("getAndIncrement", OperationType.QUERY),
-    UPDATE("addAndGet", OperationType.COMMAND),
-    CLEAR("getAndAdd", OperationType.COMMAND),
-    BEGIN("begin", OperationType.COMMAND),
-    PREPARE("prepare", OperationType.COMMAND),
-    PREPARE_AND_COMMIT("prepareAndCommit", OperationType.COMMAND),
-    COMMIT("commit", OperationType.COMMAND),
-    ROLLBACK("rollback", OperationType.COMMAND);
+    ADD_LISTENER(OperationType.COMMAND),
+    REMOVE_LISTENER(OperationType.COMMAND),
+    GET(OperationType.QUERY),
+    GET_CHILDREN(OperationType.QUERY),
+    UPDATE(OperationType.COMMAND),
+    CLEAR(OperationType.COMMAND),
+    BEGIN(OperationType.COMMAND),
+    PREPARE(OperationType.COMMAND),
+    PREPARE_AND_COMMIT(OperationType.COMMAND),
+    COMMIT(OperationType.COMMAND),
+    ROLLBACK(OperationType.COMMAND);
 
-    private final String id;
     private final OperationType type;
 
-    AtomixDocumentTreeOperations(String id, OperationType type) {
-        this.id = id;
+    AtomixDocumentTreeOperations(OperationType type) {
         this.type = type;
     }
 
     @Override
     public String id() {
-        return id;
+        return name();
     }
 
     @Override
diff --git a/core/store/primitives/src/main/java/org/onosproject/store/primitives/resources/impl/AtomixLeaderElectorEvents.java b/core/store/primitives/src/main/java/org/onosproject/store/primitives/resources/impl/AtomixLeaderElectorEvents.java
index 7e098b5..3c5a2c7 100644
--- a/core/store/primitives/src/main/java/org/onosproject/store/primitives/resources/impl/AtomixLeaderElectorEvents.java
+++ b/core/store/primitives/src/main/java/org/onosproject/store/primitives/resources/impl/AtomixLeaderElectorEvents.java
@@ -23,17 +23,11 @@
  * Atomix leader elector events.
  */
 public enum AtomixLeaderElectorEvents implements EventType {
-    CHANGE("change");
-
-    private final String id;
-
-    AtomixLeaderElectorEvents(String id) {
-        this.id = id;
-    }
+    CHANGE;
 
     @Override
     public String id() {
-        return id;
+        return name();
     }
 
     public static final KryoNamespace NAMESPACE = KryoNamespace.newBuilder()
diff --git a/core/store/primitives/src/main/java/org/onosproject/store/primitives/resources/impl/AtomixLeaderElectorOperations.java b/core/store/primitives/src/main/java/org/onosproject/store/primitives/resources/impl/AtomixLeaderElectorOperations.java
index 598d54f..c778cea 100644
--- a/core/store/primitives/src/main/java/org/onosproject/store/primitives/resources/impl/AtomixLeaderElectorOperations.java
+++ b/core/store/primitives/src/main/java/org/onosproject/store/primitives/resources/impl/AtomixLeaderElectorOperations.java
@@ -29,28 +29,26 @@
  * {@link AtomixLeaderElector} resource state machine operations.
  */
 public enum AtomixLeaderElectorOperations implements OperationId {
-    ADD_LISTENER("addListener", OperationType.COMMAND),
-    REMOVE_LISTENER("removeListener", OperationType.COMMAND),
-    RUN("run", OperationType.COMMAND),
-    WITHDRAW("withdraw", OperationType.COMMAND),
-    ANOINT("anoint", OperationType.COMMAND),
-    PROMOTE("promote", OperationType.COMMAND),
-    EVICT("evict", OperationType.COMMAND),
-    GET_LEADERSHIP("getLeadership", OperationType.QUERY),
-    GET_ALL_LEADERSHIPS("getAllLeaderships", OperationType.QUERY),
-    GET_ELECTED_TOPICS("getElectedTopics", OperationType.QUERY);
+    ADD_LISTENER(OperationType.COMMAND),
+    REMOVE_LISTENER(OperationType.COMMAND),
+    RUN(OperationType.COMMAND),
+    WITHDRAW(OperationType.COMMAND),
+    ANOINT(OperationType.COMMAND),
+    PROMOTE(OperationType.COMMAND),
+    EVICT(OperationType.COMMAND),
+    GET_LEADERSHIP(OperationType.QUERY),
+    GET_ALL_LEADERSHIPS(OperationType.QUERY),
+    GET_ELECTED_TOPICS(OperationType.QUERY);
 
-    private final String id;
     private final OperationType type;
 
-    AtomixLeaderElectorOperations(String id, OperationType type) {
-        this.id = id;
+    AtomixLeaderElectorOperations(OperationType type) {
         this.type = type;
     }
 
     @Override
     public String id() {
-        return id;
+        return name();
     }
 
     @Override
diff --git a/core/store/primitives/src/main/java/org/onosproject/store/primitives/resources/impl/AtomixWorkQueueEvents.java b/core/store/primitives/src/main/java/org/onosproject/store/primitives/resources/impl/AtomixWorkQueueEvents.java
index 019290f..5458300 100644
--- a/core/store/primitives/src/main/java/org/onosproject/store/primitives/resources/impl/AtomixWorkQueueEvents.java
+++ b/core/store/primitives/src/main/java/org/onosproject/store/primitives/resources/impl/AtomixWorkQueueEvents.java
@@ -23,17 +23,11 @@
  * Atomix work queue events.
  */
 public enum AtomixWorkQueueEvents implements EventType {
-    TASK_AVAILABLE("taskAvailable");
-
-    private final String id;
-
-    AtomixWorkQueueEvents(String id) {
-        this.id = id;
-    }
+    TASK_AVAILABLE;
 
     @Override
     public String id() {
-        return id;
+        return name();
     }
 
     public static final KryoNamespace NAMESPACE = KryoNamespace.newBuilder()
diff --git a/core/store/primitives/src/main/java/org/onosproject/store/primitives/resources/impl/AtomixWorkQueueOperations.java b/core/store/primitives/src/main/java/org/onosproject/store/primitives/resources/impl/AtomixWorkQueueOperations.java
index 4cb0abf..2452cf8 100644
--- a/core/store/primitives/src/main/java/org/onosproject/store/primitives/resources/impl/AtomixWorkQueueOperations.java
+++ b/core/store/primitives/src/main/java/org/onosproject/store/primitives/resources/impl/AtomixWorkQueueOperations.java
@@ -29,25 +29,23 @@
  * {@link AtomixWorkQueue} resource state machine operations.
  */
 public enum AtomixWorkQueueOperations implements OperationId {
-    STATS("stats", OperationType.QUERY),
-    REGISTER("register", OperationType.COMMAND),
-    UNREGISTER("unregister", OperationType.COMMAND),
-    ADD("add", OperationType.COMMAND),
-    TAKE("take", OperationType.COMMAND),
-    COMPLETE("complete", OperationType.COMMAND),
-    CLEAR("clear", OperationType.COMMAND);
+    STATS(OperationType.QUERY),
+    REGISTER(OperationType.COMMAND),
+    UNREGISTER(OperationType.COMMAND),
+    ADD(OperationType.COMMAND),
+    TAKE(OperationType.COMMAND),
+    COMPLETE(OperationType.COMMAND),
+    CLEAR(OperationType.COMMAND);
 
-    private final String id;
     private final OperationType type;
 
-    AtomixWorkQueueOperations(String id, OperationType type) {
-        this.id = id;
+    AtomixWorkQueueOperations(OperationType type) {
         this.type = type;
     }
 
     @Override
     public String id() {
-        return id;
+        return name();
     }
 
     @Override
