diff --git a/indexer-service-azure/pom.xml b/indexer-service-azure/pom.xml
index 53660ea2489a326dc0063d587e4486345c2befdf..438bda1b1732fb17716340afa2ca0d30b06a7fcb 100644
--- a/indexer-service-azure/pom.xml
+++ b/indexer-service-azure/pom.xml
@@ -63,7 +63,7 @@
                         <configuration>
                             <classifier>spring-boot</classifier>
                             <mainClass>
-                                org.opendes.indexer.IndexerAzureApplication
+                                org.opendes.indexer.azure.IndexerAzureApplication
                             </mainClass>
                         </configuration>
                     </execution>
diff --git a/indexer-service-azure/src/main/java/IndexerAzureApplication.java b/indexer-service-azure/src/main/java/org/opendes/indexer/azure/IndexerAzureApplication.java
similarity index 88%
rename from indexer-service-azure/src/main/java/IndexerAzureApplication.java
rename to indexer-service-azure/src/main/java/org/opendes/indexer/azure/IndexerAzureApplication.java
index 4e2e80363e9327d204373e6a6d5177a924f04734..0662e463ff994655ca1d18f0d172eaab6493dcb5 100644
--- a/indexer-service-azure/src/main/java/IndexerAzureApplication.java
+++ b/indexer-service-azure/src/main/java/org/opendes/indexer/azure/IndexerAzureApplication.java
@@ -1,9 +1,13 @@
+package org.opendes.indexer.azure;
+
 import org.springframework.boot.SpringApplication;
 import org.springframework.boot.autoconfigure.SpringBootApplication;
 
 @SpringBootApplication
 public class IndexerAzureApplication {
+
     public static void main(String[] args) {
         SpringApplication.run(IndexerAzureApplication.class, args);
     }
+
 }
diff --git a/indexer-service-azure/src/main/java/org/opendes/indexer/azure/util/di/EntitlementsClientFactory.java b/indexer-service-azure/src/main/java/org/opendes/indexer/azure/di/EntitlementsClientFactory.java
similarity index 93%
rename from indexer-service-azure/src/main/java/org/opendes/indexer/azure/util/di/EntitlementsClientFactory.java
rename to indexer-service-azure/src/main/java/org/opendes/indexer/azure/di/EntitlementsClientFactory.java
index 9a35576266d1741c332271a35f977fc7363eec5a..fea892cb0cd8b19c5a147a685eae16693694fab2 100644
--- a/indexer-service-azure/src/main/java/org/opendes/indexer/azure/util/di/EntitlementsClientFactory.java
+++ b/indexer-service-azure/src/main/java/org/opendes/indexer/azure/di/EntitlementsClientFactory.java
@@ -1,4 +1,4 @@
-package org.opendes.indexer.azure.util.di;
+package org.opendes.indexer.azure.di;
 
 import org.opendes.client.api.entitlements.IEntitlementsFactory;
 import org.springframework.beans.factory.config.AbstractFactoryBean;
diff --git a/indexer-service-azure/src/main/java/org/opendes/indexer/azure/util/di/EntitlementsFactoryAzure.java b/indexer-service-azure/src/main/java/org/opendes/indexer/azure/di/EntitlementsFactoryAzure.java
similarity index 89%
rename from indexer-service-azure/src/main/java/org/opendes/indexer/azure/util/di/EntitlementsFactoryAzure.java
rename to indexer-service-azure/src/main/java/org/opendes/indexer/azure/di/EntitlementsFactoryAzure.java
index ee5fd82803f8d4bcdb684de84c1b28b93736165f..b4dc544dfcffbae670d1f5deada5ffcfe98b1ccf 100644
--- a/indexer-service-azure/src/main/java/org/opendes/indexer/azure/util/di/EntitlementsFactoryAzure.java
+++ b/indexer-service-azure/src/main/java/org/opendes/indexer/azure/di/EntitlementsFactoryAzure.java
@@ -1,4 +1,4 @@
-package org.opendes.indexer.azure.util.di;
+package org.opendes.indexer.azure.di;
 
 import org.opendes.client.api.DpsHeaders;
 import org.opendes.client.api.entitlements.IEntitlementsFactory;
diff --git a/indexer-service-azure/src/main/java/org/opendes/indexer/azure/util/di/EntitlementsServiceAzure.java b/indexer-service-azure/src/main/java/org/opendes/indexer/azure/di/EntitlementsServiceAzure.java
similarity index 98%
rename from indexer-service-azure/src/main/java/org/opendes/indexer/azure/util/di/EntitlementsServiceAzure.java
rename to indexer-service-azure/src/main/java/org/opendes/indexer/azure/di/EntitlementsServiceAzure.java
index eb20161adae2f491cc3f4711baf535dbbe3030a5..d805136b92d7f61bfa6a2c20058596772d576d85 100644
--- a/indexer-service-azure/src/main/java/org/opendes/indexer/azure/util/di/EntitlementsServiceAzure.java
+++ b/indexer-service-azure/src/main/java/org/opendes/indexer/azure/di/EntitlementsServiceAzure.java
@@ -1,4 +1,4 @@
-package org.opendes.indexer.azure.util.di;
+package org.opendes.indexer.azure.di;
 
 import com.microsoft.azure.spring.autoconfigure.aad.UserPrincipal;
 import org.apache.http.HttpStatus;
