diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index d611679b713eeac77e034ee7e8c639c70a97fcc7..ca212e0e42780179076f0c70e2ca3e85a3afff31 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -62,5 +62,119 @@ include:
   - local: "devops/gc/pipeline/override-stages.yml"
   - local: "devops/aws/pipeline/override-stages.yml"
 
+.maven:
+  image: maven:3.9.3-eclipse-temurin-17
+  tags: ['osdu-medium']
+  variables:
+    MAVEN_REPO_PATH: "$CI_PROJECT_DIR/.m2/repository"
+    MAVEN_CLI_OPTS: "--batch-mode --settings=$CI_PROJECT_DIR/.mvn/community-maven.settings.xml"
+
+  cache:
+    paths:
+      - $MAVEN_REPO_PATH
+
+  artifacts:
+    paths:
+      - ./**/target/*.jar
+      - ./**/maven-*-output.txt
+    when: always
+    expire_in: 2 days
+
+  before_script:
+    - | # Check for the presence of a maven wrapper script
+      apt-get update && apt-get install -y python3
+      if [ -e "$CI_PROJECT_DIR/mvnw" ]; then
+        export MAVEN_BINARY="$CI_PROJECT_DIR/mvnw"
+        unset MAVEN_CONFIG
+        mkdir -pv .mvn/wrapper
+      else
+        export MAVEN_BINARY="mvn"
+      fi
+    - export MAVEN="$MAVEN_BINARY $MAVEN_CLI_OPTS -Dmaven.repo.local=$MAVEN_REPO_PATH"
+    - echo $MAVEN_BINARY
+    - echo $MAVEN_CLI_OPTS
+    - echo $MAVEN_REPO_PATH
+    - echo $MAVEN
+    - mkdir -pv $MAVEN_REPO_PATH
+    - export ALL_MAVEN_BUILD_DIRS_Z=$(mktemp)
+    - python3 --version
+
+    # This scans for all pom.xml files that aren't listed as a child pom (as
+    # determine by the presence of a <parent> tag).
+    - |
+      (python3 | sort -z > $ALL_MAVEN_BUILD_DIRS_Z) <<EOF
+      from xml.dom.minidom import parse
+      import os
+      import sys
+
+      allPomFiles = set()
+      submoduleFiles = set()
+
+      for root, dirnames, filenames in os.walk(os.environ['CI_PROJECT_DIR']):
+          if 'pom.xml' in filenames:
+              pomFile = os.path.join(root, 'pom.xml')
+              allPomFiles.add(pomFile)
+
+              dom = parse(pomFile)
+              for modules in dom.getElementsByTagName('modules'):
+                  for module in modules.getElementsByTagName('module'):
+                      submoduleFiles.add(os.path.join(root, module.firstChild.nodeValue, "pom.xml"))
+
+      for pomFile in allPomFiles:
+          if pomFile not in submoduleFiles:
+              dir = os.path.dirname(pomFile)
+              sys.stdout.write(dir + '\0')
+      EOF
+    - xargs -0rn 1 echo < $ALL_MAVEN_BUILD_DIRS_Z
+
+    # This creates a script for running maven, capturing output to a file.
+    # - First argument is the directory to build from
+    # - Second argument is the name to use for the logfile
+    # - The remaining arguments are the maven command to run
+    - export MAVEN_BUILD=$(tempfile -m 755 -p build -s .sh)
+    - echo "#!/bin/bash" > $MAVEN_BUILD
+    - |
+      cat >> $MAVEN_BUILD <<EOF
+      id=maven_build_\$(echo "\$@" | sha1sum | head -c 7)
+      cd "\$1"; shift
+      outputFile="\$1"; shift
+
+      echo "********************************************************************************"
+      echo -e "\e[0Ksection_start:\$(date +%s):\${id}\r\e[0K\e[1m\$(pwd)\e[0m"
+      echo -e "\e[32;1m\$MAVEN" "\$@" "\e[0m"
+
+      if \$MAVEN "\$@" > "\$outputFile" 2>&1; then
+          tail -n 25 "\$outputFile";
+          echo -e "\e[36m**** Showing the last 25 lines of the passed build (above). See Job artifacts for full log details *****\e[0m";
+          echo -e "\e[0Ksection_end:\$(date +%s):\${id}\r\e[0K"
+      else
+          tail -n 200 "\$outputFile";
+          echo -e "\e[31m**** Showing the last 200 lines of the failed build (above). See Job artifacts for full log details *****\e[0m";
+          echo -e "\e[0Ksection_end:\$(date +%s):\${id}\r\e[0K"
+          exit 255;
+      fi
+      EOF
+
+    # This creates a script for applying the $MAVEN_BUILD script to all build directories
+    - export MAVEN_FOREACH=$(tempfile -m 755 -p fr-ec -s .sh)
+    - echo "#!/bin/sh" > $MAVEN_FOREACH
+    - echo 'xargs -0rI {} $MAVEN_BUILD {} "$@" < $ALL_MAVEN_BUILD_DIRS_Z' >> $MAVEN_FOREACH
+
+gemnasium-maven-dependency_scanning:
+  variables:
+    DS_JAVA_VERSION: 17
+
+azure_containerize:
+  variables:
+    AZURE_CONTAINERIZE_REPOSITORY: "-b jdk-17 https://gitlab-ci-token:${CI_JOB_TOKEN}@community.opengroup.org/osdu/platform/deployment-and-operations/base-containers-azure/service-base-image"
+
+azure_test:
+  image: community.opengroup.org:5555/osdu/platform/deployment-and-operations/base-containers-azure/azure-maven17:v0.0.1
+
 aws-test-java:
-  tags: ["aws-internal-test"]
+  image: $CI_REGISTRY/osdu/platform/deployment-and-operations/base-containers-aws/aws-maven/aws-maven:v2.0
+
+fossa-analyze:
+  image: $CI_REGISTRY/divido/fossa-with-cache:v0.9-jdk17
+fossa-check-notice:
+  image: $CI_REGISTRY/divido/fossa-with-cache:v0.9-jdk17
diff --git a/indexer-core/pom.xml b/indexer-core/pom.xml
index 0073b56d13638f9361b4ffdc4d8de0d3590c3384..d1c5c7fac09905d80a91544ef5e2680fdd630e87 100644
--- a/indexer-core/pom.xml
+++ b/indexer-core/pom.xml
@@ -19,7 +19,8 @@
 		<gson.version>2.9.1</gson.version>
 		<netty.version>4.1.70.Final</netty.version>
 		<spring-webmvc.version>5.3.22</spring-webmvc.version>
-		<os-core-common.version>0.21.0</os-core-common.version>
+		<os-core-common.version>0.22.0-rc4</os-core-common.version>
+		<argLine>--add-opens java.base/java.lang=ALL-UNNAMED</argLine>
 	</properties>
 
 	<dependencyManagement>
@@ -215,22 +216,7 @@
 		<dependency>
 			<groupId>junit</groupId>
 			<artifactId>junit</artifactId>
-			<version>4.12</version>
-			<scope>test</scope>
-		</dependency>
-		<!-- https://mvnrepository.com/artifact/org.powermock/powermock-api-mockito2 -->
-		<dependency>
-			<groupId>org.powermock</groupId>
-			<artifactId>powermock-api-mockito2</artifactId>
-			<version>2.0.2</version>
-			<scope>test</scope>
-		</dependency>
-
-		<!-- https://mvnrepository.com/artifact/org.powermock/powermock-module-junit4 -->
-		<dependency>
-			<groupId>org.powermock</groupId>
-			<artifactId>powermock-module-junit4</artifactId>
-			<version>2.0.2</version>
+			<version>4.13.2</version>
 			<scope>test</scope>
 		</dependency>
 		<dependency>
@@ -244,6 +230,18 @@
 			<artifactId>cobertura-maven-plugin</artifactId>
 			<version>2.7</version>
 			<scope>test</scope>
+			<exclusions>
+				<exclusion>
+					<groupId>com.sun</groupId>
+					<artifactId>tools</artifactId>
+				</exclusion>
+			</exclusions>
+		</dependency>
+		<dependency>
+			<groupId>org.projectlombok</groupId>
+			<artifactId>lombok</artifactId>
+			<version>1.18.28</version>
+			<scope>provided</scope>
 		</dependency>
 		<dependency>
 			<groupId>xerces</groupId>
@@ -265,7 +263,7 @@
 			<plugin>
 				<groupId>org.apache.maven.plugins</groupId>
 				<artifactId>maven-surefire-plugin</artifactId>
-				<version>2.4.2</version>
+				<version>3.0.0</version>
 				<configuration>
 					<useSystemClassLoader>false</useSystemClassLoader>
 					<threadCount>1</threadCount>
diff --git a/indexer-core/src/test/java/org/opengroup/osdu/indexer/api/CleanupIndiciesApiTest.java b/indexer-core/src/test/java/org/opengroup/osdu/indexer/api/CleanupIndiciesApiTest.java
index f8236796ac646bdafe88df3ddcd7667002b2ccd1..2999ca37e03e804510a9d36d106119bceb113a38 100644
--- a/indexer-core/src/test/java/org/opengroup/osdu/indexer/api/CleanupIndiciesApiTest.java
+++ b/indexer-core/src/test/java/org/opengroup/osdu/indexer/api/CleanupIndiciesApiTest.java
@@ -17,13 +17,11 @@ import org.opengroup.osdu.core.common.search.Config;
 import org.opengroup.osdu.indexer.logging.AuditLogger;
 import org.opengroup.osdu.indexer.service.IndexerService;
 import org.opengroup.osdu.indexer.util.IndexerQueueTaskBuilder;
-import org.powermock.core.classloader.annotations.PrepareForTest;
-import org.powermock.modules.junit4.PowerMockRunner;
+import org.mockito.junit.MockitoJUnitRunner;
 import org.springframework.http.HttpStatus;
 import org.springframework.http.ResponseEntity;
 
-@RunWith(PowerMockRunner.class)
-@PrepareForTest({HeadersUtil.class, IndexerQueueTaskBuilder.class, DpsHeaders.class, Config.class})
+@RunWith(MockitoJUnitRunner.class)
 public class CleanupIndiciesApiTest {
 
   private final String messageValid = "{\"data\":\"[{\\\"id\\\":\\\"opendes:welldb:wellbore-d9033ae1-fb15-496c-9ba0-880fd1d2b2cf\\\",\\\"kind\\\":\\\"tenant1:welldb:wellbore:1.0.0\\\",\\\"op\\\":\\\"purge_schema\\\"}]\",\"attributes\":{\"account-id\":\"opendes\",\"correlation-id\":\"b5a281bd-f59d-4db2-9939-b2d85036fc7e\"},\"messageId\":\"75328163778221\",\"publishTime\":\"2018-05-08T21:48:56.131Z\"}";
diff --git a/indexer-core/src/test/java/org/opengroup/osdu/indexer/api/RecordIndexerApiTest.java b/indexer-core/src/test/java/org/opengroup/osdu/indexer/api/RecordIndexerApiTest.java
index 4c008d8646ded0eaf6d247d7f55d283a2e90d29e..a4c76181197e22e95b2a808589d6a09bff687e73 100644
--- a/indexer-core/src/test/java/org/opengroup/osdu/indexer/api/RecordIndexerApiTest.java
+++ b/indexer-core/src/test/java/org/opengroup/osdu/indexer/api/RecordIndexerApiTest.java
@@ -33,14 +33,11 @@ import org.opengroup.osdu.core.common.model.search.RecordChangedMessages;
 import org.opengroup.osdu.indexer.service.IndexerService;
 import org.opengroup.osdu.indexer.service.SchemaEventsProcessor;
 import org.opengroup.osdu.indexer.service.SchemaService;
-import org.opengroup.osdu.indexer.util.IndexerQueueTaskBuilder;
-import org.powermock.core.classloader.annotations.PrepareForTest;
-import org.powermock.modules.junit4.PowerMockRunner;
+import org.mockito.junit.MockitoJUnitRunner;
 import org.springframework.http.HttpStatus;
 import org.springframework.http.ResponseEntity;
 
-@RunWith(PowerMockRunner.class)
-@PrepareForTest({HeadersUtil.class, IndexerQueueTaskBuilder.class, DpsHeaders.class})
+@RunWith(MockitoJUnitRunner.class)
 public class RecordIndexerApiTest {
 
     private final String recordMessageValid = "{\"data\":\"[{\\\"id\\\":\\\"opendes:welldb:wellbore-d9033ae1-fb15-496c-9ba0-880fd1d2b2cf\\\",\\\"kind\\\":\\\"tenant1:welldb:wellbore:1.0.0\\\",\\\"op\\\":\\\"create\\\"}]\",\"attributes\":{\"account-id\":\"opendes\",\"correlation-id\":\"b5a281bd-f59d-4db2-9939-b2d85036fc7e\"},\"messageId\":\"75328163778221\",\"publishTime\":\"2018-05-08T21:48:56.131Z\"}";
diff --git a/indexer-core/src/test/java/org/opengroup/osdu/indexer/error/GlobalExceptionMapperCoreTest.java b/indexer-core/src/test/java/org/opengroup/osdu/indexer/error/GlobalExceptionMapperCoreTest.java
index 1877df26e55b971991b6f222cc28a49926426c0f..e8302b7d4f4e3872574b1abca0cdffbaaaa5bb21 100644
--- a/indexer-core/src/test/java/org/opengroup/osdu/indexer/error/GlobalExceptionMapperCoreTest.java
+++ b/indexer-core/src/test/java/org/opengroup/osdu/indexer/error/GlobalExceptionMapperCoreTest.java
@@ -24,7 +24,7 @@ import org.opengroup.osdu.core.common.logging.JaxRsDpsLog;
 import org.opengroup.osdu.core.common.model.http.AppException;
 import org.opengroup.osdu.core.common.model.http.RequestStatus;
 import org.opengroup.osdu.indexer.schema.converter.exeption.SchemaProcessingException;
-import org.powermock.modules.junit4.PowerMockRunner;
+import org.mockito.junit.MockitoJUnitRunner;
 import org.springframework.http.ResponseEntity;
 import org.springframework.security.access.AccessDeniedException;
 
@@ -34,7 +34,7 @@ import java.io.IOException;
 
 import static org.junit.Assert.*;
 
-@RunWith(PowerMockRunner.class)
+@RunWith(MockitoJUnitRunner.class)
 public class GlobalExceptionMapperCoreTest {
 
     @Mock
@@ -116,4 +116,4 @@ public class GlobalExceptionMapperCoreTest {
         ResponseEntity response = this.sut.handleSchemaProcessingException(schemaProcessingException);
         assertEquals(HttpStatus.SC_BAD_REQUEST, response.getStatusCodeValue());
     }
-}
\ No newline at end of file
+}
diff --git a/indexer-core/src/test/java/org/opengroup/osdu/indexer/logging/JaxRsDpsLogTest.java b/indexer-core/src/test/java/org/opengroup/osdu/indexer/logging/JaxRsDpsLogTest.java
index 3e9f19913838e05283b33240856b23a43592b41f..a57d7b89f171dc38cc8a73e30a12d82282a34e13 100644
--- a/indexer-core/src/test/java/org/opengroup/osdu/indexer/logging/JaxRsDpsLogTest.java
+++ b/indexer-core/src/test/java/org/opengroup/osdu/indexer/logging/JaxRsDpsLogTest.java
@@ -25,7 +25,6 @@ import org.opengroup.osdu.core.common.model.http.Request;
 import org.opengroup.osdu.core.common.logging.ILogger;
 import org.opengroup.osdu.core.common.logging.JaxRsDpsLog;
 import org.opengroup.osdu.core.common.logging.audit.AuditPayload;
-import org.powermock.core.classloader.annotations.PrepareForTest;
 import org.springframework.test.context.junit4.SpringRunner;
 
 import java.util.*;
@@ -38,7 +37,6 @@ import static org.mockito.Mockito.*;
 
 @Ignore
 @RunWith(SpringRunner.class)
-@PrepareForTest({ILogger.class})
 public class JaxRsDpsLogTest {
 
     @Mock
@@ -105,4 +103,4 @@ public class JaxRsDpsLogTest {
         this.sut.warning(warnings);
         verify(this.log, never()).warning(eq("search.app"), eq(""), any());
     }
-}
\ No newline at end of file
+}
diff --git a/indexer-core/src/test/java/org/opengroup/osdu/indexer/service/ClusterConfigurationServiceTest.java b/indexer-core/src/test/java/org/opengroup/osdu/indexer/service/ClusterConfigurationServiceTest.java
index 08bf634fa5875d5b4ec26010ffcf296b414e0f65..6eae13d97fc04bacd05357128febb5b1868cdbc3 100644
--- a/indexer-core/src/test/java/org/opengroup/osdu/indexer/service/ClusterConfigurationServiceTest.java
+++ b/indexer-core/src/test/java/org/opengroup/osdu/indexer/service/ClusterConfigurationServiceTest.java
@@ -25,9 +25,7 @@ import org.junit.runner.RunWith;
 import org.mockito.InjectMocks;
 import org.mockito.Mock;
 import org.opengroup.osdu.indexer.util.ElasticClientHandler;
