From 235887a2c38fed420dbb8d8229119169a0b9b069 Mon Sep 17 00:00:00 2001
From: "Riabokon Stanislav(EPAM)[GCP]" <stanislav_riabokon@epam.com>
Date: Thu, 31 Oct 2024 11:22:08 +0000
Subject: [PATCH] Migration GC module to GC Cimpl (GONRG-10424)

---
 .gitlab-ci.yml                                |   6 +-
 NOTICE                                        |  66 +-
 .../bootstrap-osdu-module/bootstrap_schema.sh |  32 +-
 devops/gc/deploy/README.md                    |   5 -
 .../deploy/templates/configmap-bootstrap.yaml |   4 -
 devops/gc/deploy/templates/configmap.yaml     |  10 +-
 .../templates/deployment-bootstrap.yaml       |   4 -
 devops/gc/deploy/templates/deployment.yaml    |   8 -
 .../gc/deploy/templates/service-account.yaml  |   7 -
 devops/gc/deploy/templates/service.yaml       |   2 -
 .../gc/deploy/templates/virtual-service.yaml  |   6 +-
 devops/gc/deploy/values.yaml                  |   5 -
 devops/gc/pipeline/override-stages.yml        |  29 +
 provider/schema-gc/README.md                  |  25 +-
 .../cloudbuild/Dockerfile.cloudbuild          |  16 +-
 provider/schema-gc/docs/anthos/README.md      | 504 ---------------
 .../schema-gc/docs/anthos/pics/rabbit.PNG     | Bin 9605 -> 0 bytes
 provider/schema-gc/docs/gc/README.md          |  49 +-
 provider/schema-gc/pom.xml                    | 132 +---
 .../osdu/schema/GcpSchemaApplication.java     |  11 +-
 .../osdu/schema/cache/config/CacheConfig.java |  34 -
 .../EventMessagingPropertiesConfig.java       |  41 --
 .../PropertiesConfiguration.java              |  32 -
 .../configuration/mapper/TypeMapperImpl.java  | 102 ---
 .../provider/DestinationProvider.java         |  63 --
 .../provider/DestinationProviderImpl.java     |  74 ---
 .../provider/impl/ObmDestinationProvider.java |  43 --
 .../provider/impl/OqmDestinationProvider.java |  43 --
 .../provider/impl/OsmDestinationProvider.java |  43 --
 .../model/DestinationInstructions.java        |  55 --
 .../schema/exception/AppExceptionHandler.java |  56 --
 .../impl/messagebus/MessageBusImpl.java       | 128 ----
 .../messagebus/model/SchemaPubSubInfo.java    |  33 -
 .../schemainfostore/OsmAuthorityStore.java    | 148 -----
 .../schemainfostore/OsmEntityTypeStore.java   | 164 -----
 .../schemainfostore/OsmSchemaInfoStore.java   | 525 ----------------
 .../impl/schemainfostore/OsmSourceStore.java  | 160 -----
 .../impl/schemastore/ObmSchemaStore.java      | 262 --------
 .../formatter/GoogleJsonFormatter.java}       |  28 +-
 ...thorizationServiceForServiceAdminImpl.java |  57 --
 .../osdu/schema/security/WebSecurity.java     |  45 --
 .../resources/application-anthos.properties   |  21 -
 .../src/main/resources/application.properties |   2 +
 .../schema-gc/src/main/resources/logback.xml  |  62 +-
 .../main/resources/type-mapper-config.json    |  74 +++
 .../impl/messagebus/MessageBusImplTest.java   | 100 ---
 .../OsmAuthorityStoreTest.java                | 216 -------
 .../OsmEntityTypeStoreTest.java               | 211 -------
 .../OsmSchemaInfoStoreTest.java               | 582 ------------------
 .../schemainfostore/OsmSourceStoreTest.java   | 208 -------
 .../impl/schemastore/ObmSchemaStoreTest.java  | 218 -------
 .../src/test/resources/application.properties |   0
 .../src/test/resources/logback-test.xml       |   5 -
 .../org.mockito.plugins.MockMaker             |   1 -
 schema-core-plus/pom.xml                      |  20 +-
 .../schemainfostore/OsmAuthorityStore.java    |   4 +-
 .../schemainfostore/OsmEntityTypeStore.java   |   5 +-
 .../schemainfostore/OsmSchemaInfoStore.java   |  12 +-
 .../impl/schemainfostore/OsmSourceStore.java  |   4 +-
 59 files changed, 248 insertions(+), 4554 deletions(-)
 delete mode 100644 devops/gc/deploy/templates/service-account.yaml
 delete mode 100644 provider/schema-gc/docs/anthos/README.md
 delete mode 100644 provider/schema-gc/docs/anthos/pics/rabbit.PNG
 delete mode 100644 provider/schema-gc/src/main/java/org/opengroup/osdu/schema/cache/config/CacheConfig.java
 delete mode 100644 provider/schema-gc/src/main/java/org/opengroup/osdu/schema/configuration/EventMessagingPropertiesConfig.java
 delete mode 100644 provider/schema-gc/src/main/java/org/opengroup/osdu/schema/configuration/PropertiesConfiguration.java
 delete mode 100644 provider/schema-gc/src/main/java/org/opengroup/osdu/schema/configuration/mapper/TypeMapperImpl.java
 delete mode 100644 provider/schema-gc/src/main/java/org/opengroup/osdu/schema/destination/provider/DestinationProvider.java
 delete mode 100644 provider/schema-gc/src/main/java/org/opengroup/osdu/schema/destination/provider/DestinationProviderImpl.java
 delete mode 100644 provider/schema-gc/src/main/java/org/opengroup/osdu/schema/destination/provider/impl/ObmDestinationProvider.java
 delete mode 100644 provider/schema-gc/src/main/java/org/opengroup/osdu/schema/destination/provider/impl/OqmDestinationProvider.java
 delete mode 100644 provider/schema-gc/src/main/java/org/opengroup/osdu/schema/destination/provider/impl/OsmDestinationProvider.java
 delete mode 100644 provider/schema-gc/src/main/java/org/opengroup/osdu/schema/destination/provider/model/DestinationInstructions.java
 delete mode 100644 provider/schema-gc/src/main/java/org/opengroup/osdu/schema/exception/AppExceptionHandler.java
 delete mode 100644 provider/schema-gc/src/main/java/org/opengroup/osdu/schema/impl/messagebus/MessageBusImpl.java
 delete mode 100644 provider/schema-gc/src/main/java/org/opengroup/osdu/schema/impl/messagebus/model/SchemaPubSubInfo.java
 delete mode 100644 provider/schema-gc/src/main/java/org/opengroup/osdu/schema/impl/schemainfostore/OsmAuthorityStore.java
 delete mode 100644 provider/schema-gc/src/main/java/org/opengroup/osdu/schema/impl/schemainfostore/OsmEntityTypeStore.java
 delete mode 100644 provider/schema-gc/src/main/java/org/opengroup/osdu/schema/impl/schemainfostore/OsmSchemaInfoStore.java
 delete mode 100644 provider/schema-gc/src/main/java/org/opengroup/osdu/schema/impl/schemainfostore/OsmSourceStore.java
 delete mode 100644 provider/schema-gc/src/main/java/org/opengroup/osdu/schema/impl/schemastore/ObmSchemaStore.java
 rename provider/schema-gc/src/main/java/org/opengroup/osdu/schema/{configuration/PartitionPropertyNames.java => logging/formatter/GoogleJsonFormatter.java} (52%)
 delete mode 100644 provider/schema-gc/src/main/java/org/opengroup/osdu/schema/security/AuthorizationServiceForServiceAdminImpl.java
 delete mode 100644 provider/schema-gc/src/main/java/org/opengroup/osdu/schema/security/WebSecurity.java
 delete mode 100644 provider/schema-gc/src/main/resources/application-anthos.properties
 create mode 100644 provider/schema-gc/src/main/resources/type-mapper-config.json
 delete mode 100644 provider/schema-gc/src/test/java/org/opengroup/osdu/schema/impl/messagebus/MessageBusImplTest.java
 delete mode 100644 provider/schema-gc/src/test/java/org/opengroup/osdu/schema/impl/schemainfostore/OsmAuthorityStoreTest.java
 delete mode 100644 provider/schema-gc/src/test/java/org/opengroup/osdu/schema/impl/schemainfostore/OsmEntityTypeStoreTest.java
 delete mode 100644 provider/schema-gc/src/test/java/org/opengroup/osdu/schema/impl/schemainfostore/OsmSchemaInfoStoreTest.java
 delete mode 100644 provider/schema-gc/src/test/java/org/opengroup/osdu/schema/impl/schemainfostore/OsmSourceStoreTest.java
 delete mode 100644 provider/schema-gc/src/test/java/org/opengroup/osdu/schema/impl/schemastore/ObmSchemaStoreTest.java
 delete mode 100644 provider/schema-gc/src/test/resources/application.properties
 delete mode 100644 provider/schema-gc/src/test/resources/logback-test.xml
 delete mode 100644 provider/schema-gc/src/test/resources/mockito-extensions/org.mockito.plugins.MockMaker

diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 38125c9ef..4bab8abba 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -212,11 +212,11 @@ download_plugins:
   stage: build
   variables:
     OSM_PACKAGE_REGISTRY_URL: "https://community.opengroup.org/api/v4/projects/1448/packages/maven"
-    OSM_VERSION: "0.25.0-rc2"
+    OSM_VERSION: "0.27.3"
     OBM_PACKAGE_REGISTRY_URL: "https://community.opengroup.org/api/v4/projects/1441/packages/maven"
-    OBM_VERSION: "0.25.0-rc1"
+    OBM_VERSION: "0.27.3"
     OQM_PACKAGE_REGISRTY_URL: "https://community.opengroup.org/api/v4/projects/1450/packages/maven"
-    OQM_VERSION: "0.25.0-rc1"
+    OQM_VERSION: "0.27.2"
 
   artifacts:
     paths:
