diff --git a/provider/register-gcp/src/main/java/org/opengroup/osdu/register/provider/gcp/ddms/datastore/DatastoreDdmsRepository.java b/provider/register-gcp/src/main/java/org/opengroup/osdu/register/provider/gcp/ddms/datastore/DatastoreDdmsRepository.java
index 777662167daa2d0e1b1a7beccfd0677a86b17d47..f6274b92f3be226d942b19931428c3e4cc65d490 100644
--- a/provider/register-gcp/src/main/java/org/opengroup/osdu/register/provider/gcp/ddms/datastore/DatastoreDdmsRepository.java
+++ b/provider/register-gcp/src/main/java/org/opengroup/osdu/register/provider/gcp/ddms/datastore/DatastoreDdmsRepository.java
@@ -130,7 +130,7 @@ public class DatastoreDdmsRepository implements IDdmsRepository {
         return output;
     }
 
-    private Key createkey(Datastore ds, String id) {
+    Key createkey(Datastore ds, String id) {
         return ds.newKeyFactory()
                 .setNamespace(NAMESPACE)
                 .setKind(DMS_KIND)
@@ -138,7 +138,7 @@ public class DatastoreDdmsRepository implements IDdmsRepository {
     }
 
     //unchecked
-    private Ddms convertEntityToDms(Entity entity) {
+    Ddms convertEntityToDms(Entity entity) {
         Ddms ddms = new Ddms();
         ddms.setId(entity.getKey().getName());
         ddms.setName(entity.getString(NAME));
diff --git a/provider/register-gcp/src/test/java/org/opengroup/osdu/register/provider/gcp/ddms/datastore/DatastoreDdmsRepositoryTest.java b/provider/register-gcp/src/test/java/org/opengroup/osdu/register/provider/gcp/ddms/datastore/DatastoreDdmsRepositoryTest.java
index 78e525501a536da06e5849ca03a22a104cb2e52b..8f721e51a4257d4cb12931fe04fd58d07c2d3eae 100644
--- a/provider/register-gcp/src/test/java/org/opengroup/osdu/register/provider/gcp/ddms/datastore/DatastoreDdmsRepositoryTest.java
+++ b/provider/register-gcp/src/test/java/org/opengroup/osdu/register/provider/gcp/ddms/datastore/DatastoreDdmsRepositoryTest.java
@@ -17,18 +17,18 @@
 package org.opengroup.osdu.register.provider.gcp.ddms.datastore;
 
 import com.google.cloud.Timestamp;
-import com.google.cloud.datastore.Datastore;
-import com.google.cloud.datastore.DatastoreOptions;
+import com.google.cloud.datastore.*;
 import org.junit.Before;
 import org.junit.Test;
 import org.junit.runner.RunWith;
 import org.mockito.InjectMocks;
 import org.mockito.Mock;
-import org.mockito.junit.MockitoJUnitRunner;
+import org.mockito.Spy;
+import org.opengroup.osdu.core.common.model.tenant.TenantInfo;
 import org.opengroup.osdu.register.ddms.model.Ddms;
 import org.opengroup.osdu.register.ddms.model.RegisteredInterface;
-import org.opengroup.osdu.core.common.model.http.AppException;
-import org.opengroup.osdu.core.common.model.tenant.TenantInfo;
+import org.powermock.core.classloader.annotations.PrepareForTest;
+import org.powermock.modules.junit4.PowerMockRunner;
 
 import java.util.Collections;
 import java.util.List;
@@ -36,71 +36,54 @@ import java.util.UUID;
 
 import static junit.framework.TestCase.assertTrue;
 import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.fail;
 import static org.mockito.ArgumentMatchers.any;
-import static org.mockito.Mockito.when;
-
+import static org.mockito.Matchers.anyInt;
+import static org.mockito.Mockito.*;
+import static org.mockito.MockitoAnnotations.initMocks;
 
-@RunWith(MockitoJUnitRunner.class)
+@RunWith(PowerMockRunner.class)
+@PrepareForTest({Datastore.class, KeyFactory.class, Key.class})
 public class DatastoreDdmsRepositoryTest {
     @Mock
-    DatastoreMultiTenantAccess dsTenants;
+    private DatastoreMultiTenantAccess dataStoreTenants;
+    @Mock
+    private TenantInfo tenantInfo;
+    @Mock
+    private Datastore datastore;
     @Mock
-    TenantInfo tenantInfo;
+    private KeyFactory keyFactory;
     @InjectMocks
-    DatastoreDdmsRepository sut;
-    Datastore ds = DatastoreOptions.getDefaultInstance().getService();
+    @Spy
+    private DatastoreDdmsRepository sut = new DatastoreDdmsRepository();
+
+    private final Timestamp createdOn = Timestamp.now();
 
     @Before
     public void setup() {
-        when(dsTenants.get(any())).thenReturn(ds);
+        initMocks(this);
+        when(datastore.newKeyFactory()).thenReturn(keyFactory);
+        when(dataStoreTenants.get(any())).thenReturn(datastore);
     }
 
     @Test
     public void should_createGetAndDeleteDms_fromDatastore() {
         Ddms input = createDms();
 
-        try {
-            Ddms output = sut.create(input);
-            assertEquals(output, input);
-
-            output = sut.get(input.getId());
-            assertEquals(output, input);
-        } finally {
-            assertTrue(sut.delete(input.getId()));
-        }
-
-        try {
-            sut.get(input.getId());
-            fail("Expected app exception");
-        } catch (AppException e) {
-            assertEquals(404, e.getError().getCode());
-        }
-    }
-
-    @Test
-    public void should_retrieveMultipleDms_whenQueryMatchesType() {
-        RegisteredInterface ri = new RegisteredInterface();
-        ri.setSchema(Collections.singletonMap("1", "2"));
-        ri.setEntityType("type2");
-        Ddms input1 = createDms();
-        Ddms input2 = createDms();
-        input2.getInterfaces().add(ri);
-        Ddms input3 = createDms();
-        input3.getInterfaces().add(ri);
-
-        try {
-            sut.create(input1);
-            sut.create(input2);
-            sut.create(input3);
-
-            List<Ddms> result = sut.query("type2");
-            assertTrue(result.contains(input2));
-        } finally {
-            sut.delete(input1.getId());
-            sut.delete(input2.getId());
-            sut.delete(input3.getId());
-        }
+        Key mockKey = mockKey(1L);
+        doReturn(mockKey).when(sut).createkey(any(), any());
+        mockTransaction(Collections.emptyList(), false);
+        Ddms output = sut.create(input);
+        assertEquals(output, input);
+
+        Entity datastoreEntity = createEntity(mockKey);
+        when(this.datastore.get(mockKey)).thenReturn(datastoreEntity);
+        doReturn(input).when(this.sut).convertEntityToDms(any());
+        output = sut.get(input.getId());
+        assertEquals(output, input);
+
+        Transaction txn = mockTransaction(Collections.singletonList(mockKey), false);
+        when(txn.get(mockKey)).thenReturn(datastoreEntity);
+        assertTrue(sut.delete(input.getId()));
     }
 
     private Ddms createDms() {
@@ -109,12 +92,49 @@ public class DatastoreDdmsRepositoryTest {
         ri.setEntityType("type");
         ri.setSchema(Collections.singletonMap("1", "2"));
 
-        input.setContactEmail("ash");
-        input.setDescription("2");
+        input.setContactEmail("mock-contactEmail");
+        input.setDescription("mock-description");
         input.setId(UUID.randomUUID().toString());
-        input.setName("name");
-        input.setCreatedDateTimeEpoch(Timestamp.now());
+        input.setName("mock-name");
+        input.setCreatedDateTimeEpoch(createdOn);
         input.getInterfaces().add(ri);
         return input;
     }
+
+    private Key mockKey(Long id) {
+        Key key = mock(Key.class);
+        when(key.getKind()).thenReturn("key-name");
+        when(key.getNamespace()).thenReturn("namespace");
+        when(key.getId()).thenReturn(id);
+        when(key.getProjectId()).thenReturn("mock-project");
+        when(keyFactory.setKind(any())).thenReturn(keyFactory);
+        when(keyFactory.setNamespace(any())).thenReturn(keyFactory);
+        when(keyFactory.newKey(anyInt())).thenReturn(key);
+        return key;
+    }
+
+    private Transaction mockTransaction(List<Key> keys, Boolean isActive) {
+        Transaction txn = mock(Transaction.class);
+        when(this.datastore.newTransaction()).thenReturn(txn);
+        Transaction.Response rsp = mock(Transaction.Response.class);
+        when(txn.commit()).thenReturn(rsp);
+        when(txn.isActive()).thenReturn(isActive);
+        when(rsp.getGeneratedKeys()).thenReturn(keys.isEmpty() ? Collections.emptyList() : keys);
+        return txn;
+    }
+
+    private Entity createEntity(Key key) {
+        return getEntityBuilder(key)
+                .build();
+    }
+
+    private Entity.Builder getEntityBuilder(Key key) {
+        return Entity.newBuilder(key)
+                .set("name", "mock-name")
+                .set("description", "mock-description")
+                .set("contactEmail", "mock-contactEmail")
+                .set("createdOn", "createdOn")
+                .set("kind", "DDMS")
+                .set("namespace", "DE");
+    }
 }
\ No newline at end of file