diff --git a/NOTICE b/NOTICE
index ad0d2f615bb4736c50d01985e7fb692d3ab662af..9aefb894ae7750a16c389868a47aa3e6ad05af7a 100644
--- a/NOTICE
+++ b/NOTICE
@@ -46,14 +46,13 @@ The following software have components provided under the terms of this license:
 - Apache Commons Lang (from https://commons.apache.org/proper/commons-lang/)
 - Apache Commons Logging (from http://commons.apache.org/logging/, http://commons.apache.org/proper/commons-logging/, https://commons.apache.org/proper/commons-logging/)
 - Apache Commons Validator (from http://commons.apache.org/proper/commons-validator/, http://jakarta.apache.org/commons/${pom.artifactId.substring(8)}/, https://repo1.maven.org/maven2/commons-validator/commons-validator)
-- Apache Groovy (from http://groovy-lang.org, http://groovy.codehaus.org/, https://groovy-lang.org)
 - Apache HTTP transport v2 for the Google HTTP Client Library for Java. (from https://repo1.maven.org/maven2/com/google/http-client/google-http-client-apache-v2)
 - Apache HttpClient (from http://hc.apache.org/httpcomponents-client, http://hc.apache.org/httpcomponents-client-ga)
 - Apache HttpClient Cache (from http://hc.apache.org/httpcomponents-client, http://hc.apache.org/httpcomponents-client-ga)
 - Apache HttpCore (from http://hc.apache.org/httpcomponents-core-ga, http://hc.apache.org/httpcomponents-core-ga/, http://hc.apache.org/httpcomponents-core/)
 - Apache Log4j API (from https://repo1.maven.org/maven2/org/apache/logging/log4j/log4j-api)
 - Apache Log4j Core (from https://repo1.maven.org/maven2/org/apache/logging/log4j/log4j-core)
-- Apache Log4j JUL Adapter (from https://repo1.maven.org/maven2/org/apache/logging/log4j/log4j-jul)
+- Apache Log4j JUL Handler (from https://logging.apache.org/log4j/3.x/)
 - Apache Log4j SLF4J Binding (from https://repo1.maven.org/maven2/org/apache/logging/log4j/log4j-slf4j-impl)
 - Apache Log4j to SLF4J Adapter (from https://repo1.maven.org/maven2/org/apache/logging/log4j/log4j-to-slf4j)
 - AssertJ Core (from https://assertj.github.io/doc/#assertj-core)
@@ -67,7 +66,6 @@ The following software have components provided under the terms of this license:
 - Byte Buddy (without dependencies) (from https://repo1.maven.org/maven2/net/bytebuddy/byte-buddy)
 - Byte Buddy Java agent (from https://repo1.maven.org/maven2/net/bytebuddy/byte-buddy-agent)
 - ClassMate (from http://github.com/cowtowncoder/java-classmate)
-- Cloud Key Management Service (KMS) API v1-rev20240918-2.0.0 (from https://repo1.maven.org/maven2/com/google/apis/google-api-services-cloudkms)
 - Collections (from https://repo1.maven.org/maven2/commons-collections/commons-collections)
 - Commons Digester (from http://commons.apache.org/digester/)
 - Converter: Jackson (from https://github.com/square/retrofit, https://repo1.maven.org/maven2/com/squareup/retrofit2/converter-jackson)
@@ -83,10 +81,7 @@ The following software have components provided under the terms of this license:
 - Google Auth Library for Java - OAuth2 HTTP (from https://repo1.maven.org/maven2/com/google/auth/google-auth-library-oauth2-http)
 - Google Cloud Core (from https://github.com/googleapis/google-cloud-java/tree/master/google-cloud-clients/google-cloud-core, https://github.com/googleapis/java-core, https://repo1.maven.org/maven2/com/google/cloud/google-cloud-core)
 - Google Cloud Core HTTP (from https://github.com/GoogleCloudPlatform/google-cloud-java/tree/master/google-cloud-core-http, https://github.com/googleapis/google-cloud-java/tree/master/google-cloud-clients/google-cloud-core-http, https://github.com/googleapis/java-core, https://repo1.maven.org/maven2/com/google/cloud/google-cloud-core-http)
-- Google Cloud Core gRPC (from https://github.com/googleapis/google-cloud-java/tree/master/google-cloud-clients/google-cloud-core-grpc, https://github.com/googleapis/java-core, https://repo1.maven.org/maven2/com/google/cloud/google-cloud-core-grpc)
 - Google Cloud Datastore (from https://github.com/googleapis/google-cloud-java/tree/master/google-cloud-clients/google-cloud-datastore, https://github.com/googleapis/java-datastore)
-- Google Cloud Logging (from https://github.com/googleapis/google-cloud-java/tree/master/google-cloud-clients/google-cloud-logging, https://github.com/googleapis/java-logging)
-- Google Cloud Pub/Sub (from https://github.com/googleapis/google-cloud-java/tree/master/google-cloud-clients/google-cloud-pubsub, https://github.com/googleapis/java-pubsub)
 - Google HTTP Client Library for Java (from https://repo1.maven.org/maven2/com/google/http-client/google-http-client)
 - Google OAuth Client Library for Java (from https://repo1.maven.org/maven2/com/google/oauth-client/google-oauth-client)
 - Gson (from http://code.google.com/p/google-gson/, https://repo1.maven.org/maven2/com/google/code/gson/gson)
@@ -95,8 +90,6 @@ The following software have components provided under the terms of this license:
 - Guava: Google Core Libraries for Java (from http://code.google.com/p/guava-libraries, https://github.com/google/guava, https://repo1.maven.org/maven2/com/google/guava/guava)
 - HTTP functionality for the Reactor Netty library (from https://github.com/reactor/reactor-netty)
 - Hibernate Validator (from https://hibernate.org/validator, https://repo1.maven.org/maven2/org/hibernate/hibernate-validator, https://repo1.maven.org/maven2/org/hibernate/validator/hibernate-validator)
-- HikariCP (from https://github.com/brettwooldridge/HikariCP)
-- Hop (from https://github.com/rabbitmq/hop, https://www.rabbitmq.com)
 - IBM COS Java SDK for Amazon S3 (from https://github.com/ibm/ibm-cos-sdk-java)
 - IBM COS Java SDK for COS KMS (from https://github.com/ibm/ibm-cos-sdk-java)
 - IBM COS SDK For Java (from https://github.com/ibm/ibm-cos-sdk-java)
@@ -113,7 +106,6 @@ The following software have components provided under the terms of this license:
 - JSON library from Android SDK (from http://developer.android.com/sdk)
 - JSONassert (from http://github.com/skyscreamer/yoga, https://github.com/skyscreamer/JSONassert)
 - JSR107 API and SPI (from https://github.com/jsr107/jsr107spec)
-- Jackson 2 extensions to the Google APIs Client Library for Java (from https://repo1.maven.org/maven2/com/google/api-client/google-api-client-jackson2)
 - Jackson 2 extensions to the Google HTTP Client Library for Java. (from https://repo1.maven.org/maven2/com/google/http-client/google-http-client-jackson2)
 - Jackson dataformat: CBOR (from http://github.com/FasterXML/jackson-dataformats-binary)
 - Jackson datatype: JSR310 (from http://wiki.fasterxml.com/JacksonModuleJSR310, https://repo1.maven.org/maven2/com/fasterxml/jackson/datatype/jackson-datatype-jsr310)
@@ -184,7 +176,6 @@ The following software have components provided under the terms of this license:
 - OpenCensus (from https://github.com/census-instrumentation/opencensus-java, https://github.com/census-instrumentation/opencensus-proto)
 - OpenTelemetry Java (from https://github.com/open-telemetry/opentelemetry-java)
 - OpenTelemetry Semantic Conventions Java (from https://github.com/open-telemetry/semantic-conventions-java)
-- PostgreSQL JDBC Driver
 - PowerMock (from http://www.powermock.org, https://repo1.maven.org/maven2/org/powermock/powermock-api-mockito)
 - Prometheus Metrics Config (from https://repo1.maven.org/maven2/io/prometheus/prometheus-metrics-config)
 - Prometheus Metrics Core (from https://repo1.maven.org/maven2/io/prometheus/prometheus-metrics-core)
@@ -194,8 +185,7 @@ The following software have components provided under the terms of this license:
 - Protocol Buffer extensions to the Google HTTP Client Library for Java. (from https://repo1.maven.org/maven2/com/google/http-client/google-http-client-protobuf)
 - Proton-J (from https://repo1.maven.org/maven2/org/apache/qpid/proton-j)
 - QpidJMS Client (from https://repo1.maven.org/maven2/org/apache/qpid/qpid-jms-client)
-- RabbitMQ Java Client (from http://www.rabbitmq.com, https://www.rabbitmq.com)
-- Redisson (from http://redisson.org)
+- Redisson (from http://redisson.org, https://redisson.pro)
 - Retrofit (from https://github.com/square/retrofit, https://repo1.maven.org/maven2/com/squareup/retrofit2/retrofit)
 - RxJava (from https://github.com/ReactiveX/RxJava)
 - Shaded Protobuf (from https://repo1.maven.org/maven2/io/prometheus/prometheus-metrics-shaded-protobuf)
@@ -208,7 +198,6 @@ The following software have components provided under the terms of this license:
 - Spring Boot Actuator AutoConfigure (from https://projects.spring.io/spring-boot/#/spring-boot-parent/spring-boot-actuator-autoconfigure, https://spring.io/projects/spring-boot)
 - Spring Boot Actuator Starter (from http://projects.spring.io/spring-boot/, https://spring.io/projects/spring-boot)
 - Spring Boot AutoConfigure (from https://projects.spring.io/spring-boot/#/spring-boot-parent/spring-boot-autoconfigure, https://spring.io/projects/spring-boot)
-- Spring Boot JDBC Starter (from http://projects.spring.io/spring-boot/, https://spring.io/projects/spring-boot)
 - Spring Boot Json Starter (from https://projects.spring.io/spring-boot/#/spring-boot-parent/spring-boot-starters/spring-boot-starter-json, https://spring.io/projects/spring-boot)
 - Spring Boot Log4j 2 Starter (from http://projects.spring.io/spring-boot/, https://projects.spring.io/spring-boot/#/spring-boot-parent/spring-boot-starters/spring-boot-starter-log4j2, https://spring.io/projects/spring-boot)
 - Spring Boot Logging Starter (from http://projects.spring.io/spring-boot/, https://projects.spring.io/spring-boot/#/spring-boot-parent/spring-boot-starters/spring-boot-starter-logging, https://spring.io/projects/spring-boot)
@@ -225,7 +214,6 @@ The following software have components provided under the terms of this license:
 - Spring Data Core (from https://spring.io/projects/spring-data)
 - Spring Data MongoDB - Core (from https://repo1.maven.org/maven2/org/springframework/data/spring-data-mongodb)
 - Spring Expression Language (SpEL) (from https://github.com/SpringSource/spring-framework, https://github.com/spring-projects/spring-framework, https://repo1.maven.org/maven2/org/springframework/spring-expression)
-- Spring JDBC (from https://github.com/SpringSource/spring-framework, https://github.com/spring-projects/spring-framework, https://repo1.maven.org/maven2/org/springframework/spring-jdbc)
 - Spring JMS (from http://www.springframework.org, https://github.com/SpringSource/spring-framework, https://github.com/spring-projects/spring-framework, https://repo1.maven.org/maven2/org/springframework/spring-jms)
 - Spring Messaging (from https://github.com/spring-projects/spring-framework)
 - Spring Plugin - Metadata Extension (from https://github.com/spring-projects/spring-plugin/spring-plugin-metadata, https://repo1.maven.org/maven2/org/springframework/plugin/spring-plugin-metadata)
@@ -279,11 +267,10 @@ The following software have components provided under the terms of this license:
 - perfmark:perfmark-api (from https://github.com/perfmark/perfmark)
 - proto-google-cloud-datastore-admin-v1 (from https://github.com/googleapis/java-datastore/proto-google-cloud-datastore-admin-v1)
 - proto-google-cloud-datastore-v1 (from https://github.com/googleapis/googleapis, https://github.com/googleapis/java-datastore/proto-google-cloud-datastore-v1)
-- proto-google-cloud-logging-v2 (from https://github.com/googleapis/java-logging/proto-google-cloud-logging-v2, https://repo1.maven.org/maven2/com/google/api/grpc/proto-google-cloud-logging-v2)
-- proto-google-cloud-pubsub-v1 (from https://github.com/googleapis/googleapis, https://github.com/googleapis/java-pubsub/proto-google-cloud-pubsub-v1)
 - proto-google-common-protos (from https://github.com/googleapis/api-client-staging, https://github.com/googleapis/googleapis, https://github.com/googleapis/java-iam/proto-google-common-protos, https://github.com/googleapis/sdk-platform-java)
 - proto-google-iam-v1 (from https://github.com/googleapis/googleapis, https://github.com/googleapis/java-iam/proto-google-iam-v1, https://github.com/googleapis/sdk-platform-java)
 - resilience4j (from https://github.com/resilience4j/resilience4j, https://resilience4j.readme.io, ttps://resilience4j.readme.io)
+- spring-boot-loader (from https://spring.io/projects/spring-boot)
 - spring-security-oauth2-client (from http://spring.io/spring-security, https://spring.io/projects/spring-security, https://spring.io/spring-security)
 - spring-security-oauth2-core (from http://spring.io/spring-security, https://spring.io/projects/spring-security, https://spring.io/spring-security)
 - spring-security-oauth2-jose (from http://spring.io/spring-security, https://spring.io/projects/spring-security, https://spring.io/spring-security)
@@ -312,7 +299,6 @@ The following software have components provided under the terms of this license:
 - Jodd Util (from https://util.jodd.org)
 - LatencyUtils (from http://latencyutils.github.io/LatencyUtils/)
 - MinLog (from https://github.com/EsotericSoftware/minlog)
-- PostgreSQL JDBC Driver
 - ReflectASM (from https://github.com/EsotericSoftware/reflectasm)
 - Stax2 API (from http://github.com/FasterXML/stax2-api)
 - jersey-core-common (from https://repo1.maven.org/maven2/org/glassfish/jersey/core/jersey-common)
@@ -348,11 +334,10 @@ The following software have components provided under the terms of this license:
 - MinLog (from https://github.com/EsotericSoftware/minlog)
 - Netty/Codec/HTTP (from https://repo1.maven.org/maven2/io/netty/netty-codec-http)
 - Old JAXB Core (from <https://eclipse-ee4j.github.io/jaxb-ri/>, https://eclipse-ee4j.github.io/jaxb-ri/, https://repo1.maven.org/maven2/com/sun/xml/bind/jaxb-impl)
-- PostgreSQL JDBC Driver
 - Protocol Buffer Java API (from http://code.google.com/p/protobuf, https://repo1.maven.org/maven2/com/google/protobuf/protobuf-java)
 - Protocol Buffers [Util] (from https://repo1.maven.org/maven2/com/google/protobuf/protobuf-java-util)
 - RE2/J (from http://github.com/google/re2j)
-- Redisson (from http://redisson.org)
+- Redisson (from http://redisson.org, https://redisson.pro)
 - ReflectASM (from https://github.com/EsotericSoftware/reflectasm)
 - Shaded Protobuf (from https://repo1.maven.org/maven2/io/prometheus/prometheus-metrics-shaded-protobuf)
 - Spring Core (from http://www.springframework.org, https://github.com/spring-projects/spring-framework, https://repo1.maven.org/maven2/org/springframework/spring-core)
@@ -384,8 +369,7 @@ The following software have components provided under the terms of this license:
 - Hibernate Validator (from https://hibernate.org/validator, https://repo1.maven.org/maven2/org/hibernate/hibernate-validator, https://repo1.maven.org/maven2/org/hibernate/validator/hibernate-validator)
 - LatencyUtils (from http://latencyutils.github.io/LatencyUtils/)
 - Netty/Common (from https://repo1.maven.org/maven2/io/netty/netty-common)
-- RabbitMQ Java Client (from http://www.rabbitmq.com, https://www.rabbitmq.com)
-- Redisson (from http://redisson.org)
+- Redisson (from http://redisson.org, https://redisson.pro)
 - jersey-core-common (from https://repo1.maven.org/maven2/org/glassfish/jersey/core/jersey-common)
 - reactive-streams (from http://www.reactive-streams.org/)
 
@@ -598,13 +582,6 @@ The following software have components provided under the terms of this license:
 
 - Javassist (from http://www.javassist.org/, https://www.javassist.org/)
 
-========================================================================
-MPL-2.0
-========================================================================
-The following software have components provided under the terms of this license:
-
-- RabbitMQ Java Client (from http://www.rabbitmq.com, https://www.rabbitmq.com)
-
 ========================================================================
 SAX-PD
 ========================================================================
@@ -654,4 +631,3 @@ The following software have components provided under the terms of this license:
 
 - JBoss Logging 3 (from http://www.jboss.org)
 - JSON in Java (from https://github.com/douglascrockford/JSON-java)
-- PostgreSQL JDBC Driver
diff --git a/devops/gc/deploy/README.md b/devops/gc/deploy/README.md
index f2d34edd13f29374914f01409e9fa4a52ddb9a6e..a467b946e3c94779ac1353e86ab54da701165801 100644
--- a/devops/gc/deploy/README.md
+++ b/devops/gc/deploy/README.md
@@ -32,7 +32,6 @@ First you need to set variables in **values.yaml** file using any code editor. S
 | Name | Description | Type | Default |Required |
 |------|-------------|------|---------|---------|
 **global.domain** | your domain for the external endpoint, ex `example.com` | string | - | yes
-**global.onPremEnabled** | whether on-prem is enabled | boolean | `false` | yes
 **global.limitsEnabled** | whether CPU and memory limits are enabled | boolean | `true` | yes
 **global.logLevel** | severity of logging level | string | `ERROR` | yes
 **global.tier** | Only PROD must be used to enable autoscaling | string | - | no
@@ -46,12 +45,10 @@ First you need to set variables in **values.yaml** file using any code editor. S
 **data.googleCloudProject** | your Google Cloud cloud project | string | -| yes
 **data.entitlementsHost** | Entitlements host | string | `http://entitlements` | yes
 **data.partitionHost** | Partition host | string | `http://partition` | yes
+**data.secretHost** | Secret host | string | `http://secret` | yes
 **data.recordsChangedPubsubEndpoint** | Endpoint to PubSub topic | string | - | yes
 **data.storageHost** | Storage host | string | `http://storage` | yes
-**data.secretHost** | Secret host | string | `http://secret` | yes
 **data.serviceIdentity** | Service account in Google Cloud fo PubSub | string | `register-pubsub-identity` | yes
-**data.keyRing** | Type of keys | string | `csqp` | yes
-**data.kmsKey** | Key management service key (must be replaced during installation) | string | `registerService` | yes
 **data.subscriberPrivateKeyId** | Subscriber test private key id (must be replaced during installation) | string | `testkey` | yes
 
 ### Deployment variables
@@ -72,10 +69,6 @@ First you need to set variables in **values.yaml** file using any code editor. S
 |------|-------------|------|---------|---------|
 **conf.appName** | name of the app | string | `register` | yes
 **conf.configmap** | configmap to be used | string | `register-config` | yes
-**conf.registerPostgresSecretName** | secret for postgres | string | `register-postgres-secret` | yes
-**conf.registerKeycloakSecretName** | secret for keycloak | string | `register-keycloak-secret` | yes
-**conf.registerKmsSecretName** | secret for kms | string |  `register-kms-secret` | yes
-**conf.rabbitmqSecretName** | secret for rabbitmq | string | `rabbitmq-secret` | yes
 
 ### ISTIO variables
 
diff --git a/devops/gc/deploy/templates/register-variables.yml b/devops/gc/deploy/templates/configmap.yaml
similarity index 81%
rename from devops/gc/deploy/templates/register-variables.yml
rename to devops/gc/deploy/templates/configmap.yaml
index c628f5511390a9ec25a2b66d24fb5336deb812d5..4bcaa904c8e02e0f29014389f33b5bb48dd14b19 100644
--- a/devops/gc/deploy/templates/register-variables.yml
+++ b/devops/gc/deploy/templates/configmap.yaml
@@ -8,18 +8,14 @@ metadata:
 data:
   LOG_LEVEL: {{ .Values.data.logLevel | default .Values.global.logLevel | quote }}
   SUBSCRIBER_PRIVATE_KEY_ID: {{ .Values.data.subscriberPrivateKeyId | quote }}
-  {{- if not .Values.global.onPremEnabled }}
   GOOGLE_CLOUD_PROJECT: {{ .Values.data.googleCloudProject  | quote }}
   ENTITLEMENTS_HOST: {{ .Values.data.entitlementsHost  | quote }}
-  RECORDS_CHANGE_PUBSUB_ENDPOINT: "{{ .Values.data.recordsChangePubsubEndpoint}}"
+  RECORDS_CHANGE_PUBSUB_ENDPOINT: {{ .Values.data.recordsChangePubsubEndpoint | quote }}
   PARTITION_HOST: {{ .Values.data.partitionHost  | quote }}
   STORAGE_HOST: {{ .Values.data.storageHost  | quote }}
   SECRET_HOST: {{ .Values.data.secretHost  | quote }}
   SERVICE_IDENTITY: {{ .Values.data.serviceIdentity  | quote }}
   SPRING_PROFILES_ACTIVE: "gcp"
-  {{- else }}
-  SPRING_PROFILES_ACTIVE: "anthos"
-  {{- end }}
   {{- if .Values.conf.intTestEndpoint }}
   TEST_ENDPOINT: "true"
   {{- end }}
diff --git a/devops/gc/deploy/templates/register-deploy.yml b/devops/gc/deploy/templates/deployment.yaml
similarity index 85%
rename from devops/gc/deploy/templates/register-deploy.yml
rename to devops/gc/deploy/templates/deployment.yaml
index 4b8df393743ec9878b0ee14653a694a4f9688896..31acf1d8273706a72f51cddbb80f92fd75d9af57 100644
--- a/devops/gc/deploy/templates/register-deploy.yml
+++ b/devops/gc/deploy/templates/deployment.yaml
@@ -30,14 +30,6 @@ spec:
         envFrom:
         - configMapRef:
             name: {{ .Values.conf.configmap | quote }}
-        {{- if .Values.global.onPremEnabled }}
-        - secretRef:
-            name: {{ .Values.conf.rabbitmqSecretName | quote }}
-        - secretRef:
-            name: {{ .Values.conf.registerPostgresSecretName | quote }}
-        - secretRef:
-            name: {{ .Values.conf.registerKeycloakSecretName | quote }}
-        {{- end }}
         securityContext:
           allowPrivilegeEscalation: false
           runAsNonRoot: true
diff --git a/devops/gc/deploy/templates/register-service-account.yml b/devops/gc/deploy/templates/register-service-account.yml
deleted file mode 100644
index eec72f12889eec74d3de43ae6527a860bcd876ea..0000000000000000000000000000000000000000
--- a/devops/gc/deploy/templates/register-service-account.yml
+++ /dev/null
@@ -1,7 +0,0 @@
-{{- if .Values.global.onPremEnabled }}
-apiVersion: v1
-kind: ServiceAccount
-metadata:
-  name: {{ .Values.data.serviceAccountName | quote }}
-  namespace: {{ .Release.Namespace | quote }}
-{{- end }}
diff --git a/devops/gc/deploy/templates/register-service.yml b/devops/gc/deploy/templates/service.yaml
similarity index 87%
rename from devops/gc/deploy/templates/register-service.yml
rename to devops/gc/deploy/templates/service.yaml
index 1bbb4ee44b0c3d86d4e02bcea48dea7ad7e2c036..5c86a14d24bf935529e6f6e0b2978c91a13ef7b7 100644
--- a/devops/gc/deploy/templates/register-service.yml
+++ b/devops/gc/deploy/templates/service.yaml
@@ -3,9 +3,7 @@ kind: Service
 metadata:
   name: {{ .Values.conf.appName | quote }}
   annotations:
-    {{- if not .Values.global.onPremEnabled }}
     cloud.google.com/neg: '{"ingress": true}'
-    {{- end }}
   namespace: {{ .Release.Namespace | quote }}
   labels:
     app: {{ .Values.conf.appName | quote }}
diff --git a/devops/gc/deploy/templates/register-virtual-service.yml b/devops/gc/deploy/templates/virtual-service.yaml
similarity index 76%
rename from devops/gc/deploy/templates/register-virtual-service.yml
rename to devops/gc/deploy/templates/virtual-service.yaml
index 92e7e6d782409a68b16f46f667f6707b5cb02c0a..7b939a38ed088efe7ab29c9935a1bcb6983f0fa4 100644
--- a/devops/gc/deploy/templates/register-virtual-service.yml
+++ b/devops/gc/deploy/templates/virtual-service.yaml
@@ -5,9 +5,7 @@ metadata:
   namespace: {{ .Release.Namespace | quote }}
 spec:
   hosts:
-    {{- if and .Values.global.domain .Values.global.onPremEnabled }}
-    - {{ printf "osdu.%s" .Values.global.domain | quote }}
-    {{- else if .Values.global.domain }}
+    {{- if .Values.global.domain }}
     - {{ .Values.global.domain | quote }}
     {{- else }}
     - "*"
diff --git a/devops/gc/deploy/values.yaml b/devops/gc/deploy/values.yaml
index 67ab9acbf1a94a76d64965dbdac4f025055d3bf9..6459587d745f008ab2978b5fe6c7b2caf8903b66 100644
--- a/devops/gc/deploy/values.yaml
+++ b/devops/gc/deploy/values.yaml
@@ -4,7 +4,6 @@
 
 global:
   domain: ""
-  onPremEnabled: false
   limitsEnabled: true
   logLevel: "ERROR"
   tier: ""
@@ -32,10 +31,6 @@ data:
 
 conf:
   configmap: "register-config"
-  rabbitmqSecretName: "rabbitmq-secret"
-  registerPostgresSecretName: "register-postgres-secret"
-  registerKeycloakSecretName: "register-keycloak-secret"
-  registerKmsSecretName: "register-kms-secret"
   appName: "register"
   intTestEndpoint: false
   replicas: 2
diff --git a/devops/gc/pipeline/override-stages.yml b/devops/gc/pipeline/override-stages.yml
index abef37eca79b6f285430fef4f12cdcae1a3fafe0..a5981d37ab39f68d561363d4397b74be491a09ad 100644
--- a/devops/gc/pipeline/override-stages.yml
+++ b/devops/gc/pipeline/override-stages.yml
@@ -2,3 +2,32 @@ variables:
   GC_SERVICE: register
   GC_VENDOR: gc
   GC_HELM_SETS: "--set data.recordsChangePubsubEndpoint=$RECORDS_CHANGE_PUBSUB_ENDPOINT"
+
+download_gc_plugins:
+  image: maven:3.8.3-openjdk-17-slim
+  stage: build
+  variables:
+    GC_OSM_PACKAGE_REGISTRY_URL: "https://community.opengroup.org/api/v4/projects/1476/packages/maven"
+    GC_OSM_VERSION: "0.27.2"
+    GC_OQM_PACKAGE_REGISRTY_URL: "https://community.opengroup.org/api/v4/projects/1477/packages/maven"
+    GC_OQM_VERSION: "0.27.1"
+    GC_APD_PACKAGE_REGISTRY_URL: "https://community.opengroup.org/api/v4/projects/1480/packages/maven"
+    GC_APD_VERSION: "0.27.2"
+  artifacts:
+    paths:
+      - ./tmp-gc/*.jar
+    when: always
+    expire_in: 1 days
+  script:
+    - mvn dependency:copy -DrepoUrl=$GC_OSM_PACKAGE_REGISTRY_URL -Dartifact="org.opengroup.osdu:gc-osm-datastore:$GC_OSM_VERSION:jar:plugin" -Dtransitive=false -DoutputDirectory="./tmp-gc"
+    - mvn dependency:copy -DrepoUrl=$GC_OQM_PACKAGE_REGISRTY_URL -Dartifact="org.opengroup.osdu:gc-oqm-pubsub:$GC_OQM_VERSION:jar:plugin" -Dtransitive=false -DoutputDirectory="./tmp-gc"
+    - mvn dependency:copy -DrepoUrl=$GC_APD_PACKAGE_REGISTRY_URL -Dartifact="org.opengroup.osdu:gc-apd-acc:$GC_APD_VERSION:jar:plugin" -Dtransitive=false -DoutputDirectory="./tmp-gc"
+  only:
+    variables:
+      - $GC == '1'
+
+gc-containerize-gitlab:
+  needs: ["compile-and-unit-test", "download_gc_plugins"]
+
+gc-containerize-gcr:
+  needs: ["compile-and-unit-test", "download_gc_plugins"]
diff --git a/provider/register-gc/README.md b/provider/register-gc/README.md
index d81270521baca908b3b93d5699c82854f7c05d12..da045ca27ee135f719c8ef14e34247b12d7a46fe 100644
--- a/provider/register-gc/README.md
+++ b/provider/register-gc/README.md
@@ -17,17 +17,7 @@ In the current version, the mappers are equipped with several drivers to the sto
 
 - OSM (mapper for KV-data): Google Datastore; Postgres
 - OQM (mapper to message brokers): Google PubSub; RabbitMQ
-
-## Extensibility
-
-To use any other store or message broker, implement a driver for it. With an extensible set of drivers, the solution is unrestrictedly universal and portable without modification to the main code.
-
-Mappers support "multitenancy" with flexibility in how it is implemented.
-They switch between datasources of different tenants due to the work of a bunch of classes that implement the following interfaces:
-
-- Destination - takes a description of the current context, e.g., "data-partition-id = opendes"
-- DestinationResolver – accepts Destination, finds the resource, connects, and returns Resolution
-- DestinationResolution – contains a ready-made connection, the mapper uses it to get to data
+- APD (mapper to authentication products): Google SA; Keycloak
 
 # Settings and Configuration
 
@@ -57,43 +47,6 @@ The following tools make environment variable configuration simpler
 - [Intellij configuration](https://projectlombok.org/setup/intellij)
 - [VSCode configuration](https://projectlombok.org/setup/vscode)
 
-## Mapper tuning mechanisms
-
-This service uses specific implementations of DestinationResolvers  based on the tenant information provided by the OSDU Partition service.
- A total of 4 resolvers are implemented, which are divided into two groups:
-
-### for universal technologies
-
-- for Postgres: mappers/osm/PgTenantOsmDestinationResolver.java
-- for RabbitMQ: mappers/oqm/MqTenantOqmDestinationResolver.java
-
-#### Their algorithms are as follows
-
-- incoming Destination carries data-partition-id
-- resolver accesses the Partition service and gets PartitionInfo
-- from PartitionInfo resolver retrieves properties for the connection: URL, username, password etc.
-- resolver creates a data source, connects to the resource, remembers the datasource
-- resolver gives the datasource to the mapper in the Resolution object
-
-### for native Google Cloud technologies
-
-- for Datastore: mappers/osm/DsTenantOsmDestinationResolver.java
-- for PubSub: mappers/oqm/PsTenantOqmDestinationResolver.java
-
-#### Their algorithms are similar
-
-Except that they do not receive special properties from the Partition service for connection, because the location of the resources is unambiguously known - they are in the Google Cloud project. And credentials are also not needed - access to data is made on behalf of the Google Identity SA under which the service itself is launched. Therefore, resolver takes only the value of the **projectId** property from PartitionInfo and uses it to connect to a resource in the corresponding Google Cloud project.
-
-# Configuration
-
-## Service Configuration
-
-Define the following environment variables.
-Most of them are common to all hosting environments, but there are properties that are only necessary when running in Google Cloud.
-
-### Baremetal Service Configuration
-
-[Baremeta service configuration](docs/baremetal/README.md)
 
 ### Google Cloud Service Configuration
 
@@ -173,15 +126,17 @@ mvn clean install -DskipTests
 After configuring your environment as specified above, you can follow these steps to build and run the application. These steps should be invoked from the *repository root.*
 
 ```bash
-cd provider/register-gc/ && mvn spring-boot:run -Dspring-boot.run.profiles=local
+cd provider/register-gc
+
+```bash
+java --add-opens java.base/java.lang=ALL-UNNAMED \
+         --add-opens java.base/java.lang.reflect=ALL-UNNAMED \
+         -Dloader.main=org.opengroup.osdu.legal.LegalApplication \
+         -jar /target/register-${VERSION}-spring-boot.jar
 ```
 
 ## Testing
 
-#### Baremetal
-
-[Baremetal Testing](docs/baremetal/README.md)
-
 #### Google Cloud
 
 [Google Cloud Testing](docs/gc/README.md)
diff --git a/provider/register-gc/cloudbuild/Dockerfile.cloudbuild b/provider/register-gc/cloudbuild/Dockerfile.cloudbuild
index cbda236cff9d2437d4cffbb80dbfc29979cf7505..abd69b62e2247a422971ce770117f2ca6cf64bea 100644
--- a/provider/register-gc/cloudbuild/Dockerfile.cloudbuild
+++ b/provider/register-gc/cloudbuild/Dockerfile.cloudbuild
@@ -4,6 +4,13 @@ ARG PROVIDER_NAME
 ENV PROVIDER_NAME $PROVIDER_NAME
 ARG PORT
 ENV PORT $PORT
+
+ENV LOADER_PATH="gc/"
+
+COPY tmp-gc/gc-oqm-pubsub-*.jar gc/oqm-pubsub.jar
+COPY tmp-gc/gc-apd-acc-*.jar gc/apd-acc.jar
+COPY tmp-gc/gc-osm-datastore-*.jar gc/osm-datastore.jar
+
 # Copy the jar to the production image from the builder stage.
 COPY provider/register-${PROVIDER_NAME}/target/register-${PROVIDER_NAME}-*-spring-boot.jar register-${PROVIDER_NAME}.jar
 # Add a non-root user
@@ -12,4 +19,9 @@ RUN groupadd -g 10001 -r nonroot \
 # Run as non-root user
 USER 10001:10001
 # Run the web service on container startup.
-CMD java -Djava.security.egd=file:/dev/./urandom -Dlog4j.formatMsgNoLookups=true --add-opens=java.base/java.time=ALL-UNNAMED -jar /register/register-${PROVIDER_NAME}.jar
+CMD java -Djava.security.egd=file:/dev/./urandom \
+    -Dlog4j.formatMsgNoLookups=true \
+    --add-opens=java.base/java.time=ALL-UNNAMED \
+    -Dloader.main=org.opengroup.osdu.register.provider.gcp.GcRegisterApplication \
+    -jar /register/register-${PROVIDER_NAME}.jar
+
diff --git a/provider/register-gc/docs/anthos/README.md b/provider/register-gc/docs/anthos/README.md
deleted file mode 100644
index 10c57cb30a09ab638cb8939c21edc7eb7c24b3ba..0000000000000000000000000000000000000000
--- a/provider/register-gc/docs/anthos/README.md
+++ /dev/null
@@ -1,335 +0,0 @@
-## Service Configuration for Baremetal
-
-## Environment variables:
-
-Define the following environment variables.
-
-Must have:
-
-| name                                      | value                                      | description                                                                                                                                                                                                                                | sensitive? | source |
-|-------------------------------------------|--------------------------------------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|------------|--------|
-| `SPRING_PROFILES_ACTIVE`                  | ex `anthos`                                | Spring profile that activate default configuration for Google Cloud environment                                                                                                                                                            | false      | -      |
-| `OPENID_PROVIDER_CLIENT_ID`               | `*****`                                    | Client id that represents this service and serves to request tokens, example `workload-identity-legal`                                                                                                                                     | yes        | -      |
-| `OPENID_PROVIDER_CLIENT_SECRET`           | `*****`                                    | This client secret that serves to request tokens                                                                                                                                                                                           | yes        | -      |
-| `OPENID_PROVIDER_URL`                     | `https://keycloack.com/auth/realms/master` | URL of OpenID Connect provider, it will be used as `<OpenID URL> + /.well-known/openid-configuration` to auto configure endpoint for token request                                                                                         | no         | -      |
-| `<POSTGRES_PASSWORD_ENV_VARIABLE_NAME>`   | ex `POSTGRES_PASS_OSDU`                    | Postgres password env name, name of that variable not defined at the service level, the name will be received through partition service. Each tenant can have it's own ENV name value, and it must be present in ENV of Register service   | yes        | -      |
-| `<AMQP_PASSWORD_ENV_VARIABLE_NAME>`       | ex `AMQP_PASS_OSDU`                        | AMQP password env name, name of that variable not defined at the service level, the name will be received through partition service. Each tenant can have it's own ENV name value, and it must be present in ENV of Register service       | yes        | -      |
-| `<AMQP_ADMIN_PASSWORD_ENV_VARIABLE_NAME>` | ex `AMQP_ADMIN_PASS_OSDU`                  | AMQP admin password env name, name of that variable not defined at the service level, the name will be received through partition service. Each tenant can have it's own ENV name value, and it must be present in ENV of Register service | yes        | -      |
-
-Defined in default application property file but possible to override:
-
-| name                        | value                                    | description                                                                                | sensitive? | source                              |
-|-----------------------------|------------------------------------------|--------------------------------------------------------------------------------------------|------------|-------------------------------------|
-| `LOG_PREFIX`                | `service`                                | Logging prefix                                                                             | no         | -                                   |
-| `SERVER_SERVLET_CONTEXPATH` | `/api/register/v1`                       | Register context path                                                                      | no         | -                                   |
-| `ENTITLEMENTS_HOST`         | ex `http://entitlements/entitlements/v1` | Entitlements API domain                                                                    | no         | output of infrastructure deployment |
-| `STORAGE_HOST`              | ex `http://storage/api/storage/v2`       | Storage API domain                                                                         | no         | output of infrastructure deployment |
-| `SUBSCRIBER_SECRET`         | ex`7a786376626e`                         | HMAC_SECRET from notification int tests in HEX , pattern(^[a-zA-Z0-9]{8,30}+$)             | yes        | output of infrastructure deployment |
-| `ENVIRONMENT`               | ex `dev`                                 | Service environment config                                                                 | no         | -                                   |
-| `PARTITION_HOST`            | ex `http://partition/api/partition/v1`   | Partition service API domain                                                               | no         | output of infrastructure deployment |
-| `SECRET_HOST`               | ex `http://secret`                       | Secret service API domain                                                                  | no         | output of infrastructure deployment |
-| `GROUP_ID`                  | ex `group`                               | The id of the groups is created. The default (and recommended for `jdbc`) value is `group` | no         | -                                   |
-
-These variables define service behavior, and are used to switch between `Reference` or `Google Cloud` environments, their overriding
-and usage in mixed mode was not tested. Usage of spring profiles is preferred.
-
-| name                     | value                  | description                                                                                                                 | sensitive? | source |
-|--------------------------|------------------------|-----------------------------------------------------------------------------------------------------------------------------|------------|--------|
-| `PARTITION_AUTH_ENABLED` | ex `true` or `false`   | Disable or enable auth token provisioning for requests to Partition service                                                 | no         | -      |
-| `OQMDRIVER`              | `rabbitmq` or `pubsub` | Oqm driver mode that defines which message broker will be used                                                              | no         | -      |
-| `OSMDRIVER`              | `datastore`            | Osm driver mode that defines which KV storage will be used                                                                  | no         | -      |
-| `SERVICE_TOKEN_PROVIDER` | `GCP` or `OPENID`      | Service account token provider, `GCP` means use Google service account `OPEIND` means use OpenId provider like `Keycloak`   | no         | -      |
-
-## Testing
-Navigate to register service's root folder and run all the tests:
-
-```bash
-# build + test + install core service code
-$ (cd register-core/ && mvn clean install)
-```
-
-## Test the application
-
-After the service has started it should be accessible via a web browser by visiting [http://localhost:8080/api/register/v1/swagger-ui.html](http://localhost:8080/api/register/v1/swagger-ui.html). If the request does not fail, you can then run the integration tests.
-
-### Running E2E Tests
-
-This section describes how to run cloud OSDU E2E tests (testing/register-test-baremetal).
-
-You will need to have the following environment variables defined.
-
-| name                                           | value                                                                            | description                                                                                                                             | sensitive?                              | source                              |
-|------------------------------------------------|----------------------------------------------------------------------------------|-----------------------------------------------------------------------------------------------------------------------------------------|-----------------------------------------|-------------------------------------|
-| `TEST_DE_OPS_OPENID_PROVIDER_CLIENT_ID`        | `********`                                                                       | Client Id for `DE_OPS_TESTER`                                                                                                           | yes                                     | --                                  |
-| `TEST_DE_OPS_OPENID_PROVIDER_CLIENT_SECRET`    | `********`                                                                       |                                                                                                                                         | Client secret for `DE_OPS_TESTER`       | yes                                 | -- |
-| `TEST_DE_ADMIN_OPENID_PROVIDER_CLIENT_ID`      | `********`                                                                       | Client Id for `DE_ADMIN_TESTER`                                                                                                         | yes                                     | --                                  |
-| `TEST_DE_ADMIN_OPENID_PROVIDER_CLIENT_SECRET`  | `********`                                                                       |                                                                                                                                         | Client secret for `DE_ADMIN_TESTER`     | yes                                 | -- |
-| `TEST_DE_EDITOR_OPENID_PROVIDER_CLIENT_ID`     | `********`                                                                       | Client Id for `DE_EDITOR_TESTER`                                                                                                        | yes                                     | --                                  |
-| `TEST_DE_EDITOR_OPENID_PROVIDER_CLIENT_SECRET` | `********`                                                                       |                                                                                                                                         | Client secret for `DE_EDITOR_TESTER`    | yes                                 | -- |
-| `TEST_NO_ACCESS_OPENID_PROVIDER_CLIENT_ID`     | `********`                                                                       | Client Id for `DE_NO_ACCESS_TESTER`                                                                                                     | yes                                     | --                                  |
-| `TEST_NO_ACCESS_OPENID_PROVIDER_CLIENT_SECRET` | `********`                                                                       |                                                                                                                                         | Client secret for `DE_NO_ACCESS_TESTER` | yes                                 | -- |
-| `TEST_OPENID_PROVIDER_URL`                     | `https://keycloak.com/auth/realms/osdu`                                          | OpenID provider url                                                                                                                     | yes                                     | --                                  |
-| `REGISTER_BASE_URL`                            | ex `https://os-register-dot-opendes.appspot.com/`                                | Register API endpoint                                                                                                                   | no                                      | output of infrastructure deployment |
-| `ENVIRONMENT`                                  | ex `local` OR `dev`                                                              | 'local' for local testing or 'dev' for dev testing                                                                                      | no                                      | -                                   |
-| `SUBSCRIBER_SECRET`                            | ex `********`                                                                    | String in hex , must match pattern ^[a-zA-Z0-9]{8,30}+$ & be in register variable SUBSCRIBER_SECRET                                     | yes                                     | -                                   |
-| `CLIENT_TENANT`                                | ex `nonexistenttenant`                                                           | Client tenant, it is supposed to be tenant that we do not have access to, it can be not existing tenant                                 | no                                      | -                                   |
-| `OSDU_TENANT`                                  | ex `osdu`                                                                        | OSDU tenant                                                                                                                             | no                                      | -                                   |
-| `SUBSCRIPTION_ID`                              | `********`                                                                       | A base64 encoded string of subscribed topic + subscriber url ex `records-changedhttp://localhost:8081/api/register/v1/test/challenge/1` | no                                      | -                                   |
-| `REGISTER_CUSTOM_PUSH_URL`                     | ex`https://os-register-dot-opendes.appspot.com/api/register/v1/test/challenge/1` | Register push url, that will act as subscriber                                                                                          | no                                      | -                                   |
-| `SUBSCRIBER_PRIVATE_KEY_ID`                    | `********`                                                                       | Private key id of DE_OPS_TESTER from notification int tests, required only for integration test                                         | yes                                     | output of infrastructure deployment |
-
-**Entitlements configuration for integration accounts**
-
-| DE_OPS_TESTER                                                                                                              | DE_ADMIN_TESTER                                                                                                               | DE_EDITOR_TESTER                                                                                                               | DE_NO_ACCESS_TESTER                                                                                 |
-|----------------------------------------------------------------------------------------------------------------------------|-------------------------------------------------------------------------------------------------------------------------------|--------------------------------------------------------------------------------------------------------------------------------|-----------------------------------------------------------------------------------------------------|
-| service.entitlements.user<br/>users.datalake.ops<br/>data.test1<br/>data.integration.test<br/>users@{tenant1}@{domain}.com | service.entitlements.user<br/>users.datalake.admins<br/>data.test1<br/>data.integration.test<br/>users@{tenant1}@{domain}.com | service.entitlements.user<br/>users.datalake.editors<br/>data.test1<br/>data.integration.test<br/>users@{tenant1}@{domain}.com | service.entitlements.user<br/>data.test1<br/>data.integration.test<br/>users@{tenant1}@{domain}.com |
-
-Execute following command to build code and run all the integration tests:
-
-```bash
-# Note: this assumes that the environment variables for integration tests as outlined
-#       above are already exported in your environment.
-$ (cd testing/register-test-core/ && mvn clean test)
-$ (cd testing/register-test-anthos/ && mvn clean test)
-```
-
-### Properties set in Partition service:
-
-Note that properties can be set in Partition as `sensitive` in that case in property `value` should be present not value itself, but ENV variable name.
-This variable should be present in environment of service that need that variable.
-
-Example:
-```
-    "elasticsearch.port": {
-      "sensitive": false, <- value not sensitive 
-      "value": "9243"  <- will be used as is.
-    },
-      "elasticsearch.password": {
-      "sensitive": true, <- value is sensitive 
-      "value": "ELASTIC_SEARCH_PASSWORD_OSDU" <- service consumer should have env variable ELASTIC_SEARCH_PASSWORD_OSDU with elastic search password
-    }
-```
-
-#### for OSM - Postgres:
-
-**database structure**
-OSM works with data logically organized as "partition"->"namespace"->"kind"->"record"->"columns". The above sequence
-describes how it is named in Google Datastore, where "partition" maps to "Google Cloud project".
-
-For example, this is how **Datastore** OSM driver contains records for "SUBSCRIPTION" data register:
-
-| hierarchy level     | value                            |
-|---------------------|----------------------------------|
-| partition (opendes) | osdu-cicd-epam                   |
-| namespace           | DE                               |
-| kind                | SUBSCRIPTION                     |
-| record              | `<multiple kind records>`        |
-| columns             | acl; bucket; kind; legal; etc... |
-
-And this is how **Postgres** OSM driver does. Notice, the above hierarchy is kept, but Postgres uses alternative entities
-for it.
-
-| Datastore hierarchy level        |    | Postgres alternative used  |
-|----------------------------------|----|----------------------------|
-| partition (Google Cloud project) | == | Postgres server URL        |
-| namespace                        | == | Schema                     |
-| kind                             | == | Table                      |
-| record                           | == | '<multiple table records>' |
-| columns                          | == | id, data (jsonb)           |
-
-As we can see in the above table, Postgres uses different approach in storing business data in records. Not like
-Datastore, which segments data into multiple physical columns, Postgres organises them into the single JSONB "data"
-column. It allows provisioning new data registers easily not taking care about specifics of certain registers structure.
-In the current OSM version (as on December'21) the Postgres OSM driver is not able to create new tables in runtime.
-
-So this is a responsibility of DevOps / CI/CD to provision all required SQL tables (for all required data kinds) when on new
-environment or tenant provisioning when using Postgres. Detailed instructions (with examples) for creating new tables is
-in the **OSM module Postgres driver README.md** `org/opengroup/osdu/core/gcp/osm/translate/postgresql/README.md`
-
-As a quick shortcut, this example snippet can be used by DevOps DBA:
-```postgres-psql
---CREATE SCHEMA "DE";
-CREATE TABLE DE."SUBSCRIPTION"(
-    id text COLLATE pg_catalog."default" NOT NULL,
-    pk bigint NOT NULL GENERATED ALWAYS AS IDENTITY PRIMARY KEY,
-    data jsonb NOT NULL,
-    CONSTRAINT SUBSCRIPTION_id UNIQUE (id)
-);
-CREATE INDEX SUBSCRIPTION_datagin ON exampleschema."SUBSCRIPTION" USING GIN (data);
-```
-
-```postgres-psql
-CREATE TABLE DE."ACTION"(
-    id text COLLATE pg_catalog."default" NOT NULL,
-    pk bigint NOT NULL GENERATED ALWAYS AS IDENTITY PRIMARY KEY,
-    data jsonb NOT NULL,
-    CONSTRAINT ACTION_id UNIQUE (id)
-);
-CREATE INDEX ACTION_datagin ON exampleschema."ACTION" USING GIN (data);
-```
-
-```postgres-psql
-CREATE TABLE DE."DDMS"(
-    id text COLLATE pg_catalog."default" NOT NULL,
-    pk bigint NOT NULL GENERATED ALWAYS AS IDENTITY PRIMARY KEY,
-    data jsonb NOT NULL,
-    CONSTRAINT DDMS_id UNIQUE (id)
-);
-CREATE INDEX DDMS_datagin ON exampleschema."DDMS" USING GIN (data);
-```
-
-**prefix:** `osm.postgres`
-It can be overridden by:
-- through the Spring Boot property `osm.postgres.partitionPropertiesPrefix`
-- environment variable `OSM_POSTGRES_PARTITIONPROPERTIESPREFIX`
-
-**PropertySet:**
-
-| Property                         | Description |
-|----------------------------------|-------------|
-| osm.postgres.datasource.url      | server URL  |
-| osm.postgres.datasource.username | username    |
-| osm.postgres.datasource.password | password    |
-
-<details><summary>Example of a definition for a single tenant</summary>
-
-```
-curl -L -X PATCH 'https://dev.osdu.club/api/partition/v1/partitions/opendes' -H 'data-partition-id: opendes' -H 'Authorization: Bearer ...' -H 'Content-Type: application/json' --data-raw '{
-  "properties": {
-    "osm.postgres.datasource.url": {
-      "sensitive": false,
-      "value": "jdbc:postgresql://35.239.205.90:5432/postgres"
-    },
-    "osm.postgres.datasource.username": {
-      "sensitive": false,
-      "value": "osm_poc"
-    },
-    "osm.postgres.datasource.password": {
-      "sensitive": true,
-      "value": "<POSTGRES_PASSWORD_ENV_VARIABLE_NAME>" <- (Not actual value, just name of env variable)
-    }
-  }
-}'
-```
-</details>
-
-#### for OQM - RabbitMQ:
-**prefix:** `oqm.rabbitmq`
-It can be overridden by:
-
-- through the Spring Boot property `oqm.rabbitmq.partitionPropertiesPrefix`
-- environment variable `OQM_RABBITMQ_PARTITIONPROPERTIESPREFIX`
-
-**PropertySet** (for two types of connection: messaging and admin operations):
-
-| Property                    | Description              |
-|-----------------------------|--------------------------|
-| oqm.rabbitmq.amqp.host      | messaging hostname or IP |
-| oqm.rabbitmq.amqp.port      | - port                   |
-| oqm.rabbitmq.amqp.path      | - path                   |
-| oqm.rabbitmq.amqp.username  | - username               |
-| oqm.rabbitmq.amqp.password  | - password               |
-| oqm.rabbitmq.admin.schema   | admin host schema        |
-| oqm.rabbitmq.admin.host     | - host name              |
-| oqm.rabbitmq.admin.port     | - port                   |
-| oqm.rabbitmq.admin.path     | - path                   |
-| oqm.rabbitmq.admin.username | - username               |
-| oqm.rabbitmq.admin.password | - password               |
-
-<details><summary>Example of a single tenant definition</summary>
-
-```
-curl -L -X PATCH 'https://dev.osdu.club/api/partition/v1/partitions/opendes' -H 'data-partition-id: opendes' -H 'Authorization: Bearer ...' -H 'Content-Type: application/json' --data-raw '{
-  "properties": {
-    "oqm.rabbitmq.amqp.host": {
-      "sensitive": false,
-      "value": "localhost"
-    },
-    "oqm.rabbitmq.amqp.port": {
-      "sensitive": false,
-      "value": "5672"
-    },
-    "oqm.rabbitmq.amqp.path": {
-      "sensitive": false,
-      "value": ""
-    },
-    "oqm.rabbitmq.amqp.username": {
-      "sensitive": false,
-      "value": "guest"
-    },
-    "oqm.rabbitmq.amqp.password": {
-      "sensitive": true,
-      "value": "<AMQP_PASSWORD_ENV_VARIABLE_NAME>" <- (Not actual value, just name of env variable)
-    },
-
-     "oqm.rabbitmq.admin.schema": {
-      "sensitive": false,
-      "value": "http"
-    },
-     "oqm.rabbitmq.admin.host": {
-      "sensitive": false,
-      "value": "localhost"
-    },
-    "oqm.rabbitmq.admin.port": {
-      "sensitive": false,
-      "value": "9002"
-    },
-    "oqm.rabbitmq.admin.path": {
-      "sensitive": false,
-      "value": "/api"
-    },
-    "oqm.rabbitmq.admin.username": {
-      "sensitive": false,
-      "value": "guest"
-    },
-    "oqm.rabbitmq.admin.password": {
-      "sensitive": true,
-      "value": "<AMQP_ADMIN_PASSWORD_ENV_VARIABLE_NAME>" <- (Not actual value, just name of env variable)
-    }
-  }
-}'
-```
-</details>
-
-## Interaction with message brokers
-
-### Specifics of work through PULL subscription
-
-To receive messages from brokers, this solution uses the PULL-subscriber mechanism in the Notification service.
-This is its cardinal difference from other implementations that use PUSH-subscribers (webhooks).
-This opens a wide choice when choosing brokers.
-
-When using PULL-subscribers, there is a need to restore Notification service subscribers for each Subscription
-at the start of Notification service, as well as in the runtime,
-upon registration of a new Subscription by the Register service.
-
-To do this, a special "command" topic is involved:
-
-- the default topic name is `register-subscriber-control`.
-
-If necessary, the name of the topic can be overridden through:
-
-- Spring Boot property `oqm.registerSubscriberControlTopicName`
-- environment variable `OQM_REGISTERSUBSCRIBERCONTROLTOPICNAME`
-
-A topic is created, in its absence, when any of Register or Notification services starts.
-
-See in Notification service repository in the `provider/notification-gc/README.md` file for information
-on how the Notification service at its start restores its Subscribers to all already registered Subscriptions,
-and also how it listens to the "command" topic and adds its Subscribers upon registration of new Subscriptions by the Register Service.
-
-## License
-Copyright © Google LLC
-Copyright © EPAM Systems
-
-Licensed under the Apache License, Version 2.0 (the "License");
-you may not use this file except in compliance with the License.
-You may obtain a copy of the License at
-
-[http://www.apache.org/licenses/LICENSE-2.0](http://www.apache.org/licenses/LICENSE-2.0)
-
-Unless required by applicable law or agreed to in writing, software
-distributed under the License is distributed on an "AS IS" BASIS,
-WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-See the License for the specific language governing permissions and
-limitations under the License.
diff --git a/provider/register-gc/pom.xml b/provider/register-gc/pom.xml
index 63cf493351668ac5695436318283ab49ff33aad6..90545951aa4d98c89f4e7e17362da7501a1074b3 100644
--- a/provider/register-gc/pom.xml
+++ b/provider/register-gc/pom.xml
@@ -58,69 +58,19 @@
     <dependencies>
         <dependency>
             <groupId>org.opengroup.osdu</groupId>
-            <artifactId>register-core</artifactId>
+            <artifactId>register-core-plus</artifactId>
             <version>0.28.0-SNAPSHOT</version>
         </dependency>
-        <dependency>
-            <groupId>org.opengroup.osdu</groupId>
-            <artifactId>core-lib-gc-spring6</artifactId>
-            <version>0.26.0</version>
-        </dependency>
-        <dependency>
-            <groupId>org.opengroup.osdu</groupId>
-            <artifactId>oqm</artifactId>
-            <version>0.26.0</version>
-        </dependency>
-        <dependency>
-            <groupId>org.opengroup.osdu</groupId>
-            <artifactId>osm</artifactId>
-            <version>0.26.0</version>
-        </dependency>
-
-        <dependency>
-            <groupId>jakarta.annotation</groupId>
-            <artifactId>jakarta.annotation-api</artifactId>
-            <version>2.1.1</version>
-        </dependency>
-        <dependency>
-            <groupId>jakarta.servlet</groupId>
-            <artifactId>jakarta.servlet-api</artifactId>
-            <version>6.0.0</version>
-            <scope>provided</scope>
-        </dependency>
-
-        <dependency>
-            <groupId>org.springframework.security</groupId>
-            <artifactId>spring-security-config</artifactId>
-        </dependency>
 
         <dependency>
             <groupId>ch.qos.logback.contrib</groupId>
             <artifactId>logback-json-classic</artifactId>
             <version>0.1.5</version>
         </dependency>
-
-        <!-- Testing -->
-        <dependency>
-            <groupId>org.springframework.boot</groupId>
-            <artifactId>spring-boot-starter-test</artifactId>
-            <scope>test</scope>
-        </dependency>
-        <dependency>
-            <groupId>junit</groupId>
-            <artifactId>junit</artifactId>
-            <version>4.13.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.springframework.boot</groupId>
-            <artifactId>spring-boot-starter-actuator</artifactId>
+            <groupId>ch.qos.logback.contrib</groupId>
+            <artifactId>logback-jackson</artifactId>
+            <version>0.1.5</version>
         </dependency>
     </dependencies>
 
@@ -137,7 +87,9 @@
                         </goals>
                         <configuration>
                             <classifier>spring-boot</classifier>
-                            <mainClass>org.opengroup.osdu.register.provider.gcp.RegisterApplication</mainClass>
+                            <mainClass>
+                                org.springframework.boot.loader.launch.PropertiesLauncher
+                            </mainClass>
                         </configuration>
                     </execution>
                 </executions>
@@ -161,21 +113,6 @@
                     </execution>
                 </executions>
             </plugin>
-            <plugin>
-                <groupId>org.apache.maven.plugins</groupId>
-                <artifactId>maven-surefire-plugin</artifactId>
-                <version>3.0.0-M9</version>
-                <dependencies>
-                    <dependency>
-                        <groupId>org.apache.maven.surefire</groupId>
-                        <artifactId>surefire-junit47</artifactId>
-                        <version>3.0.0-M9</version>
-                    </dependency>
-                </dependencies>
-                <configuration>
-                    <trimStackTrace>false</trimStackTrace>
-                </configuration>
-            </plugin>
         </plugins>
     </build>
 </project>
diff --git a/provider/register-gc/src/main/java/org/opengroup/osdu/register/provider/gcp/GcRegisterApplication.java b/provider/register-gc/src/main/java/org/opengroup/osdu/register/provider/gcp/GcRegisterApplication.java
new file mode 100644
index 0000000000000000000000000000000000000000..ce937cd6cc766627fc20960135efa8e5c5c37b08
--- /dev/null
+++ b/provider/register-gc/src/main/java/org/opengroup/osdu/register/provider/gcp/GcRegisterApplication.java
@@ -0,0 +1,43 @@
+/*
+ Copyright 2020-2024 Google LLC
+ Copyright 2020-2024 EPAM Systems, Inc
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+   http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+*/
+
+package org.opengroup.osdu.register.provider.gcp;
+
+import org.opengroup.osdu.register.RegisterApplication;
+import org.springframework.boot.SpringApplication;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+import org.springframework.boot.context.properties.ConfigurationPropertiesScan;
+import org.springframework.context.annotation.ComponentScan;
+import org.springframework.context.annotation.FilterType;
+import org.springframework.context.annotation.PropertySource;
+
+@SpringBootApplication
+@ComponentScan(
+    value = {"org.opengroup.osdu"},
+    excludeFilters = {
+      @ComponentScan.Filter(
+          type = FilterType.ASSIGNABLE_TYPE,
+          value = {RegisterApplication.class})
+    })
+@ConfigurationPropertiesScan
+@PropertySource("classpath:swagger.properties")
+public class GcRegisterApplication {
+
+  public static void main(String[] args) {
+    SpringApplication.run(GcRegisterApplication.class, args);
+  }
+}
diff --git a/provider/register-gc/src/main/java/org/opengroup/osdu/register/provider/gcp/RegisterApplication.java b/provider/register-gc/src/main/java/org/opengroup/osdu/register/provider/gcp/RegisterApplication.java
deleted file mode 100644
index cda1f99a7163a49e05c356f6e0dd42b9152579b3..0000000000000000000000000000000000000000
--- a/provider/register-gc/src/main/java/org/opengroup/osdu/register/provider/gcp/RegisterApplication.java
+++ /dev/null
@@ -1,39 +0,0 @@
-/*
-  Copyright 2020 Google LLC
-  Copyright 2020 EPAM Systems, Inc
-
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-
-    http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
- */
-
-package org.opengroup.osdu.register.provider.gcp;
-
-import jakarta.annotation.PostConstruct;
-import org.springframework.boot.SpringApplication;
-import org.springframework.boot.autoconfigure.SpringBootApplication;
-import org.springframework.context.annotation.ComponentScan;
-import org.springframework.context.annotation.PropertySource;
-
-@ComponentScan(value = {"org.opengroup.osdu"})
-@SpringBootApplication
-@PropertySource("classpath:swagger.properties")
-public class RegisterApplication {
-
-    @PostConstruct
-    void f() {
-
-    }
-
-    public static void main(String[] args) {
-        SpringApplication.run(RegisterApplication.class, args);
-    }
-}
diff --git a/provider/register-gc/src/main/java/org/opengroup/osdu/register/provider/gcp/action/OsmActionRepo.java b/provider/register-gc/src/main/java/org/opengroup/osdu/register/provider/gcp/action/OsmActionRepo.java
deleted file mode 100644
index 8c7421cb7c9b7bdbd90c0d977b5f4bf05671fea6..0000000000000000000000000000000000000000
--- a/provider/register-gc/src/main/java/org/opengroup/osdu/register/provider/gcp/action/OsmActionRepo.java
+++ /dev/null
@@ -1,189 +0,0 @@
-/*
- * Copyright 2017-2020, Schlumberger
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.opengroup.osdu.register.provider.gcp.action;
-
-import com.google.gson.Gson;
-import lombok.RequiredArgsConstructor;
-import lombok.extern.slf4j.Slf4j;
-import org.apache.http.HttpStatus;
-import org.opengroup.osdu.core.common.model.http.AppException;
-import org.opengroup.osdu.core.common.model.tenant.TenantInfo;
-import org.opengroup.osdu.core.common.util.Crc32c;
-import org.opengroup.osdu.core.gcp.osm.model.Destination;
-import org.opengroup.osdu.core.gcp.osm.model.Kind;
-import org.opengroup.osdu.core.gcp.osm.model.Namespace;
-import org.opengroup.osdu.core.gcp.osm.model.query.GetQuery;
-import org.opengroup.osdu.core.gcp.osm.service.Context;
-import org.opengroup.osdu.core.gcp.osm.service.Transaction;
-import org.opengroup.osdu.core.gcp.osm.translate.ExceptionClassifier;
-import org.opengroup.osdu.register.action.model.Action;
-import org.opengroup.osdu.register.action.model.Filter;
-import org.opengroup.osdu.register.provider.gcp.action.model.ActionDto;
-import org.opengroup.osdu.register.provider.interfaces.action.IActionRepo;
-import org.springframework.beans.BeanUtils;
-import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
-import org.springframework.context.annotation.Scope;
-import org.springframework.stereotype.Repository;
-
-import java.util.ArrayList;
-import java.util.List;
-import java.util.concurrent.locks.ReentrantLock;
-
-import static org.opengroup.osdu.core.gcp.osm.model.where.predicate.Eq.eq;
-import static org.springframework.beans.factory.config.BeanDefinition.SCOPE_SINGLETON;
-
-@Slf4j
-@Repository
-@Scope(SCOPE_SINGLETON)
-@ConditionalOnProperty(name = "osmDriver")
-@RequiredArgsConstructor
-public class OsmActionRepo implements IActionRepo {
-
-    private static final String CONFLICT_REASON = "Conflict";
-
-    private final Context context;
-    private final TenantInfo tenantInfo;
-    ReentrantLock actionDeleteLock = new ReentrantLock();
-
-    private static final Kind KIND = new Kind("ACTION");
-
-    private Destination getDestination() {
-        return Destination.builder()
-            .partitionId(tenantInfo.getDataPartitionId())
-            .namespace(new Namespace(tenantInfo.getName()))
-            .kind(KIND)
-            .build();
-    }
-
-    @Override
-    public Action createAction(Action action) {
-        Transaction txn = context.beginTransaction(getDestination());
-        try {
-            if (context.getOne(new GetQuery<>(ActionDto.class, getDestination(), eq("id", action.getId()))) != null) {
-                throwConflict();
-            }
-            ActionDto actionDto = getDtoByAction(action);
-            context.create(actionDto, getDestination());
-            txn.commitIfActive();
-        } catch (AppException e) {
-            throw e;
-        } catch (Exception ex) {
-            ExceptionClassifier.ExceptionClassification classification = context.classifyException(ex);
-            switch (classification) {
-                case ALREADY_EXISTS:
-                    throwConflict();
-                case CONFLICT:
-                    throw new AppException(409, CONFLICT_REASON, "ABORTED due to conflict");
-                default:
-                    throw ex;
-            }
-        } finally {
-            txn.rollbackIfActive();
-        }
-        return action;
-
-    }
-
-    @Override
-    public Action get(String id) {
-
-        ActionDto actionDto = context.getOne(new GetQuery<>(ActionDto.class, getDestination(), eq("id", id)));
-
-        if (actionDto == null)
-            throw new AppException(404, "Not found", String.format("Action with id %s does not exist.", id));
-
-        Action action = getActionByDto(actionDto);
-
-        return action;
-    }
-
-    @Override
-    public boolean delete(String id) {
-        boolean output = false;
-
-        Transaction txn = context.beginTransaction(getDestination());
-        try {
-            actionDeleteLock.lock();
-            if (context.getOne(new GetQuery<>(ActionDto.class, getDestination(), eq("id", id))) != null) {
-                context.deleteById(ActionDto.class, getDestination(), id);
-                txn.commitIfActive();
-                output = true;
-            }
-        } catch (Exception ex) {
-            ExceptionClassifier.ExceptionClassification classification = context.classifyException(ex);
-            switch (classification) {
-                case ALREADY_EXISTS:
-                    throw new AppException(409, CONFLICT_REASON, "Another request is trying to delete the same DDMS.");
-                case CONFLICT:
-                    throw new AppException(409, CONFLICT_REASON, "ABORTED due to conflict");
-                default:
-                    throw ex;
-            }
-        } finally {
-            actionDeleteLock.unlock();
-            txn.rollbackIfActive();
-        }
-        return output;
-    }
-
-
-    private void throwConflict() {
-        throw new AppException(409, CONFLICT_REASON, "An action already exists with the same message and endpoint combination");
-    }
-
-    @Override
-    public List<Action> getAllActions() {
-        List<ActionDto> actionDtos = context.getResultsAsList(new GetQuery<>(ActionDto.class, getDestination()));
-        List<Action> actions = new ArrayList<>();
-        for (ActionDto dto : actionDtos) {
-            Action action = getActionByDto(dto);
-        }
-        return actions;
-    }
-
-    String getActionChecksum(Action action) {
-        String serializedAction = new Gson().toJson(action);
-        return Crc32c.hashToBase64EncodedString(serializedAction);
-    }
-
-    private ActionDto getDtoByAction(Action action) {
-        Filter filter = action.getFilter();
-
-        ActionDto actionDto = new ActionDto();
-        BeanUtils.copyProperties(action, actionDto);
-        actionDto.setCheckSum(getActionChecksum(action));
-        actionDto.setType(filter.getEntityType());
-        actionDto.setSource(filter.getSource());
-        actionDto.setVersion(filter.getVersion());
-
-        return actionDto;
-    }
-
-    private Action getActionByDto(ActionDto actionDto) {
-        Action action = new Action();
-        BeanUtils.copyProperties(actionDto, action);
-
-        Filter filter = new Filter();
-        filter.setEntityType(actionDto.getType());
-        filter.setSource(actionDto.getSource());
-        filter.setVersion(actionDto.getVersion());
-        action.setFilter(filter);
-
-        return action;
-    }
-
-}
diff --git a/provider/register-gc/src/main/java/org/opengroup/osdu/register/provider/gcp/action/model/ActionDto.java b/provider/register-gc/src/main/java/org/opengroup/osdu/register/provider/gcp/action/model/ActionDto.java
deleted file mode 100644
index 275a8214011ee986973c97b62d21266412649630..0000000000000000000000000000000000000000
--- a/provider/register-gc/src/main/java/org/opengroup/osdu/register/provider/gcp/action/model/ActionDto.java
+++ /dev/null
@@ -1,42 +0,0 @@
-/*
-  Copyright 2020 Google LLC
-  Copyright 2020 EPAM Systems, Inc
-
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-
-    http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
- */
-package org.opengroup.osdu.register.provider.gcp.action.model;
-
-import lombok.AllArgsConstructor;
-import lombok.Data;
-import lombok.NoArgsConstructor;
-
-import java.sql.Timestamp;
-import java.util.List;
-
-@Data
-@AllArgsConstructor
-@NoArgsConstructor
-public class ActionDto {
-    private String id;
-    private String name;
-    private String description;
-    private String img;
-    private String url;
-    private String contactEmail;
-    private Timestamp createdOnEpoch;
-
-    List<String> type;
-    List<String> source;
-    List<String> version;
-    private String checkSum;
-}
diff --git a/provider/register-gc/src/main/java/org/opengroup/osdu/register/provider/gcp/api/GetAllSubscriptions.java b/provider/register-gc/src/main/java/org/opengroup/osdu/register/provider/gcp/api/GetAllSubscriptions.java
deleted file mode 100644
index 2337b039cbc11e506383e394ac5244eee1e6fb98..0000000000000000000000000000000000000000
--- a/provider/register-gc/src/main/java/org/opengroup/osdu/register/provider/gcp/api/GetAllSubscriptions.java
+++ /dev/null
@@ -1,39 +0,0 @@
-/*
- *  Copyright 2020-2023 Google LLC
- *  Copyright 2020-2023 EPAM Systems, Inc
- *
- *  Licensed under the Apache License, Version 2.0 (the "License");
- *  you may not use this file except in compliance with the License.
- *  You may obtain a copy of the License at
- *
- *    http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
- */
-
-package org.opengroup.osdu.register.provider.gcp.api;
-
-import lombok.RequiredArgsConstructor;
-import org.opengroup.osdu.register.provider.interfaces.subscriber.ISubscriptionRepository;
-import org.opengroup.osdu.register.subscriber.model.Subscription;
-import org.springframework.stereotype.Service;
-
-import java.util.List;
-import java.util.stream.Collectors;
-
-@Service
-@RequiredArgsConstructor
-public class GetAllSubscriptions {
-
-    private final ISubscriptionRepository subscriptionRepository;
-
-    public List<Subscription> run() throws Exception {
-        return subscriptionRepository.getAll().stream()
-                .peek(subscription -> subscription.setSecret(null))
-                .collect(Collectors.toList());
-    }
-}
diff --git a/provider/register-gc/src/main/java/org/opengroup/osdu/register/provider/gcp/api/SubscriberApiGcp.java b/provider/register-gc/src/main/java/org/opengroup/osdu/register/provider/gcp/api/SubscriberApiGcp.java
deleted file mode 100644
index df3c073a23f17c681a75ad901f0610a6e2baac05..0000000000000000000000000000000000000000
--- a/provider/register-gc/src/main/java/org/opengroup/osdu/register/provider/gcp/api/SubscriberApiGcp.java
+++ /dev/null
@@ -1,51 +0,0 @@
-/*
- *  Copyright 2020-2023 Google LLC
- *  Copyright 2020-2023 EPAM Systems, Inc
- *
- *  Licensed under the Apache License, Version 2.0 (the "License");
- *  you may not use this file except in compliance with the License.
- *  You may obtain a copy of the License at
- *
- *    http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
- */
-
-package org.opengroup.osdu.register.provider.gcp.api;
-
-import org.opengroup.osdu.register.subscriber.model.Subscription;
-import org.opengroup.osdu.register.utils.ServiceRole;
-import org.springframework.http.HttpStatus;
-import org.springframework.http.ResponseEntity;
-import org.springframework.security.access.prepost.PreAuthorize;
-import org.springframework.validation.annotation.Validated;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
-import org.springframework.web.context.annotation.RequestScope;
-
-import jakarta.inject.Inject;
-import jakarta.inject.Provider;
-import java.util.List;
-
-@RestController
-@RequestMapping("/")
-@RequestScope
-@Validated
-public class SubscriberApiGcp {
-
-    @Inject
-    private Provider<GetAllSubscriptions> getAllSubscriptions; //lazy load for performance
-
-    @GetMapping("subscriptions")
-    @PreAuthorize("@authorizationFilter.hasAnyPermission('" + ServiceRole.OPS + "', '" + ServiceRole.ADMIN + "', '" + ServiceRole.EDITOR + "')")
-    public ResponseEntity<List<Subscription>> getSubscriptions() throws Exception {
-        List<Subscription> output = getAllSubscriptions.get().run();
-        return new ResponseEntity<>(output, HttpStatus.OK);
-    }
-}
-
diff --git a/provider/register-gc/src/main/java/org/opengroup/osdu/register/provider/gcp/api/test/SubscriberListenerTestApi.java b/provider/register-gc/src/main/java/org/opengroup/osdu/register/provider/gcp/api/test/SubscriberListenerTestApi.java
deleted file mode 100644
index e06ce581c5f93260c2ca10e97e047c80bf489afd..0000000000000000000000000000000000000000
--- a/provider/register-gc/src/main/java/org/opengroup/osdu/register/provider/gcp/api/test/SubscriberListenerTestApi.java
+++ /dev/null
@@ -1,102 +0,0 @@
-package org.opengroup.osdu.register.provider.gcp.api.test;
-
-import org.opengroup.osdu.core.common.cryptographic.ISignatureService;
-import org.opengroup.osdu.core.common.cryptographic.SignatureServiceException;
-import org.opengroup.osdu.core.common.logging.JaxRsDpsLog;
-import org.opengroup.osdu.core.common.model.http.DpsHeaders;
-import org.opengroup.osdu.register.api.dto.ChallengeResponse;
-import org.opengroup.osdu.register.provider.interfaces.subscriber.ITestSubscription;
-import org.opengroup.osdu.register.provider.interfaces.verifier.GsaTokenVerifier;
-import org.opengroup.osdu.register.utils.AppServiceConfig;
-import org.opengroup.osdu.register.utils.HashingUtil;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
-import org.springframework.validation.annotation.Validated;
-import org.springframework.web.bind.annotation.*;
-
-import jakarta.inject.Inject;
-import jakarta.inject.Provider;
-import jakarta.validation.ValidationException;
-import jakarta.validation.constraints.NotBlank;
-import java.util.HashMap;
-import java.util.Map;
-import java.util.concurrent.atomic.AtomicLong;
-
-@RestController
-@RequestMapping("/test-gc")
-@ConditionalOnProperty(prefix = "test", name = "endpoint", havingValue = "true")
-@Validated
-public class SubscriberListenerTestApi {
-  @Autowired
-  private ISignatureService signatureService;
-  @Autowired
-  private AppServiceConfig serviceConfig;
-  @Autowired
-  private JaxRsDpsLog logger;
-  @Autowired
-  private ITestSubscription testSubscription;
-  @Autowired
-  private GsaTokenVerifier gsaTokenVerifier;
-  @Inject
-  private Provider<DpsHeaders> headersProvider;
-  private final static Map<String, AtomicLong> notificationsState = new HashMap<>();
-
-  @GetMapping("challenge/{path}")
-  public ChallengeResponse testCrc(@PathVariable String path, @RequestParam("crc") @NotBlank String crc,
-      @RequestParam("hmac") @NotBlank String hmac) {
-    try {
-      signatureService.verifyHmacSignature(hmac, this.serviceConfig.getSubscriberSecret());
-      logger.debug("GC tests: Signature verified and sending response");
-      notificationsState.putIfAbsent(path, new AtomicLong());
-      // Use the secret you send to the subscriber registration create request
-      return new ChallengeResponse(HashingUtil.hashString(crc, this.serviceConfig.getSubscriberSecret()));
-    } catch (SignatureServiceException e) {
-      throw new ValidationException("Authorization signature validation Failed");
-    }
-  }
-
-  @PostMapping("challenge/{path}")
-  public void testPushHmac(@PathVariable String path, @RequestBody Object o, @RequestParam("hmac") String hmac) {
-    try {
-      signatureService.verifyHmacSignature(hmac, this.serviceConfig.getSubscriberSecret());
-      logger.debug("GC tests: Sending acknowledgement from hmac endpoint");
-      // Performing End Point Notification Acknowledgement
-      try {
-        testSubscription.performTestAcknowledgement();
-        notificationsState.putIfAbsent(path, new AtomicLong());
-        notificationsState.get(path).getAndIncrement();
-      } catch (Exception e) {
-        logger.error("An error occurred in Test Acknowledgement: " + e.toString());
-      }
-    } catch (SignatureServiceException e) {
-      throw new ValidationException("Authorization signature validation Failed");
-    }
-  }
-
-  @GetMapping("/gsa-challenge/{path}")
-  public ChallengeResponse testGsa(@PathVariable String path, @RequestParam("crc") @NotBlank String crc) {
-    DpsHeaders headers = headersProvider.get();
-    if (!gsaTokenVerifier.verify(headers.getAuthorization())) {
-      throw new ValidationException("GC tests: Authorization signature validation Failed");
-    }
-    notificationsState.putIfAbsent(path, new AtomicLong());
-    logger.debug("GC tests: Token verified and sending response");
-    return new ChallengeResponse(HashingUtil.hashString(crc, this.serviceConfig.getSubscriberPrivateKeyId()));
-  }
-
-  @PostMapping("/gsa-challenge/{path}")
-  public void testPushGsa(@PathVariable String path, @RequestBody Object o) {
-    DpsHeaders headers = headersProvider.get();
-    if (!gsaTokenVerifier.verify(headers.getAuthorization())) {
-      throw new ValidationException("Authorization signature validation Failed");
-    }
-    notificationsState.putIfAbsent(path, new AtomicLong());
-    notificationsState.get(path).getAndIncrement();
-    logger.debug("Sending acknowledgement from gsa endpoint");
-  }
-
-  @GetMapping("state")
-  public Map<String, AtomicLong> getTestEndpointState() {
-    return notificationsState;
-  }
-}
diff --git a/provider/register-gc/src/main/java/org/opengroup/osdu/register/provider/gcp/cache/CacheConfig.java b/provider/register-gc/src/main/java/org/opengroup/osdu/register/provider/gcp/cache/CacheConfig.java
deleted file mode 100644
index a093643228054940deb8a14f6f27f58e7fe2542f..0000000000000000000000000000000000000000
--- a/provider/register-gc/src/main/java/org/opengroup/osdu/register/provider/gcp/cache/CacheConfig.java
+++ /dev/null
@@ -1,37 +0,0 @@
-/*
- *  Copyright 2020-2023 Google LLC
- *  Copyright 2020-2023 EPAM Systems, Inc
- *
- *  Licensed under the Apache License, Version 2.0 (the "License");
- *  you may not use this file except in compliance with the License.
- *  You may obtain a copy of the License at
- *
- *    http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
- */
-
-package org.opengroup.osdu.register.provider.gcp.cache;
-
-import lombok.RequiredArgsConstructor;
-import org.opengroup.osdu.core.common.cache.ICache;
-import org.opengroup.osdu.core.common.cache.VmCache;
-import org.opengroup.osdu.core.common.cache.enums.CachingStrategy;
-import org.opengroup.osdu.core.common.partition.PartitionInfo;
-import org.springframework.context.annotation.Bean;
-import org.springframework.context.annotation.Configuration;
-
-@Configuration
-@RequiredArgsConstructor
-public class CacheConfig {
-
-  @Bean
-  public ICache<String, PartitionInfo> partitionInfoCache() {
-    return new VmCache<>(600, 2000, CachingStrategy.EXPIRE_AFTER_WRITE);
-  }
-
-}
diff --git a/provider/register-gc/src/main/java/org/opengroup/osdu/register/provider/gcp/cache/GcGroupCache.java b/provider/register-gc/src/main/java/org/opengroup/osdu/register/provider/gcp/cache/GcGroupCache.java
deleted file mode 100644
index 952b851a6675dc54b3867757f2a951249ab35358..0000000000000000000000000000000000000000
--- a/provider/register-gc/src/main/java/org/opengroup/osdu/register/provider/gcp/cache/GcGroupCache.java
+++ /dev/null
@@ -1,56 +0,0 @@
-/*
- *  Copyright 2020-2023 Google LLC
- *  Copyright 2020-2023 EPAM Systems, Inc
- *
- *  Licensed under the Apache License, Version 2.0 (the "License");
- *  you may not use this file except in compliance with the License.
- *  You may obtain a copy of the License at
- *
- *    http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
- */
-
-package org.opengroup.osdu.register.provider.gcp.cache;
-
-import org.opengroup.osdu.core.common.model.entitlements.AuthorizationResponse;
-import org.opengroup.osdu.register.di.GroupVmCache;
-import org.springframework.beans.factory.annotation.Value;
-import org.springframework.context.annotation.Primary;
-import org.springframework.stereotype.Component;
-
-// Group cache is used in common part. According to the current Google Cloud architecture, we don't
-// use cache. Thus, methods are empty.
-@Primary
-@Component
-public class GcGroupCache extends GroupVmCache {
-  public GcGroupCache(
-      @Value("${app.maxExpireTime:60}") int maxExpireTime,
-      @Value("${app.maxCacheSize:1000}") int maxCacheSize) {
-    super(maxExpireTime, maxCacheSize);
-  }
-
-  @Override
-  public void put(String key, AuthorizationResponse authorizationResponse) {
-    // do nothing
-  }
-
-  @Override
-  public AuthorizationResponse get(String key) {
-    return null;
-  }
-
-  @Override
-  public void delete(String key) {
-    // do nothing
-  }
-
-  @Override
-  public void clearAll() {
-    // do nothing
-  }
-}
diff --git a/provider/register-gc/src/main/java/org/opengroup/osdu/register/provider/gcp/config/RegisterAccessGroups.java b/provider/register-gc/src/main/java/org/opengroup/osdu/register/provider/gcp/config/RegisterAccessGroups.java
deleted file mode 100644
index f0683a9086744affcc29403fd030ee7aa33da0ed..0000000000000000000000000000000000000000
--- a/provider/register-gc/src/main/java/org/opengroup/osdu/register/provider/gcp/config/RegisterAccessGroups.java
+++ /dev/null
@@ -1,35 +0,0 @@
-/*
- Copyright 2020-2024 Google LLC
- Copyright 2020-2024 EPAM Systems, Inc
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
-   http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
-*/
-
-package org.opengroup.osdu.register.provider.gcp.config;
-
-import org.opengroup.osdu.core.common.secret.AccessGroups;
-
-public class RegisterAccessGroups implements AccessGroups {
-  private static final String REGISTER_SECRET_OWNERS_GROUP = "register.secret.owners";
-  private static final String REGISTER_SECRET_VIEWERS_GROUP = "register.secret.viewers";
-
-  @Override
-  public String accessOwnersGroup() {
-    return REGISTER_SECRET_OWNERS_GROUP;
-  }
-
-  @Override
-  public String accessViewersGroup() {
-    return REGISTER_SECRET_VIEWERS_GROUP;
-  }
-}
diff --git a/provider/register-gc/src/main/java/org/opengroup/osdu/register/provider/gcp/config/RegisterConfigurationProperties.java b/provider/register-gc/src/main/java/org/opengroup/osdu/register/provider/gcp/config/RegisterConfigurationProperties.java
deleted file mode 100644
index d356fe94fd4381e4d4f2aeba713f7a9efc06faaa..0000000000000000000000000000000000000000
--- a/provider/register-gc/src/main/java/org/opengroup/osdu/register/provider/gcp/config/RegisterConfigurationProperties.java
+++ /dev/null
@@ -1,30 +0,0 @@
-/*
- Copyright 2020-2024 Google LLC
- Copyright 2020-2024 EPAM Systems, Inc
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
-   http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
-*/
-
-package org.opengroup.osdu.register.provider.gcp.config;
-
-import lombok.Data;
-import org.springframework.boot.context.properties.ConfigurationProperties;
-import org.springframework.context.annotation.Configuration;
-
-@Data
-@Configuration
-@ConfigurationProperties
-public class RegisterConfigurationProperties {
-  private String secretApi;
-  private String domain;
-}
diff --git a/provider/register-gc/src/main/java/org/opengroup/osdu/register/provider/gcp/config/SecretApiConfiguration.java b/provider/register-gc/src/main/java/org/opengroup/osdu/register/provider/gcp/config/SecretApiConfiguration.java
deleted file mode 100644
index b7f68915fd756be7c7887a1e6ec245e331f8ae8c..0000000000000000000000000000000000000000
--- a/provider/register-gc/src/main/java/org/opengroup/osdu/register/provider/gcp/config/SecretApiConfiguration.java
+++ /dev/null
@@ -1,34 +0,0 @@
-/*
- Copyright 2020-2024 Google LLC
- Copyright 2020-2024 EPAM Systems, Inc
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
-   http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
-*/
-
-package org.opengroup.osdu.register.provider.gcp.config;
-
-import org.opengroup.osdu.core.common.secret.AccessGroups;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.context.annotation.Bean;
-import org.springframework.context.annotation.Configuration;
-
-@Configuration
-public class SecretApiConfiguration {
-
-  @Autowired public RegisterConfigurationProperties configurationProperties;
-
-  @Bean
-  public AccessGroups accessGroups() {
-    return new RegisterAccessGroups();
-  }
-}
diff --git a/provider/register-gc/src/main/java/org/opengroup/osdu/register/provider/gcp/constant/RegisterConstants.java b/provider/register-gc/src/main/java/org/opengroup/osdu/register/provider/gcp/constant/RegisterConstants.java
deleted file mode 100644
index 4228c602c98143d9368d05c2c142e1b0f314af15..0000000000000000000000000000000000000000
--- a/provider/register-gc/src/main/java/org/opengroup/osdu/register/provider/gcp/constant/RegisterConstants.java
+++ /dev/null
@@ -1,26 +0,0 @@
-/*
- Copyright 2020-2024 Google LLC
- Copyright 2020-2024 EPAM Systems, Inc
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
-   http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
-*/
-
-package org.opengroup.osdu.register.provider.gcp.constant;
-
-import lombok.experimental.UtilityClass;
-
-@UtilityClass
-public final class RegisterConstants {
-  public static final String REGISTER_SECRET_OWNERS_GROUP = "register.secret.owners";
-  public static final String REGISTER_SECRET_VIEWERS_GROUP = "register.secret.viewers";
-}
diff --git a/provider/register-gc/src/main/java/org/opengroup/osdu/register/provider/gcp/ddms/OsmDdmsRepository.java b/provider/register-gc/src/main/java/org/opengroup/osdu/register/provider/gcp/ddms/OsmDdmsRepository.java
deleted file mode 100644
index 4730a9fe1f972668e0399af7b3bb0967a561f446..0000000000000000000000000000000000000000
--- a/provider/register-gc/src/main/java/org/opengroup/osdu/register/provider/gcp/ddms/OsmDdmsRepository.java
+++ /dev/null
@@ -1,136 +0,0 @@
-/*
-  Copyright 2021-2024 Google LLC
-  Copyright 2021-2024 EPAM Systems, Inc
-
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-
-    http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
- */
-package org.opengroup.osdu.register.provider.gcp.ddms;
-
-import lombok.RequiredArgsConstructor;
-import lombok.extern.slf4j.Slf4j;
-import org.opengroup.osdu.core.common.model.http.AppException;
-import org.opengroup.osdu.core.common.model.tenant.TenantInfo;
-import org.opengroup.osdu.core.gcp.osm.model.Destination;
-import org.opengroup.osdu.core.gcp.osm.model.Kind;
-import org.opengroup.osdu.core.gcp.osm.model.Namespace;
-import org.opengroup.osdu.core.gcp.osm.model.query.GetQuery;
-import org.opengroup.osdu.core.gcp.osm.service.Context;
-import org.opengroup.osdu.core.gcp.osm.service.Transaction;
-import org.opengroup.osdu.core.gcp.osm.translate.ExceptionClassifier;
-import org.opengroup.osdu.register.ddms.model.Ddms;
-import org.opengroup.osdu.register.provider.interfaces.ddms.IDdmsRepository;
-import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
-import org.springframework.context.annotation.Scope;
-import org.springframework.stereotype.Repository;
-
-import java.util.List;
-import java.util.concurrent.locks.ReentrantLock;
-
-import static org.opengroup.osdu.core.gcp.osm.model.where.predicate.Eq.eq;
-import static org.springframework.beans.factory.config.BeanDefinition.SCOPE_SINGLETON;
-
-@Slf4j
-@Repository
-@Scope(SCOPE_SINGLETON)
-@ConditionalOnProperty(name = "osmDriver")
-@RequiredArgsConstructor
-public class OsmDdmsRepository implements IDdmsRepository {
-
-    private static final String SERVER_ERROR_REASON = "Server Error";
-    private static final String CONFLICT_REASON = "Conflict";
-
-    private final Context context;
-    private final TenantInfo tenantInfo;
-    ReentrantLock ddmsDeleteLock = new ReentrantLock();
-
-    private static final Kind KIND = new Kind("DDMS");
-
-    //queries addressed to tenant specific GCP project and namespace and to a certain kind.
-    private Destination getDestination() {
-        return Destination.builder()
-            .partitionId(tenantInfo.getDataPartitionId())
-            .namespace(new Namespace(tenantInfo.getName()))
-            .kind(KIND)
-            .build();
-    }
-
-    @Override
-    public Ddms create(Ddms ddms) {
-        Transaction txn = context.beginTransaction(getDestination());
-        try {
-            if (context.getOne(new GetQuery<>(Ddms.class, getDestination(), eq("id", ddms.getId()))) != null) {
-                throw new AppException(409, CONFLICT_REASON, "A DDMS already exists with the same id");
-            }
-            context.create(ddms, getDestination());
-            txn.commitIfActive();
-        } catch (AppException e) {
-            throw e;
-        } catch (Exception ex) {
-            ExceptionClassifier.ExceptionClassification classification = context.classifyException(ex);
-            switch (classification) {
-                case ALREADY_EXISTS:
-                    throw new AppException(409, CONFLICT_REASON, "A DDMS already exists with the same id");
-                case CONFLICT:
-                    throw new AppException(409, CONFLICT_REASON, "ABORTED due to conflict");
-                default:
-                    throw new AppException(500, SERVER_ERROR_REASON, "Unexpected error", ex);
-            }
-        } finally {
-            txn.rollbackIfActive();
-        }
-        return ddms;
-    }
-
-    @Override
-    public Ddms get(String id) {
-        Ddms ddms = context.getOne(new GetQuery<>(Ddms.class, getDestination(), eq("id", id)));
-        if (ddms == null)
-            throw new AppException(404, "Not found", String.format("DDMS with id %s does not exist.", id));
-        return ddms;
-    }
-
-    @Override
-    public List<Ddms> query(String type) {
-        GetQuery<Ddms> query = new GetQuery<>(Ddms.class, getDestination(), eq("interfaces.entityType", type));
-        return context.getResultsAsList(query);
-    }
-
-    @Override
-    public boolean delete(String id) {
-        boolean output = false;
-
-        Transaction txn = context.beginTransaction(getDestination());
-        try {
-            ddmsDeleteLock.lock();
-            if (context.getOne(new GetQuery<>(Ddms.class, getDestination(), eq("id", id))) != null) {
-                context.deleteById(Ddms.class, getDestination(), id);
-                txn.commitIfActive();
-                output = true;
-            }
-        } catch (Exception ex) {
-            ExceptionClassifier.ExceptionClassification classification = context.classifyException(ex);
-            switch (classification) {
-                case ALREADY_EXISTS:
-                    throw new AppException(409, CONFLICT_REASON, "Another request is trying to delete the same DDMS.");
-                case CONFLICT:
-                    throw new AppException(409, CONFLICT_REASON, "ABORTED due to conflict");
-                default:
-                    throw new AppException(500, SERVER_ERROR_REASON, "Unexpected error", ex);
-            }
-        } finally {
-            ddmsDeleteLock.unlock();
-            txn.rollbackIfActive();
-        }
-        return output;
-    }
-}
diff --git a/provider/register-gc/src/main/java/org/opengroup/osdu/register/provider/gcp/formatter/GoogleJsonFormatter.java b/provider/register-gc/src/main/java/org/opengroup/osdu/register/provider/gcp/formatter/GoogleJsonFormatter.java
new file mode 100644
index 0000000000000000000000000000000000000000..f11ca3e039b6e95e983a83514633fe2914fefb9f
--- /dev/null
+++ b/provider/register-gc/src/main/java/org/opengroup/osdu/register/provider/gcp/formatter/GoogleJsonFormatter.java
@@ -0,0 +1,29 @@
+/*
+ *  Copyright 2020-2024 Google LLC
+ *  Copyright 2020-2024 EPAM Systems, Inc
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ */
+package org.opengroup.osdu.register.provider.gcp.formatter;
+
+import ch.qos.logback.contrib.jackson.JacksonJsonFormatter;
+import java.io.IOException;
+import java.util.Map;
+
+public class GoogleJsonFormatter extends JacksonJsonFormatter {
+  @Override
+  public String toJsonString(Map map) throws IOException {
+    map.put("severity", map.remove("level"));
+    return super.toJsonString(map);
+  }
+}
diff --git a/provider/register-gc/src/main/java/org/opengroup/osdu/register/provider/gcp/gson/OffsetDateTimeAdapter.java b/provider/register-gc/src/main/java/org/opengroup/osdu/register/provider/gcp/gson/OffsetDateTimeAdapter.java
deleted file mode 100644
index 354d680afeaf4f21744a0b3006c9f1093c55edb3..0000000000000000000000000000000000000000
--- a/provider/register-gc/src/main/java/org/opengroup/osdu/register/provider/gcp/gson/OffsetDateTimeAdapter.java
+++ /dev/null
@@ -1,36 +0,0 @@
-/*
- Copyright 2020-2024 Google LLC
- Copyright 2020-2024 EPAM Systems, Inc
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
-   http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
-*/
-
-package org.opengroup.osdu.register.provider.gcp.gson;
-
-import com.google.gson.*;
-
-import java.time.OffsetDateTime;
-import java.time.format.DateTimeFormatter;
-
-public class OffsetDateTimeAdapter implements JsonSerializer<OffsetDateTime>, JsonDeserializer<OffsetDateTime> {
-
-    @Override
-    public JsonElement serialize(OffsetDateTime src, java.lang.reflect.Type typeOfSrc, JsonSerializationContext context) {
-        return new JsonPrimitive(src.format(DateTimeFormatter.ISO_OFFSET_DATE_TIME));
-    }
-
-    @Override
-    public OffsetDateTime deserialize(JsonElement json, java.lang.reflect.Type typeOfT, JsonDeserializationContext context) throws JsonParseException {
-        return OffsetDateTime.parse(json.getAsString(), DateTimeFormatter.ISO_OFFSET_DATE_TIME);
-    }
-}
\ No newline at end of file
diff --git a/provider/register-gc/src/main/java/org/opengroup/osdu/register/provider/gcp/mappers/oqm/OqmConfigurationProperties.java b/provider/register-gc/src/main/java/org/opengroup/osdu/register/provider/gcp/mappers/oqm/OqmConfigurationProperties.java
deleted file mode 100644
index d976f4228c0dab36c8f38b5ec66a4e845fc706a0..0000000000000000000000000000000000000000
--- a/provider/register-gc/src/main/java/org/opengroup/osdu/register/provider/gcp/mappers/oqm/OqmConfigurationProperties.java
+++ /dev/null
@@ -1,34 +0,0 @@
-/*
-  Copyright 2020 Google LLC
-  Copyright 2020 EPAM Systems, Inc
-
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-
-    http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
- */
-package org.opengroup.osdu.register.provider.gcp.mappers.oqm;
-
-import lombok.Getter;
-import lombok.Setter;
-import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
-import org.springframework.boot.context.properties.ConfigurationProperties;
-import org.springframework.context.annotation.Configuration;
-
-@Configuration
-@ConditionalOnProperty(name = "oqmDriver")
-@ConfigurationProperties(prefix = "oqm")
-@Getter
-@Setter
-public class OqmConfigurationProperties {
-
-    private String registerSubscriberControlTopicName = "register-subscriber-control";
-
-}
diff --git a/provider/register-gc/src/main/java/org/opengroup/osdu/register/provider/gcp/mappers/osm/OsmTypeMapperImpl.java b/provider/register-gc/src/main/java/org/opengroup/osdu/register/provider/gcp/mappers/osm/OsmTypeMapperImpl.java
deleted file mode 100644
index a4f064a5f20cb5d75785b6e335ed6bb5c90ce40d..0000000000000000000000000000000000000000
--- a/provider/register-gc/src/main/java/org/opengroup/osdu/register/provider/gcp/mappers/osm/OsmTypeMapperImpl.java
+++ /dev/null
@@ -1,75 +0,0 @@
-package org.opengroup.osdu.register.provider.gcp.mappers.osm;
-
-import com.google.cloud.datastore.Key;
-import org.opengroup.osdu.core.gcp.osm.persistence.IdentityTranslator;
-import org.opengroup.osdu.core.gcp.osm.translate.Instrumentation;
-import org.opengroup.osdu.core.gcp.osm.translate.TypeMapper;
-import org.opengroup.osdu.register.ddms.model.Ddms;
-import org.opengroup.osdu.register.provider.gcp.action.model.ActionDto;
-import org.opengroup.osdu.register.provider.gcp.subscriber.model.SubscriptionDto;
-import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
-import org.springframework.context.annotation.Scope;
-import org.springframework.stereotype.Component;
-
-import java.util.Arrays;
-import java.util.Collections;
-import java.util.HashMap;
-
-import static org.springframework.beans.factory.config.BeanDefinition.SCOPE_SINGLETON;
-
-/**
- * All Entity classes used in translation should be registered here even if don't need custom settings.
- * Each class is represented as Instrumentation object. At least class objects and rules for Identity translation should be provided.oi
- */
-@Component
-@Scope(SCOPE_SINGLETON)
-@ConditionalOnProperty(name = "osmDriver")
-public class OsmTypeMapperImpl extends TypeMapper {
-
-    public OsmTypeMapperImpl() {
-        super(Arrays.asList(
-                new Instrumentation<>(SubscriptionDto.class,
-                        new HashMap<String, String>() {{
-                            put("pushEndpoint", "endpoint");
-                            put("createdOnEpoch", "createdOn");
-                        }},
-                        new HashMap<String, Class<?>>() {{
-                            put("createdOnEpoch", com.google.cloud.Timestamp.class);
-                        }},
-                        new IdentityTranslator<>(
-                                SubscriptionDto::getId,
-                                (r, o) -> r.setId(((Key) o).getName())
-                        ),
-                        Collections.singletonList("id")
-                ),
-                new Instrumentation<>(ActionDto.class,
-                        new HashMap<String, String>() {{
-                            put("createdOnEpoch", "createdOn");
-                        }},
-                        new HashMap<String, Class<?>>() {{
-                            put("createdOnEpoch", com.google.cloud.Timestamp.class);
-                        }},
-                        new IdentityTranslator<>(
-                                ActionDto::getId,
-                                (r, o) -> r.setId(((Key) o).getName())
-                        ),
-                        Collections.singletonList("id")
-                ),
-                new Instrumentation<>(Ddms.class,
-                        new HashMap<String, String>() {{
-                            put("createdDateTimeEpoch", "createdOn");
-                        }},
-                        new HashMap<String, Class<?>>() {{
-                            put("createdDateTimeEpoch", com.google.cloud.Timestamp.class);
-                        }},
-                        new IdentityTranslator<>(
-                                Ddms::getId,
-                                (r, o) -> r.setId(((Key) o).getName())
-                        ),
-                        Collections.singletonList("id")
-                )
-        ));
-    }
-
-
-}
\ No newline at end of file
diff --git a/provider/register-gc/src/main/java/org/opengroup/osdu/register/provider/gcp/security/GSuiteSecurityConfig.java b/provider/register-gc/src/main/java/org/opengroup/osdu/register/provider/gcp/security/GSuiteSecurityConfig.java
deleted file mode 100644
index ce541554780dd52b542643fe9935b1ceb502c897..0000000000000000000000000000000000000000
--- a/provider/register-gc/src/main/java/org/opengroup/osdu/register/provider/gcp/security/GSuiteSecurityConfig.java
+++ /dev/null
@@ -1,45 +0,0 @@
-/*
-  Copyright 2020 Google LLC
-  Copyright 2020 EPAM Systems, Inc
-
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-
-    http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
- */
-
-package org.opengroup.osdu.register.provider.gcp.security;
-
-import static org.springframework.security.config.Customizer.withDefaults;
-
-import org.springframework.context.annotation.Bean;
-import org.springframework.context.annotation.Configuration;
-import org.springframework.security.config.annotation.method.configuration.EnableMethodSecurity;
-import org.springframework.security.config.annotation.web.builders.HttpSecurity;
-import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;
-import org.springframework.security.config.annotation.web.configurers.AbstractHttpConfigurer;
-import org.springframework.security.config.http.SessionCreationPolicy;
-import org.springframework.security.web.SecurityFilterChain;
-
-@Configuration
-@EnableWebSecurity
-@EnableMethodSecurity
-public class GSuiteSecurityConfig {
-    @Bean
-    public SecurityFilterChain defaultFilterChain(HttpSecurity http) throws Exception {
-        http
-            .cors(AbstractHttpConfigurer::disable)
-            .csrf(AbstractHttpConfigurer::disable)
-            .sessionManagement(session -> session.sessionCreationPolicy(SessionCreationPolicy.STATELESS))
-            .authorizeHttpRequests(authorize -> authorize.anyRequest().permitAll())
-            .httpBasic(withDefaults());
-        return http.build();
-    }
-}
\ No newline at end of file
diff --git a/provider/register-gc/src/main/java/org/opengroup/osdu/register/provider/gcp/subscriber/IDatastoreAccess.java b/provider/register-gc/src/main/java/org/opengroup/osdu/register/provider/gcp/subscriber/IDatastoreAccess.java
deleted file mode 100644
index 0445d9a0d284a041dbc981cc175254a331fbb383..0000000000000000000000000000000000000000
--- a/provider/register-gc/src/main/java/org/opengroup/osdu/register/provider/gcp/subscriber/IDatastoreAccess.java
+++ /dev/null
@@ -1,37 +0,0 @@
-/*
- * Copyright 2017-2020, Schlumberger
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.opengroup.osdu.register.provider.gcp.subscriber;
-
-
-import org.opengroup.osdu.register.subscriber.model.Secret;
-import org.opengroup.osdu.register.subscriber.model.Subscription;
-
-import java.util.List;
-
-public interface IDatastoreAccess {
-    Subscription create(Subscription s);
-
-    Subscription get(String id);
-
-    List<Subscription> query(String notificationId);
-
-    boolean delete(String id);
-
-    boolean patch(String id, Secret secret);
-
-    List<Subscription> getAll() throws Exception;
-}
diff --git a/provider/register-gc/src/main/java/org/opengroup/osdu/register/provider/gcp/subscriber/OsmAccess.java b/provider/register-gc/src/main/java/org/opengroup/osdu/register/provider/gcp/subscriber/OsmAccess.java
deleted file mode 100644
index dbec9399f5202826c8b12d5fbb31100497e533eb..0000000000000000000000000000000000000000
--- a/provider/register-gc/src/main/java/org/opengroup/osdu/register/provider/gcp/subscriber/OsmAccess.java
+++ /dev/null
@@ -1,321 +0,0 @@
-/*
- Copyright 2020-2024 Google LLC
- Copyright 2020-2024 EPAM Systems, Inc
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
-   http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
-*/
-
-package org.opengroup.osdu.register.provider.gcp.subscriber;
-
-import static org.opengroup.osdu.core.gcp.osm.model.where.predicate.Eq.eq;
-import static org.springframework.beans.factory.config.BeanDefinition.SCOPE_SINGLETON;
-
-import com.google.common.base.Strings;
-import jakarta.annotation.PostConstruct;
-import java.nio.charset.StandardCharsets;
-import java.sql.Timestamp;
-import java.util.List;
-import java.util.Objects;
-import java.util.UUID;
-import java.util.concurrent.locks.ReentrantLock;
-import lombok.RequiredArgsConstructor;
-import lombok.extern.slf4j.Slf4j;
-import org.opengroup.osdu.core.common.model.http.AppException;
-import org.opengroup.osdu.core.common.model.http.DpsHeaders;
-import org.opengroup.osdu.core.common.model.tenant.TenantInfo;
-import org.opengroup.osdu.core.common.secret.AccessGroups;
-import org.opengroup.osdu.core.common.secret.SecretClient;
-import org.opengroup.osdu.core.common.secret.SecretClientFactory;
-import org.opengroup.osdu.core.common.secret.SecretModel;
-import org.opengroup.osdu.core.common.util.IServiceAccountJwtClient;
-import org.opengroup.osdu.core.gcp.oqm.driver.OqmDriverRuntimeException;
-import org.opengroup.osdu.core.gcp.oqm.model.OqmSubscription;
-import org.opengroup.osdu.core.gcp.oqm.model.OqmTopic;
-import org.opengroup.osdu.core.gcp.osm.model.Destination;
-import org.opengroup.osdu.core.gcp.osm.model.Kind;
-import org.opengroup.osdu.core.gcp.osm.model.Namespace;
-import org.opengroup.osdu.core.gcp.osm.model.query.GetQuery;
-import org.opengroup.osdu.core.gcp.osm.service.Context;
-import org.opengroup.osdu.core.gcp.osm.service.Transaction;
-import org.opengroup.osdu.core.gcp.osm.translate.ExceptionClassifier;
-import org.opengroup.osdu.register.provider.gcp.subscriber.model.SubscriptionDto;
-import org.opengroup.osdu.register.subscriber.model.*;
-import org.opengroup.osdu.register.utils.Constants;
-import org.springframework.beans.BeanUtils;
-import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
-import org.springframework.context.annotation.Scope;
-import org.springframework.stereotype.Repository;
-
-@Repository
-@Scope(SCOPE_SINGLETON)
-@ConditionalOnProperty(name = "osmDriver")
-@RequiredArgsConstructor
-@Slf4j
-public class OsmAccess implements IDatastoreAccess {
-
-  private static final String ITEM_MISSING_ERROR_TEMPLATE = "Subscription item skipped: {}";
-
-  private final Context context;
-  private final TenantInfo tenantInfo;
-  private final SubscriptionEventPublisher publisher;
-  private final SecretClientFactory secretFactory;
-  private final IServiceAccountJwtClient tokenService;
-  private final DpsHeaders dpsHeaders;
-  private final AccessGroups accessGroups;
-
-  ReentrantLock subscriptionDeleteLock = new ReentrantLock();
-
-  private static final String SERVER_ERROR_REASON = "Server Error";
-  private static final String CONFLICT_REASON = "Conflict";
-  private static final String ABORTED_DUE_TO_CONFLICT_MSG = "ABORTED due to conflict";
-
-  private static final Kind KIND = new Kind("SUBSCRIPTION");
-  private static final String SUBSCRIPTION_CREATED = "Subscription Created";
-  private static final String SUBSCRIPTION_UPDATED = "Subscription Updated";
-  private static final String SUBSCRIPTION_DELETED = "Subscription Deleted";
-
-  private Destination getDestination() {
-    return Destination.builder()
-        .partitionId(tenantInfo.getDataPartitionId())
-        .namespace(new Namespace(tenantInfo.getName()))
-        .kind(KIND)
-        .build();
-  }
-
-  @PostConstruct
-  void postConstruct() {
-    log.debug("OsmAccess bean constructed.");
-  }
-
-  @Override
-  public Subscription create(Subscription subscriptionRequest) {
-    return createSubscriptionInStorage(getDtoBySubscription(subscriptionRequest));
-  }
-
-  @Override
-  public Subscription get(String id) {
-
-    GetQuery<SubscriptionDto> q =
-        new GetQuery<>(SubscriptionDto.class, getDestination(), eq("id", id));
-    SubscriptionDto existingSubscription = context.getOne(q);
-    if (existingSubscription == null)
-      throw new AppException(
-          404, "Not found", String.format("Subscriber with id %s does not exist.", id));
-
-    return getSubscriptionByDto(existingSubscription);
-  }
-
-  @Override
-  public List<Subscription> query(String notificationId) {
-    GetQuery<SubscriptionDto> q =
-        new GetQuery<>(
-            SubscriptionDto.class, getDestination(), eq("notificationId", notificationId));
-    return context.getResultsAsList(q).stream().map(this::getSubscriptionByDto).toList();
-  }
-
-  @Override
-  public boolean delete(String id) {
-    return deleteFromStorage(id);
-  }
-
-  @Override
-  public boolean patch(String id, Secret secret) {
-    return updateSubscriptionInStorage(id, secret);
-  }
-
-  @Override
-  public List<Subscription> getAll() {
-    return context
-        .getResultsAsList(new GetQuery<>(SubscriptionDto.class, getDestination()))
-        .stream()
-        .map(
-            item -> {
-              try {
-                return getSubscriptionByDto(item);
-              } catch (OqmDriverRuntimeException e) {
-                log.error(ITEM_MISSING_ERROR_TEMPLATE, e.getMessage());
-                return null;
-              }
-            })
-        .filter(Objects::nonNull)
-        .toList();
-  }
-
-  private Subscription createSubscriptionInStorage(SubscriptionDto subscriptionRequest) {
-
-    Transaction txn = context.beginTransaction(getDestination());
-    try {
-      GetQuery<SubscriptionDto> q =
-          new GetQuery<>(
-              SubscriptionDto.class, getDestination(), eq("id", subscriptionRequest.getId()));
-      if (context.getOne(q) != null)
-        throw new AppException(
-            409,
-            CONFLICT_REASON,
-            "A subscriber already exists with the same topic and endpoint combination");
-
-      subscriptionRequest.setCreatedOnEpoch(new Timestamp(System.currentTimeMillis()));
-      SecretClient secretClient = secretFactory.create(dpsHeaders, tokenService, accessGroups);
-      secretClient.createSecret(
-          generateID(subscriptionRequest.getId()), subscriptionRequest.getSecretValue());
-      Subscription createdSubscription =
-          getSubscriptionByDto(context.createAndGet(subscriptionRequest, getDestination()));
-      publisher.sendSubscriptionLifecycleEvent(
-          SUBSCRIPTION_CREATED,
-          tenantInfo,
-          OqmSubscription.builder()
-              .name(createdSubscription.getNotificationId())
-              .topic(OqmTopic.builder().name(createdSubscription.getTopic()).build())
-              .build());
-      txn.commitIfActive();
-      return createdSubscription;
-    } catch (AppException e) {
-      throw e;
-    } catch (Exception e) {
-      ExceptionClassifier.ExceptionClassification classification = context.classifyException(e);
-      switch (classification) {
-        case ALREADY_EXISTS:
-          throw new AppException(
-              409,
-              CONFLICT_REASON,
-              "A subscriber already exists with the same topic and endpoint combination");
-        case CONFLICT:
-          throw new AppException(409, CONFLICT_REASON, ABORTED_DUE_TO_CONFLICT_MSG);
-        default:
-          throw new AppException(
-              500, SERVER_ERROR_REASON, "Unexpected error creating subscription.", e);
-      }
-    } finally {
-      txn.rollbackIfActive();
-    }
-  }
-
-  private boolean deleteFromStorage(String id) {
-    boolean output = false;
-
-    Transaction txn = context.beginTransaction(getDestination());
-    try {
-      subscriptionDeleteLock.lock();
-      GetQuery<SubscriptionDto> q =
-          new GetQuery<>(SubscriptionDto.class, getDestination(), eq("id", id));
-      SubscriptionDto existingSubscription = context.getOne(q);
-      if (existingSubscription != null) {
-        SecretClient secretClient = secretFactory.create(dpsHeaders, tokenService, accessGroups);
-        secretClient.removeSecret(generateID(id));
-        context.deleteById(SubscriptionDto.class, getDestination(), id);
-        publisher.sendSubscriptionLifecycleEvent(
-            SUBSCRIPTION_DELETED,
-            tenantInfo,
-            OqmSubscription.builder()
-                .name(existingSubscription.getNotificationId())
-                .topic(OqmTopic.builder().name(existingSubscription.getTopic()).build())
-                .build());
-        txn.commitIfActive();
-        output = true;
-      }
-    } catch (Exception e) {
-      ExceptionClassifier.ExceptionClassification classification = context.classifyException(e);
-      switch (classification) {
-        case ALREADY_EXISTS:
-          throw new AppException(
-              409, CONFLICT_REASON, "Another request is trying to delete the same DDMS.");
-        case CONFLICT:
-          throw new AppException(409, CONFLICT_REASON, ABORTED_DUE_TO_CONFLICT_MSG);
-        default:
-          throw new AppException(
-              500, SERVER_ERROR_REASON, "Unexpected error deleting subscription.", e);
-      }
-    } finally {
-      subscriptionDeleteLock.unlock();
-      txn.rollbackIfActive();
-    }
-    return output;
-  }
-
-  private boolean updateSubscriptionInStorage(String id, Secret secret) {
-    boolean output = false;
-
-    Transaction txn = context.beginTransaction(getDestination());
-    try {
-      GetQuery<SubscriptionDto> q =
-          new GetQuery<>(SubscriptionDto.class, getDestination(), eq("id", id));
-      SubscriptionDto existingSubscription = context.getOne(q);
-      if (existingSubscription != null) {
-        Subscription updatedSubscriptionRequest = getSubscriptionByDto(existingSubscription);
-        updatedSubscriptionRequest.setSecret(secret);
-        SecretClient secretClient = secretFactory.create(dpsHeaders, tokenService, accessGroups);
-        secretClient.updateSecret(
-            generateID(updatedSubscriptionRequest.getId()), secret.toString());
-        context.upsert(getDtoBySubscription(updatedSubscriptionRequest), getDestination());
-        publisher.sendSubscriptionLifecycleEvent(
-            SUBSCRIPTION_UPDATED,
-            tenantInfo,
-            OqmSubscription.builder()
-                .name(updatedSubscriptionRequest.getNotificationId())
-                .topic(OqmTopic.builder().name(updatedSubscriptionRequest.getTopic()).build())
-                .build());
-        txn.commitIfActive();
-        output = true;
-      }
-    } catch (Exception e) {
-      ExceptionClassifier.ExceptionClassification classification = context.classifyException(e);
-      switch (classification) {
-        case ALREADY_EXISTS:
-          throw new AppException(
-              409, CONFLICT_REASON, "Another request is trying to update the same DDMS.");
-        case CONFLICT:
-          throw new AppException(409, CONFLICT_REASON, ABORTED_DUE_TO_CONFLICT_MSG);
-        default:
-          throw new AppException(
-              500, SERVER_ERROR_REASON, "Unexpected error updating subscription.", e);
-      }
-    } finally {
-      txn.rollbackIfActive();
-    }
-    return output;
-  }
-
-  private SubscriptionDto getDtoBySubscription(Subscription subscription) {
-    SubscriptionDto subscriptionDto = new SubscriptionDto();
-    BeanUtils.copyProperties(subscription, subscriptionDto);
-    subscriptionDto.setSecretValue(subscription.getSecret().toString());
-    subscriptionDto.setSecretType(subscription.getSecret().getSecretType());
-    return subscriptionDto;
-  }
-
-  private Subscription getSubscriptionByDto(SubscriptionDto subscriptionDto) {
-    Subscription subscription = new Subscription();
-    BeanUtils.copyProperties(subscriptionDto, subscription);
-
-    if (!Strings.isNullOrEmpty(subscriptionDto.getSecretType())) {
-      SecretClient secretClient = secretFactory.create(dpsHeaders, tokenService, accessGroups);
-      SecretModel secretModel = secretClient.retrieveSecret(generateID(subscriptionDto.getId()));
-      if (subscriptionDto.getSecretType().equals(Constants.GSASecret)) {
-        GsaSecret gsaSecret = new GsaSecret();
-        String[] splitSecret = secretModel.getValue().split("`");
-        gsaSecret.setValue(new GsaSecretValue(splitSecret[0], splitSecret[1]));
-        subscription.setSecret(gsaSecret);
-      } else {
-        HmacSecret hmacSecret = new HmacSecret();
-        hmacSecret.setValue(secretModel.getValue());
-        subscription.setSecret(hmacSecret);
-      }
-    }
-    return subscription;
-  }
-
-  private String generateID(String string) {
-    byte[] bytes = string.getBytes(StandardCharsets.UTF_8);
-    return UUID.nameUUIDFromBytes(bytes).toString().replace("-", "");
-  }
-}
diff --git a/provider/register-gc/src/main/java/org/opengroup/osdu/register/provider/gcp/subscriber/SubscriptionEventPublisher.java b/provider/register-gc/src/main/java/org/opengroup/osdu/register/provider/gcp/subscriber/SubscriptionEventPublisher.java
deleted file mode 100644
index 2b4f02513d8078292d35d61e3017a6f68f1f34ec..0000000000000000000000000000000000000000
--- a/provider/register-gc/src/main/java/org/opengroup/osdu/register/provider/gcp/subscriber/SubscriptionEventPublisher.java
+++ /dev/null
@@ -1,50 +0,0 @@
-package org.opengroup.osdu.register.provider.gcp.subscriber;
-
-import lombok.RequiredArgsConstructor;
-import lombok.extern.slf4j.Slf4j;
-import org.opengroup.osdu.core.common.model.tenant.TenantInfo;
-import org.opengroup.osdu.core.gcp.oqm.driver.OqmDriver;
-import org.opengroup.osdu.core.gcp.oqm.model.OqmDestination;
-import org.opengroup.osdu.core.gcp.oqm.model.OqmMessage;
-import org.opengroup.osdu.core.gcp.oqm.model.OqmSubscription;
-import org.opengroup.osdu.core.gcp.oqm.model.OqmTopic;
-import org.opengroup.osdu.register.provider.gcp.mappers.oqm.OqmConfigurationProperties;
-import org.springframework.stereotype.Component;
-
-import java.util.HashMap;
-import java.util.Map;
-
-@Component
-@RequiredArgsConstructor
-@Slf4j
-public class SubscriptionEventPublisher {
-
-    private final OqmDriver driver;
-    private final OqmConfigurationProperties properties;
-
-    /**
-     * Sends subscription lifecycle events to the subscriber control topic.
-     * This topic is a "control channel" between Register and Notification services.
-     * The former sends events on new pull Subscriptions being created,
-     * the latter listens for events and creates corresponding Subscribers.
-     */
-    public void sendSubscriptionLifecycleEvent(String message, TenantInfo tenantInfo, OqmSubscription subscription) {
-        Map<String, String> attributes = new HashMap<>();
-        attributes.put("data-partition-id", tenantInfo.getDataPartitionId());
-        attributes.put("subscription-id", subscription.getName());
-        attributes.put("topic", subscription.getTopics().get(0).getName());
-
-        OqmMessage oqmMessage = OqmMessage.builder().data(message).attributes(attributes).build();
-        OqmTopic controlTopic = OqmTopic.builder().name(properties.getRegisterSubscriberControlTopicName()).build();
-        try {
-            driver.publish(oqmMessage, controlTopic, getDestination(tenantInfo));
-        } catch (Exception e) {
-            log.error("Failed to send event to the '{}' control topic.", properties.getRegisterSubscriberControlTopicName());
-            log.error("* Exception thrown.", e);
-        }
-    }
-
-    private OqmDestination getDestination(TenantInfo tenantInfo) {
-        return OqmDestination.builder().partitionId(tenantInfo.getDataPartitionId()).build();
-    }
-}
diff --git a/provider/register-gc/src/main/java/org/opengroup/osdu/register/provider/gcp/subscriber/SubscriptionRepository.java b/provider/register-gc/src/main/java/org/opengroup/osdu/register/provider/gcp/subscriber/SubscriptionRepository.java
deleted file mode 100644
index 06e5dd87067b5c8b0af8ff7bd55dbdff50f7f5f8..0000000000000000000000000000000000000000
--- a/provider/register-gc/src/main/java/org/opengroup/osdu/register/provider/gcp/subscriber/SubscriptionRepository.java
+++ /dev/null
@@ -1,71 +0,0 @@
-/*
- * Copyright 2017-2020, Schlumberger
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.opengroup.osdu.register.provider.gcp.subscriber;
-
-import org.opengroup.osdu.core.common.model.http.AppException;
-import org.opengroup.osdu.register.subscriber.model.Secret;
-import org.opengroup.osdu.register.subscriber.model.Subscription;
-import org.opengroup.osdu.register.provider.interfaces.subscriber.ISubscriptionRepository;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Repository;
-
-import java.util.List;
-
-@Repository
-public class SubscriptionRepository implements ISubscriptionRepository {
-
-    @Autowired
-    private IDatastoreAccess datastoreAccess;
-
-    @Override
-    public Subscription create(Subscription input) throws Exception {
-        int existingSubscriptionsCount = datastoreAccess.getAll().size();
-        // Due to the limit of google subscription per project, we are restricting the limit per tenant to 50
-        // This already looks a difficult limit to reach, but need to keep a watch on this number.
-        if (existingSubscriptionsCount == 50)
-            throw new AppException(429, "Subscription quota reached",
-                    "Number of subscription allowed have already reached to maximum");
-
-        input = datastoreAccess.create(input);
-        return input;
-    }
-
-    @Override
-    public Subscription get(String id) {
-        return datastoreAccess.get(id);
-    }
-
-    @Override
-    public List<Subscription> query(String notificationId) {
-        return datastoreAccess.query(notificationId);
-    }
-
-    @Override
-    public boolean delete(String id) {
-        return datastoreAccess.delete(id);
-    }
-
-    @Override
-    public boolean patch(Subscription subscription, Secret secret) {
-        return datastoreAccess.patch(subscription.getId(), secret);
-    }
-
-    @Override
-    public List<Subscription> getAll() throws Exception {
-        return datastoreAccess.getAll();
-    }
-}
diff --git a/provider/register-gc/src/main/java/org/opengroup/osdu/register/provider/gcp/subscriber/model/SubscriptionDto.java b/provider/register-gc/src/main/java/org/opengroup/osdu/register/provider/gcp/subscriber/model/SubscriptionDto.java
deleted file mode 100644
index e16291c7bb985e3cbb033fd383a4706562ea47bf..0000000000000000000000000000000000000000
--- a/provider/register-gc/src/main/java/org/opengroup/osdu/register/provider/gcp/subscriber/model/SubscriptionDto.java
+++ /dev/null
@@ -1,47 +0,0 @@
-/*
-  Copyright 2021 Google LLC
-  Copyright 2021 EPAM Systems, Inc
-
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-
-    http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
- */
-package org.opengroup.osdu.register.provider.gcp.subscriber.model;
-
-import java.sql.Timestamp;
-import jakarta.validation.constraints.NotBlank;
-import jakarta.validation.constraints.Pattern;
-import lombok.AllArgsConstructor;
-import lombok.Data;
-import lombok.NoArgsConstructor;
-
-@Data
-@AllArgsConstructor
-@NoArgsConstructor
-public class SubscriptionDto {
-  private String id;
-  @NotBlank
-  @Pattern(regexp = "^[A-Za-z0-9- ]{2,50}")
-  private String name;
-  @Pattern(regexp = "^[A-Za-z0-9. ]{0,255}")
-  private String description;
-  @NotBlank
-  private String topic;
-  @NotBlank
-  private String pushEndpoint;
-  private String createdBy;
-  private Timestamp createdOnEpoch;
-  private String notificationId;
-
-  private String secretValue;
-  private String secretType;
-
-}
diff --git a/provider/register-gc/src/main/java/org/opengroup/osdu/register/provider/gcp/util/GoogleServiceAccountImpl.java b/provider/register-gc/src/main/java/org/opengroup/osdu/register/provider/gcp/util/GoogleServiceAccountImpl.java
deleted file mode 100644
index e1018a2ff4ed013271d4fdad213cb6b1a2e54a91..0000000000000000000000000000000000000000
--- a/provider/register-gc/src/main/java/org/opengroup/osdu/register/provider/gcp/util/GoogleServiceAccountImpl.java
+++ /dev/null
@@ -1,43 +0,0 @@
-/*
- * Copyright 2017-2020, Schlumberger
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.opengroup.osdu.register.provider.gcp.util;
-
-import lombok.SneakyThrows;
-import org.apache.http.impl.client.HttpClients;
-import org.opengroup.osdu.core.gcp.googleidtoken.IGoogleIdTokenFactory;
-import org.opengroup.osdu.register.utils.IGoogleServiceAccount;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Component;
-
-@Component
-public class GoogleServiceAccountImpl implements IGoogleServiceAccount {
-
-    @Autowired
-    private IGoogleIdTokenFactory googleIdTokenFactory;
-
-    @SneakyThrows
-    @Override
-    public String getIdToken(String keyString, String audience) {
-        return this.googleIdTokenFactory.getGoogleIdToken(keyString, audience, HttpClients.createDefault());
-    }
-
-    @SneakyThrows
-    @Override
-    public String getPrivateKeyId(String keyString) {
-        return this.googleIdTokenFactory.getPrivateKeyId(keyString);
-    }
-}
\ No newline at end of file
diff --git a/provider/register-gc/src/main/java/org/opengroup/osdu/register/provider/gcp/util/SecretFactory.java b/provider/register-gc/src/main/java/org/opengroup/osdu/register/provider/gcp/util/SecretFactory.java
deleted file mode 100644
index a081d2d5a87bd383984e41452560fab33a7f66af..0000000000000000000000000000000000000000
--- a/provider/register-gc/src/main/java/org/opengroup/osdu/register/provider/gcp/util/SecretFactory.java
+++ /dev/null
@@ -1,47 +0,0 @@
-/*
- Copyright 2020-2024 Google LLC
- Copyright 2020-2024 EPAM Systems, Inc
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
-   http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
-*/
-
-package org.opengroup.osdu.register.provider.gcp.util;
-
-import org.opengroup.osdu.core.common.secret.SecretAPIConfig;
-import org.opengroup.osdu.core.common.secret.SecretClientFactory;
-import org.opengroup.osdu.core.common.secret.SecretClientFactoryImpl;
-import org.opengroup.osdu.register.provider.gcp.config.RegisterConfigurationProperties;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.beans.factory.config.AbstractFactoryBean;
-import org.springframework.stereotype.Component;
-
-@Component
-public class SecretFactory extends AbstractFactoryBean<SecretClientFactory> {
-
-  @Autowired private RegisterConfigurationProperties serviceConfig;
-
-  @Override
-  public Class<?> getObjectType() {
-    return SecretClientFactory.class;
-  }
-
-  @Override
-  protected SecretClientFactory createInstance() throws Exception {
-    SecretAPIConfig apiConfig =
-        SecretAPIConfig.builder()
-            .secretApi(serviceConfig.getSecretApi())
-            .domain(serviceConfig.getDomain())
-            .build();
-    return new SecretClientFactoryImpl(apiConfig);
-  }
-}
diff --git a/provider/register-gc/src/main/java/org/opengroup/osdu/register/provider/gcp/util/TokenService.java b/provider/register-gc/src/main/java/org/opengroup/osdu/register/provider/gcp/util/TokenService.java
deleted file mode 100644
index 70ec56107bd0c61fe133d61d6ef998c4c7735fd4..0000000000000000000000000000000000000000
--- a/provider/register-gc/src/main/java/org/opengroup/osdu/register/provider/gcp/util/TokenService.java
+++ /dev/null
@@ -1,21 +0,0 @@
-package org.opengroup.osdu.register.provider.gcp.util;
-
-import lombok.RequiredArgsConstructor;
-import lombok.extern.slf4j.Slf4j;
-import org.opengroup.osdu.core.auth.TokenProvider;
-import org.opengroup.osdu.core.common.util.IServiceAccountJwtClient;
-import org.springframework.stereotype.Service;
-
-@Slf4j
-@Service
-@RequiredArgsConstructor
-public class TokenService implements IServiceAccountJwtClient {
-
-  private final TokenProvider tokenProvider;
-
-  @Override
-  public String getIdToken(String tenantName) {
-    log.debug("Tenant name received for auth token is: %s.".formatted(tenantName));
-    return "Bearer %s".formatted(tokenProvider.getIdToken());
-  }
-}
diff --git a/provider/register-gc/src/main/java/org/opengroup/osdu/register/provider/gcp/verifier/GsaTokenVerifierImpl.java b/provider/register-gc/src/main/java/org/opengroup/osdu/register/provider/gcp/verifier/GsaTokenVerifierImpl.java
deleted file mode 100644
index 3d2d2a0d6fef478a65c348ef794caec64388d250..0000000000000000000000000000000000000000
--- a/provider/register-gc/src/main/java/org/opengroup/osdu/register/provider/gcp/verifier/GsaTokenVerifierImpl.java
+++ /dev/null
@@ -1,57 +0,0 @@
-/*
- *  Copyright 2020-2022 Google LLC
- *  Copyright 2020-2022 EPAM Systems, Inc
- *
- *  Licensed under the Apache License, Version 2.0 (the "License");
- *  you may not use this file except in compliance with the License.
- *  You may obtain a copy of the License at
- *
- *    http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
- */
-
-package org.opengroup.osdu.register.provider.gcp.verifier;
-
-import com.google.api.client.googleapis.auth.oauth2.GoogleIdToken;
-import com.google.api.client.googleapis.auth.oauth2.GoogleIdTokenVerifier;
-import com.google.api.client.http.javanet.NetHttpTransport;
-import com.google.api.client.json.jackson2.JacksonFactory;
-import com.google.common.base.Strings;
-import lombok.extern.slf4j.Slf4j;
-import org.opengroup.osdu.register.provider.interfaces.verifier.GsaTokenVerifier;
-import org.opengroup.osdu.register.utils.AppServiceConfig;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Component;
-
-import java.util.Collections;
-
-@Component
-@Slf4j
-public class GsaTokenVerifierImpl implements GsaTokenVerifier {
-
-    private static final String DEFAULT_TARGET_AUDIENCE = "osdu";
-
-    public boolean verify(String token) {
-        if (Strings.isNullOrEmpty(token)) {
-            return true;
-        }
-        token = token.replace("Bearer ", "");
-        try {
-            GoogleIdTokenVerifier verifier = new GoogleIdTokenVerifier.Builder(new NetHttpTransport(),
-                    JacksonFactory.getDefaultInstance())
-                    .setAudience(
-                            Collections.singletonList(DEFAULT_TARGET_AUDIENCE))
-                    .build();
-            GoogleIdToken idToken = verifier.verify(token);
-            return idToken != null;
-        } catch (Exception ex) {
-            log.error(ex.getMessage(), ex);
-            return false;
-        }
-    }
-}
diff --git a/provider/register-gc/src/main/resources/application-anthos.properties b/provider/register-gc/src/main/resources/application-anthos.properties
deleted file mode 100644
index 82927abd3bf273ab9a8eb8c966b583ebf49b1da6..0000000000000000000000000000000000000000
--- a/provider/register-gc/src/main/resources/application-anthos.properties
+++ /dev/null
@@ -1,7 +0,0 @@
-osmDriver=postgres
-oqmDriver=rabbitmq
-partition-auth-enabled=false
-service.token.provider=OPENID
-openid.provider.url=
-openid.provider.client-id=
-openid.provider.client-secret=
\ No newline at end of file
diff --git a/provider/register-gc/src/main/resources/application-local.properties b/provider/register-gc/src/main/resources/application-local.properties
deleted file mode 100644
index 20ad0b57e0d13917a53e6b987f336ecb8555e3b6..0000000000000000000000000000000000000000
--- a/provider/register-gc/src/main/resources/application-local.properties
+++ /dev/null
@@ -1,27 +0,0 @@
-LOG_LEVEL=DEBUG
-ENVIRONMENT=LOCAL
-CRON_JOB_EXPECTED_IP=0:0:0:0:0:0:0:1
-
-GOOGLE_CLOUD_PROJECT=nice-etching-277309
-GCLOUD_REGION=us-central
-
-# auth config
-SUBSCRIBER_SECRET=7a786376626e
-SUBSCRIBER_PRIVATE_KEY_ID=take-from-config
-
-# drivers config
-osmDriver=datastore
-oqmDriver=pubsub
-
-# external services
-PARTITION_API=https://community.gcp.gnrg-osdu.projects.epam.com/api/partition/v1
-ENTITLEMENTS_API=https://community.gcp.gnrg-osdu.projects.epam.com/api/entitlements/v2
-STORAGE_API=https://community.gcp.gnrg-osdu.projects.epam.com/api/storage/v2
-
-google-cloud-project=${GOOGLE_CLOUD_PROJECT}
-key-ring=${KEY_RING}
-kms-key=${KMS_KEY}
-
-kmsClient=gcp-kms
-KEY_RING=csqp
-KMS_KEY=registerService
diff --git a/provider/register-gc/src/main/resources/application.properties b/provider/register-gc/src/main/resources/application.properties
index 61dccf821986ddb1656d8f23018ebe7f1117716b..8cff2ef78cba981be055f33c46ef281f9ed3ff3b 100644
--- a/provider/register-gc/src/main/resources/application.properties
+++ b/provider/register-gc/src/main/resources/application.properties
@@ -10,6 +10,8 @@ LOG_PREFIX=register
 JAVA_HEAP_OPTS=-Xms4096M -Xmx4096M
 JAVA_GC_OPTS=-XX:+UseG1GC -XX:+UseStringDeduplication -XX:InitiatingHeapOccupancyPercent=45
 
+googleAudiences=${GOOGLE_AUDIENCES:osdu}
+
 # register service config
 ENVIRONMENT=dev
 oqm.register-subscriber-control-topic-name=register-subscriber-control
@@ -44,6 +46,7 @@ SECRET_API=${SECRET_HOST}${SECRET_PATH}
 domain=${GROUP_ID:group}
 
 propertyResolver.strategy=partition
+destination.resolver=partition
 
 #Health checks
 management.server.port=${MANAGEMENT_SERVER_PORT:8081}
diff --git a/provider/register-gc/src/main/resources/logback.xml b/provider/register-gc/src/main/resources/logback.xml
new file mode 100644
index 0000000000000000000000000000000000000000..4209f71b04515f41d7c5177a4ec9aeaf13f39195
--- /dev/null
+++ b/provider/register-gc/src/main/resources/logback.xml
@@ -0,0 +1,38 @@
+<configuration>
+    <include resource="org/springframework/boot/logging/logback/defaults.xml"/>
+    <logger name="org.opengroup.osdu" level="${LOG_LEVEL}"/>
+    <springProfile name="local">
+        <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
+            <encoder>
+                <pattern>%yellow([%thread]) %highlight(| %-5level |) %green(%d) %cyan(| %logger{15} |) %highlight(%msg)
+                    %n
+                </pattern>
+                <charset>utf8</charset>
+            </encoder>
+        </appender>
+        <root level="info">
+            <appender-ref ref="CONSOLE"/>
+        </root>
+    </springProfile>
+
+    <springProfile name="!local">
+        <appender name="stdout" class="ch.qos.logback.core.ConsoleAppender">
+            <encoder class="ch.qos.logback.core.encoder.LayoutWrappingEncoder">
+                <layout class="ch.qos.logback.contrib.json.classic.JsonLayout">
+                    <timestampFormat>yyyy-MM-dd HH:mm:ss.SSS</timestampFormat>
+                    <timestampFormatTimezoneId>Etc/UTC</timestampFormatTimezoneId>
+                    <appendLineSeparator>true</appendLineSeparator>
+
+                    <jsonFormatter class="org.opengroup.osdu.register.provider.gcp.formatter.GoogleJsonFormatter">
+                        <prettyPrint>false</prettyPrint>
+                    </jsonFormatter>
+                </layout>
+            </encoder>
+        </appender>
+
+        <root level="info">
+            <appender-ref ref="stdout"/>
+        </root>
+    </springProfile>
+
+</configuration>
diff --git a/provider/register-gc/src/main/resources/topics.json b/provider/register-gc/src/main/resources/topics.json
deleted file mode 100644
index 8f4c412c746016a933477a576bb68637d6daaa63..0000000000000000000000000000000000000000
--- a/provider/register-gc/src/main/resources/topics.json
+++ /dev/null
@@ -1,91 +0,0 @@
-[
-  {
-    "name": "records-changed",
-    "description": "This notification is sent whenever a new record or record version is created, updated or deleted, and when a new schema is created in storage.",
-    "state": "ACTIVE",
-    "example": [
-      {
-        "id": "common:abc:123",
-        "kind": "common:petrel:regularheightfieldsurface:1.0.0",
-        "op": "create",
-        "recordUpdated": "false"
-      },
-      {
-        "id": "common:abc:124",
-        "kind": "common:petrel:regularheightfieldsurface:1.0.0",
-        "op": "create",
-        "recordUpdated": "true"
-      },
-      {
-        "kind": "common:petrel:regularheightfieldsurface:1.0.0",
-        "op": "create_schema"
-      },
-      {
-        "id": "common:ghi:345",
-        "kind": "common:petrel:regularheightfieldsurface:1.0.0",
-        "op": "delete"
-      }
-    ]
-  },
-  {
-    "name": "schema-changed",
-    "description": "This notification is sent whenever a new schema is created or updated via schema-service.",
-    "state": "ACTIVE",
-    "example": [
-      {
-        "kind": "osdu:wks:wellbore:1.0.0",
-        "op": "update"
-      },
-      {
-        "kind": "osdu:wks:wellbore:2.0.0",
-        "op": "create"
-      }
-    ]
-  },
-  {
-    "name": "status-changed",
-    "description": "Every Service/Stage would publish their respective status changed information in this topic.",
-    "state": "ACTIVE",
-    "example": [
-      {
-        "kind": "dataSetDetails",
-        "properties": {
-          "correlationId": "12345",
-          "dataSetId": "12345",
-          "dataSetVersionId": "1",
-          "dataSetType": "FILE",
-          "recordCount": 10,
-          "timestamp": 1622118996000
-        }
-      },
-      {
-        "kind": "status",
-        "properties": {
-          "correlationId": "12345",
-          "recordId": "12334",
-          "recordIdVersion": "123ff",
-          "stage": "STORAGE_SYNC",
-          "status": "FAILED",
-          "message": "acl is not valid",
-          "errorCode": 400,
-          "timestamp": 1622118996000
-        }
-      }
-    ]
-  },
-  {
-    "name": "legaltags-changed",
-    "description": "This notification is sent whenever a new legaltag is created, updated or deleted.",
-    "state": "ACTIVE",
-    "example": [
-      {
-        "statusChangedTags": [
-          {
-            "changedTagName": "osdu-openZgy-Legal-Tag-1727673",
-            "changedTagStatus": "incompliant"
-          }
-        ]
-      }
-    ]
-  }
-]
diff --git a/provider/register-gc/src/main/resources/type-mapper-config.json b/provider/register-gc/src/main/resources/type-mapper-config.json
new file mode 100644
index 0000000000000000000000000000000000000000..357af709a4c21f536251cc4fbf73a11118b9d01f
--- /dev/null
+++ b/provider/register-gc/src/main/resources/type-mapper-config.json
@@ -0,0 +1,59 @@
+{
+  "instrumentations": [
+    {
+      "entityType": "org.opengroup.osdu.register.subscriber.model.SubscriptionDto",
+      "fieldNameCustomMapping": {
+        "pushEndpoint": "endpoint",
+        "createdOnEpoch": "createdOn"
+      },
+      "fieldTypeCustomMapping": {
+        "createdOnEpoch": "shaded.osm.com.google.cloud.Timestamp"
+      },
+      "identityTranslator": {
+        "getIdMethod": "getId",
+        "setIdMethod": "setId",
+        "keyClass": "java.lang.String"
+      },
+      "keyFields": [
+        "id"
+      ]
+    },
+    {
+      "entityType": "org.opengroup.osdu.register.action.model.ActionDto",
+      "fieldNameCustomMapping": {
+        "createdOnEpoch": "createdOn"
+      },
+      "fieldTypeCustomMapping": {
+        "createdOnEpoch": "shaded.osm.com.google.cloud.Timestamp"
+      },
+      "identityTranslator": {
+        "getIdMethod": "getId",
+        "setIdMethod": "setId",
+        "keyClass": "java.lang.String"
+      },
+      "keyFields": [
+        "id"
+      ]
+    },
+    {
+      "entityType": "org.opengroup.osdu.register.ddms.model.Ddms",
+      "fieldNameCustomMapping": {
+        "createdDateTimeEpoch": "createdOn"
+      },
+      "fieldTypeCustomMapping": {
+        "createdDateTimeEpoch": "shaded.osm.com.google.cloud.Timestamp"
+      },
+      "identityTranslator": {
+        "getIdMethod": "getId",
+        "setIdMethod": "setId",
+        "keyClass": "java.lang.String"
+      },
+      "keyFields": [
+        "id"
+      ]
+    }
+  ]
+}
+
+
+
diff --git a/provider/register-gc/src/test/java/org/opengroup/osdu/register/provider/gcp/ddms/OsmDdmsRepositoryTest.java b/provider/register-gc/src/test/java/org/opengroup/osdu/register/provider/gcp/ddms/OsmDdmsRepositoryTest.java
deleted file mode 100644
index 72964b9cb536da3fe2b02b5e1a9434d17aa4acf0..0000000000000000000000000000000000000000
--- a/provider/register-gc/src/test/java/org/opengroup/osdu/register/provider/gcp/ddms/OsmDdmsRepositoryTest.java
+++ /dev/null
@@ -1,205 +0,0 @@
-/*
- Copyright 2024 Google LLC
- Copyright 2024 EPAM Systems, Inc
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
-   http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
-*/
-
-package org.opengroup.osdu.register.provider.gcp.ddms;
-
-import static org.junit.jupiter.api.Assertions.assertEquals;
-import static org.junit.jupiter.api.Assertions.assertFalse;
-import static org.junit.jupiter.api.Assertions.assertSame;
-import static org.junit.jupiter.api.Assertions.assertTrue;
-import static org.mockito.ArgumentMatchers.any;
-import static org.mockito.ArgumentMatchers.eq;
-import static org.mockito.Mockito.doThrow;
-import static org.mockito.Mockito.never;
-import static org.mockito.Mockito.verify;
-import static org.mockito.Mockito.when;
-
-import java.util.ArrayList;
-import java.util.List;
-import org.junit.jupiter.api.BeforeEach;
-import org.junit.jupiter.api.Test;
-import org.junit.jupiter.api.extension.ExtendWith;
-import org.junit.jupiter.params.ParameterizedTest;
-import org.junit.jupiter.params.provider.EnumSource;
-import org.mockito.ArgumentCaptor;
-import org.mockito.Captor;
-import org.mockito.InjectMocks;
-import org.mockito.Mock;
-import org.mockito.junit.jupiter.MockitoExtension;
-import org.opengroup.osdu.core.common.model.http.AppException;
-import org.opengroup.osdu.core.common.model.tenant.TenantInfo;
-import org.opengroup.osdu.core.gcp.osm.model.query.GetQuery;
-import org.opengroup.osdu.core.gcp.osm.service.Context;
-import org.opengroup.osdu.core.gcp.osm.service.Transaction;
-import org.opengroup.osdu.core.gcp.osm.translate.ExceptionClassifier.ExceptionClassification;
-import org.opengroup.osdu.register.ddms.model.Ddms;
-
-@ExtendWith(MockitoExtension.class)
-class OsmDdmsRepositoryTest {
-
-  private static final String TEST_TYPE = "test_type";
-  private static final String PARTITION_ID = "partition_id";
-  private static final String TEST_ID = "id";
-  private static final int NOT_FOUND_ERROR_CODE = 404;
-  private static final int SERVER_ERROR_CODE = 500;
-  private static final int USER_ERROR_CODE = 409;
-  @InjectMocks
-  OsmDdmsRepository repository;
-
-  @Mock
-  private Context context;
-
-  @Mock
-  private TenantInfo tenantInfo;
-
-  @Mock
-  Transaction transaction;
-
-  @Captor
-  private ArgumentCaptor<GetQuery<Ddms>> queryCaptor;
-
-
-  @BeforeEach
-  void beforeEach() {
-    when(tenantInfo.getDataPartitionId()).thenReturn(PARTITION_ID);
-  }
-
-  @Test
-  void query() {
-    List<Ddms> expected = new ArrayList<>();
-    when(context.<Ddms>getResultsAsList(any())).thenReturn(expected);
-
-    List<Ddms> actual = repository.query(TEST_TYPE);
-
-    verify(context).getResultsAsList(queryCaptor.capture());
-    assertTrue(queryCaptor.getValue().getWhere().toString().contains(TEST_TYPE));
-    assertSame(expected, actual);
-  }
-
-  @Test
-  void get() {
-    Ddms expected = new Ddms();
-    when(context.getOne(any())).thenReturn(expected);
-
-    Ddms actual = repository.get(TEST_ID);
-
-    verify(context).getOne(queryCaptor.capture());
-    assertTrue(queryCaptor.getValue().getWhere().toString().contains(TEST_ID));
-    assertSame(expected, actual);
-  }
-
-  @Test
-  void getCantFindDdms() {
-    try {
-      repository.get(TEST_ID);
-    } catch (AppException e) {
-      assertEquals(NOT_FOUND_ERROR_CODE, e.getError().getCode());
-    }
-  }
-
-  @Test
-  void delete() {
-    when(context.beginTransaction(any())).thenReturn(transaction);
-    when(context.getOne(any())).thenReturn(new Ddms());
-
-    boolean result = repository.delete(TEST_ID);
-
-    assertTrue(result);
-    verify(context).deleteById(eq(Ddms.class), any(), eq(TEST_ID));
-    verify(transaction).commitIfActive();
-  }
-
-  @Test
-  void deleteWhenNothingTo() {
-    when(context.beginTransaction(any())).thenReturn(transaction);
-    when(context.getOne(any())).thenReturn(null);
-
-    boolean result = repository.delete(TEST_ID);
-
-    assertFalse(result);
-    verify(context, never()).deleteById(eq(Ddms.class), any(), eq(TEST_ID));
-    verify(transaction, never()).commitIfActive();
-    verify(transaction).rollbackIfActive();
-  }
-
-  @ParameterizedTest
-  @EnumSource(ExceptionClassification.class)
-  void deleteWithException(ExceptionClassification exceptionClassification) {
-    when(context.beginTransaction(any())).thenReturn(transaction);
-    when(context.classifyException(any())).thenReturn(exceptionClassification);
-    doThrow(new RuntimeException()).when(context).getOne(any());
-
-    try {
-      repository.delete(TEST_ID);
-    } catch (AppException e) {
-      int expectedCode = exceptionClassification == ExceptionClassification.OTHER
-          ? SERVER_ERROR_CODE
-          : USER_ERROR_CODE;
-      assertEquals(expectedCode, e.getError().getCode());
-    }
-    verify(transaction, never()).commitIfActive();
-    verify(transaction).rollbackIfActive();
-  }
-
-  @Test
-  void create() {
-    Ddms ddms = new Ddms();
-    when(context.beginTransaction(any())).thenReturn(transaction);
-
-    Ddms actual = repository.create(ddms);
-
-    assertSame(ddms, actual);
-    verify(context).create(eq(ddms), any());
-    verify(transaction).commitIfActive();
-  }
-
-  @Test
-  void createAlreadyExists() {
-    Ddms ddms = new Ddms();
-    when(context.beginTransaction(any())).thenReturn(transaction);
-    when(context.getOne(any())).thenReturn(ddms);
-
-    try {
-      repository.create(ddms);
-    } catch (AppException e) {
-      assertEquals(USER_ERROR_CODE, e.getError().getCode());
-    }
-
-    verify(context, never()).create(eq(ddms), any());
-    verify(transaction, never()).commitIfActive();
-    verify(transaction).rollbackIfActive();
-  }
-
-  @ParameterizedTest
-  @EnumSource(ExceptionClassification.class)
-  void createWithException(ExceptionClassification exceptionClassification) {
-    when(context.beginTransaction(any())).thenReturn(transaction);
-    when(context.classifyException(any())).thenReturn(exceptionClassification);
-    doThrow(new RuntimeException()).when(context).create(any(), any());
-
-    try {
-      repository.create(new Ddms());
-    } catch (AppException e) {
-      int expectedCode = exceptionClassification == ExceptionClassification.OTHER
-          ? SERVER_ERROR_CODE
-          : USER_ERROR_CODE;
-      assertEquals(expectedCode, e.getError().getCode());
-    }
-    verify(transaction, never()).commitIfActive();
-    verify(transaction).rollbackIfActive();
-  }
-}
diff --git a/provider/register-gc/src/test/java/org/opengroup/osdu/register/provider/gcp/subscriber/OsmAccessTest.java b/provider/register-gc/src/test/java/org/opengroup/osdu/register/provider/gcp/subscriber/OsmAccessTest.java
deleted file mode 100644
index 655206ed5df54e1960d1090854317682bbc654cf..0000000000000000000000000000000000000000
--- a/provider/register-gc/src/test/java/org/opengroup/osdu/register/provider/gcp/subscriber/OsmAccessTest.java
+++ /dev/null
@@ -1,405 +0,0 @@
-/*
- Copyright 2024 Google LLC
- Copyright 2024 EPAM Systems, Inc
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
-   http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
-*/
-
-package org.opengroup.osdu.register.provider.gcp.subscriber;
-
-import static org.junit.jupiter.api.Assertions.assertEquals;
-import static org.junit.jupiter.api.Assertions.assertFalse;
-import static org.junit.jupiter.api.Assertions.assertNotSame;
-import static org.junit.jupiter.api.Assertions.assertThrows;
-import static org.junit.jupiter.api.Assertions.assertTrue;
-import static org.mockito.ArgumentMatchers.any;
-import static org.mockito.ArgumentMatchers.eq;
-import static org.mockito.Mockito.doThrow;
-import static org.mockito.Mockito.never;
-import static org.mockito.Mockito.verify;
-import static org.mockito.Mockito.when;
-
-
-import java.util.List;
-import org.junit.jupiter.api.BeforeEach;
-import org.junit.jupiter.api.Test;
-import org.junit.jupiter.api.extension.ExtendWith;
-import org.junit.jupiter.params.ParameterizedTest;
-import org.junit.jupiter.params.provider.EnumSource;
-import org.mockito.Answers;
-import org.mockito.ArgumentCaptor;
-import org.mockito.ArgumentMatchers;
-import org.mockito.InjectMocks;
-import org.mockito.Mock;
-import org.mockito.junit.jupiter.MockitoExtension;
-import org.opengroup.osdu.core.common.model.http.AppException;
-import org.opengroup.osdu.core.common.model.tenant.TenantInfo;
-import org.opengroup.osdu.core.common.secret.SecretClient;
-import org.opengroup.osdu.core.common.secret.SecretClientFactory;
-import org.opengroup.osdu.core.gcp.oqm.driver.OqmDriverRuntimeException;
-import org.opengroup.osdu.core.gcp.osm.model.query.GetQuery;
-import org.opengroup.osdu.core.gcp.osm.service.Transaction;
-import org.opengroup.osdu.core.gcp.osm.translate.ExceptionClassifier.ExceptionClassification;
-import org.opengroup.osdu.register.provider.gcp.subscriber.model.SubscriptionDto;
-import org.opengroup.osdu.register.provider.gcp.util.SecretFactory;
-import org.opengroup.osdu.register.subscriber.model.GsaSecret;
-import org.opengroup.osdu.register.subscriber.model.GsaSecretValue;
-import org.opengroup.osdu.register.subscriber.model.Secret;
-import org.opengroup.osdu.register.subscriber.model.Subscription;
-import org.opengroup.osdu.core.gcp.osm.service.Context;
-import java.sql.Timestamp;
-import org.opengroup.osdu.register.subscriber.model.HmacSecret;
-import org.opengroup.osdu.register.utils.Constants;
-
-@ExtendWith(MockitoExtension.class)
-class OsmAccessTest {
-
-  private static final String PARTITION_ID = "partirion_id";
-  private static final Timestamp TIME_STAMP = new Timestamp(System.currentTimeMillis());
-
-  private static final String S_ID = "1";
-  private static final String S_SECOND_ID = "2";
-  private static final String S_NAME = "Example Subscription";
-  private static final String S_SUBSCRIPTION = "Example description of the subscription.";
-  private static final String S_TOPIC = "ExampleTopic";
-  private static final String S_URL = "https://example.com/push";
-  private static final String S_CREATOR = "John Doe";
-  private static final String S_NOTIFICATION = "notification-123";
-  private static final String S_HMAC_SECRET = "exampleSecret";
-  private static final String S_SECRET_AUDIENCE = "audience";
-  private static final String S_SECRET_KEY = "key";
-  private static final String S_NEW_SECRET_KEY = "new key";
-  private static final String S_GSA_SECRET = S_SECRET_AUDIENCE + "`" + S_SECRET_KEY;
-  private static final int SERVER_ERROR_CODE = 500;
-  private static final int USER_ERROR_CODE = 409;
-  private static final String EXCEPTION_MESSAGE = "Simulated exception";
-
-
-  @InjectMocks
-  private OsmAccess osmAccess;
-
-  @Mock
-  private TenantInfo tenantInfo;
-
-  @Mock
-  private Context context;
-
-  @Mock(answer = Answers.RETURNS_DEEP_STUBS)
-  private SecretClient secretClient;
-
-  @Mock
-  private Transaction transaction;
-
-  @Mock
-  private SecretClientFactory secretFactory;
-
-  @Mock
-  private SubscriptionEventPublisher publisher;
-
-  @BeforeEach
-  public void setup() {
-    when(tenantInfo.getDataPartitionId()).thenReturn(PARTITION_ID);
-  }
-
-  @Test
-  void getThrowsExceptionWhenNoSubscription() {
-    assertThrows(AppException.class, () -> osmAccess.get(S_ID));
-  }
-
-  @Test
-  void getReturnsSubscriptionFroHmacSecret() {
-    SubscriptionDto existingSubscription = buildSubscriptionDto(Constants.HMACSecret);
-
-    when(secretFactory.create(any(), any(), any())).thenReturn(secretClient);
-    when(context.getOne(any())).thenReturn(existingSubscription);
-    when(secretClient.retrieveSecret(any()).getValue()).thenReturn(S_HMAC_SECRET);
-
-    Subscription subscription = osmAccess.get(S_ID);
-
-    Subscription expectedSubscription = buildSubscription(Constants.HMACSecret);
-    assertEquals(expectedSubscription, subscription);
-  }
-
-  @Test
-  void getReturnsSubscriptionFroGsaSecret() {
-    SubscriptionDto existingSubscription = buildSubscriptionDto(Constants.GSASecret);
-
-    when(context.getOne(any())).thenReturn(existingSubscription);
-    when(secretFactory.create(any(), any(), any())).thenReturn(secretClient);
-    when(secretClient.retrieveSecret(any()).getValue()).thenReturn(S_GSA_SECRET);
-
-    Subscription subscription = osmAccess.get(S_ID);
-
-    Subscription expectedSubscription = buildSubscription(Constants.GSASecret);
-    assertEquals(expectedSubscription, subscription);
-  }
-
-  @Test
-  void queryCallsContext() {
-    SubscriptionDto existingSubscription = buildSubscriptionDto(Constants.HMACSecret);
-    when(context.getResultsAsList(any())).thenReturn(List.of(existingSubscription));
-    when(secretClient.retrieveSecret(any()).getValue()).thenReturn(S_HMAC_SECRET);
-    when(secretFactory.create(any(), any(), any())).thenReturn(secretClient);
-
-    List<Subscription> subscriptionList = osmAccess.query(S_NOTIFICATION);
-
-    verify(context).getResultsAsList(any());
-
-    List<Subscription> expectedSubscriptions =
-        List.of(buildSubscription(Constants.HMACSecret));
-    assertEquals(expectedSubscriptions, subscriptionList);
-  }
-
-  @Test
-  void deleteWhenNothingTo() {
-    when(context.beginTransaction(any())).thenReturn(transaction);
-    boolean result = osmAccess.delete(S_ID);
-
-    verify(transaction, never()).commitIfActive();
-    verify(transaction).rollbackIfActive();
-    assertFalse(result);
-  }
-
-  @Test
-  void delete() {
-    when(context.beginTransaction(any())).thenReturn(transaction);
-    when(context.getOne(any())).thenReturn(buildSubscriptionDto(Constants.HMACSecret));
-    when(secretFactory.create(any(), any(), any())).thenReturn(secretClient);
-
-    boolean result = osmAccess.delete(S_ID);
-
-    verify(secretClient).removeSecret(any());
-    verify(context).deleteById(eq(SubscriptionDto.class), any(), eq(S_ID));
-    verify(publisher).sendSubscriptionLifecycleEvent(any(), eq(tenantInfo), any());
-    verify(transaction).commitIfActive();
-    assertTrue(result);
-  }
-
-  @ParameterizedTest
-  @EnumSource(ExceptionClassification.class)
-  void deleteWithException(ExceptionClassification exceptionClassification) {
-    when(context.beginTransaction(any())).thenReturn(transaction);
-    when(context.getOne(any())).thenReturn(buildSubscriptionDto(Constants.HMACSecret));
-    when(context.classifyException(any())).thenReturn(exceptionClassification);
-    when(secretFactory.create(any(), any(), any())).thenReturn(secretClient);
-    doThrow(new RuntimeException()).when(context)
-        .deleteById(eq(SubscriptionDto.class), any(), eq(S_ID));
-
-    try {
-      osmAccess.delete(S_ID);
-    } catch (AppException e) {
-      int expectedCode = exceptionClassification == ExceptionClassification.OTHER
-          ? SERVER_ERROR_CODE
-          : USER_ERROR_CODE;
-      assertEquals(expectedCode, e.getError().getCode());
-    }
-    verify(transaction, never()).commitIfActive();
-    verify(transaction).rollbackIfActive();
-  }
-
-  @Test
-  void createAlreadyExisting() {
-    when(context.beginTransaction(any())).thenReturn(transaction);
-    when(context.getOne(any())).thenReturn(new Object());
-
-    try {
-      osmAccess.create(buildSubscription(Constants.HMACSecret));
-    } catch (AppException e) {
-      assertEquals(USER_ERROR_CODE, e.getError().getCode());
-    }
-
-    verify(context, never()).createAndGet(any());
-    verify(transaction, never()).commitIfActive();
-    verify(transaction).rollbackIfActive();
-  }
-
-  @Test
-  void create() {
-    when(context.beginTransaction(any())).thenReturn(transaction);
-    when(context.createAndGet(any(), any())).thenReturn(buildSubscriptionDto(Constants.HMACSecret));
-    when(secretFactory.create(any(), any(), any())).thenReturn(secretClient);
-
-    osmAccess.create(buildSubscription(Constants.HMACSecret));
-
-    verify(secretClient).createSecret(any(), any());
-    verify(publisher).sendSubscriptionLifecycleEvent(any(), eq(tenantInfo), any());
-    verify(transaction).commitIfActive();
-  }
-
-  @Test
-  void createSetsNewTimestamp() {
-    when(context.beginTransaction(any())).thenReturn(transaction);
-    when(secretFactory.create(any(), any(), any())).thenReturn(secretClient);
-
-    Subscription subscription = buildSubscription(Constants.HMACSecret);
-    Timestamp timestamp = subscription.getCreatedOnEpoch();
-    try {
-      osmAccess.create(subscription);
-    } catch (Exception e) {
-      // ok
-    }
-
-    ArgumentCaptor<SubscriptionDto> sCaptor = ArgumentCaptor.forClass(SubscriptionDto.class);
-    verify(context).createAndGet(sCaptor.capture(), any());
-    assertNotSame(timestamp, sCaptor.getValue().getCreatedOnEpoch());
-  }
-
-  @ParameterizedTest
-  @EnumSource(ExceptionClassification.class)
-  void createWithException(ExceptionClassification exceptionClassification) {
-    when(context.beginTransaction(any())).thenReturn(transaction);
-    when(context.classifyException(any())).thenReturn(exceptionClassification);
-    when(secretFactory.create(any(), any(), any())).thenReturn(secretClient);
-    doThrow(new RuntimeException()).when(context).createAndGet(any(), any());
-
-    try {
-      osmAccess.create(buildSubscription(Constants.HMACSecret));
-    } catch (AppException e) {
-      int expectedCode = exceptionClassification == ExceptionClassification.OTHER
-          ? SERVER_ERROR_CODE
-          : USER_ERROR_CODE;
-      assertEquals(expectedCode, e.getError().getCode());
-    }
-    verify(transaction, never()).commitIfActive();
-    verify(transaction).rollbackIfActive();
-  }
-
-  @Test
-  void patch() {
-    when(context.beginTransaction(any())).thenReturn(transaction);
-    when(context.getOne(any())).thenReturn(buildSubscriptionDto(Constants.HMACSecret));
-    when(secretFactory.create(any(), any(), any())).thenReturn(secretClient);
-
-    Secret secret = new HmacSecret(S_NEW_SECRET_KEY);
-    boolean result = osmAccess.patch(S_ID, secret);
-
-    assertTrue(result);
-
-    verify(secretClient).updateSecret(any(), any());
-
-    ArgumentCaptor<SubscriptionDto> sCaptor = ArgumentCaptor.forClass(SubscriptionDto.class);
-    verify(context).upsert(sCaptor.capture(), any());
-    assertEquals(S_NEW_SECRET_KEY, sCaptor.getValue().getSecretValue());
-
-    verify(publisher).sendSubscriptionLifecycleEvent(any(), any(), any());
-    verify(transaction).commitIfActive();
-  }
-
-  @Test
-  void patchWhenNothingTo() {
-    when(context.beginTransaction(any())).thenReturn(transaction);
-    boolean result = osmAccess.patch(S_ID, new HmacSecret(S_NEW_SECRET_KEY));
-
-    verify(transaction, never()).commitIfActive();
-    verify(transaction).rollbackIfActive();
-    assertFalse(result);
-  }
-
-  @ParameterizedTest
-  @EnumSource(ExceptionClassification.class)
-  void patchWithException(ExceptionClassification exceptionClassification) {
-    when(context.beginTransaction(any())).thenReturn(transaction);
-    when(context.getOne(any())).thenReturn(buildSubscriptionDto(Constants.HMACSecret));
-    when(context.classifyException(any())).thenReturn(exceptionClassification);
-    when(secretFactory.create(any(), any(), any())).thenReturn(secretClient);
-    doThrow(new RuntimeException()).when(context).upsert(any(), any());
-
-    try {
-      osmAccess.patch(S_ID, new HmacSecret(S_NEW_SECRET_KEY));
-    } catch (AppException e) {
-      int expectedCode = exceptionClassification == ExceptionClassification.OTHER
-          ? SERVER_ERROR_CODE
-          : USER_ERROR_CODE;
-      assertEquals(expectedCode, e.getError().getCode());
-    }
-    verify(transaction, never()).commitIfActive();
-    verify(transaction).rollbackIfActive();
-  }
-
-  @Test
-  void getAll() {
-    SubscriptionDto dto1 = buildSubscriptionDto(Constants.HMACSecret);
-    SubscriptionDto dto2 = buildSubscriptionDto(Constants.HMACSecret);
-    dto2.setId(S_SECOND_ID);
-
-    when(secretFactory.create(any(), any(), any())).thenReturn(secretClient);
-    when(context.getResultsAsList(ArgumentMatchers.<GetQuery<SubscriptionDto>>any()))
-        .thenReturn(List.of(dto1, dto2));
-
-    List<Subscription> result = osmAccess.getAll();
-
-    assertEquals(2, result.size());
-    assertEquals(S_ID, result.get(0).getId());
-    assertEquals(S_SECOND_ID, result.get(1).getId());
-  }
-
-  @Test
-  void testGetAll_ExceptionHandling() {
-    SubscriptionDto dto1 = buildSubscriptionDto(Constants.HMACSecret);
-    SubscriptionDto dto2 = buildSubscriptionDto(Constants.HMACSecret);
-    dto2.setId(S_SECOND_ID);
-
-    when(context.getResultsAsList(ArgumentMatchers.<GetQuery<SubscriptionDto>>any()))
-        .thenReturn(List.of(dto1, dto2));
-    when(secretFactory.create(any(), any(), any())).thenReturn(secretClient);
-
-    when(secretClient.retrieveSecret(any()).getValue())
-        .thenReturn(S_HMAC_SECRET)
-        .thenThrow(new OqmDriverRuntimeException(EXCEPTION_MESSAGE));
-
-    List<Subscription> result = osmAccess.getAll();
-
-    assertEquals(1, result.size());
-    assertEquals(S_ID, result.get(0).getId());
-  }
-
-
-  private SubscriptionDto buildSubscriptionDto(String secretType) {
-    SubscriptionDto subscription = new SubscriptionDto();
-    subscription.setId(S_ID);
-    subscription.setName(S_NAME);
-    subscription.setDescription(S_SUBSCRIPTION);
-    subscription.setTopic(S_TOPIC);
-    subscription.setPushEndpoint(S_URL);
-    subscription.setCreatedBy(S_CREATOR);
-    subscription.setCreatedOnEpoch(TIME_STAMP);
-    subscription.setNotificationId(S_NOTIFICATION);
-    subscription.setSecretValue(S_HMAC_SECRET);
-    subscription.setSecretType(secretType);
-    return subscription;
-  }
-
-
-  private Subscription buildSubscription(String secretType) {
-    Secret secret = null;
-    if (Constants.GSASecret.equals(secretType)) {
-      secret = new GsaSecret(new GsaSecretValue(S_SECRET_AUDIENCE, S_SECRET_KEY));
-    } else if (Constants.HMACSecret.equals(secretType)) {
-      HmacSecret hmacSecret = new HmacSecret();
-      hmacSecret.setValue(S_HMAC_SECRET);
-      secret = hmacSecret;
-    }
-
-    return Subscription.builder()
-        .id(S_ID)
-        .name(S_NAME)
-        .description(S_SUBSCRIPTION)
-        .topic(S_TOPIC)
-        .pushEndpoint(S_URL)
-        .createdBy(S_CREATOR)
-        .createdOnEpoch(TIME_STAMP)
-        .notificationId(S_NOTIFICATION)
-        .secret(secret)
-        .build();
-  }
-}
diff --git a/provider/register-gc/src/test/java/org/opengroup/osdu/register/provider/gcp/verifier/GsaTokenVerifierImplTest.java b/provider/register-gc/src/test/java/org/opengroup/osdu/register/provider/gcp/verifier/GsaTokenVerifierImplTest.java
deleted file mode 100644
index e17a5a7435a5fb0b95abb4d158794aadd5e9671f..0000000000000000000000000000000000000000
--- a/provider/register-gc/src/test/java/org/opengroup/osdu/register/provider/gcp/verifier/GsaTokenVerifierImplTest.java
+++ /dev/null
@@ -1,35 +0,0 @@
-package org.opengroup.osdu.register.provider.gcp.verifier;
-
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.mockito.InjectMocks;
-import org.mockito.Mock;
-import org.mockito.junit.MockitoJUnitRunner;
-import org.opengroup.osdu.register.utils.AppServiceConfig;
-
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertTrue;
-
-@RunWith(MockitoJUnitRunner.class)
-public class GsaTokenVerifierImplTest {
-
-  @Mock
-  private AppServiceConfig serviceConfig;
-  @InjectMocks
-  private GsaTokenVerifierImpl gsaTokenVerifier;
-
-  @Test
-  public void verify_true_whenTokenEmpty() throws Exception {
-    assertTrue(gsaTokenVerifier.verify(""));
-  }
-
-  @Test
-  public void verify_true_whenTokenNull() throws Exception {
-    assertTrue(gsaTokenVerifier.verify(null));
-  }
-
-  @Test
-  public void verify_false_whenTokenInvalid() throws Exception {
-    assertFalse(gsaTokenVerifier.verify("token"));
-  }
-}