diff --git a/core/store/primitives/pom.xml b/core/store/primitives/pom.xml
index f6966ea..0974dc5 100644
--- a/core/store/primitives/pom.xml
+++ b/core/store/primitives/pom.xml
@@ -70,7 +70,7 @@
         <dependency>
             <groupId>io.atomix</groupId>
             <artifactId>atomix</artifactId>
-            <version>2.0.4</version>
+            <version>2.0.8</version>
         </dependency>
 
         <dependency>
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
diff --git a/core/store/primitives/src/test/java/org/onosproject/store/primitives/impl/EventuallyConsistentMapImplTest.java b/core/store/primitives/src/test/java/org/onosproject/store/primitives/impl/EventuallyConsistentMapImplTest.java
index 41cf18c..ed142df 100644
--- a/core/store/primitives/src/test/java/org/onosproject/store/primitives/impl/EventuallyConsistentMapImplTest.java
+++ b/core/store/primitives/src/test/java/org/onosproject/store/primitives/impl/EventuallyConsistentMapImplTest.java
@@ -46,6 +46,8 @@
 import java.util.function.Consumer;
 import java.util.function.Function;
 
+import com.google.common.collect.ComparisonChain;
+import com.google.common.collect.ImmutableList;
 import org.junit.After;
 import org.junit.Before;
 import org.junit.Test;
@@ -66,8 +68,6 @@
 import org.onosproject.store.service.EventuallyConsistentMap;
 import org.onosproject.store.service.EventuallyConsistentMapEvent;
 import org.onosproject.store.service.EventuallyConsistentMapListener;
-import com.google.common.collect.ComparisonChain;
-import com.google.common.collect.ImmutableList;
 import com.google.common.collect.ImmutableSet;
 import com.google.common.util.concurrent.MoreExecutors;
 
diff --git a/features/features.xml b/features/features.xml
index 707bcec..3155b4c 100644
--- a/features/features.xml
+++ b/features/features.xml
@@ -59,7 +59,7 @@
         <bundle>mvn:com.typesafe/config/1.2.1</bundle>
         <bundle>mvn:com.googlecode.concurrent-trees/concurrent-trees/2.6.0</bundle>
         <bundle>mvn:commons-io/commons-io/2.4</bundle>
-        <bundle>mvn:io.atomix/atomix/2.0.4</bundle>
+        <bundle>mvn:io.atomix/atomix/2.0.8</bundle>
 
         <bundle>mvn:org.glassfish.jersey.core/jersey-client/2.25.1</bundle>
 
diff --git a/lib/BUCK b/lib/BUCK
index 203cf5a..87ce5ff 100644
--- a/lib/BUCK
+++ b/lib/BUCK
@@ -1,4 +1,4 @@
-# ***** This file was auto-generated at Wed, 20 Dec 2017 21:31:33 GMT. Do not edit this file manually. *****
+# ***** This file was auto-generated at Wed, 20 Dec 2017 23:04:11 GMT. Do not edit this file manually. *****
 # ***** Use onos-lib-gen *****
 
 pass_thru_pom(
@@ -178,10 +178,10 @@
 
 remote_jar (
   name = 'atomix',
-  out = 'atomix-2.0.4.jar',
-  url = 'mvn:io.atomix:atomix:jar:2.0.4',
-  sha1 = 'ad9165144b95174ab8c8ba1ae7481e6ca8a699e3',
-  maven_coords = 'io.atomix:atomix:2.0.4',
+  out = 'atomix-2.0.8.jar',
+  url = 'mvn:io.atomix:atomix:jar:2.0.8',
+  sha1 = '90673ee06d2de8455d66066aa1d5f539f2f3e963',
+  maven_coords = 'io.atomix:atomix:2.0.8',
   visibility = [ 'PUBLIC' ],
 )
 
diff --git a/lib/deps.json b/lib/deps.json
index ab52f9d..f77cc66 100644
--- a/lib/deps.json
+++ b/lib/deps.json
@@ -112,7 +112,7 @@
     "aopalliance-repackaged": "mvn:org.glassfish.hk2.external:aopalliance-repackaged:2.5.0-b32",
     "amqp-client": "mvn:com.rabbitmq:amqp-client:jar:3.6.1",
     "asm": "mvn:org.ow2.asm:asm:5.0.4",
-    "atomix": "mvn:io.atomix:atomix:2.0.4",
+    "atomix": "mvn:io.atomix:atomix:2.0.8",
     "commons-codec": "mvn:commons-codec:commons-codec:1.10",
     "commons-collections": "mvn:commons-collections:commons-collections:3.2.2",
     "commons-configuration": "mvn:commons-configuration:commons-configuration:1.10",
