diff --git a/indexer-core/pom.xml b/indexer-core/pom.xml
index cc71ba37027e4f70e99847314d7884f0d441d314..a7372be4e07f70fc6312a0ab25a63939510f897b 100644
--- a/indexer-core/pom.xml
+++ b/indexer-core/pom.xml
@@ -20,11 +20,6 @@
 			<artifactId>os-core-common</artifactId>
 			<version>0.0.9-SNAPSHOT</version>
 		</dependency>
-		<dependency>
-			<groupId>org.opengroup.osdu</groupId>
-			<artifactId>indexer-search-core-lib</artifactId>
-			<version>1.0.23-SNAPSHOT</version>
-		</dependency>
 
 		<!-- spring boot dependencies -->
 		<dependency>
diff --git a/indexer-core/src/main/java/org/opengroup/osdu/indexer/api/HealthCheckApi.java b/indexer-core/src/main/java/org/opengroup/osdu/indexer/api/HealthCheckApi.java
index c6c7d1b8edc8c89279b610a330afdebbe2d55396..d19ac9d042d9727b901d0148b34ea4a0dc3289e4 100644
--- a/indexer-core/src/main/java/org/opengroup/osdu/indexer/api/HealthCheckApi.java
+++ b/indexer-core/src/main/java/org/opengroup/osdu/indexer/api/HealthCheckApi.java
@@ -15,7 +15,6 @@
 package org.opengroup.osdu.indexer.api;
 
 import lombok.extern.java.Log;
-import org.springframework.http.HttpHeaders;
 import org.springframework.http.HttpStatus;
 import org.springframework.http.ResponseEntity;
 import org.springframework.web.bind.annotation.GetMapping;
diff --git a/indexer-core/src/main/java/org/opengroup/osdu/indexer/api/RecordIndexerApi.java b/indexer-core/src/main/java/org/opengroup/osdu/indexer/api/RecordIndexerApi.java
index 560c5c7b6bf4477b24126e646e842ea8d6a892b8..cfa3f23415108db2b88c95386b28de7d7679789f 100644
--- a/indexer-core/src/main/java/org/opengroup/osdu/indexer/api/RecordIndexerApi.java
+++ b/indexer-core/src/main/java/org/opengroup/osdu/indexer/api/RecordIndexerApi.java
@@ -20,9 +20,9 @@ import com.google.gson.Gson;
 import com.google.gson.JsonParseException;
 import io.swagger.annotations.ApiOperation;
 import lombok.extern.java.Log;
-import org.opengroup.osdu.core.common.model.core.DpsHeaders;
-import org.opengroup.osdu.core.common.model.AppException;
-import org.opengroup.osdu.core.common.model.coreis.RecordChangedMessages;
+import org.opengroup.osdu.core.common.model.http.DpsHeaders;
+import org.opengroup.osdu.core.common.model.http.AppException;
+import org.opengroup.osdu.core.common.model.search.RecordChangedMessages;
 import org.opengroup.osdu.indexer.SwaggerDoc;
 import org.opengroup.osdu.core.common.model.indexer.JobStatus;
 import org.opengroup.osdu.core.common.model.indexer.RecordReindexRequest;
diff --git a/indexer-core/src/main/java/org/opengroup/osdu/indexer/api/ReindexApi.java b/indexer-core/src/main/java/org/opengroup/osdu/indexer/api/ReindexApi.java
index caeeac9c9c13c3c5b9ce76611c99df0bdb9e3bd0..5df99479e436aa6a66ef8dd803c549922cdf40ea 100644
--- a/indexer-core/src/main/java/org/opengroup/osdu/indexer/api/ReindexApi.java
+++ b/indexer-core/src/main/java/org/opengroup/osdu/indexer/api/ReindexApi.java
@@ -14,7 +14,7 @@
 
 package org.opengroup.osdu.indexer.api;
 
-import org.opengroup.osdu.core.common.model.coreis.SearchServiceRole;
+import org.opengroup.osdu.core.common.model.search.SearchServiceRole;
 import org.opengroup.osdu.indexer.logging.AuditLogger;
 import org.opengroup.osdu.core.common.model.indexer.RecordReindexRequest;
 import org.opengroup.osdu.indexer.service.ReindexService;
diff --git a/indexer-core/src/main/java/org/opengroup/osdu/indexer/auth/AuthorizationServiceEntitlements.java b/indexer-core/src/main/java/org/opengroup/osdu/indexer/auth/AuthorizationServiceEntitlements.java
index cf088510335316d24c74c0eb8c0c40b0e3d2f65c..16c040077195742fcaa0720851f9e47197432625 100644
--- a/indexer-core/src/main/java/org/opengroup/osdu/indexer/auth/AuthorizationServiceEntitlements.java
+++ b/indexer-core/src/main/java/org/opengroup/osdu/indexer/auth/AuthorizationServiceEntitlements.java
@@ -14,17 +14,17 @@
 
 package org.opengroup.osdu.indexer.auth;
 
-import org.opengroup.osdu.core.common.model.core.DpsHeaders;
-import org.opengroup.osdu.core.common.model.core.entitlements.EntitlementsException;
-import org.opengroup.osdu.core.common.model.core.entitlements.GroupInfo;
-import org.opengroup.osdu.core.common.model.core.entitlements.Groups;
-import org.opengroup.osdu.core.common.model.AppException;
-import org.opengroup.osdu.core.common.model.coreis.AuthorizationResponse;
-import org.opengroup.osdu.core.common.service.core.HttpResponse;
-import org.opengroup.osdu.core.common.service.core.entitlements.IEntitlementsFactory;
-import org.opengroup.osdu.core.common.service.core.entitlements.IEntitlementsService;
+import org.opengroup.osdu.core.common.model.http.DpsHeaders;
+import org.opengroup.osdu.core.common.model.entitlements.EntitlementsException;
+import org.opengroup.osdu.core.common.model.entitlements.GroupInfo;
+import org.opengroup.osdu.core.common.model.entitlements.Groups;
+import org.opengroup.osdu.core.common.model.http.AppException;
+import org.opengroup.osdu.core.common.model.entitlements.AuthorizationResponse;
+import org.opengroup.osdu.core.common.service.http.HttpResponse;
+import org.opengroup.osdu.core.common.service.entitlements.IEntitlementsFactory;
+import org.opengroup.osdu.core.common.service.entitlements.IEntitlementsService;
 import org.opengroup.osdu.core.common.service.logging.JaxRsDpsLog;
-import org.opengroup.osdu.core.common.service.coreis.HeadersUtil;
+import org.opengroup.osdu.core.common.service.http.HeadersUtil;
 import org.opengroup.osdu.core.common.provider.interfaces.IAuthorizationService;
 import org.springframework.context.annotation.Lazy;
 import org.springframework.stereotype.Service;
diff --git a/indexer-core/src/main/java/org/opengroup/osdu/indexer/logging/AuditLogger.java b/indexer-core/src/main/java/org/opengroup/osdu/indexer/logging/AuditLogger.java
index fe4922ef58b2a29ffccab739112133f54fd91a6c..f904aeaaa6c01340499cdd6b48c55ad1070ba3de 100644
--- a/indexer-core/src/main/java/org/opengroup/osdu/indexer/logging/AuditLogger.java
+++ b/indexer-core/src/main/java/org/opengroup/osdu/indexer/logging/AuditLogger.java
@@ -14,7 +14,7 @@
 
 package org.opengroup.osdu.indexer.logging;
 
-import org.opengroup.osdu.core.common.provider.interfaces.IHeadersInfo;
+import org.opengroup.osdu.core.common.model.http.DpsHeaders;
 import org.opengroup.osdu.core.common.service.logging.JaxRsDpsLog;
 import org.opengroup.osdu.core.common.service.logging.audit.AuditPayload;
 import org.springframework.stereotype.Component;