-import org.powermock.api.mockito.PowerMockito;
-import org.powermock.core.classloader.annotations.PrepareForTest;
-import org.springframework.test.context.junit4.SpringRunner;
+import org.mockito.junit.MockitoJUnitRunner;
 
 import java.io.IOException;
 
@@ -38,8 +36,7 @@ import static org.mockito.Mockito.mock;
 import static org.mockito.Mockito.when;
 import static org.mockito.MockitoAnnotations.initMocks;
 
-@RunWith(SpringRunner.class)
-@PrepareForTest({RestHighLevelClient.class, ClusterClient.class})
+@RunWith(MockitoJUnitRunner.class)
 public class ClusterConfigurationServiceTest {
 
     @Mock
@@ -53,8 +50,8 @@ public class ClusterConfigurationServiceTest {
     @Before
     public void setup() {
         initMocks(this);
-        clusterClient = PowerMockito.mock(ClusterClient.class);
-        restHighLevelClient = PowerMockito.mock(RestHighLevelClient.class);
+        clusterClient = mock(ClusterClient.class);
+        restHighLevelClient = mock(RestHighLevelClient.class);
     }
 
     @Test
diff --git a/indexer-core/src/test/java/org/opengroup/osdu/indexer/service/IndexAliasServiceImplTest.java b/indexer-core/src/test/java/org/opengroup/osdu/indexer/service/IndexAliasServiceImplTest.java
index df1e5d4397aa8209fafe272747c1fe9f5b3972f9..f63777c8b13d3325ee5aece4ffd06e014869d220 100644
--- a/indexer-core/src/test/java/org/opengroup/osdu/indexer/service/IndexAliasServiceImplTest.java
+++ b/indexer-core/src/test/java/org/opengroup/osdu/indexer/service/IndexAliasServiceImplTest.java
@@ -40,7 +40,6 @@ import org.opengroup.osdu.indexer.model.IndexAliasesResult;
 import org.opengroup.osdu.indexer.service.mock.BucketMock;
 import org.opengroup.osdu.indexer.service.mock.TermMock;
 import org.opengroup.osdu.indexer.util.ElasticClientHandler;
-import org.powermock.api.mockito.PowerMockito;
 import org.springframework.context.annotation.Lazy;
 
 import java.io.IOException;
@@ -48,6 +47,7 @@ import java.util.*;
 
 import static org.mockito.ArgumentMatchers.any;
 import static org.mockito.ArgumentMatchers.anyString;
+import static org.mockito.Mockito.mock;
 import static org.mockito.Mockito.when;
 import static org.mockito.MockitoAnnotations.initMocks;
 
@@ -75,10 +75,10 @@ public class IndexAliasServiceImplTest {
     @Before
     public void setup() {
         initMocks(this);
-        indicesClient = PowerMockito.mock(IndicesClient.class);
-        restHighLevelClient = PowerMockito.mock(RestHighLevelClient.class);
-        getAliasesResponse = PowerMockito.mock(GetAliasesResponse.class);
-        getAliasesNotFoundResponse = PowerMockito.mock(GetAliasesResponse.class);
+        indicesClient = mock(IndicesClient.class);
+        restHighLevelClient = mock(RestHighLevelClient.class);
+        getAliasesResponse = mock(GetAliasesResponse.class);
+        getAliasesNotFoundResponse = mock(GetAliasesResponse.class);
 
     }
 
@@ -152,11 +152,11 @@ public class IndexAliasServiceImplTest {
         String unsupportedKind = "common:welldb:wellbore:1";
         String unsupportedIndex = unsupportedKind.replace(":", "-");
 
-        SearchResponse searchResponse = PowerMockito.mock(SearchResponse.class);
-        Aggregations aggregations = PowerMockito.mock(Aggregations.class);
-        TermMock terms = PowerMockito.mock(TermMock.class);
-        BucketMock bucket = PowerMockito.mock(BucketMock.class);
-        BucketMock bucket2 = PowerMockito.mock(BucketMock.class);
+        SearchResponse searchResponse = mock(SearchResponse.class);
+        Aggregations aggregations = mock(Aggregations.class);
+        TermMock terms = mock(TermMock.class);
+        BucketMock bucket = mock(BucketMock.class);
+        BucketMock bucket2 = mock(BucketMock.class);
         List<BucketMock> bucketList = Arrays.asList(bucket, bucket, bucket2);
         AcknowledgedResponse updateAliasesResponse = new AcknowledgedResponse(true);
         when(elasticIndexNameResolver.getIndexNameFromKind(any()))
diff --git a/indexer-core/src/test/java/org/opengroup/osdu/indexer/service/IndexerMappingServiceTest.java b/indexer-core/src/test/java/org/opengroup/osdu/indexer/service/IndexerMappingServiceTest.java
index dd12c8e66405c42d8aa87dc208764e49dc2d89a7..b0532a5d49f8ee481b19eb81f3f7e8daeb6cc516 100644
--- a/indexer-core/src/test/java/org/opengroup/osdu/indexer/service/IndexerMappingServiceTest.java
+++ b/indexer-core/src/test/java/org/opengroup/osdu/indexer/service/IndexerMappingServiceTest.java
@@ -18,12 +18,13 @@ import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.fail;
 import static org.mockito.Matchers.any;
 import static org.mockito.Mockito.doReturn;
+import static org.mockito.Mockito.mock;
 import static org.mockito.Mockito.mockingDetails;
+import static org.mockito.Mockito.spy;
 import static org.mockito.Mockito.times;
 import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.when;
 import static org.mockito.MockitoAnnotations.initMocks;
-import static org.powermock.api.mockito.PowerMockito.spy;
-import static org.powermock.api.mockito.PowerMockito.when;
 
 import com.google.gson.Gson;
 import java.io.IOException;
@@ -52,12 +53,9 @@ import org.opengroup.osdu.core.common.search.ElasticIndexNameResolver;
 import org.opengroup.osdu.indexer.cache.PartitionSafeIndexCache;
 import org.opengroup.osdu.indexer.util.ElasticClientHandler;
 import org.opengroup.osdu.indexer.util.TypeMapper;
-import org.powermock.api.mockito.PowerMockito;
-import org.powermock.core.classloader.annotations.PrepareForTest;
-import org.powermock.modules.junit4.PowerMockRunner;
+import org.mockito.junit.MockitoJUnitRunner;
 
-@RunWith(PowerMockRunner.class)
-@PrepareForTest({RestHighLevelClient.class, IndicesClient.class})
+@RunWith(MockitoJUnitRunner.class)
 public class IndexerMappingServiceTest {
 
     private final String kind = "tenant:test:test:1.0.0";
@@ -97,8 +95,8 @@ public class IndexerMappingServiceTest {
 
         this.indexSchema = IndexSchema.builder().kind(kind).type(type).dataSchema(getDataAttributeMapping()).metaSchema(getMetaAttributeMapping()).build();
 
-        this.indicesClient = PowerMockito.mock(IndicesClient.class);
-        this.restHighLevelClient = PowerMockito.mock(RestHighLevelClient.class);
+        this.indicesClient = mock(IndicesClient.class);
+        this.restHighLevelClient = mock(RestHighLevelClient.class);
 
         when(this.elasticIndexNameResolver.getIndexNameFromKind(kind)).thenReturn(index);
         when(this.restHighLevelClient.getLowLevelClient()).thenReturn(restClient);
diff --git a/indexer-core/src/test/java/org/opengroup/osdu/indexer/service/IndexerSchemaServiceTest.java b/indexer-core/src/test/java/org/opengroup/osdu/indexer/service/IndexerSchemaServiceTest.java
index 4c488fb13c7b1d66e4a7f7113edf003e40b5bc1e..584bef57ee6d9b1e932494e57b722b5b1350ef5a 100644
--- a/indexer-core/src/test/java/org/opengroup/osdu/indexer/service/IndexerSchemaServiceTest.java
+++ b/indexer-core/src/test/java/org/opengroup/osdu/indexer/service/IndexerSchemaServiceTest.java
@@ -39,7 +39,6 @@ import org.opengroup.osdu.indexer.schema.converter.exeption.SchemaProcessingExce
 import org.opengroup.osdu.indexer.schema.converter.interfaces.IVirtualPropertiesSchemaCache;
 import org.opengroup.osdu.indexer.util.AugmenterSetting;
 import org.opengroup.osdu.indexer.util.ElasticClientHandler;
-import org.powermock.core.classloader.annotations.PrepareForTest;
 import org.springframework.test.context.junit4.SpringRunner;
 
 import java.io.IOException;
@@ -55,11 +54,8 @@ import static org.junit.Assert.*;
 import static org.mockito.ArgumentMatchers.*;
 import static org.mockito.Mockito.*;
 import static org.mockito.MockitoAnnotations.initMocks;
-import static org.powermock.api.mockito.PowerMockito.mock;
-import static org.powermock.api.mockito.PowerMockito.when;
 
 @RunWith(SpringRunner.class)
-@PrepareForTest({RestHighLevelClient.class})
 public class IndexerSchemaServiceTest {
 
     private final String kind = "tenant:test:test:1.0.0";
diff --git a/indexer-core/src/test/java/org/opengroup/osdu/indexer/service/IndexerServiceImplTest.java b/indexer-core/src/test/java/org/opengroup/osdu/indexer/service/IndexerServiceImplTest.java
index 5ab9d69ec9d284b08c8dfde688021832d45d8c9d..364ae5657c71d71f8c5bf6f07a43d0d5f3e80cc9 100644
--- a/indexer-core/src/test/java/org/opengroup/osdu/indexer/service/IndexerServiceImplTest.java
+++ b/indexer-core/src/test/java/org/opengroup/osdu/indexer/service/IndexerServiceImplTest.java
@@ -22,12 +22,14 @@ import org.elasticsearch.action.bulk.BulkResponse;
 import org.elasticsearch.client.RequestOptions;
 import org.elasticsearch.client.RestHighLevelClient;
 import org.elasticsearch.rest.RestStatus;
+import org.junit.After;
 import org.junit.Before;
 import org.junit.Test;
 import org.junit.runner.RunWith;
 import org.mockito.ArgumentCaptor;
 import org.mockito.InjectMocks;
 import org.mockito.Mock;
+import org.mockito.MockedStatic;
 import org.mockito.Spy;
 import org.opengroup.osdu.core.common.http.HeadersUtil;
 import org.opengroup.osdu.core.common.logging.JaxRsDpsLog;
@@ -44,8 +46,7 @@ import org.opengroup.osdu.indexer.provider.interfaces.IPublisher;
 import org.opengroup.osdu.indexer.util.AugmenterSetting;
 import org.opengroup.osdu.indexer.util.ElasticClientHandler;
 import org.opengroup.osdu.indexer.util.IndexerQueueTaskBuilder;
-import org.powermock.core.classloader.annotations.PrepareForTest;
-import org.powermock.modules.junit4.PowerMockRunner;
+import org.mockito.junit.MockitoJUnitRunner;
 
 import java.io.IOException;
 import java.io.UnsupportedEncodingException;
@@ -56,15 +57,18 @@ import java.util.*;
 import static java.util.Collections.singletonList;
 import static org.junit.Assert.*;
 import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.mockStatic;
 import static org.mockito.Mockito.times;
 import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.when;
 import static org.mockito.MockitoAnnotations.initMocks;
-import static org.powermock.api.mockito.PowerMockito.*;
 
-@RunWith(PowerMockRunner.class)
-@PrepareForTest({RestHighLevelClient.class, BulkResponse.class, Acl.class, HeadersUtil.class})
+@RunWith(MockitoJUnitRunner.class)
 public class IndexerServiceImplTest {
 
+    private static MockedStatic<Acl> mockedAcls;
+
     @InjectMocks
     private IndexerServiceImpl sut;
     @Mock
@@ -126,6 +130,11 @@ public class IndexerServiceImplTest {
         when(augmenterSetting.isEnabled()).thenReturn(true);
     }
 
+    @After
+    public void close() {
+        mockedAcls.close();
+    }
+
     @Test
     public void processSchemaMessagesTest() throws Exception {
         RecordInfo recordInfo = new RecordInfo();
@@ -238,7 +247,7 @@ public class IndexerServiceImplTest {
     }
 
     private void prepareTestDataAndEnv(String pubsubMsg) throws IOException, URISyntaxException {
-        mockStatic(Acl.class);
+        mockedAcls = mockStatic(Acl.class);
 
         // setup headers
         this.dpsHeaders = new DpsHeaders();
diff --git a/indexer-core/src/test/java/org/opengroup/osdu/indexer/service/IndicesServiceTest.java b/indexer-core/src/test/java/org/opengroup/osdu/indexer/service/IndicesServiceTest.java
index 7bc3fe17d8a060337c7b624fe7d7c76036ff3d7f..1f0c43a9fccd6c56862c0243ff46c54b39052142 100644
--- a/indexer-core/src/test/java/org/opengroup/osdu/indexer/service/IndicesServiceTest.java
+++ b/indexer-core/src/test/java/org/opengroup/osdu/indexer/service/IndicesServiceTest.java
@@ -43,8 +43,6 @@ import org.opengroup.osdu.core.common.model.search.IndexInfo;
 import org.opengroup.osdu.core.common.search.ElasticIndexNameResolver;
 import org.opengroup.osdu.indexer.cache.PartitionSafeIndexCache;
 import org.opengroup.osdu.indexer.util.ElasticClientHandler;
-import org.powermock.api.mockito.PowerMockito;
-import org.powermock.core.classloader.annotations.PrepareForTest;
 import org.springframework.context.annotation.Lazy;
 import org.springframework.test.context.junit4.SpringRunner;
 
@@ -60,7 +58,6 @@ import static org.mockito.Mockito.*;
 import static org.mockito.MockitoAnnotations.initMocks;
 
 @RunWith(SpringRunner.class)
-@PrepareForTest({RestHighLevelClient.class, IndicesClient.class, ClusterClient.class, EntityUtils.class})
 public class IndicesServiceTest {
     @Mock
     private ElasticClientHandler elasticClientHandler;
@@ -89,9 +86,9 @@ public class IndicesServiceTest {
     @Before
     public void setup() {
         initMocks(this);
-        indicesClient = PowerMockito.mock(IndicesClient.class);
-        clusterClient = PowerMockito.mock(ClusterClient.class);
-        restHighLevelClient = PowerMockito.mock(RestHighLevelClient.class);
+        indicesClient = mock(IndicesClient.class);
+        clusterClient = mock(ClusterClient.class);
+        restHighLevelClient = mock(RestHighLevelClient.class);
     }
 
     @Test
@@ -140,7 +137,7 @@ public class IndicesServiceTest {
     @Test
     public void delete_existingElasticIndex() throws Exception {
         AcknowledgedResponse indexResponse = new AcknowledgedResponse(true);
-        GetIndexResponse getIndexResponse = PowerMockito.mock(GetIndexResponse.class);
+        GetIndexResponse getIndexResponse = mock(GetIndexResponse.class);
         String[] indices = {"anyIndex"};
 
         when(elasticClientHandler.createRestClient()).thenReturn(restHighLevelClient);
@@ -155,7 +152,7 @@ public class IndicesServiceTest {
     @Test
     public void delete_existingElasticIndex_usingSameClient() throws Exception {
         AcknowledgedResponse indexResponse = new AcknowledgedResponse(true);
-        GetIndexResponse getIndexResponse = PowerMockito.mock(GetIndexResponse.class);
+        GetIndexResponse getIndexResponse = mock(GetIndexResponse.class);
         String[] indices = {"anyIndex"};
 
         when(elasticClientHandler.createRestClient()).thenReturn(restHighLevelClient);
@@ -170,7 +167,7 @@ public class IndicesServiceTest {
     @Test
     public void should_throw_internalServerException_delete_isNotAcknowledged() throws Exception {
         AcknowledgedResponse indexResponse = new AcknowledgedResponse(false);
-        GetIndexResponse getIndexResponse = PowerMockito.mock(GetIndexResponse.class);
+        GetIndexResponse getIndexResponse = mock(GetIndexResponse.class);
         String[] indices = {"anyIndex"};
         when(elasticClientHandler.createRestClient()).thenReturn(restHighLevelClient);
         doReturn(indicesClient).when(restHighLevelClient).indices();
@@ -194,7 +191,7 @@ public class IndicesServiceTest {
     public void should_throwAppException_when_delete_existingElasticIndex_and_backupIsRunning() throws Exception {
         ElasticsearchStatusException exception = new ElasticsearchStatusException(
                 "Cannot delete indices that are being snapshotted: [[anyIndex/8IXuPeFnTJGEu_LjjXrHwA]]. Try again after snapshot finishes or cancel the currently running snapshot.", RestStatus.BAD_REQUEST);
-        GetIndexResponse getIndexResponse = PowerMockito.mock(GetIndexResponse.class);
+        GetIndexResponse getIndexResponse = mock(GetIndexResponse.class);
         String[] indices = {"anyIndex"};
         when(elasticClientHandler.createRestClient()).thenReturn(restHighLevelClient);
         doReturn(indicesClient).when(restHighLevelClient).indices();
diff --git a/indexer-core/src/test/java/org/opengroup/osdu/indexer/service/PropertyConfigurationsServiceImplTest.java b/indexer-core/src/test/java/org/opengroup/osdu/indexer/service/PropertyConfigurationsServiceImplTest.java
index 9a11d7a791463b0668619ccad412d7fc90d403e3..cc4bd6e1999a2a5428ed04c8a82df17b11d72f09 100644
--- a/indexer-core/src/test/java/org/opengroup/osdu/indexer/service/PropertyConfigurationsServiceImplTest.java
+++ b/indexer-core/src/test/java/org/opengroup/osdu/indexer/service/PropertyConfigurationsServiceImplTest.java
@@ -58,7 +58,7 @@ import java.util.Map;
 import static org.mockito.ArgumentMatchers.*;
 import static org.mockito.Mockito.times;
 import static org.mockito.Mockito.verify;
-import static org.powermock.api.mockito.PowerMockito.when;
+import static org.mockito.Mockito.when;
 
 @RunWith(SpringRunner.class)
 public class PropertyConfigurationsServiceImplTest {
diff --git a/indexer-core/src/test/java/org/opengroup/osdu/indexer/service/SchemaEventsProcessorImplTest.java b/indexer-core/src/test/java/org/opengroup/osdu/indexer/service/SchemaEventsProcessorImplTest.java
index 31effd715d41d28f21ab7a74920769c85dc24654..11f7bcda442cd63486e35eaf65d1bbad215a9e6e 100644
--- a/indexer-core/src/test/java/org/opengroup/osdu/indexer/service/SchemaEventsProcessorImplTest.java
+++ b/indexer-core/src/test/java/org/opengroup/osdu/indexer/service/SchemaEventsProcessorImplTest.java
@@ -23,9 +23,10 @@ import static org.junit.Assert.fail;
 import static org.mockito.ArgumentMatchers.any;
 import static org.mockito.ArgumentMatchers.anyString;
 import static org.mockito.Mockito.doThrow;
+import static org.mockito.Mockito.mock;
 import static org.mockito.Mockito.times;
 import static org.mockito.Mockito.verify;
-import static org.powermock.api.mockito.PowerMockito.when;
+import static org.mockito.Mockito.when;
 import static org.springframework.http.HttpStatus.BAD_REQUEST;
 import static org.springframework.http.HttpStatus.INTERNAL_SERVER_ERROR;
 
@@ -44,7 +45,6 @@ import org.opengroup.osdu.core.common.model.indexer.SchemaInfo;
 import org.opengroup.osdu.indexer.config.SchemaEventsListenerConfiguration;
 import org.opengroup.osdu.indexer.logging.AuditLogger;
 import org.opengroup.osdu.indexer.util.ElasticClientHandler;
-import org.powermock.api.mockito.PowerMockito;
 import org.springframework.test.context.junit4.SpringRunner;
 
 @RunWith(SpringRunner.class)
@@ -72,7 +72,7 @@ public class SchemaEventsProcessorImplTest {
     @Test
     public void should_process_validSchemaCreateEvent() throws IOException, URISyntaxException {
         SchemaInfo event1 = new SchemaInfo("slb:indexer:test-data--SchemaEventIntegration:1.0.0", "create");
-        this.restClient = PowerMockito.mock(RestHighLevelClient.class);
+        this.restClient = mock(RestHighLevelClient.class);
         when(elasticClientHandler.createRestClient()).thenReturn(restClient);
 
         this.sut.processSchemaMessages(singletonList(event1));
@@ -84,7 +84,7 @@ public class SchemaEventsProcessorImplTest {
     @Test
     public void should_process_validSchemaUpdateEvent() throws IOException, URISyntaxException {
         SchemaInfo event1 = new SchemaInfo("slb:indexer:test-data--SchemaEventIntegration:1.0.0", "update");
-        this.restClient = PowerMockito.mock(RestHighLevelClient.class);
+        this.restClient = mock(RestHighLevelClient.class);
         when(elasticClientHandler.createRestClient()).thenReturn(restClient);
 
         this.sut.processSchemaMessages(singletonList(event1));
@@ -111,7 +111,7 @@ public class SchemaEventsProcessorImplTest {
     @Test
     public void should_throwError_given_schemaUpsertFails() throws IOException, URISyntaxException {
         SchemaInfo event1 = new SchemaInfo("slb:indexer:test-data--SchemaEventIntegration:1.0.0", "update");
-        this.restClient = PowerMockito.mock(RestHighLevelClient.class);
+        this.restClient = mock(RestHighLevelClient.class);
         when(elasticClientHandler.createRestClient()).thenReturn(restClient);
         doThrow(new ElasticsearchStatusException("unknown error", RestStatus.INTERNAL_SERVER_ERROR)).when(this.indexSchemaService)
             .processSchemaUpsertEvent(any(RestHighLevelClient.class), anyString());
diff --git a/indexer-core/src/test/java/org/opengroup/osdu/indexer/service/SchemaProviderImplTest.java b/indexer-core/src/test/java/org/opengroup/osdu/indexer/service/SchemaProviderImplTest.java
index 68a35ad4494d33acadfc7c11bbf634ce78aab17d..7d04a7df348ba08e5d7fccf88d2cb038ba753716 100644
--- a/indexer-core/src/test/java/org/opengroup/osdu/indexer/service/SchemaProviderImplTest.java
+++ b/indexer-core/src/test/java/org/opengroup/osdu/indexer/service/SchemaProviderImplTest.java
@@ -30,7 +30,6 @@ import org.opengroup.osdu.indexer.config.IndexerConfigurationProperties;
 import org.opengroup.osdu.indexer.logging.AuditLogger;
 import org.opengroup.osdu.indexer.model.SchemaInfoResponse;
 import org.opengroup.osdu.indexer.schema.converter.SchemaToStorageFormatImpl;
-import org.powermock.api.mockito.PowerMockito;
 import org.springframework.http.converter.json.Jackson2ObjectMapperBuilder;
 import org.springframework.test.context.junit4.SpringRunner;
 
@@ -42,7 +41,6 @@ import static org.junit.Assert.*;
 import static org.junit.Assert.assertEquals;
 import static org.mockito.ArgumentMatchers.any;
 import static org.mockito.Mockito.*;
-import static org.powermock.api.mockito.PowerMockito.when;
 
 @RunWith(SpringRunner.class)
 public class SchemaProviderImplTest {
@@ -113,7 +111,7 @@ public class SchemaProviderImplTest {
         httpResponse.setResponseCode(org.springframework.http.HttpStatus.OK.value());
         httpResponse.setBody(validSchemaFromSchemaService);
 
-        PowerMockito.when(this.urlFetchService.sendRequest(any())).thenReturn(httpResponse);
+        when(this.urlFetchService.sendRequest(any())).thenReturn(httpResponse);
 
         String recordSchemaResponse = this.sut.getSchema(kind);
 
@@ -135,7 +133,7 @@ public class SchemaProviderImplTest {
         HttpResponse httpResponse = new HttpResponse();
         httpResponse.setResponseCode(org.springframework.http.HttpStatus.NOT_FOUND.value());
 
-        PowerMockito.when(this.urlFetchService.sendRequest(any())).thenReturn(httpResponse);
+        when(this.urlFetchService.sendRequest(any())).thenReturn(httpResponse);
 
         String recordSchemaResponse = this.sut.getSchema(kind);
 
@@ -165,7 +163,7 @@ public class SchemaProviderImplTest {
     @Test
     public void getSchemaInfos() throws URISyntaxException, UnsupportedEncodingException {
         HttpResponse httpResponse = createSchemaInfoResponse();
-        PowerMockito.when(this.urlFetchService.sendRequest(any())).thenReturn(httpResponse);
+        when(this.urlFetchService.sendRequest(any())).thenReturn(httpResponse);
 
         SchemaInfoResponse schemaInfoResponse = sut.getSchemaInfos("osdu", "wks", "master-data--Wellbore", "1", null, null, true);
         assertEquals(1, schemaInfoResponse.getCount());
@@ -178,8 +176,8 @@ public class SchemaProviderImplTest {
         String schemaHost = "http://localhost/api/schema-service/v1/schema";
         ArgumentCaptor<FetchServiceHttpRequest> argumentCaptor = ArgumentCaptor.forClass(FetchServiceHttpRequest.class);
         HttpResponse httpResponse = createSchemaInfoResponse();
-        PowerMockito.when(this.configurationProperties.getSchemaHost()).thenReturn(schemaHost);
-        PowerMockito.when(this.urlFetchService.sendRequest(any())).thenReturn(httpResponse);
+        when(this.configurationProperties.getSchemaHost()).thenReturn(schemaHost);
+        when(this.urlFetchService.sendRequest(any())).thenReturn(httpResponse);
 
         sut.getSchemaInfos("osdu", "wks", "master-data--Wellbore", "1", null, null, true);
         verify(this.urlFetchService).sendRequest(argumentCaptor.capture());
@@ -194,8 +192,8 @@ public class SchemaProviderImplTest {
         String schemaHost = "http://localhost/api/schema-service/v1/schema";
         ArgumentCaptor<FetchServiceHttpRequest> argumentCaptor = ArgumentCaptor.forClass(FetchServiceHttpRequest.class);
         HttpResponse httpResponse = createSchemaInfoResponse();
-        PowerMockito.when(this.configurationProperties.getSchemaHost()).thenReturn(schemaHost);
-        PowerMockito.when(this.urlFetchService.sendRequest(any())).thenReturn(httpResponse);
+        when(this.configurationProperties.getSchemaHost()).thenReturn(schemaHost);
+        when(this.urlFetchService.sendRequest(any())).thenReturn(httpResponse);
 
         sut.getSchemaInfos("osdu", "wks", "master-data--Wellbore", "1", "2", null, false);
         verify(this.urlFetchService).sendRequest(argumentCaptor.capture());
diff --git a/indexer-core/src/test/java/org/opengroup/osdu/indexer/service/SearchServiceImplTest.java b/indexer-core/src/test/java/org/opengroup/osdu/indexer/service/SearchServiceImplTest.java
index 93ee08260785537a679529039d0966dbbee88fb7..a299529d394569bebf2c66a8e4963229535876cb 100644
--- a/indexer-core/src/test/java/org/opengroup/osdu/indexer/service/SearchServiceImplTest.java
+++ b/indexer-core/src/test/java/org/opengroup/osdu/indexer/service/SearchServiceImplTest.java
@@ -13,16 +13,15 @@ import org.opengroup.osdu.core.common.provider.interfaces.IRequestInfo;
 import org.opengroup.osdu.indexer.config.IndexerConfigurationProperties;
 import org.opengroup.osdu.indexer.model.SearchRequest;
 import org.opengroup.osdu.indexer.model.SearchResponse;
-import org.powermock.modules.junit4.PowerMockRunner;
+import org.mockito.junit.MockitoJUnitRunner;
 
 import static org.junit.jupiter.api.Assertions.assertThrows;
 import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.Mockito.when;
 
 import java.net.URISyntaxException;
 
-import static org.powermock.api.mockito.PowerMockito.when;
-
-@RunWith(PowerMockRunner.class)
+@RunWith(MockitoJUnitRunner.class)
 public class SearchServiceImplTest {
     @InjectMocks
     private SearchServiceImpl sut;
diff --git a/indexer-core/src/test/java/org/opengroup/osdu/indexer/util/BooleanFeatureFlagClientTest.java b/indexer-core/src/test/java/org/opengroup/osdu/indexer/util/BooleanFeatureFlagClientTest.java
index 8b5fb420f4e1269ddcb0bd255a535a172869056d..4a309df7b7abd3028f69e79aa32c027bf08ec327 100644
--- a/indexer-core/src/test/java/org/opengroup/osdu/indexer/util/BooleanFeatureFlagClientTest.java
+++ b/indexer-core/src/test/java/org/opengroup/osdu/indexer/util/BooleanFeatureFlagClientTest.java
@@ -32,7 +32,7 @@ import java.util.HashMap;
 
 import static org.mockito.ArgumentMatchers.any;
 import static org.mockito.ArgumentMatchers.anyString;
-import static org.powermock.api.mockito.PowerMockito.when;
+import static org.mockito.Mockito.when;
 
 @RunWith(SpringRunner.class)
 public class BooleanFeatureFlagClientTest {
diff --git a/indexer-core/src/test/java/org/opengroup/osdu/indexer/util/ElasticClientHandlerTest.java b/indexer-core/src/test/java/org/opengroup/osdu/indexer/util/ElasticClientHandlerTest.java
index effda48aaef31616b6f583844fdadbd31276747a..ba6f57e1d9618e60b792741c1c1279b3a7a9b2d3 100644
--- a/indexer-core/src/test/java/org/opengroup/osdu/indexer/util/ElasticClientHandlerTest.java
+++ b/indexer-core/src/test/java/org/opengroup/osdu/indexer/util/ElasticClientHandlerTest.java
@@ -18,30 +18,31 @@ import org.apache.http.HttpHost;
 import org.elasticsearch.client.RestClient;
 import org.elasticsearch.client.RestClientBuilder;
 import org.elasticsearch.client.RestHighLevelClient;
+import org.junit.After;
 import org.junit.Before;
 import org.junit.Test;
 import org.junit.runner.RunWith;
 import org.mockito.InjectMocks;
 import org.mockito.Mock;
+import org.mockito.MockedStatic;
 import org.opengroup.osdu.core.common.logging.JaxRsDpsLog;
 import org.opengroup.osdu.core.common.model.http.AppException;
 import org.opengroup.osdu.core.common.model.indexer.IElasticSettingService;
 import org.opengroup.osdu.core.common.model.search.ClusterSettings;
 import org.opengroup.osdu.core.common.model.search.DeploymentEnvironment;
 import org.opengroup.osdu.indexer.config.IndexerConfigurationProperties;
-import org.powermock.core.classloader.annotations.PrepareForTest;
-import org.powermock.modules.junit4.PowerMockRunner;
+import org.mockito.junit.MockitoJUnitRunner;
 
 import static org.junit.Assert.assertEquals;
+import static org.mockito.Mockito.mockStatic;
 import static org.mockito.Mockito.when;
 import static org.mockito.MockitoAnnotations.initMocks;
-import static org.powermock.api.mockito.PowerMockito.mockStatic;
 
-@RunWith(PowerMockRunner.class)
-@PrepareForTest({RestClient.class, RestHighLevelClient.class})
+@RunWith(MockitoJUnitRunner.class)
 public class ElasticClientHandlerTest {
 
     private static final boolean SECURITY_HTTPS_CERTIFICATE_TRUST = false;
+    private static MockedStatic<RestClient> mockedRestClients;
 
     @Mock
     private IndexerConfigurationProperties configurationProperties;
@@ -63,11 +64,16 @@ public class ElasticClientHandlerTest {
     public void setup() {
         initMocks(this);
 
-        mockStatic(RestClient.class);
+        mockedRestClients = mockStatic(RestClient.class);
 
         elasticClientHandler.setSecurityHttpsCertificateTrust(SECURITY_HTTPS_CERTIFICATE_TRUST);
     }
 
+    @After
+    public void close() {
+        mockedRestClients.close();
+    }
+
     @Test
     public void createRestClient_when_deployment_env_is_saas() {
         ClusterSettings clusterSettings = new ClusterSettings("H", 1, "U:P");
@@ -102,5 +108,3 @@ public class ElasticClientHandlerTest {
         this.elasticClientHandler.createRestClient();
     }
 }
-
-
diff --git a/indexer-core/src/test/java/org/opengroup/osdu/indexer/util/geo/decimator/GeoShapeDecimatorTest.java b/indexer-core/src/test/java/org/opengroup/osdu/indexer/util/geo/decimator/GeoShapeDecimatorTest.java
index bed108e2f89af157c7d4c2afce2d1ad93d9a15d2..d32cf0e24afe3014800ce1c7b3832ce2825d9d8a 100644
--- a/indexer-core/src/test/java/org/opengroup/osdu/indexer/util/geo/decimator/GeoShapeDecimatorTest.java
+++ b/indexer-core/src/test/java/org/opengroup/osdu/indexer/util/geo/decimator/GeoShapeDecimatorTest.java
@@ -38,7 +38,7 @@ import java.util.Map;
 import static org.junit.jupiter.api.Assertions.assertFalse;
 import static org.junit.jupiter.api.Assertions.assertTrue;
 import static org.mockito.ArgumentMatchers.any;
-import static org.powermock.api.mockito.PowerMockito.doAnswer;
+import static org.mockito.Mockito.doAnswer;
 
 @RunWith(SpringRunner.class)
 public class GeoShapeDecimatorTest {
diff --git a/indexer-core/src/test/java/org/opengroup/osdu/indexer/util/geo/decimator/GeometryDecimatorTest.java b/indexer-core/src/test/java/org/opengroup/osdu/indexer/util/geo/decimator/GeometryDecimatorTest.java
index bd675e2a5fd98ee09b19de8ef47d269a712a0950..a3eda1658d4342aa70cda58dfb46a968bd8aca44 100644
--- a/indexer-core/src/test/java/org/opengroup/osdu/indexer/util/geo/decimator/GeometryDecimatorTest.java
+++ b/indexer-core/src/test/java/org/opengroup/osdu/indexer/util/geo/decimator/GeometryDecimatorTest.java
@@ -43,7 +43,7 @@ import static org.junit.jupiter.api.Assertions.assertFalse;
 import static org.junit.jupiter.api.Assertions.assertTrue;
 import static org.mockito.ArgumentMatchers.anyDouble;
 import static org.mockito.ArgumentMatchers.anyList;
-import static org.powermock.api.mockito.PowerMockito.doAnswer;
+import static org.mockito.Mockito.doAnswer;
 
 @RunWith(SpringRunner.class)
 public class GeometryDecimatorTest {
diff --git a/pom.xml b/pom.xml
index 9f3a548e4bf3299c8c3bdefe3297f87d65f91381..8786c9429cb9c8ad4c5fc31d0486ba04ccb4c3fe 100644
--- a/pom.xml
+++ b/pom.xml
@@ -9,11 +9,11 @@
     <description>Indexer Service</description>
 
     <properties>
-        <java.version>1.8</java.version>
-        <maven.compiler.target>1.8</maven.compiler.target>
-        <maven.compiler.source>1.8</maven.compiler.source>
+        <java.version>17</java.version>
+        <maven.compiler.target>17</maven.compiler.target>
+        <maven.compiler.source>17</maven.compiler.source>
         <spring-cloud.version>Greenwich.SR2</spring-cloud.version>
-        <os-core-common.version>0.21.0</os-core-common.version>
+        <os-core-common.version>0.22.0-rc4</os-core-common.version>
         <snakeyaml.version>2.0</snakeyaml.version>
         <hibernate-validator.version>6.1.5.Final</hibernate-validator.version>
         <jackson-databind.version>2.14.1</jackson-databind.version>
@@ -256,7 +256,7 @@
             <plugin>
                 <groupId>org.jacoco</groupId>
                 <artifactId>jacoco-maven-plugin</artifactId>
-                <version>0.8.3</version>
+                <version>0.8.10</version>
                 <executions>
                 <execution>
                     <goals>
diff --git a/provider/indexer-aws/README.md b/provider/indexer-aws/README.md
index 01b9d492c12801e3b6adfb002eabff7b3ae2a3d2..c7ce9c86485c059e53af5bea69c9b432d0e9f853 100644
--- a/provider/indexer-aws/README.md
+++ b/provider/indexer-aws/README.md
@@ -8,9 +8,9 @@ These instructions will get you a copy of the project up and running on your loc
 ### Prerequisites
 Pre-requisites
 
-* JDK 8 (https://docs.aws.amazon.com/corretto/latest/corretto-8-ug/downloads-list.html)
+* JDK 17 (https://docs.aws.amazon.com/corretto/latest/corretto-8-ug/downloads-list.html)
 * Maven 3.8.3 or later
-* Lombok 1.16 or later
+* Lombok 1.28 or later
 * OSDU Instance deployed on AWS
 
 ### Service Configuration
@@ -44,7 +44,7 @@ example:
 $ mvn --version
 Apache Maven 3.8.3 (ff8e977a158738155dc465c6a97ffaf31982d739)
 Maven home: /usr/local/Cellar/maven/3.8.3/libexec
-Java version: 1.8.0_312, vendor: Amazon.com Inc., runtime: /Library/Java/JavaVirtualMachines/amazon-corretto-8.jdk/Contents/Home/jre
+Java version: 17.0.7, vendor: Amazon.com Inc.
 ...
 ```
 
diff --git a/provider/indexer-aws/build-aws/Dockerfile b/provider/indexer-aws/build-aws/Dockerfile
index 2885b3f2ed9c1ac30a89b0c99d351c57b5fdedbf..42259f386334d5969f0ec2a91afb02e527ad695f 100644
--- a/provider/indexer-aws/build-aws/Dockerfile
+++ b/provider/indexer-aws/build-aws/Dockerfile
@@ -13,7 +13,7 @@
 # limitations under the License.
 
 # https://docs.spring.io/spring-boot/docs/current/reference/html/deployment.html
-FROM amazoncorretto:8
+FROM amazoncorretto:17
 
 ARG JAR_FILE=provider/indexer-aws/target/*spring-boot.jar
 
@@ -23,4 +23,4 @@ COPY ${JAR_FILE} app.jar
 COPY /provider/indexer-aws/build-aws/entrypoint.sh /entrypoint.sh
 EXPOSE 8080
 
-ENTRYPOINT ["/bin/sh", "-c", ". /entrypoint.sh"]
\ No newline at end of file
+ENTRYPOINT ["/bin/sh", "-c", ". /entrypoint.sh"]
diff --git a/provider/indexer-aws/build-aws/buildspec.yaml b/provider/indexer-aws/build-aws/buildspec.yaml
index 9fb114e537457c8e2fd1fafa5479361759f9412a..966c6201a9a50caef7d817c725536fbac697728e 100644
--- a/provider/indexer-aws/build-aws/buildspec.yaml
+++ b/provider/indexer-aws/build-aws/buildspec.yaml
@@ -30,10 +30,8 @@ env:
 phases:
   install:
     runtime-versions:
-      java: corretto8
+      java: corretto17
     commands:
-      # fix error noted here: https://github.com/yarnpkg/yarn/issues/7866
-      - curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | apt-key add -
       - if [ $(echo $CODEBUILD_SOURCE_VERSION | grep -c  ^refs/heads.*) -eq 1 ]; then echo "Branch name found"; else echo "This build only supports branch builds" && exit 1; fi
       - apt-get update -y
       - apt-get install -y maven
@@ -45,17 +43,15 @@ phases:
       - export AWS_ACCOUNT_ID=`aws sts get-caller-identity | grep Account | cut -d':' -f 2 | cut -d'"' -f 2`
       - export AWS_OSDU_DEV_MAVEN_AUTH_TOKEN=`aws codeartifact get-authorization-token --domain $AWS_OSDU_DEV_MAVEN_DOMAIN --domain-owner $AWS_ACCOUNT_ID --query authorizationToken --output text`
       # Install git secrets
-      #TODO temporarily adding hotfix, due to https://github.com/awslabs/git-secrets/issues/220
-      - export SAY_LOCATION=`ln -s "$(which echo)" say`
-      - export PATH="$PATH:$SAY_LOCATION"
-
       - git clone https://github.com/awslabs/git-secrets.git
       - cd git-secrets && make install && cd ..
       - git secrets --install && git secrets --register-aws
   pre_build:
     commands:
       - echo "Logging in to Amazon ECR..."
-      - $(aws ecr get-login --no-include-email --region $AWS_REGION) # authenticate with ECR via the AWS CLI
+      - aws ecr get-login-password --region us-east-1 | docker login --username AWS --password-stdin ${ECR_REGISTRY}
+      - echo "Logging into Docker Hub..."
+      - docker login -u ${DOCKER_USERNAME} -p ${DOCKER_PASSWORD}
   build:
     commands:
       - export REPO_NAME=${PWD##*/}
@@ -86,9 +82,6 @@ phases:
       - echo "--Copying Helm Charts to ${OUTPUT_DIR:-dist}--"
       - rsync -r devops/aws/* "${OUTPUT_DIR:-dist}"
 
-      - echo "Logging into Docker Hub..."
-      - docker login -u ${DOCKER_USERNAME} -p ${DOCKER_PASSWORD}
-
       - echo "Building docker image..."
       - docker build -f provider/indexer-aws/build-aws/Dockerfile -t ${ECR_IMAGE} .
       - docker tag  ${ECR_IMAGE} ${ECR_IMAGE_BRANCH_LATEST}
diff --git a/provider/indexer-aws/build-aws/entrypoint.sh b/provider/indexer-aws/build-aws/entrypoint.sh
index 412f71afd92e9c2ed3e50a2863cb5675c8a69b43..aaa9f8f93e6e4fc6f919c2c68d75689ccba1a8f4 100755
--- a/provider/indexer-aws/build-aws/entrypoint.sh
+++ b/provider/indexer-aws/build-aws/entrypoint.sh
@@ -1,4 +1,4 @@
 
 
 
-java $JAVA_OPTS -jar /app.jar
\ No newline at end of file
+java $JAVA_OPTS --add-opens java.base/java.lang=ALL-UNNAMED --add-opens java.base/java.lang.reflect=ALL-UNNAMED -jar /app.jar
diff --git a/provider/indexer-aws/pom.xml b/provider/indexer-aws/pom.xml
index bfb455e7a250fd68e21b0c36a1b458f35c7d5155..a379f9358d366c783eebf356caeb831d53b6268e 100644
--- a/provider/indexer-aws/pom.xml
+++ b/provider/indexer-aws/pom.xml
@@ -34,7 +34,8 @@
       <netty.version>4.1.51.Final</netty.version>
       <jackson-databind.version>2.13.2.2</jackson-databind.version>
       <jackson.version>2.13.2</jackson.version>
-    <spring-webmvc.version>5.3.22</spring-webmvc.version>
+      <spring-webmvc.version>5.3.22</spring-webmvc.version>
+      <argLine>--add-opens java.base/java.lang=ALL-UNNAMED</argLine>
   </properties>
 
   <dependencyManagement>
@@ -157,7 +158,7 @@
     <dependency>
       <groupId>junit</groupId>
       <artifactId>junit</artifactId>
-      <version>4.12</version>
+      <version>4.13.2</version>
       <scope>test</scope>
     </dependency>
     <dependency>
@@ -166,11 +167,6 @@
       <version>1.10.19</version>
       <scope>test</scope>
     </dependency>
-    <dependency>
-      <groupId>org.powermock</groupId>
-      <artifactId>powermock-module-junit4</artifactId>
-      <version>2.0.2</version>
-    </dependency>
   <dependency>
     <groupId>org.springframework.boot</groupId>
     <artifactId>spring-boot-starter-test</artifactId>
diff --git a/provider/indexer-azure/README.md b/provider/indexer-azure/README.md
index 03a4a114ea9dad4923f4289cba4b59f152c0acd8..6aec4046b219903eadfb7c10987d3a9994bb85aa 100644
--- a/provider/indexer-azure/README.md
+++ b/provider/indexer-azure/README.md
@@ -8,8 +8,8 @@ os-indexer-azure is a [Spring Boot](https://spring.io/projects/spring-boot) serv
 
 In order to run this service locally, you will need the following:
 
-- [Maven 3.6.0+](https://maven.apache.org/download.cgi)
-- [AdoptOpenJDK8](https://adoptopenjdk.net/)
+- [Maven 3.8.0+](https://maven.apache.org/download.cgi)
+- [Java 17](https://adoptopenjdk.net/)
 - Infrastructure dependencies, deployable through the relevant [infrastructure template](https://community.opengroup.org/osdu/platform/deployment-and-operations/infra-azure-provisioning/-/blob/master/docs/service-automation.md)
 - While not a strict dependency, example commands in this document use [bash](https://www.gnu.org/software/bash/)
 
@@ -92,9 +92,9 @@ az keyvault secret show --vault-name $KEY_VAULT_NAME --name $KEY_VAULT_SECRET_NA
 Check that maven is installed:
 ```bash
 $ mvn --version
-Apache Maven 3.6.0
+Apache Maven 3.8.0
 Maven home: /usr/share/maven
-Java version: 1.8.0_212, vendor: AdoptOpenJDK, runtime: /usr/lib/jvm/jdk8u212-b04/jre
+Java version: 17.0.7
 ...
 ```
 
@@ -113,7 +113,7 @@ $ (cd provider/indexer-azure/ && mvn clean package)
 #
 # Note: this assumes that the environment variables for running the service as outlined
 #       above are already exported in your environment.
-$ java -jar $(find provider/indexer-azure/target/ -name *-spring-boot.jar)
+$ java -jar $(find provider/indexer-azure/target/ -name *-spring-boot.jar) --add-opens java.base/java.lang=ALL-UNNAMED --add-opens  java.base/java.lang.reflect=ALL-UNNAMED
 
 # Alternately you can run using the Mavan Task
 $ mvn spring-boot:run
diff --git a/provider/indexer-azure/pom.xml b/provider/indexer-azure/pom.xml
index 6dd9ec5fe6dd40cf2a6f4fcf7d5bcd3f575d926e..bae0cf4e82aa84919e6fc9bab1e2642b92da202b 100644
--- a/provider/indexer-azure/pom.xml
+++ b/provider/indexer-azure/pom.xml
@@ -42,10 +42,9 @@
         <indexer-core.version>0.23.0-SNAPSHOT</indexer-core.version>
         <spring-security-jwt.version>1.1.1.RELEASE</spring-security-jwt.version>
         <osdu.corelibazure.version>0.20.0-rc5</osdu.corelibazure.version>
-        <os-core-common.version>0.21.0</os-core-common.version>
+        <os-core-common.version>0.22.0-rc4</os-core-common.version>
         <reactor-netty.version>0.9.12.RELEASE</reactor-netty.version>
         <java-jwt.version>3.8.1</java-jwt.version>
-        <powermock.version>2.0.2</powermock.version>
         <mockito.version>3.11.2</mockito.version>
         <cobertura-maven-plugin.version>2.7</cobertura-maven-plugin.version>
         <spring-security-oauth2.version>2.3.6.RELEASE</spring-security-oauth2.version>
@@ -293,21 +292,6 @@
             <artifactId>junit</artifactId>
             <scope>test</scope>
         </dependency>
-        <!-- https://mvnrepository.com/artifact/org.powermock/powermock-api-mockito2 -->
-        <dependency>
-            <groupId>org.powermock</groupId>
-            <artifactId>powermock-api-mockito2</artifactId>
-            <version>${powermock.version}</version>
-            <scope>test</scope>
-        </dependency>
-
-        <!-- https://mvnrepository.com/artifact/org.powermock/powermock-module-junit4 -->
-        <dependency>
-            <groupId>org.powermock</groupId>
-            <artifactId>powermock-module-junit4</artifactId>
-            <version>${powermock.version}</version>
-            <scope>test</scope>
-        </dependency>
         <dependency>
             <groupId>org.mockito</groupId>
             <artifactId>mockito-core</artifactId>
@@ -319,6 +303,18 @@
             <artifactId>cobertura-maven-plugin</artifactId>
             <version>${cobertura-maven-plugin.version}</version>
             <scope>test</scope>
+            <exclusions>
+                <exclusion>
+                    <groupId>com.sun</groupId>
+                    <artifactId>tools</artifactId>
+                </exclusion>
+            </exclusions>
+        </dependency>
+        <dependency>
+            <groupId>org.projectlombok</groupId>
+            <artifactId>lombok</artifactId>
+            <version>1.18.26</version>
+            <scope>provided</scope>
         </dependency>
         <dependency>
 			<groupId>xerces</groupId>
@@ -397,7 +393,7 @@
             <plugin>
                 <groupId>org.jacoco</groupId>
                 <artifactId>jacoco-maven-plugin</artifactId>
-                <version>0.8.2</version>
+                <version>0.8.10</version>
                 <executions>
                     <execution>
                         <goals>
@@ -447,7 +443,7 @@
             <plugin>
                 <groupId>org.apache.maven.plugins</groupId>
                 <artifactId>maven-surefire-plugin</artifactId>
-                <version>2.4.2</version>
+                <version>3.0.0</version>
                 <configuration>
                   <useSystemClassLoader>false</useSystemClassLoader>
                   <threadCount>1</threadCount>
diff --git a/provider/indexer-azure/src/test/java/org/opengroup/osdu/indexer/azure/service/CronServiceImplTest.java b/provider/indexer-azure/src/test/java/org/opengroup/osdu/indexer/azure/service/CronServiceImplTest.java
index 4e14ed7038f7073a798c5c89a7addfd50c20ea81..9aacba3c2cab5f10db475129866acc7400a24233 100644
--- a/provider/indexer-azure/src/test/java/org/opengroup/osdu/indexer/azure/service/CronServiceImplTest.java
+++ b/provider/indexer-azure/src/test/java/org/opengroup/osdu/indexer/azure/service/CronServiceImplTest.java
@@ -30,7 +30,6 @@ import org.opengroup.osdu.core.common.model.search.IndexInfo;
 import org.opengroup.osdu.core.common.provider.interfaces.IRequestInfo;
 import org.opengroup.osdu.indexer.service.IndicesService;
 import org.opengroup.osdu.indexer.util.ElasticClientHandler;
-import org.powermock.core.classloader.annotations.PrepareForTest;
 import org.springframework.test.context.junit4.SpringRunner;
 
 import java.io.IOException;
@@ -43,7 +42,6 @@ import static org.mockito.Mockito.*;
 
 @Ignore
 @RunWith(SpringRunner.class)
-@PrepareForTest({RestHighLevelClient.class})
 public class CronServiceImplTest {
 
     @Mock
@@ -139,4 +137,4 @@ public class CronServiceImplTest {
 
         verify(this.indicesService, times(0)).deleteIndex(any(), any());
     }
-}
\ No newline at end of file
+}
diff --git a/provider/indexer-azure/src/test/java/org/opengroup/osdu/indexer/azure/service/IndexerMappingServiceTest.java b/provider/indexer-azure/src/test/java/org/opengroup/osdu/indexer/azure/service/IndexerMappingServiceTest.java
index faf5b53af92eb0b65bf15667c577307a09964c3e..4eacdf60f3a2f8774e3b4bf984983c4c2eebdb07 100644
--- a/provider/indexer-azure/src/test/java/org/opengroup/osdu/indexer/azure/service/IndexerMappingServiceTest.java
+++ b/provider/indexer-azure/src/test/java/org/opengroup/osdu/indexer/azure/service/IndexerMappingServiceTest.java
@@ -32,8 +32,6 @@ import org.mockito.Mock;
 import org.opengroup.osdu.core.common.model.indexer.IndexSchema;
 import org.opengroup.osdu.core.common.model.search.RecordMetaAttribute;
 import org.opengroup.osdu.indexer.service.IndexerMappingServiceImpl;
-import org.powermock.api.mockito.PowerMockito;
-import org.powermock.core.classloader.annotations.PrepareForTest;
 import org.springframework.test.context.junit4.SpringRunner;
 
 import java.io.IOException;
@@ -43,11 +41,12 @@ import java.util.Map;
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.fail;
 import static org.mockito.Mockito.doReturn;
-import static org.powermock.api.mockito.PowerMockito.when;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.spy;
+import static org.mockito.Mockito.when;
 
 @Ignore
 @RunWith(SpringRunner.class)
-@PrepareForTest({RestHighLevelClient.class, IndicesClient.class})
 public class IndexerMappingServiceTest {
 
     private final String kind = "tenant:test:test:1.0.0";
@@ -85,8 +84,8 @@ public class IndexerMappingServiceTest {
         this.indexSchema = IndexSchema.builder().kind(kind).type(type).dataSchema(dataMapping).metaSchema(metaMapping)
                 .build();
 
-        this.indicesClient = PowerMockito.mock(IndicesClient.class);
-        this.restHighLevelClient = PowerMockito.mock(RestHighLevelClient.class);
+        this.indicesClient = mock(IndicesClient.class);
+        this.restHighLevelClient = mock(RestHighLevelClient.class);
 
         when(this.restHighLevelClient.getLowLevelClient()).thenReturn(restClient);
         when(this.restClient.performRequest(ArgumentMatchers.any())).thenReturn(response);
@@ -123,7 +122,7 @@ public class IndexerMappingServiceTest {
             doReturn(this.indicesClient).when(this.restHighLevelClient).indices();
             doReturn(mappingResponse).when(this.indicesClient).putMapping(ArgumentMatchers.any(PutMappingRequest.class), ArgumentMatchers.any(RequestOptions.class));
 
-            IndexerMappingServiceImpl indexerMappingServiceLocal = PowerMockito.spy(new IndexerMappingServiceImpl());
+            IndexerMappingServiceImpl indexerMappingServiceLocal = spy(new IndexerMappingServiceImpl());
             doReturn(false).when(indexerMappingServiceLocal).isTypeExist(ArgumentMatchers.any(), ArgumentMatchers.any(), ArgumentMatchers.any());
             String mapping = this.sut.createMapping(this.restHighLevelClient, this.indexSchema, this.index, true);
             assertEquals(this.mappingValid, mapping);
diff --git a/provider/indexer-azure/src/test/java/org/opengroup/osdu/indexer/azure/service/PublisherImplTest.java b/provider/indexer-azure/src/test/java/org/opengroup/osdu/indexer/azure/service/PublisherImplTest.java
index cd3f7333d33ef68caeb1b70c65eece302d917095..04c75b92d3defea4af9d5f61578156fae3207628 100644
--- a/provider/indexer-azure/src/test/java/org/opengroup/osdu/indexer/azure/service/PublisherImplTest.java
+++ b/provider/indexer-azure/src/test/java/org/opengroup/osdu/indexer/azure/service/PublisherImplTest.java
@@ -8,10 +8,7 @@ import org.opengroup.osdu.core.common.logging.JaxRsDpsLog;
 import org.opengroup.osdu.core.common.model.http.DpsHeaders;
 import org.opengroup.osdu.core.common.model.indexer.JobStatus;
 import org.opengroup.osdu.indexer.azure.publish.PublisherImpl;
-import org.powermock.modules.junit4.PowerMockRunner;
-
-import javax.inject.Inject;
-import javax.inject.Named;
+import org.mockito.junit.MockitoJUnitRunner;
 import java.util.HashMap;
 import java.util.Map;
 
@@ -19,7 +16,7 @@ import static org.mockito.Mockito.never;
 import static org.mockito.Mockito.verify;
 
 
-@RunWith(PowerMockRunner.class)
+@RunWith(MockitoJUnitRunner.class)
 public class PublisherImplTest {
     @InjectMocks
     private PublisherImpl publisher = new PublisherImpl();
diff --git a/provider/indexer-azure/src/test/java/org/opengroup/osdu/indexer/azure/service/ReindexServiceTest.java b/provider/indexer-azure/src/test/java/org/opengroup/osdu/indexer/azure/service/ReindexServiceTest.java
index 4cca1d431c0374d040ab8945f15ca4fb35b57c2c..6e6e52d896ae6712c93b7957b7947fc7c0002ae4 100644
--- a/provider/indexer-azure/src/test/java/org/opengroup/osdu/indexer/azure/service/ReindexServiceTest.java
+++ b/provider/indexer-azure/src/test/java/org/opengroup/osdu/indexer/azure/service/ReindexServiceTest.java
@@ -15,6 +15,7 @@
 package org.opengroup.osdu.indexer.azure.service;
 
 
+import org.junit.After;
 import org.junit.Assert;
 import org.junit.Before;
 import org.junit.Ignore;
@@ -23,6 +24,7 @@ import org.junit.runner.RunWith;
 import org.mockito.ArgumentMatchers;
 import org.mockito.InjectMocks;
 import org.mockito.Mock;
+import org.mockito.MockedStatic;
 import org.opengroup.osdu.core.common.model.http.DpsHeaders;
 import org.opengroup.osdu.core.common.model.indexer.RecordQueryResponse;
 import org.opengroup.osdu.core.common.model.indexer.RecordReindexRequest;
@@ -33,24 +35,23 @@ import org.opengroup.osdu.indexer.service.ReindexServiceImpl;
 import org.opengroup.osdu.indexer.service.StorageService;
 import org.opengroup.osdu.indexer.util.IndexerQueueTaskBuilder;
 import org.opengroup.osdu.core.common.provider.interfaces.IRequestInfo;
-import org.powermock.modules.junit4.PowerMockRunner;
-import org.powermock.modules.junit4.PowerMockRunnerDelegate;
-import org.springframework.test.context.junit4.SpringRunner;
+import org.mockito.junit.MockitoJUnitRunner;
 
 import java.net.URISyntaxException;
 import java.util.*;
 
 import static org.junit.Assert.fail;
+import static org.mockito.Mockito.mockStatic;
 import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.when;
 import static org.mockito.MockitoAnnotations.initMocks;
-import static org.powermock.api.mockito.PowerMockito.mockStatic;
-import static org.powermock.api.mockito.PowerMockito.when;
 
 @Ignore
-@RunWith(PowerMockRunner.class)
-@PowerMockRunnerDelegate(SpringRunner.class)
+@RunWith(MockitoJUnitRunner.class)
 public class ReindexServiceTest {
 
+    private static MockedStatic<UUID> mockedUUIDs;
+
     private final String cursor = "100";
 
     private final String correlationId = UUID.randomUUID().toString();
@@ -79,7 +80,7 @@ public class ReindexServiceTest {
     public void setup() {
         initMocks(this);
 
-        mockStatic(UUID.class);
+        mockedUUIDs = mockStatic(UUID.class);
 
         recordReindexRequest = RecordReindexRequest.builder().kind("tenant:test:test:1.0.0").cursor(cursor).build();
         recordQueryResponse = new RecordQueryResponse();
@@ -92,6 +93,11 @@ public class ReindexServiceTest {
         when(requestInfo.getHeadersMapWithDwdAuthZ()).thenReturn(httpHeaders);
     }
 
+    @After
+    public void close() {
+        mockedUUIDs.close();
+    }
+
     @Test
     public void should_returnNull_givenNullResponseResult_reIndexRecordsTest() {
         try {
diff --git a/provider/indexer-azure/src/test/java/org/opengroup/osdu/indexer/azure/util/RequestInfoImplTest.java b/provider/indexer-azure/src/test/java/org/opengroup/osdu/indexer/azure/util/RequestInfoImplTest.java
index b9abb87b68e61f9c3078e25f4abec6dfde23e042..db860cf1310506baa9a9d146f63fe1108ead600e 100644
--- a/provider/indexer-azure/src/test/java/org/opengroup/osdu/indexer/azure/util/RequestInfoImplTest.java
+++ b/provider/indexer-azure/src/test/java/org/opengroup/osdu/indexer/azure/util/RequestInfoImplTest.java
@@ -15,7 +15,7 @@ import java.util.*;
 import static junit.framework.TestCase.*;
 import static org.mockito.Mockito.times;
 import static org.mockito.Mockito.verify;
-import static org.powermock.api.mockito.PowerMockito.when;
+import static org.mockito.Mockito.when;
 
 @RunWith(MockitoJUnitRunner.class)
 public class RequestInfoImplTest {
diff --git a/provider/indexer-gc/cloudbuild/Dockerfile.cloudbuild b/provider/indexer-gc/cloudbuild/Dockerfile.cloudbuild
index 3ebc13d397e1af9ee4e2cb1324d904c7017123fe..101e50f3f6618144c5a19017a9c5e08429737c1e 100644
--- a/provider/indexer-gc/cloudbuild/Dockerfile.cloudbuild
+++ b/provider/indexer-gc/cloudbuild/Dockerfile.cloudbuild
@@ -1,4 +1,4 @@
-FROM azul/zulu-openjdk:8-latest
+FROM azul/zulu-openjdk:17
 
 WORKDIR /app
 
@@ -19,4 +19,5 @@ RUN groupadd -g 10001 -r nonroot \
 USER 10001:10001
 
 # Run the web service on container startup.
-CMD java -Djava.security.egd=indexer:/dev/./urandom -Dserver.port=${PORT} -Dlog4j.formatMsgNoLookups=true -jar /app/indexer-${PROVIDER_NAME}.jar
+#--add-opens args used to open modules and allow illegal(reflection\private classes and fields) access from the code.
+CMD java --add-opens java.base/java.lang=ALL-UNNAMED --add-opens java.base/java.lang.reflect=ALL-UNNAMED -Djava.security.egd=indexer:/dev/./urandom -Dserver.port=${PORT} -Dlog4j.formatMsgNoLookups=true -jar /app/indexer-${PROVIDER_NAME}.jar
diff --git a/provider/indexer-gc/docs/anthos/README.md b/provider/indexer-gc/docs/baremetal/README.md
similarity index 98%
rename from provider/indexer-gc/docs/anthos/README.md
rename to provider/indexer-gc/docs/baremetal/README.md
index e8755d005d7663280058ff087e742b09a12e415a..270fa50708bab4c0087ea77c4a9a4a338e7abdec 100644
--- a/provider/indexer-gc/docs/anthos/README.md
+++ b/provider/indexer-gc/docs/baremetal/README.md
@@ -1,5 +1,19 @@
 ## Service Configuration for Anthos
 
+## Run args
+
+In order to run Indexer with Java 17 additional run args must be provided:
+
+```bash
+--add-opens java.base/java.lang=ALL-UNNAMED --add-opens  java.base/java.lang.reflect=ALL-UNNAMED
+```
+
+Full command:
+
+```bash
+java -jar indexer.jar --add-opens java.base/java.lang=ALL-UNNAMED --add-opens java.base/java.lang.reflect=ALL-UNNAMED
+```
+
 ## Environment variables:
 
 Define the following environment variables.
diff --git a/provider/indexer-gc/docs/anthos/pics/client.png b/provider/indexer-gc/docs/baremetal/pics/client.png
similarity index 100%
rename from provider/indexer-gc/docs/anthos/pics/client.png
rename to provider/indexer-gc/docs/baremetal/pics/client.png
diff --git a/provider/indexer-gc/docs/anthos/pics/indexer.png b/provider/indexer-gc/docs/baremetal/pics/indexer.png
similarity index 100%
rename from provider/indexer-gc/docs/anthos/pics/indexer.png
rename to provider/indexer-gc/docs/baremetal/pics/indexer.png
diff --git a/provider/indexer-gc/docs/anthos/pics/rabbit.PNG b/provider/indexer-gc/docs/baremetal/pics/rabbit.PNG
similarity index 100%
rename from provider/indexer-gc/docs/anthos/pics/rabbit.PNG
rename to provider/indexer-gc/docs/baremetal/pics/rabbit.PNG
diff --git a/provider/indexer-gc/docs/anthos/pics/sa.png b/provider/indexer-gc/docs/baremetal/pics/sa.png
similarity index 100%
rename from provider/indexer-gc/docs/anthos/pics/sa.png
rename to provider/indexer-gc/docs/baremetal/pics/sa.png
diff --git a/provider/indexer-gc/docs/gc/README.md b/provider/indexer-gc/docs/gc/README.md
index cac8344500587a8fbcf827ba972527f54f280499..97c9c832c9fc65c2cfce882a0772a00ac5f04c0f 100644
--- a/provider/indexer-gc/docs/gc/README.md
+++ b/provider/indexer-gc/docs/gc/README.md
@@ -1,5 +1,19 @@
 ## Service Configuration for Google Cloud
 
+## Run args
+
+In order to run Indexer with Java 17 additional run args must be provided:
+
+```bash
+--add-opens java.base/java.lang=ALL-UNNAMED --add-opens  java.base/java.lang.reflect=ALL-UNNAMED
+```
+
+Full command:
+
+```bash
+java -jar indexer.jar --add-opens java.base/java.lang=ALL-UNNAMED --add-opens java.base/java.lang.reflect=ALL-UNNAMED
+```
+
 ## Environment variables
 
 Define the following environment variables.
@@ -42,7 +56,7 @@ Usage of spring profiles is preferred.
 
 ## Pubsub configuration
 
-![Screenshot](../anthos/pics/indexer.png)
+![Screenshot](../baremetal/pics/indexer.png)
 
 Pubsub should have topics and subscribers with names and configs:
 
diff --git a/provider/indexer-gc/pom.xml b/provider/indexer-gc/pom.xml
index 3f448207e76f92f47caaf503a48ed232f00e070d..95c57efbd03ec0966dae22083cd966606438d4a1 100644
--- a/provider/indexer-gc/pom.xml
+++ b/provider/indexer-gc/pom.xml
@@ -95,20 +95,6 @@
             <version>4.12</version>
             <scope>test</scope>
         </dependency>
-        <!-- https://mvnrepository.com/artifact/org.powermock/powermock-api-mockito2 -->
-        <dependency>
-            <groupId>org.powermock</groupId>
-            <artifactId>powermock-api-mockito2</artifactId>
-            <version>2.0.2</version>
-            <scope>test</scope>
-        </dependency>
-        <!-- https://mvnrepository.com/artifact/org.powermock/powermock-module-junit4 -->
-        <dependency>
-            <groupId>org.powermock</groupId>
-            <artifactId>powermock-module-junit4</artifactId>
-            <version>2.0.2</version>
-            <scope>test</scope>
-        </dependency>
         <dependency>
             <groupId>org.mockito</groupId>
             <artifactId>mockito-core</artifactId>
@@ -120,6 +106,18 @@
             <artifactId>cobertura-maven-plugin</artifactId>
             <version>2.7</version>
             <scope>test</scope>
+            <exclusions>
+                <exclusion>
+                    <groupId>com.sun</groupId>
+                    <artifactId>tools</artifactId>
+                </exclusion>
+            </exclusions>
+        </dependency>
+        <dependency>
+            <groupId>org.projectlombok</groupId>
+            <artifactId>lombok</artifactId>
+            <version>1.18.26</version>
+            <scope>provided</scope>
         </dependency>
         <dependency>
             <groupId>org.codehaus.plexus</groupId>
@@ -196,7 +194,7 @@
             <plugin>
                 <groupId>org.apache.maven.plugins</groupId>
                 <artifactId>maven-surefire-plugin</artifactId>
-                <version>2.4.2</version>
+                <version>3.0.0</version>
                 <configuration>
                   <useSystemClassLoader>false</useSystemClassLoader>
                   <threadCount>1</threadCount>
@@ -205,7 +203,7 @@
             <plugin>
 				<groupId>org.jacoco</groupId>
 				<artifactId>jacoco-maven-plugin</artifactId>
-				<version>0.7.7.201606060606</version>
+				<version>0.8.10</version>
 				<executions>
 					<execution>
 						<goals>
diff --git a/provider/indexer-gc/src/test/java/org/opengroup/osdu/indexer/service/CronServiceImplTest.java b/provider/indexer-gc/src/test/java/org/opengroup/osdu/indexer/service/CronServiceImplTest.java
index 1038c1f9376f8a0a877700394633e0340c2e2018..3c2c82581b1e6b5ac16e9a8fb4ec403f0ffef072 100644
--- a/provider/indexer-gc/src/test/java/org/opengroup/osdu/indexer/service/CronServiceImplTest.java
+++ b/provider/indexer-gc/src/test/java/org/opengroup/osdu/indexer/service/CronServiceImplTest.java
@@ -27,7 +27,6 @@ import org.opengroup.osdu.core.common.logging.JaxRsDpsLog;
 import org.opengroup.osdu.core.common.provider.interfaces.IRequestInfo;
 import org.opengroup.osdu.indexer.config.IndexerConfigurationProperties;
 import org.opengroup.osdu.indexer.util.ElasticClientHandler;
-import org.powermock.core.classloader.annotations.PrepareForTest;
 import org.springframework.test.context.junit4.SpringRunner;
 
 import java.io.IOException;
@@ -38,7 +37,6 @@ import static org.mockito.Mockito.*;
 
 
 @RunWith(SpringRunner.class)
-@PrepareForTest({RestHighLevelClient.class})
 public class CronServiceImplTest {
 
     @Mock
@@ -133,4 +131,4 @@ public class CronServiceImplTest {
 
         verify(this.indicesService, times(0)).deleteIndex(any(), any());
     }
-}
\ No newline at end of file
+}
diff --git a/provider/indexer-gc/src/test/java/org/opengroup/osdu/indexer/service/IndexerMappingServiceTest.java b/provider/indexer-gc/src/test/java/org/opengroup/osdu/indexer/service/IndexerMappingServiceTest.java
index 4d77b8d4ce9bf63cdca9c36ec0b5cd77a8c0f304..a7dbfec5d0056577008a596b26341525b91c75f4 100644
--- a/provider/indexer-gc/src/test/java/org/opengroup/osdu/indexer/service/IndexerMappingServiceTest.java
+++ b/provider/indexer-gc/src/test/java/org/opengroup/osdu/indexer/service/IndexerMappingServiceTest.java
@@ -17,8 +17,6 @@ import org.mockito.InjectMocks;
 import org.mockito.Mock;
 import org.opengroup.osdu.core.common.model.indexer.IndexSchema;
 import org.opengroup.osdu.core.common.model.search.RecordMetaAttribute;
-import org.powermock.api.mockito.PowerMockito;
-import org.powermock.core.classloader.annotations.PrepareForTest;
 import org.springframework.test.context.junit4.SpringRunner;
 
 import java.io.IOException;
@@ -28,11 +26,12 @@ import java.util.Map;
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.fail;
 import static org.mockito.Mockito.doReturn;
-import static org.powermock.api.mockito.PowerMockito.when;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.spy;
+import static org.mockito.Mockito.when;
 
 @Ignore
 @RunWith(SpringRunner.class)
-@PrepareForTest({RestHighLevelClient.class, IndicesClient.class})
 public class IndexerMappingServiceTest {
 
     private final String kind = "tenant:test:test:1.0.0";
@@ -70,8 +69,8 @@ public class IndexerMappingServiceTest {
         this.indexSchema = IndexSchema.builder().kind(kind).type(type).dataSchema(dataMapping).metaSchema(metaMapping)
                 .build();
 
-        this.indicesClient = PowerMockito.mock(IndicesClient.class);
-        this.restHighLevelClient = PowerMockito.mock(RestHighLevelClient.class);
+        this.indicesClient = mock(IndicesClient.class);
+        this.restHighLevelClient = mock(RestHighLevelClient.class);
 
         when(this.restHighLevelClient.getLowLevelClient()).thenReturn(restClient);
         when(this.restClient.performRequest(ArgumentMatchers.any())).thenReturn(response);
@@ -108,7 +107,7 @@ public class IndexerMappingServiceTest {
             doReturn(this.indicesClient).when(this.restHighLevelClient).indices();
             doReturn(mappingResponse).when(this.indicesClient).putMapping(ArgumentMatchers.any(PutMappingRequest.class), ArgumentMatchers.any(RequestOptions.class));
 
-            IndexerMappingServiceImpl indexerMappingServiceLocal = PowerMockito.spy(new IndexerMappingServiceImpl());
+            IndexerMappingServiceImpl indexerMappingServiceLocal = spy(new IndexerMappingServiceImpl());
             doReturn(false).when(indexerMappingServiceLocal).isTypeExist(ArgumentMatchers.any(), ArgumentMatchers.any(), ArgumentMatchers.any());
             String mapping = this.sut.createMapping(this.restHighLevelClient, this.indexSchema, this.index, true);
             assertEquals(this.mappingValid, mapping);
diff --git a/provider/indexer-gc/src/test/java/org/opengroup/osdu/indexer/service/ReindexServiceTest.java b/provider/indexer-gc/src/test/java/org/opengroup/osdu/indexer/service/ReindexServiceTest.java
index aab33b30c1eb11aa41b810022472ac46ba1d2329..9c00144b66f6c31fa5861cd8bb918eaff09bb64e 100644
--- a/provider/indexer-gc/src/test/java/org/opengroup/osdu/indexer/service/ReindexServiceTest.java
+++ b/provider/indexer-gc/src/test/java/org/opengroup/osdu/indexer/service/ReindexServiceTest.java
@@ -14,6 +14,7 @@
 
 package org.opengroup.osdu.indexer.service;
 
+import org.junit.After;
 import org.junit.Assert;
 import org.junit.Before;
 import org.junit.Ignore;
@@ -21,6 +22,7 @@ import org.junit.Test;
 import org.junit.runner.RunWith;
 import org.mockito.InjectMocks;
 import org.mockito.Mock;
+import org.mockito.MockedStatic;
 import org.opengroup.osdu.core.common.logging.JaxRsDpsLog;
 import org.opengroup.osdu.core.common.model.http.DpsHeaders;
 import org.opengroup.osdu.core.common.model.indexer.RecordQueryResponse;
@@ -28,22 +30,21 @@ import org.opengroup.osdu.core.common.model.indexer.RecordReindexRequest;
 import org.opengroup.osdu.core.common.provider.interfaces.IRequestInfo;
 import org.opengroup.osdu.indexer.config.IndexerConfigurationProperties;
 import org.opengroup.osdu.indexer.util.IndexerQueueTaskBuilder;
-import org.powermock.modules.junit4.PowerMockRunner;
-import org.powermock.modules.junit4.PowerMockRunnerDelegate;
-import org.springframework.test.context.junit4.SpringRunner;
+import org.mockito.junit.MockitoJUnitRunner;
 
 import java.util.*;
 
 import static org.junit.Assert.fail;
 import static org.mockito.Matchers.any;
+import static org.mockito.Mockito.mockStatic;
+import static org.mockito.Mockito.when;
 import static org.mockito.MockitoAnnotations.initMocks;
-import static org.powermock.api.mockito.PowerMockito.mockStatic;
-import static org.powermock.api.mockito.PowerMockito.when;
 
-@RunWith(PowerMockRunner.class)
-@PowerMockRunnerDelegate(SpringRunner.class)
+@RunWith(MockitoJUnitRunner.class)
 public class ReindexServiceTest {
 
+    private static MockedStatic<UUID> mockedUUIDs;
+
     private final String cursor = "100";
 
     private final String correlationId = UUID.randomUUID().toString();
@@ -70,7 +71,7 @@ public class ReindexServiceTest {
     public void setup() {
         initMocks(this);
 
-        mockStatic(UUID.class);
+        mockedUUIDs = mockStatic(UUID.class);
 
         recordReindexRequest = RecordReindexRequest.builder().kind("tenant:test:test:1.0.0").cursor(cursor).build();
         recordQueryResponse = new RecordQueryResponse();
@@ -84,6 +85,11 @@ public class ReindexServiceTest {
         when(requestInfo.getHeadersWithDwdAuthZ()).thenReturn(standardHeaders);
     }
 
+    @After
+    public void close() {
+        mockedUUIDs.close();
+    }
+
     @Test
     public void should_returnNull_givenNullResponseResult_reIndexRecordsTest() {
         try {
diff --git a/provider/indexer-ibm/pom.xml b/provider/indexer-ibm/pom.xml
index d8ef4ca6dd8021b2f34938bcf4fc93df58e21aee..aea2cbe08d5c09cd5ca4d678f92e750df6729e64 100644
--- a/provider/indexer-ibm/pom.xml
+++ b/provider/indexer-ibm/pom.xml
@@ -186,27 +186,18 @@
             <artifactId>junit</artifactId>
             <scope>test</scope>
         </dependency>
-        <!-- https://mvnrepository.com/artifact/org.powermock/powermock-api-mockito2 -->
-        <dependency>
-            <groupId>org.powermock</groupId>
-            <artifactId>powermock-api-mockito2</artifactId>
-            <version>2.0.2</version>
-            <scope>test</scope>
-        </dependency>
-
-        <!-- https://mvnrepository.com/artifact/org.powermock/powermock-module-junit4 -->
-        <dependency>
-            <groupId>org.powermock</groupId>
-            <artifactId>powermock-module-junit4</artifactId>
-            <version>2.0.2</version>
-            <scope>test</scope>
-        </dependency>
         <dependency>
             <groupId>org.mockito</groupId>
             <artifactId>mockito-core</artifactId>
             <version>3.12.0</version>
             <scope>test</scope>
         </dependency>
+         <dependency>
+             <groupId>org.projectlombok</groupId>
+             <artifactId>lombok</artifactId>
+             <version>1.18.26</version>
+             <scope>provided</scope>
+         </dependency>
 
     </dependencies>
 
diff --git a/provider/indexer-ibm/src/test/java/org/opengroup/osdu/indexer/ibm/service/CronServiceImplTest.java b/provider/indexer-ibm/src/test/java/org/opengroup/osdu/indexer/ibm/service/CronServiceImplTest.java
index 56fa2033b16112284ff0817a21606484a0397a1c..14cc8acf913ae0b658ccfee491db352f3692b08f 100644
--- a/provider/indexer-ibm/src/test/java/org/opengroup/osdu/indexer/ibm/service/CronServiceImplTest.java
+++ b/provider/indexer-ibm/src/test/java/org/opengroup/osdu/indexer/ibm/service/CronServiceImplTest.java
@@ -19,7 +19,6 @@ import org.opengroup.osdu.core.common.model.search.IndexInfo;
 import org.opengroup.osdu.core.common.provider.interfaces.IRequestInfo;
 import org.opengroup.osdu.indexer.service.IndicesService;
 import org.opengroup.osdu.indexer.util.ElasticClientHandler;
-import org.powermock.core.classloader.annotations.PrepareForTest;
 import org.springframework.test.context.junit4.SpringRunner;
 
 import java.io.IOException;
@@ -32,7 +31,6 @@ import static org.mockito.Mockito.*;
 
 @Ignore
 @RunWith(SpringRunner.class)
-@PrepareForTest({RestHighLevelClient.class})
 public class CronServiceImplTest {
 
     @Mock
@@ -126,4 +124,4 @@ public class CronServiceImplTest {
 
         verify(this.indicesService, times(0)).deleteIndex(any(), any());
     }
-}
\ No newline at end of file
+}
diff --git a/provider/indexer-ibm/src/test/java/org/opengroup/osdu/indexer/ibm/service/IndexerMappingServiceTest.java b/provider/indexer-ibm/src/test/java/org/opengroup/osdu/indexer/ibm/service/IndexerMappingServiceTest.java
index 7f1f5a7d587538f3b376e1002224831b20f42871..268e132fc7b8408052ecb83498834f730c33866d 100644
--- a/provider/indexer-ibm/src/test/java/org/opengroup/osdu/indexer/ibm/service/IndexerMappingServiceTest.java
+++ b/provider/indexer-ibm/src/test/java/org/opengroup/osdu/indexer/ibm/service/IndexerMappingServiceTest.java
@@ -20,8 +20,6 @@ import org.mockito.Mock;
 import org.opengroup.osdu.core.common.model.indexer.IndexSchema;
 import org.opengroup.osdu.core.common.model.search.RecordMetaAttribute;
 import org.opengroup.osdu.indexer.service.IndexerMappingServiceImpl;
-import org.powermock.api.mockito.PowerMockito;
-import org.powermock.core.classloader.annotations.PrepareForTest;
 import org.springframework.test.context.junit4.SpringRunner;
 
 import java.io.IOException;
@@ -31,11 +29,12 @@ import java.util.Map;
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.fail;
 import static org.mockito.Mockito.doReturn;
-import static org.powermock.api.mockito.PowerMockito.when;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.spy;
+import static org.mockito.Mockito.when;
 
 @Ignore
 @RunWith(SpringRunner.class)
-@PrepareForTest({RestHighLevelClient.class, IndicesClient.class})
 public class IndexerMappingServiceTest {
 
     private final String kind = "tenant:test:test:1.0.0";
@@ -73,8 +72,8 @@ public class IndexerMappingServiceTest {
         this.indexSchema = IndexSchema.builder().kind(kind).type(type).dataSchema(dataMapping).metaSchema(metaMapping)
                 .build();
 
-        this.indicesClient = PowerMockito.mock(IndicesClient.class);
-        this.restHighLevelClient = PowerMockito.mock(RestHighLevelClient.class);
+        this.indicesClient = mock(IndicesClient.class);
+        this.restHighLevelClient = mock(RestHighLevelClient.class);
 
         when(this.restHighLevelClient.getLowLevelClient()).thenReturn(restClient);
         when(this.restClient.performRequest(ArgumentMatchers.any())).thenReturn(response);
@@ -109,7 +108,7 @@ public class IndexerMappingServiceTest {
         try {
             doReturn(this.indicesClient).when(this.restHighLevelClient).indices();
             doReturn(mappingResponse).when(this.indicesClient).putMapping(ArgumentMatchers.any(PutMappingRequest.class), ArgumentMatchers.any(RequestOptions.class));
-            IndexerMappingServiceImpl indexerMappingServiceLocal = PowerMockito.spy(new IndexerMappingServiceImpl());
+            IndexerMappingServiceImpl indexerMappingServiceLocal = spy(new IndexerMappingServiceImpl());
             doReturn(false).when(indexerMappingServiceLocal).isTypeExist(ArgumentMatchers.any(), ArgumentMatchers.any(), ArgumentMatchers.any());
             String mapping = this.sut.createMapping(this.restHighLevelClient, this.indexSchema, this.index, true);
             assertEquals(this.mappingValid, mapping);
@@ -118,4 +117,3 @@ public class IndexerMappingServiceTest {
         }
     }
 }
-
diff --git a/provider/indexer-ibm/src/test/java/org/opengroup/osdu/indexer/ibm/service/ReindexServiceTest.java b/provider/indexer-ibm/src/test/java/org/opengroup/osdu/indexer/ibm/service/ReindexServiceTest.java
index 2067d75f0a8b4ef7bc5c7cb5351d0ef443e09282..1d562afe6e2c2525c8a41e0a3b58f49d89ad0dbf 100644
--- a/provider/indexer-ibm/src/test/java/org/opengroup/osdu/indexer/ibm/service/ReindexServiceTest.java
+++ b/provider/indexer-ibm/src/test/java/org/opengroup/osdu/indexer/ibm/service/ReindexServiceTest.java
@@ -2,6 +2,7 @@
 /* (c) Copyright IBM Corp. 2020. All Rights Reserved.*/
 package org.opengroup.osdu.indexer.ibm.service;
 
+import org.junit.After;
 import org.junit.Assert;
 import org.junit.Before;
 import org.junit.Ignore;
@@ -10,6 +11,7 @@ import org.junit.runner.RunWith;
 import org.mockito.ArgumentMatchers;
 import org.mockito.InjectMocks;
 import org.mockito.Mock;
+import org.mockito.MockedStatic;
 import org.opengroup.osdu.core.common.model.http.DpsHeaders;
 import org.opengroup.osdu.core.common.model.indexer.RecordQueryResponse;
 import org.opengroup.osdu.core.common.model.indexer.RecordReindexRequest;
@@ -19,24 +21,21 @@ import org.opengroup.osdu.indexer.service.ReindexServiceImpl;
 import org.opengroup.osdu.indexer.service.StorageService;
 import org.opengroup.osdu.indexer.util.IndexerQueueTaskBuilder;
 import org.opengroup.osdu.core.common.provider.interfaces.IRequestInfo;
-import org.powermock.core.classloader.annotations.PrepareForTest;
-import org.powermock.modules.junit4.PowerMockRunner;
-import org.powermock.modules.junit4.PowerMockRunnerDelegate;
-import org.springframework.test.context.junit4.SpringRunner;
+import org.mockito.junit.MockitoJUnitRunner;
 
 import java.util.*;
 
 import static org.junit.Assert.fail;
+import static org.mockito.Mockito.mockStatic;
+import static org.mockito.Mockito.when;
 import static org.mockito.MockitoAnnotations.initMocks;
-import static org.powermock.api.mockito.PowerMockito.mockStatic;
-import static org.powermock.api.mockito.PowerMockito.when;
 
 @Ignore
-@RunWith(PowerMockRunner.class)
-@PowerMockRunnerDelegate(SpringRunner.class)
-@PrepareForTest({IndexerConfigurationProperties.class})
+@RunWith(MockitoJUnitRunner.class)
 public class ReindexServiceTest {
 
+    private static MockedStatic<UUID> mockedUUIDs;
+
     private final String cursor = "100";
 
     private final String correlationId = UUID.randomUUID().toString();
@@ -65,7 +64,7 @@ public class ReindexServiceTest {
     public void setup() {
         initMocks(this);
 
-        mockStatic(UUID.class);
+        mockedUUIDs = mockStatic(UUID.class);
 
         recordReindexRequest = RecordReindexRequest.builder().kind("tenant:test:test:1.0.0").cursor(cursor).build();
         recordQueryResponse = new RecordQueryResponse();
@@ -78,6 +77,11 @@ public class ReindexServiceTest {
         when(requestInfo.getHeadersMapWithDwdAuthZ()).thenReturn(httpHeaders);
     }
 
+    @After
+    public void close() {
+        mockedUUIDs.close();
+    }
+
     @Test
     public void should_returnNull_givenNullResponseResult_reIndexRecordsTest() {
         try {
diff --git a/testing/indexer-test-aws/pom.xml b/testing/indexer-test-aws/pom.xml
index c58946aba9e6f2b60c8a603367293f3e892e207c..5d36983ecd524c496858dca2fdb1f9a110acf33a 100644
--- a/testing/indexer-test-aws/pom.xml
+++ b/testing/indexer-test-aws/pom.xml
@@ -31,11 +31,18 @@
     <packaging>jar</packaging>
 
     <properties>
-        <maven.compiler.target>1.8</maven.compiler.target>
-        <maven.compiler.source>1.8</maven.compiler.source>
+        <maven.compiler.target>17</maven.compiler.target>
+        <maven.compiler.source>17</maven.compiler.source>
         <cucumber.version>1.2.5</cucumber.version>
         <jackson-databind.version>2.13.2.2</jackson-databind.version>
         <jackson.version>2.13.2</jackson.version>
+        <argLine>
+            --add-opens java.base/java.lang=ALL-UNNAMED
+            --add-opens=java.base/java.util=ALL-UNNAMED
+            --add-opens java.base/java.lang.reflect=ALL-UNNAMED
+            --add-opens java.base/java.text=ALL-UNNAMED
+            --add-opens java.desktop/java.awt.font=ALL-UNNAMED
+        </argLine>
     </properties>
 
     <dependencies>
@@ -58,7 +65,7 @@
         <dependency>
             <groupId>junit</groupId>
             <artifactId>junit</artifactId>
-            <version>4.12</version>
+            <version>4.13.2</version>
             <scope>test</scope>
         </dependency>
         <dependency>
@@ -115,7 +122,7 @@
         <dependency>
             <groupId>org.projectlombok</groupId>
             <artifactId>lombok</artifactId>
-            <version>1.18.2</version>
+            <version>1.18.28</version>
             <scope>provided</scope>
         </dependency>
         <dependency>
diff --git a/testing/indexer-test-azure/pom.xml b/testing/indexer-test-azure/pom.xml
index f4f575ed5c04cc37bf46a952109c0ddb591f92fa..f11b1af1b8671e2aadefb35f454b345656e6ca65 100644
--- a/testing/indexer-test-azure/pom.xml
+++ b/testing/indexer-test-azure/pom.xml
@@ -31,13 +31,20 @@
     <packaging>jar</packaging>
 
     <properties>
-        <maven.compiler.target>1.8</maven.compiler.target>
-        <maven.compiler.source>1.8</maven.compiler.source>
+        <maven.compiler.target>17</maven.compiler.target>
+        <maven.compiler.source>17</maven.compiler.source>
         <cucumber.version>1.2.5</cucumber.version>
         <junit.jupiter.version>5.6.0</junit.jupiter.version>
         <elasticsearch.version>7.8.1</elasticsearch.version>
         <os-core-common.version>0.14.0-rc8</os-core-common.version>
         <jackson.version>2.13.2</jackson.version>
+        <argLine>
+            --add-opens java.base/java.lang=ALL-UNNAMED
+            --add-opens=java.base/java.util=ALL-UNNAMED
+            --add-opens java.base/java.lang.reflect=ALL-UNNAMED
+            --add-opens java.base/java.text=ALL-UNNAMED
+            --add-opens java.desktop/java.awt.font=ALL-UNNAMED
+        </argLine>
     </properties>
 
     <dependencies>
@@ -104,7 +111,7 @@
         <dependency>
             <groupId>junit</groupId>
             <artifactId>junit</artifactId>
-            <version>4.12</version>
+            <version>4.13.2</version>
             <scope>test</scope>
         </dependency>
         <dependency>
@@ -157,7 +164,7 @@
         <dependency>
             <groupId>org.projectlombok</groupId>
             <artifactId>lombok</artifactId>
-            <version>1.18.2</version>
+            <version>1.18.28</version>
             <scope>provided</scope>
         </dependency>
         <dependency>
diff --git a/testing/indexer-test-baremetal/pom.xml b/testing/indexer-test-baremetal/pom.xml
index 46ca241d0e6e87b342605726f73921c507bae621..3bff4b71d38226bef242969a2b54f9b5ec2768e9 100644
--- a/testing/indexer-test-baremetal/pom.xml
+++ b/testing/indexer-test-baremetal/pom.xml
@@ -27,9 +27,16 @@
     <artifactId>indexer-test-baremetal</artifactId>
 
     <properties>
-        <maven.compiler.target>1.8</maven.compiler.target>
-        <maven.compiler.source>1.8</maven.compiler.source>
+        <maven.compiler.target>17</maven.compiler.target>
+        <maven.compiler.source>17</maven.compiler.source>
         <cucumber.version>1.2.5</cucumber.version>
+        <argLine>
+            --add-opens java.base/java.lang=ALL-UNNAMED
+            --add-opens=java.base/java.util=ALL-UNNAMED
+            --add-opens java.base/java.lang.reflect=ALL-UNNAMED
+            --add-opens java.base/java.text=ALL-UNNAMED
+            --add-opens java.desktop/java.awt.font=ALL-UNNAMED
+        </argLine>
     </properties>
 
     <dependencies>
@@ -46,14 +53,14 @@
         <dependency>
             <groupId>org.projectlombok</groupId>
             <artifactId>lombok</artifactId>
-            <version>1.18.16</version>
+            <version>1.18.28</version>
             <scope>provided</scope>
         </dependency>
         <!-- Cucumber -->
         <dependency>
             <groupId>junit</groupId>
             <artifactId>junit</artifactId>
-            <version>4.12</version>
+            <version>4.13.2</version>
             <scope>test</scope>
         </dependency>
         <dependency>
@@ -81,4 +88,4 @@
         </dependency>
     </dependencies>
 
-</project>
\ No newline at end of file
+</project>
diff --git a/testing/indexer-test-core/pom.xml b/testing/indexer-test-core/pom.xml
index 56e013eb41f00144b2b91b6f818fa5eb8f3e1c9d..063a6b1fbc7af6e56e33f8fbc2f3121c8479fe9a 100644
--- a/testing/indexer-test-core/pom.xml
+++ b/testing/indexer-test-core/pom.xml
@@ -14,8 +14,8 @@
     <version>0.23.0-SNAPSHOT</version>
 
     <properties>
-        <maven.compiler.target>1.8</maven.compiler.target>
-        <maven.compiler.source>1.8</maven.compiler.source>
+        <maven.compiler.target>17</maven.compiler.target>
+        <maven.compiler.source>17</maven.compiler.source>
         <cucumber.version>1.2.5</cucumber.version>
         <os-core-common.version>0.14.0-rc8</os-core-common.version>
         <jackson-databind.version>2.13.2.2</jackson-databind.version>
@@ -45,7 +45,7 @@
         <dependency>
             <groupId>junit</groupId>
             <artifactId>junit</artifactId>
-            <version>4.12</version>
+            <version>4.13.2</version>
         </dependency>
         <dependency>
             <groupId>info.cukes</groupId>
@@ -85,7 +85,7 @@
         <dependency>
             <groupId>org.projectlombok</groupId>
             <artifactId>lombok</artifactId>
-            <version>1.18.26</version>
+            <version>1.18.28</version>
             <scope>provided</scope>
         </dependency>
 
diff --git a/testing/indexer-test-gc/pom.xml b/testing/indexer-test-gc/pom.xml
index a6680b43457546002c272a2f534e1ccf2ec664c5..97edfa96368a194a42e673305c9e6f63b19015bd 100644
--- a/testing/indexer-test-gc/pom.xml
+++ b/testing/indexer-test-gc/pom.xml
@@ -16,9 +16,16 @@
     <packaging>jar</packaging>
 
     <properties>
-        <maven.compiler.target>1.8</maven.compiler.target>
-        <maven.compiler.source>1.8</maven.compiler.source>
+        <maven.compiler.target>17</maven.compiler.target>
+        <maven.compiler.source>17</maven.compiler.source>
         <cucumber.version>1.2.5</cucumber.version>
+        <argLine>
+            --add-opens java.base/java.lang=ALL-UNNAMED
+            --add-opens=java.base/java.util=ALL-UNNAMED
+            --add-opens java.base/java.lang.reflect=ALL-UNNAMED
+            --add-opens java.base/java.text=ALL-UNNAMED
+            --add-opens java.desktop/java.awt.font=ALL-UNNAMED
+        </argLine>
     </properties>
 
     <dependencies>
@@ -44,7 +51,7 @@
         <dependency>
             <groupId>junit</groupId>
             <artifactId>junit</artifactId>
-            <version>4.12</version>
+            <version>4.13.2</version>
             <scope>test</scope>
         </dependency>
         <dependency>
@@ -87,7 +94,7 @@
         <dependency>
             <groupId>org.projectlombok</groupId>
             <artifactId>lombok</artifactId>
-            <version>1.18.26</version>
+            <version>1.18.28</version>
             <scope>provided</scope>
         </dependency>
 
diff --git a/testing/indexer-test-ibm/pom.xml b/testing/indexer-test-ibm/pom.xml
index 892304b96410c584307afaf28d910829fc89066a..0081512dd517b2bde28de0ddad79e30a7de1197b 100644
--- a/testing/indexer-test-ibm/pom.xml
+++ b/testing/indexer-test-ibm/pom.xml
@@ -16,10 +16,17 @@
     <packaging>jar</packaging>
 
     <properties>
-        <maven.compiler.target>1.8</maven.compiler.target>
-        <maven.compiler.source>1.8</maven.compiler.source>
+        <maven.compiler.target>17</maven.compiler.target>
+        <maven.compiler.source>17</maven.compiler.source>
         <cucumber.version>1.2.5</cucumber.version>
         <os-core-lib-ibm.version>0.13.0</os-core-lib-ibm.version>
+        <argLine>
+            --add-opens java.base/java.lang=ALL-UNNAMED
+            --add-opens=java.base/java.util=ALL-UNNAMED
+            --add-opens java.base/java.lang.reflect=ALL-UNNAMED
+            --add-opens java.base/java.text=ALL-UNNAMED
+            --add-opens java.desktop/java.awt.font=ALL-UNNAMED
+        </argLine>
     </properties>
 
     <dependencies>
@@ -57,7 +64,7 @@
         <dependency>
             <groupId>junit</groupId>
             <artifactId>junit</artifactId>
-            <version>4.12</version>
+            <version>4.13.2</version>
             <scope>test</scope>
         </dependency>
         <dependency>
@@ -100,7 +107,7 @@
         <dependency>
             <groupId>org.projectlombok</groupId>
             <artifactId>lombok</artifactId>
-            <version>1.18.2</version>
+            <version>1.18.28</version>
             <scope>provided</scope>
         </dependency>