diff --git a/jnosql-tinkerpop/pom.xml b/jnosql-tinkerpop/pom.xml
index d9128c0aa..fac780ba8 100644
--- a/jnosql-tinkerpop/pom.xml
+++ b/jnosql-tinkerpop/pom.xml
@@ -64,11 +64,48 @@
             neo4j-tinkerpop-api-impl
             ${neo4j.connector.version}
             test
+            
+                
+                    org.slf4j
+                    slf4j-nop
+                
+            
+        
+        
+            org.apache.tinkerpop
+            tinkergraph-gremlin
+            ${tinkerpop.version}
+            test
+        
+        
+            com.arangodb
+            arangodb-tinkerpop-provider
+            3.2.1
+            test
+        
+        
+            org.slf4j
+            slf4j-simple
+            1.7.25
+            test
         
     
 
     
         
+            
+                org.apache.maven.plugins
+                maven-surefire-plugin
+                
+                    
+                        
+                        
+                    
+                
+            
             
                 org.antlr
                 antlr4-maven-plugin
diff --git a/jnosql-tinkerpop/src/main/java/org/eclipse/jnosql/databases/tinkerpop/communication/CommunicationEntityConverter.java b/jnosql-tinkerpop/src/main/java/org/eclipse/jnosql/databases/tinkerpop/communication/CommunicationEntityConverter.java
index 0396463db..d5e22b3c3 100644
--- a/jnosql-tinkerpop/src/main/java/org/eclipse/jnosql/databases/tinkerpop/communication/CommunicationEntityConverter.java
+++ b/jnosql-tinkerpop/src/main/java/org/eclipse/jnosql/databases/tinkerpop/communication/CommunicationEntityConverter.java
@@ -19,15 +19,16 @@
 
 import java.util.function.Function;
 