@@ -30,13 +30,13 @@ public class AuditLogger {
     @Inject
     private JaxRsDpsLog logger;
     @Inject
-    private IHeadersInfo headers;
+    private DpsHeaders headers;
 
     private AuditEvents events = null;
 
     private AuditEvents getAuditEvents() {
         if (this.events == null) {
-            this.events = new AuditEvents(this.headers.getUser());
+            this.events = new AuditEvents(this.headers.getUserEmail());
         }
         return this.events;
     }
diff --git a/indexer-core/src/main/java/org/opengroup/osdu/indexer/middleware/AuthorizationFilter.java b/indexer-core/src/main/java/org/opengroup/osdu/indexer/middleware/AuthorizationFilter.java
index cbb3246a7aa39d6b1fe2bebb15a61e2ecb0ace1e..54ad9405496b8fee1163d5285e8c12c1b56bdb3a 100644
--- a/indexer-core/src/main/java/org/opengroup/osdu/indexer/middleware/AuthorizationFilter.java
+++ b/indexer-core/src/main/java/org/opengroup/osdu/indexer/middleware/AuthorizationFilter.java
@@ -1,8 +1,8 @@
 package org.opengroup.osdu.indexer.middleware;
 
 import lombok.extern.java.Log;
-import org.opengroup.osdu.core.common.model.core.DpsHeaders;
-import org.opengroup.osdu.core.common.model.coreis.AuthorizationResponse;
+import org.opengroup.osdu.core.common.model.http.DpsHeaders;
+import org.opengroup.osdu.core.common.model.entitlements.AuthorizationResponse;
 import org.opengroup.osdu.core.common.provider.interfaces.IAuthorizationService;
 import org.springframework.stereotype.Component;
 import org.springframework.web.context.annotation.RequestScope;
diff --git a/indexer-core/src/main/java/org/opengroup/osdu/indexer/provider/interfaces/IPublisher.java b/indexer-core/src/main/java/org/opengroup/osdu/indexer/provider/interfaces/IPublisher.java
index 2c2fc494da76c8a624862d796df22d4af3795300..ec24e6562c71efa07f83e384d64d5b346cc7c5f3 100644
--- a/indexer-core/src/main/java/org/opengroup/osdu/indexer/provider/interfaces/IPublisher.java
+++ b/indexer-core/src/main/java/org/opengroup/osdu/indexer/provider/interfaces/IPublisher.java
@@ -1,6 +1,6 @@
 package org.opengroup.osdu.indexer.provider.interfaces;
 
-import org.opengroup.osdu.core.common.model.core.DpsHeaders;
+import org.opengroup.osdu.core.common.model.http.DpsHeaders;
 import org.opengroup.osdu.core.common.model.indexer.JobStatus;
 
 public interface IPublisher {
diff --git a/indexer-core/src/main/java/org/opengroup/osdu/indexer/provider/interfaces/ISchemaCache.java b/indexer-core/src/main/java/org/opengroup/osdu/indexer/provider/interfaces/ISchemaCache.java
index 2ffd1fa0fb1419a330d4b8fa1f66bb6191b27236..27004e63380bd049725a40d9bb34b61778dbe657 100644
--- a/indexer-core/src/main/java/org/opengroup/osdu/indexer/provider/interfaces/ISchemaCache.java
+++ b/indexer-core/src/main/java/org/opengroup/osdu/indexer/provider/interfaces/ISchemaCache.java
@@ -1,6 +1,6 @@
 package org.opengroup.osdu.indexer.provider.interfaces;
 
-import org.opengroup.osdu.core.common.model.core.ICache;
+import org.opengroup.osdu.core.common.cache.ICache;
 
 public interface ISchemaCache <String,V> extends ICache<String, V> {
 }
diff --git a/indexer-core/src/main/java/org/opengroup/osdu/indexer/service/AttributeParsingServiceImpl.java b/indexer-core/src/main/java/org/opengroup/osdu/indexer/service/AttributeParsingServiceImpl.java
index f737ad6beda38488059342def67382cff48315f6..4ed8c46cd7a449316be62014aa6ab3b1f6e0a304 100644
--- a/indexer-core/src/main/java/org/opengroup/osdu/indexer/service/AttributeParsingServiceImpl.java
+++ b/indexer-core/src/main/java/org/opengroup/osdu/indexer/service/AttributeParsingServiceImpl.java
@@ -22,7 +22,7 @@ import com.google.gson.reflect.TypeToken;
 import org.apache.http.HttpStatus;
 import org.opengroup.osdu.core.common.model.indexer.IndexingStatus;
 import org.opengroup.osdu.core.common.model.indexer.JobStatus;
-import org.opengroup.osdu.core.common.model.core.Constants;
+import org.opengroup.osdu.core.common.Constants;
 import org.opengroup.osdu.core.common.model.indexer.ElasticType;
 import org.opengroup.osdu.core.common.model.indexer.IndexSchema;
 import org.opengroup.osdu.indexer.util.parser.DateTimeParser;
diff --git a/indexer-core/src/main/java/org/opengroup/osdu/indexer/service/CronServiceImpl.java b/indexer-core/src/main/java/org/opengroup/osdu/indexer/service/CronServiceImpl.java
index fc60b988bed1505e0898b7098b7918e7c83aab77..5973eebb4c99238a636bb0558eac5aa3e243b9b7 100644
--- a/indexer-core/src/main/java/org/opengroup/osdu/indexer/service/CronServiceImpl.java
+++ b/indexer-core/src/main/java/org/opengroup/osdu/indexer/service/CronServiceImpl.java
@@ -18,12 +18,12 @@ package org.opengroup.osdu.indexer.service;
 
 import org.elasticsearch.client.ResponseException;
 import org.elasticsearch.client.RestHighLevelClient;
-import org.opengroup.osdu.core.common.model.AppException;
-import org.opengroup.osdu.core.common.model.coreis.IndexInfo;
+import org.opengroup.osdu.core.common.model.http.AppException;
+import org.opengroup.osdu.core.common.model.search.IndexInfo;
 import org.opengroup.osdu.core.common.service.logging.JaxRsDpsLog;
 import org.opengroup.osdu.core.common.provider.interfaces.IRequestInfo;
-import org.opengroup.osdu.core.common.service.coreis.IndicesService;
-import org.opengroup.osdu.is.core.util.ElasticClientHandler;
+import org.opengroup.osdu.core.common.service.search.IndicesService;
+import org.opengroup.osdu.indexer.util.ElasticClientHandler;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Service;
 
diff --git a/indexer-core/src/main/java/org/opengroup/osdu/indexer/service/ElasticSettingServiceImpl.java b/indexer-core/src/main/java/org/opengroup/osdu/indexer/service/ElasticSettingServiceImpl.java
index 983a7851f391e01202bb9295b8bc602ee0de3b74..fe5503b714f146aad8e9add2530aff3ad18a7b57 100644
--- a/indexer-core/src/main/java/org/opengroup/osdu/indexer/service/ElasticSettingServiceImpl.java
+++ b/indexer-core/src/main/java/org/opengroup/osdu/indexer/service/ElasticSettingServiceImpl.java
@@ -15,23 +15,23 @@
 package org.opengroup.osdu.indexer.service;
 
 import org.apache.http.HttpStatus;
-import org.opengroup.osdu.core.common.model.core.ClusterSettings;
-import org.opengroup.osdu.core.common.model.core.TenantInfo;
-import org.opengroup.osdu.core.common.model.AppException;
+import org.opengroup.osdu.core.common.model.search.ClusterSettings;
+import org.opengroup.osdu.core.common.model.tenant.TenantInfo;
+import org.opengroup.osdu.core.common.model.http.AppException;
 import org.opengroup.osdu.core.common.service.logging.JaxRsDpsLog;
 import org.opengroup.osdu.core.common.provider.interfaces.IElasticRepository;
 import org.opengroup.osdu.core.common.provider.interfaces.IElasticCredentialsCache;
-import org.opengroup.osdu.core.common.service.coreis.ITenantInfoService;
-import org.opengroup.osdu.is.core.service.ElasticSettingService;
+import org.opengroup.osdu.core.common.model.indexer.IElasticSettingService;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Service;
 import javax.inject.Inject;
 
 @Service
-public class ElasticSettingServiceImpl implements ElasticSettingService {
+public class ElasticSettingServiceImpl implements IElasticSettingService {
 
     @Inject
-    private ITenantInfoService tenantInfoServiceProvider;
+    private TenantInfo tenantInfo;
+
     @Inject
     private IElasticRepository elasticRepository;
     @Inject
@@ -45,8 +45,6 @@ public class ElasticSettingServiceImpl implements ElasticSettingService {
     @Override
     public ClusterSettings getElasticClusterInformation() {
 
-        TenantInfo tenantInfo = this.tenantInfoServiceProvider.getTenantInfo();
-
         String cacheKey = String.format("%s-%s", GAE_SERVICE, tenantInfo.getName());
         ClusterSettings clusterInfo = (ClusterSettings) this.elasticCredentialCache.get(cacheKey);
         if (clusterInfo != null) {
diff --git a/indexer-core/src/main/java/org/opengroup/osdu/indexer/service/GeometryConversionService.java b/indexer-core/src/main/java/org/opengroup/osdu/indexer/service/GeometryConversionService.java
index e032c66b3c59aa08c0fa2c104dab1871b1e70e93..83aadeadf483f71aca465ed4754713a242588061 100644
--- a/indexer-core/src/main/java/org/opengroup/osdu/indexer/service/GeometryConversionService.java
+++ b/indexer-core/src/main/java/org/opengroup/osdu/indexer/service/GeometryConversionService.java
@@ -15,7 +15,7 @@
 package org.opengroup.osdu.indexer.service;
 
 import com.google.gson.internal.LinkedTreeMap;
-import org.opengroup.osdu.core.common.model.core.Constants;
+import org.opengroup.osdu.core.common.Constants;
 import org.springframework.stereotype.Service;
 import org.springframework.web.context.annotation.RequestScope;
 
diff --git a/indexer-core/src/main/java/org/opengroup/osdu/indexer/service/IndexCopyService.java b/indexer-core/src/main/java/org/opengroup/osdu/indexer/service/IndexCopyService.java
index 3d8023c3265bb92a7bf44e6fa18db19119dda9bf..88e20720f510b3f7d0f31c31707b2501ddd1ba5c 100644
--- a/indexer-core/src/main/java/org/opengroup/osdu/indexer/service/IndexCopyService.java
+++ b/indexer-core/src/main/java/org/opengroup/osdu/indexer/service/IndexCopyService.java
@@ -15,7 +15,7 @@
 package org.opengroup.osdu.indexer.service;
 
 
-import org.opengroup.osdu.core.common.model.AppException;
+import org.opengroup.osdu.core.common.model.http.AppException;
 
 import java.io.IOException;
 
diff --git a/indexer-core/src/main/java/org/opengroup/osdu/indexer/service/IndexCopyServiceImpl.java b/indexer-core/src/main/java/org/opengroup/osdu/indexer/service/IndexCopyServiceImpl.java
index 8ae1bfd7034630f90b18b0b7392f4a0ea8f8c44a..7dc717efee799e8bfdba51010e5850c8a4dfa0e7 100644
--- a/indexer-core/src/main/java/org/opengroup/osdu/indexer/service/IndexCopyServiceImpl.java
+++ b/indexer-core/src/main/java/org/opengroup/osdu/indexer/service/IndexCopyServiceImpl.java
@@ -25,15 +25,16 @@ import org.apache.http.util.EntityUtils;
 import org.elasticsearch.client.Request;
 import org.elasticsearch.client.Response;
 import org.elasticsearch.client.RestHighLevelClient;
-import org.opengroup.osdu.core.common.model.core.ClusterSettings;
-import org.opengroup.osdu.core.common.model.core.DpsHeaders;
-import org.opengroup.osdu.core.common.model.core.TenantInfo;
-import org.opengroup.osdu.core.common.model.AppException;
-import org.opengroup.osdu.core.common.service.coreis.*;
+import org.opengroup.osdu.core.common.model.search.ClusterSettings;
+import org.opengroup.osdu.core.common.model.http.DpsHeaders;
+import org.opengroup.osdu.core.common.model.tenant.TenantInfo;
+import org.opengroup.osdu.core.common.model.http.AppException;
+import org.opengroup.osdu.core.common.service.search.ElasticIndexNameResolver;
+import org.opengroup.osdu.core.common.service.search.IndicesService;
+import org.opengroup.osdu.core.common.service.search.Preconditions;
 import org.opengroup.osdu.indexer.logging.AuditLogger;
-import org.opengroup.osdu.core.common.provider.interfaces.IHeadersInfo;
-import org.opengroup.osdu.is.core.service.ElasticSettingService;
-import org.opengroup.osdu.is.core.util.ElasticClientHandler;
+import org.opengroup.osdu.core.common.model.indexer.IElasticSettingService;
+import org.opengroup.osdu.indexer.util.ElasticClientHandler;
 import org.springframework.stereotype.Service;
 
 import javax.inject.Inject;
@@ -52,11 +53,11 @@ public class IndexCopyServiceImpl implements IndexCopyService {
     @Inject
     private IndicesService indicesService;
     @Inject
-    private ElasticSettingService elasticSettingService;
+    private IElasticSettingService elasticSettingService;
     @Inject
     private IndexerMappingService mappingService;
     @Inject
-    private IHeadersInfo headersInfo;
+    private DpsHeaders headersInfo;
     @Inject
     private AuditLogger auditLogger;
 
diff --git a/indexer-core/src/main/java/org/opengroup/osdu/indexer/service/IndexSchemaService.java b/indexer-core/src/main/java/org/opengroup/osdu/indexer/service/IndexSchemaService.java
index d382ac673f573f169afb3dd03fd0eaacb77d814a..e0a7f7a649ec2788162fd43c7cb800e021e07983 100644
--- a/indexer-core/src/main/java/org/opengroup/osdu/indexer/service/IndexSchemaService.java
+++ b/indexer-core/src/main/java/org/opengroup/osdu/indexer/service/IndexSchemaService.java
@@ -14,7 +14,7 @@
 
 package org.opengroup.osdu.indexer.service;
 
-import org.opengroup.osdu.core.common.model.AppException;
+import org.opengroup.osdu.core.common.model.http.AppException;
 import org.opengroup.osdu.core.common.model.indexer.IndexSchema;
 import org.opengroup.osdu.core.common.model.indexer.OperationType;
 
diff --git a/indexer-core/src/main/java/org/opengroup/osdu/indexer/service/IndexSchemaServiceImpl.java b/indexer-core/src/main/java/org/opengroup/osdu/indexer/service/IndexSchemaServiceImpl.java
index 04e8a8806607cbba383def7aa05b64694e3891f7..44afd335cd5fabc882690dceec0305c8c0bbb5bd 100644
--- a/indexer-core/src/main/java/org/opengroup/osdu/indexer/service/IndexSchemaServiceImpl.java
+++ b/indexer-core/src/main/java/org/opengroup/osdu/indexer/service/IndexSchemaServiceImpl.java
@@ -18,19 +18,20 @@ import com.google.common.base.Strings;
 import com.google.gson.Gson;
 import org.elasticsearch.ElasticsearchStatusException;
 import org.elasticsearch.client.RestHighLevelClient;
-import org.opengroup.osdu.core.common.model.AppException;
+import org.opengroup.osdu.core.common.model.storage.SchemaItem;
+import org.opengroup.osdu.core.common.model.http.AppException;
 import org.opengroup.osdu.core.common.service.logging.JaxRsDpsLog;
-import org.opengroup.osdu.is.core.util.ElasticClientHandler;
-import org.opengroup.osdu.core.common.service.coreis.ElasticIndexNameResolver;
-import org.opengroup.osdu.core.common.service.coreis.IndicesService;
+import org.opengroup.osdu.indexer.util.ElasticClientHandler;
+import org.opengroup.osdu.core.common.service.search.ElasticIndexNameResolver;
+import org.opengroup.osdu.core.common.service.search.IndicesService;
 import org.opengroup.osdu.core.common.model.indexer.IndexSchema;
 import org.opengroup.osdu.core.common.model.indexer.OperationType;
-import org.opengroup.osdu.core.common.model.indexer.Schema;
+import org.opengroup.osdu.core.common.model.storage.Schema;
 import org.opengroup.osdu.core.common.model.indexer.StorageType;
 import org.opengroup.osdu.indexer.provider.interfaces.ISchemaCache;
 import org.opengroup.osdu.indexer.util.TypeMapper;
-import org.opengroup.osdu.core.common.model.coreis.RequestStatus;
-import org.opengroup.osdu.core.common.model.coreis.RecordMetaAttribute;
+import org.opengroup.osdu.core.common.model.http.RequestStatus;
+import org.opengroup.osdu.core.common.model.search.RecordMetaAttribute;
 import org.apache.http.HttpStatus;
 import org.springframework.stereotype.Service;
 
@@ -171,14 +172,14 @@ public class IndexSchemaServiceImpl implements IndexSchemaService {
             Map<String, String> data = new HashMap<>();
             Map<String, Object> meta = new HashMap<>();
 
-            if (schemaObj.getSchema() != null && !schemaObj.getSchema().isEmpty()) {
-                for (Schema.Mapping schemaInfo : schemaObj.getSchema()) {
-                    String dataType = schemaInfo.getKind();
+            if (schemaObj.getSchema() != null && schemaObj.getSchema().length > 0) {
+                for (SchemaItem schemaItem : schemaObj.getSchema()) {
+                    String dataType = schemaItem.getKind();
                     String elasticDataType = TypeMapper.getIndexerType(dataType);
                     if (elasticDataType == null) {
                         elasticDataType = TypeMapper.getIndexerType(StorageType.STRING.getValue());
                     }
-                    data.put(schemaInfo.getPath(), elasticDataType);
+                    data.put(schemaItem.getPath(), elasticDataType);
                 }
             }
 
diff --git a/indexer-core/src/main/java/org/opengroup/osdu/indexer/service/IndexerMappingService.java b/indexer-core/src/main/java/org/opengroup/osdu/indexer/service/IndexerMappingService.java
index 75cfcf622b0dc661ccff0452afe90434543666fb..80865399c65309f6f80054c1513f869a3ba8d3d2 100644
--- a/indexer-core/src/main/java/org/opengroup/osdu/indexer/service/IndexerMappingService.java
+++ b/indexer-core/src/main/java/org/opengroup/osdu/indexer/service/IndexerMappingService.java
@@ -15,7 +15,7 @@
 package org.opengroup.osdu.indexer.service;
 
 import org.elasticsearch.client.RestHighLevelClient;
-import org.opengroup.osdu.core.common.service.coreis.IMappingService;
+import org.opengroup.osdu.core.common.service.search.IMappingService;
 import org.opengroup.osdu.core.common.model.indexer.IndexSchema;
 
 import java.io.IOException;
diff --git a/indexer-core/src/main/java/org/opengroup/osdu/indexer/service/IndexerMappingServiceImpl.java b/indexer-core/src/main/java/org/opengroup/osdu/indexer/service/IndexerMappingServiceImpl.java
index db0094c6c5974ca12e80d6ee5bb993c83383b240..303a67baeb680f51e23f3f8fdd97801f64136863 100644
--- a/indexer-core/src/main/java/org/opengroup/osdu/indexer/service/IndexerMappingServiceImpl.java
+++ b/indexer-core/src/main/java/org/opengroup/osdu/indexer/service/IndexerMappingServiceImpl.java
@@ -37,15 +37,14 @@ import org.elasticsearch.index.reindex.BulkByScrollResponse;
 import org.elasticsearch.index.reindex.UpdateByQueryRequest;
 
 import com.google.gson.Gson;
-import org.opengroup.osdu.core.common.model.core.Constants;
-import org.opengroup.osdu.core.common.model.AppException;
-import org.opengroup.osdu.core.common.model.coreis.RecordMetaAttribute;
-import org.opengroup.osdu.core.common.service.logging.JaxRsDpsLog;
-import org.opengroup.osdu.core.common.service.coreis.Preconditions;
+import org.opengroup.osdu.core.common.model.http.AppException;
+import org.opengroup.osdu.core.common.Constants;
+import org.opengroup.osdu.core.common.model.search.RecordMetaAttribute;
+import org.opengroup.osdu.core.common.service.search.Preconditions;
 import org.opengroup.osdu.core.common.model.indexer.IndexSchema;
 import org.opengroup.osdu.core.common.model.indexer.Records;
-import org.opengroup.osdu.is.core.service.MappingServiceImpl;
-import org.opengroup.osdu.is.core.util.ElasticClientHandler;
+import org.opengroup.osdu.core.common.service.logging.JaxRsDpsLog;
+import org.opengroup.osdu.indexer.util.ElasticClientHandler;
 import org.springframework.stereotype.Service;
 import javax.inject.Inject;
 
diff --git a/indexer-core/src/main/java/org/opengroup/osdu/indexer/service/IndexerService.java b/indexer-core/src/main/java/org/opengroup/osdu/indexer/service/IndexerService.java
index 88bba90c9e1e72eb3b22f37c12d54a23ba2919c1..4ae323c7656efb92132a5c64c69564f867ed183c 100644
--- a/indexer-core/src/main/java/org/opengroup/osdu/indexer/service/IndexerService.java
+++ b/indexer-core/src/main/java/org/opengroup/osdu/indexer/service/IndexerService.java
@@ -18,7 +18,7 @@ import java.util.List;
 
 import org.opengroup.osdu.core.common.model.indexer.JobStatus;
 import org.opengroup.osdu.core.common.model.indexer.RecordInfo;
-import org.opengroup.osdu.core.common.model.coreis.RecordChangedMessages;
+import org.opengroup.osdu.core.common.model.search.RecordChangedMessages;
 
 public interface IndexerService {
 
diff --git a/indexer-core/src/main/java/org/opengroup/osdu/indexer/service/IndexerServiceImpl.java b/indexer-core/src/main/java/org/opengroup/osdu/indexer/service/IndexerServiceImpl.java
index 3af261d18bd6e94342015d10750b80f1e559451a..f08365f975b99198729f12fcdd09ff1096359f77 100644
--- a/indexer-core/src/main/java/org/opengroup/osdu/indexer/service/IndexerServiceImpl.java
+++ b/indexer-core/src/main/java/org/opengroup/osdu/indexer/service/IndexerServiceImpl.java
@@ -30,22 +30,23 @@ import org.elasticsearch.client.RestHighLevelClient;
 import org.elasticsearch.common.unit.TimeValue;
 import org.elasticsearch.common.xcontent.XContentType;
 import org.elasticsearch.rest.RestStatus;
-import org.opengroup.osdu.core.common.model.core.Constants;
-import org.opengroup.osdu.core.common.model.core.DpsHeaders;
-import org.opengroup.osdu.core.common.model.AppException;
+import org.opengroup.osdu.core.common.model.entitlements.Acl;
+import org.opengroup.osdu.core.common.Constants;
+import org.opengroup.osdu.core.common.model.http.DpsHeaders;
+import org.opengroup.osdu.core.common.model.http.AppException;
 import org.opengroup.osdu.core.common.model.indexer.*;
 import org.opengroup.osdu.core.common.model.storage.ConversionStatus;
 import org.opengroup.osdu.core.common.service.logging.JaxRsDpsLog;
 import org.opengroup.osdu.indexer.provider.interfaces.IPublisher;
 import org.opengroup.osdu.indexer.logging.AuditLogger;
 import org.opengroup.osdu.indexer.util.IndexerQueueTaskBuilder;
-import org.opengroup.osdu.core.common.model.coreis.RequestStatus;
-import org.opengroup.osdu.core.common.model.coreis.RecordChangedMessages;
-import org.opengroup.osdu.core.common.model.coreis.RecordMetaAttribute;
+import org.opengroup.osdu.core.common.model.http.RequestStatus;
+import org.opengroup.osdu.core.common.model.search.RecordChangedMessages;
+import org.opengroup.osdu.core.common.model.search.RecordMetaAttribute;
 import org.opengroup.osdu.core.common.provider.interfaces.IRequestInfo;
-import org.opengroup.osdu.core.common.service.coreis.IndicesService;
-import org.opengroup.osdu.is.core.util.ElasticClientHandler;
-import org.opengroup.osdu.core.common.service.coreis.ElasticIndexNameResolver;
+import org.opengroup.osdu.core.common.service.search.IndicesService;
+import org.opengroup.osdu.indexer.util.ElasticClientHandler;
+import org.opengroup.osdu.core.common.service.search.ElasticIndexNameResolver;
 import org.apache.commons.beanutils.PropertyUtils;
 import org.apache.commons.beanutils.NestedNullException;
 import org.springframework.stereotype.Service;
@@ -500,7 +501,7 @@ public class IndexerServiceImpl implements IndexerService {
         indexerPayload.put(RecordMetaAttribute.TYPE.getValue(), record.getType());
         indexerPayload.put(RecordMetaAttribute.VERSION.getValue(), record.getVersion());
         indexerPayload.put(RecordMetaAttribute.ACL.getValue(), record.getAcl());
-        indexerPayload.put(RecordMetaAttribute.X_ACL.getValue(), StorageAcl.flattenAcl(record.getAcl()));
+        indexerPayload.put(RecordMetaAttribute.X_ACL.getValue(), Acl.flattenAcl(record.getAcl()));
         indexerPayload.put(RecordMetaAttribute.LEGAL.getValue(), record.getLegal());
         indexerPayload.put(RecordMetaAttribute.INDEX_STATUS.getValue(), record.getIndexProgress());
         if (record.getAncestry() != null) {
diff --git a/indexer-core/src/main/java/org/opengroup/osdu/indexer/service/IndicesServiceImpl.java b/indexer-core/src/main/java/org/opengroup/osdu/indexer/service/IndicesServiceImpl.java
new file mode 100644
index 0000000000000000000000000000000000000000..6a147d6f0110fb192a48ee369e92481349b03729
--- /dev/null
+++ b/indexer-core/src/main/java/org/opengroup/osdu/indexer/service/IndicesServiceImpl.java
@@ -0,0 +1,230 @@
+// Copyright 2017-2019, Schlumberger
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package org.opengroup.osdu.indexer.service;
+
+import com.google.common.base.Strings;
+import com.google.gson.Gson;
+import com.google.gson.reflect.TypeToken;
+import com.lambdaworks.redis.RedisException;
+import org.apache.http.HttpStatus;
+import org.apache.http.util.EntityUtils;
+import org.elasticsearch.ElasticsearchException;
+import org.elasticsearch.ElasticsearchStatusException;
+import org.elasticsearch.action.admin.indices.create.CreateIndexRequest;
+import org.elasticsearch.action.admin.indices.create.CreateIndexResponse;
+import org.elasticsearch.action.admin.indices.delete.DeleteIndexRequest;
+import org.elasticsearch.action.admin.indices.get.GetIndexRequest;
+import org.elasticsearch.action.support.master.AcknowledgedResponse;
+import org.elasticsearch.client.Request;
+import org.elasticsearch.client.RequestOptions;
+import org.elasticsearch.client.Response;
+import org.elasticsearch.client.RestHighLevelClient;
+import org.elasticsearch.common.settings.Settings;
+import org.elasticsearch.common.unit.TimeValue;
+import org.elasticsearch.common.xcontent.XContentType;
+import org.elasticsearch.rest.RestStatus;
+import org.opengroup.osdu.core.common.model.http.AppException;
+import org.opengroup.osdu.core.common.service.logging.JaxRsDpsLog;
+import org.opengroup.osdu.core.common.service.search.IndicesService;
+import org.opengroup.osdu.core.common.provider.interfaces.IIndexCache;
+import org.opengroup.osdu.core.common.model.search.IndexInfo;
+import org.opengroup.osdu.indexer.util.ElasticClientHandler;
+import org.opengroup.osdu.core.common.service.search.ElasticIndexNameResolver;
+import org.opengroup.osdu.core.common.service.search.Preconditions;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.web.context.annotation.RequestScope;
+
+import java.io.IOException;
+import java.lang.reflect.Type;
+import java.util.List;
+import java.util.Map;
+import java.util.Objects;
+
+@Service
+@RequestScope
+public class IndicesServiceImpl implements IndicesService {
+
+    @Autowired
+    private ElasticClientHandler elasticClientHandler;
+    @Autowired
+    private ElasticIndexNameResolver elasticIndexNameResolver;
+    @Autowired
+    private IIndexCache indicesExistCache;
+    @Autowired
+    private JaxRsDpsLog log;
+
+    private TimeValue REQUEST_TIMEOUT = TimeValue.timeValueMinutes(1);
+
+    private static final Settings DEFAULT_INDEX_SETTINGS = Settings.builder()
+            .put("index.refresh_interval", "30s")
+            .put("index.number_of_replicas", "1")
+            .put("index.number_of_shards", "1").build();
+
+    /**
+     * Create a new index in Elasticsearch
+     *
+     * @param client   Elasticsearch client
+     * @param index    Index name
+     * @param settings Settings if any, null if no specific settings
+     * @param type     type in index, required if type is specified
+     * @param mapping  mapping if any, must be a json map
+     * @throws ElasticsearchStatusException, IOException if it cannot create index
+     */
+    public boolean createIndex(RestHighLevelClient client, String index, Settings settings, String type, Map<String, Object> mapping) throws ElasticsearchStatusException, IOException {
+
+        Preconditions.checkArgument(client, Objects::nonNull, "client cannot be null");
+        Preconditions.checkArgument(index, Objects::nonNull, "index cannot be null");
+
+        try {
+            CreateIndexRequest request = new CreateIndexRequest(index);
+            request.settings(settings != null ? settings : DEFAULT_INDEX_SETTINGS);
+            if (mapping != null) {
+                String mappingJsonString = new Gson().toJson(mapping, Map.class);
+                request.mapping(type, mappingJsonString, XContentType.JSON);
+            }
+            request.timeout(REQUEST_TIMEOUT);
+            CreateIndexResponse response = client.indices().create(request, RequestOptions.DEFAULT);
+
+            // cache the index status
+            boolean indexStatus = response.isAcknowledged() && response.isShardsAcknowledged();
+            if (indexStatus) this.indicesExistCache.put(index, true);
+
+            return indexStatus;
+        } catch (ElasticsearchStatusException e) {
+            if (e.status() == RestStatus.BAD_REQUEST && (e.getMessage().contains("resource_already_exists_exception"))) {
+                log.info("Index already exists. Ignoring error...");
+                // cache the index status
+                this.indicesExistCache.put(index, true);
+                return true;
+            }
+            throw e;
+        }
+    }
+
+    /**
+     * Check if an index already exists
+     *
+     * @param index Index name
+     * @return index details if index already exists
+     * @throws IOException if request cannot be processed
+     */
+    public boolean isIndexExist(RestHighLevelClient client, String index) throws IOException {
+        try {
+            try {
+                Boolean isIndexExist = (Boolean) this.indicesExistCache.get(index);
+                if (isIndexExist != null && isIndexExist) return true;
+            } catch (RedisException ex) {
+                //In case the format of cache changes then clean the cache
+                this.indicesExistCache.delete(index);
+            }
+            GetIndexRequest request = new GetIndexRequest();
+            request.indices(index);
+            boolean exists = client.indices().exists(request, RequestOptions.DEFAULT);
+            if (exists) this.indicesExistCache.put(index, true);
+            return exists;
+        } catch (ElasticsearchException exception) {
+            if (exception.status() == RestStatus.NOT_FOUND) return false;
+            throw new AppException(
+                    exception.status().getStatus(),
+                    exception.getMessage(),
+                    String.format("Error getting index: %s status", index),
+                    exception);
+        }
+    }
+
+    /**
+     * Deletes index if user has required role: search.admin
+     *
+     * @param client Elasticsearch client
+     * @param index  Index name
+     */
+    public boolean deleteIndex(RestHighLevelClient client, String index) throws Exception {
+        boolean responseStatus = removeIndexInElasticsearch(client, index);
+        if (responseStatus) {
+            this.indicesExistCache.delete(index);
+        }
+        return responseStatus;
+    }
+
+    /**
+     * Deletes index if user has required role: search.admin
+     *
+     * @param index Index name
+     */
+    public boolean deleteIndex(String index) throws Exception {
+        try (RestHighLevelClient client = this.elasticClientHandler.createRestClient()) {
+            return deleteIndex(client, index);
+        }
+    }
+
+    /**
+     * Remove index in Elasticsearch
+     *
+     * @param client Elasticsearch client
+     * @param index  Index name
+     * @throws Exception Throws {@link AppException} if index is not found or elastic cannot delete the index
+     */
+    private boolean removeIndexInElasticsearch(RestHighLevelClient client, String index) throws Exception {
+
+        Preconditions.checkArgument(client, Objects::nonNull, "client cannot be null");
+        Preconditions.checkArgument(index, Objects::nonNull, "index cannot be null");
+
+        try {
+            DeleteIndexRequest request = new DeleteIndexRequest(index);
+            request.timeout(REQUEST_TIMEOUT);
+            AcknowledgedResponse response = client.indices().delete(request, RequestOptions.DEFAULT);
+            if (!response.isAcknowledged()) {
+                throw new AppException(HttpStatus.SC_INTERNAL_SERVER_ERROR, "Index deletion error", String.format("Could not delete index %s", index));
+            }
+            return true;
+        } catch (ElasticsearchException exception) {
+            if (exception.status() == RestStatus.NOT_FOUND) {
+                throw new AppException(HttpStatus.SC_NOT_FOUND, "Index deletion error", notFoundErrorMessage(index), exception);
+            } else if (exception.status() == RestStatus.BAD_REQUEST && exception.getMessage().contains("Cannot delete indices that are being snapshotted")) {
+                throw new AppException(HttpStatus.SC_CONFLICT, "Index deletion error", "Unable to delete the index because it is currently locked. Try again in few minutes.", exception);
+            }
+            throw exception;
+        }
+    }
+
+    // cron may not have kind but index delete api may
+    private String notFoundErrorMessage(String index) {
+        String kind = this.elasticIndexNameResolver.getKindFromIndexName(index);
+        return Strings.isNullOrEmpty(kind) ? String.format("Index %s not found", index) : String.format("Kind %s not found", kind);
+    }
+
+    /**
+     * Remove index in Elasticsearch
+     *
+     * @param client       Elasticsearch client
+     * @param indexPattern Index pattern
+     * @throws IOException Throws {@link IOException} if elastic cannot complete the request
+     */
+    public List<IndexInfo> getIndexInfo(RestHighLevelClient client, String indexPattern) throws IOException {
+
+        Preconditions.checkArgument(client, Objects::nonNull, "client cannot be null");
+
+        String requestUrl = Strings.isNullOrEmpty(indexPattern)
+                ? "/_cat/indices/*,-.*?h=index,docs.count,creation.date&s=docs.count:asc&format=json"
+                : String.format("/_cat/indices/%s?h=index,docs.count,creation.date&format=json", indexPattern);
+
+        Request request = new Request("GET", requestUrl);
+        Response response = client.getLowLevelClient().performRequest(request);
+        String str = EntityUtils.toString(response.getEntity());
+        final Type typeOf = new TypeToken<List<IndexInfo>>() {}.getType();
+        return new Gson().fromJson(str, typeOf);
+    }
+}
\ No newline at end of file
diff --git a/indexer-core/src/main/java/org/opengroup/osdu/indexer/service/MappingServiceImpl.java b/indexer-core/src/main/java/org/opengroup/osdu/indexer/service/MappingServiceImpl.java
new file mode 100644
index 0000000000000000000000000000000000000000..fcbe1dc52a71a9c194bff887ec89fda6a0e9fcf7
--- /dev/null
+++ b/indexer-core/src/main/java/org/opengroup/osdu/indexer/service/MappingServiceImpl.java
@@ -0,0 +1,93 @@
+// Copyright 2017-2019, Schlumberger
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package org.opengroup.osdu.indexer.service;
+
+import org.apache.http.HttpStatus;
+import org.elasticsearch.action.admin.indices.mapping.get.GetMappingsRequest;
+import org.elasticsearch.action.admin.indices.mapping.get.GetMappingsResponse;
+import org.elasticsearch.client.RequestOptions;
+import org.elasticsearch.client.RestHighLevelClient;
+import org.opengroup.osdu.core.common.model.http.AppException;
+import org.opengroup.osdu.core.common.service.search.ElasticIndexNameResolver;
+import org.opengroup.osdu.core.common.service.search.IndicesService;
+import org.opengroup.osdu.core.common.service.search.IMappingService;
+import org.opengroup.osdu.core.common.service.search.Preconditions;
+import org.opengroup.osdu.indexer.util.ElasticClientHandler;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.web.context.annotation.RequestScope;
+
+import java.io.IOException;
+import java.util.Objects;
+
+@Service
+@RequestScope
+public class MappingServiceImpl implements IMappingService {
+
+    @Autowired
+    private IndicesService indicesService;
+    @Autowired
+    private ElasticClientHandler elasticClientHandler;
+    @Autowired
+    private ElasticIndexNameResolver elasticIndexNameResolver;
+
+//    private TimeValue REQUEST_TIMEOUT = TimeValue.timeValueMinutes(1);
+
+    /*
+     * Get index schema
+     *
+     * @param index Index name
+     * @param requestHeaders Incoming request headers
+     * @throws Exception Throws exception if elastic cannot find index.
+     * */
+    @Override
+    public String getIndexSchema(String index) throws Exception {
+
+        try (RestHighLevelClient client = this.elasticClientHandler.createRestClient()) {
+            return this.getIndexMapping(client, index);
+        }
+    }
+
+    /**
+     * Gets elastic mapping for index
+     *
+     * @param client Elasticsearch client
+     * @param index  Index name
+     * @return mapping Index mapping
+     * @throws Exception Throws exception if elastic cannot find index.
+     */
+    public String getIndexMapping(RestHighLevelClient client, String index) throws Exception {
+
+        Preconditions.checkArgument(client, Objects::nonNull, "client cannot be null");
+        Preconditions.checkArgument(index, Objects::nonNull, "index cannot be null");
+
+        // check if index exist
+        boolean indexExist = indicesService.isIndexExist(client, index);
+        if (!indexExist) {
+            throw new AppException(HttpStatus.SC_NOT_FOUND, "Kind not found", String.format("Kind %s not found", this.elasticIndexNameResolver.getKindFromIndexName(index)));
+        }
+
+        try {
+            GetMappingsRequest request = new GetMappingsRequest();
+            request.indices(index);
+            // TODO: enable this once server is migrated > v6.6.2
+            // request.masterNodeTimeout(REQUEST_TIMEOUT);
+            GetMappingsResponse response = client.indices().getMapping(request, RequestOptions.DEFAULT);
+            return response.toString();
+        } catch (IOException e) {
+            throw new AppException(HttpStatus.SC_INTERNAL_SERVER_ERROR, "Unknown error", String.format("Error retrieving mapping for kind %s", this.elasticIndexNameResolver.getKindFromIndexName(index)), e);
+        }
+    }
+}
\ No newline at end of file
diff --git a/indexer-core/src/main/java/org/opengroup/osdu/indexer/service/ReindexServiceImpl.java b/indexer-core/src/main/java/org/opengroup/osdu/indexer/service/ReindexServiceImpl.java
index 69e4bfc56c9fe8eb3e67e7f5e1ea9605daeaddc4..81c65a724dc004b549b7cc8ad798ec67624a37f5 100644
--- a/indexer-core/src/main/java/org/opengroup/osdu/indexer/service/ReindexServiceImpl.java
+++ b/indexer-core/src/main/java/org/opengroup/osdu/indexer/service/ReindexServiceImpl.java
@@ -18,15 +18,15 @@ import com.google.common.base.Strings;
 import com.google.gson.Gson;
 import lombok.extern.java.Log;
 import org.apache.http.HttpStatus;
-import org.opengroup.osdu.core.common.model.core.DpsHeaders;
-import org.opengroup.osdu.core.common.model.AppException;
+import org.opengroup.osdu.core.common.model.http.DpsHeaders;
+import org.opengroup.osdu.core.common.model.http.AppException;
 import org.opengroup.osdu.core.common.model.indexer.OperationType;
 import org.opengroup.osdu.core.common.model.indexer.RecordQueryResponse;
 import org.opengroup.osdu.core.common.model.indexer.RecordReindexRequest;
 import org.opengroup.osdu.core.common.service.logging.JaxRsDpsLog;
 import org.opengroup.osdu.indexer.util.IndexerQueueTaskBuilder;
 import org.opengroup.osdu.core.common.model.indexer.RecordInfo;
-import org.opengroup.osdu.core.common.model.coreis.RecordChangedMessages;
+import org.opengroup.osdu.core.common.model.search.RecordChangedMessages;
 import org.opengroup.osdu.core.common.provider.interfaces.IRequestInfo;
 import org.springframework.stereotype.Component;
 
diff --git a/indexer-core/src/main/java/org/opengroup/osdu/indexer/service/StorageService.java b/indexer-core/src/main/java/org/opengroup/osdu/indexer/service/StorageService.java
index e925e4877641d1b4bf2661bc342750125ee67711..ab8e9901294893255b0f00a7632ee0145c37f1fa 100644
--- a/indexer-core/src/main/java/org/opengroup/osdu/indexer/service/StorageService.java
+++ b/indexer-core/src/main/java/org/opengroup/osdu/indexer/service/StorageService.java
@@ -14,7 +14,7 @@
 
 package org.opengroup.osdu.indexer.service;
 
-import org.opengroup.osdu.core.common.model.AppException;
+import org.opengroup.osdu.core.common.model.http.AppException;
 import org.opengroup.osdu.core.common.model.indexer.RecordQueryResponse;
 import org.opengroup.osdu.core.common.model.indexer.RecordReindexRequest;
 import org.opengroup.osdu.core.common.model.indexer.Records;
diff --git a/indexer-core/src/main/java/org/opengroup/osdu/indexer/service/StorageServiceImpl.java b/indexer-core/src/main/java/org/opengroup/osdu/indexer/service/StorageServiceImpl.java
index fdb1cfe7efaa3102e68f443de0c87566ee025762..71979bc1b4a82b2909c93cf7190b20ae50b488a0 100644
--- a/indexer-core/src/main/java/org/opengroup/osdu/indexer/service/StorageServiceImpl.java
+++ b/indexer-core/src/main/java/org/opengroup/osdu/indexer/service/StorageServiceImpl.java
@@ -20,15 +20,16 @@ import com.google.common.collect.Lists;
 import com.google.common.reflect.TypeToken;
 import com.google.gson.Gson;
 import lombok.extern.java.Log;
-import org.opengroup.osdu.core.common.model.core.DpsHeaders;
-import org.opengroup.osdu.core.common.model.AppException;
-import org.opengroup.osdu.core.common.model.coreis.HttpResponse;
-import org.opengroup.osdu.core.common.model.coreis.RequestStatus;
+import org.opengroup.osdu.core.common.model.http.DpsHeaders;
+import org.opengroup.osdu.core.common.model.http.AppException;
+import org.opengroup.osdu.core.common.model.http.HttpResponse;
+import org.opengroup.osdu.core.common.model.http.RequestStatus;
 import org.opengroup.osdu.core.common.model.indexer.*;
 import org.opengroup.osdu.core.common.model.storage.ConversionStatus;
+import org.opengroup.osdu.core.common.model.storage.RecordIds;
 import org.opengroup.osdu.core.common.service.logging.JaxRsDpsLog;
-import org.opengroup.osdu.core.common.service.coreis.IUrlFetchService;
-import org.opengroup.osdu.core.common.model.coreis.RecordMetaAttribute;
+import org.opengroup.osdu.core.common.service.http.IUrlFetchService;
+import org.opengroup.osdu.core.common.model.search.RecordMetaAttribute;
 import org.opengroup.osdu.core.common.provider.interfaces.IRequestInfo;
 import org.apache.http.HttpStatus;
 import org.springframework.beans.factory.annotation.Value;
@@ -44,8 +45,8 @@ import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 
-import static org.opengroup.osdu.core.common.model.coreis.SlbHeaders.SLB_FRAME_OF_REFERENCE;
-import static org.opengroup.osdu.core.common.model.core.Constants.SLB_FRAME_OF_REFERENCE_VALUE;
+import static org.opengroup.osdu.core.common.model.http.DpsHeaders.FRAME_OF_REFERENCE;
+import static org.opengroup.osdu.core.common.Constants.SLB_FRAME_OF_REFERENCE_VALUE;
 
 @Log
 @Component
@@ -96,7 +97,7 @@ public class StorageServiceImpl implements StorageService {
 
 //        Map<String, String> headers = this.requestInfo.getHeadersMap();
         DpsHeaders headers = this.requestInfo.getHeaders();
-        headers.put(SLB_FRAME_OF_REFERENCE, SLB_FRAME_OF_REFERENCE_VALUE);
+        headers.put(FRAME_OF_REFERENCE, SLB_FRAME_OF_REFERENCE_VALUE);
         HttpResponse response = this.urlFetchService.sendRequest(HttpMethods.POST, STORAGE_QUERY_RECORD_FOR_CONVERSION_HOST, headers, null, body);
         String dataFromStorage = response.getBody();
         if (Strings.isNullOrEmpty(dataFromStorage)) {
diff --git a/indexer-core/src/main/java/org/opengroup/osdu/indexer/service/TenantInfoServiceImpl.java b/indexer-core/src/main/java/org/opengroup/osdu/indexer/service/TenantInfoServiceImpl.java
deleted file mode 100644
index 51e62226b5e59dec3657c4b3e4b88ac2b4a750b1..0000000000000000000000000000000000000000
--- a/indexer-core/src/main/java/org/opengroup/osdu/indexer/service/TenantInfoServiceImpl.java
+++ /dev/null
@@ -1,51 +0,0 @@
-// Copyright 2017-2019, Schlumberger
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//      http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.opengroup.osdu.indexer.service;
-
-
-import org.opengroup.osdu.core.common.model.core.DpsHeaders;
-import org.opengroup.osdu.core.common.model.core.ITenantFactory;
-import org.opengroup.osdu.core.common.model.core.TenantInfo;
-import org.opengroup.osdu.core.common.model.AppException;
-import org.opengroup.osdu.core.common.service.coreis.ITenantInfoService;
-import org.springframework.beans.factory.annotation.Qualifier;
-import org.springframework.stereotype.Component;
-import javax.inject.Inject;
-
-@Component
-public class TenantInfoServiceImpl implements ITenantInfoService {
-
-    @Inject
-    private ITenantFactory tenantFactory;
-    @Inject
-    @Qualifier("dpsHeaderFactorySearch")
-    private DpsHeaders headersInfo;
-
-    @Inject
-    @Qualifier("TenantInfoFactorySearch")
-    private TenantInfo tenantInfo;
-
-    public TenantInfo getTenantInfo() {
-
-        if(this.headersInfo == null)
-            throw AppException.createUnauthorized(String.format("could not retrieve headers info "));
-
-        TenantInfo tenantInfo = this.tenantFactory.getTenantInfo(this.headersInfo.getPartitionId());
-        if (tenantInfo == null)
-            throw AppException.createUnauthorized(String.format("could not retrieve tenant info for account id: %s", headersInfo.getPartitionId()));
-
-        return tenantInfo;
-    }
-}
\ No newline at end of file
diff --git a/indexer-core/src/main/java/org/opengroup/osdu/indexer/util/ElasticClientHandler.java b/indexer-core/src/main/java/org/opengroup/osdu/indexer/util/ElasticClientHandler.java
new file mode 100644
index 0000000000000000000000000000000000000000..fcc90699042b27fb2c4e67b7c3d4f24e97bf8267
--- /dev/null
+++ b/indexer-core/src/main/java/org/opengroup/osdu/indexer/util/ElasticClientHandler.java
@@ -0,0 +1,102 @@
+// Copyright 2017-2019, Schlumberger
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package org.opengroup.osdu.indexer.util;
+
+import org.apache.http.Header;
+import org.apache.http.HttpHost;
+import org.apache.http.HttpStatus;
+import org.apache.http.message.BasicHeader;
+import org.elasticsearch.client.RestClient;
+import org.elasticsearch.client.RestClientBuilder;
+import org.elasticsearch.client.RestHighLevelClient;
+import org.opengroup.osdu.core.common.model.http.AppException;
+import org.opengroup.osdu.core.common.model.search.ClusterSettings;
+import org.opengroup.osdu.core.common.model.indexer.IElasticSettingService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+import java.util.Base64;
+
+@Component
+public class ElasticClientHandler {
+
+    // Elastic cluster Rest client settings
+    private static final int CLOUD_REST_CLIENT_PORT = 9243;
+    private static final int REST_CLIENT_CONNECT_TIMEOUT = 60000;
+    private static final int REST_CLIENT_SOCKET_TIMEOUT = 60000;
+    private static final int REST_CLIENT_RETRY_TIMEOUT = 60000;
+
+   @Autowired
+    private IElasticSettingService elasticSettingService;
+
+    public RestHighLevelClient createRestClient() {
+        return getCloudRestClient(elasticSettingService.getElasticClusterInformation());
+    }
+    // TODO: Remove this temporary implementation when ECE CCS is utilized
+    public RestHighLevelClient createRestClient(final ClusterSettings clusterSettings) {
+        return getCloudRestClient(clusterSettings);
+    }
+
+    private RestHighLevelClient getCloudRestClient(final ClusterSettings clusterSettings) {
+
+        String cluster = null;
+        String host = null;
+        int port = CLOUD_REST_CLIENT_PORT;
+        String protocolScheme = "https";
+        String tls = "true";
+
+        try {
+            cluster = clusterSettings.getHost();
+            host = clusterSettings.getHost();
+            port = clusterSettings.getPort();
+            if(!clusterSettings.isHttps()){
+                protocolScheme = "http";
+            }
+
+            if(!clusterSettings.isTls()){
+                tls = "false";
+            }
+            String basicEncoded = Base64.getEncoder().encodeToString(clusterSettings.getUserNameAndPassword().getBytes());
+            String basicAuthenticationHeaderVal = String.format("Basic %s", basicEncoded);
+
+            RestClientBuilder builder = RestClient.builder(new HttpHost(host, port, protocolScheme));
+            builder.setRequestConfigCallback(requestConfigBuilder -> requestConfigBuilder.setConnectTimeout(REST_CLIENT_CONNECT_TIMEOUT)
+                    .setSocketTimeout(REST_CLIENT_SOCKET_TIMEOUT));
+            builder.setMaxRetryTimeoutMillis(REST_CLIENT_RETRY_TIMEOUT);
+
+            Header[] defaultHeaders = new Header[]{
+                    new BasicHeader("client.transport.nodes_sampler_interval", "30s"),
+                    new BasicHeader("client.transport.ping_timeout", "30s"),
+                    new BasicHeader("client.transport.sniff", "false"),
+                    new BasicHeader("request.headers.X-Found-Cluster", cluster),
+                    new BasicHeader("cluster.name", cluster),
+                    new BasicHeader("xpack.security.transport.ssl.enabled", tls),
+                    new BasicHeader("Authorization", basicAuthenticationHeaderVal),
+            };
+
+            builder.setDefaultHeaders(defaultHeaders);
+            return new RestHighLevelClient(builder);
+        } catch (AppException e) {
+            throw e;
+        } catch (Exception e) {
+            throw new AppException(
+                    HttpStatus.SC_INTERNAL_SERVER_ERROR,
+                    "search client error",
+                    "error creating search client",
+                    String.format("Elastic client connection params, cluster: %s, host: %s, port: %s", cluster, host, port),
+                    e);
+        }
+    }
+}
\ No newline at end of file
diff --git a/indexer-core/src/main/java/org/opengroup/osdu/indexer/util/IndexerQueueTaskBuilder.java b/indexer-core/src/main/java/org/opengroup/osdu/indexer/util/IndexerQueueTaskBuilder.java
index 3855d9e4c5eb12f9ad57e39714fea1ea36a7f592..7bb22aa19f72a0bbde97abdffc764859bc903263 100644
--- a/indexer-core/src/main/java/org/opengroup/osdu/indexer/util/IndexerQueueTaskBuilder.java
+++ b/indexer-core/src/main/java/org/opengroup/osdu/indexer/util/IndexerQueueTaskBuilder.java
@@ -17,11 +17,11 @@ package org.opengroup.osdu.indexer.util;
 import com.google.api.client.http.HttpMethods;
 import com.google.gson.Gson;
 import lombok.extern.java.Log;
-import org.opengroup.osdu.core.common.model.core.DpsHeaders;
-import org.opengroup.osdu.core.common.model.coreis.CloudTaskRequest;
-import org.opengroup.osdu.core.common.model.coreis.HttpResponse;
+import org.opengroup.osdu.core.common.model.http.DpsHeaders;
+import org.opengroup.osdu.core.common.model.search.CloudTaskRequest;
+import org.opengroup.osdu.core.common.model.http.HttpResponse;
 import org.opengroup.osdu.core.common.service.logging.JaxRsDpsLog;
-import org.opengroup.osdu.core.common.service.coreis.IUrlFetchService;
+import org.opengroup.osdu.core.common.service.http.IUrlFetchService;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Component;
 import org.springframework.web.context.annotation.RequestScope;
@@ -29,8 +29,8 @@ import org.springframework.web.context.annotation.RequestScope;
 import java.net.URISyntaxException;
 import javax.inject.Inject;
 
-import static org.opengroup.osdu.core.common.model.core.Constants.REINDEX_RELATIVE_URL;
-import static org.opengroup.osdu.core.common.model.core.Constants.WORKER_RELATIVE_URL;
+import static org.opengroup.osdu.core.common.Constants.REINDEX_RELATIVE_URL;
+import static org.opengroup.osdu.core.common.Constants.WORKER_RELATIVE_URL;
 
     @Log
     @Component
diff --git a/indexer-core/src/main/java/org/opengroup/osdu/indexer/util/TypeMapper.java b/indexer-core/src/main/java/org/opengroup/osdu/indexer/util/TypeMapper.java
index 4241dbf9c90150cb930ae74d559319f14a828b49..11b2935c2066a0f932714003089bd4b2489fb723 100644
--- a/indexer-core/src/main/java/org/opengroup/osdu/indexer/util/TypeMapper.java
+++ b/indexer-core/src/main/java/org/opengroup/osdu/indexer/util/TypeMapper.java
@@ -14,12 +14,12 @@
 
 package org.opengroup.osdu.indexer.util;
 
-import org.opengroup.osdu.core.common.model.core.Constants;
-import org.opengroup.osdu.core.common.model.coreis.AclRole;
+import org.opengroup.osdu.core.common.Constants;
+import org.opengroup.osdu.core.common.model.entitlements.AclRole;
 import org.opengroup.osdu.core.common.model.indexer.ElasticType;
 import org.opengroup.osdu.core.common.model.indexer.Records;
 import org.opengroup.osdu.core.common.model.indexer.StorageType;
-import org.opengroup.osdu.core.common.model.coreis.RecordMetaAttribute;
+import org.opengroup.osdu.core.common.model.search.RecordMetaAttribute;
 
 import java.util.HashMap;
 import java.util.Map;
diff --git a/indexer-core/src/test/java/org/opengroup/osdu/indexer/api/RecordIndexerApiTest.java b/indexer-core/src/test/java/org/opengroup/osdu/indexer/api/RecordIndexerApiTest.java
index 7596a8bc42b2f81eaf95361356e7b55deca43c3b..07f4c238944bfc667b8cd3d77c7495f6b14f981a 100644
--- a/indexer-core/src/test/java/org/opengroup/osdu/indexer/api/RecordIndexerApiTest.java
+++ b/indexer-core/src/test/java/org/opengroup/osdu/indexer/api/RecordIndexerApiTest.java
@@ -21,14 +21,14 @@ import org.junit.Test;
 import org.junit.runner.RunWith;
 import org.mockito.InjectMocks;
 import org.mockito.Mock;
-import org.opengroup.osdu.core.common.model.core.DpsHeaders;
-import org.opengroup.osdu.core.common.model.AppException;
+import org.opengroup.osdu.core.common.model.http.DpsHeaders;
+import org.opengroup.osdu.core.common.model.http.AppException;
 import org.opengroup.osdu.core.common.service.logging.JaxRsDpsLog;
-import org.opengroup.osdu.core.common.service.coreis.Config;
+import org.opengroup.osdu.core.common.service.search.Config;
 import org.opengroup.osdu.indexer.service.IndexerService;
 import org.opengroup.osdu.indexer.util.IndexerQueueTaskBuilder;
-import org.opengroup.osdu.core.common.model.coreis.RecordChangedMessages;
-import org.opengroup.osdu.core.common.service.coreis.HeadersUtil;
+import org.opengroup.osdu.core.common.model.search.RecordChangedMessages;
+import org.opengroup.osdu.core.common.service.http.HeadersUtil;
 import org.powermock.core.classloader.annotations.PrepareForTest;
 import org.powermock.modules.junit4.PowerMockRunner;
 import org.springframework.http.HttpStatus;
diff --git a/indexer-core/src/test/java/org/opengroup/osdu/indexer/api/ReindexApiTest.java b/indexer-core/src/test/java/org/opengroup/osdu/indexer/api/ReindexApiTest.java
index 212baccf067101cb90ed560284a60f0567be4f6c..88a101b5df8f2e996b0602ac47c7940292ed01d3 100644
--- a/indexer-core/src/test/java/org/opengroup/osdu/indexer/api/ReindexApiTest.java
+++ b/indexer-core/src/test/java/org/opengroup/osdu/indexer/api/ReindexApiTest.java
@@ -19,7 +19,7 @@ import org.junit.Test;
 import org.junit.runner.RunWith;
 import org.mockito.InjectMocks;
 import org.mockito.Mock;
-import org.opengroup.osdu.core.common.model.AppException;
+import org.opengroup.osdu.core.common.model.http.AppException;
 import org.opengroup.osdu.indexer.logging.AuditLogger;
 import org.opengroup.osdu.core.common.model.indexer.RecordReindexRequest;
 import org.opengroup.osdu.indexer.service.ReindexService;
diff --git a/indexer-core/src/test/java/org/opengroup/osdu/indexer/auth/AuthorizationServiceEntitlementsTest.java b/indexer-core/src/test/java/org/opengroup/osdu/indexer/auth/AuthorizationServiceEntitlementsTest.java
index fd375e3a2b0d971c90e39a0f439f29f844777ba4..afe7282b7231a10e51ddcec7f899752392487a79 100644
--- a/indexer-core/src/test/java/org/opengroup/osdu/indexer/auth/AuthorizationServiceEntitlementsTest.java
+++ b/indexer-core/src/test/java/org/opengroup/osdu/indexer/auth/AuthorizationServiceEntitlementsTest.java
@@ -19,15 +19,15 @@ import org.junit.Test;
 import org.junit.runner.RunWith;
 import org.mockito.InjectMocks;
 import org.mockito.Mock;
-import org.opengroup.osdu.core.common.model.core.entitlements.EntitlementsException;
-import org.opengroup.osdu.core.common.service.core.entitlements.IEntitlementsFactory;
-import org.opengroup.osdu.core.common.service.core.entitlements.IEntitlementsService;
-import org.opengroup.osdu.core.common.model.core.entitlements.GroupInfo;
-import org.opengroup.osdu.core.common.model.core.entitlements.Groups;
-import org.opengroup.osdu.core.common.model.core.DpsHeaders;
-import org.opengroup.osdu.core.common.model.AppException;
-import org.opengroup.osdu.core.common.service.core.HttpResponse;
-import org.opengroup.osdu.core.common.model.coreis.AuthorizationResponse;
+import org.opengroup.osdu.core.common.model.entitlements.EntitlementsException;
+import org.opengroup.osdu.core.common.service.entitlements.IEntitlementsFactory;
+import org.opengroup.osdu.core.common.service.entitlements.IEntitlementsService;
+import org.opengroup.osdu.core.common.model.entitlements.GroupInfo;
+import org.opengroup.osdu.core.common.model.entitlements.Groups;
+import org.opengroup.osdu.core.common.model.http.DpsHeaders;
+import org.opengroup.osdu.core.common.model.http.AppException;
+import org.opengroup.osdu.core.common.service.http.HttpResponse;
+import org.opengroup.osdu.core.common.model.entitlements.AuthorizationResponse;
 import org.opengroup.osdu.core.common.service.logging.JaxRsDpsLog;
 import org.springframework.test.context.junit4.SpringRunner;
 
diff --git a/indexer-core/src/test/java/org/opengroup/osdu/indexer/logging/AuditEventsTest.java b/indexer-core/src/test/java/org/opengroup/osdu/indexer/logging/AuditEventsTest.java
index 3157d0e3a45ef1243a0af09a784b8897c4c0af73..98c696a9dd66b659fddef5b97dd8b89277b6dc2c 100644
--- a/indexer-core/src/test/java/org/opengroup/osdu/indexer/logging/AuditEventsTest.java
+++ b/indexer-core/src/test/java/org/opengroup/osdu/indexer/logging/AuditEventsTest.java
@@ -17,6 +17,7 @@ package org.opengroup.osdu.indexer.logging;
 import com.google.common.collect.Lists;
 import org.junit.Test;
 import org.junit.runner.RunWith;
+import org.opengroup.osdu.indexer.logging.AuditEvents;
 import org.opengroup.osdu.core.common.service.logging.audit.AuditAction;
 import org.opengroup.osdu.core.common.service.logging.audit.AuditStatus;
 import org.springframework.test.context.junit4.SpringRunner;
diff --git a/indexer-core/src/test/java/org/opengroup/osdu/indexer/logging/AuditLoggerTest.java b/indexer-core/src/test/java/org/opengroup/osdu/indexer/logging/AuditLoggerTest.java
index 1ac17b5308e49860835a6700d6e839e719345191..746a8a5c348dc53a70e4c8bd10bf05dc5022b8af 100644
--- a/indexer-core/src/test/java/org/opengroup/osdu/indexer/logging/AuditLoggerTest.java
+++ b/indexer-core/src/test/java/org/opengroup/osdu/indexer/logging/AuditLoggerTest.java
@@ -21,9 +21,9 @@ import org.junit.runner.RunWith;
 import org.mockito.ArgumentCaptor;
 import org.mockito.InjectMocks;
 import org.mockito.Mock;
+import org.opengroup.osdu.core.common.model.http.DpsHeaders;
 import org.opengroup.osdu.core.common.service.logging.JaxRsDpsLog;
 import org.opengroup.osdu.core.common.service.logging.audit.AuditPayload;
-import org.opengroup.osdu.core.common.provider.interfaces.IHeadersInfo;
 import org.springframework.test.context.junit4.SpringRunner;
 
 import java.util.Map;
@@ -37,13 +37,13 @@ public class AuditLoggerTest {
     @Mock
     private JaxRsDpsLog logger;
     @Mock
-    private IHeadersInfo headers;
+    private DpsHeaders headers;
     @InjectMocks
     private AuditLogger sut;
 
     @Before
     public void setup() {
-        when(this.headers.getUser()).thenReturn("testUser");
+        when(this.headers.getUserEmail()).thenReturn("testUser");
     }
 
     @Test
diff --git a/indexer-core/src/test/java/org/opengroup/osdu/indexer/logging/JaxRsDpsLogTest.java b/indexer-core/src/test/java/org/opengroup/osdu/indexer/logging/JaxRsDpsLogTest.java
index 5b9c6a8688ccf2f52be0f0515cc0d30898009683..2fd7ffb8191cb1c78157611283d57fb26d4de7de 100644
--- a/indexer-core/src/test/java/org/opengroup/osdu/indexer/logging/JaxRsDpsLogTest.java
+++ b/indexer-core/src/test/java/org/opengroup/osdu/indexer/logging/JaxRsDpsLogTest.java
@@ -20,8 +20,8 @@ import org.junit.runner.RunWith;
 import org.mockito.ArgumentCaptor;
 import org.mockito.InjectMocks;
 import org.mockito.Mock;
-import org.opengroup.osdu.core.common.model.core.DpsHeaders;
-import org.opengroup.osdu.core.common.model.core.Request;
+import org.opengroup.osdu.core.common.model.http.DpsHeaders;
+import org.opengroup.osdu.core.common.model.http.Request;
 import org.opengroup.osdu.core.common.service.logging.ILogger;
 import org.opengroup.osdu.core.common.service.logging.JaxRsDpsLog;
 import org.opengroup.osdu.core.common.service.logging.audit.AuditPayload;
diff --git a/indexer-core/src/test/java/org/opengroup/osdu/indexer/model/RecordChagedMessagesTest.java b/indexer-core/src/test/java/org/opengroup/osdu/indexer/model/RecordChagedMessagesTest.java
index de936e7aac444684806a6ee7b5f658650480793d..071d140ae39a1ebf709c4e1712f74da23feb2918 100644
--- a/indexer-core/src/test/java/org/opengroup/osdu/indexer/model/RecordChagedMessagesTest.java
+++ b/indexer-core/src/test/java/org/opengroup/osdu/indexer/model/RecordChagedMessagesTest.java
@@ -18,8 +18,8 @@ import org.junit.Assert;
 import org.junit.Before;
 import org.junit.Test;
 import org.junit.runner.RunWith;
-import org.opengroup.osdu.core.common.model.core.DpsHeaders;
-import org.opengroup.osdu.core.common.model.coreis.RecordChangedMessages;
+import org.opengroup.osdu.core.common.model.http.DpsHeaders;
+import org.opengroup.osdu.core.common.model.search.RecordChangedMessages;
 import org.springframework.test.context.junit4.SpringRunner;
 
 import java.util.HashMap;
diff --git a/indexer-core/src/test/java/org/opengroup/osdu/indexer/service/GeometryConversionServiceTest.java b/indexer-core/src/test/java/org/opengroup/osdu/indexer/service/GeometryConversionServiceTest.java
index e5cf8889a53cc411db4bddddf39e937a77963081..9795772efc04c14107662877d9d654491a99645f 100644
--- a/indexer-core/src/test/java/org/opengroup/osdu/indexer/service/GeometryConversionServiceTest.java
+++ b/indexer-core/src/test/java/org/opengroup/osdu/indexer/service/GeometryConversionServiceTest.java
@@ -18,7 +18,7 @@ import com.google.gson.internal.LinkedTreeMap;
 import org.junit.Test;
 import org.junit.runner.RunWith;
 import org.mockito.InjectMocks;
-import org.opengroup.osdu.core.common.model.core.Constants;
+import org.opengroup.osdu.core.common.Constants;
 import org.springframework.test.context.junit4.SpringRunner;
 
 import java.util.ArrayList;
diff --git a/indexer-core/src/test/java/org/opengroup/osdu/indexer/service/IndicesServiceTest.java b/indexer-core/src/test/java/org/opengroup/osdu/indexer/service/IndicesServiceTest.java
new file mode 100644
index 0000000000000000000000000000000000000000..9de1af7fd574a25bdcbc81c5f02fcf5221fc0ae2
--- /dev/null
+++ b/indexer-core/src/test/java/org/opengroup/osdu/indexer/service/IndicesServiceTest.java
@@ -0,0 +1,222 @@
+// Copyright 2017-2019, Schlumberger
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package org.opengroup.osdu.indexer.service;
+
+import com.google.common.reflect.TypeToken;
+import com.google.gson.Gson;
+
+import org.apache.http.HttpEntity;
+import org.apache.http.HttpStatus;
+import org.apache.http.entity.ContentType;
+import org.apache.http.entity.StringEntity;
+import org.apache.http.util.EntityUtils;
+import org.elasticsearch.ElasticsearchStatusException;
+import org.elasticsearch.action.support.master.AcknowledgedResponse;
+import org.elasticsearch.client.*;
+import org.elasticsearch.rest.RestStatus;
+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.model.http.AppException;
+import org.opengroup.osdu.core.common.service.logging.JaxRsDpsLog;
+import org.opengroup.osdu.core.common.provider.interfaces.IIndexCache;
+import org.opengroup.osdu.core.common.model.search.IndexInfo;
+import org.opengroup.osdu.core.common.service.search.ElasticIndexNameResolver;
+import org.opengroup.osdu.indexer.util.ElasticClientHandler;
+import org.powermock.api.mockito.PowerMockito;
+import org.powermock.core.classloader.annotations.PrepareForTest;
+import org.springframework.context.annotation.Lazy;
+import org.springframework.test.context.junit4.SpringRunner;
+
+import java.io.IOException;
+import java.lang.reflect.Type;
+import java.util.List;
+
+import static junit.framework.TestCase.assertTrue;
+import static org.junit.Assert.*;
+import static org.mockito.Mockito.*;
+import static org.mockito.MockitoAnnotations.initMocks;
+
+@RunWith(SpringRunner.class)
+@PrepareForTest({RestHighLevelClient.class, IndicesClient.class, EntityUtils.class})
+public class IndicesServiceTest {
+    @Mock
+    private ElasticClientHandler elasticClientHandler;
+    @Mock
+    private ElasticIndexNameResolver elasticIndexNameResolver;
+    @Mock
+    private IIndexCache indicesExistCache;
+    @Mock
+    @Lazy
+    private JaxRsDpsLog log;
+    @Mock
+    private RestClient restClient;
+    @Mock
+    private Response response;
+    @Mock
+    private HttpEntity httpEntity;
+    @InjectMocks
+    private IndicesServiceImpl sut;
+
+    private RestHighLevelClient restHighLevelClient;
+    private IndicesClient indicesClient;
+
+    @Before
+    public void setup() {
+        initMocks(this);
+        indicesClient = PowerMockito.mock(IndicesClient.class);
+        restHighLevelClient = PowerMockito.mock(RestHighLevelClient.class);
+    }
+
+    @Test
+    public void delete_existingElasticIndex() throws Exception {
+        AcknowledgedResponse indexResponse = new AcknowledgedResponse(true);
+
+        when(elasticClientHandler.createRestClient()).thenReturn(restHighLevelClient);
+        doReturn(indicesClient).when(restHighLevelClient).indices();
+        doReturn(indexResponse).when(indicesClient).delete(any(), any(RequestOptions.class));
+        boolean response = this.sut.deleteIndex("anyIndex");
+        assertTrue(response);
+    }
+
+    @Test
+    public void delete_existingElasticIndex_usingSameClient() throws Exception {
+        AcknowledgedResponse indexResponse = new AcknowledgedResponse(true);
+
+        when(elasticClientHandler.createRestClient()).thenReturn(restHighLevelClient);
+        doReturn(indicesClient).when(restHighLevelClient).indices();
+        doReturn(indexResponse).when(indicesClient).delete(any(), any(RequestOptions.class));
+        boolean response = this.sut.deleteIndex(restHighLevelClient, "anyIndex");
+        assertTrue(response);
+    }
+
+    @Test
+    public void should_throw_internalServerException_delete_isNotAcknowledged() throws Exception {
+        AcknowledgedResponse indexResponse = new AcknowledgedResponse(false);
+        when(elasticClientHandler.createRestClient()).thenReturn(restHighLevelClient);
+        doReturn(indicesClient).when(restHighLevelClient).indices();
+        doReturn(indexResponse).when(indicesClient).delete(any(), any(RequestOptions.class));
+
+        try {
+            this.sut.deleteIndex("anyIndex");
+            fail("Should not succeed!");
+        } catch (AppException e) {
+            assertEquals(HttpStatus.SC_INTERNAL_SERVER_ERROR, e.getError().getCode());
+            assertEquals("Could not delete index anyIndex", e.getError().getMessage());
+            assertEquals("Index deletion error", e.getError().getReason());
+        } catch (Exception e) {
+            fail("Should not throw this exception " + e.getMessage());
+        }
+    }
+
+    @Test
+    public void should_throwAppException_when_delete_existingElasticIndex_and_backupIsRunning() throws Exception {
+        ElasticsearchStatusException exception = new ElasticsearchStatusException(
+                "Cannot delete indices that are being snapshotted: [[anyIndex/8IXuPeFnTJGEu_LjjXrHwA]]. Try again after snapshot finishes or cancel the currently running snapshot.", RestStatus.BAD_REQUEST);
+        when(elasticClientHandler.createRestClient()).thenReturn(restHighLevelClient);
+        doReturn(indicesClient).when(restHighLevelClient).indices();
+        doThrow(exception).when(indicesClient).delete(any(), any(RequestOptions.class));
+
+        try {
+            this.sut.deleteIndex("anyIndex");
+            fail("Should not succeed!");
+        } catch (AppException e) {
+            assertEquals(HttpStatus.SC_CONFLICT, e.getError().getCode());
+            assertEquals("Unable to delete the index because it is currently locked. Try again in few minutes.", e.getError().getMessage());
+            assertEquals("Index deletion error", e.getError().getReason());
+        } catch (Exception e) {
+            fail("Should not throw this exception " + e.getMessage());
+        }
+    }
+
+    @Test
+    public void should_throwAppException_when_delete_nonExistent_index() throws Exception {
+        ElasticsearchStatusException exception = new ElasticsearchStatusException("no such index", RestStatus.NOT_FOUND);
+        when(elasticClientHandler.createRestClient()).thenReturn(restHighLevelClient);
+        doReturn(indicesClient).when(restHighLevelClient).indices();
+        doThrow(exception).when(indicesClient).delete(any(), any(RequestOptions.class));
+
+        try {
+            this.sut.deleteIndex("anyIndex");
+            fail("Should not succeed!");
+        } catch (AppException e) {
+            assertEquals(HttpStatus.SC_NOT_FOUND, e.getError().getCode());
+            assertEquals("Index anyIndex not found", e.getError().getMessage());
+            assertEquals("Index deletion error", e.getError().getReason());
+        } catch (Exception e) {
+            fail("Should not throw this exception " + e.getMessage());
+        }
+    }
+
+    @Test
+    public void should_get_valid_indexInfo() throws IOException {
+        String responseJson = "[" +
+                "  {" +
+                "    \"index\": \"tenant1-aapg-file-1.0.0\"," +
+                "    \"docs.count\": \"92\"," +
+                "    \"creation.date\": \"1545912860994\"" +
+                "  }" +
+                "]";
+        Request request = new Request("GET", "/_cat/indices/*,-.*?h=index,docs.count,creation.date&s=docs.count:asc&format=json");
+        StringEntity entity = new StringEntity(responseJson, ContentType.APPLICATION_JSON);
+        when(this.restHighLevelClient.getLowLevelClient()).thenReturn(this.restClient);
+        when(this.restClient.performRequest(request)).thenReturn(response);
+        when(this.response.getEntity()).thenReturn(entity);
+
+        List<IndexInfo> infos = this.sut.getIndexInfo(this.restHighLevelClient, "");
+        assertNotNull(infos);
+        assertEquals(1, infos.size());
+    }
+
+    @Test
+    public void should_get_valid_indexInfoByPattern() throws IOException {
+        String responseJson = "[" +
+                "  {" +
+                "    \"index\": \"tenant1-aapg-file-1.0.0\"," +
+                "    \"docs.count\": \"92\"," +
+                "    \"creation.date\": \"1545912860994\"" +
+                "  }," +
+                "  {" +
+                "    \"index\": \"tenant1-aapg-document-1.0.0\"," +
+                "    \"docs.count\": \"0\"," +
+                "    \"creation.date\": \"1545912868416\"" +
+                "  }" +
+                "]";
+        Request request = new Request("GET", "/_cat/indices/tenant1-aapg-*?h=index,docs.count,creation.date&format=json");
+        StringEntity entity = new StringEntity(responseJson, ContentType.APPLICATION_JSON);
+        when(this.restHighLevelClient.getLowLevelClient()).thenReturn(this.restClient);
+        when(this.restClient.performRequest(request)).thenReturn(response);
+        when(this.response.getEntity()).thenReturn(entity);
+
+        List<IndexInfo> infos = this.sut.getIndexInfo(this.restHighLevelClient, "tenant1-aapg-*");
+        assertNotNull(infos);
+        assertEquals(2, infos.size());
+    }
+
+    @Test
+    public void should_properly_deserialize_indices_get_response() {
+        String jsonResponse = "[{\"index\":\"tenant1-test-hello-1.0.1\",\"docs.count\":\"1\",\"creation.date\":\"1551996907769\"}]";
+
+        final Type typeOf = new TypeToken<List<IndexInfo>>() {}.getType();
+        List<IndexInfo> indicesList = new Gson().fromJson(jsonResponse, typeOf);
+
+        assertEquals(1, indicesList.size());
+        assertEquals("tenant1-test-hello-1.0.1", indicesList.get(0).getName());
+        assertEquals("1", indicesList.get(0).getDocumentCount());
+        assertEquals("1551996907769", indicesList.get(0).getCreationDate());
+    }
+}
\ No newline at end of file
diff --git a/indexer-core/src/test/java/org/opengroup/osdu/indexer/service/MappingServiceImplTest.java b/indexer-core/src/test/java/org/opengroup/osdu/indexer/service/MappingServiceImplTest.java
new file mode 100644
index 0000000000000000000000000000000000000000..e57dd3c33a2d6910f753d22ee40e9ebdf1287f4f
--- /dev/null
+++ b/indexer-core/src/test/java/org/opengroup/osdu/indexer/service/MappingServiceImplTest.java
@@ -0,0 +1,104 @@
+// Copyright 2017-2019, Schlumberger
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+/*
+package org.opengroup.osdu.is.core.service;
+
+import org.apache.http.HttpStatus;
+import org.elasticsearch.action.admin.indices.mapping.get.GetMappingsResponse;
+import org.elasticsearch.client.IndicesClient;
+import org.elasticsearch.client.RequestOptions;
+import org.elasticsearch.client.RestHighLevelClient;
+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.model.http.AppException;
+import org.opengroup.osdu.core.common.model.indexer.IElasticSettingService;
+import org.opengroup.osdu.core.common.service.coreis.*;
+import org.opengroup.osdu.is.core.util.ElasticClientHandler;
+import org.powermock.api.mockito.PowerMockito;
+import org.powermock.core.classloader.annotations.PrepareForTest;
+import org.springframework.test.context.junit4.SpringRunner;
+
+import java.io.IOException;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.fail;
+import static org.mockito.Mockito.*;
+import static org.mockito.MockitoAnnotations.initMocks;
+
+@RunWith(SpringRunner.class)
+@PrepareForTest({RestHighLevelClient.class, IndicesClient.class, GetMappingsResponse.class})
+public class MappingServiceImplTest {
+    @Mock
+    private IElasticSettingService elasticSettingService;
+    @Mock
+    private ElasticClientHandler elasticClientHandler;
+    @Mock
+    private ElasticIndexNameResolver elasticIndexNameResolver;
+    @Mock
+    private IndicesService indicesService;
+    @InjectMocks
+    private MappingServiceImpl sut;
+
+    private RestHighLevelClient restHighLevelClient;
+    private IndicesClient indicesClient;
+    private GetMappingsResponse mappingsResponse;
+    private String index = "anyindex";
+
+    @Before
+    public void setup() {
+        initMocks(this);
+        this.indicesClient = PowerMockito.mock(IndicesClient.class);
+        this.restHighLevelClient = PowerMockito.mock(RestHighLevelClient.class);
+        this.mappingsResponse = PowerMockito.mock(GetMappingsResponse.class);
+    }
+
+    @Test
+    public void error_when_get_mapping_from_non_exists_elastic_index() throws Exception {
+        try {
+            when(this.indicesService.isIndexExist(restHighLevelClient, index)).thenReturn(false);
+
+            this.sut.getIndexMapping(restHighLevelClient, index);
+            fail("expected exception");
+        } catch (AppException ex) {
+            assertEquals(HttpStatus.SC_NOT_FOUND, ex.getError().getCode());
+        }
+    }
+
+    @Test(expected = AppException.class)
+    public void error_when_get_mapping_failed_from_existing_elastic_index() throws Exception {
+        when(this.indicesService.isIndexExist(this.restHighLevelClient, this.index)).thenReturn(true);
+        doReturn(this.indicesClient).when(this.restHighLevelClient).indices();
+        doThrow(new IOException()).when(this.indicesClient).getMapping(any(), any(RequestOptions.class));
+
+        this.sut.getIndexMapping(this.restHighLevelClient, this.index);
+
+        fail("expected exception");
+    }
+
+    @Test
+    public void get_mapping_from_existing_elastic_index() throws Exception {
+        when(this.indicesService.isIndexExist(restHighLevelClient, index)).thenReturn(true);
+        doReturn(this.indicesClient).when(this.restHighLevelClient).indices();
+        doReturn(this.mappingsResponse).when(this.indicesClient).getMapping(any(), any(RequestOptions.class));
+        doReturn("dummy").when(this.mappingsResponse).toString();
+
+        String mapping = this.sut.getIndexMapping(restHighLevelClient, index);
+
+        // TODO
+        assertEquals("dummy", mapping);
+    }
+}*/
\ No newline at end of file
diff --git a/indexer-core/src/test/java/org/opengroup/osdu/indexer/util/ElasticClientHandlerTest.java b/indexer-core/src/test/java/org/opengroup/osdu/indexer/util/ElasticClientHandlerTest.java
new file mode 100644
index 0000000000000000000000000000000000000000..d9d724645c313996d131cc00e4b1983cdc9b7519
--- /dev/null
+++ b/indexer-core/src/test/java/org/opengroup/osdu/indexer/util/ElasticClientHandlerTest.java
@@ -0,0 +1,102 @@
+// Copyright 2017-2019, Schlumberger
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package org.opengroup.osdu.indexer.util;
+
+import org.apache.http.HttpHost;
+import org.elasticsearch.client.RestClient;
+import org.elasticsearch.client.RestClientBuilder;
+import org.elasticsearch.client.RestHighLevelClient;
+import org.junit.Before;
+import org.junit.Ignore;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.InjectMocks;
+import org.mockito.Mock;
+import org.opengroup.osdu.core.common.model.http.AppException;
+import org.opengroup.osdu.core.common.service.logging.JaxRsDpsLog;
+import org.opengroup.osdu.core.common.service.search.Config;
+import org.opengroup.osdu.core.common.model.indexer.IElasticSettingService;
+import org.opengroup.osdu.core.common.model.search.ClusterSettings;
+import org.opengroup.osdu.core.common.model.search.DeploymentEnvironment;
+import org.powermock.core.classloader.annotations.PrepareForTest;
+import org.springframework.test.context.junit4.SpringRunner;
+
+import static org.junit.Assert.assertEquals;
+import static org.mockito.Mockito.when;
+import static org.mockito.MockitoAnnotations.initMocks;
+
+@Ignore
+@RunWith(SpringRunner.class)
+@PrepareForTest({Config.class, RestClientBuilder.class, RestClient.class, RestHighLevelClient.class})
+public class ElasticClientHandlerTest {
+
+    @Mock
+    private IElasticSettingService elasticSettingService;
+
+    @Mock
+    private RestClientBuilder builder;
+
+    @Mock
+    private RestClient restClient;
+    @Mock
+    private JaxRsDpsLog log;
+
+    @InjectMocks
+    private ElasticClientHandler elasticClientHandler;
+
+    @Before
+    public void setup() {
+        initMocks(this);
+
+//        mockStatic(Config.class);
+//        mockStatic(RestClient.class);
+    }
+
+    @Test
+    public void createRestClient_when_deployment_env_is_saas() {
+        ClusterSettings clusterSettings = new ClusterSettings("H", 1, "U:P");
+        when(Config.getDeploymentEnvironment()).thenReturn(DeploymentEnvironment.CLOUD);
+        when(elasticSettingService.getElasticClusterInformation()).thenReturn(clusterSettings);
+        when(RestClient.builder(new HttpHost("H", 1, "https"))).thenReturn(builder);
+        when(builder.setRequestConfigCallback(requestConfigBuilder -> requestConfigBuilder.setConnectTimeout(5000).setSocketTimeout(60000))).thenReturn(builder);
+        when(builder.build()).thenReturn(restClient);
+
+        RestHighLevelClient returned = this.elasticClientHandler.createRestClient();
+
+        assertEquals(restClient, returned.getLowLevelClient());
+    }
+
+    @Test(expected = AppException.class)
+    public void failed_createRestClientForSaaS_when_restclient_is_null() {
+        ClusterSettings clusterSettings = new ClusterSettings("H", 1, "U:P");
+        when(Config.getDeploymentEnvironment()).thenReturn(DeploymentEnvironment.CLOUD);
+        when(elasticSettingService.getElasticClusterInformation()).thenReturn(clusterSettings);
+        when(RestClient.builder(new HttpHost("H", 1, "https"))).thenReturn(builder);
+        when(builder.build()).thenReturn(null);
+
+        this.elasticClientHandler.createRestClient();
+    }
+
+    @Test(expected = AppException.class)
+    public void failed_createRestClientForSaaS_when_getcluster_info_throws_exception() {
+        when(Config.getDeploymentEnvironment()).thenReturn(DeploymentEnvironment.CLOUD);
+        when(elasticSettingService.getElasticClusterInformation()).thenThrow(new AppException(1, "", ""));
+        when(RestClient.builder(new HttpHost("H", 1, "https"))).thenReturn(builder);
+
+        this.elasticClientHandler.createRestClient();
+    }
+}
+
+
diff --git a/indexer-core/src/test/java/org/opengroup/osdu/indexer/util/RecordInfoTest.java b/indexer-core/src/test/java/org/opengroup/osdu/indexer/util/RecordInfoTest.java
index 24466cc3c54e12df04bb8217cd69608c18be7944..a919a0c4bc2e52144332b8d5cd6a8228cdda4db8 100644
--- a/indexer-core/src/test/java/org/opengroup/osdu/indexer/util/RecordInfoTest.java
+++ b/indexer-core/src/test/java/org/opengroup/osdu/indexer/util/RecordInfoTest.java
@@ -20,7 +20,7 @@ import org.junit.Assert;
 import org.junit.Before;
 import org.junit.Test;
 import org.junit.runner.RunWith;
-import org.opengroup.osdu.core.common.model.AppException;
+import org.opengroup.osdu.core.common.model.http.AppException;
 import org.opengroup.osdu.core.common.model.indexer.OperationType;
 import org.opengroup.osdu.core.common.model.indexer.RecordInfo;
 import org.springframework.http.HttpStatus;
diff --git a/provider/indexer-aws/src/main/java/org/opengroup/osdu/indexer/aws/IndexerAwsApplication.java b/provider/indexer-aws/src/main/java/org/opengroup/osdu/indexer/aws/IndexerAwsApplication.java
index 501bdddb2cf77765a701fb3651cfff5e5340713c..8d550c871e75408fa2a9e2fc2c90f32dc8dd4124 100644
--- a/provider/indexer-aws/src/main/java/org/opengroup/osdu/indexer/aws/IndexerAwsApplication.java
+++ b/provider/indexer-aws/src/main/java/org/opengroup/osdu/indexer/aws/IndexerAwsApplication.java
@@ -22,7 +22,7 @@ import org.springframework.context.annotation.ComponentScan;
 import org.springframework.context.annotation.Configuration;
 
 @SpringBootApplication(exclude = { SecurityAutoConfiguration.class, ManagementWebSecurityAutoConfiguration.class })
-@ComponentScan({"org.opengroup.osdu.core.common", "org.opengroup.osdu.indexer"})
+@ComponentScan({"org.opengroup.osdu"})
 public class IndexerAwsApplication {
 
     public static void main(String[] args) {
diff --git a/provider/indexer-aws/src/main/java/org/opengroup/osdu/indexer/aws/cache/IndexCacheImpl.java b/provider/indexer-aws/src/main/java/org/opengroup/osdu/indexer/aws/cache/IndexCacheImpl.java
index 3835cb569099cff7b25ecba74f877c031bfdbbae..b8953ba2d6cc3aaee5e99565bbc2417413f5d153 100644
--- a/provider/indexer-aws/src/main/java/org/opengroup/osdu/indexer/aws/cache/IndexCacheImpl.java
+++ b/provider/indexer-aws/src/main/java/org/opengroup/osdu/indexer/aws/cache/IndexCacheImpl.java
@@ -14,7 +14,7 @@
 
 package org.opengroup.osdu.indexer.aws.cache;
 
-import org.opengroup.osdu.core.common.model.core.cache.RedisCache;
+import org.opengroup.osdu.core.common.cache.RedisCache;
 import org.opengroup.osdu.core.common.provider.interfaces.IIndexCache;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Component;
diff --git a/provider/indexer-aws/src/main/java/org/opengroup/osdu/indexer/aws/cache/SchemaCacheImpl.java b/provider/indexer-aws/src/main/java/org/opengroup/osdu/indexer/aws/cache/SchemaCacheImpl.java
index 609fb09173db281297e07ae1e8ec7ff9d28f0060..112b3b2f8b1a591f785edb675b7a84cfe2cf5198 100644
--- a/provider/indexer-aws/src/main/java/org/opengroup/osdu/indexer/aws/cache/SchemaCacheImpl.java
+++ b/provider/indexer-aws/src/main/java/org/opengroup/osdu/indexer/aws/cache/SchemaCacheImpl.java
@@ -14,7 +14,7 @@
 
 package org.opengroup.osdu.indexer.aws.cache;
 
-import org.opengroup.osdu.core.common.model.core.cache.RedisCache;
+import org.opengroup.osdu.core.common.cache.RedisCache;
 import org.opengroup.osdu.indexer.provider.interfaces.ISchemaCache;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Component;
diff --git a/provider/indexer-aws/src/main/java/org/opengroup/osdu/indexer/aws/di/EntitlementsFactoryImpl.java b/provider/indexer-aws/src/main/java/org/opengroup/osdu/indexer/aws/di/EntitlementsFactoryImpl.java
index 92522a9e9a4de7a73bbf7347c53807bd08425f14..dd55e6a4712e6713546ceb035ff85837add3640b 100644
--- a/provider/indexer-aws/src/main/java/org/opengroup/osdu/indexer/aws/di/EntitlementsFactoryImpl.java
+++ b/provider/indexer-aws/src/main/java/org/opengroup/osdu/indexer/aws/di/EntitlementsFactoryImpl.java
@@ -14,9 +14,9 @@
 
 package org.opengroup.osdu.indexer.aws.di;
 
-import org.opengroup.osdu.core.common.model.core.DpsHeaders;
-import org.opengroup.osdu.core.common.service.core.entitlements.IEntitlementsFactory;
-import org.opengroup.osdu.core.common.service.core.entitlements.IEntitlementsService;
+import org.opengroup.osdu.core.common.model.http.DpsHeaders;
+import org.opengroup.osdu.core.common.service.entitlements.IEntitlementsFactory;
+import org.opengroup.osdu.core.common.service.entitlements.IEntitlementsService;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.context.annotation.Primary;
 import org.springframework.stereotype.Component;
diff --git a/provider/indexer-aws/src/main/java/org/opengroup/osdu/indexer/aws/di/EntitlementsServiceImpl.java b/provider/indexer-aws/src/main/java/org/opengroup/osdu/indexer/aws/di/EntitlementsServiceImpl.java
index e3bce2b2744f97ac940cd505c00d34f2448cb904..6f3d77491f449bb64c4250b13f21265d42f81b65 100644
--- a/provider/indexer-aws/src/main/java/org/opengroup/osdu/indexer/aws/di/EntitlementsServiceImpl.java
+++ b/provider/indexer-aws/src/main/java/org/opengroup/osdu/indexer/aws/di/EntitlementsServiceImpl.java
@@ -20,15 +20,14 @@ import com.amazonaws.services.lambda.invoke.LambdaSerializationException;
 import com.fasterxml.jackson.core.JsonProcessingException;
 import com.fasterxml.jackson.core.type.TypeReference;
 import com.fasterxml.jackson.databind.ObjectMapper;
-import org.opengroup.osdu.core.common.model.core.DpsHeaders;
-import org.opengroup.osdu.core.common.model.core.entitlements.EntitlementsException;
-import org.opengroup.osdu.core.common.model.core.entitlements.MemberInfo;
-import org.opengroup.osdu.core.common.model.core.entitlements.Members;
-import org.opengroup.osdu.core.common.service.core.entitlements.IEntitlementsService;
-import org.opengroup.osdu.core.common.model.core.entitlements.*;
+import org.opengroup.osdu.core.common.model.entitlements.*;
+import org.opengroup.osdu.core.common.model.entitlements.MemberInfo;
+import org.opengroup.osdu.core.common.model.entitlements.Members;
+import org.opengroup.osdu.core.common.model.http.DpsHeaders;
+import org.opengroup.osdu.core.common.service.entitlements.IEntitlementsService;
 import org.opengroup.osdu.core.aws.entitlements.*;
-import org.opengroup.osdu.core.common.service.core.HttpResponse;
-import org.opengroup.osdu.core.common.model.AppException;
+import org.opengroup.osdu.core.common.service.http.HttpResponse;
+import org.opengroup.osdu.core.common.model.http.AppException;
 import org.opengroup.osdu.core.common.service.logging.JaxRsDpsLog;
 import org.springframework.context.annotation.Lazy;
 import org.springframework.http.HttpStatus;
diff --git a/provider/indexer-aws/src/main/java/org/opengroup/osdu/indexer/aws/di/TenantFactoryImpl.java b/provider/indexer-aws/src/main/java/org/opengroup/osdu/indexer/aws/di/TenantFactoryImpl.java
deleted file mode 100644
index 15f07588070366c556c574b590c18db4e516e59e..0000000000000000000000000000000000000000
--- a/provider/indexer-aws/src/main/java/org/opengroup/osdu/indexer/aws/di/TenantFactoryImpl.java
+++ /dev/null
@@ -1,63 +0,0 @@
-// Copyright © Amazon Web Services
-//
-// 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.indexer.aws.di;
-
-import org.opengroup.osdu.core.common.model.core.ICache;
-import org.opengroup.osdu.core.common.model.core.ITenantFactory;
-import org.opengroup.osdu.core.common.model.core.TenantInfo;
-import org.springframework.stereotype.Component;
-
-import java.util.Collection;
-import java.util.HashMap;
-import java.util.Map;
-
-@Component
-public class TenantFactoryImpl implements ITenantFactory {
-    public static final String[] REGISTERED_TENANTS = new String[] {"common", "opendes"};
-    private Map<String, TenantInfo> tenants;
-
-    public TenantFactoryImpl()
-    {
-        this.tenants = new HashMap<>();
-        for (String tenantName : REGISTERED_TENANTS) {
-            TenantInfo ti = new TenantInfo();
-            ti.setName(tenantName);
-            this.tenants.put(tenantName, ti);
-        }
-    }
-    @Override
-    public boolean exists(String tenantName) {
-        return this.tenants.containsKey(tenantName);
-    }
-
-    @Override
-    public TenantInfo getTenantInfo(String tenantName) {
-        return this.tenants.get(tenantName);    }
-
-    @Override
-    public Collection<TenantInfo> listTenantInfo() {
-        return this.tenants.values();
-    }
-
-    @Override
-    public <V> ICache<String, V> createCache(String s, String s1, int i, int i1, Class<V> aClass) {
-        return null;
-    }
-
-    @Override
-    public void flushCache() {
-
-    }
-}
diff --git a/provider/indexer-aws/src/main/java/org/opengroup/osdu/indexer/aws/di/TenantInfoFactory.java b/provider/indexer-aws/src/main/java/org/opengroup/osdu/indexer/aws/di/TenantInfoFactory.java
deleted file mode 100644
index f6767fa96d53daf18e6268763444348baa4c4182..0000000000000000000000000000000000000000
--- a/provider/indexer-aws/src/main/java/org/opengroup/osdu/indexer/aws/di/TenantInfoFactory.java
+++ /dev/null
@@ -1,45 +0,0 @@
-// Copyright © Amazon Web Services
-//
-// 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.indexer.aws.di;
-
-import lombok.extern.java.Log;
-import org.opengroup.osdu.core.common.model.core.DpsHeaders;
-import org.opengroup.osdu.core.common.model.core.ITenantFactory;
-import org.opengroup.osdu.core.common.model.core.TenantInfo;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.beans.factory.annotation.Qualifier;
-import org.springframework.beans.factory.config.AbstractFactoryBean;
-import org.springframework.stereotype.Component;
-import org.springframework.web.context.annotation.RequestScope;
-
-@Log
-@Component
-@RequestScope
-public class TenantInfoFactory extends AbstractFactoryBean<TenantInfo> {
-    @Autowired
-    private ITenantFactory tenantFactory;
-    @Autowired
-    @Qualifier("dpsHeaderFactorySearch")
-    private DpsHeaders headers;
-    @Override
-    protected TenantInfo createInstance() throws Exception {
-        String id = this.headers.getPartitionIdWithFallbackToAccountId();
-        return this.tenantFactory.getTenantInfo(id);
-    }
-    @Override
-    public Class<?> getObjectType() {
-        return TenantInfo.class;
-    }
-}
diff --git a/provider/indexer-aws/src/main/java/org/opengroup/osdu/indexer/aws/persistence/ElasticRepositoryImpl.java b/provider/indexer-aws/src/main/java/org/opengroup/osdu/indexer/aws/persistence/ElasticRepositoryImpl.java
index f215a22404cbbb06f3a915643d859e3362f14ef5..22b0d8f5c5ca21fc079d1409889d9c5f2673f269 100644
--- a/provider/indexer-aws/src/main/java/org/opengroup/osdu/indexer/aws/persistence/ElasticRepositoryImpl.java
+++ b/provider/indexer-aws/src/main/java/org/opengroup/osdu/indexer/aws/persistence/ElasticRepositoryImpl.java
@@ -14,8 +14,8 @@
 
 package org.opengroup.osdu.indexer.aws.persistence;
 
-import org.opengroup.osdu.core.common.model.core.ClusterSettings;
-import org.opengroup.osdu.core.common.model.core.TenantInfo;
+import org.opengroup.osdu.core.common.model.search.ClusterSettings;
+import org.opengroup.osdu.core.common.model.tenant.TenantInfo;
 import org.opengroup.osdu.core.common.provider.interfaces.IElasticRepository;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Component;
diff --git a/provider/indexer-aws/src/main/java/org/opengroup/osdu/indexer/aws/publish/PublisherImpl.java b/provider/indexer-aws/src/main/java/org/opengroup/osdu/indexer/aws/publish/PublisherImpl.java
index 019c09eebea48864285c2265c59fb0a1832a4077..c2efd5c7e235efec8719edabd21ccf64d7bd7613 100644
--- a/provider/indexer-aws/src/main/java/org/opengroup/osdu/indexer/aws/publish/PublisherImpl.java
+++ b/provider/indexer-aws/src/main/java/org/opengroup/osdu/indexer/aws/publish/PublisherImpl.java
@@ -17,7 +17,7 @@ package org.opengroup.osdu.indexer.aws.publish;
 import com.amazonaws.services.sns.model.MessageAttributeValue;
 import com.amazonaws.services.sns.model.PublishRequest;
 import com.amazonaws.services.sns.AmazonSNS;
-import org.opengroup.osdu.core.common.model.core.DpsHeaders;
+import org.opengroup.osdu.core.common.model.http.DpsHeaders;
 import org.opengroup.osdu.core.aws.sns.AmazonSNSConfig;
 import org.opengroup.osdu.core.aws.sns.PublishRequestBuilder;
 import org.opengroup.osdu.indexer.provider.interfaces.IPublisher;
diff --git a/provider/indexer-aws/src/main/java/org/opengroup/osdu/indexer/aws/service/ElasticClientHandlerAws.java b/provider/indexer-aws/src/main/java/org/opengroup/osdu/indexer/aws/service/ElasticClientHandlerAws.java
index c84bfe61798c7be957769f4a347040fb0eedc0ab..6a2498d0b89e2e85d9dd676039284605cf177fa4 100644
--- a/provider/indexer-aws/src/main/java/org/opengroup/osdu/indexer/aws/service/ElasticClientHandlerAws.java
+++ b/provider/indexer-aws/src/main/java/org/opengroup/osdu/indexer/aws/service/ElasticClientHandlerAws.java
@@ -22,7 +22,7 @@ import org.apache.http.HttpRequestInterceptor;
 import org.elasticsearch.client.RestClient;
 import org.elasticsearch.client.RestHighLevelClient;
 import org.opengroup.osdu.core.aws.iam.IAMConfig;
-import org.opengroup.osdu.is.core.util.ElasticClientHandler;
+import org.opengroup.osdu.indexer.util.ElasticClientHandler;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.context.annotation.Primary;
 import org.springframework.stereotype.Component;
diff --git a/provider/indexer-aws/src/main/java/org/opengroup/osdu/indexer/aws/util/HeadersInfoAwsImpl.java b/provider/indexer-aws/src/main/java/org/opengroup/osdu/indexer/aws/util/HeadersInfoAwsImpl.java
deleted file mode 100644
index cae5b55f9b3274e6e5825661e5ffb3d2a6d89c2b..0000000000000000000000000000000000000000
--- a/provider/indexer-aws/src/main/java/org/opengroup/osdu/indexer/aws/util/HeadersInfoAwsImpl.java
+++ /dev/null
@@ -1,124 +0,0 @@
-// Copyright © Amazon Web Services
-//
-// 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.indexer.aws.util;
-
-import lombok.extern.java.Log;
-import org.apache.http.HttpStatus;
-import org.opengroup.osdu.core.common.model.core.DpsHeaders;
-import org.opengroup.osdu.core.common.model.AppException;
-import org.opengroup.osdu.core.common.model.coreis.SlbHeaders;
-import org.opengroup.osdu.core.common.provider.interfaces.IHeadersInfo;
-import org.opengroup.osdu.core.common.service.coreis.Preconditions;
-import org.springframework.beans.factory.annotation.Qualifier;
-import org.springframework.context.annotation.Primary;
-import org.springframework.stereotype.Component;
-
-import javax.inject.Inject;
-import java.util.HashSet;
-import java.util.Map;
-import java.util.stream.Collectors;
-
-@Primary
-@Log
-@Component
-public class HeadersInfoAwsImpl implements IHeadersInfo {
-
-    @Inject
-    @Qualifier("dpsHeaderFactorySearch")
-    private DpsHeaders headersMap;
-
-
-    private static final HashSet<String> FORBIDDEN_FROM_LOGGING = new HashSet<>();
-    static {
-        FORBIDDEN_FROM_LOGGING.add(DpsHeaders.AUTHORIZATION);
-        FORBIDDEN_FROM_LOGGING.add(DpsHeaders.ON_BEHALF_OF);
-    }
-
-    /**
-     * Get list of current headers
-     * @return DpsHeaders headers
-     */
-    @Override
-    public DpsHeaders getHeaders() {
-        if (headersMap == null) {
-            log.warning("Headers Map DpsHeaders is null");
-            // throw to prevent null reference exception below
-            throw new AppException(HttpStatus.SC_INTERNAL_SERVER_ERROR, "Invalid Headers", "Headers Map DpsHeaders is null");
-        }
-        DpsHeaders headers = this.getCoreServiceHeaders(headersMap.getHeaders());
-        return headers;
-    }
-
-    /**
-     * get current logged in user
-     * @return userEmail
-     */
-    @Override
-    public String getUser() {
-        // TODO: This class is going to be deprecated soon so this whole class will go away. Additionally there shouldn't be a user email attached to the request because this is a message from storage.
-        return "user";
-    }
-
-    /**
-     * get partition id and fallback to account id
-     * @return Partition ID
-     */
-    @Override
-    public String getPartitionId() {
-        return getHeaders().getPartitionIdWithFallbackToAccountId();
-    }
-
-    /**
-     * get the primary partition id
-     * @return primaryPartitionID
-     */
-    @Override
-    public String getPrimaryPartitionId() {
-        return getHeadersMap().get(SlbHeaders.PRIMARY_PARTITION_ID);
-    }
-
-    /**
-     * get map of the current headers
-     * @return Map<String, String> headers
-     */
-    @Override
-    public Map<String, String> getHeadersMap() {
-        return getHeaders().getHeaders();
-    }
-
-    /**
-     * supplement the DPSHeaders with any specific core service headers
-     * @param input Map<String, String> of core headers
-     * @return DpsHeaders dpsHeaders
-     */
-    @Override
-    public DpsHeaders getCoreServiceHeaders(Map<String, String> input) {
-        Preconditions.checkNotNull(input, "input headers cannot be null");
-
-        DpsHeaders output = DpsHeaders.createFromMap(input);
-
-        return output;
-    }
-
-    /**
-     * create string representing a comma delimited list of the current headers
-     * @return
-     */
-    @Override
-    public String toString() {
-        return this.getHeadersMap().entrySet().stream().filter(map -> !FORBIDDEN_FROM_LOGGING.contains(map.getKey().toLowerCase())).map(Map.Entry::toString).collect(Collectors.joining(" | "));
-    }
-
-}
\ No newline at end of file
diff --git a/provider/indexer-aws/src/main/java/org/opengroup/osdu/indexer/aws/util/IndexerQueueTaskBuilderAws.java b/provider/indexer-aws/src/main/java/org/opengroup/osdu/indexer/aws/util/IndexerQueueTaskBuilderAws.java
index c7f0eb4edf857339b2872bee6c52b832d0ee92aa..76607c97a21bd574e3f4f59d0b1f477c1543e799 100644
--- a/provider/indexer-aws/src/main/java/org/opengroup/osdu/indexer/aws/util/IndexerQueueTaskBuilderAws.java
+++ b/provider/indexer-aws/src/main/java/org/opengroup/osdu/indexer/aws/util/IndexerQueueTaskBuilderAws.java
@@ -16,7 +16,7 @@ package org.opengroup.osdu.indexer.aws.util;
 
 import com.amazonaws.services.sqs.AmazonSQS;
 import com.amazonaws.services.sqs.model.SendMessageRequest;
-import org.opengroup.osdu.core.common.model.core.DpsHeaders;
+import org.opengroup.osdu.core.common.model.http.DpsHeaders;
 import org.opengroup.osdu.core.aws.sqs.AmazonSQSConfig;
 import org.opengroup.osdu.indexer.util.IndexerQueueTaskBuilder;
 import org.springframework.beans.factory.annotation.Value;
diff --git a/provider/indexer-aws/src/main/java/org/opengroup/osdu/indexer/aws/util/RequestInfoImpl.java b/provider/indexer-aws/src/main/java/org/opengroup/osdu/indexer/aws/util/RequestInfoImpl.java
index dbce6b79d2d907576fd71d1075d9c5440da67d90..35a79e347301c29d58abbe4f0c4de82824c9c902 100644
--- a/provider/indexer-aws/src/main/java/org/opengroup/osdu/indexer/aws/util/RequestInfoImpl.java
+++ b/provider/indexer-aws/src/main/java/org/opengroup/osdu/indexer/aws/util/RequestInfoImpl.java
@@ -16,11 +16,10 @@ package org.opengroup.osdu.indexer.aws.util;
 
 import lombok.extern.java.Log;
 import org.apache.http.HttpStatus;
-import org.opengroup.osdu.core.common.model.core.DpsHeaders;
-import org.opengroup.osdu.core.common.model.AppException;
+import org.opengroup.osdu.core.common.model.http.DpsHeaders;
+import org.opengroup.osdu.core.common.model.http.AppException;
 import org.opengroup.osdu.core.common.provider.interfaces.IRequestInfo;
-import org.opengroup.osdu.core.common.service.coreis.Preconditions;
-import org.springframework.beans.factory.annotation.Qualifier;
+import org.opengroup.osdu.core.common.service.search.Preconditions;
 import org.springframework.context.annotation.Primary;
 import org.springframework.stereotype.Component;
 
@@ -35,7 +34,6 @@ import java.util.Map;
 public class RequestInfoImpl implements IRequestInfo {
 
     @Inject
-    @Qualifier("dpsHeaderFactorySearch")
     private DpsHeaders headersMap;
 
 
diff --git a/provider/indexer-aws/src/main/resources/application.properties b/provider/indexer-aws/src/main/resources/application.properties
index b67b44c6ff2e30270dff83460659c46e20bb8091..44abedf4c31cc3779ea932d5ccb02c6047ba277b 100644
--- a/provider/indexer-aws/src/main/resources/application.properties
+++ b/provider/indexer-aws/src/main/resources/application.properties
@@ -39,7 +39,8 @@ spring.security.user.roles=service.storage.admin
 
 
 # AWS ES configuration
-aws.es.host=https://search-${ENVIRONMENT}-osdu-indexer-i5bpf2gv4iv6ha2xi7rook2rga.${AWS_REGION}.es.amazonaws.com
+#aws.es.host=https://search-${ENVIRONMENT}-osdu-indexer-i5bpf2gv4iv6ha2xi7rook2rga.${AWS_REGION}.es.amazonaws.com
+aws.es.host=https://search-dev-ado-test-y5m2xdyqha2npp36kh42vl3n7m.us-east-1.es.amazonaws.com
 aws.es.port=-1
 aws.es.userNameAndPassword=notused
 aws.region=${AWS_REGION}
@@ -51,9 +52,12 @@ aws.es.serviceName=es
 
 GAE_SERVICE=indexer
 
-STORAGE_SCHEMA_HOST=http://ECSALB-os-storage-1575155422.${AWS_REGION}.elb.amazonaws.com/api/storage/v2/schemas
-STORAGE_QUERY_RECORD_HOST=http://ECSALB-os-storage-1575155422.${AWS_REGION}.elb.amazonaws.com/api/storage/v2/query/records
-STORAGE_QUERY_RECORD_FOR_CONVERSION_HOST=http://ECSALB-os-storage-1575155422.${AWS_REGION}.elb.amazonaws.com/api/storage/v2/query/records:batch
+#STORAGE_SCHEMA_HOST=http://ECSALB-os-storage-1575155422.${AWS_REGION}.elb.amazonaws.com/api/storage/v2/schemas
+STORAGE_SCHEMA_HOST=http://localhost:8080/api/storage/v2/schemas
+#STORAGE_QUERY_RECORD_HOST=http://ECSALB-os-storage-1575155422.${AWS_REGION}.elb.amazonaws.com/api/storage/v2/query/records
+STORAGE_QUERY_RECORD_HOST=http://localhost:8080/api/storage/v2/query/records
+#STORAGE_QUERY_RECORD_FOR_CONVERSION_HOST=http://ECSALB-os-storage-1575155422.${AWS_REGION}.elb.amazonaws.com/api/storage/v2/query/records:batch
+STORAGE_QUERY_RECORD_FOR_CONVERSION_HOST=http://localhost:8080/api/storage/v2/query/records:batch
 STORAGE_RECORDS_BATCH_SIZE=20
 INDEXER_QUEUE_HOST=http://sqs.${AWS_REGION}.amazonaws.com/${AWS_ACCOUNT_ID}/${ENVIRONMENT}-osdu-indexer-queue
 
diff --git a/provider/indexer-aws/src/test/java/org/opengroup/osdu/indexer/aws/publish/PublisherImplTest.java b/provider/indexer-aws/src/test/java/org/opengroup/osdu/indexer/aws/publish/PublisherImplTest.java
index 08fb01e57ade05e967943db33bf92a32c1648908..79ef1356aa94e2462eeb189578589a7bfbbfd69b 100644
--- a/provider/indexer-aws/src/test/java/org/opengroup/osdu/indexer/aws/publish/PublisherImplTest.java
+++ b/provider/indexer-aws/src/test/java/org/opengroup/osdu/indexer/aws/publish/PublisherImplTest.java
@@ -23,7 +23,7 @@ import org.junit.runner.RunWith;
 import org.mockito.InjectMocks;
 import org.mockito.Mock;
 import org.mockito.Mockito;
-import org.opengroup.osdu.core.common.model.core.DpsHeaders;
+import org.opengroup.osdu.core.common.model.http.DpsHeaders;
 import org.opengroup.osdu.core.aws.sns.PublishRequestBuilder;
 import org.opengroup.osdu.indexer.aws.IndexerAwsApplication;
 import org.opengroup.osdu.core.common.model.indexer.JobStatus;
diff --git a/provider/indexer-azure/pom.xml b/provider/indexer-azure/pom.xml
index f4502a59860302d945f0d401173c1766c2e9ca40..d9995ba516a165f4f2f5dc97be3edefe3780fb38 100644
--- a/provider/indexer-azure/pom.xml
+++ b/provider/indexer-azure/pom.xml
@@ -70,6 +70,11 @@
             <groupId>org.springframework.security</groupId>
             <artifactId>spring-security-oauth2-jose</artifactId>
         </dependency>
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-configuration-processor</artifactId>
+            <optional>true</optional>
+        </dependency>
         <dependency>
             <groupId>com.microsoft.azure</groupId>
             <artifactId>azure-cosmosdb-spring-boot-starter</artifactId>
diff --git a/provider/indexer-azure/src/main/java/org/opengroup/osdu/indexer/azure/IndexerAzureApplication.java b/provider/indexer-azure/src/main/java/org/opengroup/osdu/indexer/azure/IndexerAzureApplication.java
index 6579c8cdc50d1103b84a7ebb33b65b2790b5ad61..8cef929b830f610b1c87efe6614f871e420f9d5f 100644
--- a/provider/indexer-azure/src/main/java/org/opengroup/osdu/indexer/azure/IndexerAzureApplication.java
+++ b/provider/indexer-azure/src/main/java/org/opengroup/osdu/indexer/azure/IndexerAzureApplication.java
@@ -20,7 +20,7 @@ import org.springframework.context.annotation.ComponentScan;
 import org.springframework.context.annotation.Configuration;
 
 @SpringBootApplication
-@ComponentScan({"org.opengroup.osdu.core.common", "org.opengroup.osdu.indexer"})
+@ComponentScan({"org.opengroup.osdu"})
 public class IndexerAzureApplication {
 
     public static void main(String[] args) {
diff --git a/provider/indexer-azure/src/main/java/org/opengroup/osdu/indexer/azure/cache/AttributesCache.java b/provider/indexer-azure/src/main/java/org/opengroup/osdu/indexer/azure/cache/AttributesCache.java
index 261ae37f8040ec01ba177a1a5593406a0f4e0bbb..9a3bdfadcf8e5cb8a552ba838d635591951027ca 100644
--- a/provider/indexer-azure/src/main/java/org/opengroup/osdu/indexer/azure/cache/AttributesCache.java
+++ b/provider/indexer-azure/src/main/java/org/opengroup/osdu/indexer/azure/cache/AttributesCache.java
@@ -14,7 +14,7 @@
 
 package org.opengroup.osdu.indexer.azure.cache;
 
-import org.opengroup.osdu.core.common.model.core.cache.VmCache;
+import org.opengroup.osdu.core.common.cache.VmCache;
 import org.opengroup.osdu.core.common.provider.interfaces.IAttributesCache;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Component;
diff --git a/provider/indexer-azure/src/main/java/org/opengroup/osdu/indexer/azure/cache/CosmosDBSchemaCache.java b/provider/indexer-azure/src/main/java/org/opengroup/osdu/indexer/azure/cache/CosmosDBSchemaCache.java
index 2f1647170cecafa4e0142b686624ff656e80aea9..29e46611e868819a57913736a1c62f1def6de353 100644
--- a/provider/indexer-azure/src/main/java/org/opengroup/osdu/indexer/azure/cache/CosmosDBSchemaCache.java
+++ b/provider/indexer-azure/src/main/java/org/opengroup/osdu/indexer/azure/cache/CosmosDBSchemaCache.java
@@ -15,7 +15,7 @@
 package org.opengroup.osdu.indexer.azure.cache;
 
 
-import org.opengroup.osdu.core.common.model.core.cache.VmCache;
+import org.opengroup.osdu.core.common.cache.VmCache;
 import org.opengroup.osdu.core.common.model.storage.Schema;
 import org.springframework.stereotype.Component;
 
diff --git a/provider/indexer-azure/src/main/java/org/opengroup/osdu/indexer/azure/cache/ElasticCredentialsCache.java b/provider/indexer-azure/src/main/java/org/opengroup/osdu/indexer/azure/cache/ElasticCredentialsCache.java
index b7f36fbb563a6279be7246d74d6b3540c8c341ee..ccca6407ea5f2b1b5f6c71bcbe3ff91ebfe2d40f 100644
--- a/provider/indexer-azure/src/main/java/org/opengroup/osdu/indexer/azure/cache/ElasticCredentialsCache.java
+++ b/provider/indexer-azure/src/main/java/org/opengroup/osdu/indexer/azure/cache/ElasticCredentialsCache.java
@@ -1,7 +1,7 @@
 package org.opengroup.osdu.indexer.azure.cache;
 
-import org.opengroup.osdu.core.common.model.core.cache.VmCache;
-import org.opengroup.osdu.core.common.model.core.ClusterSettings;
+import org.opengroup.osdu.core.common.cache.VmCache;
+import org.opengroup.osdu.core.common.model.search.ClusterSettings;
 import org.opengroup.osdu.core.common.provider.interfaces.IElasticCredentialsCache;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Component;
diff --git a/provider/indexer-azure/src/main/java/org/opengroup/osdu/indexer/azure/cache/IndexCache.java b/provider/indexer-azure/src/main/java/org/opengroup/osdu/indexer/azure/cache/IndexCache.java
index b0dcc3d64da1200e8de7e09b3cd114032ec4d805..dd33ae348a9566b2bc977a3fa99dfefd046268f2 100644
--- a/provider/indexer-azure/src/main/java/org/opengroup/osdu/indexer/azure/cache/IndexCache.java
+++ b/provider/indexer-azure/src/main/java/org/opengroup/osdu/indexer/azure/cache/IndexCache.java
@@ -1,6 +1,6 @@
 package org.opengroup.osdu.indexer.azure.cache;
 
-import org.opengroup.osdu.core.common.model.core.cache.VmCache;
+import org.opengroup.osdu.core.common.cache.VmCache;
 import org.opengroup.osdu.core.common.provider.interfaces.IIndexCache;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Component;
diff --git a/provider/indexer-azure/src/main/java/org/opengroup/osdu/indexer/azure/cache/JwtCache.java b/provider/indexer-azure/src/main/java/org/opengroup/osdu/indexer/azure/cache/JwtCache.java
index b08cf8733db721c9e60f695bc4479319f5a8d854..cf807c8b250597516a32b5f2a997fc493e01dea7 100644
--- a/provider/indexer-azure/src/main/java/org/opengroup/osdu/indexer/azure/cache/JwtCache.java
+++ b/provider/indexer-azure/src/main/java/org/opengroup/osdu/indexer/azure/cache/JwtCache.java
@@ -1,7 +1,7 @@
 package org.opengroup.osdu.indexer.azure.cache;
 
-import org.opengroup.osdu.core.common.model.core.cache.VmCache;
-import org.opengroup.osdu.core.common.model.coreis.IdToken;
+import org.opengroup.osdu.core.common.cache.VmCache;
+import org.opengroup.osdu.core.common.model.search.IdToken;
 import org.opengroup.osdu.core.common.provider.interfaces.IJwtCache;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Component;
diff --git a/provider/indexer-azure/src/main/java/org/opengroup/osdu/indexer/azure/cache/KindsCache.java b/provider/indexer-azure/src/main/java/org/opengroup/osdu/indexer/azure/cache/KindsCache.java
index d1bd6549aaf8453746608a1e3024a82ab7167201..8cd6c3a9342bfddcf70bafb815230613bfa40dfa 100644
--- a/provider/indexer-azure/src/main/java/org/opengroup/osdu/indexer/azure/cache/KindsCache.java
+++ b/provider/indexer-azure/src/main/java/org/opengroup/osdu/indexer/azure/cache/KindsCache.java
@@ -1,6 +1,6 @@
 package org.opengroup.osdu.indexer.azure.cache;
 
-import org.opengroup.osdu.core.common.model.core.cache.VmCache;
+import org.opengroup.osdu.core.common.cache.VmCache;
 import org.opengroup.osdu.core.common.provider.interfaces.IKindsCache;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Component;
diff --git a/provider/indexer-azure/src/main/java/org/opengroup/osdu/indexer/azure/cache/SchemaCache.java b/provider/indexer-azure/src/main/java/org/opengroup/osdu/indexer/azure/cache/SchemaCache.java
index 8ac913814f110e00d1d69846509df74b00f00f0a..99d5f3f1fe36b3d2f591db677564dbf8da041f94 100644
--- a/provider/indexer-azure/src/main/java/org/opengroup/osdu/indexer/azure/cache/SchemaCache.java
+++ b/provider/indexer-azure/src/main/java/org/opengroup/osdu/indexer/azure/cache/SchemaCache.java
@@ -1,6 +1,6 @@
 package org.opengroup.osdu.indexer.azure.cache;
 
-import org.opengroup.osdu.core.common.model.core.cache.VmCache;
+import org.opengroup.osdu.core.common.cache.VmCache;
 import org.opengroup.osdu.indexer.provider.interfaces.ISchemaCache;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Component;
diff --git a/provider/indexer-azure/src/main/java/org/opengroup/osdu/indexer/azure/di/EntitlementsFactoryAzure.java b/provider/indexer-azure/src/main/java/org/opengroup/osdu/indexer/azure/di/EntitlementsFactoryAzure.java
index 1f8009173ee498d62f038a033651fd142fe2aae1..0f3c5e3d465d7dd3e23d76ec1a2fdff66c24b18c 100644
--- a/provider/indexer-azure/src/main/java/org/opengroup/osdu/indexer/azure/di/EntitlementsFactoryAzure.java
+++ b/provider/indexer-azure/src/main/java/org/opengroup/osdu/indexer/azure/di/EntitlementsFactoryAzure.java
@@ -14,9 +14,9 @@
 
 package org.opengroup.osdu.indexer.azure.di;
 
-import org.opengroup.osdu.core.common.model.core.DpsHeaders;
-import org.opengroup.osdu.core.common.service.core.entitlements.IEntitlementsFactory;
-import org.opengroup.osdu.core.common.service.core.entitlements.IEntitlementsService;
+import org.opengroup.osdu.core.common.model.http.DpsHeaders;
+import org.opengroup.osdu.core.common.service.entitlements.IEntitlementsFactory;
+import org.opengroup.osdu.core.common.service.entitlements.IEntitlementsService;
 import org.springframework.context.annotation.Primary;
 import org.springframework.stereotype.Component;
 
diff --git a/provider/indexer-azure/src/main/java/org/opengroup/osdu/indexer/azure/di/EntitlementsServiceAzure.java b/provider/indexer-azure/src/main/java/org/opengroup/osdu/indexer/azure/di/EntitlementsServiceAzure.java
index 2888f305b33281ec05cac449e3b276ff4c9569f2..e333b3f0864cf2f16030ed5704db8ceab219a874 100644
--- a/provider/indexer-azure/src/main/java/org/opengroup/osdu/indexer/azure/di/EntitlementsServiceAzure.java
+++ b/provider/indexer-azure/src/main/java/org/opengroup/osdu/indexer/azure/di/EntitlementsServiceAzure.java
@@ -17,11 +17,10 @@ package org.opengroup.osdu.indexer.azure.di;
 import com.microsoft.azure.spring.autoconfigure.aad.UserPrincipal;
 import org.apache.http.HttpStatus;
 
-import org.opengroup.osdu.core.common.model.core.DpsHeaders;
-import org.opengroup.osdu.core.common.model.core.entitlements.*;
-import org.opengroup.osdu.core.common.service.core.entitlements.IEntitlementsService;
-import org.opengroup.osdu.core.common.model.core.entitlements.*;
-import org.opengroup.osdu.core.common.service.core.HttpResponse;
+import org.opengroup.osdu.core.common.model.entitlements.*;
+import org.opengroup.osdu.core.common.model.http.DpsHeaders;
+import org.opengroup.osdu.core.common.service.entitlements.IEntitlementsService;
+import org.opengroup.osdu.core.common.service.http.HttpResponse;
 import org.springframework.security.core.Authentication;
 import org.springframework.security.core.GrantedAuthority;
 import org.springframework.security.core.context.SecurityContextHolder;
diff --git a/provider/indexer-azure/src/main/java/org/opengroup/osdu/indexer/azure/di/TenantFactoryImpl.java b/provider/indexer-azure/src/main/java/org/opengroup/osdu/indexer/azure/di/TenantFactoryImpl.java
index 03d7886b6c138ffff6d3a64db40dc8d62477fbe6..df488c799062c5590d025ee7913cf15ef9334551 100644
--- a/provider/indexer-azure/src/main/java/org/opengroup/osdu/indexer/azure/di/TenantFactoryImpl.java
+++ b/provider/indexer-azure/src/main/java/org/opengroup/osdu/indexer/azure/di/TenantFactoryImpl.java
@@ -14,9 +14,9 @@
 
 package org.opengroup.osdu.indexer.azure.di;
 
-import org.opengroup.osdu.core.common.model.core.ICache;
-import org.opengroup.osdu.core.common.model.core.ITenantFactory;
-import org.opengroup.osdu.core.common.model.core.TenantInfo;
+import org.opengroup.osdu.core.common.cache.ICache;
+import org.opengroup.osdu.core.common.provider.interfaces.ITenantFactory;
+import org.opengroup.osdu.core.common.model.tenant.TenantInfo;
 import org.springframework.stereotype.Component;
 import org.springframework.web.context.annotation.RequestScope;
 
diff --git a/provider/indexer-azure/src/main/java/org/opengroup/osdu/indexer/azure/di/TenantInfoFactory.java b/provider/indexer-azure/src/main/java/org/opengroup/osdu/indexer/azure/di/TenantInfoFactory.java
deleted file mode 100644
index 7b1d93b54cd41d6607fa036a681bccff07b15867..0000000000000000000000000000000000000000
--- a/provider/indexer-azure/src/main/java/org/opengroup/osdu/indexer/azure/di/TenantInfoFactory.java
+++ /dev/null
@@ -1,45 +0,0 @@
-// Copyright © Microsoft Corporation
-//
-// 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.indexer.azure.di;
-
-import lombok.extern.java.Log;
-import org.opengroup.osdu.core.common.model.core.DpsHeaders;
-import org.opengroup.osdu.core.common.model.core.ITenantFactory;
-import org.opengroup.osdu.core.common.model.core.TenantInfo;
-import org.springframework.beans.factory.annotation.Qualifier;
-import org.springframework.beans.factory.config.AbstractFactoryBean;
-import org.springframework.stereotype.Component;
-import org.springframework.web.context.annotation.RequestScope;
-import javax.inject.Inject;
-
-@Log
-@Component
-@RequestScope
-public class TenantInfoFactory extends AbstractFactoryBean<TenantInfo> {
-    @Inject
-    private ITenantFactory tenantFactory;
-    @Inject
-    @Qualifier("dpsHeaderFactorySearch")
-    private DpsHeaders headers;
-    @Override
-    protected TenantInfo createInstance() throws Exception {
-        String id = this.headers.getPartitionIdWithFallbackToAccountId();
-        return this.tenantFactory.getTenantInfo(id);
-    }
-    @Override
-    public Class<?> getObjectType() {
-        return TenantInfo.class;
-    }
-}
diff --git a/provider/indexer-azure/src/main/java/org/opengroup/osdu/indexer/azure/persistence/ElasticRepositoryCosmosDB.java b/provider/indexer-azure/src/main/java/org/opengroup/osdu/indexer/azure/persistence/ElasticRepositoryCosmosDB.java
index 5cb4b9156a1cacbd2906c1a5203ddfb6b682e09c..daa9fd7ab8acfaf4171e4ce5893dc265ec8b0aa5 100644
--- a/provider/indexer-azure/src/main/java/org/opengroup/osdu/indexer/azure/persistence/ElasticRepositoryCosmosDB.java
+++ b/provider/indexer-azure/src/main/java/org/opengroup/osdu/indexer/azure/persistence/ElasticRepositoryCosmosDB.java
@@ -16,12 +16,12 @@ package org.opengroup.osdu.indexer.azure.persistence;
 
 import org.apache.http.HttpStatus;
 
-import org.opengroup.osdu.core.common.model.core.TenantInfo;
+import org.opengroup.osdu.core.common.model.tenant.TenantInfo;
 import org.opengroup.osdu.indexer.azure.model.ElasticSettingSchema;
-import org.opengroup.osdu.core.common.model.core.ClusterSettings;
+import org.opengroup.osdu.core.common.model.search.ClusterSettings;
 import org.opengroup.osdu.core.common.provider.interfaces.IElasticRepository;
-import org.opengroup.osdu.core.common.model.AppException;
-import org.opengroup.osdu.core.common.service.coreis.Preconditions;
+import org.opengroup.osdu.core.common.model.http.AppException;
+import org.opengroup.osdu.core.common.service.search.Preconditions;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Component;
 import javax.inject.Inject;
diff --git a/provider/indexer-azure/src/main/java/org/opengroup/osdu/indexer/azure/publish/PublisherImpl.java b/provider/indexer-azure/src/main/java/org/opengroup/osdu/indexer/azure/publish/PublisherImpl.java
index 4a8f4ee1476c0058faafe8e2555d78d6aaef91be..e2c50e2cd3324879e0467fe9a35fa7d9f60eec17 100644
--- a/provider/indexer-azure/src/main/java/org/opengroup/osdu/indexer/azure/publish/PublisherImpl.java
+++ b/provider/indexer-azure/src/main/java/org/opengroup/osdu/indexer/azure/publish/PublisherImpl.java
@@ -24,12 +24,12 @@ import com.microsoft.azure.servicebus.Message;
 import com.microsoft.azure.servicebus.TopicClient;
 import org.elasticsearch.common.Strings;
 
-import org.opengroup.osdu.core.common.model.core.DpsHeaders;
+import org.opengroup.osdu.core.common.model.http.DpsHeaders;
 import org.opengroup.osdu.core.common.model.indexer.JobStatus;
 import org.opengroup.osdu.core.common.model.indexer.RecordStatus;
 import org.opengroup.osdu.core.common.service.logging.JaxRsDpsLog;
 import org.opengroup.osdu.indexer.provider.interfaces.IPublisher;
-import org.opengroup.osdu.core.common.model.coreis.RecordChangedMessages;
+import org.opengroup.osdu.core.common.model.search.RecordChangedMessages;
 import org.springframework.stereotype.Component;
 import org.springframework.web.context.annotation.RequestScope;
 
diff --git a/provider/indexer-azure/src/main/java/org/opengroup/osdu/indexer/azure/util/DpsHeadersAzureQueue.java b/provider/indexer-azure/src/main/java/org/opengroup/osdu/indexer/azure/util/DpsHeadersAzureQueue.java
new file mode 100644
index 0000000000000000000000000000000000000000..9bab4cec8aaf529b9039fb2beb9e0ecbaee6c0e6
--- /dev/null
+++ b/provider/indexer-azure/src/main/java/org/opengroup/osdu/indexer/azure/util/DpsHeadersAzureQueue.java
@@ -0,0 +1,43 @@
+package org.opengroup.osdu.indexer.azure.util;
+
+import java.util.Collections;
+import java.util.Map;
+import java.util.stream.Collectors;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.inject.Inject;
+
+import org.opengroup.osdu.core.common.model.http.DpsHeaders;
+
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.context.annotation.Primary;
+import org.springframework.stereotype.Component;
+import org.springframework.web.context.annotation.RequestScope;
+
+@Component
+@RequestScope
+@Primary
+public class DpsHeadersAzureQueue extends DpsHeaders {
+
+    @Value("${indexer.queue.key}")
+    private String queueKey;
+
+    //ToDo this should be moved to Azure client-lib
+    public static final String INDEXER_QUEUE_KEY = "x-functions-key";
+
+    @Inject
+    public DpsHeadersAzureQueue(HttpServletRequest request) {
+
+        Map<String, String> headers = Collections
+                .list(request.getHeaderNames())
+                .stream()
+                .collect(Collectors.toMap(h -> h, request::getHeader));
+
+        headers.put(INDEXER_QUEUE_KEY,queueKey);
+
+        this.addFromMap(headers);
+
+        // Add Correlation ID if missing
+        this.addCorrelationIdIfMissing();
+    }
+}
diff --git a/provider/indexer-azure/src/main/java/org/opengroup/osdu/indexer/azure/util/HeadersInfoAzureImpl.java b/provider/indexer-azure/src/main/java/org/opengroup/osdu/indexer/azure/util/HeadersInfoAzureImpl.java
deleted file mode 100644
index c4b64734876e491af4a6db9452d321f0ddba3043..0000000000000000000000000000000000000000
--- a/provider/indexer-azure/src/main/java/org/opengroup/osdu/indexer/azure/util/HeadersInfoAzureImpl.java
+++ /dev/null
@@ -1,97 +0,0 @@
-// Copyright © Microsoft Corporation
-//
-// 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.indexer.azure.util;
-
-import lombok.extern.java.Log;
-import org.opengroup.osdu.core.common.model.core.DpsHeaders;
-import org.opengroup.osdu.core.common.model.coreis.SlbHeaders;
-import org.opengroup.osdu.core.common.provider.interfaces.IHeadersInfo;
-import org.opengroup.osdu.core.common.service.coreis.Preconditions;
-import org.springframework.beans.factory.annotation.Qualifier;
-import org.springframework.beans.factory.annotation.Value;
-import org.springframework.stereotype.Component;
-import org.springframework.web.context.annotation.RequestScope;
-
-import javax.inject.Inject;
-import java.util.HashSet;
-import java.util.Map;
-import java.util.stream.Collectors;
-
-@Log
-@Component
-@RequestScope
-public class HeadersInfoAzureImpl implements IHeadersInfo {
-
-    @Inject
-    @Qualifier("dpsHeaderFactorySearch")
-    private DpsHeaders headersMap;
-
-    @Value("${indexer.queue.key}")
-     private String queueKey;
-
-    //ToDo this should be moved to Azure client-lib
-    public static final String INDEXER_QUEUE_KEY = "x-functions-key";
-
-    private static final HashSet<String> FORBIDDEN_FROM_LOGGING = new HashSet<>();
-    static {
-        FORBIDDEN_FROM_LOGGING.add(DpsHeaders.AUTHORIZATION);
-        FORBIDDEN_FROM_LOGGING.add(DpsHeaders.ON_BEHALF_OF);
-     //   FORBIDDEN_FROM_LOGGING.add(INDEXER_QUEUE_KEY);
-    }
-
-    @Override
-    public DpsHeaders getHeaders() {
-        if (headersMap == null) {
-            log.warning("Headers Map DpsHeaders is null");
-        }
-        DpsHeaders headers = this.getCoreServiceHeaders(headersMap.getHeaders());
-        return headers;
-    }
-
-    @Override
-    public String getUser() {
-        return getHeaders().getUserEmail();
-    }
-
-    @Override
-    public String getPartitionId() {
-        return getHeaders().getPartitionIdWithFallbackToAccountId();
-    }
-
-    @Override
-    public String getPrimaryPartitionId() {
-        return getHeadersMap().get(SlbHeaders.PRIMARY_PARTITION_ID);
-    }
-
-    @Override
-    public Map<String, String> getHeadersMap() {
-        return getHeaders().getHeaders();
-    }
-
-    @Override
-    public DpsHeaders getCoreServiceHeaders(Map<String, String> input) {
-        Preconditions.checkNotNull(input, "input headers cannot be null");
-
-        DpsHeaders output = DpsHeaders.createFromMap(input);
-       output.put(INDEXER_QUEUE_KEY,queueKey);
-        return output;
-    }
-
-    @Override
-    public String toString() {
-        return this.getHeadersMap().entrySet().stream().filter(map -> !FORBIDDEN_FROM_LOGGING.contains(map.getKey().toLowerCase())).map(Map.Entry::toString).collect(Collectors.joining(" | "));
-    }
-
-}
\ No newline at end of file
diff --git a/provider/indexer-azure/src/main/java/org/opengroup/osdu/indexer/azure/util/RequestInfoImpl.java b/provider/indexer-azure/src/main/java/org/opengroup/osdu/indexer/azure/util/RequestInfoImpl.java
index a3c7e2ca2ead802dd0d0c5093f6907cdf17fbb10..a3fb2083c884eac9e5002fc942ee882a8902c01a 100644
--- a/provider/indexer-azure/src/main/java/org/opengroup/osdu/indexer/azure/util/RequestInfoImpl.java
+++ b/provider/indexer-azure/src/main/java/org/opengroup/osdu/indexer/azure/util/RequestInfoImpl.java
@@ -16,14 +16,12 @@ package org.opengroup.osdu.indexer.azure.util;
 
 import com.google.common.base.Strings;
 import org.apache.http.HttpStatus;
-import org.opengroup.osdu.core.common.model.core.DpsHeaders;
-import org.opengroup.osdu.core.common.model.core.TenantInfo;
-import org.opengroup.osdu.core.common.model.AppException;
-import org.opengroup.osdu.core.common.model.coreis.DeploymentEnvironment;
-import org.opengroup.osdu.core.common.provider.interfaces.IHeadersInfo;
+import org.opengroup.osdu.core.common.model.http.DpsHeaders;
+import org.opengroup.osdu.core.common.model.tenant.TenantInfo;
+import org.opengroup.osdu.core.common.model.http.AppException;
+import org.opengroup.osdu.core.common.model.search.DeploymentEnvironment;
 import org.opengroup.osdu.core.common.provider.interfaces.IRequestInfo;
-import org.opengroup.osdu.core.common.provider.interfaces.IServiceAccountJwtClient;
-import org.springframework.beans.factory.annotation.Qualifier;
+import org.opengroup.osdu.core.common.service.util.IServiceAccountJwtClient;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Component;
 import org.springframework.web.context.annotation.RequestScope;
@@ -31,8 +29,8 @@ import org.springframework.web.context.annotation.RequestScope;
 import javax.inject.Inject;
 import java.util.Map;
 
-import static org.opengroup.osdu.core.common.model.core.DpsHeaders.AUTHORIZATION;
-import static org.opengroup.osdu.indexer.azure.util.HeadersInfoAzureImpl.INDEXER_QUEUE_KEY;
+import static org.opengroup.osdu.core.common.model.http.DpsHeaders.AUTHORIZATION;
+import static org.opengroup.osdu.indexer.azure.util.DpsHeadersAzureQueue.INDEXER_QUEUE_KEY;
 
 
 @Component
@@ -40,16 +38,12 @@ import static org.opengroup.osdu.indexer.azure.util.HeadersInfoAzureImpl.INDEXER
 public class RequestInfoImpl implements IRequestInfo {
 
     @Inject
-    @Qualifier("dpsHeaderFactorySearch")
     private DpsHeaders dpsHeaders;
 
-    @Inject
-    private IHeadersInfo headersInfo;
     @Inject
     private IServiceAccountJwtClient serviceAccountJwtClient;
 
     @Inject
-    @Qualifier("TenantInfoFactorySearch")
     private TenantInfo tenantInfo;
 
     @Value("${DEPLOYMENT_ENVIRONMENT}")
@@ -59,17 +53,17 @@ public class RequestInfoImpl implements IRequestInfo {
     @Override
     public DpsHeaders getHeaders() {
 
-        return this.headersInfo.getHeaders();
+        return this.dpsHeaders;
     }
 
     @Override
     public String getPartitionId() {
-        return this.headersInfo.getPartitionId();
+        return this.dpsHeaders.getPartitionId();
     }
 
     @Override
     public Map<String, String> getHeadersMap() {
-        return this.headersInfo.getHeadersMap();
+        return this.dpsHeaders.getHeaders();
     }
 
     @Override
@@ -80,7 +74,7 @@ public class RequestInfoImpl implements IRequestInfo {
     @Override
     public DpsHeaders getHeadersWithDwdAuthZ() {
         this.dpsHeaders.put(AUTHORIZATION, this.checkOrGetAuthorizationHeader());
-        return this.headersInfo.getHeaders();
+        return this.dpsHeaders;
     }
 
     @Override
@@ -88,7 +82,7 @@ public class RequestInfoImpl implements IRequestInfo {
 
     @Override
     public boolean isTaskQueueRequest() {
-        if (!this.headersInfo.getHeadersMap().containsKey(INDEXER_QUEUE_KEY)) return false;
+        if (!this.dpsHeaders.getHeaders().containsKey(INDEXER_QUEUE_KEY)) return false;
 
 //        String queueId = this.headersInfo.getHeadersMap().get(AppEngineHeaders.TASK_QUEUE_NAME);
 //        return queueId.endsWith(Constants.INDEXER_QUEUE_IDENTIFIER);
@@ -97,7 +91,7 @@ public class RequestInfoImpl implements IRequestInfo {
 
     public String checkOrGetAuthorizationHeader() {
         if (DeploymentEnvironment.valueOf(DEPLOYMENT_ENVIRONMENT) == DeploymentEnvironment.LOCAL) {
-            String authHeader = this.headersInfo.getHeaders().getAuthorization();
+            String authHeader = this.dpsHeaders.getAuthorization();
             if (Strings.isNullOrEmpty(authHeader)) {
                 throw new AppException(HttpStatus.SC_UNAUTHORIZED, "Invalid authorization header", "Authorization token cannot be empty");
             }
diff --git a/provider/indexer-azure/src/main/java/org/opengroup/osdu/indexer/azure/util/ServiceAccountJwtClientImpl.java b/provider/indexer-azure/src/main/java/org/opengroup/osdu/indexer/azure/util/ServiceAccountJwtClientImpl.java
index 50b85eda79b2ca5088f5d27ce5c588153224aabf..c53630ad6e8b0435552a23fb31c006259514145e 100644
--- a/provider/indexer-azure/src/main/java/org/opengroup/osdu/indexer/azure/util/ServiceAccountJwtClientImpl.java
+++ b/provider/indexer-azure/src/main/java/org/opengroup/osdu/indexer/azure/util/ServiceAccountJwtClientImpl.java
@@ -20,18 +20,16 @@ import com.microsoft.aad.adal4j.AuthenticationContext;
 import com.microsoft.aad.adal4j.AuthenticationResult;
 import com.microsoft.aad.adal4j.ClientCredential;
 import org.apache.http.HttpStatus;
-import org.opengroup.osdu.core.common.model.core.DpsHeaders;
-import org.opengroup.osdu.core.common.model.core.ITenantFactory;
-import org.opengroup.osdu.core.common.model.core.TenantInfo;
-import org.opengroup.osdu.core.common.model.AppException;
+import org.opengroup.osdu.core.common.model.http.DpsHeaders;
+import org.opengroup.osdu.core.common.provider.interfaces.ITenantFactory;
+import org.opengroup.osdu.core.common.model.tenant.TenantInfo;
+import org.opengroup.osdu.core.common.model.http.AppException;
 import org.opengroup.osdu.core.common.service.logging.JaxRsDpsLog;
 import org.opengroup.osdu.indexer.azure.model.AADConfiguration;
 
-import org.opengroup.osdu.core.common.model.coreis.IdToken;
+import org.opengroup.osdu.core.common.model.search.IdToken;
 import org.opengroup.osdu.core.common.provider.interfaces.IJwtCache;
-import org.opengroup.osdu.core.common.provider.interfaces.IHeadersInfo;
-import org.opengroup.osdu.core.common.provider.interfaces.IServiceAccountJwtClient;
-import org.springframework.beans.factory.annotation.Qualifier;
+import org.opengroup.osdu.core.common.service.util.IServiceAccountJwtClient;
 import org.springframework.stereotype.Component;
 import org.springframework.web.context.annotation.RequestScope;
 
@@ -49,9 +47,6 @@ public class ServiceAccountJwtClientImpl implements IServiceAccountJwtClient {
     @Inject
     private ITenantFactory tenantInfoServiceProvider;
     @Inject
-    private IHeadersInfo headersInfoAzure;
-    @Inject
-    @Qualifier("dpsHeaderFactorySearch")
     private DpsHeaders dpsHeaders;
     @Inject
     private IJwtCache cacheService;
@@ -72,7 +67,6 @@ public class ServiceAccountJwtClientImpl implements IServiceAccountJwtClient {
         try {
 
             IdToken cachedToken = (IdToken) this.cacheService.get(tenant.getServiceAccount());
-            this.headersInfoAzure.getHeaders().put(DpsHeaders.USER_EMAIL, tenant.getServiceAccount());
             this.dpsHeaders.put(DpsHeaders.USER_EMAIL, tenant.getServiceAccount());
 
             if (!IdToken.refreshToken(cachedToken)) {
diff --git a/provider/indexer-azure/src/test/java/org/opengroup/osdu/indexer/azure/service/CronServiceImplTest.java b/provider/indexer-azure/src/test/java/org/opengroup/osdu/indexer/azure/service/CronServiceImplTest.java
index 448d15fdd585c42d68b61564c8cb5dd810f03d7e..5a3ecbedbef2bb83af177e4ed50fb1979ab1bbcc 100644
--- a/provider/indexer-azure/src/test/java/org/opengroup/osdu/indexer/azure/service/CronServiceImplTest.java
+++ b/provider/indexer-azure/src/test/java/org/opengroup/osdu/indexer/azure/service/CronServiceImplTest.java
@@ -22,14 +22,14 @@ import org.junit.Test;
 import org.junit.runner.RunWith;
 import org.mockito.InjectMocks;
 import org.mockito.Mock;
-import org.opengroup.osdu.core.common.model.core.DpsHeaders;
+import org.opengroup.osdu.core.common.model.http.DpsHeaders;
 import org.opengroup.osdu.core.common.service.logging.JaxRsDpsLog;
 import org.opengroup.osdu.indexer.service.CronServiceImpl;
-import org.opengroup.osdu.core.common.model.coreis.IndexInfo;
+import org.opengroup.osdu.core.common.model.search.IndexInfo;
 import org.opengroup.osdu.core.common.provider.interfaces.IRequestInfo;
-import org.opengroup.osdu.core.common.service.coreis.IndicesService;
-import org.opengroup.osdu.core.common.service.coreis.Config;
-import org.opengroup.osdu.is.core.util.ElasticClientHandler;
+import org.opengroup.osdu.core.common.service.search.IndicesService;
+import org.opengroup.osdu.core.common.service.search.Config;
+import org.opengroup.osdu.indexer.util.ElasticClientHandler;
 import org.powermock.core.classloader.annotations.PrepareForTest;
 import org.springframework.test.context.junit4.SpringRunner;
 
diff --git a/provider/indexer-azure/src/test/java/org/opengroup/osdu/indexer/azure/service/ElasticSettingServiceTest.java b/provider/indexer-azure/src/test/java/org/opengroup/osdu/indexer/azure/service/ElasticSettingServiceTest.java
index 836c09bc122fa5a0e6c24e790466577af9573a36..3dab65eba842691566d8cb5bb296719afb816abf 100644
--- a/provider/indexer-azure/src/test/java/org/opengroup/osdu/indexer/azure/service/ElasticSettingServiceTest.java
+++ b/provider/indexer-azure/src/test/java/org/opengroup/osdu/indexer/azure/service/ElasticSettingServiceTest.java
@@ -19,15 +19,15 @@ import org.junit.Test;
 import org.junit.runner.RunWith;
 import org.mockito.InjectMocks;
 import org.mockito.Mock;
-import org.opengroup.osdu.core.common.model.core.TenantInfo;
+import org.opengroup.osdu.core.common.model.http.DpsHeaders;
+import org.opengroup.osdu.core.common.model.tenant.TenantInfo;
 import org.opengroup.osdu.core.common.service.logging.JaxRsDpsLog;
 import org.opengroup.osdu.indexer.service.ElasticSettingServiceImpl;
-import org.opengroup.osdu.core.common.model.core.ClusterSettings;
+import org.opengroup.osdu.core.common.model.search.ClusterSettings;
 import org.opengroup.osdu.core.common.provider.interfaces.IElasticCredentialsCache;
 import org.opengroup.osdu.core.common.provider.interfaces.IElasticRepository;
-import org.opengroup.osdu.core.common.provider.interfaces.IHeadersInfo;
-import org.opengroup.osdu.core.common.service.coreis.ITenantInfoService;
-import org.opengroup.osdu.core.common.model.AppException;
+import org.opengroup.osdu.core.common.service.multitenancy.ITenantInfoService;
+import org.opengroup.osdu.core.common.model.http.AppException;
 import org.springframework.test.context.junit4.SpringRunner;
 
 import static org.junit.Assert.assertEquals;
@@ -50,7 +50,7 @@ public class ElasticSettingServiceTest {
     @Mock
     private ClusterSettings clusterSettings;
     @Mock
-    private IHeadersInfo headersInfo;
+    private DpsHeaders dpsHeaders;
 
     @Mock
     private JaxRsDpsLog log;
@@ -68,7 +68,7 @@ public class ElasticSettingServiceTest {
     @Before
     public void setup() {
         when(tenantInfo.getName()).thenReturn("tenant1");
-        when(this.headersInfo.getPartitionId()).thenReturn("tenant1");
+        when(this.dpsHeaders.getPartitionId()).thenReturn("tenant1");
         when(this.tenantInfoService.getTenantInfo()).thenReturn(tenantInfo);
         sut.GAE_SERVICE = "indexer";
         clusterSettings = ClusterSettings.builder().host(host).port(port).userNameAndPassword(credentials).build();
diff --git a/provider/indexer-azure/src/test/java/org/opengroup/osdu/indexer/azure/service/IndexCopyServiceImplTest.java b/provider/indexer-azure/src/test/java/org/opengroup/osdu/indexer/azure/service/IndexCopyServiceImplTest.java
index ae8bb1bea079c0883e59a50aad0bf0cdb0b8e134..8b6facf01c83c1a547905f605aa93b1297c1905e 100644
--- a/provider/indexer-azure/src/test/java/org/opengroup/osdu/indexer/azure/service/IndexCopyServiceImplTest.java
+++ b/provider/indexer-azure/src/test/java/org/opengroup/osdu/indexer/azure/service/IndexCopyServiceImplTest.java
@@ -30,18 +30,17 @@ import org.junit.runner.RunWith;
 import org.mockito.ArgumentMatchers;
 import org.mockito.InjectMocks;
 import org.mockito.Mock;
-import org.opengroup.osdu.core.common.model.core.DpsHeaders;
+import org.opengroup.osdu.core.common.model.http.DpsHeaders;
 import org.opengroup.osdu.indexer.logging.AuditLogger;
 import org.opengroup.osdu.indexer.service.IndexCopyServiceImpl;
 import org.opengroup.osdu.indexer.service.IndexerMappingService;
-import org.opengroup.osdu.core.common.model.core.ClusterSettings;
-import org.opengroup.osdu.core.common.provider.interfaces.IHeadersInfo;
+import org.opengroup.osdu.core.common.model.search.ClusterSettings;
 import org.opengroup.osdu.core.common.provider.interfaces.IRequestInfo;
-import org.opengroup.osdu.is.core.service.ElasticSettingService;
-import org.opengroup.osdu.core.common.service.coreis.IndicesService;
-import org.opengroup.osdu.core.common.model.AppException;
-import org.opengroup.osdu.is.core.util.ElasticClientHandler;
-import org.opengroup.osdu.core.common.service.coreis.ElasticIndexNameResolver;
+import org.opengroup.osdu.core.common.model.indexer.IElasticSettingService;
+import org.opengroup.osdu.core.common.service.search.IndicesService;
+import org.opengroup.osdu.core.common.model.http.AppException;
+import org.opengroup.osdu.indexer.util.ElasticClientHandler;
+import org.opengroup.osdu.core.common.service.search.ElasticIndexNameResolver;
 import org.powermock.core.classloader.annotations.PrepareForTest;
 import org.springframework.test.context.junit4.SpringRunner;
 
@@ -67,7 +66,7 @@ public class IndexCopyServiceImplTest {
     @Mock
     private IRequestInfo requestInfo;
     @Mock
-    private IHeadersInfo headersInfo;
+    private DpsHeaders dpsHeaders;
     @Mock
     private RestClient restClient;
     @Mock
@@ -83,7 +82,7 @@ public class IndexCopyServiceImplTest {
     @Mock
     private Response response;
     @Mock
-    private ElasticSettingService elasticSettingService;
+    private IElasticSettingService elasticSettingService;
     @Mock
     private AuditLogger auditLogger;
     @Mock
@@ -103,8 +102,6 @@ public class IndexCopyServiceImplTest {
         httpHeaders = new HashMap<>();
         httpHeaders.put(DpsHeaders.AUTHORIZATION, "testAuth");
         httpHeaders.put(DpsHeaders.CORRELATION_ID, correlationId);
-        DpsHeaders standardHeaders = DpsHeaders.createFromMap(httpHeaders);
-        when(headersInfo.getHeaders()).thenReturn(standardHeaders);
         when(requestInfo.getHeadersMapWithDwdAuthZ()).thenReturn(httpHeaders);
         when(response.getEntity()).thenReturn(httpEntity);
 
diff --git a/provider/indexer-azure/src/test/java/org/opengroup/osdu/indexer/azure/service/IndexerMappingServiceTest.java b/provider/indexer-azure/src/test/java/org/opengroup/osdu/indexer/azure/service/IndexerMappingServiceTest.java
index de4c73ec7e27e6398dea047cc87f1a44fd65e112..a391c1110ec40f5d395af88345f3723c0ce9d9ce 100644
--- a/provider/indexer-azure/src/test/java/org/opengroup/osdu/indexer/azure/service/IndexerMappingServiceTest.java
+++ b/provider/indexer-azure/src/test/java/org/opengroup/osdu/indexer/azure/service/IndexerMappingServiceTest.java
@@ -34,9 +34,9 @@ import org.mockito.InjectMocks;
 import org.mockito.Mock;
 import org.opengroup.osdu.core.common.model.indexer.IndexSchema;
 import org.opengroup.osdu.indexer.service.IndexerMappingServiceImpl;
-import org.opengroup.osdu.core.common.model.coreis.RecordMetaAttribute;
-import org.opengroup.osdu.core.common.model.AppException;
-import org.opengroup.osdu.is.core.util.ElasticClientHandler;
+import org.opengroup.osdu.core.common.model.search.RecordMetaAttribute;
+import org.opengroup.osdu.core.common.model.http.AppException;
+import org.opengroup.osdu.indexer.util.ElasticClientHandler;
 import org.powermock.api.mockito.PowerMockito;
 import org.powermock.core.classloader.annotations.PrepareForTest;
 import org.springframework.test.context.junit4.SpringRunner;
diff --git a/provider/indexer-azure/src/test/java/org/opengroup/osdu/indexer/azure/service/IndexerSchemaServiceTest.java b/provider/indexer-azure/src/test/java/org/opengroup/osdu/indexer/azure/service/IndexerSchemaServiceTest.java
index d7ebc39f0668c3feecdad565b5ec3c8fdfa8c82d..d5328f1e72afaa3ccc55138b583609b16d5b863c 100644
--- a/provider/indexer-azure/src/test/java/org/opengroup/osdu/indexer/azure/service/IndexerSchemaServiceTest.java
+++ b/provider/indexer-azure/src/test/java/org/opengroup/osdu/indexer/azure/service/IndexerSchemaServiceTest.java
@@ -30,11 +30,11 @@ import org.opengroup.osdu.indexer.provider.interfaces.ISchemaCache;
 import org.opengroup.osdu.indexer.service.IndexSchemaServiceImpl;
 import org.opengroup.osdu.indexer.service.IndexerMappingService;
 import org.opengroup.osdu.indexer.service.StorageService;
-import org.opengroup.osdu.core.common.model.coreis.RequestStatus;
-import org.opengroup.osdu.core.common.service.coreis.IndicesService;
-import org.opengroup.osdu.core.common.model.AppException;
-import org.opengroup.osdu.is.core.util.ElasticClientHandler;
-import org.opengroup.osdu.core.common.service.coreis.ElasticIndexNameResolver;
+import org.opengroup.osdu.core.common.model.http.RequestStatus;
+import org.opengroup.osdu.core.common.service.search.IndicesService;
+import org.opengroup.osdu.core.common.model.http.AppException;
+import org.opengroup.osdu.indexer.util.ElasticClientHandler;
+import org.opengroup.osdu.core.common.service.search.ElasticIndexNameResolver;
 import org.powermock.core.classloader.annotations.PrepareForTest;
 import org.springframework.test.context.junit4.SpringRunner;
 
diff --git a/provider/indexer-azure/src/test/java/org/opengroup/osdu/indexer/azure/service/ReindexServiceTest.java b/provider/indexer-azure/src/test/java/org/opengroup/osdu/indexer/azure/service/ReindexServiceTest.java
index 097e6b09f424b1170c2583d5763c764648b044cb..ca45627184c00727a2d4f81684933af07ac2bdfd 100644
--- a/provider/indexer-azure/src/test/java/org/opengroup/osdu/indexer/azure/service/ReindexServiceTest.java
+++ b/provider/indexer-azure/src/test/java/org/opengroup/osdu/indexer/azure/service/ReindexServiceTest.java
@@ -23,7 +23,7 @@ import org.junit.runner.RunWith;
 import org.mockito.ArgumentMatchers;
 import org.mockito.InjectMocks;
 import org.mockito.Mock;
-import org.opengroup.osdu.core.common.model.core.DpsHeaders;
+import org.opengroup.osdu.core.common.model.http.DpsHeaders;
 import org.opengroup.osdu.core.common.model.indexer.RecordQueryResponse;
 import org.opengroup.osdu.core.common.model.indexer.RecordReindexRequest;
 import org.opengroup.osdu.core.common.service.logging.JaxRsDpsLog;
diff --git a/provider/indexer-azure/src/test/java/org/opengroup/osdu/indexer/azure/service/StorageServiceTest.java b/provider/indexer-azure/src/test/java/org/opengroup/osdu/indexer/azure/service/StorageServiceTest.java
index 349ec61dc13e4ac9fbfcc7a4d84d8c4303f168af..aafb4dc7d47528074f4754430d8636756f537d0f 100644
--- a/provider/indexer-azure/src/test/java/org/opengroup/osdu/indexer/azure/service/StorageServiceTest.java
+++ b/provider/indexer-azure/src/test/java/org/opengroup/osdu/indexer/azure/service/StorageServiceTest.java
@@ -31,10 +31,10 @@ import org.opengroup.osdu.core.common.model.indexer.Records;
 import org.opengroup.osdu.core.common.service.logging.JaxRsDpsLog;
 import org.opengroup.osdu.indexer.service.StorageServiceImpl;
 import org.opengroup.osdu.core.common.model.indexer.JobStatus;
-import org.opengroup.osdu.core.common.model.coreis.HttpResponse;
+import org.opengroup.osdu.core.common.model.http.HttpResponse;
 import org.opengroup.osdu.core.common.provider.interfaces.IRequestInfo;
-import org.opengroup.osdu.core.common.service.coreis.IUrlFetchService;
-import org.opengroup.osdu.core.common.model.AppException;
+import org.opengroup.osdu.core.common.service.http.IUrlFetchService;
+import org.opengroup.osdu.core.common.model.http.AppException;
 import org.springframework.http.HttpStatus;
 import org.springframework.test.context.junit4.SpringRunner;
 
diff --git a/provider/indexer-azure/src/test/java/org/opengroup/osdu/indexer/azure/service/TenantInfoServiceTest.java b/provider/indexer-azure/src/test/java/org/opengroup/osdu/indexer/azure/service/TenantInfoServiceTest.java
deleted file mode 100644
index 08f7318b6eab6a4b02d00b52afa0fed34112726d..0000000000000000000000000000000000000000
--- a/provider/indexer-azure/src/test/java/org/opengroup/osdu/indexer/azure/service/TenantInfoServiceTest.java
+++ /dev/null
@@ -1,90 +0,0 @@
-// Copyright 2017-2019, Schlumberger
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//      http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.opengroup.osdu.indexer.azure.service;
-
-import org.junit.Before;
-import org.junit.Ignore;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.mockito.InjectMocks;
-import org.mockito.Mock;
-import org.opengroup.osdu.core.common.model.core.DpsHeaders;
-import org.opengroup.osdu.core.common.model.core.ITenantFactory;
-import org.opengroup.osdu.core.common.model.core.TenantInfo;
-import org.opengroup.osdu.indexer.service.TenantInfoServiceImpl;
-import org.opengroup.osdu.core.common.provider.interfaces.IHeadersInfo;
-import org.opengroup.osdu.core.common.model.AppException;
-import org.springframework.http.HttpHeaders;
-import org.springframework.test.context.junit4.SpringRunner;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNotNull;
-import static org.mockito.Mockito.when;
-
-@RunWith(SpringRunner.class)
-public class TenantInfoServiceTest {
-
-    private static final String HEADER_NAME = "ANY_HEADER";
-    private static final String HEADER_VALUE = "ANY_VALUE";
-
-    @Mock
-    private ITenantFactory tenantFactory;
-    @Mock
-    private IHeadersInfo headersInfo;
-    @InjectMocks
-    private TenantInfoServiceImpl sut;
-
-    @Mock
-    private TenantInfo info;
-
-    @Mock
-    private HttpHeaders httpHeaders;
-
-    @InjectMocks
-    private DpsHeaders HEADERS;
-
-    @Before
-    public void setup() {
-        HEADERS.put(HEADER_NAME, HEADER_VALUE);
-    }
-
-    @Ignore
-    @Test
-    public void should_return_validTenant_given_validAccountId() {
-
-        when(this.info.getName()).thenReturn("tenant1");
-        when(tenantFactory.getTenantInfo("tenant1")).thenReturn(info);
-
-        when(this.headersInfo.getHeaders()).thenReturn(HEADERS);
-
-        when(this.headersInfo.getPartitionId()).thenReturn("tenant1");
-
-        when(this.sut.getTenantInfo()).thenReturn(info);
-
-        assertNotNull(this.sut.getTenantInfo());
-        assertEquals("tenant1", this.sut.getTenantInfo().getName());
-    }
-
-    @Test(expected = AppException.class)
-    public void should_throwException_given_invalidAccountId() {
-
-        when(this.info.getName()).thenReturn("tenant2");
-        when(tenantFactory.getTenantInfo("tenant1")).thenReturn(null);
-
-        when(this.sut.getTenantInfo()).thenReturn(info);
-
-        assertNotNull(this.sut.getTenantInfo());
-    }
-}
\ No newline at end of file
diff --git a/provider/indexer-gcp/pom.xml b/provider/indexer-gcp/pom.xml
index 9527a032af5c51053b414b554f6fa55a63445712..95effcbb866ae127719c89e0ad998058f57d3fb1 100644
--- a/provider/indexer-gcp/pom.xml
+++ b/provider/indexer-gcp/pom.xml
@@ -41,6 +41,12 @@
             <version>0.1.13-SNAPSHOT</version>
         </dependency>
 
+        <dependency>
+            <groupId>org.opengroup.osdu</groupId>
+            <artifactId>os-core-common</artifactId>
+            <version>0.0.9-SNAPSHOT</version>
+        </dependency>
+
         <dependency>
             <groupId>com.google.cloud</groupId>
             <artifactId>google-cloud-datastore</artifactId>
diff --git a/provider/indexer-gcp/src/main/java/org/opengroup/osdu/indexer/IndexerGcpApplication.java b/provider/indexer-gcp/src/main/java/org/opengroup/osdu/indexer/IndexerGcpApplication.java
index 5cb877151202a552f498605bc90cee23b6a06d55..f72e93440739667f6f7ad9a5694a39e32eedf4aa 100644
--- a/provider/indexer-gcp/src/main/java/org/opengroup/osdu/indexer/IndexerGcpApplication.java
+++ b/provider/indexer-gcp/src/main/java/org/opengroup/osdu/indexer/IndexerGcpApplication.java
@@ -9,7 +9,7 @@ import org.springframework.context.annotation.Configuration;
 
 @SpringBootApplication(exclude = { SecurityAutoConfiguration.class, ManagementWebSecurityAutoConfiguration.class })
 @Configuration
-@ComponentScan({"org.opengroup.osdu.core.common", "org.opengroup.osdu.indexer"})
+@ComponentScan({"org.opengroup.osdu"})
 public class IndexerGcpApplication {
 
     public static void main(String[] args) {
diff --git a/provider/indexer-gcp/src/main/java/org/opengroup/osdu/indexer/cache/AttributesCache.java b/provider/indexer-gcp/src/main/java/org/opengroup/osdu/indexer/cache/AttributesCache.java
index 748b48cf6b5cf948c6c3cf6d397a9d923b3f5aab..b5789ec76026b8f7dc16737fe7cb3ae50301477d 100644
--- a/provider/indexer-gcp/src/main/java/org/opengroup/osdu/indexer/cache/AttributesCache.java
+++ b/provider/indexer-gcp/src/main/java/org/opengroup/osdu/indexer/cache/AttributesCache.java
@@ -14,7 +14,7 @@
 
 package org.opengroup.osdu.indexer.cache;
 
-import org.opengroup.osdu.core.common.model.core.cache.RedisCache;
+import org.opengroup.osdu.core.common.cache.RedisCache;
 import org.opengroup.osdu.core.common.provider.interfaces.IAttributesCache;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Component;
diff --git a/provider/indexer-gcp/src/main/java/org/opengroup/osdu/indexer/cache/DatastoreCredentialCache.java b/provider/indexer-gcp/src/main/java/org/opengroup/osdu/indexer/cache/DatastoreCredentialCache.java
index 4ab69267c245121da87eeb3d158be86dc081d42b..1ec502fe6aa4ab1f2267e429eab0b3c066f8e3f4 100644
--- a/provider/indexer-gcp/src/main/java/org/opengroup/osdu/indexer/cache/DatastoreCredentialCache.java
+++ b/provider/indexer-gcp/src/main/java/org/opengroup/osdu/indexer/cache/DatastoreCredentialCache.java
@@ -15,7 +15,7 @@
 package org.opengroup.osdu.indexer.cache;
 
 import com.google.auth.oauth2.AccessToken;
-import org.opengroup.osdu.core.common.model.core.cache.RedisCache;
+import org.opengroup.osdu.core.common.cache.RedisCache;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Component;
 
diff --git a/provider/indexer-gcp/src/main/java/org/opengroup/osdu/indexer/cache/ElasticCredentialsCache.java b/provider/indexer-gcp/src/main/java/org/opengroup/osdu/indexer/cache/ElasticCredentialsCache.java
index b1cb81f4d31e19e1ef93f8e84d50d35dd8c75e67..045b555c438d48bb44a700cda72c4f43df6332e0 100644
--- a/provider/indexer-gcp/src/main/java/org/opengroup/osdu/indexer/cache/ElasticCredentialsCache.java
+++ b/provider/indexer-gcp/src/main/java/org/opengroup/osdu/indexer/cache/ElasticCredentialsCache.java
@@ -1,7 +1,7 @@
 package org.opengroup.osdu.indexer.cache;
 
-import org.opengroup.osdu.core.common.model.core.cache.RedisCache;
-import org.opengroup.osdu.core.common.model.core.ClusterSettings;
+import org.opengroup.osdu.core.common.cache.RedisCache;
+import org.opengroup.osdu.core.common.model.search.ClusterSettings;
 import org.opengroup.osdu.core.common.provider.interfaces.IElasticCredentialsCache;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Component;
diff --git a/provider/indexer-gcp/src/main/java/org/opengroup/osdu/indexer/cache/IndexCache.java b/provider/indexer-gcp/src/main/java/org/opengroup/osdu/indexer/cache/IndexCache.java
index 4bd9b9bfb24d414a56f376bd8a443e43faa1fd17..c923ecc42ffcb1ea34d9fd0b06fe835b5e478168 100644
--- a/provider/indexer-gcp/src/main/java/org/opengroup/osdu/indexer/cache/IndexCache.java
+++ b/provider/indexer-gcp/src/main/java/org/opengroup/osdu/indexer/cache/IndexCache.java
@@ -1,6 +1,6 @@
 package org.opengroup.osdu.indexer.cache;
 
-import org.opengroup.osdu.core.common.model.core.cache.RedisCache;
+import org.opengroup.osdu.core.common.cache.RedisCache;
 import org.opengroup.osdu.core.common.provider.interfaces.IIndexCache;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Component;
diff --git a/provider/indexer-gcp/src/main/java/org/opengroup/osdu/indexer/cache/JwtCache.java b/provider/indexer-gcp/src/main/java/org/opengroup/osdu/indexer/cache/JwtCache.java
index 564690336e9d6e8bec4a0fcedbf17bd97588bba4..3ae398125b9e5ffbbc859fdc319fbfa4faa0abed 100644
--- a/provider/indexer-gcp/src/main/java/org/opengroup/osdu/indexer/cache/JwtCache.java
+++ b/provider/indexer-gcp/src/main/java/org/opengroup/osdu/indexer/cache/JwtCache.java
@@ -1,7 +1,7 @@
 package org.opengroup.osdu.indexer.cache;
 
-import org.opengroup.osdu.core.common.model.core.cache.RedisCache;
-import org.opengroup.osdu.core.common.model.coreis.IdToken;
+import org.opengroup.osdu.core.common.cache.RedisCache;
+import org.opengroup.osdu.core.common.model.search.IdToken;
 import org.opengroup.osdu.core.common.provider.interfaces.IJwtCache;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Component;
diff --git a/provider/indexer-gcp/src/main/java/org/opengroup/osdu/indexer/cache/KindsCache.java b/provider/indexer-gcp/src/main/java/org/opengroup/osdu/indexer/cache/KindsCache.java
index 92ff21abe4885b1bda698b73e164c7c4ca001363..68eb86f4afe07f05d478e43ad6cc78abb8386eba 100644
--- a/provider/indexer-gcp/src/main/java/org/opengroup/osdu/indexer/cache/KindsCache.java
+++ b/provider/indexer-gcp/src/main/java/org/opengroup/osdu/indexer/cache/KindsCache.java
@@ -1,6 +1,6 @@
 package org.opengroup.osdu.indexer.cache;
 
-import org.opengroup.osdu.core.common.model.core.cache.RedisCache;
+import org.opengroup.osdu.core.common.cache.RedisCache;
 import org.opengroup.osdu.core.common.provider.interfaces.IKindsCache;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Component;
diff --git a/provider/indexer-gcp/src/main/java/org/opengroup/osdu/indexer/cache/SchemaCache.java b/provider/indexer-gcp/src/main/java/org/opengroup/osdu/indexer/cache/SchemaCache.java
index bf07123ea3311d429175524efab35c3ba10c165d..ef7ba72ab5cdcf0ead81c0d66bf1b5d39fcdad7f 100644
--- a/provider/indexer-gcp/src/main/java/org/opengroup/osdu/indexer/cache/SchemaCache.java
+++ b/provider/indexer-gcp/src/main/java/org/opengroup/osdu/indexer/cache/SchemaCache.java
@@ -1,6 +1,6 @@
 package org.opengroup.osdu.indexer.cache;
 
-import org.opengroup.osdu.core.common.model.core.cache.RedisCache;
+import org.opengroup.osdu.core.common.cache.RedisCache;
 import org.opengroup.osdu.indexer.provider.interfaces.ISchemaCache;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Component;
diff --git a/provider/indexer-gcp/src/main/java/org/opengroup/osdu/indexer/di/EntitlementsClientFactory.java b/provider/indexer-gcp/src/main/java/org/opengroup/osdu/indexer/di/EntitlementsClientFactory.java
new file mode 100644
index 0000000000000000000000000000000000000000..44948235831674b1993e27aa412b9c2c90bca693
--- /dev/null
+++ b/provider/indexer-gcp/src/main/java/org/opengroup/osdu/indexer/di/EntitlementsClientFactory.java
@@ -0,0 +1,49 @@
+// Copyright 2017-2019, Schlumberger
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package org.opengroup.osdu.indexer.di;
+
+import org.opengroup.osdu.core.common.service.entitlements.EntitlementsAPIConfig;
+import org.opengroup.osdu.core.common.service.entitlements.EntitlementsFactory;
+import org.opengroup.osdu.core.common.service.entitlements.IEntitlementsFactory;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.beans.factory.config.AbstractFactoryBean;
+import org.springframework.stereotype.Component;
+import org.springframework.web.context.annotation.RequestScope;
+
+@Component
+@RequestScope
+public class EntitlementsClientFactory extends AbstractFactoryBean<IEntitlementsFactory> {
+
+	@Value("${AUTHORIZE_API}")
+	private String AUTHORIZE_API;
+
+	@Value("${AUTHORIZE_API_KEY:}")
+	private String AUTHORIZE_API_KEY;
+
+	@Override
+	protected IEntitlementsFactory createInstance() throws Exception {
+
+		return new EntitlementsFactory(EntitlementsAPIConfig
+				.builder()
+				.rootUrl(AUTHORIZE_API)
+				.apiKey(AUTHORIZE_API_KEY)
+				.build());
+	}
+
+	@Override
+	public Class<?> getObjectType() {
+		return IEntitlementsFactory.class;
+	}
+}
\ No newline at end of file
diff --git a/provider/indexer-gcp/src/main/java/org/opengroup/osdu/indexer/di/TenantFactoryService.java b/provider/indexer-gcp/src/main/java/org/opengroup/osdu/indexer/di/TenantFactoryService.java
index 9f74ac84a18abd5ab648cdd915dc12e4aa7d071b..fa51ef212c0427bd21e4a522a99891d38163ccc4 100644
--- a/provider/indexer-gcp/src/main/java/org/opengroup/osdu/indexer/di/TenantFactoryService.java
+++ b/provider/indexer-gcp/src/main/java/org/opengroup/osdu/indexer/di/TenantFactoryService.java
@@ -15,7 +15,7 @@
 package org.opengroup.osdu.indexer.di;
 
 import lombok.extern.java.Log;
-import org.opengroup.osdu.core.common.model.core.ITenantFactory;
+import org.opengroup.osdu.core.common.provider.interfaces.ITenantFactory;
 import org.opengroup.osdu.core.gcp.multitenancy.TenantFactory;
 import org.springframework.beans.factory.config.AbstractFactoryBean;
 import org.springframework.stereotype.Component;
diff --git a/provider/indexer-gcp/src/main/java/org/opengroup/osdu/indexer/di/TenantInfoFactory.java b/provider/indexer-gcp/src/main/java/org/opengroup/osdu/indexer/di/TenantInfoFactory.java
deleted file mode 100644
index ee6ea7ab6ee5beec64cbe760c13f38b4aeabbc7b..0000000000000000000000000000000000000000
--- a/provider/indexer-gcp/src/main/java/org/opengroup/osdu/indexer/di/TenantInfoFactory.java
+++ /dev/null
@@ -1,29 +0,0 @@
-package org.opengroup.osdu.indexer.di;
-
-import lombok.extern.java.Log;
-import org.opengroup.osdu.core.common.model.core.DpsHeaders;
-import org.opengroup.osdu.core.common.model.core.ITenantFactory;
-import org.opengroup.osdu.core.common.model.core.TenantInfo;
-import org.springframework.beans.factory.config.AbstractFactoryBean;
-import org.springframework.stereotype.Component;
-import org.springframework.web.context.annotation.RequestScope;
-import javax.inject.Inject;
-
-@Log
-@Component
-@RequestScope
-public class TenantInfoFactory extends AbstractFactoryBean<TenantInfo> {
-    @Inject
-    private ITenantFactory tenantFactory;
-    @Inject
-    private DpsHeaders headers;
-    @Override
-    protected TenantInfo createInstance() throws Exception {
-        String id = this.headers.getPartitionIdWithFallbackToAccountId();
-        return this.tenantFactory.getTenantInfo(id);
-    }
-    @Override
-    public Class<?> getObjectType() {
-        return TenantInfo.class;
-    }
-}
diff --git a/provider/indexer-gcp/src/main/java/org/opengroup/osdu/indexer/kms/KmsClient.java b/provider/indexer-gcp/src/main/java/org/opengroup/osdu/indexer/kms/KmsClient.java
index ae01f902927e676763e69c34dd376431741b31c6..77dbbc3069d014aea89695bf1e68de7b203f2ef3 100644
--- a/provider/indexer-gcp/src/main/java/org/opengroup/osdu/indexer/kms/KmsClient.java
+++ b/provider/indexer-gcp/src/main/java/org/opengroup/osdu/indexer/kms/KmsClient.java
@@ -26,7 +26,7 @@ import com.google.api.services.cloudkms.v1.model.DecryptResponse;
 import com.google.api.services.cloudkms.v1.model.EncryptRequest;
 import com.google.api.services.cloudkms.v1.model.EncryptResponse;
 import org.opengroup.osdu.core.common.provider.interfaces.IKmsClient;
-import org.opengroup.osdu.core.common.service.coreis.Preconditions;
+import org.opengroup.osdu.core.common.service.search.Preconditions;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Component;
 import org.springframework.web.context.annotation.RequestScope;
diff --git a/provider/indexer-gcp/src/main/java/org/opengroup/osdu/indexer/middleware/IndexFilter.java b/provider/indexer-gcp/src/main/java/org/opengroup/osdu/indexer/middleware/IndexFilter.java
index 7b76232f4a0c89b53e8ca9651a54d968302b5098..e72f21a6478fc37f1c402e617c85d890c0934489 100644
--- a/provider/indexer-gcp/src/main/java/org/opengroup/osdu/indexer/middleware/IndexFilter.java
+++ b/provider/indexer-gcp/src/main/java/org/opengroup/osdu/indexer/middleware/IndexFilter.java
@@ -3,12 +3,11 @@ package org.opengroup.osdu.indexer.middleware;
 import com.google.common.base.Strings;
 import lombok.extern.java.Log;
 import org.apache.http.HttpStatus;
-import org.opengroup.osdu.core.common.model.core.DpsHeaders;
-import org.opengroup.osdu.core.common.model.AppException;
-import org.opengroup.osdu.core.common.service.core.ResponseHeaders;
-import org.opengroup.osdu.core.common.model.coreis.DeploymentEnvironment;
+import org.opengroup.osdu.core.common.model.http.DpsHeaders;
+import org.opengroup.osdu.core.common.model.http.AppException;
+import org.opengroup.osdu.core.common.service.http.ResponseHeaders;
+import org.opengroup.osdu.core.common.model.search.DeploymentEnvironment;
 import org.opengroup.osdu.core.common.provider.interfaces.IRequestInfo;
-import org.springframework.beans.factory.annotation.Qualifier;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.http.HttpMethod;
 import org.springframework.stereotype.Component;
@@ -27,7 +26,6 @@ import java.util.Map;
 public class IndexFilter implements Filter {
 
     @Inject
-    @Qualifier("dpsHeaderFactorySearch")
     private DpsHeaders dpsHeaders;
 
     @Inject
diff --git a/provider/indexer-gcp/src/main/java/org/opengroup/osdu/indexer/persistence/DatastoreCredential.java b/provider/indexer-gcp/src/main/java/org/opengroup/osdu/indexer/persistence/DatastoreCredential.java
index b0be2d933c28a7071f18c114ad43112c7469f92d..428ae4e746dede52923d3214345b2f2fdf76e3e4 100644
--- a/provider/indexer-gcp/src/main/java/org/opengroup/osdu/indexer/persistence/DatastoreCredential.java
+++ b/provider/indexer-gcp/src/main/java/org/opengroup/osdu/indexer/persistence/DatastoreCredential.java
@@ -26,8 +26,8 @@ import com.google.auth.oauth2.AccessToken;
 import com.google.auth.oauth2.GoogleCredentials;
 import com.google.gson.JsonObject;
 import org.apache.commons.lang3.time.DateUtils;
-import org.opengroup.osdu.core.common.model.core.TenantInfo;
-import org.opengroup.osdu.core.common.model.core.cryptographic.Crc32c;
+import org.opengroup.osdu.core.common.model.tenant.TenantInfo;
+import org.opengroup.osdu.core.common.service.Crc32c;
 import org.opengroup.osdu.indexer.cache.DatastoreCredentialCache;
 
 import java.util.Date;
diff --git a/provider/indexer-gcp/src/main/java/org/opengroup/osdu/indexer/persistence/DatastoreFactory.java b/provider/indexer-gcp/src/main/java/org/opengroup/osdu/indexer/persistence/DatastoreFactory.java
index cdadd4513d7c8f1397a165a5b7039e50f05fa154..1a14870151f97f34e87e4967dd5e496cd3b24b3f 100644
--- a/provider/indexer-gcp/src/main/java/org/opengroup/osdu/indexer/persistence/DatastoreFactory.java
+++ b/provider/indexer-gcp/src/main/java/org/opengroup/osdu/indexer/persistence/DatastoreFactory.java
@@ -19,7 +19,7 @@ import com.google.cloud.TransportOptions;
 import com.google.cloud.datastore.Datastore;
 import com.google.cloud.datastore.DatastoreOptions;
 import com.google.cloud.http.HttpTransportOptions;
-import org.opengroup.osdu.core.common.model.core.TenantInfo;
+import org.opengroup.osdu.core.common.model.tenant.TenantInfo;
 import org.opengroup.osdu.indexer.cache.DatastoreCredentialCache;
 import org.springframework.stereotype.Component;
 import org.threeten.bp.Duration;
diff --git a/provider/indexer-gcp/src/main/java/org/opengroup/osdu/indexer/persistence/ElasticRepositoryDatastore.java b/provider/indexer-gcp/src/main/java/org/opengroup/osdu/indexer/persistence/ElasticRepositoryDatastore.java
index eb6d08758c4482c5a01311404443aaeeae219b59..8a9719cc0a9c4c87c92a01a90834cd4b9ef3d57a 100644
--- a/provider/indexer-gcp/src/main/java/org/opengroup/osdu/indexer/persistence/ElasticRepositoryDatastore.java
+++ b/provider/indexer-gcp/src/main/java/org/opengroup/osdu/indexer/persistence/ElasticRepositoryDatastore.java
@@ -20,12 +20,12 @@ import com.google.cloud.datastore.Entity;
 import com.google.cloud.datastore.Key;
 import lombok.extern.java.Log;
 import org.apache.http.HttpStatus;
-import org.opengroup.osdu.core.common.model.core.ClusterSettings;
-import org.opengroup.osdu.core.common.model.core.TenantInfo;
-import org.opengroup.osdu.core.common.model.AppException;
+import org.opengroup.osdu.core.common.model.search.ClusterSettings;
+import org.opengroup.osdu.core.common.model.tenant.TenantInfo;
+import org.opengroup.osdu.core.common.model.http.AppException;
 import org.opengroup.osdu.core.common.provider.interfaces.IKmsClient;
 import org.opengroup.osdu.core.common.provider.interfaces.IElasticRepository;
-import org.opengroup.osdu.core.common.service.coreis.Preconditions;
+import org.opengroup.osdu.core.common.service.search.Preconditions;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Component;
 import javax.inject.Inject;
diff --git a/provider/indexer-gcp/src/main/java/org/opengroup/osdu/indexer/publish/PublisherImpl.java b/provider/indexer-gcp/src/main/java/org/opengroup/osdu/indexer/publish/PublisherImpl.java
index dcca2be1aa1790d3253876548bcd808e8232b36e..cc7dcaabfc2d49cba5e57991854ca2b091ae787a 100644
--- a/provider/indexer-gcp/src/main/java/org/opengroup/osdu/indexer/publish/PublisherImpl.java
+++ b/provider/indexer-gcp/src/main/java/org/opengroup/osdu/indexer/publish/PublisherImpl.java
@@ -27,15 +27,15 @@ import lombok.extern.java.Log;
 import org.apache.http.HttpStatus;
 import org.elasticsearch.common.Strings;
 
-import org.opengroup.osdu.core.common.model.core.DpsHeaders;
-import org.opengroup.osdu.core.common.model.core.ITenantFactory;
-import org.opengroup.osdu.core.common.model.core.TenantInfo;
-import org.opengroup.osdu.core.common.model.AppException;
+import org.opengroup.osdu.core.common.model.http.DpsHeaders;
+import org.opengroup.osdu.core.common.provider.interfaces.ITenantFactory;
+import org.opengroup.osdu.core.common.model.tenant.TenantInfo;
+import org.opengroup.osdu.core.common.model.http.AppException;
 import org.opengroup.osdu.core.common.model.indexer.JobStatus;
 import org.opengroup.osdu.core.common.model.indexer.RecordStatus;
 import org.opengroup.osdu.indexer.provider.interfaces.IPublisher;
 import org.opengroup.osdu.core.gcp.PubSub.PubSubExtensions;
-import org.opengroup.osdu.core.common.model.coreis.DeploymentEnvironment;
+import org.opengroup.osdu.core.common.model.search.DeploymentEnvironment;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Component;
 import org.springframework.web.context.annotation.RequestScope;
diff --git a/provider/indexer-gcp/src/main/java/org/opengroup/osdu/indexer/util/DpsHeaderFactoryGcp.java b/provider/indexer-gcp/src/main/java/org/opengroup/osdu/indexer/util/DpsHeaderFactoryGcp.java
new file mode 100644
index 0000000000000000000000000000000000000000..28884453076f6ee465f876c9a014bdeda0da935b
--- /dev/null
+++ b/provider/indexer-gcp/src/main/java/org/opengroup/osdu/indexer/util/DpsHeaderFactoryGcp.java
@@ -0,0 +1,57 @@
+// Copyright 2017-2019, Schlumberger
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package org.opengroup.osdu.indexer.util;
+
+import java.util.Collections;
+import java.util.Map;
+import java.util.stream.Collectors;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.inject.Inject;
+
+import com.google.common.base.Strings;
+import org.opengroup.osdu.core.common.model.http.DpsHeaders;
+
+import org.opengroup.osdu.core.gcp.model.AppEngineHeaders;
+import org.opengroup.osdu.core.gcp.util.TraceIdExtractor;
+import org.springframework.context.annotation.Primary;
+import org.springframework.stereotype.Component;
+import org.springframework.web.context.annotation.RequestScope;
+
+@Component
+@RequestScope
+@Primary
+public class DpsHeaderFactoryGcp extends DpsHeaders {
+
+    @Inject
+    public DpsHeaderFactoryGcp(HttpServletRequest request) {
+
+        Map<String, String> headers = Collections
+                .list(request.getHeaderNames())
+                .stream()
+                .collect(Collectors.toMap(h -> h, request::getHeader));
+
+        String traceContext = headers.get(AppEngineHeaders.CLOUD_TRACE_CONTEXT);
+
+        if(!Strings.isNullOrEmpty(traceContext)){
+            headers.put(AppEngineHeaders.TRACE_ID, TraceIdExtractor.getTraceId(traceContext));
+        }
+
+        this.addFromMap(headers);
+
+        // Add Correlation ID if missing
+        this.addCorrelationIdIfMissing();
+    }
+}
\ No newline at end of file
diff --git a/provider/indexer-gcp/src/main/java/org/opengroup/osdu/indexer/util/HeadersInfoGcpImpl.java b/provider/indexer-gcp/src/main/java/org/opengroup/osdu/indexer/util/HeadersInfoGcpImpl.java
deleted file mode 100644
index 1a86ceb341a30e3a2869f67991baa2df994491c5..0000000000000000000000000000000000000000
--- a/provider/indexer-gcp/src/main/java/org/opengroup/osdu/indexer/util/HeadersInfoGcpImpl.java
+++ /dev/null
@@ -1,114 +0,0 @@
-// Copyright 2017-2019, Schlumberger
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//      http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.opengroup.osdu.indexer.util;
-
-import com.google.common.base.Strings;
-import lombok.extern.java.Log;
-import org.opengroup.osdu.core.common.model.core.DpsHeaders;
-import org.opengroup.osdu.core.gcp.model.AppEngineHeaders;
-import org.opengroup.osdu.core.common.model.coreis.SlbHeaders;
-import org.opengroup.osdu.core.common.provider.interfaces.IHeadersInfo;
-import org.opengroup.osdu.core.common.service.coreis.Preconditions;
-import org.springframework.beans.factory.annotation.Qualifier;
-import org.springframework.stereotype.Component;
-import org.springframework.web.context.annotation.RequestScope;
-
-import javax.inject.Inject;
-import java.util.HashSet;
-import java.util.Map;
-import java.util.stream.Collectors;
-
-@Log
-@Component
-@RequestScope
-public class HeadersInfoGcpImpl implements IHeadersInfo {
-
-    @Inject
-    @Qualifier("dpsHeaderFactorySearch")
-    private DpsHeaders headersMap;
-
-    private static final HashSet<String> FORBIDDEN_FROM_LOGGING = new HashSet<>();
-    static {
-        FORBIDDEN_FROM_LOGGING.add(DpsHeaders.AUTHORIZATION);
-        FORBIDDEN_FROM_LOGGING.add(DpsHeaders.ON_BEHALF_OF);
-    }
-
-    private static final HashSet<String> FORWARDED_HEADERS = new HashSet<>();
-    static {
-        FORWARDED_HEADERS.add(AppEngineHeaders.CITY_LAT_LONG);
-        FORWARDED_HEADERS.add(AppEngineHeaders.COUNTRY);
-        FORWARDED_HEADERS.add(AppEngineHeaders.REGION);
-        FORWARDED_HEADERS.add(AppEngineHeaders.CITY);
-        FORWARDED_HEADERS.add(AppEngineHeaders.TASK_QUEUE_RETRY_COUNT);
-        FORWARDED_HEADERS.add(AppEngineHeaders.TASK_QUEUE_NAME);
-        FORWARDED_HEADERS.add(AppEngineHeaders.DATA_GROUPS);
-        FORWARDED_HEADERS.add(AppEngineHeaders.CLOUD_TRACE_CONTEXT);
-        FORWARDED_HEADERS.add(AppEngineHeaders.TRACE_ID);
-        FORWARDED_HEADERS.add(AppEngineHeaders.CRON_SERVICE);
-        FORWARDED_HEADERS.add(SlbHeaders.PRIMARY_PARTITION_ID);
-    }
-
-    @Override
-    public DpsHeaders getHeaders() {
-        Preconditions.checkNotNull(headersMap, "input headers cannot be null");
-        DpsHeaders headers = this.getCoreServiceHeaders(headersMap.getHeaders());
-        return headers;
-    }
-
-    @Override
-    public String getUser() {
-        return getHeaders().getUserEmail();
-    }
-
-    @Override
-    public String getPartitionId() {
-        return getHeaders().getPartitionIdWithFallbackToAccountId();
-    }
-
-    @Override
-    public String getPrimaryPartitionId() {
-        return getHeadersMap().get(SlbHeaders.PRIMARY_PARTITION_ID);
-    }
-
-    @Override
-    public Map<String, String> getHeadersMap() {
-        return getHeaders().getHeaders();
-    }
-
-    @Override
-    public DpsHeaders getCoreServiceHeaders(Map<String, String> input) {
-        DpsHeaders output = DpsHeaders.createFromMap(input);
-        input.forEach((key,value) -> {
-            if (FORWARDED_HEADERS.contains(key)) {
-                if (key.equals(AppEngineHeaders.CLOUD_TRACE_CONTEXT)) {
-                    String traceContext = input.get(AppEngineHeaders.CLOUD_TRACE_CONTEXT);
-                    if (!Strings.isNullOrEmpty(traceContext)) {
-                        output.put(AppEngineHeaders.TRACE_ID, TraceIdExtractor.getTraceId(traceContext));
-                        output.put(key, traceContext);
-                    }
-                } else {
-                    output.put(key, input.get(key));
-                }
-            }
-        });
-        return output;
-    }
-
-    @Override
-    public String toString() {
-        return this.getHeadersMap().entrySet().stream().filter(map -> !FORBIDDEN_FROM_LOGGING.contains(map.getKey().toLowerCase())).map(Map.Entry::toString).collect(Collectors.joining(" | "));
-    }
-
-}
\ No newline at end of file
diff --git a/provider/indexer-gcp/src/main/java/org/opengroup/osdu/indexer/util/RequestInfoImpl.java b/provider/indexer-gcp/src/main/java/org/opengroup/osdu/indexer/util/RequestInfoImpl.java
index d6042620e074dcc864bdddb3cc446589fb154ffa..ad3ef5b524c9822d712f30308af1e1795fa39872 100644
--- a/provider/indexer-gcp/src/main/java/org/opengroup/osdu/indexer/util/RequestInfoImpl.java
+++ b/provider/indexer-gcp/src/main/java/org/opengroup/osdu/indexer/util/RequestInfoImpl.java
@@ -3,16 +3,14 @@ package org.opengroup.osdu.indexer.util;
 import com.google.common.base.Strings;
 import lombok.extern.java.Log;
 import org.apache.http.HttpStatus;
-import org.opengroup.osdu.core.common.model.core.Constants;
-import org.opengroup.osdu.core.common.model.core.DpsHeaders;
-import org.opengroup.osdu.core.common.model.core.TenantInfo;
-import org.opengroup.osdu.core.common.model.AppException;
-import org.opengroup.osdu.core.common.model.coreis.DeploymentEnvironment;
-import org.opengroup.osdu.core.common.provider.interfaces.IServiceAccountJwtClient;
+import org.opengroup.osdu.core.common.Constants;
+import org.opengroup.osdu.core.common.model.http.DpsHeaders;
+import org.opengroup.osdu.core.common.model.tenant.TenantInfo;
+import org.opengroup.osdu.core.common.model.http.AppException;
+import org.opengroup.osdu.core.common.model.search.DeploymentEnvironment;
+import org.opengroup.osdu.core.common.service.util.IServiceAccountJwtClient;
 import org.opengroup.osdu.core.gcp.model.AppEngineHeaders;
-import org.opengroup.osdu.core.common.provider.interfaces.IHeadersInfo;
 import org.opengroup.osdu.core.common.provider.interfaces.IRequestInfo;
-import org.springframework.beans.factory.annotation.Qualifier;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Component;
 import org.springframework.web.context.annotation.RequestScope;
@@ -20,7 +18,7 @@ import org.springframework.web.context.annotation.RequestScope;
 import javax.inject.Inject;
 import java.util.Map;
 
-import static org.opengroup.osdu.core.common.model.core.DpsHeaders.AUTHORIZATION;
+import static org.opengroup.osdu.core.common.model.http.DpsHeaders.AUTHORIZATION;
 
 
 @Log
@@ -29,16 +27,12 @@ import static org.opengroup.osdu.core.common.model.core.DpsHeaders.AUTHORIZATION
 public class RequestInfoImpl implements IRequestInfo {
 
     @Inject
-    @Qualifier("dpsHeaderFactorySearch")
     private DpsHeaders dpsHeaders;
 
-    @Inject
-    private IHeadersInfo headersInfo;
     @Inject
     private IServiceAccountJwtClient serviceAccountJwtClient;
 
     @Inject
-    @Qualifier("TenantInfoFactorySearch")
     private TenantInfo tenantInfo;
 
     @Value("${DEPLOYMENT_ENVIRONMENT}")
@@ -49,17 +43,17 @@ public class RequestInfoImpl implements IRequestInfo {
     @Override
     public DpsHeaders getHeaders() {
 
-        return this.headersInfo.getHeaders();
+        return this.dpsHeaders;
     }
 
     @Override
     public String getPartitionId() {
-        return this.headersInfo.getPartitionId();
+        return this.dpsHeaders.getPartitionId();
     }
 
     @Override
     public Map<String, String> getHeadersMap() {
-        return this.headersInfo.getHeadersMap();
+        return this.dpsHeaders.getHeaders();
     }
 
     @Override
@@ -71,20 +65,20 @@ public class RequestInfoImpl implements IRequestInfo {
     public DpsHeaders getHeadersWithDwdAuthZ() {
         // Update DpsHeaders so that service account creds are passed down
         this.dpsHeaders.put(AUTHORIZATION, this.checkOrGetAuthorizationHeader());
-        return this.headersInfo.getHeaders();
+        return this.dpsHeaders;
     }
 
     @Override
     public boolean isCronRequest() {
-        String appEngineCronHeader = this.headersInfo.getHeadersMap().getOrDefault(AppEngineHeaders.CRON_SERVICE, null);
+        String appEngineCronHeader = this.dpsHeaders.getHeaders().getOrDefault(AppEngineHeaders.CRON_SERVICE, null);
         return expectedCronHeaderValue.equalsIgnoreCase(appEngineCronHeader);
     }
 
     @Override
     public boolean isTaskQueueRequest() {
-        if (!this.headersInfo.getHeadersMap().containsKey(AppEngineHeaders.TASK_QUEUE_NAME)) return false;
+        if (!this.dpsHeaders.getHeaders().containsKey(AppEngineHeaders.TASK_QUEUE_NAME)) return false;
 
-        String queueId = this.headersInfo.getHeadersMap().get(AppEngineHeaders.TASK_QUEUE_NAME);
+        String queueId = this.dpsHeaders.getHeaders().get(AppEngineHeaders.TASK_QUEUE_NAME);
         return queueId.endsWith(Constants.INDEXER_QUEUE_IDENTIFIER);
     }
 
diff --git a/provider/indexer-gcp/src/main/java/org/opengroup/osdu/indexer/util/ServiceAccountJwtGcpClientImpl.java b/provider/indexer-gcp/src/main/java/org/opengroup/osdu/indexer/util/ServiceAccountJwtGcpClientImpl.java
index 01a50d92848d9cdd0b9a64f3e25304bb5a10135e..209c9dc8029e02a16457e1e4e29ceee1abbc408a 100644
--- a/provider/indexer-gcp/src/main/java/org/opengroup/osdu/indexer/util/ServiceAccountJwtGcpClientImpl.java
+++ b/provider/indexer-gcp/src/main/java/org/opengroup/osdu/indexer/util/ServiceAccountJwtGcpClientImpl.java
@@ -38,15 +38,14 @@ import org.apache.http.impl.client.CloseableHttpClient;
 import org.apache.http.impl.client.HttpClients;
 import org.apache.http.message.BasicNameValuePair;
 import org.apache.http.util.EntityUtils;
-import org.opengroup.osdu.core.common.model.core.DpsHeaders;
-import org.opengroup.osdu.core.common.model.core.ITenantFactory;
-import org.opengroup.osdu.core.common.model.core.TenantInfo;
-import org.opengroup.osdu.core.common.model.AppException;
-import org.opengroup.osdu.core.common.model.coreis.IdToken;
+import org.opengroup.osdu.core.common.model.http.DpsHeaders;
+import org.opengroup.osdu.core.common.provider.interfaces.ITenantFactory;
+import org.opengroup.osdu.core.common.model.tenant.TenantInfo;
+import org.opengroup.osdu.core.common.model.http.AppException;
+import org.opengroup.osdu.core.common.model.search.IdToken;
 import org.opengroup.osdu.core.common.service.logging.JaxRsDpsLog;
 import org.opengroup.osdu.core.common.provider.interfaces.IJwtCache;
-import org.opengroup.osdu.core.common.provider.interfaces.IServiceAccountJwtClient;
-import org.springframework.beans.factory.annotation.Qualifier;
+import org.opengroup.osdu.core.common.service.util.IServiceAccountJwtClient;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Component;
 import org.springframework.web.context.annotation.RequestScope;
@@ -71,13 +70,10 @@ public class ServiceAccountJwtGcpClientImpl implements IServiceAccountJwtClient
     @Inject
     private ITenantFactory tenantInfoServiceProvider;
     @Inject
-    private HeadersInfoGcpImpl headersInfoGcp;
-    @Inject
     private IJwtCache cacheService;
     @Inject
     private JaxRsDpsLog log;
     @Inject
-    @Qualifier("dpsHeaderFactorySearch")
     private DpsHeaders dpsHeaders;
 
     @Value("${GOOGLE_AUDIENCES}")
@@ -96,7 +92,6 @@ public class ServiceAccountJwtGcpClientImpl implements IServiceAccountJwtClient
         try {
 
             IdToken cachedToken = (IdToken) this.cacheService.get(tenant.getServiceAccount());
-            this.headersInfoGcp.getHeaders().put(DpsHeaders.USER_EMAIL, tenant.getServiceAccount());
             // Add the user to DpsHeaders directly
             this.dpsHeaders.put(DpsHeaders.USER_EMAIL, tenant.getServiceAccount());
 
diff --git a/provider/indexer-gcp/src/main/java/org/opengroup/osdu/indexer/util/TraceIdExtractor.java b/provider/indexer-gcp/src/main/java/org/opengroup/osdu/indexer/util/TraceIdExtractor.java
deleted file mode 100644
index 64143bb2947c5d48b80d1d56976392d9810b6ed8..0000000000000000000000000000000000000000
--- a/provider/indexer-gcp/src/main/java/org/opengroup/osdu/indexer/util/TraceIdExtractor.java
+++ /dev/null
@@ -1,63 +0,0 @@
-// Copyright 2017-2019, Schlumberger
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//      http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.opengroup.osdu.indexer.util;
-
-import com.google.common.base.Strings;
-import org.opengroup.osdu.core.gcp.model.AppEngineHeaders;
-import org.springframework.util.MultiValueMap;
-
-import java.util.Random;
-import java.util.UUID;
-
-public class TraceIdExtractor {
-
-    /*
-     * "X-Cloud-Trace-Context: TRACE_ID/SPAN_ID;o=TRACE_TRUE" e.g. 105445aa7843bc8bf206b120001000/0;o=1"
-     * https://cloud.google.com/trace/docs/support
-     * */
-    public static String getTraceableCloudContext(MultiValueMap<String, String> requestHeaders) {
-        String traceContextHeader = requestHeaders.getFirst(AppEngineHeaders.CLOUD_TRACE_CONTEXT);
-
-        // get new if not found
-        if (Strings.isNullOrEmpty(traceContextHeader)) return getNewTraceContext();
-        // return as is
-        if (traceContextHeader.endsWith(";o=1")) return traceContextHeader;
-
-        String[] traceParts = traceContextHeader.split("[/;]");
-        // if there is only trace-id
-        if (traceParts.length == 1) return String.format("%s/%s;o=1", traceContextHeader, getNewSpanId());
-        // if trace-id and span-id
-        if (traceParts.length == 2) return String.format("%s;o=1", traceContextHeader);
-        // trace flag is turned off
-        return String.format("%s/%s;o=1", traceParts[0], traceParts[1]);
-    }
-
-    public static String getTraceId(String traceContextHeader) {
-        String[] traceParts = traceContextHeader.split("[/;]");
-        return traceParts.length > 0 ? traceParts[0] : getNewTraceId();
-    }
-
-    private static String getNewTraceContext() {
-        return String.format("%s/%s;o=1", getNewTraceId(), getNewSpanId());
-    }
-
-    private static String getNewTraceId() {
-        return UUID.randomUUID().toString().replaceAll("-", "");
-    }
-
-    private static String getNewSpanId() {
-        return Integer.toUnsignedString(new Random().nextInt());
-    }
-}
diff --git a/provider/indexer-gcp/src/test/java/org/opengroup/osdu/indexer/service/CronServiceImplTest.java b/provider/indexer-gcp/src/test/java/org/opengroup/osdu/indexer/service/CronServiceImplTest.java
index 8c865c36f94e9b3313e49d057285fcd3313f82bf..f1a739d636c62b272444bad7f8b99f0c341bbf0e 100644
--- a/provider/indexer-gcp/src/test/java/org/opengroup/osdu/indexer/service/CronServiceImplTest.java
+++ b/provider/indexer-gcp/src/test/java/org/opengroup/osdu/indexer/service/CronServiceImplTest.java
@@ -21,12 +21,12 @@ import org.junit.Test;
 import org.junit.runner.RunWith;
 import org.mockito.InjectMocks;
 import org.mockito.Mock;
-import org.opengroup.osdu.core.common.model.core.DpsHeaders;
-import org.opengroup.osdu.core.common.model.coreis.IndexInfo;
+import org.opengroup.osdu.core.common.model.http.DpsHeaders;
+import org.opengroup.osdu.core.common.model.search.IndexInfo;
 import org.opengroup.osdu.core.common.service.logging.JaxRsDpsLog;
 import org.opengroup.osdu.core.common.provider.interfaces.IRequestInfo;
-import org.opengroup.osdu.core.common.service.coreis.IndicesService;
-import org.opengroup.osdu.is.core.util.ElasticClientHandler;
+import org.opengroup.osdu.core.common.service.search.IndicesService;
+import org.opengroup.osdu.indexer.util.ElasticClientHandler;
 import org.powermock.core.classloader.annotations.PrepareForTest;
 import org.springframework.test.context.junit4.SpringRunner;
 import org.springframework.test.util.ReflectionTestUtils;
diff --git a/provider/indexer-gcp/src/test/java/org/opengroup/osdu/indexer/service/ElasticSettingServiceTest.java b/provider/indexer-gcp/src/test/java/org/opengroup/osdu/indexer/service/ElasticSettingServiceTest.java
index 824e3a8abb8a85929c4a1a592af1f5f98d44d02a..a2a7f07a0d925d6c17c2754f297d0486262aea71 100644
--- a/provider/indexer-gcp/src/test/java/org/opengroup/osdu/indexer/service/ElasticSettingServiceTest.java
+++ b/provider/indexer-gcp/src/test/java/org/opengroup/osdu/indexer/service/ElasticSettingServiceTest.java
@@ -19,14 +19,14 @@ import org.junit.Test;
 import org.junit.runner.RunWith;
 import org.mockito.InjectMocks;
 import org.mockito.Mock;
-import org.opengroup.osdu.core.common.model.core.ClusterSettings;
-import org.opengroup.osdu.core.common.model.core.TenantInfo;
-import org.opengroup.osdu.core.common.model.AppException;
+import org.opengroup.osdu.core.common.model.search.ClusterSettings;
+import org.opengroup.osdu.core.common.model.http.DpsHeaders;
+import org.opengroup.osdu.core.common.model.tenant.TenantInfo;
+import org.opengroup.osdu.core.common.model.http.AppException;
 import org.opengroup.osdu.core.common.service.logging.JaxRsDpsLog;
 import org.opengroup.osdu.core.common.provider.interfaces.IElasticCredentialsCache;
 import org.opengroup.osdu.core.common.provider.interfaces.IElasticRepository;
-import org.opengroup.osdu.core.common.provider.interfaces.IHeadersInfo;
-import org.opengroup.osdu.core.common.service.coreis.ITenantInfoService;
+import org.opengroup.osdu.core.common.service.multitenancy.ITenantInfoService;
 import org.springframework.test.context.junit4.SpringRunner;
 
 import static org.junit.Assert.assertEquals;
@@ -49,7 +49,7 @@ public class ElasticSettingServiceTest {
     @Mock
     private ClusterSettings clusterSettings;
     @Mock
-    private IHeadersInfo headersInfo;
+    private DpsHeaders headersInfo;
 
     @Mock
     private JaxRsDpsLog log;
diff --git a/provider/indexer-gcp/src/test/java/org/opengroup/osdu/indexer/service/IndexCopyServiceImplTest.java b/provider/indexer-gcp/src/test/java/org/opengroup/osdu/indexer/service/IndexCopyServiceImplTest.java
index e031ac73601e7115b1becf88f40d3eab30a2beba..b808776e2dafd0bc95cb9904463ed727d1404d55 100644
--- a/provider/indexer-gcp/src/test/java/org/opengroup/osdu/indexer/service/IndexCopyServiceImplTest.java
+++ b/provider/indexer-gcp/src/test/java/org/opengroup/osdu/indexer/service/IndexCopyServiceImplTest.java
@@ -31,16 +31,15 @@ import org.junit.runner.RunWith;
 import org.mockito.ArgumentMatchers;
 import org.mockito.InjectMocks;
 import org.mockito.Mock;
-import org.opengroup.osdu.core.common.model.core.ClusterSettings;
-import org.opengroup.osdu.core.common.model.core.DpsHeaders;
-import org.opengroup.osdu.core.common.model.AppException;
+import org.opengroup.osdu.core.common.model.search.ClusterSettings;
+import org.opengroup.osdu.core.common.model.http.DpsHeaders;
+import org.opengroup.osdu.core.common.model.http.AppException;
 import org.opengroup.osdu.indexer.logging.AuditLogger;
-import org.opengroup.osdu.core.common.provider.interfaces.IHeadersInfo;
 import org.opengroup.osdu.core.common.provider.interfaces.IRequestInfo;
-import org.opengroup.osdu.is.core.service.ElasticSettingService;
-import org.opengroup.osdu.core.common.service.coreis.IndicesService;
-import org.opengroup.osdu.is.core.util.ElasticClientHandler;
-import org.opengroup.osdu.core.common.service.coreis.ElasticIndexNameResolver;
+import org.opengroup.osdu.core.common.model.indexer.IElasticSettingService;
+import org.opengroup.osdu.core.common.service.search.IndicesService;
+import org.opengroup.osdu.indexer.util.ElasticClientHandler;
+import org.opengroup.osdu.core.common.service.search.ElasticIndexNameResolver;
 import org.powermock.core.classloader.annotations.PrepareForTest;
 import org.springframework.test.context.junit4.SpringRunner;
 
@@ -66,7 +65,7 @@ public class IndexCopyServiceImplTest {
     @Mock
     private IRequestInfo requestInfo;
     @Mock
-    private IHeadersInfo headersInfo;
+    private DpsHeaders headersInfo;
     @Mock
     private RestClient restClient;
     @Mock
@@ -82,7 +81,7 @@ public class IndexCopyServiceImplTest {
     @Mock
     private Response response;
     @Mock
-    private ElasticSettingService elasticSettingService;
+    private IElasticSettingService elasticSettingService;
     @Mock
     private AuditLogger auditLogger;
     @Mock
@@ -102,8 +101,6 @@ public class IndexCopyServiceImplTest {
         httpHeaders = new HashMap<>();
         httpHeaders.put(DpsHeaders.AUTHORIZATION, "testAuth");
         httpHeaders.put(DpsHeaders.CORRELATION_ID, correlationId);
-        DpsHeaders standardHeaders = DpsHeaders.createFromMap(httpHeaders);
-        when(headersInfo.getHeaders()).thenReturn(standardHeaders);
         when(requestInfo.getHeadersMapWithDwdAuthZ()).thenReturn(httpHeaders);
         when(response.getEntity()).thenReturn(httpEntity);
 
diff --git a/provider/indexer-gcp/src/test/java/org/opengroup/osdu/indexer/service/IndexerMappingServiceTest.java b/provider/indexer-gcp/src/test/java/org/opengroup/osdu/indexer/service/IndexerMappingServiceTest.java
index 1b7dd0cc9d2ce0a3bce363ceffd7fd621aceaf2a..43f24cc6cdbe134714cdb2fd6ca4ce42c1ec8446 100644
--- a/provider/indexer-gcp/src/test/java/org/opengroup/osdu/indexer/service/IndexerMappingServiceTest.java
+++ b/provider/indexer-gcp/src/test/java/org/opengroup/osdu/indexer/service/IndexerMappingServiceTest.java
@@ -31,10 +31,10 @@ import org.junit.Test;
 import org.junit.runner.RunWith;
 import org.mockito.InjectMocks;
 import org.mockito.Mock;
-import org.opengroup.osdu.core.common.model.AppException;
+import org.opengroup.osdu.core.common.model.http.AppException;
 import org.opengroup.osdu.core.common.model.indexer.IndexSchema;
-import org.opengroup.osdu.core.common.model.coreis.RecordMetaAttribute;
-import org.opengroup.osdu.is.core.util.ElasticClientHandler;
+import org.opengroup.osdu.core.common.model.search.RecordMetaAttribute;
+import org.opengroup.osdu.indexer.util.ElasticClientHandler;
 import org.powermock.api.mockito.PowerMockito;
 import org.powermock.core.classloader.annotations.PrepareForTest;
 import org.springframework.test.context.junit4.SpringRunner;
diff --git a/provider/indexer-gcp/src/test/java/org/opengroup/osdu/indexer/service/IndexerSchemaServiceTest.java b/provider/indexer-gcp/src/test/java/org/opengroup/osdu/indexer/service/IndexerSchemaServiceTest.java
index 76e377e91d4be52cb8973aee4545604b30a43e24..7e758b663daa40f0d6030f9272d252140ca87e59 100644
--- a/provider/indexer-gcp/src/test/java/org/opengroup/osdu/indexer/service/IndexerSchemaServiceTest.java
+++ b/provider/indexer-gcp/src/test/java/org/opengroup/osdu/indexer/service/IndexerSchemaServiceTest.java
@@ -22,15 +22,15 @@ import org.junit.Test;
 import org.junit.runner.RunWith;
 import org.mockito.InjectMocks;
 import org.mockito.Mock;
-import org.opengroup.osdu.core.common.model.AppException;
+import org.opengroup.osdu.core.common.model.http.AppException;
 import org.opengroup.osdu.core.common.model.indexer.OperationType;
 import org.opengroup.osdu.core.common.service.logging.JaxRsDpsLog;
 import org.opengroup.osdu.indexer.provider.interfaces.ISchemaCache;
 import org.opengroup.osdu.core.common.model.indexer.IndexSchema;
-import org.opengroup.osdu.core.common.model.coreis.RequestStatus;
-import org.opengroup.osdu.core.common.service.coreis.IndicesService;
-import org.opengroup.osdu.is.core.util.ElasticClientHandler;
-import org.opengroup.osdu.core.common.service.coreis.ElasticIndexNameResolver;
+import org.opengroup.osdu.core.common.model.http.RequestStatus;
+import org.opengroup.osdu.core.common.service.search.IndicesService;
+import org.opengroup.osdu.indexer.util.ElasticClientHandler;
+import org.opengroup.osdu.core.common.service.search.ElasticIndexNameResolver;
 import org.powermock.core.classloader.annotations.PrepareForTest;
 import org.springframework.test.context.junit4.SpringRunner;
 
diff --git a/provider/indexer-gcp/src/test/java/org/opengroup/osdu/indexer/service/ReindexServiceTest.java b/provider/indexer-gcp/src/test/java/org/opengroup/osdu/indexer/service/ReindexServiceTest.java
index 23aa559004b206d4792751d3c1fe6fb0d8151471..6b7b8daad9726a927bdcf555f0292b3682783495 100644
--- a/provider/indexer-gcp/src/test/java/org/opengroup/osdu/indexer/service/ReindexServiceTest.java
+++ b/provider/indexer-gcp/src/test/java/org/opengroup/osdu/indexer/service/ReindexServiceTest.java
@@ -21,7 +21,7 @@ import org.junit.Test;
 import org.junit.runner.RunWith;
 import org.mockito.InjectMocks;
 import org.mockito.Mock;
-import org.opengroup.osdu.core.common.model.core.DpsHeaders;
+import org.opengroup.osdu.core.common.model.http.DpsHeaders;
 import org.opengroup.osdu.core.common.model.indexer.RecordQueryResponse;
 import org.opengroup.osdu.core.common.model.indexer.RecordReindexRequest;
 import org.opengroup.osdu.core.common.service.logging.JaxRsDpsLog;
diff --git a/provider/indexer-gcp/src/test/java/org/opengroup/osdu/indexer/service/StorageServiceTest.java b/provider/indexer-gcp/src/test/java/org/opengroup/osdu/indexer/service/StorageServiceTest.java
index 3ee648ed2abe700c35a58834ad27dcdce302e834..8165ae682628b0b7abdbe8f01dd733299a02f194 100644
--- a/provider/indexer-gcp/src/test/java/org/opengroup/osdu/indexer/service/StorageServiceTest.java
+++ b/provider/indexer-gcp/src/test/java/org/opengroup/osdu/indexer/service/StorageServiceTest.java
@@ -23,14 +23,14 @@ import org.junit.runner.RunWith;
 import org.mockito.InjectMocks;
 import org.mockito.Mock;
 import org.mockito.Mockito;
-import org.opengroup.osdu.core.common.model.core.DpsHeaders;
-import org.opengroup.osdu.core.common.model.AppException;
+import org.opengroup.osdu.core.common.model.http.DpsHeaders;
+import org.opengroup.osdu.core.common.model.http.AppException;
 import org.opengroup.osdu.core.common.model.indexer.JobStatus;
 import org.opengroup.osdu.core.common.model.indexer.RecordInfo;
-import org.opengroup.osdu.core.common.model.coreis.HttpResponse;
+import org.opengroup.osdu.core.common.model.http.HttpResponse;
 import org.opengroup.osdu.core.common.service.logging.JaxRsDpsLog;
 import org.opengroup.osdu.core.common.provider.interfaces.IRequestInfo;
-import org.opengroup.osdu.core.common.service.coreis.IUrlFetchService;
+import org.opengroup.osdu.core.common.service.http.IUrlFetchService;
 import org.opengroup.osdu.core.common.model.indexer.RecordQueryResponse;
 import org.opengroup.osdu.core.common.model.indexer.RecordReindexRequest;
 import org.opengroup.osdu.core.common.model.indexer.Records;
diff --git a/provider/indexer-gcp/src/test/java/org/opengroup/osdu/indexer/service/TenantInfoServiceTest.java b/provider/indexer-gcp/src/test/java/org/opengroup/osdu/indexer/service/TenantInfoServiceTest.java
deleted file mode 100644
index 88b99c9c0ccfa8056d22cfc44460b174fa721614..0000000000000000000000000000000000000000
--- a/provider/indexer-gcp/src/test/java/org/opengroup/osdu/indexer/service/TenantInfoServiceTest.java
+++ /dev/null
@@ -1,89 +0,0 @@
-// Copyright 2017-2019, Schlumberger
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//      http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.opengroup.osdu.indexer.service;
-
-import org.junit.Before;
-import org.junit.Ignore;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.mockito.InjectMocks;
-import org.mockito.Mock;
-import org.opengroup.osdu.core.common.model.core.DpsHeaders;
-import org.opengroup.osdu.core.common.model.core.ITenantFactory;
-import org.opengroup.osdu.core.common.model.core.TenantInfo;
-import org.opengroup.osdu.core.common.model.AppException;
-import org.opengroup.osdu.core.common.provider.interfaces.IHeadersInfo;
-import org.springframework.http.HttpHeaders;
-import org.springframework.test.context.junit4.SpringRunner;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNotNull;
-import static org.mockito.Mockito.when;
-
-@RunWith(SpringRunner.class)
-public class TenantInfoServiceTest {
-
-    private static final String HEADER_NAME = "ANY_HEADER";
-    private static final String HEADER_VALUE = "ANY_VALUE";
-
-    @Mock
-    private ITenantFactory tenantFactory;
-    @Mock
-    private IHeadersInfo headersInfo;
-    @InjectMocks
-    private TenantInfoServiceImpl sut;
-
-    @Mock
-    private TenantInfo info;
-
-    @Mock
-    private HttpHeaders httpHeaders;
-
-    @InjectMocks
-    private DpsHeaders HEADERS;
-
-    @Before
-    public void setup() {
-        HEADERS.put(HEADER_NAME, HEADER_VALUE);
-    }
-
-    @Ignore
-    @Test
-    public void should_return_validTenant_given_validAccountId() {
-
-        when(this.info.getName()).thenReturn("tenant1");
-        when(tenantFactory.getTenantInfo("tenant1")).thenReturn(info);
-
-        when(this.headersInfo.getHeaders()).thenReturn(HEADERS);
-
-        when(this.headersInfo.getPartitionId()).thenReturn("tenant1");
-
-        when(this.sut.getTenantInfo()).thenReturn(info);
-
-        assertNotNull(this.sut.getTenantInfo());
-        assertEquals("tenant1", this.sut.getTenantInfo().getName());
-    }
-
-    @Test(expected = AppException.class)
-    public void should_throwException_given_invalidAccountId() {
-
-        when(this.info.getName()).thenReturn("tenant2");
-        when(tenantFactory.getTenantInfo("tenant1")).thenReturn(null);
-
-        when(this.sut.getTenantInfo()).thenReturn(info);
-
-        assertNotNull(this.sut.getTenantInfo());
-    }
-}
\ No newline at end of file
diff --git a/provider/indexer-gcp/src/test/java/org/opengroup/osdu/indexer/util/HeadersInfoGcpImplTest.java b/provider/indexer-gcp/src/test/java/org/opengroup/osdu/indexer/util/HeadersInfoGcpImplTest.java
deleted file mode 100644
index 0d3850b2476955a3cf0e1783c7128660e2ba6bff..0000000000000000000000000000000000000000
--- a/provider/indexer-gcp/src/test/java/org/opengroup/osdu/indexer/util/HeadersInfoGcpImplTest.java
+++ /dev/null
@@ -1,204 +0,0 @@
-// Copyright 2017-2019, Schlumberger
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//      http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.opengroup.osdu.indexer.util;
-
-import org.junit.Ignore;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.mockito.InjectMocks;
-import org.mockito.Mock;
-import org.opengroup.osdu.core.common.model.core.DpsHeaders;
-import org.opengroup.osdu.core.gcp.model.AppEngineHeaders;
-import org.opengroup.osdu.core.common.model.coreis.SlbHeaders;
-import org.opengroup.osdu.core.common.service.coreis.HeadersUtil;
-import org.springframework.http.HttpHeaders;
-import org.springframework.test.context.junit4.SpringRunner;
-import org.springframework.util.LinkedMultiValueMap;
-import org.springframework.util.MultiValueMap;
-
-import java.util.HashMap;
-import java.util.Map;
-
-import static java.util.Collections.singletonList;
-import static org.junit.Assert.*;
-import static org.mockito.Mockito.when;
-
-@RunWith(SpringRunner.class)
-public class HeadersInfoGcpImplTest {
-
-    @Mock
-    private HttpHeaders httpHeaders;
-    @Mock
-    private DpsHeaders dpsHeaders;
-    @InjectMocks
-    private HeadersInfoGcpImpl sut;
-
-    @Test
-    public void should_convert_Cloud_Trace_when_header_contains_it() {
-        Map<String, String> requestHeaders = new HashMap<>();
-        requestHeaders.put(DpsHeaders.AUTHORIZATION, "any token");
-        requestHeaders.put(AppEngineHeaders.CLOUD_TRACE_CONTEXT, "any trace");
-
-        DpsHeaders map = this.sut.getCoreServiceHeaders(requestHeaders);
-
-        assertEquals("any token", map.getAuthorization());
-        assertEquals("any trace", map.getHeaders().get(AppEngineHeaders.TRACE_ID));
-    }
-
-    @Test
-    public void should_return_header_logs_when_header_contains_email() {
-        MultiValueMap<String, String> requestHeaders = new LinkedMultiValueMap<>();
-        requestHeaders.add(DpsHeaders.AUTHORIZATION, "any token");
-        requestHeaders.add(DpsHeaders.ON_BEHALF_OF, "any onBehalf");
-        requestHeaders.add(DpsHeaders.CORRELATION_ID, "any correlationId");
-        requestHeaders.add(DpsHeaders.USER_EMAIL, "abc@xyz.com");
-        requestHeaders.add(DpsHeaders.ACCOUNT_ID, "any account");
-
-        DpsHeaders map = this.sut.getCoreServiceHeaders(requestHeaders.toSingleValueMap());
-        assertEquals("any token", map.getAuthorization());
-        DpsHeaders headers = DpsHeaders.createFromEntrySet(requestHeaders.entrySet());
-
-        assertEquals("account id: any account | on behalf: any onBehalf | user email: any onBehalf | correlation id: " +
-                "any correlationId", HeadersUtil.toLogMsg(headers, "any onBehalf"));
-    }
-
-    @Test
-    public void should_return_header_logs_when_jwt_decode_fails() {
-        MultiValueMap<String, String> requestHeaders = new LinkedMultiValueMap<>();
-        requestHeaders.add(DpsHeaders.AUTHORIZATION, "any token");
-        requestHeaders.add(DpsHeaders.ON_BEHALF_OF, "any onBehalf");
-        requestHeaders.add(DpsHeaders.CORRELATION_ID, "any correlationId");
-        requestHeaders.add(DpsHeaders.ACCOUNT_ID, "any account");
-
-        DpsHeaders map = this.sut.getCoreServiceHeaders(requestHeaders.toSingleValueMap());
-
-        assertEquals("any token", map.getAuthorization());
-
-        DpsHeaders headers = DpsHeaders.createFromEntrySet(requestHeaders.entrySet());
-        assertEquals("account id: any account | on behalf: any onBehalf | correlation id: any correlationId",
-                HeadersUtil.toLogMsg(headers, null));
-    }
-
-    @Test
-    public void should_return_header_logs_when_header_doesNot_contain_email() {
-        Map<String, String> requestHeaders = new HashMap<>();
-        requestHeaders.put(DpsHeaders.AUTHORIZATION, "any token");
-        requestHeaders.put(DpsHeaders.ON_BEHALF_OF, "any onBehalf");
-        requestHeaders.put(DpsHeaders.CORRELATION_ID, "any correlationId");
-        requestHeaders.put(DpsHeaders.ACCOUNT_ID, "any account");
-
-        DpsHeaders map = this.sut.getCoreServiceHeaders(requestHeaders);
-        assertEquals("any token", map.getHeaders().get(DpsHeaders.AUTHORIZATION));
-    }
-
-    @Test
-    public void check_correct_headers() {
-        Map<String, String> requestHeaders = new HashMap<>();
-        requestHeaders.put(DpsHeaders.AUTHORIZATION, "any token");
-        requestHeaders.put(DpsHeaders.CORRELATION_ID, "any correlationId");
-        requestHeaders.put(DpsHeaders.ACCOUNT_ID, "any account");
-        requestHeaders.put(DpsHeaders.ON_BEHALF_OF, "any onBehalf");
-        requestHeaders.put(DpsHeaders.USER_EMAIL, "abc@xyz.com");
-        requestHeaders.put(DpsHeaders.CONTENT_TYPE, "any contentType");
-        requestHeaders.put(AppEngineHeaders.DATA_GROUPS, "any dataGrp");
-        requestHeaders.put(AppEngineHeaders.CRON_SERVICE, "true");
-
-        DpsHeaders map = this.sut.getCoreServiceHeaders(requestHeaders);
-
-        assertEquals("any token", map.getAuthorization());
-        assertEquals("any correlationId", map.getCorrelationId());
-        assertEquals("abc@xyz.com", map.getUserEmail());
-        assertEquals("any account", map.getPartitionIdWithFallbackToAccountId());
-        assertEquals("any onBehalf", map.getOnBehalfOf());
-        assertEquals("any contentType", map.getHeaders().get(DpsHeaders.CONTENT_TYPE));
-        assertEquals("any dataGrp", map.getHeaders().get(AppEngineHeaders.DATA_GROUPS));
-        assertEquals("true", map.getHeaders().get(AppEngineHeaders.CRON_SERVICE));
-    }
-
-    @Test
-    public void should_return_null_auth_header_when_invalid_header() {
-        Map<String, String> requestHeaders = new HashMap<>();
-        requestHeaders.put(DpsHeaders.AUTHORIZATION, null);
-
-        DpsHeaders map = this.sut.getCoreServiceHeaders(requestHeaders);
-
-        assertNotNull(map);
-        assertNull(map.getAuthorization());
-    }
-
-    @Ignore
-    @Test
-    public void should_addCorrelationId_when_gettingHeaders() {
-        MultiValueMap<String, String> requestHeaders = new LinkedMultiValueMap<>();
-        requestHeaders.put(DpsHeaders.USER_EMAIL, singletonList("a@b.com"));
-        when(httpHeaders.toSingleValueMap()).thenReturn(requestHeaders.toSingleValueMap());
-
-        assertNotNull(sut.getHeaders().getCorrelationId());
-    }
-
-    @Ignore
-    @Test
-    public void should_returnUser_when_requested() {
-        MultiValueMap<String, String> requestHeaders = new LinkedMultiValueMap<>();
-        requestHeaders.put(DpsHeaders.USER_EMAIL, singletonList("a@b.com"));
-        when(httpHeaders.toSingleValueMap()).thenReturn(requestHeaders.toSingleValueMap());
-
-        assertEquals("a@b.com", sut.getUser());
-    }
-
-    @Ignore
-    @Test
-    public void should_returnPrimaryAccountId_when_requested() {
-        MultiValueMap<String, String> requestHeaders = new LinkedMultiValueMap<>();
-        requestHeaders.put(SlbHeaders.PRIMARY_PARTITION_ID, singletonList("apc"));
-        when(httpHeaders.toSingleValueMap()).thenReturn(requestHeaders.toSingleValueMap());
-
-        assertEquals("apc", sut.getPrimaryPartitionId());
-    }
-
-    @Test
-    public void should_convert_to_string_when_map_is_correct() {
-        MultiValueMap<String, String> requestHeaders = new LinkedMultiValueMap<>();
-        requestHeaders.add("a", "a val");
-        requestHeaders.add("b", "b val");
-        requestHeaders.add(DpsHeaders.AUTHORIZATION, "blah");
-        when(this.httpHeaders.toSingleValueMap()).thenReturn(requestHeaders.toSingleValueMap());
-
-        assertFalse(this.sut.toString().contains("a=a val"));
-        assertFalse(this.sut.toString().contains("b=b val"));
-    }
-
-//    @Test
-//    public void should_convert_multivalued_map_to_hash_map_when_input_map_is_correct() {
-//        MultivaluedMap<String, String> requestHeaders = new MultivaluedMapImpl<String, String>();
-//        requestHeaders.putSingle(DpsHeaders.AUTHORIZATION, "any token");
-//        requestHeaders.putSingle(DpsHeaders.CORRELATION_ID, "any correlationId");
-//        requestHeaders.putSingle(DpsHeaders.ACCOUNT_ID, "any account");
-//        requestHeaders.putSingle(DpsHeaders.ON_BEHALF_OF, "any onBehalf");
-//        requestHeaders.putSingle(DpsHeaders.USER_EMAIL, "abc@xyz.com");
-//        requestHeaders.putSingle(DpsHeaders.CONTENT_TYPE, "any contentType");
-//        requestHeaders.putSingle(AppEngineHeaders.DATA_GROUPS, "any dataGrp");
-//
-//        Map<String, String> map = this.sut.convertMultiToRegularMap(requestHeaders);
-//
-//        assertEquals("any token", map.get(DpsHeaders.AUTHORIZATION));
-//        assertEquals("any correlationId", map.get(DpsHeaders.CORRELATION_ID));
-//        assertEquals("abc@xyz.com", map.get(DpsHeaders.USER_EMAIL));
-//        assertEquals("any account", map.get(DpsHeaders.ACCOUNT_ID));
-//        assertEquals("any onBehalf", map.get(DpsHeaders.ON_BEHALF_OF));
-//        assertEquals("any contentType", map.get(DpsHeaders.CONTENT_TYPE));
-//        assertEquals("any dataGrp", map.get(AppEngineHeaders.DATA_GROUPS));
-//    }
-}
\ No newline at end of file
diff --git a/provider/indexer-gcp/src/test/java/org/opengroup/osdu/indexer/util/ServiceAccountJwtGcpClientImplTest.java b/provider/indexer-gcp/src/test/java/org/opengroup/osdu/indexer/util/ServiceAccountJwtGcpClientImplTest.java
index 3a96da54de824e9920773d234657edfc4cc76a99..341cd72e461d8bfa287d2ddf96ec958aa54123e8 100644
--- a/provider/indexer-gcp/src/test/java/org/opengroup/osdu/indexer/util/ServiceAccountJwtGcpClientImplTest.java
+++ b/provider/indexer-gcp/src/test/java/org/opengroup/osdu/indexer/util/ServiceAccountJwtGcpClientImplTest.java
@@ -32,21 +32,16 @@ import org.junit.runner.RunWith;
 import org.mockito.InjectMocks;
 import org.mockito.Mock;
 import org.mockito.Spy;
-import org.opengroup.osdu.core.common.model.core.DpsHeaders;
-import org.opengroup.osdu.core.common.model.core.TenantInfo;
-import org.opengroup.osdu.core.common.model.AppException;
+import org.opengroup.osdu.core.common.model.tenant.TenantInfo;
+import org.opengroup.osdu.core.common.model.http.AppException;
 import org.opengroup.osdu.core.common.service.logging.JaxRsDpsLog;
-import org.opengroup.osdu.indexer.service.TenantInfoServiceImpl;
-import org.opengroup.osdu.core.common.model.coreis.DeploymentEnvironment;
-import org.opengroup.osdu.core.common.model.coreis.IdToken;
+import org.opengroup.osdu.core.common.model.search.DeploymentEnvironment;
+import org.opengroup.osdu.core.common.model.search.IdToken;
 import org.opengroup.osdu.core.common.provider.interfaces.IJwtCache;
-import org.opengroup.osdu.core.common.service.coreis.Config;
+import org.opengroup.osdu.core.common.service.search.Config;
 import org.powermock.core.classloader.annotations.PrepareForTest;
 import org.springframework.test.context.junit4.SpringRunner;
 
-import java.util.HashMap;
-import java.util.Map;
-
 import static org.junit.Assert.fail;
 import static org.mockito.Matchers.any;
 import static org.mockito.MockitoAnnotations.initMocks;
@@ -79,14 +74,12 @@ public class ServiceAccountJwtGcpClientImplTest {
     private CloseableHttpClient httpClient;
     @Mock
     private CloseableHttpResponse httpResponse;
-    @InjectMocks
-    private TenantInfoServiceImpl tenantInfoServiceProvider;
-    @Mock
-    private TenantInfoServiceImpl tenantInfoService;
+//    @InjectMocks
+//    private TenantInfoServiceImpl tenantInfoServiceProvider;
+//    @Mock
+//    private TenantInfoServiceImpl tenantInfoService;
     @Mock
     private IJwtCache cacheService;
-    @Mock
-    private HeadersInfoGcpImpl headersInfoGcp;
     @InjectMocks @Spy
     private ServiceAccountJwtGcpClientImpl sut;
     @Before
@@ -108,11 +101,11 @@ public class ServiceAccountJwtGcpClientImplTest {
         when(Config.getDeploymentEnvironment()).thenReturn(DeploymentEnvironment.LOCAL);
         when(Config.getGoogleAudiences()).thenReturn("aud");
 
-        when(this.tenantInfoServiceProvider).thenReturn(this.tenantInfoService);
+//        when(this.tenantInfoServiceProvider).thenReturn(this.tenantInfoService);
         
         TenantInfo tenantInfo = new TenantInfo();
         tenantInfo.setServiceAccount("tenant");
-        when(this.tenantInfoService.getTenantInfo()).thenReturn(tenantInfo);
+//        when(this.tenantInfoService.getTenantInfo()).thenReturn(tenantInfo);
 
         when(this.sut.getIam()).thenReturn(iam);
         when(this.iam.projects()).thenReturn(iamProject);
@@ -121,9 +114,6 @@ public class ServiceAccountJwtGcpClientImplTest {
         when(this.signJwt.execute()).thenReturn(signJwtResponse);
         when(this.signJwtResponse.getSignedJwt()).thenReturn("testJwt");
 
-        Map<String, String> headers = new HashMap<>();
-        DpsHeaders dpsHeaders = DpsHeaders.createFromMap(headers);
-        when(this.headersInfoGcp.getHeaders()).thenReturn(dpsHeaders);
     }
 
     @Test
diff --git a/provider/indexer-gcp/src/test/java/org/opengroup/osdu/indexer/util/TraceIdExtractorTest.java b/provider/indexer-gcp/src/test/java/org/opengroup/osdu/indexer/util/TraceIdExtractorTest.java
deleted file mode 100644
index 971392d6029655e650ec69b8fa3055cab7b3727d..0000000000000000000000000000000000000000
--- a/provider/indexer-gcp/src/test/java/org/opengroup/osdu/indexer/util/TraceIdExtractorTest.java
+++ /dev/null
@@ -1,71 +0,0 @@
-// Copyright 2017-2019, Schlumberger
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//      http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.opengroup.osdu.indexer.util;
-
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.opengroup.osdu.core.common.model.core.DpsHeaders;
-import org.opengroup.osdu.core.gcp.model.AppEngineHeaders;
-import org.springframework.test.context.junit4.SpringRunner;
-import org.springframework.util.LinkedMultiValueMap;
-import org.springframework.util.MultiValueMap;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import static junit.framework.TestCase.assertTrue;
-
-@RunWith(SpringRunner.class)
-public class TraceIdExtractorTest {
-
-    @Test
-    public void should_getTraceableCloudContext_when_header_doesNot_contains_it() {
-        List<String> token = new ArrayList<>();
-        token.add("any token");
-        MultiValueMap<String, String> requestHeaders = new LinkedMultiValueMap<>();
-        requestHeaders.put(DpsHeaders.AUTHORIZATION, token);
-
-        String actual = TraceIdExtractor.getTraceableCloudContext(requestHeaders);
-
-        assertTrue(actual.matches(".*o=1"));
-    }
-
-    @Test
-    public void should_getTraceableCloudContext_when_header_contains_it() {
-        List<String> token = new ArrayList<>();
-        token.add("any token");
-        List<String> trace = new ArrayList<>();
-        trace.add("any trace");
-        MultiValueMap<String, String> requestHeaders = new LinkedMultiValueMap<>();
-        requestHeaders.put(DpsHeaders.AUTHORIZATION, token);
-        requestHeaders.put(AppEngineHeaders.CLOUD_TRACE_CONTEXT, trace);
-
-        String actual = TraceIdExtractor.getTraceableCloudContext(requestHeaders);
-        assertTrue(actual.matches("any trace/.*o=1"));
-
-        trace = new ArrayList<>();
-        trace.add("any/trace");
-        requestHeaders.put(AppEngineHeaders.CLOUD_TRACE_CONTEXT, trace);
-        actual = TraceIdExtractor.getTraceableCloudContext(requestHeaders);
-        assertTrue(actual.matches("any/trace;o=1"));
-
-        trace = new ArrayList<>();
-        trace.add("any/trace/test");
-        requestHeaders.put(AppEngineHeaders.CLOUD_TRACE_CONTEXT, trace);
-        actual = TraceIdExtractor.getTraceableCloudContext(requestHeaders);
-        assertTrue(actual.matches("any/trace;o=1"));
-    }
-
-}
diff --git a/testing/indexer-test-core/pom.xml b/testing/indexer-test-core/pom.xml
index 3e3821f726bd738cf0f6475c1c8f04da14512b3d..0bb88fd2f3b463471d0597909aa34e3dfdbfcde8 100644
--- a/testing/indexer-test-core/pom.xml
+++ b/testing/indexer-test-core/pom.xml
@@ -15,6 +15,12 @@
     </properties>
 
     <dependencies>
+        <dependency>
+            <groupId>org.opengroup.osdu</groupId>
+            <artifactId>os-core-common</artifactId>
+            <version>0.0.9-SNAPSHOT</version>
+        </dependency>
+
         <dependency>
             <groupId>com.google.api-client</groupId>
             <artifactId>google-api-client</artifactId>
diff --git a/testing/indexer-test-core/src/main/java/org/opengroup/osdu/common/RecordSteps.java b/testing/indexer-test-core/src/main/java/org/opengroup/osdu/common/RecordSteps.java
index fe57b8cc49e8566c72ed28e4194fe666a4f886d7..a58c18461e0008ba32fa2622f48995fcfc9eee9e 100644
--- a/testing/indexer-test-core/src/main/java/org/opengroup/osdu/common/RecordSteps.java
+++ b/testing/indexer-test-core/src/main/java/org/opengroup/osdu/common/RecordSteps.java
@@ -9,7 +9,7 @@ import cucumber.api.DataTable;
 import lombok.extern.java.Log;
 import org.elasticsearch.cluster.metadata.MappingMetaData;
 import org.elasticsearch.common.collect.ImmutableOpenMap;
-import org.opengroup.osdu.models.Acl;
+import org.opengroup.osdu.core.common.model.entitlements.Acl;
 import org.opengroup.osdu.models.Setup;
 import org.opengroup.osdu.models.TestIndex;
 import org.opengroup.osdu.util.ElasticUtils;
@@ -17,7 +17,6 @@ import org.opengroup.osdu.util.FileHandler;
 import org.opengroup.osdu.util.HTTPClient;
 
 import javax.ws.rs.HttpMethod;
-import java.io.File;
 import java.io.IOException;
 import java.lang.reflect.Type;
 import java.util.HashMap;
diff --git a/testing/indexer-test-core/src/main/java/org/opengroup/osdu/common/TestsBase.java b/testing/indexer-test-core/src/main/java/org/opengroup/osdu/common/TestsBase.java
index 43cd1b4d429d69acd6486d418fb93795d03b3319..e24a19da82531608b8609f3543013bf2576e0e17 100644
--- a/testing/indexer-test-core/src/main/java/org/opengroup/osdu/common/TestsBase.java
+++ b/testing/indexer-test-core/src/main/java/org/opengroup/osdu/common/TestsBase.java
@@ -2,7 +2,7 @@ package org.opengroup.osdu.common;
 
 import com.google.gson.Gson;
 
-import org.opengroup.osdu.models.Legal;
+import org.opengroup.osdu.core.common.model.legal.Legal;
 import org.opengroup.osdu.models.Setup;
 import org.opengroup.osdu.models.TestIndex;
 import org.opengroup.osdu.response.ResponseBase;
@@ -15,10 +15,7 @@ import lombok.extern.java.Log;
 
 import javax.ws.rs.core.MediaType;
 import javax.ws.rs.core.MultivaluedMap;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
+import java.util.*;
 
 import static org.junit.Assert.assertEquals;
 import static org.opengroup.osdu.util.Config.*;
@@ -142,9 +139,11 @@ public abstract class TestsBase {
 
     protected Legal generateLegalTag() {
         Legal legal = new Legal();
-        String[] legalTags = {getLegalTag()};
+        Set<String> legalTags = new HashSet<>();
+        legalTags.add(getLegalTag());
         legal.setLegaltags(legalTags);
-        String[] otherRelevantCountries = {getOtherRelevantDataCountries()};
+        Set<String> otherRelevantCountries = new HashSet<>();
+        otherRelevantCountries.add(getOtherRelevantDataCountries());
         legal.setOtherRelevantDataCountries(otherRelevantCountries);
         return legal;
     }
diff --git a/testing/indexer-test-core/src/main/java/org/opengroup/osdu/models/Acl.java b/testing/indexer-test-core/src/main/java/org/opengroup/osdu/models/Acl.java
deleted file mode 100644
index a4c1f737f3223edd65c41b320dcfa2cbb3a2d19c..0000000000000000000000000000000000000000
--- a/testing/indexer-test-core/src/main/java/org/opengroup/osdu/models/Acl.java
+++ /dev/null
@@ -1,14 +0,0 @@
-package org.opengroup.osdu.models;
-
-import lombok.Builder;
-import lombok.Data;
-
-@Data
-@Builder
-public class Acl {
-
-    private String[] viewers;
-
-    private String[] owners;
-
-}
\ No newline at end of file
diff --git a/testing/indexer-test-core/src/main/java/org/opengroup/osdu/models/Legal.java b/testing/indexer-test-core/src/main/java/org/opengroup/osdu/models/Legal.java
deleted file mode 100644
index 57595ffeadede472b86d9ffa3ee5dd37d769d165..0000000000000000000000000000000000000000
--- a/testing/indexer-test-core/src/main/java/org/opengroup/osdu/models/Legal.java
+++ /dev/null
@@ -1,20 +0,0 @@
-package org.opengroup.osdu.models;
-
-import lombok.AllArgsConstructor;
-import lombok.Builder;
-import lombok.Data;
-import lombok.NoArgsConstructor;
-
-@Data
-@Builder
-@NoArgsConstructor
-@AllArgsConstructor
-public class Legal {
-
-    private String[] legaltags;
-
-    private String[] otherRelevantDataCountries;
-
-    @lombok.Builder.Default
-    private String status = "compliant";
-}
diff --git a/testing/indexer-test-core/src/main/java/org/opengroup/osdu/models/TestIndex.java b/testing/indexer-test-core/src/main/java/org/opengroup/osdu/models/TestIndex.java
index d8c611d8b5a3aff19a5ab23606f45476d9f57609..efd8d1960362fabd2b7ee3da55903816f49c3e20 100644
--- a/testing/indexer-test-core/src/main/java/org/opengroup/osdu/models/TestIndex.java
+++ b/testing/indexer-test-core/src/main/java/org/opengroup/osdu/models/TestIndex.java
@@ -5,16 +5,19 @@ import com.google.gson.JsonElement;
 import com.google.gson.reflect.TypeToken;
 import com.sun.jersey.api.client.ClientResponse;
 import lombok.Data;
-import lombok.NoArgsConstructor;
 
 import javax.ws.rs.HttpMethod;
 
+import org.opengroup.osdu.core.common.model.entitlements.Acl;
+import org.opengroup.osdu.core.common.model.legal.Legal;
 import org.opengroup.osdu.util.ElasticUtils;
 import org.opengroup.osdu.util.FileHandler;
 import org.opengroup.osdu.util.HTTPClient;
 
+import java.util.HashSet;
 import java.util.List;
 import java.util.Map;
+import java.util.Set;
 import java.util.logging.Logger;
 
 import static org.junit.Assert.assertEquals;
@@ -127,9 +130,11 @@ public class TestIndex {
 
     private Legal generateLegalTag() {
         Legal legal = new Legal();
-        String[] legalTags = {getLegalTag()};
+        Set<String> legalTags = new HashSet<>();
+        legalTags.add(getLegalTag());
         legal.setLegaltags(legalTags);
-        String[] otherRelevantCountries = {getOtherRelevantDataCountries()};
+        Set<String> otherRelevantCountries = new HashSet<>();
+        otherRelevantCountries.add(getOtherRelevantDataCountries());
         legal.setOtherRelevantDataCountries(otherRelevantCountries);
         return legal;
     }