diff --git a/indexer-service-azure/src/main/java/org/opendes/indexer/azure/util/di/TenantFactoryImpl.java b/indexer-service-azure/src/main/java/org/opendes/indexer/azure/di/TenantFactoryImpl.java
similarity index 96%
rename from indexer-service-azure/src/main/java/org/opendes/indexer/azure/util/di/TenantFactoryImpl.java
rename to indexer-service-azure/src/main/java/org/opendes/indexer/azure/di/TenantFactoryImpl.java
index 6ecf8c0084b64f7f0cc448b994b685b957d1bcc0..ef4233b70eee64d26893736b28423966e11d619b 100644
--- a/indexer-service-azure/src/main/java/org/opendes/indexer/azure/util/di/TenantFactoryImpl.java
+++ b/indexer-service-azure/src/main/java/org/opendes/indexer/azure/di/TenantFactoryImpl.java
@@ -1,4 +1,4 @@
-package org.opendes.indexer.azure.util.di;
+package org.opendes.indexer.azure.di;
 
 import org.opendes.client.cache.ICache;
 import org.opendes.client.multitenancy.ITenantFactory;
diff --git a/indexer-service-azure/src/main/java/org/opendes/indexer/azure/util/kms/KmsClientImpl.java b/indexer-service-azure/src/main/java/org/opendes/indexer/azure/kms/KmsClientImpl.java
similarity index 89%
rename from indexer-service-azure/src/main/java/org/opendes/indexer/azure/util/kms/KmsClientImpl.java
rename to indexer-service-azure/src/main/java/org/opendes/indexer/azure/kms/KmsClientImpl.java
index 1743a82c7f7a2e702c8f24e1305ad797bdeee2d6..8e1b169e602d7595cad7f9e5b7bda4a411381e22 100644
--- a/indexer-service-azure/src/main/java/org/opendes/indexer/azure/util/kms/KmsClientImpl.java
+++ b/indexer-service-azure/src/main/java/org/opendes/indexer/azure/kms/KmsClientImpl.java
@@ -1,4 +1,4 @@
-package org.opendes.indexer.azure.util.kms;
+package org.opendes.indexer.azure.kms;
 
 import org.opendes.core.kms.IKmsClient;
 