diff --git a/NOTICE b/NOTICE
index ba2384f02..d73fa7540 100644
--- a/NOTICE
+++ b/NOTICE
@@ -43,12 +43,10 @@ The following software have components provided under the terms of this license:
 - Animal Sniffer Annotations (from https://repo1.maven.org/maven2/org/codehaus/mojo/animal-sniffer-annotations)
 - Apache Commons BeanUtils (from http://commons.apache.org/proper/commons-beanutils/, https://commons.apache.org/proper/commons-beanutils/, https://repo1.maven.org/maven2/commons-beanutils/commons-beanutils)
 - Apache Commons Codec (from http://commons.apache.org/proper/commons-codec/, https://commons.apache.org/proper/commons-codec/)
-- Apache Commons Compress (from http://commons.apache.org/compress/, http://commons.apache.org/proper/commons-compress/, https://commons.apache.org/proper/commons-compress/)
 - Apache Commons IO (from http://commons.apache.org/io/, https://commons.apache.org/proper/commons-io/, https://repo1.maven.org/maven2/commons-io/commons-io)
 - 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)
@@ -72,8 +70,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-rev20240903-2.0.0 (from https://repo1.maven.org/maven2/com/google/apis/google-api-services-cloudkms)
-- Cloud Storage JSON API v1-rev20240916-2.0.0 (from https://repo1.maven.org/maven2/com/google/apis/google-api-services-storage)
 - 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)
@@ -90,11 +86,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 Cloud Storage (from https://github.com/googleapis/google-cloud-java/tree/master/google-cloud-clients/google-cloud-storage, https://github.com/googleapis/java-storage)
 - Google Guice - Core Library (from https://repo1.maven.org/maven2/com/google/inject/guice)
 - 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)
@@ -104,8 +96,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)
@@ -119,7 +109,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)
@@ -135,7 +124,6 @@ The following software have components provided under the terms of this license:
 - Jakarta JSON Processing API (from https://github.com/eclipse-ee4j/jsonp, https://javaee.github.io/jsonp)
 - Jakarta Servlet (from https://projects.eclipse.org/projects/ee4j.servlet)
 - Jakarta Validation API (from https://beanvalidation.org)
-- Java Architecture for XML Binding (from http://jaxb.java.net/, https://repo1.maven.org/maven2/javax/xml/bind/jaxb-api)
 - Java Native Access (from https://github.com/java-native-access/jna, https://github.com/twall/jna)
 - Java Native Access Platform (from https://github.com/java-native-access/jna)
 - JavaBeans Activation Framework (from <http://java.sun.com/javase/technologies/desktop/javabeans/jaf/index.jsp>, http://java.sun.com/javase/technologies/desktop/javabeans/jaf/index.jsp, https://repo1.maven.org/maven2/com/sun/activation/javax.activation)
@@ -155,7 +143,6 @@ The following software have components provided under the terms of this license:
 - Mockito (from http://mockito.org, http://www.mockito.org, https://github.com/mockito/mockito)
 - MongoDB Driver (from https://www.mongodb.com/)
 - MongoDB Java Driver (from http://mongodb.org/, http://www.mongodb.org, https://www.mongodb.com/)
-- NanoHttpd-Core (from https://repo1.maven.org/maven2/org/nanohttpd/nanohttpd)
 - Netty Reactive Streams Implementation (from https://repo1.maven.org/maven2/com/typesafe/netty/netty-reactive-streams)
 - Netty/Buffer (from https://repo1.maven.org/maven2/io/netty/netty-buffer)
 - Netty/Codec (from https://repo1.maven.org/maven2/io/netty/netty-codec)
@@ -185,18 +172,15 @@ The following software have components provided under the terms of this license:
 - OkHttp Logging Interceptor (from https://github.com/square/okhttp, https://repo1.maven.org/maven2/com/squareup/okhttp3/logging-interceptor, https://square.github.io/okhttp/)
 - OkHttp URLConnection (from https://repo1.maven.org/maven2/com/squareup/okhttp3/okhttp-urlconnection, https://square.github.io/okhttp/)
 - Okio (from https://github.com/square/okio/, https://repo1.maven.org/maven2/com/squareup/okio/okio)
-- OpenCensus (from https://github.com/census-instrumentation/opencensus-java, https://github.com/census-instrumentation/opencensus-proto)
+- OpenCensus (from https://github.com/census-instrumentation/opencensus-java)
 - 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
 - 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)
 - Retrofit (from https://github.com/square/retrofit, https://repo1.maven.org/maven2/com/squareup/retrofit2/retrofit)
 - RxJava (from https://github.com/ReactiveX/RxJava)
-- Simple XML (safe) (from https://github.com/dweiss/simplexml)
 - SnakeYAML (from http://code.google.com/p/snakeyaml/, http://www.snakeyaml.org, https://bitbucket.org/snakeyaml/snakeyaml)
 - Spring AOP (from http://www.springframework.org, https://github.com/spring-projects/spring-framework, https://repo1.maven.org/maven2/org/springframework/spring-aop)
 - Spring Beans (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-beans)
@@ -206,7 +190,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)
@@ -224,7 +207,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 Security - Core (from http://spring.io/spring-security, https://repo1.maven.org/maven2/org/springframework/security/spring-security-core, https://spring.io/projects/spring-security, https://spring.io/spring-security)
@@ -241,10 +223,8 @@ The following software have components provided under the terms of this license:
 - botocore (from https://github.com/boto/botocore)
 - datastore-v1-proto-client (from https://repo1.maven.org/maven2/com/google/cloud/datastore/datastore-v1-proto-client)
 - error-prone annotations (from https://repo1.maven.org/maven2/com/google/errorprone/error_prone_annotations)
-- gapic-google-cloud-storage-v2 (from https://repo1.maven.org/maven2/com/google/api/grpc/gapic-google-cloud-storage-v2)
 - google-auth (from https://github.com/GoogleCloudPlatform/google-auth-library-python, https://github.com/googleapis/google-auth-library-python)
 - grpc-google-cloud-datastore-admin-v1 (from https://github.com/googleapis/java-datastore/grpc-google-cloud-datastore-admin-v1)
-- grpc-google-cloud-storage-v2 (from https://repo1.maven.org/maven2/com/google/api/grpc/grpc-google-cloud-storage-v2)
 - io.grpc:grpc-alts (from https://github.com/grpc/grpc-java)
 - io.grpc:grpc-api (from https://github.com/grpc/grpc-java)
 - io.grpc:grpc-auth (from https://github.com/grpc/grpc-java)
@@ -256,7 +236,6 @@ The following software have components provided under the terms of this license:
 - io.grpc:grpc-netty-shaded (from https://github.com/grpc/grpc-java)
 - io.grpc:grpc-protobuf (from https://github.com/grpc/grpc-java)
 - io.grpc:grpc-protobuf-lite (from https://github.com/grpc/grpc-java)
-- io.grpc:grpc-rls (from https://github.com/grpc/grpc-java)
 - io.grpc:grpc-services (from https://github.com/grpc/grpc-java)
 - io.grpc:grpc-stub (from https://github.com/grpc/grpc-java)
 - io.grpc:grpc-util (from https://github.com/grpc/grpc-java)
@@ -274,7 +253,6 @@ The following software have components provided under the terms of this license:
 - micrometer-jakarta9 (from https://github.com/micrometer-metrics/micrometer)
 - micrometer-observation (from https://github.com/micrometer-metrics/micrometer)
 - micrometer-registry-azure-monitor (from https://github.com/micrometer-metrics/micrometer)
-- minio (from https://github.com/minio/minio-java)
 - org.apiguardian:apiguardian-api (from https://github.com/apiguardian-team/apiguardian)
 - org.conscrypt:conscrypt-openjdk-uber (from https://conscrypt.org/)
 - org.opentest4j:opentest4j (from https://github.com/ota4j-team/opentest4j)
@@ -282,14 +260,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-cloud-storage-v2 (from https://repo1.maven.org/maven2/com/google/api/grpc/proto-google-cloud-storage-v2)
 - 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)
 - requests (from http://python-requests.org, https://requests.readthedocs.io)
 - resilience4j (from https://github.com/resilience4j/resilience4j, https://resilience4j.readme.io, ttps://resilience4j.readme.io)
-- snappy-java (from https://github.com/xerial/snappy-java)
 - spring-boot-loader (from https://spring.io/projects/spring-boot)
 - spring-cloud-dependencies (from https://spring.io/projects/spring-cloud)
 - springdoc-openapi-starter-common (from https://repo1.maven.org/maven2/org/springdoc/springdoc-openapi-starter-common)
@@ -312,13 +286,11 @@ BSD-2-Clause
 The following software have components provided under the terms of this license:
 
 - Apache Log4j Core (from https://repo1.maven.org/maven2/org/apache/logging/log4j/log4j-core)
-- Hamcrest (from http://hamcrest.org/JavaHamcrest/)
 - Hamcrest Core (from http://hamcrest.org/, http://hamcrest.org/JavaHamcrest/, https://repo1.maven.org/maven2/org/hamcrest/hamcrest-core)
 - HdrHistogram (from http://hdrhistogram.github.io/HdrHistogram/)
 - 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)
 
@@ -351,9 +323,7 @@ The following software have components provided under the terms of this license:
 - Kryo (from https://repo1.maven.org/maven2/com/esotericsoftware/kryo)
 - MinLog (from https://github.com/EsotericSoftware/minlog)
 - Mockito (from http://mockito.org, http://www.mockito.org, https://github.com/mockito/mockito)
-- NanoHttpd-Core (from https://repo1.maven.org/maven2/org/nanohttpd/nanohttpd)
 - Netty/Codec/HTTP (from https://repo1.maven.org/maven2/io/netty/netty-codec-http)
-- 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)
@@ -368,7 +338,6 @@ BouncyCastle
 ========================================================================
 The following software have components provided under the terms of this license:
 
-- Bouncy Castle Provider (from http://www.bouncycastle.org/java.html, https://www.bouncycastle.org/java.html)
 - Microsoft Azure client library for Identity (from https://github.com/Azure/azure-sdk-for-java)
 
 ========================================================================
@@ -389,7 +358,6 @@ 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)
 - reactive-streams (from http://www.reactive-streams.org/)
 
@@ -400,7 +368,6 @@ The following software have components provided under the terms of this license:
 
 - Apache Log4j Core (from https://repo1.maven.org/maven2/org/apache/logging/log4j/log4j-core)
 - Jakarta JSON Processing API (from https://github.com/eclipse-ee4j/jsonp, https://javaee.github.io/jsonp)
-- Java Architecture for XML Binding (from http://jaxb.java.net/, https://repo1.maven.org/maven2/javax/xml/bind/jaxb-api)
 - JavaBeans Activation Framework (from <http://java.sun.com/javase/technologies/desktop/javabeans/jaf/index.jsp>, http://java.sun.com/javase/technologies/desktop/javabeans/jaf/index.jsp, https://repo1.maven.org/maven2/com/sun/activation/javax.activation)
 - javax.annotation API (from http://jcp.org/en/jsr/detail?id=250)
 
@@ -410,7 +377,6 @@ CDDL-1.1
 The following software have components provided under the terms of this license:
 
 - Jakarta JSON Processing API (from https://github.com/eclipse-ee4j/jsonp, https://javaee.github.io/jsonp)
-- Java Architecture for XML Binding (from http://jaxb.java.net/, https://repo1.maven.org/maven2/javax/xml/bind/jaxb-api)
 - JavaBeans Activation Framework (from <http://java.sun.com/javase/technologies/desktop/javabeans/jaf/index.jsp>, http://java.sun.com/javase/technologies/desktop/javabeans/jaf/index.jsp, https://repo1.maven.org/maven2/com/sun/activation/javax.activation)
 - javax.annotation API (from http://jcp.org/en/jsr/detail?id=250)
 - tomcat-embed-core (from http://tomcat.apache.org/)
@@ -458,6 +424,7 @@ The following software have components provided under the terms of this license:
 - JUnit Vintage Engine (from http://junit.org/junit5/, https://junit.org/junit5/)
 - Jakarta Activation API (from https://github.com/eclipse-ee4j/jaf, https://github.com/jakartaee/jaf-api, https://repo1.maven.org/maven2/jakarta/activation/jakarta.activation-api)
 - Jakarta Annotations API (from https://projects.eclipse.org/projects/ee4j.ca)
+- Jakarta Dependency Injection (from https://github.com/eclipse-ee4j/injection-api)
 - Jakarta JSON Processing API (from https://github.com/eclipse-ee4j/jsonp, https://javaee.github.io/jsonp)
 - Jakarta Messaging API (from https://projects.eclipse.org/projects/ee4j.jms)
 - Jakarta Servlet (from https://projects.eclipse.org/projects/ee4j.servlet)
@@ -482,12 +449,12 @@ The following software have components provided under the terms of this license:
 - JSON-B API (from https://jakartaee.github.io/jsonb-api)
 - Jakarta Activation API (from https://github.com/eclipse-ee4j/jaf, https://github.com/jakartaee/jaf-api, https://repo1.maven.org/maven2/jakarta/activation/jakarta.activation-api)
 - Jakarta Annotations API (from https://projects.eclipse.org/projects/ee4j.ca)
+- Jakarta Dependency Injection (from https://github.com/eclipse-ee4j/injection-api)
 - Jakarta JSON Processing API (from https://github.com/eclipse-ee4j/jsonp, https://javaee.github.io/jsonp)
 - Jakarta Messaging API (from https://projects.eclipse.org/projects/ee4j.jms)
 - Jakarta Servlet (from https://projects.eclipse.org/projects/ee4j.servlet)
 - Jakarta Validation API (from https://beanvalidation.org)
 - Jakarta XML Binding API (from https://repo1.maven.org/maven2/jakarta/xml/bind/jakarta.xml.bind-api, https://repo1.maven.org/maven2/org/jboss/spec/javax/xml/bind/jboss-jaxb-api_2.3_spec)
-- Java Architecture for XML Binding (from http://jaxb.java.net/, https://repo1.maven.org/maven2/javax/xml/bind/jaxb-api)
 - JavaBeans Activation Framework (from <http://java.sun.com/javase/technologies/desktop/javabeans/jaf/index.jsp>, http://java.sun.com/javase/technologies/desktop/javabeans/jaf/index.jsp, https://repo1.maven.org/maven2/com/sun/activation/javax.activation)
 - javax.annotation API (from http://jcp.org/en/jsr/detail?id=250)
 - tomcat-embed-core (from http://tomcat.apache.org/)
@@ -497,22 +464,13 @@ ISC
 ========================================================================
 The following software have components provided under the terms of this license:
 
-- Java Native Access Platform (from https://github.com/java-native-access/jna)
 - Spring Security - Core (from http://spring.io/spring-security, https://repo1.maven.org/maven2/org/springframework/security/spring-security-core, https://spring.io/projects/spring-security, https://spring.io/spring-security)
 
-========================================================================
-Info-ZIP
-========================================================================
-The following software have components provided under the terms of this license:
-
-- Apache Commons Compress (from http://commons.apache.org/compress/, http://commons.apache.org/proper/commons-compress/, https://commons.apache.org/proper/commons-compress/)
-
 ========================================================================
 LGPL-2.1-only
 ========================================================================
 The following software have components provided under the terms of this license:
 
-- Java Native Access (from https://github.com/java-native-access/jna, https://github.com/twall/jna)
 - Java Native Access Platform (from https://github.com/java-native-access/jna)
 - Javassist (from http://www.javassist.org/, https://www.javassist.org/)
 - Logback Classic Module (from http://logback.qos.ch, https://repo1.maven.org/maven2/ch/qos/logback/logback-classic)
@@ -527,6 +485,7 @@ LGPL-2.1-or-later
 The following software have components provided under the terms of this license:
 
 - Java Native Access (from https://github.com/java-native-access/jna, https://github.com/twall/jna)
+- Java Native Access Platform (from https://github.com/java-native-access/jna)
 - Javassist (from http://www.javassist.org/, https://www.javassist.org/)
 
 ========================================================================
@@ -608,13 +567,6 @@ The following software have components provided under the terms of this license:
 - msal4j (from https://github.com/AzureAD/microsoft-authentication-library-for-java)
 - msal4j-persistence-extension (from https://github.com/AzureAD/microsoft-authentication-extensions-for-java, https://github.com/AzureAD/microsoft-authentication-library-for-java)
 
-========================================================================
-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)
-
 ========================================================================
 WTFPL
 ========================================================================
@@ -622,13 +574,6 @@ The following software have components provided under the terms of this license:
 
 - Reflections (from http://code.google.com/p/reflections/, http://github.com/ronmamo/reflections)
 
-========================================================================
-bzip2-1.0.6
-========================================================================
-The following software have components provided under the terms of this license:
-
-- Apache Commons Compress (from http://commons.apache.org/compress/, http://commons.apache.org/proper/commons-compress/, https://commons.apache.org/proper/commons-compress/)
-
 ========================================================================
 cc-pd
 ========================================================================
@@ -649,8 +594,5 @@ public-domain
 The following software have components provided under the terms of this license:
 
 - AOP alliance (from http://aopalliance.sourceforge.net)
-- HdrHistogram (from http://hdrhistogram.github.io/HdrHistogram/)
 - JBoss Logging 3 (from http://www.jboss.org)
 - JSON in Java (from https://github.com/douglascrockford/JSON-java)
-- Microsoft Azure client library for Blob Storage (from https://github.com/Azure/azure-sdk-for-java)
-- PostgreSQL JDBC Driver
diff --git a/devops/gc/bootstrap-osdu-module/bootstrap_schema.sh b/devops/gc/bootstrap-osdu-module/bootstrap_schema.sh
index e40ce9e74..0ea4ed5e9 100644
--- a/devops/gc/bootstrap-osdu-module/bootstrap_schema.sh
+++ b/devops/gc/bootstrap-osdu-module/bootstrap_schema.sh
@@ -20,18 +20,6 @@ set -e
 source ./validate-env.sh "SCHEMA_URL"
 source ./validate-env.sh "ENTITLEMENTS_HOST"
 
-bootstrap_schema_gettoken_onprem() {
-
-  ID_TOKEN="$(curl --location --request POST "${OPENID_PROVIDER_URL}/protocol/openid-connect/token" \
-  --header "Content-Type: application/x-www-form-urlencoded" \
-  --data-urlencode "grant_type=client_credentials" \
-  --data-urlencode "scope=openid" \
-  --data-urlencode "client_id=${OPENID_PROVIDER_CLIENT_ID}" \
-  --data-urlencode "client_secret=${OPENID_PROVIDER_CLIENT_SECRET}" | jq -r ".id_token")"
-
-  export BEARER_TOKEN="Bearer ${ID_TOKEN}"
-}
-
 bootstrap_schema_gettoken_gc() {
 
   BEARER_TOKEN=$(gcloud auth print-identity-token)
@@ -60,23 +48,11 @@ bootstrap_schema_deploy_shared_schemas() {
   python3 ./scripts/DeploySharedSchemas.py -e -u "${SCHEMA_URL}"/api/schema-service/v1/schemas/system
 }
 
-if [ "${ONPREM_ENABLED}" == "true" ]
-then
-  source ./validate-env.sh "DATA_PARTITION"
-  source ./validate-env.sh "OPENID_PROVIDER_URL"
-  source ./validate-env.sh "OPENID_PROVIDER_CLIENT_ID"
-  source ./validate-env.sh "OPENID_PROVIDER_CLIENT_SECRET"
-
-  # Get credentials for onprem
-  bootstrap_schema_gettoken_onprem
-
-else
-  # Specifying "system" partition for GC installation 
-  export DATA_PARTITION="system"
+# Specifying "system" partition for GC installation 
+export DATA_PARTITION="system"
 
-  # Get credentials for Google Cloud
-  bootstrap_schema_gettoken_gc
-fi
+# Get credentials for Google Cloud
+bootstrap_schema_gettoken_gc
 
 # Precheck entitlements
 bootstrap_schema_prechek_env
diff --git a/devops/gc/deploy/README.md b/devops/gc/deploy/README.md
index f1fc3c4b3..1631e7067 100644
--- a/devops/gc/deploy/README.md
+++ b/devops/gc/deploy/README.md
@@ -31,7 +31,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
@@ -67,11 +66,7 @@ First you need to set variables in **values.yaml** file using any code editor. S
 | Name | Description | Type | Default |Required |
 |------|-------------|------|---------|---------|
 **conf.appName** | name of the app | string | `schema` | yes
-**conf.bootstrapSecretName** | secret for bootstrap | string | `datafier-secret` | yes
 **conf.configmap** | configmap to be used | string | `schema-config` | yes
-**conf.minioSecretName** | secret for minio | string | `schema-minio-secret` | yes
-**conf.postgresSecretName** | secret for postgres | string | `schema-postgres-secret` | yes
-**conf.rabbitmqSecretName** | secret for rabbitmq | string | `rabbitmq-secret` | yes
 
 ### Datastore cleanup and bootstrap schemas variables
 
diff --git a/devops/gc/deploy/templates/configmap-bootstrap.yaml b/devops/gc/deploy/templates/configmap-bootstrap.yaml
index 542c42354..b4ceaf93e 100644
--- a/devops/gc/deploy/templates/configmap-bootstrap.yaml
+++ b/devops/gc/deploy/templates/configmap-bootstrap.yaml
@@ -6,9 +6,5 @@ metadata:
   name: {{ printf "%s-bootstrap" .Values.conf.configmap | quote }}
   namespace: {{ .Release.Namespace | quote }}
 data:
-  {{- if .Values.global.onPremEnabled }}
-  DATA_PARTITION: {{ .Values.global.dataPartitionId | quote }}
-  {{- end }}
-  ONPREM_ENABLED: {{ .Values.global.onPremEnabled | quote }}
   SCHEMA_URL: {{ .Values.data.schemaHost | quote }}
   ENTITLEMENTS_HOST: {{ .Values.data.entitlementsHost | quote }} 
diff --git a/devops/gc/deploy/templates/configmap.yaml b/devops/gc/deploy/templates/configmap.yaml
index c18ecbc33..e6de87bc1 100644
--- a/devops/gc/deploy/templates/configmap.yaml
+++ b/devops/gc/deploy/templates/configmap.yaml
@@ -6,19 +6,11 @@ metadata:
   name: {{ .Values.conf.configmap | quote }}
   namespace: {{ .Release.Namespace | quote }}
 data:
-  SHARED_TENANT_NAME: {{- if not .Values.global.onPremEnabled }}
-    {{ "system" }}
-  {{- else }}
-    {{ .Values.global.dataPartitionId | quote }}
-  {{- end }}
+  SHARED_TENANT_NAME: "system"
   LOG_LEVEL: {{ .Values.data.logLevel | default .Values.global.logLevel | quote }}
   ENTITLEMENTS_HOST: {{ .Values.data.entitlementsHost | quote }}
   SCHEMA_CHANGED_TOPIC_NAME: {{ .Values.data.schemaTopicName | quote }}
   SCHEMA_CHANGED_MESSAGING_ENABLED: {{ .Values.data.schemaChangedMessagingEnabled | quote }}
   PARTITION_HOST: {{ .Values.data.partitionHost | quote }}
-  {{- if .Values.global.onPremEnabled }}
-  SPRING_PROFILES_ACTIVE: "anthos"
-  {{- else }}
   SPRING_PROFILES_ACTIVE: "gcp"
-  {{- end }}
   _JAVA_OPTIONS: {{ .Values.data.javaOptions | quote }}
diff --git a/devops/gc/deploy/templates/deployment-bootstrap.yaml b/devops/gc/deploy/templates/deployment-bootstrap.yaml
index 135caf76a..7776147bc 100644
--- a/devops/gc/deploy/templates/deployment-bootstrap.yaml
+++ b/devops/gc/deploy/templates/deployment-bootstrap.yaml
@@ -34,10 +34,6 @@ spec:
           envFrom:
           - configMapRef:
               name: {{ printf "%s-bootstrap" .Values.conf.configmap | quote }}
-          {{- if .Values.global.onPremEnabled }}
-          - secretRef:
-              name: {{ .Values.conf.bootstrapSecretName | quote }}
-          {{- end }}
           securityContext:
             allowPrivilegeEscalation: false
             runAsNonRoot: true
diff --git a/devops/gc/deploy/templates/deployment.yaml b/devops/gc/deploy/templates/deployment.yaml
index 745056abc..9d5195c9b 100644
--- a/devops/gc/deploy/templates/deployment.yaml
+++ 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.minioSecretName | quote }}
-          - secretRef:
-              name: {{ .Values.conf.postgresSecretName | quote }}
-          - secretRef:
-              name: {{ .Values.conf.rabbitmqSecretName | quote }}
-          {{- end }}
           securityContext:
             allowPrivilegeEscalation: false
             runAsNonRoot: true
diff --git a/devops/gc/deploy/templates/service-account.yaml b/devops/gc/deploy/templates/service-account.yaml
deleted file mode 100644
index eec72f128..000000000
--- a/devops/gc/deploy/templates/service-account.yaml
+++ /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/service.yaml b/devops/gc/deploy/templates/service.yaml
index 5f49c5296..3a998ee3b 100644
--- a/devops/gc/deploy/templates/service.yaml
+++ 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/virtual-service.yaml b/devops/gc/deploy/templates/virtual-service.yaml
index 8ee78e1af..3c251b911 100644
--- a/devops/gc/deploy/templates/virtual-service.yaml
+++ 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 }}
     - "*"
@@ -23,9 +21,7 @@ spec:
             port:
               number: 80
             host: "{{ .Values.conf.appName }}.{{ .Release.Namespace }}.svc.cluster.local"
-          {{- if not .Values.global.onPremEnabled }}
           headers:
             request:
               remove:
               - x-envoy-peer-metadata
-          {{- end }}
diff --git a/devops/gc/deploy/values.yaml b/devops/gc/deploy/values.yaml
index 63858c0b5..df9ba5301 100644
--- a/devops/gc/deploy/values.yaml
+++ b/devops/gc/deploy/values.yaml
@@ -1,6 +1,5 @@
 global:
   domain: ""
-  onPremEnabled: false
   limitsEnabled: true
   dataPartitionId: ""
   logLevel: "ERROR"
@@ -29,11 +28,7 @@ data:
 
 conf:
   appName: "schema"
-  bootstrapSecretName: "datafier-secret"
   configmap: "schema-config"
-  minioSecretName: "schema-minio-secret"
-  postgresSecretName: "schema-postgres-secret"
-  rabbitmqSecretName: "rabbitmq-secret"
   replicas: 2
 
 istio:
diff --git a/devops/gc/pipeline/override-stages.yml b/devops/gc/pipeline/override-stages.yml
index 614d3571f..876840500 100644
--- a/devops/gc/pipeline/override-stages.yml
+++ b/devops/gc/pipeline/override-stages.yml
@@ -21,3 +21,32 @@ gc-dev2-test:
 
 gc-containerize-bootstrap-gitlab:
   tags: ["osdu-medium"]
+
+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_OBM_PACKAGE_REGISTRY_URL: "https://community.opengroup.org/api/v4/projects/1475/packages/maven"
+    GC_OBM_VERSION: "0.27.1"
+    GC_OQM_PACKAGE_REGISRTY_URL: "https://community.opengroup.org/api/v4/projects/1477/packages/maven"
+    GC_OQM_VERSION: "0.27.1"
+  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_OBM_PACKAGE_REGISTRY_URL -Dartifact="org.opengroup.osdu:gc-obm-gs:$GC_OBM_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"
+  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/schema-gc/README.md b/provider/schema-gc/README.md
index 328813df5..d5f912724 100644
--- a/provider/schema-gc/README.md
+++ b/provider/schema-gc/README.md
@@ -19,10 +19,6 @@ Pre-requisites
 
 ### Service Configuration
 
-#### Baremetal
-
-[Baremetal service configuration](docs/baremetal/README.md)
-
 #### Google Cloud
 
 [Google Cloud service configuration](docs/gc/README.md)
@@ -91,31 +87,26 @@ Once the above Prerequisite are done, we can follow the below steps to run the s
     mvn clean install
     ```
 
-    This will build the core project as well as all the underlying projects. If we want  to build projects for specific cloud vendor, we can use mvn --projects command. For example, if we want to build only for Google Cloud, we can use below command :
+2. This will build the core project as well as all the underlying projects. If we want  to build projects for specific cloud vendor, we can use mvn --projects command. For example, if we want to build only for Google Cloud, we can use below command :
 
     ```bash
     mvn --projects schema-core,provider/schema-gc clean install
     ```
 
-2. Run schema service in command line. We need to select which cloud vendor specific schema-service we want to run. For example, if we want to run schema-service for Google Cloud, run the below command :
+3. 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
-    # Running Google Cloud : 
-    java --add-opens java.base/java.lang=ALL-UNNAMED --add-opens java.base/java.lang.reflect=ALL-UNNAMED -jar provider\schema-gc\target\os-schema-gc-0.0.1-spring-boot.jar 
-3. The port and path for the service endpoint can be configured in ```application.properties``` in the provider folder as following. If not specified, then  the web container (ex. Tomcat) default is used:
 
-    ```bash
-    server.servlet.contextPath=/api/schema-service/v1/
-    server.port=8080
+```bash
+CMD java --add-opens java.base/java.lang=ALL-UNNAMED \
+         --add-opens java.base/java.lang.reflect=ALL-UNNAMED \
+         -Dloader.main=org.opengroup.osdu.schema.GcpSchemaApplication \
+         -jar /provider/schema-gc/target/os-schema-gc-${PROVIDER}-spring-boot.jar
+```
 
 You can access the service APIs by following the service contract in [schema.yaml](docs/api/schema.yaml)
 
 ## Testing
 
-#### Baremetal
-
-[Baremetal Testing](docs/baremetal/README.md)
-
 #### Google Cloud
 
 [Google Cloud Testing](docs/gc/README.md)
diff --git a/provider/schema-gc/cloudbuild/Dockerfile.cloudbuild b/provider/schema-gc/cloudbuild/Dockerfile.cloudbuild
index 30bd10b60..3a88495f6 100644
--- a/provider/schema-gc/cloudbuild/Dockerfile.cloudbuild
+++ b/provider/schema-gc/cloudbuild/Dockerfile.cloudbuild
@@ -2,6 +2,14 @@ FROM azul/zulu-openjdk:17
 WORKDIR /app
 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-obm-gs-*.jar gc/obm-gs.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/schema-${PROVIDER_NAME}/target/os-schema-${PROVIDER_NAME}-*-spring-boot.jar schema.jar
 # Add a non-root user
@@ -10,4 +18,10 @@ RUN groupadd -g 10001 -r nonroot \
 # Run as non-root user
 USER 10001:10001
 # Run the web service on container startup.
-CMD java --add-opens java.base/java.lang=ALL-UNNAMED --add-opens java.base/java.lang.reflect=ALL-UNNAMED -Djava.security.egd=file:/dev/./urandom -Dserver.port=${PORT} -Dlog4j.formatMsgNoLookups=true -jar /app/schema.jar
+CMD java --add-opens java.base/java.lang=ALL-UNNAMED \
+    --add-opens java.base/java.lang.reflect=ALL-UNNAMED \
+    -Djava.security.egd=file:/dev/./urandom \
+    -Dserver.port=${PORT} \
+    -Dlog4j.formatMsgNoLookups=true \
+    -Dloader.main=org.opengroup.osdu.schema.GcpSchemaApplication \
+    -jar /app/schema.jar
diff --git a/provider/schema-gc/docs/anthos/README.md b/provider/schema-gc/docs/anthos/README.md
deleted file mode 100644
index 699c8cb1e..000000000
--- a/provider/schema-gc/docs/anthos/README.md
+++ /dev/null
@@ -1,504 +0,0 @@
-## Service Configuration for Anthos
-
-## 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 | - |
-| `SHARED_TENANT_NAME` | ex `anthos` | Shared account id | no | - |
-| `<POSTGRES_PASSWORD_ENV_VARIABLE_NAME>` | ex `password` | Potgres user, 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 Indexer service, see [Partition properties set](#properties-set-in-partition-service)  | yes | - |
-| `<MINIO_SECRETKEY_ENV_VARIABLE_NAME>` | ex `password` | Minio password, 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 Indexer service, see [Partition properties set](#properties-set-in-partition-service) | yes | - |
-| `<AMQP_PASSWORD_ENV_VARIABLE_NAME>` | ex `password` | RabbitMQ password, 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 Indexer service, see [Partition properties set](#properties-set-in-partition-service) | yes | - |
-| `<AMQP_ADMIN_PASSWORD_ENV_VARIABLE_NAME>` | ex `password` | RabbitMQ Admin password, 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 Indexer service, see [Partition properties set](#properties-set-in-partition-service) | yes | - |
-
-Defined in default application property file but possible to override:
-
-| name                                             | value                                         | description                                                             | sensitive? | source                                                       |
-|--------------------------------------------------|-----------------------------------------------|-------------------------------------------------------------------------|------------|--------------------------------------------------------------|
-| `LOG_PREFIX`                                     | `schema`                                      | Logging prefix                                                          | no         | -                                                            |
-| `LOG_LEVEL`                                      | `DEBUG`                                       | Logging level                                                           | no         | -                                                            |
-| `SERVER_SERVLET_CONTEXPATH`                      | `/api/schema-service/v1`                      | Servlet context path                                                    | no         | -                                                            |
-| `AUTHORIZE_API`                                  | ex `https://entitlements.com/entitlements/v1` | Entitlements API endpoint                                               | no         | output of infrastructure deployment                          |
-| `PARTITION_API`                                  | ex `http://localhost:8081/api/partition/v1`   | Partition service endpoint                                              | no         | -                                                            |
-| `GOOGLE_APPLICATION_CREDENTIALS`                 | ex `/path/to/directory/service-key.json`      | Service account credentials, you only need this if running locally      | yes        | <https://console.cloud.google.com/iam-admin/serviceaccounts> |
-| `SCHEMA_CHANGED_MESSAGING_ENABLED`               | `true` OR `false`                             | Allows to configure message publishing about schemas changes to Pub/Sub | no         | -                                                            |
-| `SCHEMA_CHANGED_TOPIC_NAME`                      | `schema-changed`                              | Topic for schema changes events                                         | no         | -                                                            |
-| `PARTITION_PROPERTIES_SCHEMA_BUCKET_NAME`        | ex `schema.bucket.name`                       | name of partition property for schema bucket name value                 | yes        | -                                                            |
-| `PARTITION_PROPERTIES_SYSTEM_SCHEMA_BUCKET_NAME` | ex `system.schema.bucket.name`                | name of partition property for system schema bucket name value          | yes        | -                                                            |
-
-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` or `postgres` | Osm driver mode that defines which KV storage will be used | no | - |
-| `OBMDRIVER` | `gcs` or `minio` | Obm driver mode that defines which object storage will be used | no | - |
-| `SERVICE_TOKEN_PROVIDER` | `GCP` or `OPENID` |Service account token provider, `GCP` means use Google service account `OPENID` means use OpenId provider like `Keycloak` | no | - |
-
-## Partition level config
-
-### Non-sensitive partition properties
-| name                                        | value                          | description                          | sensitive? | source                                           |
-|---------------------------------------------|--------------------------------|--------------------------------------|------------|--------------------------------------------------|
-| `<SCHEMA_BUCKET_NAME_PROPERTY_NAME>`        | ex `schema.bucket.name`        | schema address in OBM storage        | no         | `PARTITION_PROPERTIES_SCHEMA_BUCKET_NAME`        |
-| `<SYSTEM_SCHEMA_BUCKET_NAME_PROPERTY_NAME>` | ex `system.schema.bucket.name` | system schema address in OBM storage | no         | `PARTITION_PROPERTIES_SYSTEM_SCHEMA_BUCKET_NAME` |
-
-## Testing
-
-### Running E2E Tests
-
-This section describes how to run cloud OSDU E2E tests (testing/schema-test-core).
-
-You will need to have the following environment variables defined.
-
-| name | value | description | sensitive? | source |
-| ---  | ---   | ---         | ---        | ---    |
-| `VENDOR` | `anthos` | Use value 'gcp' to run Google Cloud tests | no | - |
-| `HOST` | ex`http://localhost:8080` | Schema service host | no | - |
-| `PRIVATE_TENANT2` | ex`opendes` | OSDU tenant used for testing | no | - |
-| `PRIVATE_TENANT1` | ex`osdu` | OSDU tenant used for testing | no | - |
-| `SHARED_TENANT` | ex`common` | OSDU tenant used for testing | no | - |
-| `TEST_OPENID_PROVIDER_CLIENT_ID` | `********` | Client Id for `$INTEGRATION_TESTER` | yes | -- |
-| `TEST_OPENID_PROVIDER_CLIENT_SECRET` | `********` |  | Client secret for `$INTEGRATION_TESTER` | -- |
-| `TEST_OPENID_PROVIDER_URL` | `https://keycloak.com/auth/realms/osdu` | OpenID provider url | yes | -- |
-
-**Entitlements configuration for integration accounts**
-
-| INTEGRATION_TESTER |
-| ---  |
-| users<br/>service.schema-service.system-admin<br/>service.entitlements.user<br/>service.schema-service.viewers<br/>service.schema-service.editors<br/>data.integration.test<br/>data.test1 |
-
-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.
- # build + install integration test core
- $ (cd testing/schema-test-core/ && 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
-    }
-```
-
-## Postgres configuration
-
-### Properties set in Partition service
-
-**prefix:** `osm.postgres`
-
-It can be overridden by:
-
-- through the Spring Boot property `osm.postgres.partition-properties-prefix`
-- environment variable `OSM_POSTGRES_PARTITION_PROPERTIES_PREFIX`
-
-**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 'http://partition.com/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://127.0.0.1:5432/postgres"
-    },
-    "osm.postgres.datasource.username": {
-      "sensitive": false,
-      "value": "postgres"
-    },
-    "osm.postgres.datasource.password": {
-      "sensitive": true,
-     "value": "<POSTGRES_PASSWORD_ENV_VARIABLE_NAME>" <- (Not actual value, just name of env variable)
-    }
-  }
-}'
-
-```
-
-</details>
-
-### Schema configuration
-
-```
-CREATE SCHEMA IF NOT EXISTS dataecosystem AUTHORIZATION <SCHEMA_POSTGRESQL_USERNAME>;
-```
-
-For private tenants:
-
-```
--- Table: <data-partition-id>.authority
--- DROP TABLE IF EXISTS <data-partition-id>.authority;
-CREATE TABLE IF NOT EXISTS <data-partition-id>.authority
-(
-    id text COLLATE pg_catalog."default" NOT NULL,
-    pk bigint NOT NULL GENERATED ALWAYS AS IDENTITY ( INCREMENT 1 START 1 MINVALUE 1 MAXVALUE 9223372036854775807 CACHE 1 ),
-    data jsonb NOT NULL,
-    CONSTRAINT "Authority_pkey" PRIMARY KEY (pk),
-    CONSTRAINT authority_id UNIQUE (id)
-)
-TABLESPACE pg_default;
-ALTER TABLE IF EXISTS <data-partition-id>.authority
-    OWNER to <SCHEMA_POSTGRESQL_USERNAME>;
--- Index: authority_datagin
--- DROP INDEX IF EXISTS <data-partition-id>.authority_datagin;
-CREATE INDEX IF NOT EXISTS authority_datagin
-    ON <data-partition-id>.authority USING gin
-    (data)
-    TABLESPACE pg_default;
--- Table: <data-partition-id>.entityType
--- DROP TABLE IF EXISTS <data-partition-id>."entityType";
-CREATE TABLE IF NOT EXISTS <data-partition-id>."entityType"
-(
-    id text COLLATE pg_catalog."default" NOT NULL,
-    pk bigint NOT NULL GENERATED ALWAYS AS IDENTITY ( INCREMENT 1 START 1 MINVALUE 1 MAXVALUE 9223372036854775807 CACHE 1 ),
-    data jsonb NOT NULL,
-    CONSTRAINT "EntityType_pkey" PRIMARY KEY (pk),
-    CONSTRAINT entitytype_id UNIQUE (id)
-)
-TABLESPACE pg_default;
-ALTER TABLE IF EXISTS <data-partition-id>."entityType"
-    OWNER to <SCHEMA_POSTGRESQL_USERNAME>;
--- Index: entitytype_datagin
--- DROP INDEX IF EXISTS <data-partition-id>.entitytype_datagin;
-CREATE INDEX IF NOT EXISTS entitytype_datagin
-    ON <data-partition-id>."entityType" USING gin
-    (data)
-    TABLESPACE pg_default;
-    -- Table: <data-partition-id>.schema_osm
--- DROP TABLE IF EXISTS <data-partition-id>."schema_osm";
-CREATE TABLE IF NOT EXISTS <data-partition-id>."schema_osm"
-(
-    id text COLLATE pg_catalog."default" NOT NULL,
-    pk bigint NOT NULL GENERATED ALWAYS AS IDENTITY ( INCREMENT 1 START 1 MINVALUE 1 MAXVALUE 9223372036854775807 CACHE 1 ),
-    data jsonb NOT NULL,
-    CONSTRAINT "Schema_pkey" PRIMARY KEY (pk),
-    CONSTRAINT schemarequest_id UNIQUE (id)
-)
-TABLESPACE pg_default;
-ALTER TABLE IF EXISTS <data-partition-id>."schema_osm"
-    OWNER to <SCHEMA_POSTGRESQL_USERNAME>;
--- Index: schemarequest_datagin
--- DROP INDEX IF EXISTS dataecosystem.schemarequest_datagin;
-CREATE INDEX IF NOT EXISTS schemarequest_datagin
-    ON <data-partition-id>."schema_osm" USING gin
-    (data)
-    TABLESPACE pg_default;
-    -- Table: <data-partition-id>.source
--- DROP TABLE IF EXISTS <data-partition-id>.source;
-CREATE TABLE IF NOT EXISTS <data-partition-id>.source
-(
-    id text COLLATE pg_catalog."default" NOT NULL,
-    pk bigint NOT NULL GENERATED ALWAYS AS IDENTITY ( INCREMENT 1 START 1 MINVALUE 1 MAXVALUE 9223372036854775807 CACHE 1 ),
-    data jsonb NOT NULL,
-    CONSTRAINT "Source_pkey" PRIMARY KEY (pk),
-    CONSTRAINT source_id UNIQUE (id)
-)
-TABLESPACE pg_default;
-ALTER TABLE IF EXISTS <data-partition-id>.source
-    OWNER to <SCHEMA_POSTGRESQL_USERNAME>;
--- Index: source_datagin
--- DROP INDEX IF EXISTS <data-partition-id>.source_datagin;
-CREATE INDEX IF NOT EXISTS source_datagin
-    ON <data-partition-id>.source USING gin
-    (data)
-    TABLESPACE pg_default;
-```
-
--- For shared tenant:
-
-```
--- Table: dataecosystem.system_authority
--- DROP TABLE IF EXISTS dataecosystem.system_authority;
-CREATE TABLE IF NOT EXISTS dataecosystem.system_authority
-(
-    id text COLLATE pg_catalog."default" NOT NULL,
-    pk bigint NOT NULL GENERATED ALWAYS AS IDENTITY ( INCREMENT 1 START 1 MINVALUE 1 MAXVALUE 9223372036854775807 CACHE 1 ),
-    data jsonb NOT NULL,
-    CONSTRAINT "Authority_pkey_system" PRIMARY KEY (pk),
-    CONSTRAINT authority_id_system UNIQUE (id)
-)
-TABLESPACE pg_default;
-ALTER TABLE IF EXISTS dataecosystem.system_authority
-    OWNER to <SCHEMA_POSTGRESQL_USERNAME>;
--- Index: system_authority_datagin
--- DROP INDEX IF EXISTS dataecosystem.system_authority_datagin;
-CREATE INDEX IF NOT EXISTS system_authority_datagin
-    ON dataecosystem.system_authority USING gin
-    (data)
-    TABLESPACE pg_default;
--- Table: dataecosystem.system_entity_type
--- DROP TABLE IF EXISTS dataecosystem."system_entity_type";
-CREATE TABLE IF NOT EXISTS dataecosystem."system_entity_type"
-(
-    id text COLLATE pg_catalog."default" NOT NULL,
-    pk bigint NOT NULL GENERATED ALWAYS AS IDENTITY ( INCREMENT 1 START 1 MINVALUE 1 MAXVALUE 9223372036854775807 CACHE 1 ),
-    data jsonb NOT NULL,
-    CONSTRAINT "EntityType_pkey_system" PRIMARY KEY (pk),
-    CONSTRAINT entitytype_id_system UNIQUE (id)
-)
-TABLESPACE pg_default;
-ALTER TABLE IF EXISTS dataecosystem."system_entity_type"
-    OWNER to <SCHEMA_POSTGRESQL_USERNAME>;
--- Index: system_entity_type_datagin
--- DROP INDEX IF EXISTS dataecosystem.system_entity_type_datagin;
-CREATE INDEX IF NOT EXISTS system_entity_type_datagin
-    ON dataecosystem."system_entity_type" USING gin
-    (data)
-    TABLESPACE pg_default;
-    -- Table: dataecosystem.system_schema_osm
--- DROP TABLE IF EXISTS dataecosystem."system_schema_osm";
-CREATE TABLE IF NOT EXISTS dataecosystem."system_schema_osm"
-(
-    id text COLLATE pg_catalog."default" NOT NULL,
-    pk bigint NOT NULL GENERATED ALWAYS AS IDENTITY ( INCREMENT 1 START 1 MINVALUE 1 MAXVALUE 9223372036854775807 CACHE 1 ),
-    data jsonb NOT NULL,
-    CONSTRAINT "Schema_pkey_system" PRIMARY KEY (pk),
-    CONSTRAINT schemarequest_id_system UNIQUE (id)
-)
-TABLESPACE pg_default;
-ALTER TABLE IF EXISTS dataecosystem."system_schema_osm"
-    OWNER to <SCHEMA_POSTGRESQL_USERNAME>;
--- Index: schemarequest_datagin
--- DROP INDEX IF EXISTS dataecosystem.schemarequest_datagin;
-CREATE INDEX IF NOT EXISTS schemarequest_datagin
-    ON dataecosystem."system_schema_osm" USING gin
-    (data)
-    TABLESPACE pg_default;
-    -- Table: dataecosystem.system_source
--- DROP TABLE IF EXISTS dataecosystem.system_source;
-CREATE TABLE IF NOT EXISTS dataecosystem.system_source
-(
-    id text COLLATE pg_catalog."default" NOT NULL,
-    pk bigint NOT NULL GENERATED ALWAYS AS IDENTITY ( INCREMENT 1 START 1 MINVALUE 1 MAXVALUE 9223372036854775807 CACHE 1 ),
-    data jsonb NOT NULL,
-    CONSTRAINT "Source_pkey_system" PRIMARY KEY (pk),
-    CONSTRAINT source_id_system UNIQUE (id)
-)
-TABLESPACE pg_default;
-ALTER TABLE IF EXISTS dataecosystem.system_source
-    OWNER to <SCHEMA_POSTGRESQL_USERNAME>;
--- Index: system_source_datagin
--- DROP INDEX IF EXISTS dataecosystem.system_source_datagin;
-CREATE INDEX IF NOT EXISTS system_source_datagin
-    ON dataecosystem.system_source USING gin
-    (data)
-    TABLESPACE pg_default;
-```
-
-## RabbitMQ configuration
-
-### Properties set in Partition service
-
-**prefix:** `oqm.rabbitmq`
-
-It can be overridden by:
-
-- through the Spring Boot property `oqm.rabbitmq.partition-properties-prefix`
-- environment variable `OQM_RABBITMQ_PARTITION_PROPERTIES_PREFIX`
-
-**Property Set** (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>
-
-### Exchanges & queues configuration
-
-At RabbitMq should be created exchange with name:
-
-**name:** `schema-changed`
-
-It can be overridden by:
-
-- through the Spring Boot property `gcp.schema-changed.topic-name`
-- environment variable `GCP_SCHEMA_CHANGED_TOPIC_NAME`
-
-![Screenshot](./pics/rabbit.PNG)
-
-Schema service responsible for publishing only.
-Consumer side `schema-changed` topic configuration located in
-[Indexer Baremetal Rabbit documentation](https://community.opengroup.org/osdu/platform/system/indexer-service/-/blob/master/provider/indexer-gc/docs/baremetal/README.md#exchanges-and-queues-configuration)
-
-## Minio configuration
-
-### Properties set in Partition service
-
-**prefix:** `obm.minio`
-
-It can be overridden by:
-
-- through the Spring Boot property `obm.minio.partition-properties-prefix`
-- environment variable `OBM_MINIO_PARTITION_PROPERTIES_PREFIX`
-
-**Propertyset** (for two types of connection: messaging and admin operations):
-
-| Property | Description |
-| --- | --- |
-| obm.minio.endpoint | - url |
-| obm.minio.accessKey | - username |
-| obm.minio.secretKey | - 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": {
-    "obm.minio.endpoint": {
-      "sensitive": false,
-      "value": "localhost"
-    },
-    "obm.minio.accessKey": {
-      "sensitive": false,
-      "value": "minioadmin"
-    },
-    "obm.minio.secretKey": {
-      "sensitive": false,
-      "value": "<MINIO_SECRETKEY_ENV_VARIABLE_NAME>" <- (Not actual value, just name of env variable)
-    }
-  }
-}'
-
-```
-
-</details>
-
-### Object store configuration <a name="ObjectStoreConfig"></a>
-
-#### Used Technology
-
-MinIO (or any other supported by OBM)
-
-#### Per-tenant buckets configuration
-
-For each private tenant:
-
-These buckets must be defined in tenants’ dedicated object store servers. OBM connection properties of these servers (url, etc.) are defined as specific properties in tenants’ PartitionInfo registration objects at the Partition service as described in accordant sections of this document.
-
-<table>
-  <tr>
-   <td>Bucket Naming template
-   </td>
-   <td>Permissions required
-   </td>
-  </tr>
-  <tr>
-   <td>&lt;PartitionInfo.projectId-PartitionInfo.name>-<strong>schema</strong>
-   </td>
-   <td>ListObjects, CRUDObject
-   </td>
-  </tr>
-</table>
-
-For shared tenant only:
-
-<table>
-  <tr>
-   <td>Bucket Naming template
-   </td>
-   <td>Permissions required
-   </td>
-  </tr>
-  <tr>
-   <td>&lt;PartitionInfo.projectId-PartitionInfo.name><strong>-system-schema</strong>
-   </td>
-   <td>ListObjects, CRUDObject
-   </td>
-  </tr>
-</table>
diff --git a/provider/schema-gc/docs/anthos/pics/rabbit.PNG b/provider/schema-gc/docs/anthos/pics/rabbit.PNG
deleted file mode 100644
index e1c67734b91a536659fdf0b940a93208d749e3c8..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 9605
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
I<jSr80*{qvcK`qY

diff --git a/provider/schema-gc/docs/gc/README.md b/provider/schema-gc/docs/gc/README.md
index e1dbd2433..f265c247d 100644
--- a/provider/schema-gc/docs/gc/README.md
+++ b/provider/schema-gc/docs/gc/README.md
@@ -6,10 +6,9 @@ Define the following environment variables.
 
 Must have:
 
-| name | value | description | sensitive? | source |
-| ---  | ---   | ---         | ---        | ---    |
-| `SPRING_PROFILES_ACTIVE` | ex `gcp` | Spring profile that activate default configuration for Google Cloud environment | false | - |
-| `SHARED_TENANT_NAME` | ex `osdu` | Shared account id | no | - |
+| name                     | value     | description                                                                     | sensitive? | source |
+|--------------------------|-----------|---------------------------------------------------------------------------------|------------|--------|
+| `SHARED_TENANT_NAME`     | ex `osdu` | Shared account id                                                               | no         | -      |
 
 Defined in default application property file but possible to override:
 
@@ -28,17 +27,6 @@ Defined in default application property file but possible to override:
 | `MANAGEMENT_ENDPOINTS_WEB_BASE`                  | ex `/`                                        | Web base for Actuator                                                   | no         | -                                                            |
 | `MANAGEMENT_SERVER_PORT`                         | ex `8081`                                     | Port for Actuator                                                       | 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` or `postgres` | Osm driver mode that defines which KV storage will be used | no | - |
-| `OBMDRIVER` | `gcs` or `minio` | Obm driver mode that defines which object 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 | - |
-
 ## Partition level config
 
 ### Non-sensitive partition properties
@@ -66,8 +54,8 @@ You will need to have the following environment variables defined.
 
 **Entitlements configuration for integration accounts**
 
-| INTEGRATION_TESTER |
-| ---  |
+| INTEGRATION_TESTER                                                                                                                                                                         |
+|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
 | users<br/>service.schema-service.system-admin<br/>service.entitlements.user<br/>service.schema-service.viewers<br/>service.schema-service.editors<br/>data.integration.test<br/>data.test1 |
 
 Execute following command to build code and run all the integration tests:
@@ -102,9 +90,9 @@ Example:
 
 Kind `system_schema_osm` `system_authority` `system_entityType` `system_source` will be created by service if it does not exist.
 
-## Pubsub configuration
+## Pub/Sub configuration
 
-At Pubsub should be created topic with name:
+At Pub/Sub should be created topic with name:
 
 **name:** `schema-changed`
 
@@ -162,5 +150,24 @@ At Google cloud storage should be created bucket:
 TBD
 
 | Required roles |
-| ---    |
-| - |
+|----------------|
+| -              |
+
+## 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/schema-gc/pom.xml b/provider/schema-gc/pom.xml
index 5712901c4..990be2ae4 100644
--- a/provider/schema-gc/pom.xml
+++ b/provider/schema-gc/pom.xml
@@ -12,142 +12,22 @@
 	<packaging>jar</packaging>
 	<version>0.28.0-SNAPSHOT</version>
 
-	<dependencyManagement>
-		<dependencies>
-			<dependency>
-				<groupId>com.squareup.okhttp3</groupId>
-				<artifactId>okhttp</artifactId>
-				<version>4.9.2</version>
-			</dependency>
-			<dependency>
-				<groupId>com.fasterxml.jackson</groupId>
-				<artifactId>jackson-bom</artifactId>
-				<version>2.17.1</version>
-				<type>pom</type>
-				<scope>import</scope>
-			</dependency>
-			<dependency>
-				<groupId>com.google.cloud</groupId>
-				<artifactId>libraries-bom</artifactId>
-				<version>26.29.0</version>
-				<type>pom</type>
-				<scope>import</scope>
-			</dependency>
-		</dependencies>
-	</dependencyManagement>
-
 	<dependencies>
 		<dependency>
 			<groupId>org.opengroup.osdu</groupId>
-			<artifactId>os-core-common-spring6</artifactId>
-			<version>${os-core-common.version}</version>
-		</dependency>
-		<dependency>
-			<groupId>org.opengroup.osdu</groupId>
-			<artifactId>os-schema-core</artifactId>
+			<artifactId>schema-core-plus</artifactId>
 			<version>0.28.0-SNAPSHOT</version>
-			<!-- excluded due to runtime conflict with latest core-lib-gc transient dependencies -->
-			<exclusions>
-				<exclusion>
-					<groupId>com.google.api-client</groupId>
-					<artifactId>google-api-client</artifactId>
-				</exclusion>
-				<exclusion>
-					<groupId>com.google.http-client</groupId>
-					<artifactId>google-http-client</artifactId>
-				</exclusion>
-			</exclusions>
-		</dependency>
-		<dependency>
-			<groupId>org.springframework</groupId>
-			<artifactId>spring-webmvc</artifactId>
-		</dependency>
-		<dependency>
-			<groupId>org.springframework.boot</groupId>
-			<artifactId>spring-boot-starter-test</artifactId>
-			<scope>test</scope>
-		</dependency>
-		<dependency>
-			<groupId>org.mockito</groupId>
-			<artifactId>mockito-all</artifactId>
-			<version>1.10.19</version>
-			<scope>test</scope>
-		</dependency>
-		<dependency>
-			<groupId>org.opengroup.osdu</groupId>
-			<artifactId>core-lib-gc-spring6</artifactId>
-			<version>0.26.0-rc5</version>
 		</dependency>
+
 		<dependency>
 			<groupId>ch.qos.logback.contrib</groupId>
 			<artifactId>logback-json-classic</artifactId>
 			<version>0.1.5</version>
 		</dependency>
-
-		<dependency>
-			<groupId>io.cucumber</groupId>
-			<artifactId>cucumber-java</artifactId>
-			<version>5.7.0</version>
-			<scope>test</scope>
-		</dependency>
-
-		<dependency>
-			<groupId>io.cucumber</groupId>
-			<artifactId>cucumber-junit</artifactId>
-			<version>5.7.0</version>
-			<scope>test</scope>
-		</dependency>
-
-		<dependency>
-			<groupId>io.cucumber</groupId>
-			<artifactId>cucumber-guice</artifactId>
-			<version>5.7.0</version>
-			<scope>test</scope>
-		</dependency>
-
-		<dependency>
-			<groupId>com.google.inject</groupId>
-			<artifactId>guice</artifactId>
-			<version>4.2.0</version>
-			<scope>test</scope>
-		</dependency>
-
-		<dependency>
-			<groupId>org.opengroup.osdu</groupId>
-			<artifactId>oqm</artifactId>
-			<version>0.25.0</version>
-		</dependency>
-		<dependency>
-			<groupId>org.opengroup.osdu</groupId>
-			<artifactId>osm</artifactId>
-			<version>0.25.0</version>
-		</dependency>
 		<dependency>
-			<groupId>org.opengroup.osdu</groupId>
-			<artifactId>obm</artifactId>
-			<version>0.25.0</version>
-		</dependency>
-		<dependency>
-			<groupId>jakarta.json</groupId>
-			<artifactId>jakarta.json-api</artifactId>
-			<version>2.1.3</version>
-		</dependency>
-		<dependency>
-			<groupId>org.eclipse.parsson</groupId>
-			<artifactId>parsson</artifactId>
-			<version>1.1.6</version>
-		</dependency>
-
-		<dependency>
-			<!-- Required for JUnit 4 tests to run -->
-			<groupId>org.junit.vintage</groupId>
-			<artifactId>junit-vintage-engine</artifactId>
-			<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>
@@ -167,7 +47,7 @@
 						<configuration>
 							<classifier>spring-boot</classifier>
 							<mainClass>
-								org.opengroup.osdu.schema.SchemaApplication
+								org.springframework.boot.loader.launch.PropertiesLauncher
 							</mainClass>
 						</configuration>
 					</execution>
diff --git a/provider/schema-gc/src/main/java/org/opengroup/osdu/schema/GcpSchemaApplication.java b/provider/schema-gc/src/main/java/org/opengroup/osdu/schema/GcpSchemaApplication.java
index e9132a5d5..ed71f3fa0 100644
--- a/provider/schema-gc/src/main/java/org/opengroup/osdu/schema/GcpSchemaApplication.java
+++ b/provider/schema-gc/src/main/java/org/opengroup/osdu/schema/GcpSchemaApplication.java
@@ -21,10 +21,17 @@ 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({"org.opengroup.osdu"})
+@ComponentScan(
+    value = {"org.opengroup.osdu"},
+    excludeFilters = {
+      @ComponentScan.Filter(
+          type = FilterType.ASSIGNABLE_TYPE,
+          value = {CorePlusSchemaApplication.class, SchemaApplication.class})
+    })
 @ConfigurationPropertiesScan
 @PropertySource("classpath:swagger.properties")
 public class GcpSchemaApplication {
@@ -32,4 +39,4 @@ public class GcpSchemaApplication {
   public static void main(String[] args) {
     SpringApplication.run(GcpSchemaApplication.class, args);
   }
-}
\ No newline at end of file
+}
diff --git a/provider/schema-gc/src/main/java/org/opengroup/osdu/schema/cache/config/CacheConfig.java b/provider/schema-gc/src/main/java/org/opengroup/osdu/schema/cache/config/CacheConfig.java
deleted file mode 100644
index 009a36fbf..000000000
--- a/provider/schema-gc/src/main/java/org/opengroup/osdu/schema/cache/config/CacheConfig.java
+++ /dev/null
@@ -1,34 +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.schema.cache.config;
-
-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.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);
-  }
-}
diff --git a/provider/schema-gc/src/main/java/org/opengroup/osdu/schema/configuration/EventMessagingPropertiesConfig.java b/provider/schema-gc/src/main/java/org/opengroup/osdu/schema/configuration/EventMessagingPropertiesConfig.java
deleted file mode 100644
index 059225d0b..000000000
--- a/provider/schema-gc/src/main/java/org/opengroup/osdu/schema/configuration/EventMessagingPropertiesConfig.java
+++ /dev/null
@@ -1,41 +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.schema.configuration;
-
-import javax.annotation.PostConstruct;
-import lombok.Getter;
-import lombok.Setter;
-import org.apache.commons.lang3.StringUtils;
-import org.springframework.boot.context.properties.ConfigurationProperties;
-
-@ConfigurationProperties(prefix = "schema.changed")
-@Getter
-@Setter
-public class EventMessagingPropertiesConfig {
-
-  private boolean messagingEnabled;
-  private String topicName;
-
-  @PostConstruct
-  public void setUp() {
-    if (this.messagingEnabled && StringUtils.isEmpty(this.topicName)) {
-      throw new RuntimeException("Missing event messaging configuration. Topic name is empty but messaging is enabled.");
-    }
-  }
-
-}
diff --git a/provider/schema-gc/src/main/java/org/opengroup/osdu/schema/configuration/PropertiesConfiguration.java b/provider/schema-gc/src/main/java/org/opengroup/osdu/schema/configuration/PropertiesConfiguration.java
deleted file mode 100644
index d7c57c78c..000000000
--- a/provider/schema-gc/src/main/java/org/opengroup/osdu/schema/configuration/PropertiesConfiguration.java
+++ /dev/null
@@ -1,32 +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.schema.configuration;
-
-import lombok.Getter;
-import lombok.Setter;
-import org.springframework.boot.context.properties.ConfigurationProperties;
-import org.springframework.context.annotation.Configuration;
-
-@Configuration
-@ConfigurationProperties
-@Getter
-@Setter
-public class PropertiesConfiguration {
-
-  private String sharedTenantName;
-}
diff --git a/provider/schema-gc/src/main/java/org/opengroup/osdu/schema/configuration/mapper/TypeMapperImpl.java b/provider/schema-gc/src/main/java/org/opengroup/osdu/schema/configuration/mapper/TypeMapperImpl.java
deleted file mode 100644
index e2ba67d1a..000000000
--- a/provider/schema-gc/src/main/java/org/opengroup/osdu/schema/configuration/mapper/TypeMapperImpl.java
+++ /dev/null
@@ -1,102 +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.schema.configuration.mapper;
-
-import com.google.cloud.Timestamp;
-import com.google.cloud.datastore.Blob;
-import com.google.cloud.datastore.Key;
-import com.google.common.collect.ImmutableList;
-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.schema.constants.SchemaConstants;
-import org.opengroup.osdu.schema.model.Authority;
-import org.opengroup.osdu.schema.model.EntityType;
-import org.opengroup.osdu.schema.model.SchemaRequest;
-import org.opengroup.osdu.schema.model.Source;
-import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
-import org.springframework.context.annotation.Scope;
-import org.springframework.stereotype.Component;
-
-import java.util.Collections;
-import java.util.HashMap;
-
-import static org.springframework.beans.factory.config.BeanDefinition.SCOPE_SINGLETON;
-
-@Component
-@Scope(SCOPE_SINGLETON)
-@ConditionalOnProperty("osmDriver")
-public class TypeMapperImpl extends TypeMapper {
-    public TypeMapperImpl(){
-        super(ImmutableList.of(
-                new Instrumentation<>(
-                        Authority.class,
-                        new HashMap<String, String>(){{
-                            put("authorityId", "name");
-                        }},
-                        new HashMap<>(),
-                        new IdentityTranslator<>(
-                                Authority::getAuthorityId,
-                                (a, o) -> a.setAuthorityId(((Key) o).getName())
-                        ),
-                        Collections.singletonList("name")
-                ),
-                new Instrumentation<>(
-                        EntityType.class,
-                        new HashMap<String, String>(){{
-                            put("entityTypeId", "name");
-                        }},
-                        new HashMap<>(),
-                        new IdentityTranslator<>(
-                                EntityType::getEntityTypeId,
-                                (et, o) -> et.setEntityTypeId(((Key) o).getName())
-                        ),
-                        Collections.singletonList("name")
-                ),
-                new Instrumentation<>(
-                        SchemaRequest.class,
-                        new HashMap<String, String>(){{
-                            put("schemaVersionMajor", SchemaConstants.MAJOR_VERSION);
-                            put("schemaVersionMinor", SchemaConstants.MINOR_VERSION);
-                            put("schemaVersionPatch", SchemaConstants.PATCH_VERSION);
-                        }},
-                        new HashMap<String, Class<?>>() {{
-                            put("schema", Blob.class);
-                            put("dateCreated", Timestamp.class);
-                        }},
-                        new IdentityTranslator<>(
-                                (r) -> r.getSchemaInfo().getSchemaIdentity().getId(),
-                                (r, o) -> r.getSchemaInfo().getSchemaIdentity().setId(((Key)o).getName())
-                        ),
-                        Collections.singletonList("")
-                ),
-                new Instrumentation<>(
-                        Source.class,
-                        new HashMap<String, String>() {{
-                            put("sourceId", "name");
-                        }},
-                        new HashMap<>(),
-                        new IdentityTranslator<>(
-                                Source::getSourceId,
-                                (s, o) -> s.setSourceId(((Key) o).getName())
-                        ),
-                        Collections.singletonList("name")
-                )
-        ));
-    }
-}
diff --git a/provider/schema-gc/src/main/java/org/opengroup/osdu/schema/destination/provider/DestinationProvider.java b/provider/schema-gc/src/main/java/org/opengroup/osdu/schema/destination/provider/DestinationProvider.java
deleted file mode 100644
index 2454333ef..000000000
--- a/provider/schema-gc/src/main/java/org/opengroup/osdu/schema/destination/provider/DestinationProvider.java
+++ /dev/null
@@ -1,63 +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.schema.destination.provider;
-
-import org.opengroup.osdu.core.common.model.tenant.TenantInfo;
-import org.opengroup.osdu.core.gcp.oqm.model.OqmDestination;
-
-public interface DestinationProvider<DestinationT> {
-
-  /**
-   * The method used only for destinations without kind (i.e. {@link OqmDestination})
-   *
-   * @param partitionId the id of partition
-   * @return the destination for OSDU Mappers
-   */
-  DestinationT getDestination(String partitionId);
-
-  /**
-   * The method used only for destinations with kind (i.e. {@link org.opengroup.osdu.core.gcp.osm.model.Destination})
-   * You can also pass empty string for the kind name if you want to use this method for building
-   * other destinations
-   *
-   * @param partitionId the id of partition
-   * @param kindName    the name of the kind
-   * @return the destination for OSDU Mappers
-   */
-  DestinationT getDestination(String partitionId, String kindName);
-
-  /**
-   * The method used if tenantInfo already acknowledged and there is no need to call TenantFactory
-   * to get the info
-   *
-   * @param tenantInfo tenant info got from somewhere
-   * @param kindName   the name of the kind
-   * @return the destination for OSDU Mappers
-   */
-  DestinationT getDestination(TenantInfo tenantInfo, String kindName);
-
-  /**
-   * The method is used only for custom namespace and kind usage
-   *
-   * @param partitionId partitionId for destination
-   * @param namespace   custom namespace
-   * @param kindName    the name of the kind
-   * @return the destination for OSDU Mappers
-   */
-  DestinationT getDestination(String partitionId, String namespace, String kindName);
-}
diff --git a/provider/schema-gc/src/main/java/org/opengroup/osdu/schema/destination/provider/DestinationProviderImpl.java b/provider/schema-gc/src/main/java/org/opengroup/osdu/schema/destination/provider/DestinationProviderImpl.java
deleted file mode 100644
index 2d3c63add..000000000
--- a/provider/schema-gc/src/main/java/org/opengroup/osdu/schema/destination/provider/DestinationProviderImpl.java
+++ /dev/null
@@ -1,74 +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.schema.destination.provider;
-
-import lombok.extern.slf4j.Slf4j;
-import org.opengroup.osdu.core.common.model.tenant.TenantInfo;
-import org.opengroup.osdu.core.common.provider.interfaces.ITenantFactory;
-import org.opengroup.osdu.core.gcp.osm.model.Kind;
-import org.opengroup.osdu.core.gcp.osm.model.Namespace;
-import org.opengroup.osdu.schema.destination.provider.model.DestinationInstructions;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Service;
-
-@Service
-@Slf4j
-public abstract class DestinationProviderImpl<DestinationT> implements
-    DestinationProvider<DestinationT> {
-
-  private final ITenantFactory tenantFactory;
-
-  @Autowired
-  protected DestinationProviderImpl(ITenantFactory tenantFactory) {
-    this.tenantFactory = tenantFactory;
-  }
-
-  @Override
-  public DestinationT getDestination(String partitionId) {
-    TenantInfo tenantInfo = tenantFactory.getTenantInfo(partitionId);
-    return getDestination(tenantInfo, "");
-  }
-
-  @Override
-  public DestinationT getDestination(String partitionId, String kindName) {
-    TenantInfo tenantInfo = tenantFactory.getTenantInfo(partitionId);
-    return getDestination(tenantInfo, kindName);
-  }
-
-  @Override
-  public DestinationT getDestination(TenantInfo tenantInfo, String kindName) {
-    log.debug("Providing destination for the tenant: " + tenantInfo.getName());
-    String partitionId = tenantInfo.getDataPartitionId();
-    String namespace = tenantInfo.getName();
-    return getDestination(partitionId, namespace, kindName);
-  }
-
-  @Override
-  public DestinationT getDestination(String partitionId, String namespace, String kindName) {
-
-    DestinationInstructions instructions = DestinationInstructions.builder()
-        .dataPartition(partitionId)
-        .namespace(new Namespace(namespace))
-        .kind(new Kind(kindName))
-        .build();
-
-    return buildDestination(instructions);
-  }
-
-  protected abstract DestinationT buildDestination(DestinationInstructions instructions);
-}
diff --git a/provider/schema-gc/src/main/java/org/opengroup/osdu/schema/destination/provider/impl/ObmDestinationProvider.java b/provider/schema-gc/src/main/java/org/opengroup/osdu/schema/destination/provider/impl/ObmDestinationProvider.java
deleted file mode 100644
index 036aaa0f2..000000000
--- a/provider/schema-gc/src/main/java/org/opengroup/osdu/schema/destination/provider/impl/ObmDestinationProvider.java
+++ /dev/null
@@ -1,43 +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.schema.destination.provider.impl;
-
-import static org.opengroup.osdu.schema.destination.provider.model.DestinationInstructions.toObmDestination;
-
-import lombok.extern.slf4j.Slf4j;
-import org.opengroup.osdu.core.common.provider.interfaces.ITenantFactory;
-import org.opengroup.osdu.core.gcp.obm.persistence.ObmDestination;
-import org.opengroup.osdu.schema.destination.provider.DestinationProviderImpl;
-import org.opengroup.osdu.schema.destination.provider.model.DestinationInstructions;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Component;
-
-@Component
-@Slf4j
-public class ObmDestinationProvider extends DestinationProviderImpl<ObmDestination> {
-
-  @Autowired
-  public ObmDestinationProvider(ITenantFactory tenantFactory) {
-    super(tenantFactory);
-  }
-
-  @Override
-  protected ObmDestination buildDestination(DestinationInstructions instructions) {
-    return toObmDestination(instructions);
-  }
-}
diff --git a/provider/schema-gc/src/main/java/org/opengroup/osdu/schema/destination/provider/impl/OqmDestinationProvider.java b/provider/schema-gc/src/main/java/org/opengroup/osdu/schema/destination/provider/impl/OqmDestinationProvider.java
deleted file mode 100644
index 4226d13b5..000000000
--- a/provider/schema-gc/src/main/java/org/opengroup/osdu/schema/destination/provider/impl/OqmDestinationProvider.java
+++ /dev/null
@@ -1,43 +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.schema.destination.provider.impl;
-
-import static org.opengroup.osdu.schema.destination.provider.model.DestinationInstructions.toOqmDestination;
-
-import lombok.extern.slf4j.Slf4j;
-import org.opengroup.osdu.core.common.provider.interfaces.ITenantFactory;
-import org.opengroup.osdu.core.gcp.oqm.model.OqmDestination;
-import org.opengroup.osdu.schema.destination.provider.DestinationProviderImpl;
-import org.opengroup.osdu.schema.destination.provider.model.DestinationInstructions;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Component;
-
-@Component
-@Slf4j
-public class OqmDestinationProvider extends DestinationProviderImpl<OqmDestination> {
-
-  @Autowired
-  public OqmDestinationProvider(ITenantFactory tenantFactory) {
-    super(tenantFactory);
-  }
-
-  @Override
-  protected OqmDestination buildDestination(DestinationInstructions instructions) {
-    return toOqmDestination(instructions);
-  }
-}
diff --git a/provider/schema-gc/src/main/java/org/opengroup/osdu/schema/destination/provider/impl/OsmDestinationProvider.java b/provider/schema-gc/src/main/java/org/opengroup/osdu/schema/destination/provider/impl/OsmDestinationProvider.java
deleted file mode 100644
index a137648b7..000000000
--- a/provider/schema-gc/src/main/java/org/opengroup/osdu/schema/destination/provider/impl/OsmDestinationProvider.java
+++ /dev/null
@@ -1,43 +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.schema.destination.provider.impl;
-
-import static org.opengroup.osdu.schema.destination.provider.model.DestinationInstructions.toOsmDestination;
-
-import lombok.extern.slf4j.Slf4j;
-import org.opengroup.osdu.core.common.provider.interfaces.ITenantFactory;
-import org.opengroup.osdu.core.gcp.osm.model.Destination;
-import org.opengroup.osdu.schema.destination.provider.DestinationProviderImpl;
-import org.opengroup.osdu.schema.destination.provider.model.DestinationInstructions;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Service;
-
-@Service
-@Slf4j
-public class OsmDestinationProvider extends DestinationProviderImpl<Destination> {
-
-  @Autowired
-  public OsmDestinationProvider(ITenantFactory tenantFactory) {
-    super(tenantFactory);
-  }
-
-  @Override
-  protected Destination buildDestination(DestinationInstructions instructions) {
-    return toOsmDestination(instructions);
-  }
-}
diff --git a/provider/schema-gc/src/main/java/org/opengroup/osdu/schema/destination/provider/model/DestinationInstructions.java b/provider/schema-gc/src/main/java/org/opengroup/osdu/schema/destination/provider/model/DestinationInstructions.java
deleted file mode 100644
index 924e3aa4d..000000000
--- a/provider/schema-gc/src/main/java/org/opengroup/osdu/schema/destination/provider/model/DestinationInstructions.java
+++ /dev/null
@@ -1,55 +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.schema.destination.provider.model;
-
-import lombok.Builder;
-import lombok.Data;
-import org.opengroup.osdu.core.gcp.obm.persistence.ObmDestination;
-import org.opengroup.osdu.core.gcp.oqm.model.OqmDestination;
-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;
-
-@Data
-@Builder
-public class DestinationInstructions {
-
-  private String dataPartition;
-  private Namespace namespace;
-  private Kind kind;
-
-  public static Destination toOsmDestination(DestinationInstructions instructions) {
-    return Destination.builder()
-        .partitionId(instructions.dataPartition)
-        .namespace(instructions.namespace)
-        .kind(instructions.kind)
-        .build();
-  }
-
-  public static OqmDestination toOqmDestination(DestinationInstructions instructions) {
-    return OqmDestination.builder()
-        .partitionId(instructions.dataPartition)
-        .build();
-  }
-
-  public static ObmDestination toObmDestination(DestinationInstructions instructions) {
-    return ObmDestination.builder()
-        .partitionId(instructions.dataPartition)
-        .build();
-  }
-}
diff --git a/provider/schema-gc/src/main/java/org/opengroup/osdu/schema/exception/AppExceptionHandler.java b/provider/schema-gc/src/main/java/org/opengroup/osdu/schema/exception/AppExceptionHandler.java
deleted file mode 100644
index 6810e0ca9..000000000
--- a/provider/schema-gc/src/main/java/org/opengroup/osdu/schema/exception/AppExceptionHandler.java
+++ /dev/null
@@ -1,56 +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.schema.exception;
-
-import java.util.Objects;
-import lombok.extern.slf4j.Slf4j;
-import org.opengroup.osdu.core.common.model.http.AppException;
-import org.springframework.core.Ordered;
-import org.springframework.core.annotation.Order;
-import org.springframework.http.HttpStatus;
-import org.springframework.http.ResponseEntity;
-import org.springframework.web.bind.annotation.ControllerAdvice;
-import org.springframework.web.bind.annotation.ExceptionHandler;
-
-@ControllerAdvice
-@Order(Ordered.HIGHEST_PRECEDENCE)
-@Slf4j
-public class AppExceptionHandler {
-
-  @ExceptionHandler(AppException.class)
-  public ResponseEntity<Object> handleAppExceptions(AppException e) {
-    return this.getErrorResponse(e);
-  }
-
-  private ResponseEntity<Object> getErrorResponse(AppException e) {
-
-    String exceptionMsg = Objects.nonNull(e.getOriginalException())
-        ? e.getOriginalException().getMessage()
-        : e.getError().getMessage();
-
-    Integer errorCode = e.getError().getCode();
-
-    if (errorCode > 499) {
-      log.error(exceptionMsg, e.getOriginalException());
-    } else {
-      log.warn(exceptionMsg, e.getOriginalException());
-    }
-
-    return new ResponseEntity<>(e.getError(), HttpStatus.resolve(errorCode));
-  }
-}
diff --git a/provider/schema-gc/src/main/java/org/opengroup/osdu/schema/impl/messagebus/MessageBusImpl.java b/provider/schema-gc/src/main/java/org/opengroup/osdu/schema/impl/messagebus/MessageBusImpl.java
deleted file mode 100644
index bb8264d44..000000000
--- a/provider/schema-gc/src/main/java/org/opengroup/osdu/schema/impl/messagebus/MessageBusImpl.java
+++ /dev/null
@@ -1,128 +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.schema.impl.messagebus;
-
-import com.google.gson.Gson;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.Map;
-import java.util.Objects;
-
-import jakarta.annotation.PostConstruct;
-import lombok.RequiredArgsConstructor;
-import org.apache.http.HttpStatus;
-import org.opengroup.osdu.core.common.logging.JaxRsDpsLog;
-import org.opengroup.osdu.core.common.model.http.AppException;
-import org.opengroup.osdu.core.common.model.http.DpsHeaders;
-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.driver.OqmDriverRuntimeException;
-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.OqmTopic;
-import org.opengroup.osdu.schema.configuration.EventMessagingPropertiesConfig;
-import org.opengroup.osdu.schema.constants.SchemaConstants;
-import org.opengroup.osdu.schema.destination.provider.DestinationProvider;
-import org.opengroup.osdu.schema.impl.messagebus.model.SchemaPubSubInfo;
-import org.opengroup.osdu.schema.logging.AuditLogger;
-import org.opengroup.osdu.schema.provider.interfaces.messagebus.IMessageBus;
-import org.springframework.stereotype.Component;
-
-@Component
-@RequiredArgsConstructor
-public class MessageBusImpl implements IMessageBus {
-
-  private final OqmDriver driver;
-  private final DestinationProvider<OqmDestination> destinationProvider;
-  private final TenantInfo tenantInfo;
-
-  private final DpsHeaders headers;
-  private final EventMessagingPropertiesConfig eventMessagingPropertiesConfig;
-  private final JaxRsDpsLog logger;
-  private final AuditLogger auditLogger;
-
-  private OqmTopic oqmTopic = null;
-
-  @PostConstruct
-  void postConstruct() {
-    oqmTopic = OqmTopic.builder().name(eventMessagingPropertiesConfig.getTopicName()).build();
-  }
-
-  @Override
-  public void publishMessage(String schemaId, String eventType) {
-    if (this.eventMessagingPropertiesConfig.isMessagingEnabled()) {
-      this.logger.info(String.format("Generating event of type %s", eventType));
-
-      OqmDestination destination = destinationProvider.getDestination(headers.getPartitionId());
-      healthCheckTopic(schemaId, false);
-
-      OqmMessage message = createMessage(schemaId, eventType);
-      this.driver.publish(message, oqmTopic, destination);
-      this.auditLogger.schemaNotificationSuccess(Collections.singletonList(schemaId));
-    } else {
-      this.logger.info(SchemaConstants.SCHEMA_NOTIFICATION_IS_DISABLED);
-    }
-  }
-
-  @Override
-  public void publishMessageForSystemSchema(String schemaId, String eventType) {
-    if (this.eventMessagingPropertiesConfig.isMessagingEnabled()) {
-      OqmDestination destination = destinationProvider.getDestination(headers.getPartitionId());
-
-      healthCheckTopic(schemaId, true);
-
-      OqmMessage message = createMessage(schemaId, eventType);
-      this.driver.publish(message, oqmTopic, destination);
-      this.auditLogger.schemaNotificationSuccess(Collections.singletonList(schemaId));
-    } else {
-      this.logger.info(SchemaConstants.SCHEMA_NOTIFICATION_IS_DISABLED);
-    }
-  }
-
-  private void healthCheckTopic(String schemaId, boolean isSystemSchema) {
-    if (Objects.isNull(this.oqmTopic)) {
-      try {
-        this.oqmTopic = OqmTopic.builder().name(eventMessagingPropertiesConfig.getTopicName()).build();
-      } catch (OqmDriverRuntimeException e) {
-        String errorMessage = isSystemSchema ? SchemaConstants.SYSTEM_SCHEMA_NOTIFICATION_FAILED :
-                SchemaConstants.SCHEMA_NOTIFICATION_FAILED;
-        this.logger.info(errorMessage);
-        this.auditLogger.schemaNotificationFailure(Collections.singletonList(schemaId));
-        throw new AppException(HttpStatus.SC_INTERNAL_SERVER_ERROR, "Internal error", errorMessage, e);
-      }
-    }
-  }
-
-  private OqmMessage createMessage(String schemaId, String eventType) {
-    SchemaPubSubInfo schemaPubSubMsg = new SchemaPubSubInfo(schemaId, eventType);
-
-    String data = new Gson().toJson(Collections.singletonList(schemaPubSubMsg));
-
-    this.headers.addCorrelationIdIfMissing();
-    Map<String, String> headersMap = headers.getHeaders();
-    headersMap.put(DpsHeaders.ACCOUNT_ID, this.tenantInfo.getName());
-    headersMap.remove(DpsHeaders.AUTHORIZATION);
-
-    Map<String, String> attributes = new HashMap<>(headersMap);
-    return OqmMessage.builder()
-        .data(data)
-        .attributes(attributes)
-        .build();
-  }
-
-}
diff --git a/provider/schema-gc/src/main/java/org/opengroup/osdu/schema/impl/messagebus/model/SchemaPubSubInfo.java b/provider/schema-gc/src/main/java/org/opengroup/osdu/schema/impl/messagebus/model/SchemaPubSubInfo.java
deleted file mode 100644
index 1644a1f57..000000000
--- a/provider/schema-gc/src/main/java/org/opengroup/osdu/schema/impl/messagebus/model/SchemaPubSubInfo.java
+++ /dev/null
@@ -1,33 +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.schema.impl.messagebus.model;
-
-import lombok.AllArgsConstructor;
-import lombok.Data;
-import lombok.NoArgsConstructor;
-
-@Data
-@NoArgsConstructor
-@AllArgsConstructor
-public class SchemaPubSubInfo {
-
-  private String kind;
-
-  private String op;
-
-}
diff --git a/provider/schema-gc/src/main/java/org/opengroup/osdu/schema/impl/schemainfostore/OsmAuthorityStore.java b/provider/schema-gc/src/main/java/org/opengroup/osdu/schema/impl/schemainfostore/OsmAuthorityStore.java
deleted file mode 100644
index 2ce556a1e..000000000
--- a/provider/schema-gc/src/main/java/org/opengroup/osdu/schema/impl/schemainfostore/OsmAuthorityStore.java
+++ /dev/null
@@ -1,148 +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.schema.impl.schemainfostore;
-
-import static org.opengroup.osdu.core.gcp.osm.model.where.predicate.Eq.eq;
-
-import java.text.MessageFormat;
-import org.apache.commons.lang3.ObjectUtils;
-import org.opengroup.osdu.core.common.logging.JaxRsDpsLog;
-import org.opengroup.osdu.core.common.model.http.DpsHeaders;
-import org.opengroup.osdu.core.gcp.osm.model.Destination;
-import org.opengroup.osdu.core.gcp.osm.model.query.GetQuery;
-import org.opengroup.osdu.core.gcp.osm.model.where.Where;
-import org.opengroup.osdu.core.gcp.osm.service.Context;
-import org.opengroup.osdu.core.gcp.osm.translate.TranslatorRuntimeException;
-import org.opengroup.osdu.schema.configuration.PropertiesConfiguration;
-import org.opengroup.osdu.schema.constants.SchemaConstants;
-import org.opengroup.osdu.schema.destination.provider.DestinationProvider;
-import org.opengroup.osdu.schema.exceptions.ApplicationException;
-import org.opengroup.osdu.schema.exceptions.BadRequestException;
-import org.opengroup.osdu.schema.exceptions.NotFoundException;
-import org.opengroup.osdu.schema.model.Authority;
-import org.opengroup.osdu.schema.provider.interfaces.schemainfostore.IAuthorityStore;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Repository;
-
-/**
- * Repository class to register authority in KV Store using OSM
- */
-@Repository
-public class OsmAuthorityStore implements IAuthorityStore {
-
-  private static final String SYSTEM_AUTHORITY_KIND = "system_authority";
-  private static final String NAME_FIELD = "name";
-  private final DpsHeaders headers;
-  private final DestinationProvider<Destination> destinationProvider;
-  private final JaxRsDpsLog log;
-  private final PropertiesConfiguration configuration;
-  private final Context context;
-
-  @Autowired
-  public OsmAuthorityStore(DpsHeaders headers, DestinationProvider<Destination> destinationProvider,
-      JaxRsDpsLog log, Context context,
-      PropertiesConfiguration configuration) {
-    this.headers = headers;
-    this.destinationProvider = destinationProvider;
-    this.log = log;
-    this.configuration = configuration;
-    this.context = context;
-  }
-
-  @Override
-  public Authority get(String authorityId) throws NotFoundException, ApplicationException {
-    Destination destination = getPrivateTenantDestination(this.headers.getPartitionId());
-
-    return context.findOne(buildQueryFor(destination, eq(NAME_FIELD, authorityId)))
-        .orElseThrow(() ->
-            new NotFoundException("bad input parameter"));
-  }
-
-  @Override
-  public Authority getSystemAuthority(String authorityId)
-      throws NotFoundException, ApplicationException {
-    Destination systemDestination = getSystemDestination();
-
-    return context.findOne(buildQueryFor(systemDestination, eq(NAME_FIELD, authorityId)))
-        .orElseThrow(() ->
-            new NotFoundException("bad input parameter"));
-  }
-
-  @Override
-  public Authority create(Authority authority) throws ApplicationException, BadRequestException {
-    Destination tenantDestination = getPrivateTenantDestination(this.headers.getPartitionId());
-    checkEntityExistence(authority, tenantDestination);
-
-    Authority entityFromDb;
-    try {
-      entityFromDb = context.createAndGet(authority, tenantDestination);
-    } catch (TranslatorRuntimeException ex) {
-      log.error(MessageFormat.format(SchemaConstants.OBJECT_INVALID, ex.getMessage()));
-      throw new ApplicationException(SchemaConstants.INVALID_INPUT);
-    }
-    log.info(SchemaConstants.AUTHORITY_CREATED);
-    return entityFromDb;
-  }
-
-  @Override
-  public Authority createSystemAuthority(Authority authority)
-      throws ApplicationException, BadRequestException {
-    Destination systemDestination = getSystemDestination();
-    checkEntityExistence(authority, systemDestination);
-
-    Authority entityFromDb;
-    try {
-      entityFromDb = context.createAndGet(authority, systemDestination);
-    } catch (TranslatorRuntimeException ex) {
-      log.error(MessageFormat.format(SchemaConstants.OBJECT_INVALID, ex.getMessage()));
-      throw new ApplicationException(SchemaConstants.INVALID_INPUT);
-    }
-    log.info(SchemaConstants.AUTHORITY_CREATED);
-    return entityFromDb;
-  }
-
-  private GetQuery<Authority> buildQueryFor(Destination destination, Where where) {
-    return new GetQuery<>(Authority.class, destination, where);
-  }
-
-  private void checkEntityExistence(Authority authority, Destination destination)
-      throws BadRequestException {
-    Authority entityFromDb =
-        context.getOne(buildQueryFor(destination, eq(NAME_FIELD, authority.getAuthorityId())));
-
-    if (ObjectUtils.isNotEmpty(entityFromDb)) {
-      log.warning(SchemaConstants.AUTHORITY_EXISTS_ALREADY_REGISTERED);
-      throw new BadRequestException(
-          MessageFormat.format(SchemaConstants.AUTHORITY_EXISTS_EXCEPTION,
-              authority.getAuthorityId()));
-    }
-  }
-
-  private Destination getPrivateTenantDestination(String partitionId) {
-    return destinationProvider.getDestination(
-        partitionId, partitionId, SchemaConstants.AUTHORITY_KIND);
-  }
-
-  private Destination getSystemDestination() {
-    return destinationProvider.getDestination(
-        configuration.getSharedTenantName(),
-        SchemaConstants.NAMESPACE,
-        SYSTEM_AUTHORITY_KIND
-    );
-  }
-}
diff --git a/provider/schema-gc/src/main/java/org/opengroup/osdu/schema/impl/schemainfostore/OsmEntityTypeStore.java b/provider/schema-gc/src/main/java/org/opengroup/osdu/schema/impl/schemainfostore/OsmEntityTypeStore.java
deleted file mode 100644
index 3aee88129..000000000
--- a/provider/schema-gc/src/main/java/org/opengroup/osdu/schema/impl/schemainfostore/OsmEntityTypeStore.java
+++ /dev/null
@@ -1,164 +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.schema.impl.schemainfostore;
-
-import static org.opengroup.osdu.core.gcp.osm.model.where.predicate.Eq.eq;
-
-import java.text.MessageFormat;
-import org.apache.commons.lang3.ObjectUtils;
-import org.opengroup.osdu.core.common.logging.JaxRsDpsLog;
-import org.opengroup.osdu.core.common.model.http.DpsHeaders;
-import org.opengroup.osdu.core.gcp.osm.model.Destination;
-import org.opengroup.osdu.core.gcp.osm.model.query.GetQuery;
-import org.opengroup.osdu.core.gcp.osm.model.where.Where;
-import org.opengroup.osdu.core.gcp.osm.service.Context;
-import org.opengroup.osdu.core.gcp.osm.translate.TranslatorRuntimeException;
-import org.opengroup.osdu.schema.configuration.PropertiesConfiguration;
-import org.opengroup.osdu.schema.constants.SchemaConstants;
-import org.opengroup.osdu.schema.destination.provider.DestinationProvider;
-import org.opengroup.osdu.schema.exceptions.ApplicationException;
-import org.opengroup.osdu.schema.exceptions.BadRequestException;
-import org.opengroup.osdu.schema.exceptions.NotFoundException;
-import org.opengroup.osdu.schema.model.EntityType;
-import org.opengroup.osdu.schema.provider.interfaces.schemainfostore.IEntityTypeStore;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Repository;
-
-/**
- * Repository class to register Entity type in KV store using OSM.
- */
-@Repository
-public class OsmEntityTypeStore implements IEntityTypeStore {
-
-  private static final String NAME_FIELD = "name";
-  private static final String SYSTEM_ENTITY_KIND = "system_entity_type";
-  private final DpsHeaders headers;
-  private final DestinationProvider<Destination> destinationProvider;
-  private final JaxRsDpsLog log;
-  private final PropertiesConfiguration configuration;
-  private final Context context;
-
-  @Autowired
-  public OsmEntityTypeStore(DpsHeaders headers,
-      DestinationProvider<Destination> destinationProvider, JaxRsDpsLog log, Context context,
-      PropertiesConfiguration configuration) {
-    this.headers = headers;
-    this.destinationProvider = destinationProvider;
-    this.log = log;
-    this.configuration = configuration;
-    this.context = context;
-  }
-
-  @Override
-  public EntityType get(String entityTypeId) throws NotFoundException, ApplicationException {
-    Destination tenantDestination = getPrivateTenantDestination(this.headers.getPartitionId());
-
-    return context.findOne(buildQueryFor(tenantDestination, eq(NAME_FIELD, entityTypeId)))
-        .orElseThrow(() ->
-            new NotFoundException("bad input parameter"));
-  }
-
-  /**
-   * Method to get System entity type from google store
-   *
-   * @param entityTypeId
-   * @return EntityType object
-   * @throws NotFoundException
-   * @throws ApplicationException
-   */
-  @Override
-  public EntityType getSystemEntity(String entityTypeId)
-      throws NotFoundException, ApplicationException {
-    Destination systemDestination = getSystemDestination();
-
-    return context.findOne(buildQueryFor(systemDestination, eq(NAME_FIELD, entityTypeId)))
-        .orElseThrow(() ->
-            new NotFoundException("bad input parameter"));
-  }
-
-  @Override
-  public EntityType create(EntityType entityType) throws BadRequestException, ApplicationException {
-    Destination tenantDestination = getPrivateTenantDestination(this.headers.getPartitionId());
-    checkEntityExistence(entityType, tenantDestination);
-
-    EntityType entityFromDb;
-    try {
-      entityFromDb = context.createAndGet(entityType,
-          getPrivateTenantDestination(this.headers.getPartitionId()));
-    } catch (TranslatorRuntimeException ex) {
-      log.error(MessageFormat.format(SchemaConstants.OBJECT_INVALID, ex.getMessage()));
-      throw new ApplicationException(SchemaConstants.INVALID_INPUT);
-    }
-    log.info(SchemaConstants.ENTITY_TYPE_CREATED);
-    return entityFromDb;
-  }
-
-  /**
-   * Method to create entityType in google store of dataPartitionId GCP
-   *
-   * @param entityType
-   * @return EntityType object
-   * @throws BadRequestException
-   * @throws ApplicationException
-   */
-  @Override
-  public EntityType createSystemEntity(EntityType entityType)
-      throws BadRequestException, ApplicationException {
-    Destination systemDestination = getSystemDestination();
-    checkEntityExistence(entityType, systemDestination);
-
-    EntityType entityFromDb;
-    try {
-      entityFromDb = context.createAndGet(entityType, systemDestination);
-    } catch (TranslatorRuntimeException ex) {
-      log.error(MessageFormat.format(SchemaConstants.OBJECT_INVALID, ex.getMessage()));
-      throw new ApplicationException(SchemaConstants.INVALID_INPUT);
-    }
-    log.info(SchemaConstants.ENTITY_TYPE_CREATED);
-    return entityFromDb;
-  }
-
-  private GetQuery<EntityType> buildQueryFor(Destination destination, Where where) {
-    return new GetQuery<>(EntityType.class, destination, where);
-  }
-
-  private void checkEntityExistence(EntityType entityType, Destination destination)
-      throws BadRequestException {
-    EntityType entityFromDb = context.getOne(
-        buildQueryFor(destination, eq(NAME_FIELD, entityType.getEntityTypeId())));
-    if (ObjectUtils.isNotEmpty(entityFromDb)) {
-      log.warning(SchemaConstants.ENTITY_TYPE_EXISTS);
-      throw new BadRequestException(
-          MessageFormat.format(SchemaConstants.ENTITY_TYPE_EXISTS_EXCEPTION,
-              entityType.getEntityTypeId()));
-    }
-  }
-
-  private Destination getPrivateTenantDestination(String partitionId) {
-    return destinationProvider.getDestination(
-        partitionId, partitionId, SchemaConstants.ENTITYTYPE_KIND);
-  }
-
-  private Destination getSystemDestination() {
-    return destinationProvider.getDestination(
-        configuration.getSharedTenantName(),
-        SchemaConstants.NAMESPACE,
-        SYSTEM_ENTITY_KIND
-    );
-  }
-}
diff --git a/provider/schema-gc/src/main/java/org/opengroup/osdu/schema/impl/schemainfostore/OsmSchemaInfoStore.java b/provider/schema-gc/src/main/java/org/opengroup/osdu/schema/impl/schemainfostore/OsmSchemaInfoStore.java
deleted file mode 100644
index 130e1c64d..000000000
--- a/provider/schema-gc/src/main/java/org/opengroup/osdu/schema/impl/schemainfostore/OsmSchemaInfoStore.java
+++ /dev/null
@@ -1,525 +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.schema.impl.schemainfostore;
-
-import static org.opengroup.osdu.core.gcp.osm.model.where.condition.And.and;
-import static org.opengroup.osdu.core.gcp.osm.model.where.predicate.Eq.eq;
-
-import java.text.MessageFormat;
-import java.time.Instant;
-import java.util.Collections;
-import java.util.Date;
-import java.util.Iterator;
-import java.util.LinkedList;
-import java.util.List;
-import java.util.Map.Entry;
-import java.util.Optional;
-import java.util.TreeMap;
-import java.util.stream.Collectors;
-import org.apache.commons.lang3.ObjectUtils;
-import org.apache.http.HttpStatus;
-import org.opengroup.osdu.core.common.logging.JaxRsDpsLog;
-import org.opengroup.osdu.core.common.model.http.AppException;
-import org.opengroup.osdu.core.common.model.http.DpsHeaders;
-import org.opengroup.osdu.core.common.model.tenant.TenantInfo;
-import org.opengroup.osdu.core.common.provider.interfaces.ITenantFactory;
-import org.opengroup.osdu.core.gcp.osm.model.Destination;
-import org.opengroup.osdu.core.gcp.osm.model.query.GetQuery;
-import org.opengroup.osdu.core.gcp.osm.model.where.Where;
-import org.opengroup.osdu.core.gcp.osm.model.where.predicate.Eq;
-import org.opengroup.osdu.core.gcp.osm.service.Context;
-import org.opengroup.osdu.core.gcp.osm.translate.TranslatorException;
-import org.opengroup.osdu.core.gcp.osm.translate.TranslatorRuntimeException;
-import org.opengroup.osdu.schema.configuration.PropertiesConfiguration;
-import org.opengroup.osdu.schema.constants.SchemaConstants;
-import org.opengroup.osdu.schema.destination.provider.DestinationProvider;
-import org.opengroup.osdu.schema.exceptions.ApplicationException;
-import org.opengroup.osdu.schema.exceptions.BadRequestException;
-import org.opengroup.osdu.schema.exceptions.NotFoundException;
-import org.opengroup.osdu.schema.model.QueryParams;
-import org.opengroup.osdu.schema.model.SchemaInfo;
-import org.opengroup.osdu.schema.model.SchemaRequest;
-import org.opengroup.osdu.schema.provider.interfaces.schemainfostore.ISchemaInfoStore;
-import org.springframework.stereotype.Repository;
-
-/**
- * Repository class to register Schema in KV store.
- */
-
-@Repository
-
-public class OsmSchemaInfoStore implements ISchemaInfoStore {
-
-  private static final String SYSTEM_SCHEMA_KIND = "system_schema";
-  private static final String SCHEMA_INFO_PREFIX = "schemaInfo.%s";
-  private static final String SCHEMA_IDENTITY_PREFIX = String.format(SCHEMA_INFO_PREFIX,
-      "schemaIdentity.%s");
-  private static final String SCHEMA_ID = String.format(SCHEMA_IDENTITY_PREFIX, "id");
-  private static final String SCHEMA_OSM_KIND = String.format("%s_osm",
-      SchemaConstants.SCHEMA_KIND);
-  private static final String SYSTEM_SCHEMA_OSM_KIND = String.format("%s_osm", SYSTEM_SCHEMA_KIND);
-  private final DpsHeaders headers;
-  private final DestinationProvider<Destination> destinationProvider;
-  private final JaxRsDpsLog log;
-  private final PropertiesConfiguration configuration;
-  private final Context context;
-
-  private final ITenantFactory tenantFactory;
-
-  public OsmSchemaInfoStore(DpsHeaders headers,
-      DestinationProvider<Destination> destinationProvider, JaxRsDpsLog log,
-      PropertiesConfiguration configuration,
-      Context context, ITenantFactory tenantFactory) {
-    this.headers = headers;
-    this.destinationProvider = destinationProvider;
-    this.log = log;
-    this.configuration = configuration;
-    this.context = context;
-    this.tenantFactory = tenantFactory;
-  }
-
-  /**
-   * Method to get schemaInfo from KV store
-   *
-   * @param schemaId
-   * @return schemaInfo object
-   * @throws ApplicationException
-   * @throws NotFoundException
-   */
-  @Override
-  public SchemaInfo getSchemaInfo(String schemaId) throws ApplicationException, NotFoundException {
-    SchemaRequest schemaRequest = context.findOne(
-            buildQueryFor(getPrivateTenantDestination(this.headers.getPartitionId()),
-                eq(SCHEMA_ID, schemaId)))
-        .orElseThrow(() ->
-            new NotFoundException(SchemaConstants.SCHEMA_NOT_PRESENT));
-    return schemaRequest.getSchemaInfo();
-  }
-
-  /**
-   * Method to get System schemaInfo from KV store
-   *
-   * @param schemaId
-   * @return schemaInfo object
-   * @throws ApplicationException
-   * @throws NotFoundException
-   */
-  @Override
-  public SchemaInfo getSystemSchemaInfo(String schemaId)
-      throws ApplicationException, NotFoundException {
-    SchemaRequest schemaRequest = context.findOne(
-            buildQueryFor(getSystemDestination(), eq(SCHEMA_ID, schemaId)))
-        .orElseThrow(() ->
-            new NotFoundException(SchemaConstants.SCHEMA_NOT_PRESENT));
-    return schemaRequest.getSchemaInfo();
-  }
-
-  /**
-   * Method to Create schema in KV store of tenantId GCP
-   *
-   * @param schema
-   * @return schemaInfo object
-   * @throws ApplicationException
-   * @throws BadRequestException
-   */
-  @Override
-  public SchemaInfo createSchemaInfo(SchemaRequest schema)
-      throws ApplicationException, BadRequestException {
-    try {
-      Destination tenantDestination = getPrivateTenantDestination(this.headers.getPartitionId());
-      enrichSchemaInfo(schema.getSchemaInfo(), tenantDestination);
-
-      checkEntityExistence(schema, tenantDestination);
-
-      SchemaRequest entityFromDb;
-      try {
-        entityFromDb = context.createAndGet(schema, tenantDestination);
-
-        log.info(SchemaConstants.SCHEMA_INFO_CREATED);
-        return entityFromDb.getSchemaInfo();
-      } catch (TranslatorRuntimeException ex) {
-        log.error(MessageFormat.format(SchemaConstants.OBJECT_INVALID, ex.getMessage()), ex);
-        throw new ApplicationException(SchemaConstants.INVALID_INPUT, ex);
-      }
-    } catch (ApplicationException e) {
-      throw new ApplicationException(SchemaConstants.SCHEMA_CREATION_FAILED_INVALID_OBJECT);
-    }
-  }
-
-  /**
-   * Method to Create System schema in google store
-   *
-   * @param schema
-   * @return SchemaInfo object
-   * @throws ApplicationException
-   * @throws BadRequestException
-   */
-  @Override
-  public SchemaInfo createSystemSchemaInfo(SchemaRequest schema)
-      throws ApplicationException, BadRequestException {
-    try {
-      Destination systemDestination = getSystemDestination();
-      enrichSchemaInfo(schema.getSchemaInfo(), systemDestination);
-
-      checkEntityExistence(schema, systemDestination);
-
-      SchemaRequest entityFromDb;
-      try {
-        entityFromDb = context.createAndGet(schema, systemDestination);
-      } catch (TranslatorRuntimeException ex) {
-        log.error(MessageFormat.format(SchemaConstants.OBJECT_INVALID, ex.getMessage()), ex);
-        throw new ApplicationException(SchemaConstants.INVALID_INPUT, ex);
-      }
-      log.info(SchemaConstants.SCHEMA_INFO_CREATED);
-      return entityFromDb.getSchemaInfo();
-    } catch (ApplicationException e) {
-      throw new ApplicationException(SchemaConstants.SCHEMA_CREATION_FAILED_INVALID_OBJECT);
-    }
-  }
-
-  /**
-   * Method to update schema in KV store of tenantId GCP
-   *
-   * @param schema
-   * @return schemaInfo object
-   * @throws ApplicationException
-   * @throws BadRequestException
-   */
-  @Override
-  public SchemaInfo updateSchemaInfo(SchemaRequest schema)
-      throws ApplicationException, BadRequestException {
-    Destination tenantDestination = getPrivateTenantDestination(this.headers.getPartitionId());
-    enrichSchemaInfo(schema.getSchemaInfo(), tenantDestination);
-
-    SchemaRequest entityFromDb = null;
-    try {
-      entityFromDb = context.upsertAndGet(schema, tenantDestination);
-    } catch (TranslatorRuntimeException ex) {
-      log.error(SchemaConstants.OBJECT_INVALID);
-      throw new ApplicationException("Invalid object, update failed", ex);
-    }
-    log.info(SchemaConstants.SCHEMA_INFO_UPDATED);
-    return entityFromDb.getSchemaInfo();
-  }
-
-  /**
-   * Method to update System schema in KV store
-   *
-   * @param schema
-   * @return SchemaInfo object
-   * @throws ApplicationException
-   * @throws BadRequestException
-   */
-  @Override
-  public SchemaInfo updateSystemSchemaInfo(SchemaRequest schema)
-      throws ApplicationException, BadRequestException {
-    Destination systemDestination = getSystemDestination();
-    enrichSchemaInfo(schema.getSchemaInfo(), systemDestination);
-
-    SchemaRequest entityFromDb = null;
-    try {
-      entityFromDb = context.upsertAndGet(schema, systemDestination);
-    } catch (TranslatorRuntimeException ex) {
-      log.error(SchemaConstants.OBJECT_INVALID);
-      throw new ApplicationException("Invalid object, update failed", ex);
-    }
-    log.info(SchemaConstants.SCHEMA_INFO_UPDATED);
-    return entityFromDb.getSchemaInfo();
-  }
-
-  /**
-   * Method to clean schemaInfo in google datastore of tenantId GCP
-   *
-   * @param schemaId
-   * @return status
-   * @throws ApplicationException
-   */
-  @Override
-  public boolean cleanSchema(String schemaId) throws ApplicationException {
-    try {
-      context.delete(SchemaRequest.class,
-          getPrivateTenantDestination(this.headers.getPartitionId()), eq(SCHEMA_ID, schemaId));
-      return true;
-    } catch (TranslatorException ex) {
-      return false;
-    }
-  }
-
-  /**
-   * Method to clean System schemaInfo in google datastore
-   *
-   * @param schemaId
-   * @return status
-   * @throws ApplicationException
-   */
-  @Override
-  public boolean cleanSystemSchema(String schemaId) throws ApplicationException {
-    try {
-      context.delete(SchemaRequest.class, getSystemDestination(), eq(SCHEMA_ID, schemaId));
-      return true;
-    } catch (TranslatorException ex) {
-      return false;
-    }
-  }
-
-  @Override
-  public String getLatestMinorVerSchema(SchemaInfo schemaInfo) throws ApplicationException {
-    GetQuery<SchemaRequest> getQuery = new GetQuery<>(SchemaRequest.class,
-        getPrivateTenantDestination(this.headers.getPartitionId()),
-        and(
-            eq(String.format(SCHEMA_IDENTITY_PREFIX, SchemaConstants.AUTHORITY),
-                schemaInfo.getSchemaIdentity().getAuthority()),
-            eq(String.format(SCHEMA_IDENTITY_PREFIX, SchemaConstants.ENTITY_TYPE),
-                schemaInfo.getSchemaIdentity().getEntityType()),
-            eq(String.format(SCHEMA_IDENTITY_PREFIX, SchemaConstants.MAJOR_VERSION),
-                schemaInfo.getSchemaIdentity().getSchemaVersionMajor()),
-            eq(String.format(SCHEMA_IDENTITY_PREFIX, SchemaConstants.SOURCE),
-                schemaInfo.getSchemaIdentity().getSource())
-        ));
-
-    List<SchemaRequest> results = context.getResultsAsList(getQuery);
-
-    Iterator<SchemaRequest> result = results.iterator();
-
-    TreeMap<Long, Object> sortedMap = new TreeMap<>(Collections.reverseOrder());
-    while (result.hasNext()) {
-      SchemaRequest entity = result.next();
-      sortedMap.put(
-          entity.getSchemaInfo().getSchemaIdentity().getSchemaVersionMinor(),
-          entity.getSchema());
-    }
-    if (sortedMap.size() != 0) {
-      Entry<Long, Object> entry = sortedMap.firstEntry();
-      return String.valueOf(entry.getValue());
-    }
-    return "";
-  }
-
-  @Override
-  public List<SchemaInfo> getSchemaInfoList(QueryParams queryParams, String tenantId)
-      throws ApplicationException {
-    List<SchemaInfo> schemaList = new LinkedList<>();
-    List<Eq> filterList = getFilters(queryParams);
-
-    GetQuery<SchemaRequest>.GetQueryBuilder<SchemaRequest> queryBuilder = new GetQuery<>(
-        SchemaRequest.class, this.getPrivateTenantDestination(
-        headers.getPartitionId())).builder();
-    if (!filterList.isEmpty()) {
-      queryBuilder.where(buildFiltersFromList(filterList));
-    }
-    for (SchemaRequest entity : context.getResultsAsList(queryBuilder.build())) {
-      schemaList.add(entity.getSchemaInfo());
-    }
-
-    return schemaList;
-  }
-
-  /**
-   * Get schema info list for system schemas
-   *
-   * @param queryParams
-   * @return
-   * @throws ApplicationException
-   */
-  @Override
-  public List<SchemaInfo> getSystemSchemaInfoList(QueryParams queryParams)
-      throws ApplicationException {
-    List<SchemaInfo> schemaList = new LinkedList<>();
-    List<Eq> filterList = getFilters(queryParams);
-
-    GetQuery<SchemaRequest>.GetQueryBuilder<SchemaRequest> queryBuilder = new GetQuery<>(
-        SchemaRequest.class, getSystemDestination()).builder();
-    if (!filterList.isEmpty()) {
-      queryBuilder.where(buildFiltersFromList(filterList));
-    }
-    for (SchemaRequest entity : context.getResultsAsList(queryBuilder.build())) {
-      schemaList.add(entity.getSchemaInfo());
-    }
-
-    return schemaList;
-  }
-
-  /**
-   * Method to check whether given system schema id is unique or not in system schemas and current
-   * private tenant only*
-   *
-   * @param schemaId
-   * @param tenantId
-   * @return
-   */
-  @Override
-  public boolean isUnique(String schemaId, String tenantId) {
-    try {
-      GetQuery<SchemaRequest> systemSchemasQuery = buildQueryFor(getSystemDestination(),
-          eq(SCHEMA_ID, schemaId));
-      List<SchemaRequest> systemSchemasResult = context.getResultsAsList(systemSchemasQuery);
-      if (!systemSchemasResult.isEmpty()) {
-        return false;
-      }
-      GetQuery<SchemaRequest> privateTenantSchemasQuery =
-          buildQueryFor(getPrivateTenantDestination(this.headers.getPartitionId()),
-              eq(SCHEMA_ID, schemaId));
-      List<SchemaRequest> privateSchemasResult = context.getResultsAsList(
-          privateTenantSchemasQuery);
-      if (!privateSchemasResult.isEmpty()) {
-        return false;
-      }
-    } catch (TranslatorRuntimeException e) {
-      throw new AppException(HttpStatus.SC_BAD_REQUEST, "Schema uniqueness check failed",
-          String.format("Misconfigured tenant-info for %s, not possible to check schema uniqueness",
-              tenantId), e);
-    }
-    return true;
-  }
-
-  /**
-   * Method to check whether given system schema id is unique or not in system schemas and in all
-   * private tenants
-   *
-   * @param schemaId
-   * @return
-   * @throws ApplicationException
-   */
-  @Override
-  public boolean isUniqueSystemSchema(String schemaId) {
-    GetQuery<SchemaRequest> systemSchemasQuery = buildQueryFor(getSystemDestination(),
-        eq(SCHEMA_ID, schemaId));
-    List<SchemaRequest> systemSchemasResult = context.getResultsAsList(systemSchemasQuery);
-    if (!systemSchemasResult.isEmpty()) {
-      return false;
-    }
-
-    List<String> privateTenantList = tenantFactory.listTenantInfo().stream()
-        .map(TenantInfo::getDataPartitionId)
-        .collect(Collectors.toList());
-
-    for (String tenant : privateTenantList) {
-      GetQuery<SchemaRequest> query = buildQueryFor(getPrivateTenantDestination(tenant),
-          eq(SCHEMA_ID, schemaId));
-      try {
-        List<SchemaRequest> schemas = context.getResultsAsList(query);
-        if (!schemas.isEmpty()) {
-          return false;
-        }
-      } catch (TranslatorRuntimeException e) {
-        throw new AppException(HttpStatus.SC_BAD_REQUEST, "Schema uniqueness check failed",
-            String.format(
-                "Misconfigured tenant-info for %s, not possible to check schema uniqueness",
-                tenant), e);
-      }
-    }
-    return true;
-  }
-
-  private Where buildFiltersFromList(List<Eq> filters) {
-    return filters.size() > 1
-        ? and(filters.get(0), filters.get(1), filters.toArray(filters.toArray(new Where[0])))
-        : filters.get(0);
-
-  }
-
-  private void enrichSchemaInfo(SchemaInfo schema, Destination destination)
-      throws BadRequestException {
-    if (schema.getSupersededBy() != null) {
-      Optional<SchemaRequest> superseded =
-          context.findOne(
-              buildQueryFor(destination, eq(SCHEMA_ID, schema.getSupersededBy().getId())));
-
-      if (schema.getSupersededBy().getId() == null
-          || !superseded.isPresent()) {
-        log.error(SchemaConstants.INVALID_SUPERSEDEDBY_ID);
-        throw new BadRequestException(SchemaConstants.INVALID_SUPERSEDEDBY_ID);
-      }
-    }
-
-    schema.setDateCreated(Date.from(Instant.now()));
-    schema.setCreatedBy(headers.getUserEmail());
-  }
-
-  private List<Eq> getFilters(QueryParams queryParams) {
-    List<Eq> filterList = new LinkedList<>();
-    if (queryParams.getAuthority() != null) {
-      filterList.add(eq(
-          String.format(SCHEMA_IDENTITY_PREFIX, SchemaConstants.AUTHORITY),
-          queryParams.getAuthority()));
-    }
-    if (queryParams.getSource() != null) {
-      filterList.add(eq(
-          String.format(SCHEMA_IDENTITY_PREFIX, SchemaConstants.SOURCE),
-          queryParams.getSource()));
-    }
-    if (queryParams.getEntityType() != null) {
-      filterList.add(eq(
-          String.format(SCHEMA_IDENTITY_PREFIX, SchemaConstants.ENTITY_TYPE),
-          queryParams.getEntityType()));
-    }
-    if (queryParams.getSchemaVersionMajor() != null) {
-      filterList.add(eq(
-          String.format(SCHEMA_IDENTITY_PREFIX, SchemaConstants.MAJOR_VERSION),
-          queryParams.getSchemaVersionMajor()));
-    }
-    if (queryParams.getSchemaVersionMinor() != null) {
-      filterList.add(eq(
-          String.format(SCHEMA_IDENTITY_PREFIX, SchemaConstants.MINOR_VERSION),
-          queryParams.getSchemaVersionMinor()));
-    }
-    if (queryParams.getSchemaVersionPatch() != null) {
-      filterList.add(eq(
-          String.format(SCHEMA_IDENTITY_PREFIX, SchemaConstants.PATCH_VERSION),
-          queryParams.getSchemaVersionPatch()));
-    }
-    if (queryParams.getStatus() != null) {
-      filterList.add(eq(
-          String.format(SCHEMA_INFO_PREFIX, SchemaConstants.STATUS),
-          queryParams.getStatus().toUpperCase()));
-    }
-    return filterList;
-  }
-
-  private Destination getPrivateTenantDestination(String partitionId) {
-    return destinationProvider.getDestination(
-        partitionId,
-            partitionId,
-        SCHEMA_OSM_KIND
-    );
-  }
-
-  private Destination getSystemDestination() {
-    return destinationProvider.getDestination(
-        configuration.getSharedTenantName(),
-        SchemaConstants.NAMESPACE,
-        SYSTEM_SCHEMA_OSM_KIND
-    );
-  }
-
-  private GetQuery<SchemaRequest> buildQueryFor(Destination destination, Where where) {
-    return new GetQuery<>(SchemaRequest.class, destination, where);
-  }
-
-  private void checkEntityExistence(SchemaRequest entity, Destination destination)
-      throws BadRequestException {
-    SchemaRequest entityFromDb = context.getOne(buildQueryFor(destination,
-        eq(SCHEMA_ID, entity.getSchemaInfo().getSchemaIdentity().getId())));
-    if (ObjectUtils.isNotEmpty(entityFromDb)) {
-      log.warning(SchemaConstants.SCHEMA_CREATION_FAILED);
-      throw new BadRequestException(MessageFormat.format(SchemaConstants.SCHEMA_ID_EXISTS,
-          entity.getSchemaInfo().getSchemaIdentity().getId()));
-    }
-  }
-
-}
\ No newline at end of file
diff --git a/provider/schema-gc/src/main/java/org/opengroup/osdu/schema/impl/schemainfostore/OsmSourceStore.java b/provider/schema-gc/src/main/java/org/opengroup/osdu/schema/impl/schemainfostore/OsmSourceStore.java
deleted file mode 100644
index fdba206ef..000000000
--- a/provider/schema-gc/src/main/java/org/opengroup/osdu/schema/impl/schemainfostore/OsmSourceStore.java
+++ /dev/null
@@ -1,160 +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.schema.impl.schemainfostore;
-
-import static org.opengroup.osdu.core.gcp.osm.model.where.predicate.Eq.eq;
-
-import java.text.MessageFormat;
-import org.apache.commons.lang3.ObjectUtils;
-import org.opengroup.osdu.core.common.logging.JaxRsDpsLog;
-import org.opengroup.osdu.core.common.model.http.DpsHeaders;
-import org.opengroup.osdu.core.gcp.osm.model.Destination;
-import org.opengroup.osdu.core.gcp.osm.model.query.GetQuery;
-import org.opengroup.osdu.core.gcp.osm.model.where.Where;
-import org.opengroup.osdu.core.gcp.osm.service.Context;
-import org.opengroup.osdu.core.gcp.osm.translate.TranslatorRuntimeException;
-import org.opengroup.osdu.schema.configuration.PropertiesConfiguration;
-import org.opengroup.osdu.schema.constants.SchemaConstants;
-import org.opengroup.osdu.schema.destination.provider.DestinationProvider;
-import org.opengroup.osdu.schema.exceptions.ApplicationException;
-import org.opengroup.osdu.schema.exceptions.BadRequestException;
-import org.opengroup.osdu.schema.exceptions.NotFoundException;
-import org.opengroup.osdu.schema.model.Source;
-import org.opengroup.osdu.schema.provider.interfaces.schemainfostore.ISourceStore;
-import org.springframework.stereotype.Repository;
-
-/**
- * Repository class to register Source in KV store.
- */
-@Repository
-public class OsmSourceStore implements ISourceStore {
-
-  private static final String NAME_FIELD = "name";
-  private static final String SYSTEM_SOURCE_KIND = "system_source";
-  private final DpsHeaders headers;
-  private final DestinationProvider<Destination> destinationProvider;
-  private final JaxRsDpsLog log;
-  private final PropertiesConfiguration configuration;
-  private final Context context;
-
-  public OsmSourceStore(DpsHeaders headers,
-      DestinationProvider<Destination> destinationProvider, JaxRsDpsLog log,
-      PropertiesConfiguration configuration,
-      Context context) {
-    this.headers = headers;
-    this.destinationProvider = destinationProvider;
-    this.log = log;
-    this.configuration = configuration;
-    this.context = context;
-  }
-
-  @Override
-  public Source get(String sourceId) throws NotFoundException, ApplicationException {
-    Destination tenantDestination = getPrivateTenantDestination(this.headers.getPartitionId());
-
-    return context.findOne(buildQueryFor(tenantDestination, eq(NAME_FIELD, sourceId)))
-        .orElseThrow(() ->
-            new NotFoundException("bad input parameter"));
-  }
-
-  /**
-   * Method to get System Source in KV store
-   *
-   * @param sourceId
-   * @return Source object
-   * @throws NotFoundException
-   * @throws ApplicationException
-   */
-  @Override
-  public Source getSystemSource(String sourceId) throws NotFoundException, ApplicationException {
-    Destination systemDestination = getSystemDestination();
-
-    return context.findOne(buildQueryFor(systemDestination, eq(NAME_FIELD, sourceId)))
-        .orElseThrow(() ->
-            new NotFoundException("bad input parameter"));
-  }
-
-  @Override
-  public Source create(Source source) throws BadRequestException, ApplicationException {
-    Destination tenantDestination = getPrivateTenantDestination(this.headers.getPartitionId());
-    checkEntityExistence(source, tenantDestination);
-
-    Source entityFromDb;
-    try {
-      entityFromDb = context.createAndGet(source, tenantDestination);
-    } catch (TranslatorRuntimeException ex) {
-      log.error(MessageFormat.format(SchemaConstants.OBJECT_INVALID, ex.getMessage()));
-      throw new ApplicationException(SchemaConstants.INVALID_INPUT);
-    }
-    log.info(SchemaConstants.SOURCE_CREATED);
-    return entityFromDb;
-  }
-
-  /**
-   * Method to create System Source in KV store
-   *
-   * @param source
-   * @return Source object
-   * @throws BadRequestException
-   * @throws ApplicationException
-   */
-  @Override
-  public Source createSystemSource(Source source) throws BadRequestException, ApplicationException {
-    Destination systemDestination = getSystemDestination();
-    checkEntityExistence(source, systemDestination);
-
-    Source entityFromDb;
-    try {
-      entityFromDb = context.createAndGet(source, systemDestination);
-    } catch (TranslatorRuntimeException ex) {
-      log.error(MessageFormat.format(SchemaConstants.OBJECT_INVALID, ex.getMessage()));
-      throw new ApplicationException(SchemaConstants.INVALID_INPUT);
-    }
-    log.info(SchemaConstants.SOURCE_CREATED);
-    return entityFromDb;
-  }
-
-  private Destination getPrivateTenantDestination(String partitionId) {
-    return destinationProvider.getDestination(
-        partitionId, partitionId, SchemaConstants.SOURCE_KIND);
-  }
-
-  private Destination getSystemDestination() {
-    return destinationProvider.getDestination(
-        configuration.getSharedTenantName(),
-        SchemaConstants.NAMESPACE,
-        SYSTEM_SOURCE_KIND
-    );
-  }
-
-  private GetQuery<Source> buildQueryFor(Destination destination, Where where) {
-    return new GetQuery<>(Source.class, destination, where);
-  }
-
-  private void checkEntityExistence(Source source, Destination destination)
-      throws BadRequestException {
-    Source entityFromDb = context.getOne(
-        buildQueryFor(destination, eq(NAME_FIELD, source.getSourceId())));
-
-    if (ObjectUtils.isNotEmpty(entityFromDb)) {
-      log.warning(SchemaConstants.SOURCE_EXISTS);
-      throw new BadRequestException(
-          MessageFormat.format(SchemaConstants.SOURCE_EXISTS_EXCEPTION, source.getSourceId()));
-    }
-  }
-}
diff --git a/provider/schema-gc/src/main/java/org/opengroup/osdu/schema/impl/schemastore/ObmSchemaStore.java b/provider/schema-gc/src/main/java/org/opengroup/osdu/schema/impl/schemastore/ObmSchemaStore.java
deleted file mode 100644
index d48d1779d..000000000
--- a/provider/schema-gc/src/main/java/org/opengroup/osdu/schema/impl/schemastore/ObmSchemaStore.java
+++ /dev/null
@@ -1,262 +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.schema.impl.schemastore;
-
-import static org.opengroup.osdu.core.gcp.obm.driver.S3CompatibleErrors.NO_SUCH_KEY;
-
-import com.google.cloud.storage.StorageException;
-import java.nio.charset.StandardCharsets;
-import org.opengroup.osdu.core.common.logging.JaxRsDpsLog;
-import org.opengroup.osdu.core.common.model.http.DpsHeaders;
-import org.opengroup.osdu.core.common.model.tenant.TenantInfo;
-import org.opengroup.osdu.core.common.partition.PartitionPropertyResolver;
-import org.opengroup.osdu.core.common.provider.interfaces.ITenantFactory;
-import org.opengroup.osdu.core.gcp.obm.driver.Driver;
-import org.opengroup.osdu.core.gcp.obm.driver.ObmDriverRuntimeException;
-import org.opengroup.osdu.core.gcp.obm.model.Blob;
-import org.opengroup.osdu.core.gcp.obm.persistence.ObmDestination;
-import org.opengroup.osdu.schema.configuration.PartitionPropertyNames;
-import org.opengroup.osdu.schema.configuration.PropertiesConfiguration;
-import org.opengroup.osdu.schema.constants.SchemaConstants;
-import org.opengroup.osdu.schema.destination.provider.DestinationProvider;
-import org.opengroup.osdu.schema.exceptions.ApplicationException;
-import org.opengroup.osdu.schema.exceptions.NotFoundException;
-import org.opengroup.osdu.schema.provider.interfaces.schemastore.ISchemaStore;
-import org.springframework.http.HttpStatus;
-import org.springframework.stereotype.Repository;
-
-/**
- * Repository class to register resolved Schema in Blob storage.
- */
-@Repository
-public class ObmSchemaStore implements ISchemaStore {
-
-  private static final String SCHEMA_BUCKET_EXTENSION = "-system-schema";
-  private final ITenantFactory tenantFactory;
-  private final DpsHeaders headers;
-  private final DestinationProvider<ObmDestination> destinationProvider;
-  private final JaxRsDpsLog log;
-  private final PropertiesConfiguration configuration;
-  private final Driver driver;
-  private final PartitionPropertyNames partitionPropertyNames;
-  private final PartitionPropertyResolver partitionPropertyResolver;
-
-  public ObmSchemaStore(ITenantFactory tenantFactory, DpsHeaders headers,
-      DestinationProvider<ObmDestination> destinationProvider, JaxRsDpsLog log,
-      PropertiesConfiguration configuration,
-      Driver driver, PartitionPropertyNames partitionPropertyNames,
-      PartitionPropertyResolver partitionPropertyResolver) {
-    this.tenantFactory = tenantFactory;
-    this.headers = headers;
-    this.destinationProvider = destinationProvider;
-    this.log = log;
-    this.configuration = configuration;
-    this.driver = driver;
-    this.partitionPropertyNames = partitionPropertyNames;
-    this.partitionPropertyResolver = partitionPropertyResolver;
-  }
-
-  /**
-   * Method to get schema from Blob Storage given Tenant ProjectInfo
-   *
-   * @param dataPartitionId
-   * @param filePath
-   * @return schema object
-   * @throws ApplicationException
-   * @throws NotFoundException
-   */
-  @Override
-  public String getSchema(String dataPartitionId, String filePath)
-      throws ApplicationException, NotFoundException {
-    filePath = filePath + SchemaConstants.JSON_EXTENSION;
-    String bucketName = getSchemaBucketName(dataPartitionId);
-
-    byte[] blob = null;
-
-    try {
-      blob = driver.getBlobContent(bucketName, filePath,
-          getDestination(this.headers.getPartitionId()));
-    } catch (ObmDriverRuntimeException | NullPointerException ex) {
-      if (isNotFoundException(ex)) {
-        log.warning(ex.getMessage());
-        throw new NotFoundException(SchemaConstants.SCHEMA_NOT_PRESENT);
-      } else {
-        throw new ApplicationException(SchemaConstants.INTERNAL_SERVER_ERROR);
-      }
-    }
-
-    if (blob != null) {
-      return new String(blob, StandardCharsets.UTF_8);
-    }
-    throw new NotFoundException(SchemaConstants.SCHEMA_NOT_PRESENT);
-  }
-
-  private boolean isNotFoundException(RuntimeException ex) {
-    if (ex instanceof NullPointerException) {
-      return true;
-    }
-
-    ObmDriverRuntimeException obmException = (ObmDriverRuntimeException) ex;
-
-    if (obmException.getCause() instanceof IllegalArgumentException) {
-      return NO_SUCH_KEY.equals(obmException.getError());
-    }
-
-    if (obmException.getCause() instanceof StorageException) {
-      return HttpStatus.NOT_FOUND.value()
-          == (((StorageException) obmException.getCause()).getCode());
-    }
-
-    return false;
-  }
-
-  /**
-   * Method to get System schema from Blob Storage
-   *
-   * @param filePath
-   * @return Schema object
-   * @throws NotFoundException
-   * @throws ApplicationException
-   */
-  @Override
-  public String getSystemSchema(String filePath) throws NotFoundException, ApplicationException {
-    filePath = filePath + SchemaConstants.JSON_EXTENSION;
-    String systemSchemaBucketName = getSystemSchemaBucketName();
-
-    byte[] blob = null;
-
-    try {
-      blob = driver.getBlobContent(systemSchemaBucketName, filePath, getSystemDestination());
-    } catch (ObmDriverRuntimeException | NullPointerException ex) {
-      if (isNotFoundException(ex)) {
-        log.warning(ex.getMessage());
-        throw new NotFoundException(SchemaConstants.SCHEMA_NOT_PRESENT);
-      } else {
-        throw new ApplicationException(SchemaConstants.INTERNAL_SERVER_ERROR);
-      }
-    }
-
-    if (blob != null) {
-      return new String(blob, StandardCharsets.UTF_8);
-    }
-    throw new NotFoundException(SchemaConstants.SCHEMA_NOT_PRESENT);
-  }
-
-  /**
-   * Method to write schema to Blob Storage given Tenant ProjectInfo
-   *
-   * @param filePath
-   * @param content
-   * @return schema object
-   * @throws ApplicationException
-   */
-
-  @Override
-  public String createSchema(String filePath, String content) throws ApplicationException {
-    String dataPartitionId = headers.getPartitionId();
-    filePath = filePath + SchemaConstants.JSON_EXTENSION;
-    String bucketName = getSchemaBucketName(dataPartitionId);
-
-    Blob blob = Blob.builder()
-        .bucket(bucketName)
-        .name(filePath)
-        .build();
-
-    try {
-      Blob blobFromStorage = driver.createAndGetBlob(blob, content.getBytes(StandardCharsets.UTF_8),
-          getDestination(this.headers.getPartitionId()));
-      log.info(SchemaConstants.SCHEMA_CREATED);
-      return blobFromStorage.getName();
-    } catch (ObmDriverRuntimeException ex) {
-      throw new ApplicationException(SchemaConstants.INTERNAL_SERVER_ERROR);
-    }
-  }
-
-  /**
-   * Method to write System schema to Blob Storage
-   *
-   * @param filePath
-   * @param content
-   * @return schema object
-   * @throws ApplicationException
-   */
-  @Override
-  public String createSystemSchema(String filePath, String content) throws ApplicationException {
-    filePath = filePath + SchemaConstants.JSON_EXTENSION;
-    String systemSchemaBucketName = getSystemSchemaBucketName();
-
-    Blob blob = Blob.builder()
-        .bucket(systemSchemaBucketName)
-        .name(filePath)
-        .build();
-
-    try {
-      Blob blobFromStorage = driver.createAndGetBlob(blob, content.getBytes(StandardCharsets.UTF_8),
-          getSystemDestination());
-      log.info(SchemaConstants.SCHEMA_CREATED);
-      return blobFromStorage.getName();
-    } catch (ObmDriverRuntimeException ex) {
-      throw new ApplicationException(SchemaConstants.INTERNAL_SERVER_ERROR);
-    }
-  }
-
-  @Override
-  public boolean cleanSchemaProject(String schemaId) {
-    String dataPartitionId = headers.getPartitionId();
-    String fileName = schemaId + SchemaConstants.JSON_EXTENSION;
-    String bucketName = getSchemaBucketName(dataPartitionId);
-    return driver.deleteBlob(bucketName, fileName, getDestination(this.headers.getPartitionId()));
-  }
-
-  /**
-   * Method to clean System schema from Blob Storage
-   *
-   * @param schemaId
-   * @return
-   * @throws ApplicationException
-   */
-  @Override
-  public boolean cleanSystemSchemaProject(String schemaId) {
-    String fileName = schemaId + SchemaConstants.JSON_EXTENSION;
-    String systemSchemaBucketName = getSystemSchemaBucketName();
-    return driver.deleteBlob(systemSchemaBucketName, fileName, getSystemDestination());
-  }
-
-  private String getSchemaBucketName(String dataPartitionId) {
-    return partitionPropertyResolver.getOptionalPropertyValue(partitionPropertyNames.getSchemaBucketName(), dataPartitionId).orElseGet(() -> {
-      TenantInfo tenantInfo = tenantFactory.getTenantInfo(dataPartitionId);
-      return String.format("%s-%s%s", tenantInfo.getProjectId(), tenantInfo.getName(), SchemaConstants.SCHEMA_BUCKET_EXTENSION);
-    });
-  }
-
-  private String getSystemSchemaBucketName() {
-    return partitionPropertyResolver.getOptionalPropertyValue(partitionPropertyNames.getSystemSchemaBucketName(), configuration.getSharedTenantName()).orElseGet(() -> {
-      TenantInfo tenantInfo = tenantFactory.getTenantInfo(configuration.getSharedTenantName());
-      return String.format("%s-%s%s", tenantInfo.getProjectId(), tenantInfo.getName(), SCHEMA_BUCKET_EXTENSION);
-    });
-  }
-
-  private ObmDestination getDestination(String partitionId) {
-    return destinationProvider.getDestination(partitionId);
-  }
-
-  private ObmDestination getSystemDestination() {
-    return destinationProvider.getDestination(configuration.getSharedTenantName());
-  }
-
-}
diff --git a/provider/schema-gc/src/main/java/org/opengroup/osdu/schema/configuration/PartitionPropertyNames.java b/provider/schema-gc/src/main/java/org/opengroup/osdu/schema/logging/formatter/GoogleJsonFormatter.java
similarity index 52%
rename from provider/schema-gc/src/main/java/org/opengroup/osdu/schema/configuration/PartitionPropertyNames.java
rename to provider/schema-gc/src/main/java/org/opengroup/osdu/schema/logging/formatter/GoogleJsonFormatter.java
index b0f3bf614..051f216c6 100644
--- a/provider/schema-gc/src/main/java/org/opengroup/osdu/schema/configuration/PartitionPropertyNames.java
+++ b/provider/schema-gc/src/main/java/org/opengroup/osdu/schema/logging/formatter/GoogleJsonFormatter.java
@@ -1,6 +1,6 @@
 /*
- *  Copyright 2020-2023 Google LLC
- *  Copyright 2020-2023 EPAM Systems, Inc
+ *  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.
@@ -14,20 +14,16 @@
  *  See the License for the specific language governing permissions and
  *  limitations under the License.
  */
+package org.opengroup.osdu.schema.logging.formatter;
 
-package org.opengroup.osdu.schema.configuration;
+import ch.qos.logback.contrib.jackson.JacksonJsonFormatter;
+import java.io.IOException;
+import java.util.Map;
 
-import lombok.Getter;
-import lombok.Setter;
-import org.springframework.boot.context.properties.ConfigurationProperties;
-import org.springframework.context.annotation.Configuration;
-
-@Setter
-@Getter
-@Configuration
-@ConfigurationProperties(prefix = "partition.properties")
-public class PartitionPropertyNames {
-
-  private String schemaBucketName;
-  private String systemSchemaBucketName;
+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/schema-gc/src/main/java/org/opengroup/osdu/schema/security/AuthorizationServiceForServiceAdminImpl.java b/provider/schema-gc/src/main/java/org/opengroup/osdu/schema/security/AuthorizationServiceForServiceAdminImpl.java
deleted file mode 100644
index 7f81e11d9..000000000
--- a/provider/schema-gc/src/main/java/org/opengroup/osdu/schema/security/AuthorizationServiceForServiceAdminImpl.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.schema.security;
-
-import static org.opengroup.osdu.core.common.model.http.DpsHeaders.DATA_PARTITION_ID;
-
-import java.util.Objects;
-import lombok.RequiredArgsConstructor;
-import lombok.extern.slf4j.Slf4j;
-import org.opengroup.osdu.core.common.model.entitlements.AuthorizationResponse;
-import org.opengroup.osdu.core.common.model.http.AppException;
-import org.opengroup.osdu.core.common.model.http.DpsHeaders;
-import org.opengroup.osdu.core.common.provider.interfaces.IAuthorizationService;
-import org.opengroup.osdu.schema.configuration.PropertiesConfiguration;
-import org.opengroup.osdu.schema.provider.interfaces.authorization.IAuthorizationServiceForServiceAdmin;
-import org.springframework.stereotype.Component;
-import org.springframework.web.context.annotation.RequestScope;
-
-@Slf4j
-@Component
-@RequestScope
-@RequiredArgsConstructor
-public class AuthorizationServiceForServiceAdminImpl implements
-    IAuthorizationServiceForServiceAdmin {
-
-  private final DpsHeaders headers;
-  private static final String WORKFLOW_SYSTEM_ADMIN = "service.schema-service.system-admin";
-  private final PropertiesConfiguration configuration;
-  private final IAuthorizationService authorizationService;
-
-  @Override
-  public boolean isDomainAdminServiceAccount() {
-    if (Objects.isNull(headers.getAuthorization()) || headers.getAuthorization().isEmpty()) {
-      throw AppException.createUnauthorized("No JWT token. Access is Forbidden");
-    }
-    this.headers.put(DATA_PARTITION_ID, configuration.getSharedTenantName());
-    AuthorizationResponse authResponse =
-        authorizationService.authorizeAny(headers, WORKFLOW_SYSTEM_ADMIN);
-    headers.put(DpsHeaders.USER_EMAIL, authResponse.getUser());
-    return true;
-  }
-}
diff --git a/provider/schema-gc/src/main/java/org/opengroup/osdu/schema/security/WebSecurity.java b/provider/schema-gc/src/main/java/org/opengroup/osdu/schema/security/WebSecurity.java
deleted file mode 100644
index 558cc1462..000000000
--- a/provider/schema-gc/src/main/java/org/opengroup/osdu/schema/security/WebSecurity.java
+++ /dev/null
@@ -1,45 +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.schema.security;
-
-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.context.annotation.Bean;
-import org.springframework.context.annotation.Configuration;
-import org.springframework.security.config.annotation.web.configurers.AbstractHttpConfigurer;
-import org.springframework.security.config.http.SessionCreationPolicy;
-import org.springframework.security.web.SecurityFilterChain;
-
-import static org.springframework.security.config.Customizer.withDefaults;
-
-@EnableMethodSecurity
-@EnableWebSecurity
-@Configuration
-public class WebSecurity {
-  @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();
-  }
-}
diff --git a/provider/schema-gc/src/main/resources/application-anthos.properties b/provider/schema-gc/src/main/resources/application-anthos.properties
deleted file mode 100644
index 22ede17cf..000000000
--- a/provider/schema-gc/src/main/resources/application-anthos.properties
+++ /dev/null
@@ -1,21 +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
-#
-#     https://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.
-#
-
-partition-auth-enabled=false
-obmDriver=minio
-osmDriver=postgres
-oqmDriver=rabbitmq
\ No newline at end of file
diff --git a/provider/schema-gc/src/main/resources/application.properties b/provider/schema-gc/src/main/resources/application.properties
index 065260725..01903a086 100644
--- a/provider/schema-gc/src/main/resources/application.properties
+++ b/provider/schema-gc/src/main/resources/application.properties
@@ -15,6 +15,8 @@ partition.properties.system-schema-bucket-name=system.schema.bucket.name
 
 # Service level config
 
+destination.resolver=partition
+
 ## Use this property to name your shared tenant name
 shared-tenant-name=${SHARED_TENANT_NAME:osdu}
 
diff --git a/provider/schema-gc/src/main/resources/logback.xml b/provider/schema-gc/src/main/resources/logback.xml
index 6c1f48501..0ba3fe95d 100644
--- a/provider/schema-gc/src/main/resources/logback.xml
+++ b/provider/schema-gc/src/main/resources/logback.xml
@@ -1,37 +1,39 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <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>
+    <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>
+    <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.core.gcp.logging.formatter.GoogleJsonFormatter">
-            <prettyPrint>false</prettyPrint>
-          </jsonFormatter>
-        </layout>
-      </encoder>
-    </appender>
+                    <jsonFormatter class="org.opengroup.osdu.schema.logging.formatter.GoogleJsonFormatter">
+                        <prettyPrint>false</prettyPrint>
+                    </jsonFormatter>
+                </layout>
+            </encoder>
+        </appender>
 
-    <root level="info">
-      <appender-ref ref="stdout"/>
-    </root>
-  </springProfile>
+        <root level="info">
+            <appender-ref ref="stdout"/>
+        </root>
+    </springProfile>
 
 </configuration>
\ No newline at end of file
diff --git a/provider/schema-gc/src/main/resources/type-mapper-config.json b/provider/schema-gc/src/main/resources/type-mapper-config.json
new file mode 100644
index 000000000..6b36b2429
--- /dev/null
+++ b/provider/schema-gc/src/main/resources/type-mapper-config.json
@@ -0,0 +1,74 @@
+{
+  "instrumentations": [
+    {
+      "entityType": "org.opengroup.osdu.schema.model.Authority",
+      "fieldNameCustomMapping": {
+        "authorityId": "name"
+      },
+      "fieldTypeCustomMapping": {
+      },
+      "identityTranslator": {
+        "getIdMethod": "getAuthorityId",
+        "setIdMethod": "setAuthorityId",
+        "keyClass": "java.lang.String"
+      },
+      "keyFields": [
+        "name"
+      ]
+    },
+    {
+      "entityType": "org.opengroup.osdu.schema.model.EntityType",
+      "fieldNameCustomMapping": {
+        "entityTypeId": "name"
+      },
+      "fieldTypeCustomMapping": {
+      },
+      "identityTranslator": {
+        "getIdMethod": "getEntityTypeId",
+        "setIdMethod": "setEntityTypeId",
+        "keyClass": "java.lang.String"
+      },
+      "keyFields": [
+        "name"
+      ]
+    },
+    {
+      "entityType": "org.opengroup.osdu.schema.model.SchemaRequest",
+      "fieldNameCustomMapping": {
+        "schemaVersionMajor": "majorVersion",
+        "schemaVersionMinor": "minorVersion",
+        "schemaVersionPatch": "patchVersion"
+      },
+      "fieldTypeCustomMapping": {
+        "schema": "shaded.osm.com.google.cloud.datastore.Blob",
+        "dateCreated": "shaded.osm.com.google.cloud.Timestamp"
+      },
+      "identityTranslator": {
+        "getIdMethod": "getSchemaInfo().getSchemaIdentity().getId()",
+        "setIdMethod": "getSchemaInfo().getSchemaIdentity().setId()",
+        "keyClass": "java.lang.String"
+      },
+      "keyFields": [
+        ""
+      ]
+    },
+    {
+      "entityType": "org.opengroup.osdu.schema.model.Source",
+      "fieldNameCustomMapping": {
+        "sourceId": "name"
+      },
+      "fieldTypeCustomMapping": {
+      },
+      "identityTranslator": {
+        "getIdMethod": "getSourceId",
+        "setIdMethod": "setSourceId",
+        "keyClass": "java.lang.String"
+      },
+      "keyFields": [
+        "name"
+      ]
+    }
+  ]
+}
+
+
diff --git a/provider/schema-gc/src/test/java/org/opengroup/osdu/schema/impl/messagebus/MessageBusImplTest.java b/provider/schema-gc/src/test/java/org/opengroup/osdu/schema/impl/messagebus/MessageBusImplTest.java
deleted file mode 100644
index 48ed40316..000000000
--- a/provider/schema-gc/src/test/java/org/opengroup/osdu/schema/impl/messagebus/MessageBusImplTest.java
+++ /dev/null
@@ -1,100 +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.schema.impl.messagebus;
-
-import static org.mockito.ArgumentMatchers.any;
-import static org.mockito.Mockito.never;
-import static org.mockito.Mockito.times;
-import static org.mockito.Mockito.verify;
-import static org.mockito.Mockito.when;
-
-import java.util.HashMap;
-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.core.common.logging.JaxRsDpsLog;
-import org.opengroup.osdu.core.common.model.http.DpsHeaders;
-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.OqmMessage;
-import org.opengroup.osdu.core.gcp.oqm.model.OqmTopic;
-import org.opengroup.osdu.schema.configuration.EventMessagingPropertiesConfig;
-import org.opengroup.osdu.schema.destination.provider.impl.OqmDestinationProvider;
-import org.opengroup.osdu.schema.logging.AuditLogger;
-
-@RunWith(MockitoJUnitRunner.class)
-public class MessageBusImplTest {
-
-  private static final String SCHEMA_ID = "schemaId";
-  private static final String EVENT_TYPE = "eventType";
-  private static final String TENANT_NAME = "tenantName";
-  private static final String DATA_PARTITION_ID = "partitionId";
-  private static final String CORRELATION_ID = "correlationId";
-
-  @Mock
-  private OqmTopic oqmTopic;
-
-  @Mock
-  private OqmDriver driver;
-
-  @Mock
-  private TenantInfo tenantInfo;
-
-  @Mock
-  private DpsHeaders headers;
-
-  @Mock
-  private OqmDestinationProvider destinationProvider;
-
-  @Mock
-  private EventMessagingPropertiesConfig eventMessagingPropertiesConfig;
-
-  @Mock
-  private JaxRsDpsLog logger;
-
-  @Mock
-  private AuditLogger auditLogger;
-
-  @InjectMocks
-  private MessageBusImpl sut;
-
-  @Test
-  public void shouldNot_publishEventMessage_WhenFlagIsFalse() {
-    when(this.eventMessagingPropertiesConfig.isMessagingEnabled()).thenReturn(false);
-
-    this.sut.publishMessage(SCHEMA_ID, EVENT_TYPE);
-
-    verify(this.driver, never()).publish(any(OqmMessage.class), any(), any());
-  }
-
-  @Test
-  public void should_publishEventMessage_WhenFlagIsTrue() {
-    when(this.eventMessagingPropertiesConfig.isMessagingEnabled()).thenReturn(true);
-    when(this.tenantInfo.getName()).thenReturn(TENANT_NAME);
-    HashMap<String, String> headersMap = new HashMap<>();
-    headersMap.put(DpsHeaders.DATA_PARTITION_ID, DATA_PARTITION_ID);
-    headersMap.put(DpsHeaders.CORRELATION_ID, CORRELATION_ID);
-    when(this.headers.getHeaders()).thenReturn(headersMap);
-
-    this.sut.publishMessage(SCHEMA_ID, EVENT_TYPE);
-
-    verify(this.driver, times(1)).publish(any(OqmMessage.class), any(), any());
-  }
-}
diff --git a/provider/schema-gc/src/test/java/org/opengroup/osdu/schema/impl/schemainfostore/OsmAuthorityStoreTest.java b/provider/schema-gc/src/test/java/org/opengroup/osdu/schema/impl/schemainfostore/OsmAuthorityStoreTest.java
deleted file mode 100644
index e47badef0..000000000
--- a/provider/schema-gc/src/test/java/org/opengroup/osdu/schema/impl/schemainfostore/OsmAuthorityStoreTest.java
+++ /dev/null
@@ -1,216 +0,0 @@
-package org.opengroup.osdu.schema.impl.schemainfostore;
-
-import org.apache.logging.log4j.util.Strings;
-import org.junit.Before;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.mockito.InjectMocks;
-import org.mockito.Mock;
-import org.mockito.Mockito;
-import org.opengroup.osdu.core.common.logging.JaxRsDpsLog;
-import org.opengroup.osdu.core.common.model.http.DpsHeaders;
-import org.opengroup.osdu.core.common.model.tenant.TenantInfo;
-import org.opengroup.osdu.core.common.provider.interfaces.ITenantFactory;
-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.service.Context;
-import org.opengroup.osdu.core.gcp.osm.translate.TranslatorRuntimeException;
-import org.opengroup.osdu.schema.configuration.PropertiesConfiguration;
-import org.opengroup.osdu.schema.constants.SchemaConstants;
-import org.opengroup.osdu.schema.destination.provider.impl.OsmDestinationProvider;
-import org.opengroup.osdu.schema.exceptions.ApplicationException;
-import org.opengroup.osdu.schema.exceptions.BadRequestException;
-import org.opengroup.osdu.schema.exceptions.NotFoundException;
-import org.opengroup.osdu.schema.model.Authority;
-import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
-import org.springframework.test.util.ReflectionTestUtils;
-
-import java.util.Optional;
-
-import static org.junit.Assert.*;
-import static org.mockito.ArgumentMatchers.any;
-import static org.mockito.Mockito.when;
-
-@RunWith(SpringJUnit4ClassRunner.class)
-public class OsmAuthorityStoreTest {
-
-    private static final String COMMON_TENANT_ID = "common";
-    private static final String AUTHORITY_ID = "testAuthorityId";
-    private static final Destination DESTINATION = Destination.builder()
-            .partitionId("partitionId")
-            .namespace(new Namespace("namespace"))
-            .kind(new Kind("testKind"))
-            .build();
-
-    @InjectMocks
-    OsmAuthorityStore mockOsmAuthorityStore;
-
-    @Mock
-    Authority mockAuthority;
-
-    @Mock
-    DpsHeaders headers;
-
-    @Mock
-    ITenantFactory tenantFactory;
-
-    @Mock
-    TenantInfo tenantInfo;
-
-    @Mock
-    Context context;
-
-    @Mock
-    OsmDestinationProvider destinationProvider;
-
-    @Mock
-    JaxRsDpsLog log;
-
-    @Mock
-    PropertiesConfiguration configuration;
-
-
-    @Before
-    public void setUp() {
-        when(configuration.getSharedTenantName()).thenReturn(COMMON_TENANT_ID);
-        ReflectionTestUtils.setField(mockOsmAuthorityStore, "configuration", configuration);
-        when(headers.getPartitionId()).thenReturn("test");
-        when(tenantFactory.getTenantInfo("test")).thenReturn(tenantInfo);
-
-        when(mockAuthority.getAuthorityId()).thenReturn("os");
-
-        when(destinationProvider.getDestination(any(), any(), any())).thenReturn(DESTINATION);
-
-        when(context.getOne(any())).thenReturn(null);
-        when(context.findOne(any())).thenReturn(Optional.of(mockAuthority));
-        when(context.createAndGet(any(), any())).thenReturn(mockAuthority);
-    }
-
-    @Test
-    public void testGetAuthority() throws NotFoundException, ApplicationException {
-        assertNotNull(mockOsmAuthorityStore.get(AUTHORITY_ID));
-    }
-
-    @Test
-    public void testGetAuthority_SystemSchemas() throws NotFoundException, ApplicationException {
-        when(headers.getPartitionId()).thenReturn(COMMON_TENANT_ID);
-        when(tenantFactory.getTenantInfo(COMMON_TENANT_ID)).thenReturn(tenantInfo);
-        assertNotNull(mockOsmAuthorityStore.getSystemAuthority(AUTHORITY_ID));
-    }
-
-    @Test
-    public void testGetAuthority_NotFoundException() {
-        when(context.findOne(any())).thenReturn(Optional.empty());
-        try {
-            mockOsmAuthorityStore.get(Strings.EMPTY);
-            fail("Should not succeed");
-        } catch (NotFoundException e) {
-            assertEquals("bad input parameter", e.getMessage());
-
-        } catch (Exception e) {
-            fail("Should not get different exception");
-        }
-    }
-
-    @Test
-    public void testGetAuthority_NotFoundException_SystemSchemas() {
-        when(context.findOne(any())).thenReturn(Optional.empty());
-        try {
-            when(headers.getPartitionId()).thenReturn(COMMON_TENANT_ID);
-            when(tenantFactory.getTenantInfo(COMMON_TENANT_ID)).thenReturn(tenantInfo);
-            mockOsmAuthorityStore.get(Strings.EMPTY);
-            fail("Should not succeed");
-        } catch (NotFoundException e) {
-            assertEquals("bad input parameter", e.getMessage());
-
-        } catch (Exception e) {
-            fail("Should not get different exception");
-        }
-    }
-
-    @Test
-    public void testCreateAuthority() throws NotFoundException, ApplicationException, BadRequestException {
-
-        assertNotNull(mockOsmAuthorityStore.create(mockAuthority));
-    }
-
-    @Test
-    public void testCreateAuthority_SystemSchemas() throws NotFoundException, ApplicationException, BadRequestException {
-        when(headers.getPartitionId()).thenReturn(COMMON_TENANT_ID);
-        when(tenantFactory.getTenantInfo(COMMON_TENANT_ID)).thenReturn(tenantInfo);
-
-        when(mockAuthority.getAuthorityId()).thenReturn("os");
-        assertNotNull(mockOsmAuthorityStore.createSystemAuthority(mockAuthority));
-    }
-
-    @Test
-    public void testCreateAuthority_BadRequestException()
-            throws NotFoundException, ApplicationException, BadRequestException {
-        mockOsmAuthorityStore = Mockito.spy(mockOsmAuthorityStore);
-        when(context.getOne(any())).thenReturn(mockAuthority);
-        try {
-            mockOsmAuthorityStore.create(mockAuthority);
-            fail("Should not succeed");
-        } catch (BadRequestException e) {
-            assertEquals("Authority already registered with Id: os", e.getMessage());
-
-        } catch (Exception e) {
-            fail("Should not get different exception");
-        }
-    }
-
-    @Test
-    public void testCreateAuthority_BadRequestException_SystemSchemas()
-            throws NotFoundException, ApplicationException, BadRequestException {
-        when(headers.getPartitionId()).thenReturn(COMMON_TENANT_ID);
-        mockOsmAuthorityStore = Mockito.spy(mockOsmAuthorityStore);
-        when(tenantFactory.getTenantInfo(COMMON_TENANT_ID)).thenReturn(tenantInfo);
-        when(context.getOne(any())).thenReturn(mockAuthority);
-        when(mockAuthority.getAuthorityId()).thenReturn("os");
-        try {
-            mockOsmAuthorityStore.createSystemAuthority(mockAuthority);
-            fail("Should not succeed");
-        } catch (BadRequestException e) {
-            assertEquals("Authority already registered with Id: os", e.getMessage());
-
-        } catch (Exception e) {
-            fail("Should not get different exception");
-        }
-    }
-
-    @Test
-    public void testCreateAuthority_ApplicationException()
-            throws NotFoundException, ApplicationException, BadRequestException {
-        mockOsmAuthorityStore = Mockito.spy(mockOsmAuthorityStore);
-        when(context.createAndGet(any(), any())).thenThrow(TranslatorRuntimeException.class);
-        try {
-            mockOsmAuthorityStore.create(mockAuthority);
-            fail("Should not succeed");
-        } catch (ApplicationException e) {
-            assertEquals(SchemaConstants.INVALID_INPUT, e.getMessage());
-
-        } catch (Exception e) {
-            fail("Should not get different exception");
-        }
-    }
-
-    @Test
-    public void testCreateAuthority_ApplicationException_SystemSchemas()
-            throws NotFoundException, ApplicationException, BadRequestException {
-        when(headers.getPartitionId()).thenReturn(COMMON_TENANT_ID);
-        mockOsmAuthorityStore = Mockito.spy(mockOsmAuthorityStore);
-        when(tenantFactory.getTenantInfo(COMMON_TENANT_ID)).thenReturn(tenantInfo);
-        when(context.createAndGet(any(), any())).thenThrow(TranslatorRuntimeException.class);
-        try {
-            mockOsmAuthorityStore.createSystemAuthority(mockAuthority);
-            fail("Should not succeed");
-        } catch (ApplicationException e) {
-            assertEquals(SchemaConstants.INVALID_INPUT, e.getMessage());
-
-        } catch (Exception e) {
-            fail("Should not get different exception");
-        }
-    }
-
-}
diff --git a/provider/schema-gc/src/test/java/org/opengroup/osdu/schema/impl/schemainfostore/OsmEntityTypeStoreTest.java b/provider/schema-gc/src/test/java/org/opengroup/osdu/schema/impl/schemainfostore/OsmEntityTypeStoreTest.java
deleted file mode 100644
index aba02e7d6..000000000
--- a/provider/schema-gc/src/test/java/org/opengroup/osdu/schema/impl/schemainfostore/OsmEntityTypeStoreTest.java
+++ /dev/null
@@ -1,211 +0,0 @@
-package org.opengroup.osdu.schema.impl.schemainfostore;
-
-import org.junit.Before;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.mockito.InjectMocks;
-import org.mockito.Mock;
-import org.opengroup.osdu.core.common.logging.JaxRsDpsLog;
-import org.opengroup.osdu.core.common.model.http.DpsHeaders;
-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.service.Context;
-import org.opengroup.osdu.core.gcp.osm.translate.TranslatorRuntimeException;
-import org.opengroup.osdu.schema.configuration.PropertiesConfiguration;
-import org.opengroup.osdu.schema.destination.provider.impl.OsmDestinationProvider;
-import org.opengroup.osdu.schema.exceptions.ApplicationException;
-import org.opengroup.osdu.schema.exceptions.BadRequestException;
-import org.opengroup.osdu.schema.exceptions.NotFoundException;
-import org.opengroup.osdu.schema.model.EntityType;
-import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
-import org.springframework.test.util.ReflectionTestUtils;
-
-import java.util.Optional;
-
-import static org.junit.Assert.*;
-import static org.mockito.ArgumentMatchers.any;
-import static org.mockito.Mockito.when;
-import static org.opengroup.osdu.schema.constants.SchemaConstants.INVALID_INPUT;
-
-@RunWith(SpringJUnit4ClassRunner.class)
-public class OsmEntityTypeStoreTest {
-
-    @InjectMocks
-    OsmEntityTypeStore osmEntityTypeStore;
-
-    @Mock
-    EntityType mockEntityType;
-
-    @Mock
-    DpsHeaders headers;
-
-    @Mock
-    OsmDestinationProvider destinationProvider;
-
-    @Mock
-    TenantInfo tenantInfo;
-
-    @Mock
-    Context context;
-
-    @Mock
-    JaxRsDpsLog log;
-
-    @Mock
-    PropertiesConfiguration configuration;
-
-    private static final String COMMON_TENANT_ID = "common";
-    private static final Destination DESTINATION = Destination.builder()
-            .partitionId("partitionId")
-            .namespace(new Namespace("namespace"))
-            .kind(new Kind("testKind"))
-            .build();
-
-    @Before
-    public void setUp() throws BadRequestException {
-        when(configuration.getSharedTenantName()).thenReturn(COMMON_TENANT_ID);
-        ReflectionTestUtils.setField(osmEntityTypeStore, "configuration", configuration);
-        when(headers.getPartitionId()).thenReturn("partitionId");
-        when(destinationProvider.getDestination(any(), any(), any())).thenReturn(DESTINATION);
-        when(context.getOne(any())).thenReturn(null);
-        when(context.createAndGet(any(), any())).thenReturn(mockEntityType);
-        when(context.findOne(any())).thenReturn(Optional.ofNullable(mockEntityType));
-    }
-
-    @Test
-    public void testGet() throws NotFoundException, ApplicationException {
-        System.out.println("testGet");
-        String entityId = "testEntityId";
-        assertNotNull(osmEntityTypeStore.get(entityId));
-    }
-
-    @Test
-    public void testGet_SystemSchemas() throws NotFoundException, ApplicationException {
-        System.out.println("testGet");
-        String entityId = "testEntityId";
-
-        assertNotNull(osmEntityTypeStore.getSystemEntity(entityId));
-    }
-
-    @Test
-    public void testGet_NotFoundException() {
-        System.out.println("testGet_NotFoundException");
-        String entityId = "";
-
-        when(context.findOne(any())).thenReturn(Optional.empty());
-
-        try {
-            osmEntityTypeStore.get(entityId);
-            fail("Should not succeed");
-        } catch (NotFoundException e) {
-            assertEquals("bad input parameter", e.getMessage());
-        } catch (Exception e) {
-            fail("Should not get different exception");
-        }
-    }
-
-    @Test
-    public void testGet_NotFoundException_SystemSchemas() {
-        System.out.println("testGet_NotFoundException");
-        String entityId = "";
-
-        when(context.findOne(any())).thenReturn(Optional.empty());
-
-        try {
-            osmEntityTypeStore.getSystemEntity(entityId);
-            fail("Should not succeed");
-        } catch (NotFoundException e) {
-            assertEquals("bad input parameter", e.getMessage());
-
-        } catch (Exception e) {
-            fail("Should not get different exception");
-        }
-    }
-
-    @Test
-    public void testCreate() throws NotFoundException, ApplicationException, BadRequestException {
-        System.out.println("testCreate");
-        when(mockEntityType.getEntityTypeId()).thenReturn("wellbore");
-        assertNotNull(osmEntityTypeStore.create(mockEntityType));
-    }
-
-    @Test
-    public void testCreate_SystemSchemas() throws NotFoundException, ApplicationException, BadRequestException {
-        System.out.println("testCreate");
-        when(headers.getPartitionId()).thenReturn(COMMON_TENANT_ID);
-        when(mockEntityType.getEntityTypeId()).thenReturn("wellbore");
-
-        assertNotNull(osmEntityTypeStore.createSystemEntity(mockEntityType));
-    }
-
-    @Test
-    public void testCreate_BadRequestException() throws NotFoundException, ApplicationException, BadRequestException {
-        System.out.println("testCreate_BadRequestException");
-
-        when(context.getOne(any())).thenReturn(mockEntityType);
-        when(mockEntityType.getEntityTypeId()).thenReturn("wks");
-
-        try {
-            osmEntityTypeStore.create(mockEntityType);
-            fail("Should not succeed");
-        } catch (BadRequestException e) {
-            assertEquals("EntityType already registered with Id: wks", e.getMessage());
-        } catch (Exception e) {
-            fail("Should not get different exception");
-        }
-    }
-
-    @Test
-    public void testCreate_BadRequestException_SystemSchemas() throws NotFoundException, ApplicationException, BadRequestException {
-        System.out.println("testCreate_BadRequestException");
-
-        when(context.getOne(any())).thenReturn(mockEntityType);
-        when(mockEntityType.getEntityTypeId()).thenReturn("wks");
-
-        try {
-            osmEntityTypeStore.createSystemEntity(mockEntityType);
-            fail("Should not succeed");
-        } catch (BadRequestException e) {
-            assertEquals("EntityType already registered with Id: wks", e.getMessage());
-
-        } catch (Exception e) {
-            fail("Should not get different exception");
-        }
-    }
-
-    @Test
-    public void testCreate_ApplicationException() throws NotFoundException, ApplicationException, BadRequestException {
-        System.out.println("testCreate_ApplicationException");
-
-        when(context.createAndGet(any(), any())).thenThrow(TranslatorRuntimeException.class);
-
-        try {
-            osmEntityTypeStore.create(mockEntityType);
-            fail("Should not succeed");
-        } catch (ApplicationException e) {
-            assertEquals(INVALID_INPUT, e.getMessage());
-
-        } catch (Exception e) {
-            fail("Should not get different exception");
-        }
-    }
-
-    @Test
-    public void testCreate_ApplicationException_SystemSchemas() throws NotFoundException, ApplicationException, BadRequestException {
-        System.out.println("testCreate_ApplicationException");
-
-        when(context.createAndGet(any(), any())).thenThrow(TranslatorRuntimeException.class);
-
-        try {
-            osmEntityTypeStore.createSystemEntity(mockEntityType);
-            fail("Should not succeed");
-        } catch (ApplicationException e) {
-            assertEquals(INVALID_INPUT, e.getMessage());
-
-        } catch (Exception e) {
-            fail("Should not get different exception");
-        }
-    }
-}
diff --git a/provider/schema-gc/src/test/java/org/opengroup/osdu/schema/impl/schemainfostore/OsmSchemaInfoStoreTest.java b/provider/schema-gc/src/test/java/org/opengroup/osdu/schema/impl/schemainfostore/OsmSchemaInfoStoreTest.java
deleted file mode 100644
index 8f7568457..000000000
--- a/provider/schema-gc/src/test/java/org/opengroup/osdu/schema/impl/schemainfostore/OsmSchemaInfoStoreTest.java
+++ /dev/null
@@ -1,582 +0,0 @@
-package org.opengroup.osdu.schema.impl.schemainfostore;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertTrue;
-import static org.junit.Assert.fail;
-import static org.mockito.ArgumentMatchers.any;
-import static org.mockito.Mockito.doThrow;
-import static org.mockito.Mockito.when;
-
-import java.util.Collections;
-import java.util.List;
-import java.util.Optional;
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Rule;
-import org.junit.Test;
-import org.junit.rules.ExpectedException;
-import org.junit.runner.RunWith;
-import org.mockito.InjectMocks;
-import org.mockito.Mock;
-import org.opengroup.osdu.core.common.logging.JaxRsDpsLog;
-import org.opengroup.osdu.core.common.model.http.AppException;
-import org.opengroup.osdu.core.common.model.http.DpsHeaders;
-import org.opengroup.osdu.core.common.model.tenant.TenantInfo;
-import org.opengroup.osdu.core.common.provider.interfaces.ITenantFactory;
-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.service.Context;
-import org.opengroup.osdu.core.gcp.osm.translate.TranslatorException;
-import org.opengroup.osdu.core.gcp.osm.translate.TranslatorRuntimeException;
-import org.opengroup.osdu.schema.configuration.PropertiesConfiguration;
-import org.opengroup.osdu.schema.constants.SchemaConstants;
-import org.opengroup.osdu.schema.destination.provider.impl.OsmDestinationProvider;
-import org.opengroup.osdu.schema.enums.SchemaScope;
-import org.opengroup.osdu.schema.enums.SchemaStatus;
-import org.opengroup.osdu.schema.exceptions.ApplicationException;
-import org.opengroup.osdu.schema.exceptions.BadRequestException;
-import org.opengroup.osdu.schema.exceptions.NotFoundException;
-import org.opengroup.osdu.schema.model.QueryParams;
-import org.opengroup.osdu.schema.model.SchemaIdentity;
-import org.opengroup.osdu.schema.model.SchemaInfo;
-import org.opengroup.osdu.schema.model.SchemaRequest;
-import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
-import org.springframework.test.util.ReflectionTestUtils;
-
-@RunWith(SpringJUnit4ClassRunner.class)
-public class OsmSchemaInfoStoreTest {
-
-    private static final String COMMON_TENANT_ID = "common";
-    private static final Destination DESTINATION = Destination.builder()
-            .partitionId("partitionId")
-            .namespace(new Namespace("namespace"))
-            .kind(new Kind("testKind"))
-            .build();
-
-    @InjectMocks
-    OsmSchemaInfoStore schemaInfoStore;
-
-    @Mock
-    DpsHeaders headers;
-
-    @Mock
-    TenantInfo tenantInfo;
-
-    @Mock
-    TenantInfo tenantInfoCommon;
-
-    @Mock
-    List<Object> queryResult;
-
-    @Mock
-    ITenantFactory tenantFactory;
-
-    @Mock
-    JaxRsDpsLog log;
-
-    @Mock
-    Context context;
-
-    @Mock
-    OsmDestinationProvider destinationProvider;
-
-    @Mock
-    PropertiesConfiguration configuration;
-
-
-    @Rule
-    public ExpectedException expectedException = ExpectedException.none();
-
-    @Before
-    public void setUp() {
-        when(configuration.getSharedTenantName()).thenReturn(COMMON_TENANT_ID);
-        ReflectionTestUtils.setField(schemaInfoStore, "configuration", configuration);
-        when(headers.getPartitionId()).thenReturn("tenant");
-        when(tenantFactory.getTenantInfo("tenant")).thenReturn(tenantInfo);
-
-        when(destinationProvider.getDestination(any(), any(), any())).thenReturn(DESTINATION);
-
-        when(context.getOne(any())).thenReturn(null);
-        when(context.findOne(any())).thenReturn(Optional.of(getMockSchemaObject_Published()));
-        when(context.createAndGet(any(), any())).thenReturn(getMockSchemaObject_Published());
-    }
-
-    @After
-    public void tearDown(){
-        queryResult.clear();
-    }
-
-    @Test
-    public void testGetLatestMinorVersion_ReturnNull() throws NotFoundException, ApplicationException {
-        assertEquals("", schemaInfoStore.getLatestMinorVerSchema(getMockSchemaInfo()));
-    }
-
-    @Test
-    public void testGetSchemaInfo_NotEmptyEntity() throws NotFoundException, ApplicationException {
-        String schemaId = "schemaId";
-        this.setUpMocks("test", schemaId);
-        SchemaInfo schemaInfo = schemaInfoStore.getSchemaInfo(schemaId);
-        assertEquals(SchemaStatus.PUBLISHED, schemaInfo.getStatus());
-    }
-
-    @Test
-    public void testGetSchemaInfo_NotEmptyEntity_SystemSchemas() throws NotFoundException, ApplicationException {
-        String schemaId = "schemaId";
-        this.setUpMocks(COMMON_TENANT_ID, schemaId);
-        SchemaInfo schemaInfo = schemaInfoStore.getSystemSchemaInfo(schemaId);
-        assertEquals(SchemaStatus.PUBLISHED, schemaInfo.getStatus());
-    }
-
-    @Test
-    public void testGetSchemaInfo_EmptyEntity() throws NotFoundException, ApplicationException {
-
-        expectedException.expect(NotFoundException.class);
-        expectedException.expectMessage(SchemaConstants.SCHEMA_NOT_PRESENT);
-        String schemaId = "schemaId";
-        this.setUpMocks("test", schemaId);
-        when(context.findOne(any())).thenReturn(Optional.empty());
-        schemaInfoStore.getSchemaInfo(schemaId);
-    }
-
-    @Test
-    public void testGetSchemaInfo_EmptyEntity_SystemSchemas() throws NotFoundException, ApplicationException {
-        expectedException.expect(NotFoundException.class);
-        expectedException.expectMessage(SchemaConstants.SCHEMA_NOT_PRESENT);
-
-        String schemaId = "schemaId";
-        this.setUpMocks(COMMON_TENANT_ID, schemaId);
-
-        when(context.findOne(any())).thenReturn(Optional.empty());
-
-        schemaInfoStore.getSystemSchemaInfo(schemaId);
-    }
-
-    @Test
-    public void testCreateSchemaInfo_Positive() throws ApplicationException, BadRequestException {
-        this.setUpMocks("test", "os:wks:well.1.1.1");
-        when(headers.getUserEmail()).thenReturn("hmadhani@delfi.com");
-        assertNotNull(schemaInfoStore.createSchemaInfo(getMockSchemaObject_Published()));
-    }
-
-    @Test
-    public void testCreateSchemaInfo_Positive_SystemSchemas() throws ApplicationException, BadRequestException {
-
-        this.setUpMocks(COMMON_TENANT_ID, "os:wks:well.1.1.1");
-        when(headers.getUserEmail()).thenReturn("hmadhani@delfi.com");
-        assertNotNull(schemaInfoStore.createSystemSchemaInfo(getMockSchemaObject_Published()));
-    }
-
-    @Test
-    public void testIsUnique_True() throws ApplicationException {
-        String schemaId = "schemaId";
-        String tenantId = "tenant";
-        this.setUpMocksForMultiTenant_PositiveScenario(tenantId, COMMON_TENANT_ID, schemaId);
-        assertTrue(schemaInfoStore.isUnique(schemaId, tenantId));
-    }
-
-    @Test
-    public void testIsUnique_True_SystemSchemas() throws ApplicationException {
-        String schemaId = "schemaId";
-        String tenantId = "common";
-        this.setUpMocksForMultiTenant_PositiveScenario(tenantId, COMMON_TENANT_ID, schemaId);
-        assertTrue(schemaInfoStore.isUniqueSystemSchema(schemaId));
-    }
-
-    @Test
-    public void testIsUnique_False() throws ApplicationException {
-        String schemaId = "schemaId";
-        String tenantId = "tenant";
-        this.setUpMocksForMultiTenant_NegativeScenario(tenantId, COMMON_TENANT_ID, schemaId);
-        assertFalse(schemaInfoStore.isUnique(schemaId, tenantId));
-    }
-
-    @Test
-    public void testIsUnique_False_CommonTenant() throws ApplicationException {
-        String schemaId = "schemaId";
-        String tenantId = "common";
-        this.setUpMocksForMultiTenant_NegativeScenario(tenantId, COMMON_TENANT_ID, schemaId);
-        assertFalse(schemaInfoStore.isUnique(schemaId, tenantId));
-    }
-
-    @Test
-    public void testIsUnique_False_CommonTenant_SystemSchemas() throws ApplicationException {
-        String schemaId = "schemaId";
-        String tenantId = "common";
-        this.setUpMocksForMultiTenant_NegativeScenario(tenantId, COMMON_TENANT_ID, schemaId);
-        assertFalse(schemaInfoStore.isUniqueSystemSchema(schemaId));
-    }
-
-    @Test
-    public void testUpdateSchemaInfo() throws NotFoundException, ApplicationException, BadRequestException {
-        String tenantId = "test";
-        this.setUpMocks(tenantId, "os:wks:well.1.1.1");
-        when(headers.getUserEmail()).thenReturn("hmadhani@delfi.com");
-        when(context.upsertAndGet(any(), any())).thenReturn(getMockSchemaObject_Published());
-        assertNotNull(schemaInfoStore.updateSchemaInfo(getMockSchemaObject_Published()));
-    }
-
-    @Test
-    public void testUpdateSchemaInfo_SystemSchemas() throws NotFoundException, ApplicationException, BadRequestException {
-        this.setUpMocks(COMMON_TENANT_ID, "os:wks:well.1.1.1");
-        when(headers.getUserEmail()).thenReturn("hmadhani@delfi.com");
-        when(context.upsertAndGet(any(), any())).thenReturn(getMockSchemaObject_Published());
-        assertNotNull(schemaInfoStore.updateSystemSchemaInfo(getMockSchemaObject_Published()));
-    }
-
-    @Test
-    public void testCreateSchemaInfo_WithSupersededBy()
-            throws NotFoundException, ApplicationException, BadRequestException {
-        this.setUpMocks("test", "os:wks:well.1.1.1");
-        when(headers.getUserEmail()).thenReturn("hmadhani@delfi.com");
-        when(context.findOne(any())).thenReturn(Optional.of(getMockSchemaObject_SuperSededObject()));
-        assertNotNull(schemaInfoStore.createSchemaInfo(getMockSchemaObject_SuperSededBy()));
-    }
-
-    @Test
-    public void testCreateSchemaInfo_WithSupersededBy_SystemSchemas()
-            throws NotFoundException, ApplicationException, BadRequestException {
-        this.setUpMocks(COMMON_TENANT_ID, "os:wks:well.1.1.1");
-        when(headers.getUserEmail()).thenReturn("hmadhani@delfi.com");
-        when(context.findOne(any())).thenReturn(Optional.of(getMockSchemaObject_SuperSededObject()));
-        assertNotNull(schemaInfoStore.createSystemSchemaInfo(getMockSchemaObject_SuperSededBy()));
-    }
-
-    @Test
-    public void testUpdateSchemaInfo_SupersededByException()
-            throws NotFoundException, ApplicationException, BadRequestException {
-        when(context.findOne(any())).thenReturn(Optional.empty());
-        try {
-            this.setUpMocks("test", "os:wks:well.1.1.1");
-            schemaInfoStore.updateSchemaInfo(getMockSchemaObject_SuperSededBy());
-            fail("Should not succeed");
-        } catch (BadRequestException e) {
-            assertEquals("Invalid SuperSededBy id", e.getMessage());
-
-        } catch (Exception e) {
-            fail("Should not get different exception");
-        }
-    }
-
-    @Test
-    public void testUpdateSchemaInfo_SupersededByException_SystemSchemas()
-            throws NotFoundException, ApplicationException, BadRequestException {
-        when(context.findOne(any())).thenReturn(Optional.empty());
-        try {
-            this.setUpMocks(COMMON_TENANT_ID, "os:wks:well.1.1.1");
-            schemaInfoStore.updateSystemSchemaInfo(getMockSchemaObject_SuperSededBy());
-            fail("Should not succeed");
-        } catch (BadRequestException e) {
-            assertEquals("Invalid SuperSededBy id", e.getMessage());
-
-        } catch (Exception e) {
-            fail("Should not get different exception");
-        }
-    }
-
-    @Test
-    public void testUpdateInfo_SupersededByWithoutIdException()
-            throws NotFoundException, ApplicationException, BadRequestException {
-        this.setUpMocks("test", "os:wks:well.1.1.1");
-        SchemaRequest schemaRequest = getMockSchemaObject_SuperSededByWithoutId();
-        expectedException.expect(BadRequestException.class);
-        expectedException.expectMessage(SchemaConstants.INVALID_SUPERSEDEDBY_ID);
-
-        when(context.getOne(any())).thenReturn(null);
-
-        schemaInfoStore.updateSchemaInfo(schemaRequest);
-    }
-
-    @Test
-    public void testUpdateInfo_SupersededByWithoutIdException_SystemSchemas()
-            throws NotFoundException, ApplicationException, BadRequestException {
-        this.setUpMocks(COMMON_TENANT_ID, "os:wks:well.1.1.1");
-        SchemaRequest schemaRequest = getMockSchemaObject_SuperSededByWithoutId();
-        expectedException.expect(BadRequestException.class);
-        expectedException.expectMessage(SchemaConstants.INVALID_SUPERSEDEDBY_ID);
-        schemaInfoStore.updateSystemSchemaInfo(schemaRequest);
-    }
-
-    @Test
-    public void testCreateSchemaInfo_BadRequestException()
-            throws NotFoundException, ApplicationException, BadRequestException {
-
-        this.setUpMocks("test", "os:wks:well.1.1.1");
-        when(headers.getUserEmail()).thenReturn("dummy-user");
-        when(context.getOne(any())).thenReturn(getMockSchemaObject_Published());
-        try {
-            schemaInfoStore.createSchemaInfo(getMockSchemaObject_Published());
-            fail("Should not succeed");
-        } catch (BadRequestException e) {
-            assertEquals(SchemaConstants.SCHEMA_ID_EXISTS, e.getMessage());
-        } catch (Exception e) {
-            fail("Should not get different exception");
-        }
-    }
-
-    @Test
-    public void testCreateSchemaInfo_BadRequestException_SystemSchemas()
-            throws NotFoundException, ApplicationException, BadRequestException {
-
-        this.setUpMocks(COMMON_TENANT_ID, "os:wks:well.1.1.1");
-        when(headers.getUserEmail()).thenReturn("dummy-user");
-        when(context.getOne(any())).thenReturn(getMockSchemaObject_Published());
-        try {
-            schemaInfoStore.createSystemSchemaInfo(getMockSchemaObject_Published());
-            fail("Should not succeed");
-        } catch (BadRequestException e) {
-            assertEquals(SchemaConstants.SCHEMA_ID_EXISTS, e.getMessage());
-
-        } catch (Exception e) {
-            fail("Should not get different exception");
-        }
-    }
-
-    @Test
-    public void testCreateSchemaInfo_ApplicationException()
-            throws NotFoundException, ApplicationException, BadRequestException {
-        this.setUpMocks("test", "os:wks:well.1.1.1");
-        when(headers.getUserEmail()).thenReturn("dummy-user");
-        when(context.createAndGet(any(), any())).thenThrow(TranslatorRuntimeException.class);
-        try {
-            schemaInfoStore.createSchemaInfo(getMockSchemaObject_Published());
-            fail("Should not succeed");
-        } catch (ApplicationException e) {
-            assertEquals(SchemaConstants.SCHEMA_CREATION_FAILED_INVALID_OBJECT, e.getMessage());
-
-        } catch (Exception e) {
-            fail("Should not get different exception");
-        }
-    }
-
-    @Test
-    public void testCreateSchemaInfo_ApplicationException_SystemSchemas()
-            throws NotFoundException, ApplicationException, BadRequestException {
-        this.setUpMocks(COMMON_TENANT_ID, "os:wks:well.1.1.1");
-        when(headers.getUserEmail()).thenReturn("dummy-user");
-        when(context.createAndGet(any(), any())).thenThrow(TranslatorRuntimeException.class);
-        try {
-            schemaInfoStore.createSystemSchemaInfo(getMockSchemaObject_Published());
-            fail("Should not succeed");
-        } catch (ApplicationException e) {
-            assertEquals(SchemaConstants.SCHEMA_CREATION_FAILED_INVALID_OBJECT, e.getMessage());
-
-        } catch (Exception e) {
-            fail("Should not get different exception");
-        }
-    }
-
-    @Test
-    public void testUpdateSchemaInfo_ApplicationException()
-            throws NotFoundException, ApplicationException, BadRequestException {
-        this.setUpMocks("test", "os:wks:well.1.1.1");
-        when(headers.getUserEmail()).thenReturn("dummy-user");
-        when(context.upsertAndGet(any(), any())).thenThrow(TranslatorRuntimeException.class);
-        try {
-            schemaInfoStore.updateSchemaInfo(getMockSchemaObject_Published());
-            fail("Should not succeed");
-        } catch (ApplicationException e) {
-            assertEquals("Invalid object, update failed", e.getMessage());
-
-        } catch (Exception e) {
-            fail("Should not get different exception");
-        }
-    }
-
-    @Test
-    public void testUpdateSchemaInfo_ApplicationException_SystemSchemas()
-            throws NotFoundException, ApplicationException, BadRequestException {
-        this.setUpMocks(COMMON_TENANT_ID, "os:wks:well.1.1.1");
-        when(headers.getUserEmail()).thenReturn("dummy-user");
-        when(context.upsertAndGet(any(), any())).thenThrow(TranslatorRuntimeException.class);
-        try {
-            schemaInfoStore.updateSystemSchemaInfo(getMockSchemaObject_Published());
-            fail("Should not succeed");
-        } catch (ApplicationException e) {
-            assertEquals("Invalid object, update failed", e.getMessage());
-
-        } catch (Exception e) {
-            fail("Should not get different exception");
-        }
-    }
-
-    @Test
-    public void testGetLatestMinorVersion_Entity() throws NotFoundException, ApplicationException {
-        when(headers.getPartitionId()).thenReturn("test");
-        when(tenantFactory.getTenantInfo("test")).thenReturn(tenantInfo);
-        when(headers.getUserEmail()).thenReturn("hmadhani@delfi.com");
-        when(context.getResultsAsList(any())).thenReturn(Collections.singletonList(getMockSchemaObject_Published()));
-        assertEquals("{}", schemaInfoStore.getLatestMinorVerSchema(getMockSchemaInfo()));
-    }
-
-    @Test
-    public void testGetSchemaInfoList_withoutqueryparam()
-            throws NotFoundException, ApplicationException, BadRequestException {
-
-        when(headers.getPartitionId()).thenReturn("test");
-        when(tenantFactory.getTenantInfo("test")).thenReturn(tenantInfo);
-        when(tenantInfo.getName()).thenReturn("test");
-        when(context.getResultsAsList(any())).thenReturn(Collections.singletonList(getMockSchemaObject_Published()));
-        assertEquals(1,
-                schemaInfoStore.getSchemaInfoList(QueryParams.builder().limit(100).offset(0).build(), "test").size());
-    }
-
-    @Test
-    public void testGetSchemaInfoList_withoutqueryparam_SystemSchemas()
-            throws NotFoundException, ApplicationException, BadRequestException {
-
-        when(headers.getPartitionId()).thenReturn(COMMON_TENANT_ID);
-        when(tenantFactory.getTenantInfo(COMMON_TENANT_ID)).thenReturn(tenantInfo);
-        when(tenantInfo.getName()).thenReturn(COMMON_TENANT_ID);
-        when(context.getResultsAsList(any())).thenReturn(Collections.singletonList(getMockSchemaObject_Published()));
-        assertEquals(1,
-                schemaInfoStore.getSystemSchemaInfoList(QueryParams.builder().limit(100).offset(0).build()).size());
-    }
-
-    @Test
-    public void testGetSchemaInfoList_withqueryparam()
-            throws NotFoundException, ApplicationException, BadRequestException {
-
-        when(headers.getPartitionId()).thenReturn("test");
-        when(tenantFactory.getTenantInfo("test")).thenReturn(tenantInfo);
-        when(tenantInfo.getName()).thenReturn("test");
-        when(context.getResultsAsList(any())).thenReturn(Collections.singletonList(getMockSchemaObject_Published()));
-        assertEquals(1,
-                schemaInfoStore.getSchemaInfoList(QueryParams.builder().authority("test").source("test")
-                        .entityType("test").schemaVersionMajor(1l).schemaVersionMinor(1l).scope("test").status("test")
-                        .latestVersion(false).limit(100).offset(0).build(), "test").size());
-    }
-
-    @Test
-    public void testCleanSchema_Success() throws ApplicationException {
-        String schemaId = "schemaId";
-        String dataPartitionId = "tenant1";
-        this.setUpMocks(dataPartitionId, schemaId);
-        assertEquals(true, schemaInfoStore.cleanSchema(schemaId));
-    }
-
-    @Test
-    public void testCleanSchema_Success_SystemSchemas() throws ApplicationException {
-        String schemaId = "schemaId";
-        this.setUpMocks(COMMON_TENANT_ID, schemaId);
-        assertEquals(true, schemaInfoStore.cleanSchema(schemaId));
-    }
-
-    @Test
-    public void testCleanSchema_Failure() throws ApplicationException, TranslatorException {
-        String schemaId = "schemaId";
-        String dataPartitionId = "tenant1";
-        this.setUpMocks(dataPartitionId, schemaId);
-        doThrow(TranslatorException.class).when(context).delete(any(), any(), any());
-        assertEquals(false, schemaInfoStore.cleanSchema(schemaId));
-    }
-
-    @Test
-    public void testCleanSchema_Failure_SystemSchemas() throws ApplicationException, TranslatorException {
-        String schemaId = "schemaId";
-        this.setUpMocks(COMMON_TENANT_ID, schemaId);
-        doThrow(TranslatorException.class).when(context).delete(any(), any(), any());
-        assertEquals(false, schemaInfoStore.cleanSchema(schemaId));
-    }
-
-    @Test
-    public void testMisconfiguredTenantInfoShouldThrowException() throws ApplicationException {
-        String schemaId = "schemaId";
-        String tenantId = "common";
-        this.setUpMocks(tenantId, schemaId);
-        when(context.getResultsAsList(any())).thenThrow(TranslatorRuntimeException.class);
-        expectedException.expect(AppException.class);
-        expectedException.expectMessage("Misconfigured tenant-info for common, not possible to check schema uniqueness");
-        schemaInfoStore.isUnique(schemaId, tenantId);
-    }
-
-    private SchemaRequest getMockSchemaObject_Published() {
-        return SchemaRequest.builder().schema("{}")
-                .schemaInfo(SchemaInfo.builder()
-                        .schemaIdentity(SchemaIdentity.builder().authority("os").source("wks").entityType("well")
-                                .schemaVersionMajor(1L).schemaVersionMinor(1L).schemaVersionPatch(1L)
-                                .id("os:wks:well.1.1.1").build())
-                        .scope(SchemaScope.SHARED).status(SchemaStatus.PUBLISHED).createdBy("subham").build())
-                .build();
-
-    }
-
-    private SchemaInfo getMockSchemaInfo() {
-        return SchemaInfo.builder()
-                .schemaIdentity(
-                        SchemaIdentity.builder().authority("os").source("wks").entityType("well").schemaVersionMajor(1L)
-                                .schemaVersionMinor(1L).schemaVersionPatch(1L).id("os:wks:well.1.1.1").build())
-                .scope(SchemaScope.SHARED).status(SchemaStatus.PUBLISHED).createdBy("subham")
-
-                .build();
-
-    }
-
-    private SchemaRequest getMockSchemaObject_SuperSededBy() {
-        return SchemaRequest.builder().schema("{}")
-                .schemaInfo(SchemaInfo.builder()
-                        .schemaIdentity(SchemaIdentity.builder().authority("os").source("wks").entityType("well")
-                                .schemaVersionMajor(1L).schemaVersionMinor(1L).schemaVersionPatch(1L)
-                                .id("os:wks:well.1.1.1").build())
-                        .scope(SchemaScope.SHARED).status(SchemaStatus.PUBLISHED).createdBy("subham")
-                        .supersededBy(SchemaIdentity.builder().authority("os").source("wks").entityType("well")
-                                .schemaVersionMajor(1L).schemaVersionMinor(2L).schemaVersionPatch(1L)
-                                .id("os:wks:well.1.2.1").build())
-                        .build())
-                .build();
-
-    }
-
-    private SchemaRequest getMockSchemaObject_SuperSededObject() {
-        return SchemaRequest.builder().schema("{}")
-                .schemaInfo(SchemaInfo.builder()
-                        .schemaIdentity(SchemaIdentity.builder().authority("os").source("wks").entityType("well")
-                                .schemaVersionMajor(1L).schemaVersionMinor(2L).schemaVersionPatch(1L)
-                                .id("os:wks:well.1.2.1").build())
-                        .scope(SchemaScope.SHARED).status(SchemaStatus.PUBLISHED).createdBy("subham")
-                        .build())
-                .build();
-
-    }
-
-    private SchemaRequest getMockSchemaObject_SuperSededByWithoutId() {
-        return SchemaRequest.builder().schema("{}")
-                .schemaInfo(SchemaInfo.builder()
-                        .schemaIdentity(SchemaIdentity.builder().authority("os").source("wks").entityType("well")
-                                .schemaVersionMajor(1L).schemaVersionMinor(1L).schemaVersionPatch(1L)
-                                .id("os:wks:well.1.1.1").build())
-                        .scope(SchemaScope.SHARED).status(SchemaStatus.DEVELOPMENT).createdBy("subham")
-                        .supersededBy(SchemaIdentity.builder().authority("os").source("wks").entityType("well")
-                                .schemaVersionMajor(1L).schemaVersionMinor(1L).schemaVersionPatch(1L).build())
-                        .build())
-                .build();
-
-    }
-
-    private void setUpMocks(String dataPartitionId, String schemaId) {
-        when(headers.getPartitionId()).thenReturn(dataPartitionId);
-        when(tenantFactory.getTenantInfo(dataPartitionId)).thenReturn(tenantInfo);
-    }
-
-    private void setUpMocksForMultiTenant_PositiveScenario(String privateTenant, String commonTenant, String schemaId) {
-        this.setUpMocksForMultipleTenants(privateTenant, commonTenant, schemaId);
-        when(context.getResultsAsList(any())).thenReturn(queryResult);
-        when(queryResult.isEmpty()).thenReturn(true);
-    }
-
-    private void setUpMocksForMultiTenant_NegativeScenario(String privateTenant, String commonTenant, String schemaId) {
-        this.setUpMocksForMultipleTenants(privateTenant, commonTenant, schemaId);
-        when(context.getResultsAsList(any())).thenReturn(queryResult);
-        when(queryResult.size()).thenReturn(2);
-    }
-
-    private void setUpMocksForMultipleTenants(String privateTenant, String commonTenant, String schemaId) {
-        when(configuration.getSharedTenantName()).thenReturn(commonTenant);
-        when(tenantFactory.getTenantInfo(privateTenant)).thenReturn(tenantInfo);
-        when(tenantFactory.getTenantInfo(commonTenant)).thenReturn(tenantInfoCommon);
-        when(tenantInfo.getName()).thenReturn(privateTenant);
-        when(tenantInfoCommon.getName()).thenReturn(commonTenant);
-    }
-}
diff --git a/provider/schema-gc/src/test/java/org/opengroup/osdu/schema/impl/schemainfostore/OsmSourceStoreTest.java b/provider/schema-gc/src/test/java/org/opengroup/osdu/schema/impl/schemainfostore/OsmSourceStoreTest.java
deleted file mode 100644
index ae497cdff..000000000
--- a/provider/schema-gc/src/test/java/org/opengroup/osdu/schema/impl/schemainfostore/OsmSourceStoreTest.java
+++ /dev/null
@@ -1,208 +0,0 @@
-package org.opengroup.osdu.schema.impl.schemainfostore;
-
-import org.apache.logging.log4j.util.Strings;
-import org.junit.Before;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.mockito.InjectMocks;
-import org.mockito.Mock;
-import org.mockito.Mockito;
-import org.opengroup.osdu.core.common.logging.JaxRsDpsLog;
-import org.opengroup.osdu.core.common.model.http.DpsHeaders;
-import org.opengroup.osdu.core.common.model.tenant.TenantInfo;
-import org.opengroup.osdu.core.common.provider.interfaces.ITenantFactory;
-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.service.Context;
-import org.opengroup.osdu.core.gcp.osm.translate.TranslatorRuntimeException;
-import org.opengroup.osdu.schema.configuration.PropertiesConfiguration;
-import org.opengroup.osdu.schema.constants.SchemaConstants;
-import org.opengroup.osdu.schema.destination.provider.impl.OsmDestinationProvider;
-import org.opengroup.osdu.schema.exceptions.ApplicationException;
-import org.opengroup.osdu.schema.exceptions.BadRequestException;
-import org.opengroup.osdu.schema.exceptions.NotFoundException;
-import org.opengroup.osdu.schema.model.Source;
-import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
-import org.springframework.test.util.ReflectionTestUtils;
-
-import java.util.Optional;
-
-import static org.junit.Assert.*;
-import static org.mockito.ArgumentMatchers.any;
-import static org.mockito.Mockito.when;
-
-@RunWith(SpringJUnit4ClassRunner.class)
-public class OsmSourceStoreTest {
-
-    private static final String SOURCE_ID = "sourceId";
-    private static final String COMMON_TENANT_ID = "common";
-    private static final Destination DESTINATION = Destination.builder()
-            .partitionId("partitionId")
-            .namespace(new Namespace("namespace"))
-            .kind(new Kind("testKind"))
-            .build();
-
-    @InjectMocks
-    OsmSourceStore osmSourceStore;
-
-    @Mock
-    Source mockSource;
-
-    @Mock
-    DpsHeaders headers;
-
-    @Mock
-    TenantInfo tenantInfo;
-
-    @Mock
-    ITenantFactory tenantFactory;
-
-    @Mock
-    JaxRsDpsLog log;
-
-    @Mock
-    Context context;
-
-    @Mock
-    OsmDestinationProvider destinationProvider;
-
-    @Mock
-    PropertiesConfiguration configuration;
-
-    @Before
-    public void setUp() {
-        when(configuration.getSharedTenantName()).thenReturn(COMMON_TENANT_ID);
-        ReflectionTestUtils.setField(osmSourceStore, "configuration", configuration);
-        Mockito.when(headers.getPartitionId()).thenReturn("test");
-        Mockito.when(tenantFactory.getTenantInfo("test")).thenReturn(tenantInfo);
-
-        Mockito.when(mockSource.getSourceId()).thenReturn("wks");
-
-        when(destinationProvider.getDestination(any(), any(), any())).thenReturn(DESTINATION);
-
-        when(context.getOne(any())).thenReturn(null);
-        when(context.findOne(any())).thenReturn(Optional.of(mockSource));
-        when(context.createAndGet(any(), any())).thenReturn(mockSource);
-    }
-
-    @Test
-    public void testGet() throws NotFoundException, ApplicationException {
-        assertNotNull(osmSourceStore.get(SOURCE_ID));
-    }
-
-    @Test
-    public void testGet_SystemSchemas() throws NotFoundException, ApplicationException {
-        Mockito.when(headers.getPartitionId()).thenReturn(COMMON_TENANT_ID);
-        Mockito.when(tenantFactory.getTenantInfo(COMMON_TENANT_ID)).thenReturn(tenantInfo);
-
-        assertNotNull(osmSourceStore.getSystemSource(SOURCE_ID));
-    }
-
-    @Test
-    public void testGet_NotFoundException() {
-        when(context.findOne(any())).thenReturn(Optional.empty());
-        try {
-            osmSourceStore.get(Strings.EMPTY);
-            fail("Should not succeed");
-        } catch (NotFoundException e) {
-            assertEquals("bad input parameter", e.getMessage());
-
-        } catch (Exception e) {
-            fail("Should not get different exception");
-        }
-    }
-
-    @Test
-    public void testGet_NotFoundException_SystemSchemas() {
-        when(context.findOne(any())).thenReturn(Optional.empty());
-        try {
-            when(headers.getPartitionId()).thenReturn(COMMON_TENANT_ID);
-            when(tenantFactory.getTenantInfo(COMMON_TENANT_ID)).thenReturn(tenantInfo);
-            osmSourceStore.getSystemSource(Strings.EMPTY);
-            fail("Should not succeed");
-        } catch (NotFoundException e) {
-            assertEquals("bad input parameter", e.getMessage());
-
-        } catch (Exception e) {
-            fail("Should not get different exception");
-        }
-    }
-
-    @Test
-    public void testCreate() throws NotFoundException, ApplicationException, BadRequestException {
-        assertNotNull(osmSourceStore.create(mockSource));
-    }
-
-    @Test
-    public void testCreate_SystemSchemas() throws NotFoundException, ApplicationException, BadRequestException {
-        Mockito.when(headers.getPartitionId()).thenReturn(COMMON_TENANT_ID);
-        Mockito.when(tenantFactory.getTenantInfo(COMMON_TENANT_ID)).thenReturn(tenantInfo);
-
-        assertNotNull(osmSourceStore.createSystemSource(mockSource));
-    }
-
-    @Test
-    public void testCreate_BadRequestException() throws NotFoundException, ApplicationException, BadRequestException {
-        osmSourceStore = Mockito.spy(osmSourceStore);
-        when(context.getOne(any())).thenReturn(mockSource);
-        try {
-            osmSourceStore.create(mockSource);
-            fail("Should not succeed");
-        } catch (BadRequestException e) {
-            assertEquals("Source already registered with Id: wks", e.getMessage());
-
-        } catch (Exception e) {
-            fail("Should not get different exception");
-        }
-    }
-
-    @Test
-    public void testCreate_BadRequestException_SystemSchemas() throws NotFoundException, ApplicationException, BadRequestException {
-        osmSourceStore = Mockito.spy(osmSourceStore);
-        Mockito.when(headers.getPartitionId()).thenReturn(COMMON_TENANT_ID);
-        Mockito.when(tenantFactory.getTenantInfo(COMMON_TENANT_ID)).thenReturn(tenantInfo);
-        when(context.getOne(any())).thenReturn(mockSource);
-        try {
-            osmSourceStore.createSystemSource(mockSource);
-            fail("Should not succeed");
-        } catch (BadRequestException e) {
-            assertEquals("Source already registered with Id: wks", e.getMessage());
-
-        } catch (Exception e) {
-            fail("Should not get different exception");
-        }
-    }
-
-    @Test
-    public void testCreate_ApplicationException() throws NotFoundException, ApplicationException, BadRequestException {
-        osmSourceStore = Mockito.spy(osmSourceStore);
-        when(context.createAndGet(any(), any())).thenThrow(TranslatorRuntimeException.class);
-        try {
-            osmSourceStore.create(mockSource);
-            fail("Should not succeed");
-        } catch (ApplicationException e) {
-            assertEquals(SchemaConstants.INVALID_INPUT, e.getMessage());
-
-        } catch (Exception e) {
-            fail("Should not get different exception");
-        }
-    }
-
-    @Test
-    public void testCreate_ApplicationException_SystemSchemas() throws NotFoundException, ApplicationException, BadRequestException {
-        osmSourceStore = Mockito.spy(osmSourceStore);
-        Mockito.when(headers.getPartitionId()).thenReturn(COMMON_TENANT_ID);
-        Mockito.when(tenantFactory.getTenantInfo(COMMON_TENANT_ID)).thenReturn(tenantInfo);
-        when(context.createAndGet(any(), any())).thenThrow(TranslatorRuntimeException.class);
-        try {
-            osmSourceStore.createSystemSource(mockSource);
-            fail("Should not succeed");
-        } catch (ApplicationException e) {
-            assertEquals(SchemaConstants.INVALID_INPUT, e.getMessage());
-
-        } catch (Exception e) {
-            fail("Should not get different exception");
-        }
-    }
-}
diff --git a/provider/schema-gc/src/test/java/org/opengroup/osdu/schema/impl/schemastore/ObmSchemaStoreTest.java b/provider/schema-gc/src/test/java/org/opengroup/osdu/schema/impl/schemastore/ObmSchemaStoreTest.java
deleted file mode 100644
index 8b2aabdc5..000000000
--- a/provider/schema-gc/src/test/java/org/opengroup/osdu/schema/impl/schemastore/ObmSchemaStoreTest.java
+++ /dev/null
@@ -1,218 +0,0 @@
-package org.opengroup.osdu.schema.impl.schemastore;
-
-import com.google.cloud.storage.StorageException;
-import org.junit.Assert;
-import org.junit.Before;
-import org.junit.Rule;
-import org.junit.Test;
-import org.junit.rules.ExpectedException;
-import org.junit.runner.RunWith;
-import org.mockito.InjectMocks;
-import org.mockito.Mock;
-import org.opengroup.osdu.core.common.logging.JaxRsDpsLog;
-import org.opengroup.osdu.core.common.model.http.DpsHeaders;
-import org.opengroup.osdu.core.common.model.tenant.TenantInfo;
-import org.opengroup.osdu.core.common.partition.PartitionPropertyResolver;
-import org.opengroup.osdu.core.common.provider.interfaces.ITenantFactory;
-import org.opengroup.osdu.core.gcp.obm.driver.Driver;
-import org.opengroup.osdu.core.gcp.obm.driver.ObmDriverRuntimeException;
-import org.opengroup.osdu.core.gcp.obm.model.Blob;
-import org.opengroup.osdu.core.gcp.obm.persistence.ObmDestination;
-import org.opengroup.osdu.schema.configuration.PartitionPropertyNames;
-import org.opengroup.osdu.schema.configuration.PropertiesConfiguration;
-import org.opengroup.osdu.schema.constants.SchemaConstants;
-import org.opengroup.osdu.schema.destination.provider.impl.ObmDestinationProvider;
-import org.opengroup.osdu.schema.exceptions.ApplicationException;
-import org.opengroup.osdu.schema.exceptions.NotFoundException;
-import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
-import org.springframework.test.util.ReflectionTestUtils;
-
-import static org.mockito.ArgumentMatchers.any;
-import static org.mockito.Mockito.when;
-
-@RunWith(SpringJUnit4ClassRunner.class)
-public class ObmSchemaStoreTest {
-
-    private static final ObmDestination DESTINATION = ObmDestination.builder().partitionId("partitionId").build();
-    @InjectMocks
-    ObmSchemaStore schemaStore;
-
-    @Mock
-    private Driver driver;
-    @Mock
-    private Blob blob;
-    @Mock
-    private ObmDestinationProvider destinationProvider;
-    @Mock
-    DpsHeaders headers;
-    @Mock
-    ITenantFactory tenantFactory;
-    @Mock
-    TenantInfo TenantInfo;
-    @Mock
-    JaxRsDpsLog log;
-    @Mock
-    PropertiesConfiguration configuration;
-    @Mock
-    PartitionPropertyNames partitionPropertyNames;
-    @Mock
-    PartitionPropertyResolver partitionPropertyResolver;
-
-    @Rule
-    public ExpectedException expectedException = ExpectedException.none();
-
-    private static final String BUCKET = "test-schema";
-    private static final String dataPartitionId = "dataPartitionId";
-    private static final String FILE_PATH = "/test-folder/test-file";
-    private static final String CONTENT = "Hello World";
-    private static final String COMMON_TENANT_ID = "common";
-    private static final String COMMON_TENANT_BUCKET = "common-schema";
-
-    @Before
-    public void setUp() {
-        when(configuration.getSharedTenantName()).thenReturn(COMMON_TENANT_ID);
-    	 ReflectionTestUtils.setField(schemaStore, "configuration", configuration);
-
-         when(destinationProvider.getDestination(any())).thenReturn(DESTINATION);
-         when(driver.createAndGetBlob(any(), any(), any())).thenReturn(blob);
-    }
-
-    @Test
-    public void testCreateSchema() throws ApplicationException {
-
-        when(headers.getPartitionId()).thenReturn(dataPartitionId);
-        String filepath = FILE_PATH + SchemaConstants.JSON_EXTENSION;
-        when(tenantFactory.getTenantInfo(dataPartitionId)).thenReturn(TenantInfo);
-        when(TenantInfo.getProjectId()).thenReturn("test");
-        when(blob.getName()).thenReturn(BUCKET + filepath);
-        when(driver.createAndGetBlob(any(), any(), any())). thenReturn(blob);
-
-        String blobName = schemaStore.createSchema(FILE_PATH, CONTENT);
-
-        Assert.assertEquals((BUCKET + filepath), blobName);
-    }
-
-    @Test
-    public void testCreateSchema_SystemSchemas() throws ApplicationException {
-
-        when(headers.getPartitionId()).thenReturn(COMMON_TENANT_ID);
-        String filepath = FILE_PATH + SchemaConstants.JSON_EXTENSION;
-        when(tenantFactory.getTenantInfo(COMMON_TENANT_ID)).thenReturn(TenantInfo);
-        when(TenantInfo.getProjectId()).thenReturn(COMMON_TENANT_ID);
-        when(blob.getName()).thenReturn(COMMON_TENANT_BUCKET + filepath);
-        when(driver.createAndGetBlob(any(), any(), any())).thenReturn(blob);
-
-        String blobName = schemaStore.createSystemSchema(FILE_PATH, CONTENT);
-
-        Assert.assertEquals((COMMON_TENANT_BUCKET + filepath), blobName);
-    }
-
-    @Test
-    public void testCreateSchema_Failure() throws ApplicationException {
-        expectedException.expect(ApplicationException.class);
-        expectedException.expectMessage(SchemaConstants.INTERNAL_SERVER_ERROR);
-
-        when(headers.getPartitionId()).thenReturn(dataPartitionId);
-        String filepath = FILE_PATH + SchemaConstants.JSON_EXTENSION;
-        when(tenantFactory.getTenantInfo(dataPartitionId)).thenReturn(TenantInfo);
-        when(TenantInfo.getProjectId()).thenReturn("test");
-        when(driver.createAndGetBlob(any(), any(), any())).thenThrow(ObmDriverRuntimeException.class);
-
-        schemaStore.createSchema(FILE_PATH, CONTENT);
-    }
-
-    @Test
-    public void testCreateSchema_Failure_SystemSchemas() throws ApplicationException {
-        expectedException.expect(ApplicationException.class);
-        expectedException.expectMessage(SchemaConstants.INTERNAL_SERVER_ERROR);
-
-        when(headers.getPartitionId()).thenReturn(COMMON_TENANT_ID);
-        String filepath = FILE_PATH + SchemaConstants.JSON_EXTENSION;
-        when(tenantFactory.getTenantInfo(COMMON_TENANT_ID)).thenReturn(TenantInfo);
-        when(TenantInfo.getProjectId()).thenReturn(COMMON_TENANT_ID);
-        when(driver.createAndGetBlob(any(), any(), any())).thenThrow(ObmDriverRuntimeException.class);
-
-        schemaStore.createSystemSchema(FILE_PATH, CONTENT);
-    }
-
-    @Test
-    public void testGetSchema() throws ApplicationException, NotFoundException {
-        when(tenantFactory.getTenantInfo(dataPartitionId)).thenReturn(TenantInfo);
-        when(TenantInfo.getProjectId()).thenReturn("test");
-        when(driver.getBlobContent(any(), any(), any())).thenReturn(CONTENT.getBytes());
-        Assert.assertEquals(CONTENT, schemaStore.getSchema(dataPartitionId, FILE_PATH));
-    }
-
-    @Test
-    public void testGetSchema_SystemSchemas() throws ApplicationException, NotFoundException {
-        when(tenantFactory.getTenantInfo(COMMON_TENANT_ID)).thenReturn(TenantInfo);
-        when(TenantInfo.getProjectId()).thenReturn(COMMON_TENANT_ID);
-        when(driver.getBlobContent(any(), any(), any())).thenReturn(CONTENT.getBytes());
-        Assert.assertEquals(CONTENT, schemaStore.getSystemSchema(FILE_PATH));
-    }
-
-    @Test
-    public void testGetSchema_NotFound() throws ApplicationException, NotFoundException {
-
-        expectedException.expect(NotFoundException.class);
-        expectedException.expectMessage(SchemaConstants.SCHEMA_NOT_PRESENT);
-        String filePath = FILE_PATH + SchemaConstants.JSON_EXTENSION;
-        when(tenantFactory.getTenantInfo(dataPartitionId)).thenReturn(TenantInfo);
-        when(TenantInfo.getProjectId()).thenReturn("test");
-        when(driver.getBlobContent(BUCKET, filePath, DESTINATION)).thenReturn(null);
-        schemaStore.getSchema(dataPartitionId, FILE_PATH);
-    }
-
-    @Test
-    public void testGetSchema_NotFound_StorageException() throws ApplicationException, NotFoundException {
-
-        expectedException.expect(NotFoundException.class);
-        expectedException.expectMessage(SchemaConstants.SCHEMA_NOT_PRESENT);
-        String filePath = FILE_PATH + SchemaConstants.JSON_EXTENSION;
-        ObmDriverRuntimeException obmDriverRuntimeException = new ObmDriverRuntimeException(new StorageException(404, "test"));
-
-        when(tenantFactory.getTenantInfo(dataPartitionId)).thenReturn(TenantInfo);
-        when(TenantInfo.getProjectId()).thenReturn("test");
-        when(driver.getBlobContent(BUCKET, filePath, DESTINATION)).thenThrow(obmDriverRuntimeException);
-        schemaStore.getSchema(dataPartitionId, FILE_PATH);
-    }
-
-    @Test
-    public void testGetSchema_NotFound_SystemSchemas() throws ApplicationException, NotFoundException {
-        expectedException.expect(NotFoundException.class);
-        expectedException.expectMessage(SchemaConstants.SCHEMA_NOT_PRESENT);
-
-        when(tenantFactory.getTenantInfo(COMMON_TENANT_ID)).thenReturn(TenantInfo);
-        when(TenantInfo.getProjectId()).thenReturn(COMMON_TENANT_ID);
-        when(driver.getBlobContent(any(), any(), any())).thenReturn(null);
-        schemaStore.getSystemSchema(FILE_PATH);
-    }
-
-    @Test
-    public void testDeleteSchema() throws ApplicationException {
-
-        when(headers.getPartitionId()).thenReturn(dataPartitionId);
-        String filepath = FILE_PATH + SchemaConstants.JSON_EXTENSION;
-        when(tenantFactory.getTenantInfo(dataPartitionId)).thenReturn(TenantInfo);
-        when(TenantInfo.getProjectId()).thenReturn("test");
-        when(driver.deleteBlob(any(), any(), any())).thenReturn(true);
-
-        Boolean result = schemaStore.cleanSchemaProject(FILE_PATH);
-
-        Assert.assertEquals(true, result);
-    }
-
-    @Test
-    public void testDeleteSchema_SystemSchemas() throws ApplicationException {
-
-        when(headers.getPartitionId()).thenReturn(COMMON_TENANT_ID);
-        when(tenantFactory.getTenantInfo(COMMON_TENANT_ID)).thenReturn(TenantInfo);
-        when(TenantInfo.getProjectId()).thenReturn(COMMON_TENANT_ID);
-        when(driver.deleteBlob(any(), any(), any())).thenReturn(true);
-
-        Boolean result = schemaStore.cleanSystemSchemaProject(FILE_PATH);
-
-        Assert.assertEquals(true, result);
-    }
-
-}
diff --git a/provider/schema-gc/src/test/resources/application.properties b/provider/schema-gc/src/test/resources/application.properties
deleted file mode 100644
index e69de29bb..000000000
diff --git a/provider/schema-gc/src/test/resources/logback-test.xml b/provider/schema-gc/src/test/resources/logback-test.xml
deleted file mode 100644
index cb0f072e1..000000000
--- a/provider/schema-gc/src/test/resources/logback-test.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<configuration>
-    <include resource="org/springframework/boot/logging/logback/base.xml" />
-    <logger name="org.springframework" level="WARN"/>
-</configuration>
diff --git a/provider/schema-gc/src/test/resources/mockito-extensions/org.mockito.plugins.MockMaker b/provider/schema-gc/src/test/resources/mockito-extensions/org.mockito.plugins.MockMaker
deleted file mode 100644
index ca6ee9cea..000000000
--- a/provider/schema-gc/src/test/resources/mockito-extensions/org.mockito.plugins.MockMaker
+++ /dev/null
@@ -1 +0,0 @@
-mock-maker-inline
\ No newline at end of file
diff --git a/schema-core-plus/pom.xml b/schema-core-plus/pom.xml
index 09f713456..a6b781667 100644
--- a/schema-core-plus/pom.xml
+++ b/schema-core-plus/pom.xml
@@ -128,7 +128,7 @@
 		<dependency>
 			<groupId>org.opengroup.osdu</groupId>
 			<artifactId>os-osm-core</artifactId>
-			<version>0.25.0-rc2</version>
+			<version>0.27.3</version>
 			<exclusions>
 				<exclusion>
 					<groupId>org.opengroup.osdu</groupId>
@@ -166,20 +166,16 @@
 			<artifactId>spring-boot-starter-actuator</artifactId>
 		</dependency>
 		<dependency>
-			<groupId>jakarta.inject</groupId>
-			<artifactId>jakarta.inject-api</artifactId>
-			<version>2.0.1</version>
+			<groupId>jakarta.json</groupId>
+			<artifactId>jakarta.json-api</artifactId>
+			<version>2.1.3</version>
 		</dependency>
 		<dependency>
-            <groupId>jakarta.json</groupId>
-            <artifactId>jakarta.json-api</artifactId>
-            <version>2.0.1</version>
-        </dependency>
-        <dependency>
-			<groupId>org.glassfish</groupId>
-			<artifactId>jakarta.json</artifactId>
-			<version>2.0.1</version>
+			<groupId>org.eclipse.parsson</groupId>
+			<artifactId>parsson</artifactId>
+			<version>1.1.6</version>
 		</dependency>
+
 	</dependencies>
 
 	<build>
diff --git a/schema-core-plus/src/main/java/org/opengroup/osdu/schema/impl/schemainfostore/OsmAuthorityStore.java b/schema-core-plus/src/main/java/org/opengroup/osdu/schema/impl/schemainfostore/OsmAuthorityStore.java
index 5f8508170..ccd666dfe 100644
--- a/schema-core-plus/src/main/java/org/opengroup/osdu/schema/impl/schemainfostore/OsmAuthorityStore.java
+++ b/schema-core-plus/src/main/java/org/opengroup/osdu/schema/impl/schemainfostore/OsmAuthorityStore.java
@@ -91,7 +91,7 @@ public class OsmAuthorityStore implements IAuthorityStore {
 
     Authority entityFromDb;
     try {
-      entityFromDb = context.createAndGet(authority, tenantDestination);
+      entityFromDb = context.createAndGet(tenantDestination, authority);
     } catch (TranslatorRuntimeException ex) {
       log.error(MessageFormat.format(SchemaConstants.OBJECT_INVALID, ex.getMessage()));
       throw new ApplicationException(SchemaConstants.INVALID_INPUT);
@@ -108,7 +108,7 @@ public class OsmAuthorityStore implements IAuthorityStore {
 
     Authority entityFromDb;
     try {
-      entityFromDb = context.createAndGet(authority, systemDestination);
+      entityFromDb = context.createAndGet(systemDestination, authority);
     } catch (TranslatorRuntimeException ex) {
       log.error(MessageFormat.format(SchemaConstants.OBJECT_INVALID, ex.getMessage()));
       throw new ApplicationException(SchemaConstants.INVALID_INPUT);
diff --git a/schema-core-plus/src/main/java/org/opengroup/osdu/schema/impl/schemainfostore/OsmEntityTypeStore.java b/schema-core-plus/src/main/java/org/opengroup/osdu/schema/impl/schemainfostore/OsmEntityTypeStore.java
index 094a4e021..9341faf16 100644
--- a/schema-core-plus/src/main/java/org/opengroup/osdu/schema/impl/schemainfostore/OsmEntityTypeStore.java
+++ b/schema-core-plus/src/main/java/org/opengroup/osdu/schema/impl/schemainfostore/OsmEntityTypeStore.java
@@ -99,8 +99,7 @@ public class OsmEntityTypeStore implements IEntityTypeStore {
 
     EntityType entityFromDb;
     try {
-      entityFromDb = context.createAndGet(entityType,
-          getPrivateTenantDestination(this.headers.getPartitionId()));
+      entityFromDb = context.createAndGet(getPrivateTenantDestination(this.headers.getPartitionId()), entityType);
     } catch (TranslatorRuntimeException ex) {
       log.error(MessageFormat.format(SchemaConstants.OBJECT_INVALID, ex.getMessage()));
       throw new ApplicationException(SchemaConstants.INVALID_INPUT);
@@ -125,7 +124,7 @@ public class OsmEntityTypeStore implements IEntityTypeStore {
 
     EntityType entityFromDb;
     try {
-      entityFromDb = context.createAndGet(entityType, systemDestination);
+      entityFromDb = context.createAndGet(systemDestination, entityType);
     } catch (TranslatorRuntimeException ex) {
       log.error(MessageFormat.format(SchemaConstants.OBJECT_INVALID, ex.getMessage()));
       throw new ApplicationException(SchemaConstants.INVALID_INPUT);
diff --git a/schema-core-plus/src/main/java/org/opengroup/osdu/schema/impl/schemainfostore/OsmSchemaInfoStore.java b/schema-core-plus/src/main/java/org/opengroup/osdu/schema/impl/schemainfostore/OsmSchemaInfoStore.java
index 74ac091e1..a46258eb9 100644
--- a/schema-core-plus/src/main/java/org/opengroup/osdu/schema/impl/schemainfostore/OsmSchemaInfoStore.java
+++ b/schema-core-plus/src/main/java/org/opengroup/osdu/schema/impl/schemainfostore/OsmSchemaInfoStore.java
@@ -146,7 +146,7 @@ public class OsmSchemaInfoStore implements ISchemaInfoStore {
 
       SchemaRequest entityFromDb;
       try {
-        entityFromDb = context.createAndGet(schema, tenantDestination);
+        entityFromDb = context.createAndGet(tenantDestination, schema);
 
         log.info(SchemaConstants.SCHEMA_INFO_CREATED);
         return entityFromDb.getSchemaInfo();
@@ -178,7 +178,7 @@ public class OsmSchemaInfoStore implements ISchemaInfoStore {
 
       SchemaRequest entityFromDb;
       try {
-        entityFromDb = context.createAndGet(schema, systemDestination);
+        entityFromDb = context.createAndGet(systemDestination, schema);
       } catch (TranslatorRuntimeException ex) {
         log.error(MessageFormat.format(SchemaConstants.OBJECT_INVALID, ex.getMessage()), ex);
         throw new ApplicationException(SchemaConstants.INVALID_INPUT, ex);
@@ -204,9 +204,9 @@ public class OsmSchemaInfoStore implements ISchemaInfoStore {
     Destination tenantDestination = getPrivateTenantDestination(this.headers.getPartitionId());
     enrichSchemaInfo(schema.getSchemaInfo(), tenantDestination);
 
-    SchemaRequest entityFromDb = null;
+    SchemaRequest entityFromDb;
     try {
-      entityFromDb = context.upsertAndGet(schema, tenantDestination);
+      entityFromDb = context.upsertAndGet(tenantDestination, schema);
     } catch (TranslatorRuntimeException ex) {
       log.error(SchemaConstants.OBJECT_INVALID);
       throw new ApplicationException("Invalid object, update failed", ex);
@@ -229,9 +229,9 @@ public class OsmSchemaInfoStore implements ISchemaInfoStore {
     Destination systemDestination = getSystemDestination();
     enrichSchemaInfo(schema.getSchemaInfo(), systemDestination);
 
-    SchemaRequest entityFromDb = null;
+    SchemaRequest entityFromDb;
     try {
-      entityFromDb = context.upsertAndGet(schema, systemDestination);
+      entityFromDb = context.upsertAndGet(systemDestination, schema);
     } catch (TranslatorRuntimeException ex) {
       log.error(SchemaConstants.OBJECT_INVALID);
       throw new ApplicationException("Invalid object, update failed", ex);
diff --git a/schema-core-plus/src/main/java/org/opengroup/osdu/schema/impl/schemainfostore/OsmSourceStore.java b/schema-core-plus/src/main/java/org/opengroup/osdu/schema/impl/schemainfostore/OsmSourceStore.java
index 5dca87277..6acec25ca 100644
--- a/schema-core-plus/src/main/java/org/opengroup/osdu/schema/impl/schemainfostore/OsmSourceStore.java
+++ b/schema-core-plus/src/main/java/org/opengroup/osdu/schema/impl/schemainfostore/OsmSourceStore.java
@@ -97,7 +97,7 @@ public class OsmSourceStore implements ISourceStore {
 
     Source entityFromDb;
     try {
-      entityFromDb = context.createAndGet(source, tenantDestination);
+      entityFromDb = context.createAndGet(tenantDestination, source);
     } catch (TranslatorRuntimeException ex) {
       log.error(MessageFormat.format(SchemaConstants.OBJECT_INVALID, ex.getMessage()));
       throw new ApplicationException(SchemaConstants.INVALID_INPUT);
@@ -121,7 +121,7 @@ public class OsmSourceStore implements ISourceStore {
 
     Source entityFromDb;
     try {
-      entityFromDb = context.createAndGet(source, systemDestination);
+      entityFromDb = context.createAndGet(systemDestination, source);
     } catch (TranslatorRuntimeException ex) {
       log.error(MessageFormat.format(SchemaConstants.OBJECT_INVALID, ex.getMessage()));
       throw new ApplicationException(SchemaConstants.INVALID_INPUT);
-- 
GitLab