-public enum CommunicationEntityConverter implements Function{
-    INSTANCE;
+import static org.eclipse.jnosql.databases.tinkerpop.communication.TinkerpopGraphDatabaseManager.ID;
 
+public enum CommunicationEntityConverter implements Function {
+    INSTANCE;
 
     @Override
     public CommunicationEntity apply(Vertex vertex) {
         var entity = CommunicationEntity.of(vertex.label());
         vertex.properties().forEachRemaining(p -> entity.add(p.key(), p.value()));
-        entity.add(DefaultTinkerpopGraphDatabaseManager.ID_PROPERTY, vertex.id());
+        entity.add(ID, vertex.id());
         return entity;
     }
 }
diff --git a/jnosql-tinkerpop/src/main/java/org/eclipse/jnosql/databases/tinkerpop/communication/DefaultTinkerpopGraphDatabaseManager.java b/jnosql-tinkerpop/src/main/java/org/eclipse/jnosql/databases/tinkerpop/communication/DefaultTinkerpopGraphDatabaseManager.java
index 9a309e664..ceb6a828c 100644
--- a/jnosql-tinkerpop/src/main/java/org/eclipse/jnosql/databases/tinkerpop/communication/DefaultTinkerpopGraphDatabaseManager.java
+++ b/jnosql-tinkerpop/src/main/java/org/eclipse/jnosql/databases/tinkerpop/communication/DefaultTinkerpopGraphDatabaseManager.java
@@ -19,12 +19,14 @@
 import org.apache.tinkerpop.gremlin.structure.Direction;
 import org.apache.tinkerpop.gremlin.structure.Edge;
 import org.apache.tinkerpop.gremlin.structure.Graph;
+import org.apache.tinkerpop.gremlin.structure.T;
 import org.apache.tinkerpop.gremlin.structure.Vertex;
 import org.eclipse.jnosql.communication.CommunicationException;
 import org.eclipse.jnosql.communication.ValueUtil;
 import org.eclipse.jnosql.communication.graph.CommunicationEdge;
 import org.eclipse.jnosql.communication.semistructured.CommunicationEntity;
 import org.eclipse.jnosql.communication.semistructured.DeleteQuery;
+import org.eclipse.jnosql.communication.semistructured.Element;
 import org.eclipse.jnosql.communication.semistructured.SelectQuery;
 
 import java.time.Duration;
@@ -52,7 +54,6 @@
  */
 public class DefaultTinkerpopGraphDatabaseManager implements TinkerpopGraphDatabaseManager {
 
-    public static final String ID_PROPERTY = "_id";
     private final Graph graph;
 
     DefaultTinkerpopGraphDatabaseManager(Graph graph) {
@@ -71,13 +72,8 @@ public String name() {
 
     @Override
     public CommunicationEntity insert(CommunicationEntity entity) {
-
         Objects.requireNonNull(entity, "entity is required");
-        Vertex vertex = graph.addVertex(entity.name());
-        entity.elements().forEach(e -> vertex.property(e.name(), ValueUtil.convert(e.value())));
-        entity.add(ID_PROPERTY, vertex.id());
-        vertex.property(ID_PROPERTY, vertex.id());
-        GraphTransactionUtil.transaction(graph);
+        addVertex(entity);
         return entity;
     }
 
@@ -101,14 +97,16 @@ public Iterable insert(Iterable iterab
     @Override
     public CommunicationEntity update(CommunicationEntity entity) {
         Objects.requireNonNull(entity, "entity is required");
-        entity.find(ID_PROPERTY).ifPresent(id -> {
-            Iterator vertices = graph.vertices(id.get());
-            if(!vertices.hasNext()) {
-                throw new EmptyResultException("The entity does not exist with the id: " + id);
-            }
-            Vertex vertex = vertices.next();
-            entity.elements().forEach(e -> vertex.property(e.name(), ValueUtil.convert(e.value())));
-        });
+        Object id = entity.find(ID).map(Element::get)
+                .orElseThrow(() -> new IllegalArgumentException("Entity must have an ID"));
+        Iterator vertices = graph.vertices(id);
+        if (!vertices.hasNext()) {
+            throw new EmptyResultException("The entity does not exist with the id: " + id);
+        }
+        Vertex vertex = vertices.next();
+        entity.elements().stream()
+                .filter(it -> !ID.equals(it.name()))
+                .forEach(e -> vertex.property(e.name(), ValueUtil.convert(e.value())));
         GraphTransactionUtil.transaction(graph);
         return entity;
     }
@@ -198,11 +196,11 @@ public void remove(CommunicationEntity source, String label, CommunicationEntity
         Objects.requireNonNull(target, "target is required");
         Objects.requireNonNull(label, "label is required");
 
-        Vertex sourceVertex = findVertexById(source.find(ID_PROPERTY)
+        Vertex sourceVertex = findVertexById(source.find(ID)
                 .orElseThrow(() -> new CommunicationException("Source entity must have an ID")).get())
                 .orElseThrow(() -> new EmptyResultException("Source entity not found"));
 
-        Vertex targetVertex = findVertexById(target.find(ID_PROPERTY)
+        Vertex targetVertex = findVertexById(target.find(ID)
                 .orElseThrow(() -> new CommunicationException("Target entity must have an ID")).get())
                 .orElseThrow(() -> new EmptyResultException("Target entity not found"));
 
@@ -241,10 +239,10 @@ public  Optional findEdgeById(K id) {
 
         var edge = traversal.next();
         var source = CommunicationEntity.of(edge.outVertex().label());
-        source.add(ID_PROPERTY, edge.outVertex().id());
+        source.add(ID, edge.outVertex().id());
 
         var target = CommunicationEntity.of(edge.inVertex().label());
-        target.add(ID_PROPERTY, edge.inVertex().id());
+        target.add(ID, edge.inVertex().id());
 
         Map properties = new HashMap<>();
         edge.properties().forEachRemaining(p -> properties.put(p.key(), p.value()));
@@ -252,16 +250,23 @@ public  Optional findEdgeById(K id) {
         return Optional.of(new TinkerpopCommunicationEdge(id, source, target, edge.label(), properties));
     }
 
+    private Vertex addVertex(CommunicationEntity entity) {
+        Object[] args = Stream.concat(
+                Stream.of(T.label, entity.name()),
+                entity.elements().stream().flatMap(it -> ID.equals(it.name()) ?
+                        Stream.of(T.id, it.get()) :
+                        Stream.of(it.name(), ValueUtil.convert(it.value())))
+        ).toArray();
+        Vertex vertex = graph.addVertex(args);
+        entity.add(ID, vertex.id());
+        GraphTransactionUtil.transaction(graph);
+        return vertex;
+    }
+
     private Vertex findOrCreateVertex(CommunicationEntity entity) {
-        return entity.find(ID_PROPERTY)
+        return entity.find(ID)
                 .flatMap(id -> findVertexById(id.get()))
-                .orElseGet(() -> {
-                    var newVertex = graph.addVertex(entity.name());
-                    entity.elements().forEach(e -> newVertex.property(e.name(), ValueUtil.convert(e.value())));
-                    newVertex.property(ID_PROPERTY, newVertex.id());
-                    entity.add(ID_PROPERTY, newVertex.id());
-                    return newVertex;
-                });
+                .orElseGet(() -> addVertex(entity));
     }
 
     private Optional findVertexById(Object id) {
diff --git a/jnosql-tinkerpop/src/main/java/org/eclipse/jnosql/databases/tinkerpop/communication/TinkerpopGraphDatabaseManager.java b/jnosql-tinkerpop/src/main/java/org/eclipse/jnosql/databases/tinkerpop/communication/TinkerpopGraphDatabaseManager.java
index ddaf5d175..5007ee681 100644
--- a/jnosql-tinkerpop/src/main/java/org/eclipse/jnosql/databases/tinkerpop/communication/TinkerpopGraphDatabaseManager.java
+++ b/jnosql-tinkerpop/src/main/java/org/eclipse/jnosql/databases/tinkerpop/communication/TinkerpopGraphDatabaseManager.java
@@ -15,6 +15,7 @@
 package org.eclipse.jnosql.databases.tinkerpop.communication;
 
 import org.apache.tinkerpop.gremlin.structure.Graph;
+import org.apache.tinkerpop.gremlin.structure.T;
 import org.eclipse.jnosql.communication.graph.GraphDatabaseManager;
 import org.eclipse.jnosql.communication.semistructured.DatabaseManager;
 
@@ -35,6 +36,8 @@
  */
 public interface TinkerpopGraphDatabaseManager extends GraphDatabaseManager, Supplier {
 
+    String ID = T.id.getAccessor();
+
     /**
      * Creates a new instance of DefaultGraphDatabaseManager with the specified TinkerPop Graph.
      *
diff --git a/jnosql-tinkerpop/src/test/java/org/eclipse/jnosql/databases/tinkerpop/cdi/ArangoDeployment.java b/jnosql-tinkerpop/src/test/java/org/eclipse/jnosql/databases/tinkerpop/cdi/ArangoDeployment.java
new file mode 100644
index 000000000..4b7affb65
--- /dev/null
+++ b/jnosql-tinkerpop/src/test/java/org/eclipse/jnosql/databases/tinkerpop/cdi/ArangoDeployment.java
@@ -0,0 +1,37 @@
+/*
+ *  Copyright (c) 2022 Contributors to the Eclipse Foundation
+ *   All rights reserved. This program and the accompanying materials
+ *   are made available under the terms of the Eclipse Public License v1.0
+ *   and Apache License v2.0 which accompanies this distribution.
+ *   The Eclipse Public License is available at http://www.eclipse.org/legal/epl-v10.html
+ *   and the Apache License v2.0 is available at http://www.opensource.org/licenses/apache2.0.php.
+ *
+ *   You may elect to redistribute this code under either of these licenses.
+ *
+ *   Contributors:
+ *
+ *   Otavio Santana
+ */
+package org.eclipse.jnosql.databases.tinkerpop.cdi;
+
+import org.testcontainers.containers.GenericContainer;
+import org.testcontainers.containers.wait.strategy.Wait;
+
+enum ArangoDeployment {
+    INSTANCE;
+
+    private final GenericContainer> arangodb =
+            new GenericContainer<>("arangodb/arangodb:latest")
+                    .withExposedPorts(8529)
+                    .withEnv("ARANGO_NO_AUTH", "1")
+                    .waitingFor(Wait.forHttp("/")
+                            .forStatusCode(200));
+
+    {
+        arangodb.start();
+    }
+
+    public GenericContainer> getContainer() {
+        return arangodb;
+    }
+}
diff --git a/jnosql-tinkerpop/src/test/java/org/eclipse/jnosql/databases/tinkerpop/cdi/TestGraphSupplier.java b/jnosql-tinkerpop/src/test/java/org/eclipse/jnosql/databases/tinkerpop/cdi/TestGraphSupplier.java
new file mode 100644
index 000000000..598b1f81b
--- /dev/null
+++ b/jnosql-tinkerpop/src/test/java/org/eclipse/jnosql/databases/tinkerpop/cdi/TestGraphSupplier.java
@@ -0,0 +1,81 @@
+/*
+ *  Copyright (c) 2022 Contributors to the Eclipse Foundation
+ *   All rights reserved. This program and the accompanying materials
+ *   are made available under the terms of the Eclipse Public License v1.0
+ *   and Apache License v2.0 which accompanies this distribution.
+ *   The Eclipse Public License is available at http://www.eclipse.org/legal/epl-v10.html
+ *   and the Apache License v2.0 is available at http://www.opensource.org/licenses/apache2.0.php.
+ *
+ *   You may elect to redistribute this code under either of these licenses.
+ *
+ *   Contributors:
+ *
+ *   Otavio Santana
+ *   Michele Rastelli
+ */
+package org.eclipse.jnosql.databases.tinkerpop.cdi;
+
+import com.arangodb.tinkerpop.gremlin.structure.ArangoDBGraph;
+import com.arangodb.tinkerpop.gremlin.structure.ArangoDBGraphConfig;
+import org.apache.commons.configuration2.BaseConfiguration;
+import org.apache.commons.configuration2.Configuration;
+import org.apache.tinkerpop.gremlin.neo4j.structure.Neo4jGraph;
+import org.apache.tinkerpop.gremlin.structure.Graph;
+import org.apache.tinkerpop.gremlin.structure.util.GraphFactory;
+import org.apache.tinkerpop.gremlin.tinkergraph.structure.TinkerGraph;
+import org.apache.tinkerpop.gremlin.tinkergraph.structure.TinkerTransactionGraph;
+import org.testcontainers.containers.GenericContainer;
+
+import java.io.File;
+import java.util.List;
+import java.util.function.Supplier;
+import java.util.logging.Logger;
+
+import static java.lang.System.currentTimeMillis;
+
+public enum TestGraphSupplier implements Supplier {
+
+    NEO4J {
+        private static final Logger LOGGER = Logger.getLogger(TestGraphSupplier.class.getName());
+
+        @Override
+        public Graph get() {
+            String directory = new File("").getAbsolutePath() + "/target/neo4j-graph/" + currentTimeMillis();
+            LOGGER.info("Starting Neo4j at directory: " + directory);
+            return Neo4jGraph.open(directory);
+        }
+    },
+
+    ARANGODB {
+        @Override
+        public Graph get() {
+            GenericContainer> container = ArangoDeployment.INSTANCE.getContainer();
+            Configuration configuration = new BaseConfiguration();
+            configuration.addProperty("gremlin.graph", ArangoDBGraph.class.getName());
+            configuration.addProperty("gremlin.arangodb.conf.graph.enableDataDefinition", true);
+            configuration.addProperty("gremlin.arangodb.conf.graph.type", ArangoDBGraphConfig.GraphType.COMPLEX.name());
+            configuration.addProperty("gremlin.arangodb.conf.graph.edgeDefinitions", List.of(
+                    "reads:[Human]->[Magazine]",
+                    "knows:[Person]->[Person]",
+                    "eats:[Creature]->[Creature]",
+                    "loves:[Human]->[Human]",
+                    "likes:[Human]->[Creature]",
+                    "friend:[Person]->[Person]"
+            ));
+            configuration.addProperty("gremlin.arangodb.conf.driver.hosts", container.getHost() + ":" + container.getFirstMappedPort());
+            return GraphFactory.open(configuration);
+        }
+    },
+
+    TINKER_GRAPH {
+        @Override
+        public Graph get() {
+            Configuration configuration = new BaseConfiguration();
+            configuration.setProperty(TinkerGraph.GREMLIN_TINKERGRAPH_VERTEX_ID_MANAGER, TinkerGraph.DefaultIdManager.STRING.name());
+            configuration.setProperty(TinkerGraph.GREMLIN_TINKERGRAPH_EDGE_ID_MANAGER, TinkerGraph.DefaultIdManager.STRING.name());
+            configuration.setProperty(TinkerGraph.GREMLIN_TINKERGRAPH_VERTEX_PROPERTY_ID_MANAGER, TinkerGraph.DefaultIdManager.STRING.name());
+            return TinkerTransactionGraph.open(configuration);
+        }
+    }
+
+}
diff --git a/jnosql-tinkerpop/src/test/java/org/eclipse/jnosql/databases/tinkerpop/cdi/arangodb/ArangoDBGraphProducer.java b/jnosql-tinkerpop/src/test/java/org/eclipse/jnosql/databases/tinkerpop/cdi/arangodb/ArangoDBGraphProducer.java
new file mode 100644
index 000000000..6919f1a34
--- /dev/null
+++ b/jnosql-tinkerpop/src/test/java/org/eclipse/jnosql/databases/tinkerpop/cdi/arangodb/ArangoDBGraphProducer.java
@@ -0,0 +1,59 @@
+/*
+ *  Copyright (c) 2022 Contributors to the Eclipse Foundation
+ *   All rights reserved. This program and the accompanying materials
+ *   are made available under the terms of the Eclipse Public License v1.0
+ *   and Apache License v2.0 which accompanies this distribution.
+ *   The Eclipse Public License is available at http://www.eclipse.org/legal/epl-v10.html
+ *   and the Apache License v2.0 is available at http://www.opensource.org/licenses/apache2.0.php.
+ *
+ *   You may elect to redistribute this code under either of these licenses.
+ *
+ *   Contributors:
+ *
+ *   Otavio Santana
+ *   Michele Rastelli
+ */
+package org.eclipse.jnosql.databases.tinkerpop.cdi.arangodb;
+
+import jakarta.annotation.PostConstruct;
+import jakarta.annotation.Priority;
+import jakarta.enterprise.context.ApplicationScoped;
+import jakarta.enterprise.inject.Alternative;
+import jakarta.enterprise.inject.Disposes;
+import jakarta.enterprise.inject.Produces;
+import jakarta.interceptor.Interceptor;
+import org.apache.tinkerpop.gremlin.structure.Graph;
+import org.eclipse.jnosql.databases.tinkerpop.cdi.TestGraphSupplier;
+
+import java.util.function.Supplier;
+import java.util.logging.Logger;
+
+@ApplicationScoped
+@Alternative
+@Priority(Interceptor.Priority.APPLICATION)
+public class ArangoDBGraphProducer implements Supplier {
+
+    private static final Logger LOGGER = Logger.getLogger(ArangoDBGraphProducer.class.getName());
+
+    private Graph graph;
+
+    @PostConstruct
+    public void init() {
+        graph = TestGraphSupplier.ARANGODB.get();
+        LOGGER.info("Graph database created");
+    }
+
+    @Produces
+    @ApplicationScoped
+    @Override
+    public Graph get() {
+        return graph;
+    }
+
+    public void dispose(@Disposes Graph graph) throws Exception {
+        LOGGER.info("Graph database closing");
+        graph.close();
+        LOGGER.info("Graph Database closed");
+    }
+
+}
diff --git a/jnosql-tinkerpop/src/test/java/org/eclipse/jnosql/databases/tinkerpop/mapping/GraphProducer.java b/jnosql-tinkerpop/src/test/java/org/eclipse/jnosql/databases/tinkerpop/cdi/mock/MockGraphProducer.java
similarity index 50%
rename from jnosql-tinkerpop/src/test/java/org/eclipse/jnosql/databases/tinkerpop/mapping/GraphProducer.java
rename to jnosql-tinkerpop/src/test/java/org/eclipse/jnosql/databases/tinkerpop/cdi/mock/MockGraphProducer.java
index e93101c3f..97099c958 100644
--- a/jnosql-tinkerpop/src/test/java/org/eclipse/jnosql/databases/tinkerpop/mapping/GraphProducer.java
+++ b/jnosql-tinkerpop/src/test/java/org/eclipse/jnosql/databases/tinkerpop/cdi/mock/MockGraphProducer.java
@@ -12,32 +12,21 @@
  *
  *   Otavio Santana
  */
-package org.eclipse.jnosql.databases.tinkerpop.mapping;
+package org.eclipse.jnosql.databases.tinkerpop.cdi.mock;
 
-import jakarta.annotation.PostConstruct;
 import jakarta.annotation.Priority;
 import jakarta.enterprise.context.ApplicationScoped;
 import jakarta.enterprise.inject.Alternative;
-import jakarta.enterprise.inject.Disposes;
 import jakarta.enterprise.inject.Produces;
 import jakarta.interceptor.Interceptor;
-import org.apache.tinkerpop.gremlin.neo4j.structure.Neo4jGraph;
 import org.apache.tinkerpop.gremlin.structure.Graph;
 import org.apache.tinkerpop.gremlin.structure.Vertex;
 import org.eclipse.jnosql.mapping.Database;
 import org.eclipse.jnosql.mapping.DatabaseType;
 import org.mockito.Mockito;
 
-import java.io.File;
-import java.nio.file.Files;
-import java.nio.file.Path;
-import java.nio.file.Paths;
 import java.util.Collections;
-import java.util.Comparator;
-import java.util.function.Supplier;
-import java.util.logging.Logger;
 
-import static java.lang.System.currentTimeMillis;
 import static java.util.Collections.singleton;
 import static org.mockito.Mockito.mock;
 import static org.mockito.Mockito.when;
@@ -45,40 +34,17 @@
 @ApplicationScoped
 @Alternative
 @Priority(Interceptor.Priority.APPLICATION)
-public class GraphProducer implements Supplier {
-
-    private static final Logger LOGGER = Logger.getLogger(GraphProducer.class.getName());
-
-    private Graph graph;
-
-    private String directory;
-
-    @PostConstruct
-    public void init() {
-        this.directory = new File("").getAbsolutePath() + "/target/jnosql-graph/" + currentTimeMillis() + "/";
-        LOGGER.info("Starting Graph database at directory: " + directory);
-        this.graph = Neo4jGraph.open(directory);
-        LOGGER.info("Graph database created");
-    }
-
-    @Produces
-    @ApplicationScoped
-    @Override
-    public Graph get() {
-        return graph;
-    }
-
+public class MockGraphProducer {
 
     @Produces
     @ApplicationScoped
     @Database(value = DatabaseType.GRAPH, provider = "graphRepositoryMock")
     public Graph getGraphMock() {
-
         Graph graphMock = mock(Graph.class);
         Vertex vertex = mock(Vertex.class);
         when(vertex.label()).thenReturn("Person");
-        when(vertex.id()).thenReturn(10L);
-        when(graphMock.vertices(10L)).thenReturn(Collections.emptyIterator());
+        when(vertex.id()).thenReturn("10");
+        when(graphMock.vertices("10")).thenReturn(Collections.emptyIterator());
         when(vertex.keys()).thenReturn(singleton("name"));
         when(vertex.value("name")).thenReturn("nameMock");
         when(graphMock.addVertex(Mockito.anyString())).thenReturn(vertex);
@@ -86,18 +52,4 @@ public Graph getGraphMock() {
         return graphMock;
     }
 
-    public void dispose(@Disposes Graph graph) throws Exception {
-        LOGGER.info("Graph database closing");
-        graph.close();
-        final Path path = Paths.get(directory);
-        if (Files.exists(path)) {
-            LOGGER.info("Removing directory graph database: " + directory);
-            Files.walk(path)
-                    .sorted(Comparator.reverseOrder())
-                    .map(Path::toFile)
-                    .forEach(File::delete);
-            LOGGER.info("Graph directory exists?: " + Files.exists(path));
-        }
-        LOGGER.info("Graph Database closed");
-    }
 }
diff --git a/jnosql-tinkerpop/src/test/java/org/eclipse/jnosql/databases/tinkerpop/cdi/neo4j/Neo4jGraphProducer.java b/jnosql-tinkerpop/src/test/java/org/eclipse/jnosql/databases/tinkerpop/cdi/neo4j/Neo4jGraphProducer.java
new file mode 100644
index 000000000..19904faf1
--- /dev/null
+++ b/jnosql-tinkerpop/src/test/java/org/eclipse/jnosql/databases/tinkerpop/cdi/neo4j/Neo4jGraphProducer.java
@@ -0,0 +1,59 @@
+/*
+ *  Copyright (c) 2022 Contributors to the Eclipse Foundation
+ *   All rights reserved. This program and the accompanying materials
+ *   are made available under the terms of the Eclipse Public License v1.0
+ *   and Apache License v2.0 which accompanies this distribution.
+ *   The Eclipse Public License is available at http://www.eclipse.org/legal/epl-v10.html
+ *   and the Apache License v2.0 is available at http://www.opensource.org/licenses/apache2.0.php.
+ *
+ *   You may elect to redistribute this code under either of these licenses.
+ *
+ *   Contributors:
+ *
+ *   Otavio Santana
+ *   Michele Rastelli
+ */
+package org.eclipse.jnosql.databases.tinkerpop.cdi.neo4j;
+
+import jakarta.annotation.PostConstruct;
+import jakarta.annotation.Priority;
+import jakarta.enterprise.context.ApplicationScoped;
+import jakarta.enterprise.inject.Alternative;
+import jakarta.enterprise.inject.Disposes;
+import jakarta.enterprise.inject.Produces;
+import jakarta.interceptor.Interceptor;
+import org.apache.tinkerpop.gremlin.structure.Graph;
+import org.eclipse.jnosql.databases.tinkerpop.cdi.TestGraphSupplier;
+
+import java.util.function.Supplier;
+import java.util.logging.Logger;
+
+@ApplicationScoped
+@Alternative
+@Priority(Interceptor.Priority.APPLICATION)
+public class Neo4jGraphProducer implements Supplier {
+
+    private static final Logger LOGGER = Logger.getLogger(Neo4jGraphProducer.class.getName());
+
+    private Graph graph;
+
+    @PostConstruct
+    public void init() {
+        graph = TestGraphSupplier.NEO4J.get();
+        LOGGER.info("Graph database created");
+    }
+
+    @Produces
+    @ApplicationScoped
+    @Override
+    public Graph get() {
+        return graph;
+    }
+
+    public void dispose(@Disposes Graph graph) throws Exception {
+        LOGGER.info("Graph database closing");
+        graph.close();
+        LOGGER.info("Graph Database closed");
+    }
+
+}
diff --git a/jnosql-tinkerpop/src/test/java/org/eclipse/jnosql/databases/tinkerpop/communication/GraphSupplier.java b/jnosql-tinkerpop/src/test/java/org/eclipse/jnosql/databases/tinkerpop/cdi/tinkergraph/TinkerGraphProducer.java
similarity index 50%
rename from jnosql-tinkerpop/src/test/java/org/eclipse/jnosql/databases/tinkerpop/communication/GraphSupplier.java
rename to jnosql-tinkerpop/src/test/java/org/eclipse/jnosql/databases/tinkerpop/cdi/tinkergraph/TinkerGraphProducer.java
index dcf55743b..7a135ae3c 100644
--- a/jnosql-tinkerpop/src/test/java/org/eclipse/jnosql/databases/tinkerpop/communication/GraphSupplier.java
+++ b/jnosql-tinkerpop/src/test/java/org/eclipse/jnosql/databases/tinkerpop/cdi/tinkergraph/TinkerGraphProducer.java
@@ -11,35 +11,36 @@
  *   Contributors:
  *
  *   Otavio Santana
+ *   Michele Rastelli
  */
-package org.eclipse.jnosql.databases.tinkerpop.communication;
-
-import org.apache.tinkerpop.gremlin.neo4j.structure.Neo4jGraph;
+package org.eclipse.jnosql.databases.tinkerpop.cdi.tinkergraph;
+
+import jakarta.annotation.Priority;
+import jakarta.enterprise.context.ApplicationScoped;
+import jakarta.enterprise.inject.Alternative;
+import jakarta.enterprise.inject.Disposes;
+import jakarta.enterprise.inject.Produces;
+import jakarta.interceptor.Interceptor;
 import org.apache.tinkerpop.gremlin.structure.Graph;
+import org.eclipse.jnosql.databases.tinkerpop.cdi.TestGraphSupplier;
 
-import java.io.File;
 import java.util.function.Supplier;
-import java.util.logging.Logger;
-
-import static java.lang.System.currentTimeMillis;
-
-public enum GraphSupplier implements Supplier {
-    INSTANCE;
 
-    private static final Logger LOGGER = Logger.getLogger(GraphSupplier.class.getName());
 
-    private final String directory;
-
-    private final Graph graph;
-
-    {
-        this.directory = new File("").getAbsolutePath() + "/target/jnosql-communication-graph/" + currentTimeMillis() + "/";
-        graph = Neo4jGraph.open(directory);
-    }
+@ApplicationScoped
+@Alternative
+@Priority(Interceptor.Priority.APPLICATION)
+public class TinkerGraphProducer implements Supplier {
 
+    @Produces
+    @ApplicationScoped
     @Override
     public Graph get() {
-        LOGGER.info("Starting Graph database at directory: " + directory);
-        return graph;
+        return TestGraphSupplier.TINKER_GRAPH.get();
+    }
+
+    public void dispose(@Disposes Graph graph) throws Exception {
+        graph.close();
     }
+
 }
diff --git a/jnosql-tinkerpop/src/test/java/org/eclipse/jnosql/databases/tinkerpop/communication/DefaultTinkerpopGraphDatabaseManagerTest.java b/jnosql-tinkerpop/src/test/java/org/eclipse/jnosql/databases/tinkerpop/communication/DefaultTinkerpopGraphDatabaseManagerTest.java
index 0e62930c7..d91b42362 100644
--- a/jnosql-tinkerpop/src/test/java/org/eclipse/jnosql/databases/tinkerpop/communication/DefaultTinkerpopGraphDatabaseManagerTest.java
+++ b/jnosql-tinkerpop/src/test/java/org/eclipse/jnosql/databases/tinkerpop/communication/DefaultTinkerpopGraphDatabaseManagerTest.java
@@ -25,7 +25,9 @@
 import org.eclipse.jnosql.communication.semistructured.Element;
 import org.eclipse.jnosql.communication.semistructured.Elements;
 import org.eclipse.jnosql.communication.semistructured.SelectQuery;
+import org.eclipse.jnosql.databases.tinkerpop.cdi.TestGraphSupplier;
 import org.eclipse.jnosql.mapping.semistructured.MappingQuery;
+import org.junit.jupiter.api.AfterEach;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
 
@@ -42,24 +44,47 @@
 import static org.assertj.core.api.Assertions.assertThat;
 import static org.eclipse.jnosql.communication.semistructured.DeleteQuery.delete;
 import static org.eclipse.jnosql.communication.semistructured.SelectQuery.select;
+import static org.eclipse.jnosql.databases.tinkerpop.communication.TinkerpopGraphDatabaseManager.ID;
 import static org.junit.jupiter.api.Assertions.assertEquals;
 import static org.junit.jupiter.api.Assertions.assertFalse;
 import static org.junit.jupiter.api.Assertions.assertNotNull;
 import static org.junit.jupiter.api.Assertions.assertThrows;
 import static org.junit.jupiter.api.Assertions.assertTrue;
 
-class DefaultTinkerpopGraphDatabaseManagerTest {
+abstract class DefaultTinkerpopGraphDatabaseManagerTest {
 
-    public static final String COLLECTION_NAME = "person";
+    static class ArangoDBTest extends DefaultTinkerpopGraphDatabaseManagerTest {
+        @Override
+        Graph graph() {
+            return TestGraphSupplier.ARANGODB.get();
+        }
+    }
+
+    static class Neo4jTest extends DefaultTinkerpopGraphDatabaseManagerTest {
+        @Override
+        Graph graph() {
+            return TestGraphSupplier.NEO4J.get();
+        }
+    }
+
+    static class TinkerGraphTest extends DefaultTinkerpopGraphDatabaseManagerTest {
+        @Override
+        Graph graph() {
+            return TestGraphSupplier.TINKER_GRAPH.get();
+        }
+    }
+
+    static final String COLLECTION_NAME = "Person";
 
     private TinkerpopGraphDatabaseManager entityManager;
 
     private final Faker faker = new Faker();
 
+    abstract Graph graph();
+
     @BeforeEach
-    void setUp(){
-        Graph graph = GraphSupplier.INSTANCE.get();
-        this.entityManager = TinkerpopGraphDatabaseManager.of(graph);
+    void setUp() {
+        this.entityManager = TinkerpopGraphDatabaseManager.of(graph());
     }
 
     @BeforeEach
@@ -67,8 +92,13 @@ void beforeEach() {
         delete().from(COLLECTION_NAME).delete(entityManager);
     }
 
+    @AfterEach
+    void close() {
+        entityManager.close();
+    }
+
     @Test
-    void shouldInsertEntity(){
+    void shouldInsertEntity() {
         String name = faker.name().fullName();
         var age = faker.number().randomDigit();
         var entity = CommunicationEntity.of("Person");
@@ -80,12 +110,12 @@ void shouldInsertEntity(){
         SoftAssertions.assertSoftly(softly -> {
             softly.assertThat(communicationEntity.find("name", String.class)).get().isEqualTo(name);
             softly.assertThat(communicationEntity.find("age", int.class)).get().isEqualTo(age);
-            softly.assertThat(communicationEntity.find(DefaultTinkerpopGraphDatabaseManager.ID_PROPERTY)).isPresent();
+            softly.assertThat(communicationEntity.find(ID)).isPresent();
         });
     }
 
     @Test
-    void shouldInsertEntities(){
+    void shouldInsertEntities() {
         String name = faker.name().fullName();
         var age = faker.number().randomDigit();
         var entity = CommunicationEntity.of("Person");
@@ -106,11 +136,11 @@ void shouldInsertEntities(){
             softly.assertThat(communicationEntities).hasSize(2);
             softly.assertThat(communicationEntities.get(0).find("name", String.class)).get().isEqualTo(name);
             softly.assertThat(communicationEntities.get(0).find("age", int.class)).get().isEqualTo(age);
-            softly.assertThat(communicationEntities.get(0).find(DefaultTinkerpopGraphDatabaseManager.ID_PROPERTY)).isPresent();
+            softly.assertThat(communicationEntities.get(0).find(ID)).isPresent();
 
             softly.assertThat(communicationEntities.get(1).find("name", String.class)).get().isEqualTo(name2);
             softly.assertThat(communicationEntities.get(1).find("age", int.class)).get().isEqualTo(age2);
-            softly.assertThat(communicationEntities.get(1).find(DefaultTinkerpopGraphDatabaseManager.ID_PROPERTY)).isPresent();
+            softly.assertThat(communicationEntities.get(1).find(ID)).isPresent();
         });
 
     }
@@ -119,7 +149,7 @@ void shouldInsertEntities(){
     void shouldInsert() {
         var entity = getEntity();
         var documentEntity = entityManager.insert(entity);
-        assertTrue(documentEntity.elements().stream().map(Element::name).anyMatch(s -> s.equals("_id")));
+        assertTrue(documentEntity.elements().stream().map(Element::name).anyMatch(s -> s.equals(ID)));
     }
 
     @Test
@@ -142,11 +172,11 @@ void shouldUpdate() {
     void shouldRemoveEntity() {
         var documentEntity = entityManager.insert(getEntity());
 
-        Optional id = documentEntity.find("_id");
+        Optional id = documentEntity.find(ID);
         var query = select().from(COLLECTION_NAME)
-                .where("_id").eq(id.orElseThrow().get())
+                .where(ID).eq(id.orElseThrow().get())
                 .build();
-        var deleteQuery = delete().from(COLLECTION_NAME).where("_id")
+        var deleteQuery = delete().from(COLLECTION_NAME).where(ID)
                 .eq(id.get().get())
                 .build();
 
@@ -157,10 +187,10 @@ void shouldRemoveEntity() {
     @Test
     void shouldFindDocument() {
         var entity = entityManager.insert(getEntity());
-        Optional id = entity.find("_id");
+        Optional id = entity.find(ID);
 
         var query = select().from(COLLECTION_NAME)
-                .where("_id").eq(id.orElseThrow().get())
+                .where(ID).eq(id.orElseThrow().get())
                 .build();
 
         var entities = entityManager.select(query).collect(Collectors.toList());
@@ -171,11 +201,12 @@ void shouldFindDocument() {
     @Test
     void shouldFindDocument2() {
         var entity = entityManager.insert(getEntity());
-        Optional id = entity.find("_id");
+        Optional id = entity.find(ID);
 
         var query = select().from(COLLECTION_NAME)
                 .where("name").eq("Poliana")
-                .and("city").eq("Salvador").and("_id").eq(id.orElseThrow().get())
+                .and("city").eq("Salvador")
+                .and(ID).eq(id.orElseThrow().get())
                 .build();
 
         List entities = entityManager.select(query).collect(Collectors.toList());
@@ -186,11 +217,11 @@ void shouldFindDocument2() {
     @Test
     void shouldFindDocument3() {
         var entity = entityManager.insert(getEntity());
-        Optional id = entity.find("_id");
+        Optional id = entity.find(ID);
         var query = select().from(COLLECTION_NAME)
                 .where("name").eq("Poliana")
                 .or("city").eq("Salvador")
-                .and(id.orElseThrow().name()).eq(id.get().get())
+                .and(ID).eq(id.orElseThrow().get())
                 .build();
 
         List entities = entityManager.select(query).collect(Collectors.toList());
@@ -304,7 +335,6 @@ void shouldFindDocumentBetween() {
         });
 
 
-
     }
 
     @Test
@@ -426,7 +456,7 @@ void shouldFindAllByFields() {
         assertEquals(3, entity.size());
         SoftAssertions.assertSoftly(softly -> {
             softly.assertThat(entity.find("name")).isPresent();
-            softly.assertThat(entity.find("_id")).isPresent();
+            softly.assertThat(entity.find(ID)).isPresent();
             softly.assertThat(entity.find("city")).isPresent();
         });
     }
@@ -436,15 +466,15 @@ void shouldCreateEdge() {
         var person1 = entityManager.insert(getEntity());
         var person2 = entityManager.insert(getEntity());
 
-        String label = "FRIEND";
+        String label = "friend";
         Map properties = Map.of("since", 2023);
 
         var edge = entityManager.edge(person1, label, person2, properties);
 
         assertNotNull(edge);
         assertEquals(label, edge.label());
-        assertEquals(person1.find("_id").orElseThrow().get(), edge.source().find("_id").orElseThrow().get());
-        assertEquals(person2.find("_id").orElseThrow().get(), edge.target().find("_id").orElseThrow().get());
+        assertEquals(person1.find(ID).orElseThrow().get(), edge.source().find(ID).orElseThrow().get());
+        assertEquals(person2.find(ID).orElseThrow().get(), edge.target().find(ID).orElseThrow().get());
         assertEquals(properties, edge.properties());
     }
 
@@ -453,9 +483,9 @@ void shouldRemoveEdge() {
         var person1 = entityManager.insert(getEntity());
         var person2 = entityManager.insert(getEntity());
 
-        CommunicationEdge communicationEdge = entityManager.edge(person1, "FRIEND", person2, Map.of());
+        CommunicationEdge communicationEdge = entityManager.edge(person1, "friend", person2, Map.of());
 
-        entityManager.remove(person1, "FRIEND", person2);
+        entityManager.remove(person1, "friend", person2);
 
         var edges = entityManager.findEdgeById(communicationEdge.id());
 
@@ -467,7 +497,7 @@ void shouldDeleteEdgeById() {
         var person1 = entityManager.insert(getEntity());
         var person2 = entityManager.insert(getEntity());
 
-        var edge = entityManager.edge(person1, "FRIEND", person2, Map.of());
+        var edge = entityManager.edge(person1, "friend", person2, Map.of());
 
         entityManager.deleteEdge(edge.id());
 
@@ -480,15 +510,15 @@ void shouldFindEdgeById() {
         var person1 = entityManager.insert(getEntity());
         var person2 = entityManager.insert(getEntity());
 
-        var edge = entityManager.edge(person1, "FRIEND", person2, Map.of("since", 2023));
+        var edge = entityManager.edge(person1, "friend", person2, Map.of("since", 2023));
 
         Optional foundEdge = entityManager.findEdgeById(edge.id());
 
         assertTrue(foundEdge.isPresent());
         assertEquals(edge.id(), foundEdge.get().id());
         assertEquals(edge.label(), foundEdge.get().label());
-        assertEquals(edge.source().find("_id").orElseThrow().get(), foundEdge.get().source().find("_id").orElseThrow().get());
-        assertEquals(edge.target().find("_id").orElseThrow().get(), foundEdge.get().target().find("_id").orElseThrow().get());
+        assertEquals(edge.source().find(ID).orElseThrow().get(), foundEdge.get().source().find(ID).orElseThrow().get());
+        assertEquals(edge.target().find(ID).orElseThrow().get(), foundEdge.get().target().find(ID).orElseThrow().get());
     }
 
     @Test
diff --git a/jnosql-tinkerpop/src/test/java/org/eclipse/jnosql/databases/tinkerpop/mapping/AbstractTinkerpopTemplateTest.java b/jnosql-tinkerpop/src/test/java/org/eclipse/jnosql/databases/tinkerpop/mapping/AbstractTinkerpopTemplateTest.java
index 295956616..bb6af7b8a 100644
--- a/jnosql-tinkerpop/src/test/java/org/eclipse/jnosql/databases/tinkerpop/mapping/AbstractTinkerpopTemplateTest.java
+++ b/jnosql-tinkerpop/src/test/java/org/eclipse/jnosql/databases/tinkerpop/mapping/AbstractTinkerpopTemplateTest.java
@@ -42,6 +42,7 @@
 
 import static java.util.stream.Collectors.toList;
 import static org.assertj.core.api.Assertions.assertThat;
+import static org.junit.Assume.assumeTrue;
 import static org.junit.jupiter.api.Assertions.assertEquals;
 import static org.junit.jupiter.api.Assertions.assertFalse;
 import static org.junit.jupiter.api.Assertions.assertNotNull;
@@ -119,7 +120,7 @@ void shouldMergeOnInsert() {
 
     @Test
     void shouldGetErrorWhenIdIsNullWhenUpdate() {
-        assertThrows(EmptyResultException.class, () -> {
+        assertThrows(IllegalArgumentException.class, () -> {
             Human human = Human.builder().withAge()
                     .withName("Otavio").build();
             getGraphTemplate().update(human);
@@ -130,7 +131,7 @@ void shouldGetErrorWhenIdIsNullWhenUpdate() {
     void shouldGetErrorWhenEntityIsNotSavedYet() {
         assertThrows(EmptyResultException.class, () -> {
             Human human = Human.builder().withAge()
-                    .withId(10L)
+                    .withId("10")
                     .withName("Otavio").build();
 
             getGraphTemplate().update(human);
@@ -212,7 +213,7 @@ void shouldFindAnEntity() {
 
     @Test
     void shouldNotFindAnEntity() {
-        Optional personFound = getGraphTemplate().find(0L);
+        Optional personFound = getGraphTemplate().find("0");
         assertFalse(personFound.isPresent());
     }
 
@@ -275,12 +276,12 @@ void shouldReturnErrorWhenGetEdgesIdHasNullId() {
 
     @Test
     void shouldReturnErrorWhenGetEdgesIdHasNullDirection() {
-        assertThrows(NullPointerException.class, () -> getGraphTemplate().edgesById(10, null));
+        assertThrows(NullPointerException.class, () -> getGraphTemplate().edgesById("10", null));
     }
 
     @Test
     void shouldReturnEmptyWhenVertexDoesNotExist() {
-        Collection edges = getGraphTemplate().edgesById(10, Direction.BOTH);
+        Collection edges = getGraphTemplate().edgesById("10", Direction.BOTH);
         assertTrue(edges.isEmpty());
     }
 
@@ -349,7 +350,7 @@ void shouldReturnErrorWhenGetEdgesHasNullId() {
 
     @Test
     void shouldReturnErrorWhenGetEdgesHasNullId2() {
-            Human otavio = Human.builder().withId(0L).withAge().withName("Otavio").build();
+        Human otavio = Human.builder().withId("0").withAge().withName("Otavio").build();
         Collection edges = getGraphTemplate().edges(otavio, Direction.BOTH);
         assertThat(edges).isEmpty();
     }
@@ -365,7 +366,7 @@ void shouldReturnErrorWhenGetEdgesHasNullDirection() {
 
     @Test
     void shouldReturnEmptyWhenEntityDoesNotExist() {
-        Human otavio = Human.builder().withAge().withName("Otavio").withId(10L).build();
+        Human otavio = Human.builder().withAge().withName("Otavio").withId("10").build();
         Collection edges = getGraphTemplate().edges(otavio, Direction.BOTH);
         assertTrue(edges.isEmpty());
     }
@@ -399,6 +400,7 @@ void shouldReturnEdges() {
 
     @Test
     void shouldGetTransaction() {
+        assumeTrue("transactions not supported", getGraph().features().graph().supportsTransactions());
         Transaction transaction = getGraphTemplate().transaction();
         assertNotNull(transaction);
     }
@@ -430,7 +432,7 @@ void shouldExecuteQueryWithParameter() {
 
     @Test
     void shouldReturnEmpty() {
-        Optional person = getGraphTemplate().gremlinSingleResult("g.V().hasLabel('Person')");
+        Optional person = getGraphTemplate().gremlinSingleResult("g.V().hasLabel('person')");
         assertFalse(person.isPresent());
     }
 
@@ -541,8 +543,7 @@ void shouldDeleteAll() {
 
     @Test
     void shouldReturnEmptyWhenFindByIdNotFound() {
-
-        final Optional person = getGraphTemplate().find(Human.class, -2L);
+        final Optional person = getGraphTemplate().find(Human.class, "-2");
         assertNotNull(person);
         assertFalse(person.isPresent());
     }
@@ -567,12 +568,12 @@ void shouldCreateEdgeByGraphAPI() {
         final Human poliana = getGraphTemplate().insert(Human.builder().withAge()
                 .withName("Poliana").build());
 
-        var edge = org.eclipse.jnosql.mapping.graph.Edge.source(otavio).label("LOVES").target(poliana).build();
+        var edge = org.eclipse.jnosql.mapping.graph.Edge.source(otavio).label("loves").target(poliana).build();
         var edgeEntity = getGraphTemplate().edge(edge);
 
         SoftAssertions.assertSoftly(softly -> {
             softly.assertThat(edgeEntity).isNotNull();
-            softly.assertThat(edgeEntity.label()).isEqualTo("LOVES");
+            softly.assertThat(edgeEntity.label()).isEqualTo("loves");
             softly.assertThat(edgeEntity.source()).isEqualTo(otavio);
             softly.assertThat(edgeEntity.target()).isEqualTo(poliana);
         });
@@ -587,7 +588,7 @@ void shouldCreateEdgeByGraphAPIWithProperties() {
                 .withName("Poliana").build());
 
         var edge = org.eclipse.jnosql.mapping.graph.Edge.source(otavio)
-                .label("LOVES")
+                .label("loves")
                 .target(poliana)
                 .property("when", "2017")
                 .property("where", "Brazil")
@@ -596,7 +597,7 @@ void shouldCreateEdgeByGraphAPIWithProperties() {
 
         SoftAssertions.assertSoftly(softly -> {
             softly.assertThat(edgeEntity).isNotNull();
-            softly.assertThat(edgeEntity.label()).isEqualTo("LOVES");
+            softly.assertThat(edgeEntity.label()).isEqualTo("loves");
             softly.assertThat(edgeEntity.source()).isEqualTo(otavio);
             softly.assertThat(edgeEntity.target()).isEqualTo(poliana);
             softly.assertThat(edgeEntity.properties()).hasSize(2);
diff --git a/jnosql-tinkerpop/src/test/java/org/eclipse/jnosql/databases/tinkerpop/mapping/DefaultEdgeTraversalTest.java b/jnosql-tinkerpop/src/test/java/org/eclipse/jnosql/databases/tinkerpop/mapping/DefaultEdgeTraversalTest.java
index 296829c1f..bdb8c8d02 100644
--- a/jnosql-tinkerpop/src/test/java/org/eclipse/jnosql/databases/tinkerpop/mapping/DefaultEdgeTraversalTest.java
+++ b/jnosql-tinkerpop/src/test/java/org/eclipse/jnosql/databases/tinkerpop/mapping/DefaultEdgeTraversalTest.java
@@ -18,6 +18,9 @@
 import org.apache.tinkerpop.gremlin.process.traversal.P;
 import org.apache.tinkerpop.gremlin.structure.T;
 import org.assertj.core.api.SoftAssertions;
+import org.eclipse.jnosql.databases.tinkerpop.cdi.arangodb.ArangoDBGraphProducer;
+import org.eclipse.jnosql.databases.tinkerpop.cdi.neo4j.Neo4jGraphProducer;
+import org.eclipse.jnosql.databases.tinkerpop.cdi.tinkergraph.TinkerGraphProducer;
 import org.eclipse.jnosql.databases.tinkerpop.mapping.entities.Creature;
 import org.eclipse.jnosql.databases.tinkerpop.mapping.entities.Human;
 import org.eclipse.jnosql.databases.tinkerpop.mapping.entities.Magazine;
@@ -51,10 +54,21 @@
 
 @EnableAutoWeld
 @AddPackages(value = {Converters.class, EntityConverter.class, TinkerpopTemplate.class})
-@AddPackages(GraphProducer.class)
 @AddPackages(Reflections.class)
 @AddExtensions({ReflectionEntityMetadataExtension.class, TinkerpopExtension.class})
-class DefaultEdgeTraversalTest extends AbstractTraversalTest {
+abstract class DefaultEdgeTraversalTest extends AbstractTraversalTest {
+
+    @AddPackages(ArangoDBGraphProducer.class)
+    static class ArangoDBTest extends DefaultEdgeTraversalTest {
+    }
+
+    @AddPackages(Neo4jGraphProducer.class)
+    static class Neo4jTest extends DefaultEdgeTraversalTest {
+    }
+
+    @AddPackages(TinkerGraphProducer.class)
+    static class TinkerGraphTest extends DefaultEdgeTraversalTest {
+    }
 
     @Test
     void shouldReturnErrorWhenEdgeIdIsNull() {
@@ -489,7 +503,7 @@ void shouldReturnErrorWhenThereAreMoreThanOneInGetSingleResult() {
 
     @Test
     void shouldReturnOptionalEmptyWhenThereIsNotResultInSingleResult() {
-        Optional entity = tinkerpopTemplate.traversalEdge(-1L).singleResult();
+        Optional entity = tinkerpopTemplate.traversalEdge("-1").singleResult();
         assertFalse(entity.isPresent());
     }
 
diff --git a/jnosql-tinkerpop/src/test/java/org/eclipse/jnosql/databases/tinkerpop/mapping/DefaultGraphTraversalSourceTemplateTest.java b/jnosql-tinkerpop/src/test/java/org/eclipse/jnosql/databases/tinkerpop/mapping/DefaultGraphTraversalSourceTemplateTest.java
index eb815435e..73d696b0e 100644
--- a/jnosql-tinkerpop/src/test/java/org/eclipse/jnosql/databases/tinkerpop/mapping/DefaultGraphTraversalSourceTemplateTest.java
+++ b/jnosql-tinkerpop/src/test/java/org/eclipse/jnosql/databases/tinkerpop/mapping/DefaultGraphTraversalSourceTemplateTest.java
@@ -16,6 +16,9 @@
 
 import jakarta.inject.Inject;
 import org.apache.tinkerpop.gremlin.structure.Graph;
+import org.eclipse.jnosql.databases.tinkerpop.cdi.arangodb.ArangoDBGraphProducer;
+import org.eclipse.jnosql.databases.tinkerpop.cdi.neo4j.Neo4jGraphProducer;
+import org.eclipse.jnosql.databases.tinkerpop.cdi.tinkergraph.TinkerGraphProducer;
 import org.eclipse.jnosql.databases.tinkerpop.mapping.spi.TinkerpopExtension;
 import org.eclipse.jnosql.mapping.core.Converters;
 import org.eclipse.jnosql.mapping.reflection.Reflections;
@@ -27,9 +30,21 @@
 
 @EnableAutoWeld
 @AddPackages(value = {Converters.class, EntityConverter.class, Transactional.class})
-@AddPackages({MagazineRepository.class, Reflections.class, GraphProducer.class})
+@AddPackages({MagazineRepository.class, Reflections.class})
 @AddExtensions({ReflectionEntityMetadataExtension.class, TinkerpopExtension.class})
-class DefaultGraphTraversalSourceTemplateTest extends AbstractTinkerpopTemplateTest {
+abstract class DefaultGraphTraversalSourceTemplateTest extends AbstractTinkerpopTemplateTest {
+
+    @AddPackages(ArangoDBGraphProducer.class)
+    static class ArangoDBTest extends DefaultGraphTraversalSourceTemplateTest {
+    }
+
+    @AddPackages(Neo4jGraphProducer.class)
+    static class Neo4jTest extends DefaultGraphTraversalSourceTemplateTest {
+    }
+
+    @AddPackages(TinkerGraphProducer.class)
+    static class TinkerGraphTest extends DefaultGraphTraversalSourceTemplateTest {
+    }
 
     @Inject
     private TinkerpopTemplate graphTemplate;
diff --git a/jnosql-tinkerpop/src/test/java/org/eclipse/jnosql/databases/tinkerpop/mapping/DefaultTinkerpopTemplateProducerTest.java b/jnosql-tinkerpop/src/test/java/org/eclipse/jnosql/databases/tinkerpop/mapping/DefaultTinkerpopTemplateProducerTest.java
index 57f2cde58..27e38e602 100644
--- a/jnosql-tinkerpop/src/test/java/org/eclipse/jnosql/databases/tinkerpop/mapping/DefaultTinkerpopTemplateProducerTest.java
+++ b/jnosql-tinkerpop/src/test/java/org/eclipse/jnosql/databases/tinkerpop/mapping/DefaultTinkerpopTemplateProducerTest.java
@@ -16,6 +16,7 @@
 
 import jakarta.inject.Inject;
 import org.apache.tinkerpop.gremlin.structure.Graph;
+import org.eclipse.jnosql.databases.tinkerpop.cdi.mock.MockGraphProducer;
 import org.eclipse.jnosql.databases.tinkerpop.mapping.spi.TinkerpopExtension;
 import org.eclipse.jnosql.mapping.core.Converters;
 import org.eclipse.jnosql.mapping.reflection.Reflections;
@@ -33,7 +34,7 @@
 
 @EnableAutoWeld
 @AddPackages(value = {Converters.class, EntityConverter.class, TinkerpopTemplate.class})
-@AddPackages(GraphProducer.class)
+@AddPackages(MockGraphProducer.class)
 @AddPackages(Reflections.class)
 @AddExtensions({ReflectionEntityMetadataExtension.class, TinkerpopExtension.class})
 class DefaultGraphTemplateProducerTest {
diff --git a/jnosql-tinkerpop/src/test/java/org/eclipse/jnosql/databases/tinkerpop/mapping/DefaultValueMapTraversalTest.java b/jnosql-tinkerpop/src/test/java/org/eclipse/jnosql/databases/tinkerpop/mapping/DefaultValueMapTraversalTest.java
index cf24e051b..0aecc3610 100644
--- a/jnosql-tinkerpop/src/test/java/org/eclipse/jnosql/databases/tinkerpop/mapping/DefaultValueMapTraversalTest.java
+++ b/jnosql-tinkerpop/src/test/java/org/eclipse/jnosql/databases/tinkerpop/mapping/DefaultValueMapTraversalTest.java
@@ -15,6 +15,9 @@
 package org.eclipse.jnosql.databases.tinkerpop.mapping;
 
 import jakarta.data.exceptions.NonUniqueResultException;
+import org.eclipse.jnosql.databases.tinkerpop.cdi.arangodb.ArangoDBGraphProducer;
+import org.eclipse.jnosql.databases.tinkerpop.cdi.neo4j.Neo4jGraphProducer;
+import org.eclipse.jnosql.databases.tinkerpop.cdi.tinkergraph.TinkerGraphProducer;
 import org.eclipse.jnosql.databases.tinkerpop.mapping.entities.Human;
 import org.eclipse.jnosql.databases.tinkerpop.mapping.spi.TinkerpopExtension;
 import org.eclipse.jnosql.mapping.core.Converters;
@@ -40,11 +43,21 @@
 
 @EnableAutoWeld
 @AddPackages(value = {Converters.class, EntityConverter.class, TinkerpopTemplate.class})
-@AddPackages(GraphProducer.class)
 @AddPackages(Reflections.class)
 @AddExtensions({ReflectionEntityMetadataExtension.class, TinkerpopExtension.class})
-class DefaultValueMapTraversalTest extends AbstractTraversalTest {
+abstract class DefaultValueMapTraversalTest extends AbstractTraversalTest {
 
+    @AddPackages(ArangoDBGraphProducer.class)
+    static class ArangoDBTest extends DefaultValueMapTraversalTest {
+    }
+
+    @AddPackages(Neo4jGraphProducer.class)
+    static class Neo4jTest extends DefaultValueMapTraversalTest {
+    }
+
+    @AddPackages(TinkerGraphProducer.class)
+    static class TinkerGraphTest extends DefaultValueMapTraversalTest {
+    }
 
     @Test
     void shouldCount() {
diff --git a/jnosql-tinkerpop/src/test/java/org/eclipse/jnosql/databases/tinkerpop/mapping/DefaultVertexTraversalTest.java b/jnosql-tinkerpop/src/test/java/org/eclipse/jnosql/databases/tinkerpop/mapping/DefaultVertexTraversalTest.java
index 11dfeea01..20c63c54d 100644
--- a/jnosql-tinkerpop/src/test/java/org/eclipse/jnosql/databases/tinkerpop/mapping/DefaultVertexTraversalTest.java
+++ b/jnosql-tinkerpop/src/test/java/org/eclipse/jnosql/databases/tinkerpop/mapping/DefaultVertexTraversalTest.java
@@ -17,6 +17,9 @@
 import jakarta.data.exceptions.NonUniqueResultException;
 import org.apache.tinkerpop.gremlin.process.traversal.P;
 import org.apache.tinkerpop.gremlin.structure.T;
+import org.eclipse.jnosql.databases.tinkerpop.cdi.arangodb.ArangoDBGraphProducer;
+import org.eclipse.jnosql.databases.tinkerpop.cdi.neo4j.Neo4jGraphProducer;
+import org.eclipse.jnosql.databases.tinkerpop.cdi.tinkergraph.TinkerGraphProducer;
 import org.eclipse.jnosql.databases.tinkerpop.mapping.entities.Creature;
 import org.eclipse.jnosql.databases.tinkerpop.mapping.entities.Human;
 import org.eclipse.jnosql.databases.tinkerpop.mapping.entities.Magazine;
@@ -52,11 +55,21 @@
 
 @EnableAutoWeld
 @AddPackages(value = {Converters.class, EntityConverter.class, TinkerpopTemplate.class})
-@AddPackages(GraphProducer.class)
 @AddPackages(Reflections.class)
 @AddExtensions({ReflectionEntityMetadataExtension.class, TinkerpopExtension.class})
-class DefaultVertexTraversalTest extends AbstractTraversalTest {
+abstract class DefaultVertexTraversalTest extends AbstractTraversalTest {
 
+    @AddPackages(ArangoDBGraphProducer.class)
+    static class ArangoDBTest extends DefaultVertexTraversalTest {
+    }
+
+    @AddPackages(Neo4jGraphProducer.class)
+    static class Neo4jTest extends DefaultVertexTraversalTest {
+    }
+
+    @AddPackages(TinkerGraphProducer.class)
+    static class TinkerGraphTest extends DefaultVertexTraversalTest {
+    }
 
     @Test
     void shouldReturnErrorWhenVertexIdIsNull() {
@@ -100,7 +113,7 @@ void shouldNext() {
 
     @Test
     void shouldEmptyNext() {
-        Optional> next = tinkerpopTemplate.traversalVertex(-12).next();
+        Optional> next = tinkerpopTemplate.traversalVertex("-12").next();
         assertFalse(next.isPresent());
     }
 
@@ -515,5 +528,4 @@ void shouldDedup() {
         assertEquals(3, people.size());
     }
 
-
 }
diff --git a/jnosql-tinkerpop/src/test/java/org/eclipse/jnosql/databases/tinkerpop/mapping/EdgeEntityTest.java b/jnosql-tinkerpop/src/test/java/org/eclipse/jnosql/databases/tinkerpop/mapping/EdgeEntityTest.java
index 67fcbb453..22ba6ad18 100644
--- a/jnosql-tinkerpop/src/test/java/org/eclipse/jnosql/databases/tinkerpop/mapping/EdgeEntityTest.java
+++ b/jnosql-tinkerpop/src/test/java/org/eclipse/jnosql/databases/tinkerpop/mapping/EdgeEntityTest.java
@@ -18,6 +18,9 @@
 import jakarta.inject.Inject;
 import org.eclipse.jnosql.communication.Value;
 import org.eclipse.jnosql.communication.semistructured.Element;
+import org.eclipse.jnosql.databases.tinkerpop.cdi.arangodb.ArangoDBGraphProducer;
+import org.eclipse.jnosql.databases.tinkerpop.cdi.neo4j.Neo4jGraphProducer;
+import org.eclipse.jnosql.databases.tinkerpop.cdi.tinkergraph.TinkerGraphProducer;
 import org.eclipse.jnosql.databases.tinkerpop.mapping.entities.Human;
 import org.eclipse.jnosql.databases.tinkerpop.mapping.entities.Magazine;
 import org.eclipse.jnosql.databases.tinkerpop.mapping.spi.TinkerpopExtension;
@@ -43,11 +46,21 @@
 
 @EnableAutoWeld
 @AddPackages(value = {Converters.class, EntityConverter.class, TinkerpopTemplate.class})
-@AddPackages(GraphProducer.class)
 @AddPackages(Reflections.class)
 @AddExtensions({ReflectionEntityMetadataExtension.class, TinkerpopExtension.class})
-class EdgeEntityTest {
+abstract class EdgeEntityTest {
 
+    @AddPackages(ArangoDBGraphProducer.class)
+    static class ArangoDBTest extends EdgeEntityTest {
+    }
+
+    @AddPackages(Neo4jGraphProducer.class)
+    static class Neo4jTest extends EdgeEntityTest {
+    }
+
+    @AddPackages(TinkerGraphProducer.class)
+    static class TinkerGraphTest extends EdgeEntityTest {
+    }
 
     @Inject
     private TinkerpopTemplate tinkerpopTemplate;
@@ -83,7 +96,7 @@ void shouldReturnErrorWhenLabelIsNull() {
     @Test
     void shouldReturnNullWhenInboundIdIsNull() {
         Assertions.assertThrows(EmptyResultException.class, () -> {
-            Human human = Human.builder().withId(-5).withName("Poliana").withAge().build();
+            Human human = Human.builder().withId("-5").withName("Poliana").withAge().build();
             Magazine magazine = tinkerpopTemplate.insert(Magazine.builder().withAge(2007).withName("The Shack").build());
             tinkerpopTemplate.edge(human, "reads", magazine);
         });
@@ -102,7 +115,7 @@ void shouldReturnNullWhenOutboundIdIsNull() {
     @Test
     void shouldReturnEntityNotFoundWhenOutBoundDidNotFound() {
         Assertions.assertThrows( EmptyResultException.class, () -> {
-            Human human = Human.builder().withId(-10L).withName("Poliana").withAge().build();
+            Human human = Human.builder().withId("-10").withName("Poliana").withAge().build();
             Magazine magazine = tinkerpopTemplate.insert(Magazine.builder().withAge(2007).withName("The Shack").build());
             tinkerpopTemplate.edge(human, "reads", magazine);
         });
@@ -112,7 +125,7 @@ void shouldReturnEntityNotFoundWhenOutBoundDidNotFound() {
     void shouldReturnEntityNotFoundWhenInBoundDidNotFound() {
         Assertions.assertThrows( EmptyResultException.class, () -> {
             Human human = tinkerpopTemplate.insert(Human.builder().withName("Poliana").withAge().build());
-            Magazine magazine = Magazine.builder().withId(10L).withAge(2007).withName("The Shack").build();
+            Magazine magazine = Magazine.builder().withId("10").withAge(2007).withName("The Shack").build();
             tinkerpopTemplate.edge(human, "reads", magazine);
         });
     }
@@ -141,10 +154,10 @@ void shouldGetId() {
         assertEquals(magazine, edge.incoming());
         assertTrue(edge.isEmpty());
         assertNotNull(edge.id());
-        final Long id = edge.id(Long.class);
+        final String id = edge.id(String.class);
         assertNotNull(id);
 
-        assertEquals(id, edge.id(Integer.class).longValue());
+        assertEquals(id, edge.id(String.class));
 
     }
 
@@ -352,7 +365,7 @@ void shouldFindAnEdge() {
 
     @Test
     void shouldNotFindAnEdge() {
-        Optional edgeEntity = tinkerpopTemplate.edge(-12L);
+        Optional edgeEntity = tinkerpopTemplate.edge("-12");
 
         assertFalse(edgeEntity.isPresent());
     }
diff --git a/jnosql-tinkerpop/src/test/java/org/eclipse/jnosql/databases/tinkerpop/mapping/GraphTemplateTest.java b/jnosql-tinkerpop/src/test/java/org/eclipse/jnosql/databases/tinkerpop/mapping/GraphTemplateTest.java
index 6d71a979c..91a22e0fd 100644
--- a/jnosql-tinkerpop/src/test/java/org/eclipse/jnosql/databases/tinkerpop/mapping/GraphTemplateTest.java
+++ b/jnosql-tinkerpop/src/test/java/org/eclipse/jnosql/databases/tinkerpop/mapping/GraphTemplateTest.java
@@ -16,6 +16,9 @@
 
 import jakarta.inject.Inject;
 import jakarta.nosql.Template;
+import org.eclipse.jnosql.databases.tinkerpop.cdi.arangodb.ArangoDBGraphProducer;
+import org.eclipse.jnosql.databases.tinkerpop.cdi.neo4j.Neo4jGraphProducer;
+import org.eclipse.jnosql.databases.tinkerpop.cdi.tinkergraph.TinkerGraphProducer;
 import org.eclipse.jnosql.databases.tinkerpop.mapping.spi.TinkerpopExtension;
 import org.eclipse.jnosql.mapping.Database;
 import org.eclipse.jnosql.mapping.core.Converters;
@@ -34,10 +37,21 @@
 
 @EnableAutoWeld
 @AddPackages(value = {Converters.class, EntityConverter.class, TinkerpopTemplate.class, GraphTemplate.class})
-@AddPackages(GraphProducer.class)
 @AddPackages(Reflections.class)
 @AddExtensions({ReflectionEntityMetadataExtension.class, TinkerpopExtension.class, GraphExtension.class})
-class GraphTemplateTest {
+abstract class GraphTemplateTest {
+
+    @AddPackages(ArangoDBGraphProducer.class)
+    static class ArangoDBTest extends GraphTemplateTest {
+    }
+
+    @AddPackages(Neo4jGraphProducer.class)
+    static class Neo4jTest extends GraphTemplateTest {
+    }
+
+    @AddPackages(TinkerGraphProducer.class)
+    static class TinkerGraphTest extends GraphTemplateTest {
+    }
 
     @Inject
     private Template template;
diff --git a/jnosql-tinkerpop/src/test/java/org/eclipse/jnosql/databases/tinkerpop/mapping/MagazineTemplateTest.java b/jnosql-tinkerpop/src/test/java/org/eclipse/jnosql/databases/tinkerpop/mapping/MagazineTemplateTest.java
index bc5bbcf22..7ca01fb44 100644
--- a/jnosql-tinkerpop/src/test/java/org/eclipse/jnosql/databases/tinkerpop/mapping/MagazineTemplateTest.java
+++ b/jnosql-tinkerpop/src/test/java/org/eclipse/jnosql/databases/tinkerpop/mapping/MagazineTemplateTest.java
@@ -18,6 +18,9 @@
 import org.apache.tinkerpop.gremlin.structure.Graph;
 import org.apache.tinkerpop.gremlin.structure.Transaction;
 import org.apache.tinkerpop.gremlin.structure.Transaction.Status;
+import org.eclipse.jnosql.databases.tinkerpop.cdi.arangodb.ArangoDBGraphProducer;
+import org.eclipse.jnosql.databases.tinkerpop.cdi.neo4j.Neo4jGraphProducer;
+import org.eclipse.jnosql.databases.tinkerpop.cdi.tinkergraph.TinkerGraphProducer;
 import org.eclipse.jnosql.databases.tinkerpop.mapping.entities.Magazine;
 import org.eclipse.jnosql.databases.tinkerpop.mapping.entities.MagazineTemplate;
 import org.eclipse.jnosql.databases.tinkerpop.mapping.spi.TinkerpopExtension;
@@ -34,16 +37,28 @@
 
 import static org.apache.tinkerpop.gremlin.structure.Transaction.Status.COMMIT;
 import static org.apache.tinkerpop.gremlin.structure.Transaction.Status.ROLLBACK;
+import static org.junit.Assume.assumeTrue;
 import static org.junit.jupiter.api.Assertions.assertEquals;
 import static org.junit.jupiter.api.Assertions.assertFalse;
 import static org.junit.jupiter.api.Assertions.assertNull;
 
 @EnableAutoWeld
 @AddPackages(value = {Converters.class, EntityConverter.class, TinkerpopTemplate.class})
-@AddPackages(GraphProducer.class)
 @AddPackages(Reflections.class)
 @AddExtensions({ReflectionEntityMetadataExtension.class, TinkerpopExtension.class})
-class MagazineTemplateTest {
+abstract class MagazineTemplateTest {
+
+    @AddPackages(ArangoDBGraphProducer.class)
+    static class ArangoDBTest extends MagazineTemplateTest {
+    }
+
+    @AddPackages(Neo4jGraphProducer.class)
+    static class Neo4jTest extends MagazineTemplateTest {
+    }
+
+    @AddPackages(TinkerGraphProducer.class)
+    static class TinkerGraphTest extends MagazineTemplateTest {
+    }
 
     @Inject
     private MagazineTemplate template;
@@ -53,6 +68,8 @@ class MagazineTemplateTest {
 
     @Test
     void shouldSaveWithTransaction() {
+        assumeTrue("transactions not supported", graph.features().graph().supportsTransactions());
+
         AtomicReference status = new AtomicReference<>();
 
         Magazine magazine = Magazine.builder().withName("The Book").build();
@@ -65,6 +82,8 @@ void shouldSaveWithTransaction() {
 
     @Test
     void shouldSaveWithRollback() {
+        assumeTrue("transactions not supported", graph.features().graph().supportsTransactions());
+
         AtomicReference status = new AtomicReference<>();
 
         Magazine magazine = Magazine.builder().withName("The Book").build();
@@ -83,6 +102,8 @@ void shouldSaveWithRollback() {
 
     @Test
     void shouldUseAutomaticNormalTransaction() {
+        assumeTrue("transactions not supported", graph.features().graph().supportsTransactions());
+
         AtomicReference status = new AtomicReference<>();
 
         Magazine magazine = Magazine.builder().withName("The Book").build();
diff --git a/jnosql-tinkerpop/src/test/java/org/eclipse/jnosql/databases/tinkerpop/mapping/PopulationTest.java b/jnosql-tinkerpop/src/test/java/org/eclipse/jnosql/databases/tinkerpop/mapping/PopulationTest.java
index c2d51d81b..3200cbb0a 100644
--- a/jnosql-tinkerpop/src/test/java/org/eclipse/jnosql/databases/tinkerpop/mapping/PopulationTest.java
+++ b/jnosql-tinkerpop/src/test/java/org/eclipse/jnosql/databases/tinkerpop/mapping/PopulationTest.java
@@ -16,8 +16,10 @@
 
 
 import jakarta.inject.Inject;
-import org.apache.tinkerpop.gremlin.process.traversal.Order;
 import org.assertj.core.api.SoftAssertions;
+import org.eclipse.jnosql.databases.tinkerpop.cdi.arangodb.ArangoDBGraphProducer;
+import org.eclipse.jnosql.databases.tinkerpop.cdi.neo4j.Neo4jGraphProducer;
+import org.eclipse.jnosql.databases.tinkerpop.cdi.tinkergraph.TinkerGraphProducer;
 import org.eclipse.jnosql.databases.tinkerpop.mapping.entities.Human;
 import org.eclipse.jnosql.databases.tinkerpop.mapping.spi.TinkerpopExtension;
 import org.eclipse.jnosql.mapping.core.Converters;
@@ -36,10 +38,21 @@
 
 @EnableAutoWeld
 @AddPackages(value = {Converters.class, EntityConverter.class, TinkerpopTemplate.class, GraphTemplate.class})
-@AddPackages(GraphProducer.class)
 @AddPackages(Reflections.class)
 @AddExtensions({ReflectionEntityMetadataExtension.class, TinkerpopExtension.class, GraphExtension.class})
-public class PopulationTest {
+abstract class PopulationTest {
+
+    @AddPackages(ArangoDBGraphProducer.class)
+    static class ArangoDBTest extends PopulationTest {
+    }
+
+    @AddPackages(Neo4jGraphProducer.class)
+    static class Neo4jTest extends PopulationTest {
+    }
+
+    @AddPackages(TinkerGraphProducer.class)
+    static class TinkerGraphTest extends PopulationTest {
+    }
 
     @Inject
     private Population population;
diff --git a/jnosql-tinkerpop/src/test/java/org/eclipse/jnosql/databases/tinkerpop/mapping/TinkerpopTemplateProducerTest.java b/jnosql-tinkerpop/src/test/java/org/eclipse/jnosql/databases/tinkerpop/mapping/TinkerpopTemplateProducerTest.java
index d14ad4c3b..1eb3040b4 100644
--- a/jnosql-tinkerpop/src/test/java/org/eclipse/jnosql/databases/tinkerpop/mapping/TinkerpopTemplateProducerTest.java
+++ b/jnosql-tinkerpop/src/test/java/org/eclipse/jnosql/databases/tinkerpop/mapping/TinkerpopTemplateProducerTest.java
@@ -16,6 +16,7 @@
 
 import jakarta.inject.Inject;
 import org.apache.tinkerpop.gremlin.structure.Graph;
+import org.eclipse.jnosql.databases.tinkerpop.cdi.mock.MockGraphProducer;
 import org.eclipse.jnosql.databases.tinkerpop.mapping.spi.TinkerpopExtension;
 import org.eclipse.jnosql.mapping.core.Converters;
 import org.eclipse.jnosql.mapping.reflection.Reflections;
@@ -32,7 +33,7 @@
 
 @EnableAutoWeld
 @AddPackages(value = {Converters.class, EntityConverter.class, TinkerpopTemplate.class})
-@AddPackages(GraphProducer.class)
+@AddPackages(MockGraphProducer.class)
 @AddPackages(Reflections.class)
 @AddExtensions({ReflectionEntityMetadataExtension.class, TinkerpopExtension.class})
 class GraphTemplateProducerTest {
diff --git a/jnosql-tinkerpop/src/test/java/org/eclipse/jnosql/databases/tinkerpop/mapping/TinkerpopTemplateTest.java b/jnosql-tinkerpop/src/test/java/org/eclipse/jnosql/databases/tinkerpop/mapping/TinkerpopTemplateTest.java
index 2f6885b10..cae8863e4 100644
--- a/jnosql-tinkerpop/src/test/java/org/eclipse/jnosql/databases/tinkerpop/mapping/TinkerpopTemplateTest.java
+++ b/jnosql-tinkerpop/src/test/java/org/eclipse/jnosql/databases/tinkerpop/mapping/TinkerpopTemplateTest.java
@@ -16,6 +16,7 @@
 
 import jakarta.inject.Inject;
 import jakarta.nosql.Template;
+import org.eclipse.jnosql.databases.tinkerpop.cdi.mock.MockGraphProducer;
 import org.eclipse.jnosql.databases.tinkerpop.mapping.spi.TinkerpopExtension;
 import org.eclipse.jnosql.mapping.Database;
 import org.eclipse.jnosql.mapping.core.Converters;
@@ -34,7 +35,7 @@
 
 @EnableAutoWeld
 @AddPackages(value = {Converters.class, EntityConverter.class, TinkerpopTemplate.class, GraphTemplate.class})
-@AddPackages(GraphProducer.class)
+@AddPackages(MockGraphProducer.class)
 @AddPackages(Reflections.class)
 @AddExtensions({ReflectionEntityMetadataExtension.class, TinkerpopExtension.class, GraphExtension.class})
 class TinkerpopTemplateTest {
diff --git a/jnosql-tinkerpop/src/test/java/org/eclipse/jnosql/databases/tinkerpop/mapping/configuration/GraphSupplierTest.java b/jnosql-tinkerpop/src/test/java/org/eclipse/jnosql/databases/tinkerpop/mapping/configuration/GraphSupplierTest.java
index 0973315d8..f5b35ef82 100644
--- a/jnosql-tinkerpop/src/test/java/org/eclipse/jnosql/databases/tinkerpop/mapping/configuration/GraphSupplierTest.java
+++ b/jnosql-tinkerpop/src/test/java/org/eclipse/jnosql/databases/tinkerpop/mapping/configuration/GraphSupplierTest.java
@@ -17,7 +17,6 @@
 import jakarta.inject.Inject;
 import org.apache.tinkerpop.gremlin.structure.Graph;
 import org.eclipse.jnosql.databases.tinkerpop.communication.DatabaseConfigurationAdapter;
-import org.eclipse.jnosql.databases.tinkerpop.mapping.GraphProducer;
 import org.eclipse.jnosql.databases.tinkerpop.mapping.TinkerpopTemplate;
 import org.eclipse.jnosql.databases.tinkerpop.mapping.spi.TinkerpopExtension;
 import org.eclipse.jnosql.mapping.core.Converters;
@@ -37,7 +36,6 @@
 
 @EnableAutoWeld
 @AddPackages(value = {Converters.class, EntityConverter.class, TinkerpopTemplate.class})
-@AddPackages(GraphProducer.class)
 @AddPackages(Reflections.class)
 @AddExtensions({ReflectionEntityMetadataExtension.class, TinkerpopExtension.class})
 class GraphSupplierTest {
diff --git a/jnosql-tinkerpop/src/test/java/org/eclipse/jnosql/databases/tinkerpop/mapping/entities/Creature.java b/jnosql-tinkerpop/src/test/java/org/eclipse/jnosql/databases/tinkerpop/mapping/entities/Creature.java
index 40fef8e77..f34383769 100644
--- a/jnosql-tinkerpop/src/test/java/org/eclipse/jnosql/databases/tinkerpop/mapping/entities/Creature.java
+++ b/jnosql-tinkerpop/src/test/java/org/eclipse/jnosql/databases/tinkerpop/mapping/entities/Creature.java
@@ -23,9 +23,8 @@
 @Entity
 public class Creature {
 
-
-    @Id
-    private Long id;
+    @Id("~id")
+    private String id;
 
     @Column
     private String name;
@@ -37,7 +36,7 @@ public Creature(String name) {
         this.name = name;
     }
 
-    public Long getId() {
+    public String getId() {
         return id;
     }
 
diff --git a/jnosql-tinkerpop/src/test/java/org/eclipse/jnosql/databases/tinkerpop/mapping/entities/Human.java b/jnosql-tinkerpop/src/test/java/org/eclipse/jnosql/databases/tinkerpop/mapping/entities/Human.java
index 0667fcfce..8603d9556 100644
--- a/jnosql-tinkerpop/src/test/java/org/eclipse/jnosql/databases/tinkerpop/mapping/entities/Human.java
+++ b/jnosql-tinkerpop/src/test/java/org/eclipse/jnosql/databases/tinkerpop/mapping/entities/Human.java
@@ -27,8 +27,8 @@
 @MappedSuperclass
 public class Human {
 
-    @Id
-    private Long id;
+    @Id("~id")
+    private String id;
 
     @Column
     private String name;
@@ -42,7 +42,7 @@ public class Human {
     private String ignore;
 
 
-    public Long getId() {
+    public String getId() {
         return id;
     }
 
@@ -69,7 +69,7 @@ public boolean isAdult() {
     Human() {
     }
 
-    Human(Long id, String name, int age, List phones, String ignore) {
+    Human(String id, String name, int age, List phones, String ignore) {
         this.id = id;
         this.name = name;
         this.age = age;
@@ -79,7 +79,7 @@ public boolean isAdult() {
 
     @Override
     public String toString() {
-        return  "Person{" + "id=" + id +
+        return  "Human{" + "id=" + id +
                 ", name='" + name + '\'' +
                 ", age=" + age +
                 ", phones=" + phones +
@@ -96,7 +96,7 @@ public boolean equals(Object o) {
             return false;
         }
         Human human = (Human) o;
-        return id == human.id &&
+        return Objects.equals(id, human.id) &&
                 age == human.age &&
                 Objects.equals(name, human.name) &&
                 Objects.equals(phones, human.phones);
diff --git a/jnosql-tinkerpop/src/test/java/org/eclipse/jnosql/databases/tinkerpop/mapping/entities/HumanBuilder.java b/jnosql-tinkerpop/src/test/java/org/eclipse/jnosql/databases/tinkerpop/mapping/entities/HumanBuilder.java
index 7caaf886d..206d57993 100644
--- a/jnosql-tinkerpop/src/test/java/org/eclipse/jnosql/databases/tinkerpop/mapping/entities/HumanBuilder.java
+++ b/jnosql-tinkerpop/src/test/java/org/eclipse/jnosql/databases/tinkerpop/mapping/entities/HumanBuilder.java
@@ -17,13 +17,13 @@
 import java.util.List;
 
 public class HumanBuilder {
-    private Long id;
+    private String id;
     private String name;
     private int age;
     private List phones;
     private String ignore;
 
-    public HumanBuilder withId(long id) {
+    public HumanBuilder withId(String id) {
         this.id = id;
         return this;
     }
diff --git a/jnosql-tinkerpop/src/test/java/org/eclipse/jnosql/databases/tinkerpop/mapping/entities/Magazine.java b/jnosql-tinkerpop/src/test/java/org/eclipse/jnosql/databases/tinkerpop/mapping/entities/Magazine.java
index 07d03ed95..670ae74fc 100644
--- a/jnosql-tinkerpop/src/test/java/org/eclipse/jnosql/databases/tinkerpop/mapping/entities/Magazine.java
+++ b/jnosql-tinkerpop/src/test/java/org/eclipse/jnosql/databases/tinkerpop/mapping/entities/Magazine.java
@@ -23,8 +23,8 @@
 @Entity
 public class Magazine {
 
-    @Id
-    private Long id;
+    @Id("~id")
+    private String id;
 
     @Column
     private String name;
@@ -36,13 +36,13 @@ public class Magazine {
     Magazine() {
     }
 
-    Magazine(Long id, String name, Integer age) {
+    Magazine(String id, String name, Integer age) {
         this.id = id;
         this.name = name;
         this.age = age;
     }
 
-    public Long getId() {
+    public String getId() {
         return id;
     }
 
@@ -86,7 +86,7 @@ public static MagazineBuilder builder() {
     public static class MagazineBuilder {
         private String name;
         private Integer age;
-        private Long id;
+        private String id;
 
         private MagazineBuilder() {
         }
@@ -101,7 +101,7 @@ public MagazineBuilder withAge(Integer age) {
             return this;
         }
 
-        public MagazineBuilder withId(Long id) {
+        public MagazineBuilder withId(String id) {
             this.id = id;
             return this;
         }
diff --git a/jnosql-tinkerpop/src/test/java/org/eclipse/jnosql/databases/tinkerpop/mapping/spi/TinkerpopExtensionTest.java b/jnosql-tinkerpop/src/test/java/org/eclipse/jnosql/databases/tinkerpop/mapping/spi/TinkerpopExtensionTest.java
index 9683d70cd..cbafb65f4 100644
--- a/jnosql-tinkerpop/src/test/java/org/eclipse/jnosql/databases/tinkerpop/mapping/spi/TinkerpopExtensionTest.java
+++ b/jnosql-tinkerpop/src/test/java/org/eclipse/jnosql/databases/tinkerpop/mapping/spi/TinkerpopExtensionTest.java
@@ -15,9 +15,8 @@
 package org.eclipse.jnosql.databases.tinkerpop.mapping.spi;
 
 import jakarta.inject.Inject;
-import org.eclipse.jnosql.databases.tinkerpop.mapping.GraphProducer;
 import org.eclipse.jnosql.databases.tinkerpop.mapping.TinkerpopTemplate;
-import org.eclipse.jnosql.databases.tinkerpop.mapping.entities.Human;
+import org.eclipse.jnosql.databases.tinkerpop.cdi.mock.MockGraphProducer;
 import org.eclipse.jnosql.databases.tinkerpop.mapping.entities.HumanRepository;
 import org.eclipse.jnosql.mapping.Database;
 import org.eclipse.jnosql.mapping.DatabaseType;
@@ -33,17 +32,15 @@
 import org.junit.jupiter.api.Test;
 
 import static org.junit.jupiter.api.Assertions.assertNotNull;
-import static org.junit.jupiter.api.Assertions.assertNull;
 
 
 @EnableAutoWeld
 @AddPackages(value = {Converters.class, EntityConverter.class, TinkerpopTemplate.class, GraphTemplate.class})
-@AddPackages(GraphProducer.class)
+@AddPackages(MockGraphProducer.class)
 @AddPackages(Reflections.class)
 @AddExtensions({ReflectionEntityMetadataExtension.class, TinkerpopExtension.class, GraphExtension.class})
 class TinkerpopExtensionTest {
 
-
     @Inject
     @Database(value = DatabaseType.GRAPH)
     private HumanRepository repository;
@@ -69,7 +66,7 @@ void shouldInitiate() {
     }
 
     @Test
-    void shouldUseMock(){
+    void shouldUseMock() {
         assertNotNull(repositoryMock);
     }
 
diff --git a/jnosql-tinkerpop/src/test/resources/simplelogger.properties b/jnosql-tinkerpop/src/test/resources/simplelogger.properties
new file mode 100644
index 000000000..9268538a1
--- /dev/null
+++ b/jnosql-tinkerpop/src/test/resources/simplelogger.properties
@@ -0,0 +1,12 @@
+org.slf4j.simpleLogger.logFile=System.out
+org.slf4j.simpleLogger.showDateTime=true
+org.slf4j.simpleLogger.dateTimeFormat=HH:mm:ss.SSS
+org.slf4j.simpleLogger.showThreadName=true
+org.slf4j.simpleLogger.showLogName=true
+org.slf4j.simpleLogger.showShortLogName=false
+
+org.slf4j.simpleLogger.defaultLogLevel=info
+org.slf4j.simpleLogger.log.org.testcontainers=warn
+
+## ArangoDB communication debug level
+#org.slf4j.simpleLogger.log.com.arangodb.internal.net.Communication=debug