diff --git a/core/store/primitives/src/main/java/org/onosproject/store/atomix/primitives/impl/AtomixTransactionContextBuilder.java b/core/store/primitives/src/main/java/org/onosproject/store/atomix/primitives/impl/AtomixTransactionContextBuilder.java
new file mode 100644
index 0000000..3194a54
--- /dev/null
+++ b/core/store/primitives/src/main/java/org/onosproject/store/atomix/primitives/impl/AtomixTransactionContextBuilder.java
@@ -0,0 +1,42 @@
+/*
+ * Copyright 2018-present Open Networking Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.onosproject.store.atomix.primitives.impl;
+
+import io.atomix.core.Atomix;
+import io.atomix.core.transaction.Isolation;
+import org.onosproject.store.service.TransactionContext;
+import org.onosproject.store.service.TransactionContextBuilder;
+
+/**
+ * Atomix transaction context builder.
+ */
+public class AtomixTransactionContextBuilder extends TransactionContextBuilder {
+    private final Atomix atomix;
+    private final String group;
+
+    public AtomixTransactionContextBuilder(Atomix atomix, String group) {
+        this.atomix = atomix;
+        this.group = group;
+    }
+
+    @Override
+    public TransactionContext build() {
+        return new AtomixTransactionContext(atomix.transactionBuilder()
+            .withIsolation(Isolation.REPEATABLE_READS)
+            .build()
+            .async(), group);
+    }
+}