diff --git a/indexer-service-azure/src/main/java/org/opendes/indexer/azure/model/ISchemaRepository.java b/indexer-service-azure/src/main/java/org/opendes/indexer/azure/model/ISchemaRepository.java
new file mode 100644
index 0000000000000000000000000000000000000000..5f2d7dd978c701e91c59a4ede9818c7f10195c0c
--- /dev/null
+++ b/indexer-service-azure/src/main/java/org/opendes/indexer/azure/model/ISchemaRepository.java
@@ -0,0 +1,30 @@
+
+
+// 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.opendes.indexer.azure.model;
+
+public interface ISchemaRepository {
+    String SCHEMA_KIND = "IndexerSchema";
+
+    String SCHEMA = "schema";
+    String USER = "user";
+    String EXTENSION = "extension";
+
+    void add(Schema schema, String user);
+
+    Schema get(String kind);
+}
+
diff --git a/indexer-service-azure/src/main/java/org/opendes/indexer/azure/model/Schema.java b/indexer-service-azure/src/main/java/org/opendes/indexer/azure/model/Schema.java
new file mode 100644
index 0000000000000000000000000000000000000000..14b1cf950ce8207aeb772c0dbf23f02836fae203
--- /dev/null
+++ b/indexer-service-azure/src/main/java/org/opendes/indexer/azure/model/Schema.java
@@ -0,0 +1,46 @@
+// 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.opendes.indexer.azure.model;
+
+        import java.util.Map;
+
+        import javax.validation.Valid;
+        import javax.validation.constraints.NotNull;
+
+        import lombok.AllArgsConstructor;
+        import lombok.Data;
+        import lombok.NoArgsConstructor;
+
+        import io.swagger.annotations.ApiModelProperty;
+        import org.opendes.indexer.SwaggerDoc;
+        import org.opendes.core.validation.ValidKind;
+
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+public class Schema {
+
+    @ValidKind
+    @NotNull
+    @ApiModelProperty(value = SwaggerDoc.SCHEMA_REQUEST_KIND,
+            required = true,
+            example = SwaggerDoc.RECORD_KIND_EXAMPLE)
+    private String kind;
+
+    @Valid
+    private SchemaItem[] schema;
+
+    private Map<String, Object> ext;
+}
\ No newline at end of file
diff --git a/indexer-service-azure/src/main/java/org/opendes/indexer/azure/model/SchemaItem.java b/indexer-service-azure/src/main/java/org/opendes/indexer/azure/model/SchemaItem.java
new file mode 100644
index 0000000000000000000000000000000000000000..d4fe01a153d8b38733207a639a4d2bea0754d503
--- /dev/null
+++ b/indexer-service-azure/src/main/java/org/opendes/indexer/azure/model/SchemaItem.java
@@ -0,0 +1,41 @@
+// 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.opendes.indexer.azure.model;
+
+import java.util.Map;
+
+import javax.validation.constraints.NotEmpty;
+
+import com.fasterxml.jackson.annotation.JsonInclude;
+import com.fasterxml.jackson.annotation.JsonInclude.Include;
+
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+public class SchemaItem {
+
+    @NotEmpty
+    private String path;
+
+    @NotEmpty
+    private String kind;
+
+    @JsonInclude(value = Include.NON_NULL)
+    private Map<String, Object> ext;
+}
diff --git a/indexer-service-azure/src/main/java/org/opendes/indexer/azure/util/persistence/ElasticRepositoryCosmosDB.java b/indexer-service-azure/src/main/java/org/opendes/indexer/azure/persistence/ElasticRepositoryCosmosDB.java
similarity index 86%
rename from indexer-service-azure/src/main/java/org/opendes/indexer/azure/util/persistence/ElasticRepositoryCosmosDB.java
rename to indexer-service-azure/src/main/java/org/opendes/indexer/azure/persistence/ElasticRepositoryCosmosDB.java
index e1b79ca8b980f042b9544cb6d959efc6b3019b04..b5796c629c3eef1dbbff4ece7e914ebe5520eaf3 100644
--- a/indexer-service-azure/src/main/java/org/opendes/indexer/azure/util/persistence/ElasticRepositoryCosmosDB.java
+++ b/indexer-service-azure/src/main/java/org/opendes/indexer/azure/persistence/ElasticRepositoryCosmosDB.java
@@ -1,4 +1,4 @@
-package org.opendes.indexer.azure.util.persistence;
+package org.opendes.indexer.azure.persistence;
 
 import org.opendes.client.multitenancy.TenantInfo;
 import org.opendes.core.model.ClusterSettings;
diff --git a/indexer-service-azure/src/main/java/org/opendes/indexer/azure/util/persistence/SchemaRepositoryImpl.java b/indexer-service-azure/src/main/java/org/opendes/indexer/azure/persistence/SchemaRepositoryImpl.java
similarity index 89%
rename from indexer-service-azure/src/main/java/org/opendes/indexer/azure/util/persistence/SchemaRepositoryImpl.java
rename to indexer-service-azure/src/main/java/org/opendes/indexer/azure/persistence/SchemaRepositoryImpl.java
index 7a3e795370af6d5bbafbbc1091bf305c92332a4e..a0a6445e608ff097a0de1dc000b8470d2ba910b1 100644
--- a/indexer-service-azure/src/main/java/org/opendes/indexer/azure/util/persistence/SchemaRepositoryImpl.java
+++ b/indexer-service-azure/src/main/java/org/opendes/indexer/azure/persistence/SchemaRepositoryImpl.java
@@ -1,4 +1,4 @@
-package org.opendes.indexer.azure.util.persistence;
+package org.opendes.indexer.azure.persistence;
 
 import com.microsoft.azure.spring.data.cosmosdb.core.mapping.Document;
 import com.microsoft.azure.spring.data.cosmosdb.core.mapping.PartitionKey;
@@ -6,9 +6,9 @@ import com.microsoft.azure.spring.data.cosmosdb.repository.DocumentDbRepository;
 import lombok.AllArgsConstructor;
 import lombok.Data;
 import lombok.NoArgsConstructor;
-import org.opendes.core.model.Schema;
-import org.opendes.core.model.SchemaItem;
-import org.opendes.core.service.ISchemaRepository;
+import org.opendes.indexer.azure.model.Schema;
+import org.opendes.indexer.azure.model.SchemaItem;
+import org.opendes.indexer.azure.model.ISchemaRepository;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.data.annotation.Id;
 import org.springframework.stereotype.Repository;
