diff --git a/dbrepo-container-service/rest-service/src/test/java/at/tuwien/endpoint/ImageEndpointUnitTest.java b/dbrepo-container-service/rest-service/src/test/java/at/tuwien/endpoint/ImageEndpointUnitTest.java
index 0bf820155589bd32f066c166851031716031821a..066294a208391c94bdd9b8f0a2a9aad4c29ca4ef 100644
--- a/dbrepo-container-service/rest-service/src/test/java/at/tuwien/endpoint/ImageEndpointUnitTest.java
+++ b/dbrepo-container-service/rest-service/src/test/java/at/tuwien/endpoint/ImageEndpointUnitTest.java
@@ -217,6 +217,8 @@ public class ImageEndpointUnitTest extends BaseUnitTest {
     public void delete_hasRole_succeeds() throws ImageNotFoundException {
 
         /* mock */
+        when(imageRepository.existsById(IMAGE_1_ID))
+                .thenReturn(true);
         when(userRepository.findByUsername(USER_2_USERNAME))
                 .thenReturn(Optional.of(USER_2));
 
diff --git a/dbrepo-container-service/rest-service/src/test/java/at/tuwien/service/ImageServiceUnitTest.java b/dbrepo-container-service/rest-service/src/test/java/at/tuwien/service/ImageServiceUnitTest.java
index 0ba2fa37720adf93cb8bf30acd1cbc69b2c7b57a..8da465bcabe2b9d873932887b67e8bb287ee22fb 100644
--- a/dbrepo-container-service/rest-service/src/test/java/at/tuwien/service/ImageServiceUnitTest.java
+++ b/dbrepo-container-service/rest-service/src/test/java/at/tuwien/service/ImageServiceUnitTest.java
@@ -158,6 +158,8 @@ public class ImageServiceUnitTest extends BaseUnitTest {
     public void delete_succeeds() throws ImageNotFoundException {
 
         /* mock */
+        when(imageRepository.existsById(IMAGE_1_ID))
+                .thenReturn(true);
         doNothing()
                 .when(imageRepository)
                 .deleteById(IMAGE_1_ID);
@@ -170,6 +172,8 @@ public class ImageServiceUnitTest extends BaseUnitTest {
     public void delete_notFound_fails() {
 
         /* mock */
+        when(imageRepository.existsById(IMAGE_1_ID))
+                .thenReturn(false);
         doThrow(EntityNotFoundException.class)
                 .when(imageRepository)
                 .deleteById(IMAGE_1_ID);
diff --git a/dbrepo-database-service/rest-service/src/test/java/at/tuwien/service/QueryStoreServiceIntegrationTest.java b/dbrepo-database-service/rest-service/src/test/java/at/tuwien/service/QueryStoreServiceIntegrationTest.java
index 47b5ac1742adaf04da731f43e77edbef3d124476..e52110c7ff7cca2c40b13b091c7d0f4bb8359be1 100644
--- a/dbrepo-database-service/rest-service/src/test/java/at/tuwien/service/QueryStoreServiceIntegrationTest.java
+++ b/dbrepo-database-service/rest-service/src/test/java/at/tuwien/service/QueryStoreServiceIntegrationTest.java
@@ -13,10 +13,7 @@ import at.tuwien.service.impl.QueryStoreServiceImpl;
 import com.mchange.v2.c3p0.ComboPooledDataSource;
 import com.rabbitmq.client.Channel;
 import lombok.extern.log4j.Log4j2;
-import org.junit.jupiter.api.AfterAll;
-import org.junit.jupiter.api.BeforeAll;
-import org.junit.jupiter.api.BeforeEach;
-import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.*;
 import org.junit.jupiter.api.extension.ExtendWith;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.boot.test.context.SpringBootTest;
@@ -24,6 +21,7 @@ import org.springframework.boot.test.mock.mockito.MockBean;
 import org.springframework.test.annotation.DirtiesContext;
 import org.springframework.test.context.junit.jupiter.SpringExtension;
 
+import java.io.File;
 import java.sql.Connection;
 import java.sql.SQLException;
 
@@ -63,17 +61,14 @@ public class QueryStoreServiceIntegrationTest extends BaseUnitTest {
     @Autowired
     private DatabaseMapper databaseMapper;
 
-    @BeforeAll
-    public static void beforeAll() throws InterruptedException {
-        /* create network */
-        DockerConfig.createAllNetworks();
-        /* create container */
-        DockerConfig.createContainer(null, CONTAINER_1, CONTAINER_1_ENV);
-        DockerConfig.startContainer(CONTAINER_1);
-    }
+    private final static String BIND_WEATHER = new File("../../dbrepo-metadata-db/test/src/test/resources/weather").toPath().toAbsolutePath() + ":/docker-entrypoint-initdb.d";
 
     @BeforeEach
     public void beforeEach() {
+        afterEach();
+        /* create network */
+        DockerConfig.createAllNetworks();
+        /* metadata database */
         realmRepository.save(REALM_DBREPO);
         userRepository.save(USER_1);
         imageRepository.save(IMAGE_1);
@@ -81,29 +76,37 @@ public class QueryStoreServiceIntegrationTest extends BaseUnitTest {
         databaseRepository.save(DATABASE_1_SIMPLE);
     }
 
-    @AfterAll
-    public static void afterAll() {
+    @AfterEach
+    public void afterEach() {
         DockerConfig.removeAllContainers();
         DockerConfig.removeAllNetworks();
     }
 
     @Test
     public void create_succeeds() throws UserNotFoundException, QueryStoreException, DatabaseConnectionException,
-            DatabaseNotFoundException, DatabaseMalformedException {
+            DatabaseNotFoundException, DatabaseMalformedException, InterruptedException {
+
+        /* mock */
+        DockerConfig.createContainer(null, CONTAINER_1, CONTAINER_1_ENV);
+        DockerConfig.startContainer(CONTAINER_1);
 
         /* test */
         queryStoreService.create(CONTAINER_1_ID, DATABASE_1_ID, USER_1_PRINCIPAL);
     }
 
     @Test
-    public void executeQuery_succeeds() throws SQLException {
+    public void executeQuery_succeeds() throws SQLException, InterruptedException {
         final User root = databaseMapper.containerToPrivilegedUser(CONTAINER_1);
         final ComboPooledDataSource dataSource = HibernateConnector.getDataSource(CONTAINER_1_IMAGE, CONTAINER_1, DATABASE_1, root);
 
+        /* mock */
+        DockerConfig.createContainer(BIND_WEATHER, CONTAINER_1, CONTAINER_1_ENV);
+        DockerConfig.startContainer(CONTAINER_1);
+
         /* test */
         try {
             final Connection connection = dataSource.getConnection();
-            queryStoreService.executeQuery(connection, "SELECT 1");
+            queryStoreService.executeQuery(connection, "UPDATE weather_location SET lat=48.2049358, lng=16.3769348 WHERE location = ?", "Vienna");
         } finally {
             dataSource.close();
         }
diff --git a/dbrepo-database-service/services/src/main/java/at/tuwien/service/impl/QueryStoreServiceImpl.java b/dbrepo-database-service/services/src/main/java/at/tuwien/service/impl/QueryStoreServiceImpl.java
index 9c3eac20db9feb5617548c32190f845fabba156e..838efb1d95e1f553ab84de8dd970806adffb0a5c 100644
--- a/dbrepo-database-service/services/src/main/java/at/tuwien/service/impl/QueryStoreServiceImpl.java
+++ b/dbrepo-database-service/services/src/main/java/at/tuwien/service/impl/QueryStoreServiceImpl.java
@@ -58,10 +58,19 @@ public class QueryStoreServiceImpl extends HibernateConnector implements QuerySt
         log.trace("created query store in database {}", database);
     }
 
-    public void executeQuery(Connection connection, String statement) throws SQLException {
+    public void executeQuery(Connection connection, String statement, String... data) throws SQLException {
         log.debug("execute query, statement={}", statement);
         final PreparedStatement pstmt = connection.prepareStatement(statement);
+        if (data.length > 0) {
+            for (int i = 0; i < data.length; i++) {
+                pstmt.setString(i + 1, data[i]);
+            }
+        }
         pstmt.executeUpdate();
     }
 
+    private void executeQuery(Connection connection, String statement) throws SQLException {
+        executeQuery(connection, statement, new String[]{});
+    }
+
 }
diff --git a/dbrepo-identifier-service/rest-service/src/test/java/at/tuwien/gateway/QueryServiceGatewayUnitTest.java b/dbrepo-identifier-service/rest-service/src/test/java/at/tuwien/gateway/QueryServiceGatewayUnitTest.java
index 7167767c8b3940c35c78569385a68449aa363ed7..1a68af0041864473bcb23c43e0679a2c90d21f2d 100644
--- a/dbrepo-identifier-service/rest-service/src/test/java/at/tuwien/gateway/QueryServiceGatewayUnitTest.java
+++ b/dbrepo-identifier-service/rest-service/src/test/java/at/tuwien/gateway/QueryServiceGatewayUnitTest.java
@@ -67,7 +67,7 @@ public class QueryServiceGatewayUnitTest extends BaseUnitTest {
     }
 
     @Test
-    public void find_notFound_fails() throws QueryNotFoundException, RemoteUnavailableException {
+    public void find_notFound_fails() {
         final ResponseEntity<QueryDto> mock = ResponseEntity.status(HttpStatus.NOT_FOUND)
                 .build();
 
diff --git a/dbrepo-identifier-service/rest-service/src/test/java/at/tuwien/service/DataCiteIdentifierServiceUnitTest.java b/dbrepo-identifier-service/rest-service/src/test/java/at/tuwien/service/DataCiteIdentifierServiceUnitTest.java
index fbd3a6ff9b9d99f5510ca37c54aa42a9d3ecf1bb..1aad8f0b61650640eaeb10bb52234b2c19d6411b 100644
--- a/dbrepo-identifier-service/rest-service/src/test/java/at/tuwien/service/DataCiteIdentifierServiceUnitTest.java
+++ b/dbrepo-identifier-service/rest-service/src/test/java/at/tuwien/service/DataCiteIdentifierServiceUnitTest.java
@@ -43,8 +43,7 @@ import static org.mockito.Mockito.when;
 
 @ExtendWith(SpringExtension.class)
 @DirtiesContext(classMode = DirtiesContext.ClassMode.BEFORE_EACH_TEST_METHOD)
-@SpringBootTest
-@ActiveProfiles("doi")
+@SpringBootTest(properties = "spring.profiles.active:local,doi")
 public class DataCiteIdentifierServiceUnitTest extends BaseUnitTest {
 
     @MockBean
@@ -187,7 +186,7 @@ public class DataCiteIdentifierServiceUnitTest extends BaseUnitTest {
     }
 
     @Test
-    public void update_invalidMetadata_fails() throws IdentifierUpdateBadFormException, IdentifierNotFoundException {
+    public void update_invalidMetadata_fails() throws IdentifierNotFoundException {
 
         /* mock */
         when(identifierService.update(eq(IDENTIFIER_1_ID), any(IdentifierUpdateDto.class)))
@@ -205,7 +204,7 @@ public class DataCiteIdentifierServiceUnitTest extends BaseUnitTest {
     }
 
     @Test
-    public void update_restClientException_fails() throws IdentifierUpdateBadFormException, IdentifierNotFoundException {
+    public void update_restClientException_fails() throws IdentifierNotFoundException {
 
         /* mock */
         when(identifierService.update(eq(IDENTIFIER_1_ID), any(IdentifierUpdateDto.class)))
diff --git a/dbrepo-identifier-service/rest-service/src/test/resources/application.properties b/dbrepo-identifier-service/rest-service/src/test/resources/application.properties
index f56b5e38f304e8d5a124ef78a20b965efd94aff1..938bc30b0f3491387d1455bcba0a733f9487d57d 100644
--- a/dbrepo-identifier-service/rest-service/src/test/resources/application.properties
+++ b/dbrepo-identifier-service/rest-service/src/test/resources/application.properties
@@ -10,7 +10,7 @@ spring.cloud.config.enabled = false
 
 # disable datasource
 # spring 6 fix https://github.com/h2database/h2database/issues/3363
-spring.datasource.url=jdbc:h2:mem:testdb;NON_KEYWORDS=VALUE;DB_CLOSE_ON_EXIT=FALSE;INIT=CREATE SCHEMA IF NOT EXISTS FDA
+spring.datasource.url=jdbc:h2:mem:testdb;NON_KEYWORDS=VALUE,KEY;DB_CLOSE_ON_EXIT=FALSE;INIT=CREATE SCHEMA IF NOT EXISTS FDA
 spring.datasource.driverClassName=org.h2.Driver
 spring.datasource.username=sa
 spring.datasource.password=password
@@ -18,5 +18,11 @@ spring.jpa.database-platform=org.hibernate.dialect.H2Dialect
 spring.jpa.hibernate.ddl-auto=create-drop
 spring.jpa.show-sql=false
 
+# datacite
+fda.datacite.url: https://api.test.datacite.org/
+fda.datacite.prefix: 10.12345
+fda.datacite.username: test-user
+fda.datacite.password: test-password
+
 fda.mapping.path: /tmp
 fda.table.path: /tmp
\ No newline at end of file
diff --git a/dbrepo-identifier-service/rest-service/src/test/resources/schema.sql b/dbrepo-identifier-service/rest-service/src/test/resources/schema.sql
deleted file mode 100644
index 906d8df808fa8f79c1f7c1c26088c55da6c9ee9b..0000000000000000000000000000000000000000
--- a/dbrepo-identifier-service/rest-service/src/test/resources/schema.sql
+++ /dev/null
@@ -1,25 +0,0 @@
-CREATE SCHEMA IF NOT EXISTS `fda`;
-SET SCHEMA `fda`;
-DROP TABLE IF EXISTS fda.mdb_concepts;
-CREATE TABLE IF NOT EXISTS fda.mdb_concepts
-(
-    uri        VARCHAR(500) not null,
-    name       VARCHAR(255),
-    created    timestamp    NOT NULL DEFAULT NOW(),
-    created_by bigint,
-    PRIMARY KEY (uri)
-);
-DROP TABLE IF EXISTS fda.mdb_units;
-CREATE TABLE IF NOT EXISTS fda.mdb_units
-(
-    uri        VARCHAR(500) not null,
-    name       VARCHAR(255),
-    created    timestamp    NOT NULL DEFAULT NOW(),
-    created_by bigint,
-    PRIMARY KEY (uri)
-);
--- Modified for H2
--- Assume id=1 is invalid
--- Assume id=2 is still valid token
--- CREATE VIEW IF NOT EXISTS fda.mdb_invalid_tokens AS
--- (SELECT `id`, `token_hash`, `creator`, `created`, `expires`, `last_used` FROM fda.`mdb_tokens` WHERE `id` = 1);
\ No newline at end of file
diff --git a/dbrepo-identifier-service/rest-service/src/test/resources/view.sql b/dbrepo-identifier-service/rest-service/src/test/resources/view.sql
deleted file mode 100644
index b23c5436c00f157754d9a62cd09f4f22325eae73..0000000000000000000000000000000000000000
--- a/dbrepo-identifier-service/rest-service/src/test/resources/view.sql
+++ /dev/null
@@ -1,5 +0,0 @@
--- Modified for H2
--- Assume id=1 is invalid
--- Assume id=2 is still valid token
-CREATE VIEW IF NOT EXISTS fda.mdb_invalid_tokens AS
-(SELECT `id`, `token_hash`, `creator`, `created`, `expires`, `last_used` FROM fda.`mdb_tokens` WHERE `id` = 1);
\ No newline at end of file
diff --git a/dbrepo-identifier-service/services/src/main/java/at/tuwien/config/GatewayConfig.java b/dbrepo-identifier-service/services/src/main/java/at/tuwien/config/GatewayConfig.java
index 4dd0068634978d7fff069203febb24d69d02f845..6de6ec7b06d9bf71b6184fff948aae9f63d81b34 100644
--- a/dbrepo-identifier-service/services/src/main/java/at/tuwien/config/GatewayConfig.java
+++ b/dbrepo-identifier-service/services/src/main/java/at/tuwien/config/GatewayConfig.java
@@ -19,7 +19,19 @@ public class GatewayConfig {
     @Value("${spring.rabbitmq.password}")
     private String brokerPassword;
 
-    @Bean
+    @Value("${fda.datacite.url}")
+    private String dataCiteUrl;
+
+    @Value("${fda.datacite.prefix}")
+    private String dataCitePrefix;
+
+    @Value("${fda.datacite.username}")
+    private String dataCiteUsername;
+
+    @Value("${fda.datacite.password}")
+    private String dataCitePassword;
+
+    @Bean("restTemplate")
     public RestTemplate restTemplate() {
         final RestTemplate restTemplate =  new RestTemplate();
         restTemplate.setUriTemplateHandler(new DefaultUriBuilderFactory(gatewayEndpoint));
@@ -35,4 +47,13 @@ public class GatewayConfig {
         return restTemplate;
     }
 
+    @Bean("dataCiteRestTemplate")
+    public RestTemplate dataciteRestTemplate() {
+        final RestTemplate restTemplate = new RestTemplate();
+        restTemplate.setUriTemplateHandler(new DefaultUriBuilderFactory(dataCiteUrl));
+        restTemplate.getInterceptors()
+                .add(new BasicAuthenticationInterceptor(dataCiteUsername, dataCitePassword));
+        return restTemplate;
+    }
+
 }
diff --git a/dbrepo-metadata-db/entities/src/main/java/at/tuwien/entities/identifier/Identifier.java b/dbrepo-metadata-db/entities/src/main/java/at/tuwien/entities/identifier/Identifier.java
index 852dc067ce15a8a81c85796bbcd6340c45a83470..56a8b87a9df1f55180fbed30812fc6cfa499ba2b 100644
--- a/dbrepo-metadata-db/entities/src/main/java/at/tuwien/entities/identifier/Identifier.java
+++ b/dbrepo-metadata-db/entities/src/main/java/at/tuwien/entities/identifier/Identifier.java
@@ -60,7 +60,7 @@ public class Identifier implements Serializable {
     @Column(nullable = false)
     private String publisher;
 
-    @Column(columnDefinition = "enum('EN', 'DE', 'OTHER')")
+    @Column(columnDefinition = "enum('AB','AA','AF','AK','SQ','AM','AR','AN','HY','AS','AV','AE','AY','AZ','BM','BA','EU','BE','BN','BH','BI','BS','BR','BG','MY','CA','KM','CH','CE','NY','ZH','CU','CV','KW','CO','CR','HR','CS','DA','DV','NL','DZ','EN','EO','ET','EE','FO','FJ','FI','FR','FF','GD','GL','LG','KA','DE','KI','EL','KL','GN','GU','HT','HA','HE','HZ','HI','HO','HU','IS','IO','IG','ID','IA','IE','IU','IK','GA','IT','JA','JV','KN','KR','KS','KK','RW','KV','KG','KO','KJ','KU','KY','LO','LA','LV','LB','LI','LN','LT','LU','MK','MG','MS','ML','MT','GV','MI','MR','MH','RO','MN','NA','NV','ND','NG','NE','SE','NO','NB','NN','II','OC','OJ','OR','OM','OS','PI','PA','PS','FA','PL','PT','QU','RM','RN','RU','SM','SG','SA','SC','SR','SN','SD','SI','SK','SL','SO','ST','NR','ES','SU','SW','SS','SV','TL','TY','TG','TA','TT','TE','TH','BO','TI','TO','TS','TN','TR','TK','TW','UG','UK','UR','UZ','VE','VI','VO','WA','CY','FY','WO','XH','YI','YO','ZA','ZU')")
     @Enumerated(EnumType.STRING)
     private LanguageType language;
 
diff --git a/dbrepo-metadata-db/test/src/main/java/at/tuwien/test/BaseTest.java b/dbrepo-metadata-db/test/src/main/java/at/tuwien/test/BaseTest.java
index 1442173ab7e65a82d6da4e77d2439e7891f0ff4f..6b7999512855a54b27e1b11eb0b613918c3e49c3 100644
--- a/dbrepo-metadata-db/test/src/main/java/at/tuwien/test/BaseTest.java
+++ b/dbrepo-metadata-db/test/src/main/java/at/tuwien/test/BaseTest.java
@@ -812,7 +812,7 @@ public abstract class BaseTest {
 
     public final static Long IMAGE_ELASTIC_ID = 3L;
     public final static String IMAGE_ELASTIC_REPOSITORY = "elasticsearch";
-    public final static String IMAGE_ELASTIC_TAG = "7.13.4";
+    public final static String IMAGE_ELASTIC_TAG = "8.7.1";
 
     public final static ContainerImage IMAGE_ELASTIC = ContainerImage.builder()
             .id(IMAGE_ELASTIC_ID)
diff --git a/dbrepo-query-service/rest-service/src/test/resources/application.properties b/dbrepo-query-service/rest-service/src/test/resources/application.properties
index 4b947ac55685a21e5efa760b4dd2b3f83f77cf65..c64e6962f91b44b44cbfbe6d34d9c56e252dbd9d 100644
--- a/dbrepo-query-service/rest-service/src/test/resources/application.properties
+++ b/dbrepo-query-service/rest-service/src/test/resources/application.properties
@@ -22,6 +22,9 @@ spring.jpa.show-sql=false
 logging.level.root=error
 logging.level.at.tuwien.=trace
 
+# elastic
+spring.elasticsearch.uris=dbrepo-search-service:9200
+
 # broker service
 spring.rabbitmq.host=dbrepo-broker-service
 spring.rabbitmq.virtual-host=/