diff --git a/indexer-service-azure/src/main/java/org/opendes/indexer/azure/util/util/RequestInfoImpl.java b/indexer-service-azure/src/main/java/org/opendes/indexer/azure/util/RequestInfoImpl.java
similarity index 98%
rename from indexer-service-azure/src/main/java/org/opendes/indexer/azure/util/util/RequestInfoImpl.java
rename to indexer-service-azure/src/main/java/org/opendes/indexer/azure/util/RequestInfoImpl.java
index c70f59b523055cbf561a93445a54e8f47ad6ee42..a1210a82345698a0ac231913a467adab195ed8fe 100644
--- a/indexer-service-azure/src/main/java/org/opendes/indexer/azure/util/util/RequestInfoImpl.java
+++ b/indexer-service-azure/src/main/java/org/opendes/indexer/azure/util/RequestInfoImpl.java
@@ -1,4 +1,4 @@
-package org.opendes.indexer.azure.util.util;
+package org.opendes.indexer.azure.util;
 
 import com.google.common.base.Strings;
 import org.apache.http.HttpStatus;
diff --git a/indexer-service-azure/src/main/java/org/opendes/indexer/azure/util/util/ServiceAccountJwtClientImpl.java b/indexer-service-azure/src/main/java/org/opendes/indexer/azure/util/ServiceAccountJwtClientImpl.java
similarity index 86%
rename from indexer-service-azure/src/main/java/org/opendes/indexer/azure/util/util/ServiceAccountJwtClientImpl.java
rename to indexer-service-azure/src/main/java/org/opendes/indexer/azure/util/ServiceAccountJwtClientImpl.java
index 440b05b589830b0b7cfab111f47fa9103e6b5b63..609a5725594a463613222b4037ef62fff1915a12 100644
--- a/indexer-service-azure/src/main/java/org/opendes/indexer/azure/util/util/ServiceAccountJwtClientImpl.java
+++ b/indexer-service-azure/src/main/java/org/opendes/indexer/azure/util/ServiceAccountJwtClientImpl.java
@@ -1,4 +1,4 @@
-package org.opendes.indexer.azure.util.util;
+package org.opendes.indexer.azure.util;
 
 import org.opendes.core.util.IServiceAccountJwtClient;
 import org.springframework.stereotype.Component;
diff --git a/indexer-service-gcp/pom.xml b/indexer-service-gcp/pom.xml
index 1ac5b18cf3eaa29efe27b031a188a5de37b818f0..87f79f80e85cf9ad3475252a1c2988121ab6f0f3 100644
--- a/indexer-service-gcp/pom.xml
+++ b/indexer-service-gcp/pom.xml
@@ -121,7 +121,7 @@
                         <configuration>
                             <classifier>spring-boot</classifier>
                             <mainClass>
-                                org.opendes.indexer.IndexerGcpApplication
+                                org.opendes.indexer.gcp.IndexerGcpApplication
                             </mainClass>
                         </configuration>
                     </execution>
diff --git a/indexer-service-gcp/src/main/java/IndexerGcpApplication.java b/indexer-service-gcp/src/main/java/org/opendes/indexer/gcp/IndexerGcpApplication.java
similarity index 89%
rename from indexer-service-gcp/src/main/java/IndexerGcpApplication.java
rename to indexer-service-gcp/src/main/java/org/opendes/indexer/gcp/IndexerGcpApplication.java
index 5ad552ea7c7a5267a6f8612604a8badad0ff1d91..402e5c8a2a836b1b97b14a9752b316eb5955802a 100644
--- a/indexer-service-gcp/src/main/java/IndexerGcpApplication.java
+++ b/indexer-service-gcp/src/main/java/org/opendes/indexer/gcp/IndexerGcpApplication.java
@@ -1,3 +1,5 @@
+package org.opendes.indexer.gcp;
+
 import org.springframework.boot.SpringApplication;
 import org.springframework.boot.autoconfigure.SpringBootApplication;
 
@@ -8,4 +10,4 @@ public class IndexerGcpApplication {
         SpringApplication.run(IndexerGcpApplication.class, args);
     }
 
-}
\ No newline at end of file
+}
diff --git a/indexer-service-root/src/main/java/org/opendes/indexer/SwaggerDoc.java b/indexer-service-root/src/main/java/org/opendes/indexer/SwaggerDoc.java
index d0c9a387a220dd8f406253a2650f3a61a00251b0..4894e1df574b927c0402aa2c10786786528765ac 100644
--- a/indexer-service-root/src/main/java/org/opendes/indexer/SwaggerDoc.java
+++ b/indexer-service-root/src/main/java/org/opendes/indexer/SwaggerDoc.java
@@ -145,4 +145,8 @@ public final class SwaggerDoc {
 
     // REQUEST VALIDATION
     public static final String REQUEST_VALIDATION_NOT_NULL_BODY = "Request body can not be null";
+
+    // Azure Schema Request
+    public static final String SCHEMA_REQUEST_KIND = "Record kind for which the schema information is applied to.";
+    public static final String RECORD_KIND_EXAMPLE = "common:welldb:wellbore:1.0.0";
 }