diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 934b672cf4dcfa8f3fea5b0c91b358145b1d68fa..f1d840e87e53ed8ef6759355bf556aba8e8e3c78 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -29,7 +29,7 @@ include:
     file: "standard-setup.yml"
 
   - project: "osdu/platform/ci-cd-pipelines"
-    file: "build/maven.yml"
+    file: "build/maven.yml"    
 
   - project: "osdu/platform/ci-cd-pipelines"
     file: "scanners/fossa.yml"
diff --git a/NOTICE b/NOTICE
index 6657c6a472c747ada8406941272e3de4e213f79d..867d79e1792fecb3375bfa6543516c7c5bbfc045 100644
--- a/NOTICE
+++ b/NOTICE
@@ -55,6 +55,7 @@ The following software have components provided under the terms of this license:
 - AWS Java SDK for AWS AppSync (from https://aws.amazon.com/sdkforjava)
 - AWS Java SDK for AWS Application Auto Scaling (from https://aws.amazon.com/sdkforjava)
 - AWS Java SDK for AWS Application Discovery Service (from https://aws.amazon.com/sdkforjava)
+- AWS Java SDK for AWS Audit Manager (from https://aws.amazon.com/sdkforjava)
 - AWS Java SDK for AWS Auto Scaling Plans (from https://aws.amazon.com/sdkforjava)
 - AWS Java SDK for AWS Backup (from https://aws.amazon.com/sdkforjava)
 - AWS Java SDK for AWS Batch (from https://aws.amazon.com/sdkforjava)
@@ -70,10 +71,14 @@ The following software have components provided under the terms of this license:
 - AWS Java SDK for AWS CodeDeploy (from https://aws.amazon.com/sdkforjava)
 - AWS Java SDK for AWS CodePipeline (from https://aws.amazon.com/sdkforjava)
 - AWS Java SDK for AWS CodeStar (from https://aws.amazon.com/sdkforjava)
+- AWS Java SDK for AWS CodeStar Notifications (from https://aws.amazon.com/sdkforjava)
+- AWS Java SDK for AWS CodeStar connections (from https://aws.amazon.com/sdkforjava)
 - AWS Java SDK for AWS Comprehend Medical (from https://aws.amazon.com/sdkforjava)
+- AWS Java SDK for AWS Compute Optimizer (from https://aws.amazon.com/sdkforjava)
 - AWS Java SDK for AWS Config (from https://aws.amazon.com/sdkforjava)
 - AWS Java SDK for AWS Cost Explorer (from https://aws.amazon.com/sdkforjava)
 - AWS Java SDK for AWS Cost and Usage Report (from https://aws.amazon.com/sdkforjava)
+- AWS Java SDK for AWS Data Exchange (from https://aws.amazon.com/sdkforjava)
 - AWS Java SDK for AWS Data Pipeline (from https://aws.amazon.com/sdkforjava)
 - AWS Java SDK for AWS DataSync (from https://aws.amazon.com/sdkforjava)
 - AWS Java SDK for AWS Database Migration Service (from https://aws.amazon.com/sdkforjava)
@@ -88,9 +93,11 @@ The following software have components provided under the terms of this license:
 - AWS Java SDK for AWS Elemental MediaPackage VOD (from https://aws.amazon.com/sdkforjava)
 - AWS Java SDK for AWS Elemental MediaStore (from https://aws.amazon.com/sdkforjava)
 - AWS Java SDK for AWS Elemental MediaStore Data Plane (from https://aws.amazon.com/sdkforjava)
+- AWS Java SDK for AWS Fault Injection Simulator (from https://aws.amazon.com/sdkforjava)
 - AWS Java SDK for AWS GameLift (from https://aws.amazon.com/sdkforjava)
 - AWS Java SDK for AWS Global Accelerator (from https://aws.amazon.com/sdkforjava)
 - AWS Java SDK for AWS Glue (from https://aws.amazon.com/sdkforjava)
+- AWS Java SDK for AWS Glue DataBrew (from https://aws.amazon.com/sdkforjava)
 - AWS Java SDK for AWS Greengrass (from https://aws.amazon.com/sdkforjava)
 - AWS Java SDK for AWS Ground Station (from https://aws.amazon.com/sdkforjava)
 - AWS Java SDK for AWS Health APIs and Notifications (from https://aws.amazon.com/sdkforjava)
@@ -100,25 +107,36 @@ The following software have components provided under the terms of this license:
 - AWS Java SDK for AWS IoT 1-Click Devices (from https://aws.amazon.com/sdkforjava)
 - AWS Java SDK for AWS IoT 1-Click Projects (from https://aws.amazon.com/sdkforjava)
 - AWS Java SDK for AWS IoT Analytics (from https://aws.amazon.com/sdkforjava)
+- AWS Java SDK for AWS IoT Core Device Advisor (from https://aws.amazon.com/sdkforjava)
 - AWS Java SDK for AWS IoT Events (from https://aws.amazon.com/sdkforjava)
 - AWS Java SDK for AWS IoT Events Data (from https://aws.amazon.com/sdkforjava)
+- AWS Java SDK for AWS IoT Fleet Hub (from https://aws.amazon.com/sdkforjava)
+- AWS Java SDK for AWS IoT Greengrass V2 (from https://aws.amazon.com/sdkforjava)
 - AWS Java SDK for AWS IoT Jobs Data Plane (from https://aws.amazon.com/sdkforjava)
+- AWS Java SDK for AWS IoT Secure Tunneling (from https://aws.amazon.com/sdkforjava)
+- AWS Java SDK for AWS IoT SiteWise (from https://aws.amazon.com/sdkforjava)
 - AWS Java SDK for AWS IoT Things Graph (from https://aws.amazon.com/sdkforjava)
+- AWS Java SDK for AWS IoT Wireless (from https://aws.amazon.com/sdkforjava)
 - AWS Java SDK for AWS KMS (from https://aws.amazon.com/sdkforjava)
 - AWS Java SDK for AWS Lake Formation (from https://aws.amazon.com/sdkforjava)
 - AWS Java SDK for AWS Lambda (from https://aws.amazon.com/sdkforjava)
 - AWS Java SDK for AWS Lex (from https://aws.amazon.com/sdkforjava)
 - AWS Java SDK for AWS License Manager (from https://aws.amazon.com/sdkforjava)
+- AWS Java SDK for AWS Marketplace Catalog (from https://aws.amazon.com/sdkforjava)
 - AWS Java SDK for AWS Marketplace Commerce Analytics (from https://aws.amazon.com/sdkforjava)
 - AWS Java SDK for AWS Marketplace Entitlement (from https://aws.amazon.com/sdkforjava)
 - AWS Java SDK for AWS Marketplace Metering Service (from https://aws.amazon.com/sdkforjava)
 - AWS Java SDK for AWS MediaConnect (from https://aws.amazon.com/sdkforjava)
 - AWS Java SDK for AWS MediaTailor (from https://aws.amazon.com/sdkforjava)
 - AWS Java SDK for AWS Migration Hub (from https://aws.amazon.com/sdkforjava)
+- AWS Java SDK for AWS Migration Hub Config (from https://aws.amazon.com/sdkforjava)
 - AWS Java SDK for AWS Mobile (from https://aws.amazon.com/sdkforjava)
+- AWS Java SDK for AWS Network Firewall (from https://aws.amazon.com/sdkforjava)
+- AWS Java SDK for AWS Network Manager (from https://aws.amazon.com/sdkforjava)
 - AWS Java SDK for AWS OpsWorks (from https://aws.amazon.com/sdkforjava)
 - AWS Java SDK for AWS OpsWorks for Chef Automate (from https://aws.amazon.com/sdkforjava)
 - AWS Java SDK for AWS Organizations (from https://aws.amazon.com/sdkforjava)
+- AWS Java SDK for AWS Outposts (from https://aws.amazon.com/sdkforjava)
 - AWS Java SDK for AWS Performance Insights (from https://aws.amazon.com/sdkforjava)
 - AWS Java SDK for AWS Pricing (from https://aws.amazon.com/sdkforjava)
 - AWS Java SDK for AWS RDS Data (from https://aws.amazon.com/sdkforjava)
@@ -127,24 +145,40 @@ The following software have components provided under the terms of this license:
 - AWS Java SDK for AWS Resource Groups Tagging API (from https://aws.amazon.com/sdkforjava)
 - AWS Java SDK for AWS RoboMaker (from https://aws.amazon.com/sdkforjava)
 - AWS Java SDK for AWS S3 Control (from https://aws.amazon.com/sdkforjava)
+- AWS Java SDK for AWS SSO Identity Store (from https://aws.amazon.com/sdkforjava)
+- AWS Java SDK for AWS SSO OIDC (from https://aws.amazon.com/sdkforjava)
 - AWS Java SDK for AWS STS (from https://aws.amazon.com/sdkforjava)
+- AWS Java SDK for AWS Savings Plans (from https://aws.amazon.com/sdkforjava)
 - AWS Java SDK for AWS Secrets Manager (from https://aws.amazon.com/sdkforjava)
 - AWS Java SDK for AWS SecurityHub (from https://aws.amazon.com/sdkforjava)
 - AWS Java SDK for AWS Server Migration (from https://aws.amazon.com/sdkforjava)
 - AWS Java SDK for AWS Service Catalog (from https://aws.amazon.com/sdkforjava)
+- AWS Java SDK for AWS Service Catalog App Registry (from https://aws.amazon.com/sdkforjava)
 - AWS Java SDK for AWS Shield (from https://aws.amazon.com/sdkforjava)
 - AWS Java SDK for AWS Signer (from https://aws.amazon.com/sdkforjava)
+- AWS Java SDK for AWS Single Sign-On (from https://aws.amazon.com/sdkforjava)
+- AWS Java SDK for AWS Single Sign-On Admin (from https://aws.amazon.com/sdkforjava)
 - AWS Java SDK for AWS Step Functions (from https://aws.amazon.com/sdkforjava)
 - AWS Java SDK for AWS Storage Gateway (from https://aws.amazon.com/sdkforjava)
 - AWS Java SDK for AWS Support (from https://aws.amazon.com/sdkforjava)
+- AWS Java SDK for AWS Systems Manager Incident Manager (from https://aws.amazon.com/sdkforjava)
+- AWS Java SDK for AWS Systems Manager Incident Manager Contacts (from https://aws.amazon.com/sdkforjava)
 - AWS Java SDK for AWS Transfer for SFTP (from https://aws.amazon.com/sdkforjava)
 - AWS Java SDK for AWS WAF (from https://aws.amazon.com/sdkforjava)
+- AWS Java SDK for AWS WAFV2 (from https://aws.amazon.com/sdkforjava)
+- AWS Java SDK for AWS Well-Architected Tool (from https://aws.amazon.com/sdkforjava)
 - AWS Java SDK for AWS X-Ray (from https://aws.amazon.com/sdkforjava)
+- AWS Java SDK for AWSKendraFrontend (from https://aws.amazon.com/sdkforjava)
 - AWS Java SDK for AWSServerlessApplicationRepository (from https://aws.amazon.com/sdkforjava)
+- AWS Java SDK for Access Analyzer (from https://aws.amazon.com/sdkforjava)
 - AWS Java SDK for Alexa For Business (from https://aws.amazon.com/sdkforjava)
 - AWS Java SDK for Amazon API Gateway (from https://aws.amazon.com/sdkforjava)
+- AWS Java SDK for Amazon AppConfig (from https://aws.amazon.com/sdkforjava)
+- AWS Java SDK for Amazon AppIntegrations (from https://aws.amazon.com/sdkforjava)
 - AWS Java SDK for Amazon AppStream (from https://aws.amazon.com/sdkforjava)
+- AWS Java SDK for Amazon Appflow (from https://aws.amazon.com/sdkforjava)
 - AWS Java SDK for Amazon Athena (from https://aws.amazon.com/sdkforjava)
+- AWS Java SDK for Amazon Augmented AI Runtime (from https://aws.amazon.com/sdkforjava)
 - AWS Java SDK for Amazon Chime (from https://aws.amazon.com/sdkforjava)
 - AWS Java SDK for Amazon CloudDirectory (from https://aws.amazon.com/sdkforjava)
 - AWS Java SDK for Amazon CloudFront (from https://aws.amazon.com/sdkforjava)
@@ -153,18 +187,29 @@ The following software have components provided under the terms of this license:
 - AWS Java SDK for Amazon CloudWatch Application Insights (from https://aws.amazon.com/sdkforjava)
 - AWS Java SDK for Amazon CloudWatch Events (from https://aws.amazon.com/sdkforjava)
 - AWS Java SDK for Amazon CloudWatch Logs (from https://aws.amazon.com/sdkforjava)
+- AWS Java SDK for Amazon CodeGuru Profiler (from https://aws.amazon.com/sdkforjava)
+- AWS Java SDK for Amazon CodeGuru Reviewer (from https://aws.amazon.com/sdkforjava)
 - AWS Java SDK for Amazon Cognito Identity (from https://aws.amazon.com/sdkforjava)
 - AWS Java SDK for Amazon Cognito Identity Provider Service (from https://aws.amazon.com/sdkforjava)
 - AWS Java SDK for Amazon Cognito Sync (from https://aws.amazon.com/sdkforjava)
 - AWS Java SDK for Amazon Comprehend (from https://aws.amazon.com/sdkforjava)
 - AWS Java SDK for Amazon Connect (from https://aws.amazon.com/sdkforjava)
+- AWS Java SDK for Amazon Connect Contact Lens (from https://aws.amazon.com/sdkforjava)
+- AWS Java SDK for Amazon Connect Customer Profiles (from https://aws.amazon.com/sdkforjava)
+- AWS Java SDK for Amazon Connect Participant (from https://aws.amazon.com/sdkforjava)
 - AWS Java SDK for Amazon Data Lifecycle Manager (from https://aws.amazon.com/sdkforjava)
+- AWS Java SDK for Amazon Detective (from https://aws.amazon.com/sdkforjava)
+- AWS Java SDK for Amazon DevOps Guru (from https://aws.amazon.com/sdkforjava)
 - AWS Java SDK for Amazon DocumentDB with MongoDB compatibility (from https://aws.amazon.com/sdkforjava)
 - AWS Java SDK for Amazon DynamoDB (from https://aws.amazon.com/sdkforjava)
 - AWS Java SDK for Amazon DynamoDB Accelerator (DAX) (from https://aws.amazon.com/sdkforjava)
 - AWS Java SDK for Amazon EC2 (from https://aws.amazon.com/sdkforjava)
 - AWS Java SDK for Amazon EMR (from https://aws.amazon.com/sdkforjava)
+- AWS Java SDK for Amazon EMR Containers (from https://aws.amazon.com/sdkforjava)
 - AWS Java SDK for Amazon ElastiCache (from https://aws.amazon.com/sdkforjava)
+- AWS Java SDK for Amazon Elastic  Inference (from https://aws.amazon.com/sdkforjava)
+- AWS Java SDK for Amazon Elastic Block Store (from https://aws.amazon.com/sdkforjava)
+- AWS Java SDK for Amazon Elastic Container Registry Public (from https://aws.amazon.com/sdkforjava)
 - AWS Java SDK for Amazon Elastic Container Service for Kubernetes (from https://aws.amazon.com/sdkforjava)
 - AWS Java SDK for Amazon Elastic File System (from https://aws.amazon.com/sdkforjava)
 - AWS Java SDK for Amazon Elastic Transcoder (from https://aws.amazon.com/sdkforjava)
@@ -173,16 +218,27 @@ The following software have components provided under the terms of this license:
 - AWS Java SDK for Amazon FSx (from https://aws.amazon.com/sdkforjava)
 - AWS Java SDK for Amazon Forecast (from https://aws.amazon.com/sdkforjava)
 - AWS Java SDK for Amazon Forecast Query (from https://aws.amazon.com/sdkforjava)
+- AWS Java SDK for Amazon Fraud Detector (from https://aws.amazon.com/sdkforjava)
 - AWS Java SDK for Amazon Glacier (from https://aws.amazon.com/sdkforjava)
 - AWS Java SDK for Amazon GuardDuty (from https://aws.amazon.com/sdkforjava)
-- AWS Java SDK for Amazon Inspector Service (from https://aws.amazon.com/sdkforjava)
+- AWS Java SDK for Amazon HealthLake (from https://aws.amazon.com/sdkforjava)
+- AWS Java SDK for Amazon Honeycode (from https://aws.amazon.com/sdkforjava)
+- AWS Java SDK for Amazon Interactive Video (from https://aws.amazon.com/sdkforjava)
 - AWS Java SDK for Amazon Kinesis (from https://aws.amazon.com/sdkforjava)
 - AWS Java SDK for Amazon Kinesis Analytics (from https://aws.amazon.com/sdkforjava)
+- AWS Java SDK for Amazon Kinesis Video Signaling Channels (from https://aws.amazon.com/sdkforjava)
 - AWS Java SDK for Amazon Kinesis Video Streams (from https://aws.amazon.com/sdkforjava)
 - AWS Java SDK for Amazon Lex Model Building (from https://aws.amazon.com/sdkforjava)
+- AWS Java SDK for Amazon Lex Model Building V2 (from https://aws.amazon.com/sdkforjava)
+- AWS Java SDK for Amazon Lex Runtime V2 (from https://aws.amazon.com/sdkforjava)
 - AWS Java SDK for Amazon Lightsail (from https://aws.amazon.com/sdkforjava)
+- AWS Java SDK for Amazon Location (from https://aws.amazon.com/sdkforjava)
+- AWS Java SDK for Amazon Lookout for Equipment (from https://aws.amazon.com/sdkforjava)
+- AWS Java SDK for Amazon Lookout for Metrics (from https://aws.amazon.com/sdkforjava)
+- AWS Java SDK for Amazon Lookout for Vision (from https://aws.amazon.com/sdkforjava)
 - AWS Java SDK for Amazon Machine Learning (from https://aws.amazon.com/sdkforjava)
 - AWS Java SDK for Amazon Macie (from https://aws.amazon.com/sdkforjava)
+- AWS Java SDK for Amazon Macie 2 (from https://aws.amazon.com/sdkforjava)
 - AWS Java SDK for Amazon Managed Blockchain (from https://aws.amazon.com/sdkforjava)
 - AWS Java SDK for Amazon Mechanical Turk Requester (from https://aws.amazon.com/sdkforjava)
 - AWS Java SDK for Amazon Neptune (from https://aws.amazon.com/sdkforjava)
@@ -193,6 +249,7 @@ The following software have components provided under the terms of this license:
 - AWS Java SDK for Amazon Pinpoint Email (from https://aws.amazon.com/sdkforjava)
 - AWS Java SDK for Amazon Pinpoint SMS and Voice (from https://aws.amazon.com/sdkforjava)
 - AWS Java SDK for Amazon Polly (from https://aws.amazon.com/sdkforjava)
+- AWS Java SDK for Amazon Prometheus (from https://aws.amazon.com/sdkforjava)
 - AWS Java SDK for Amazon QLDB (from https://aws.amazon.com/sdkforjava)
 - AWS Java SDK for Amazon QLDB Session (from https://aws.amazon.com/sdkforjava)
 - AWS Java SDK for Amazon QuickSight (from https://aws.amazon.com/sdkforjava)
@@ -203,18 +260,23 @@ The following software have components provided under the terms of this license:
 - AWS Java SDK for Amazon Route 53 Resolver (from https://aws.amazon.com/sdkforjava)
 - AWS Java SDK for Amazon Route53 (from https://aws.amazon.com/sdkforjava)
 - AWS Java SDK for Amazon S3 (from https://aws.amazon.com/sdkforjava)
+- AWS Java SDK for Amazon S3 on Outposts (from https://aws.amazon.com/sdkforjava)
 - AWS Java SDK for Amazon SES (from https://aws.amazon.com/sdkforjava)
 - AWS Java SDK for Amazon SNS (from https://aws.amazon.com/sdkforjava)
 - AWS Java SDK for Amazon SQS (from https://aws.amazon.com/sdkforjava)
 - AWS Java SDK for Amazon SWF (from https://aws.amazon.com/sdkforjava)
 - AWS Java SDK for Amazon SageMaker (from https://aws.amazon.com/sdkforjava)
+- AWS Java SDK for Amazon SageMaker Feature Store Runtime (from https://aws.amazon.com/sdkforjava)
 - AWS Java SDK for Amazon SageMaker Runtime (from https://aws.amazon.com/sdkforjava)
+- AWS Java SDK for Amazon Sagemaker Edge Manager (from https://aws.amazon.com/sdkforjava)
+- AWS Java SDK for Amazon Simple Email (from https://aws.amazon.com/sdkforjava)
 - AWS Java SDK for Amazon SimpleDB (from https://aws.amazon.com/sdkforjava)
 - AWS Java SDK for Amazon Snowball (from https://aws.amazon.com/sdkforjava)
 - AWS Java SDK for Amazon Textract (from https://aws.amazon.com/sdkforjava)
+- AWS Java SDK for Amazon Timestream Query (from https://aws.amazon.com/sdkforjava)
+- AWS Java SDK for Amazon Timestream Write (from https://aws.amazon.com/sdkforjava)
 - AWS Java SDK for Amazon Transcribe (from https://aws.amazon.com/sdkforjava)
 - AWS Java SDK for Amazon Translate (from https://aws.amazon.com/sdkforjava)
-- AWS Java SDK for Amazon WorkDocs (from https://aws.amazon.com/sdkforjava)
 - AWS Java SDK for Amazon WorkLink (from https://aws.amazon.com/sdkforjava)
 - AWS Java SDK for Amazon WorkMail (from https://aws.amazon.com/sdkforjava)
 - AWS Java SDK for Amazon WorkMail Message Flow (from https://aws.amazon.com/sdkforjava)
@@ -222,18 +284,28 @@ The following software have components provided under the terms of this license:
 - AWS Java SDK for AmazonApiGatewayManagementApi (from https://aws.amazon.com/sdkforjava)
 - AWS Java SDK for AmazonApiGatewayV2 (from https://aws.amazon.com/sdkforjava)
 - AWS Java SDK for AmazonMQ (from https://aws.amazon.com/sdkforjava)
+- AWS Java SDK for AmazonMWAA (from https://aws.amazon.com/sdkforjava)
+- AWS Java SDK for AmazonNimbleStudio (from https://aws.amazon.com/sdkforjava)
+- AWS Java SDK for AmplifyBackend (from https://aws.amazon.com/sdkforjava)
+- AWS Java SDK for Application Migration (from https://aws.amazon.com/sdkforjava)
 - AWS Java SDK for Auto Scaling (from https://aws.amazon.com/sdkforjava)
+- AWS Java SDK for Braket (from https://aws.amazon.com/sdkforjava)
+- AWS Java SDK for CodeArtifact (from https://aws.amazon.com/sdkforjava)
+- AWS Java SDK for EC2 Image Builder (from https://aws.amazon.com/sdkforjava)
 - AWS Java SDK for Elastic Load Balancing (from https://aws.amazon.com/sdkforjava)
 - AWS Java SDK for Elastic Load Balancing (from https://aws.amazon.com/sdkforjava)
+- AWS Java SDK for FinSpace Public API (from https://aws.amazon.com/sdkforjava)
+- AWS Java SDK for FinSpace User Environment Management (from https://aws.amazon.com/sdkforjava)
 - AWS Java SDK for Firewall Management (from https://aws.amazon.com/sdkforjava)
 - AWS Java SDK for Managed Streaming for Kafka (from https://aws.amazon.com/sdkforjava)
+- AWS Java SDK for Redshift Data API (from https://aws.amazon.com/sdkforjava)
+- AWS Java SDK for Schemas (from https://aws.amazon.com/sdkforjava)
 - AWS Java SDK for Service Quotas (from https://aws.amazon.com/sdkforjava)
+- AWS Java SDK for Synthetics (from https://aws.amazon.com/sdkforjava)
 - AWS Java SDK for the AWS CloudHSM (from https://aws.amazon.com/sdkforjava)
 - AWS Java SDK for the AWS Simple Systems Management (SSM) Service (from https://aws.amazon.com/sdkforjava)
 - AWS Java SDK for the Amazon EC2 Container Registry (from https://aws.amazon.com/sdkforjava)
 - AWS Java SDK for the Amazon EC2 Container Service (from https://aws.amazon.com/sdkforjava)
-- AWS SDK For Java (from https://aws.amazon.com/sdkforjava)
-- AWS SDK for Java - BOM (from https://aws.amazon.com/sdkforjava)
 - AWS SDK for Java - Core (from https://aws.amazon.com/sdkforjava)
 - AWS SDK for Java - Models (from https://aws.amazon.com/sdkforjava)
 - Adapter: RxJava (from )
@@ -407,6 +479,7 @@ The following software have components provided under the terms of this license:
 - Microsoft Azure Java Core Library (from https://github.com/Azure/azure-sdk-for-java)
 - Microsoft Azure Netty HTTP Client Library (from https://github.com/Azure/azure-sdk-for-java)
 - Microsoft Azure SDK for SQL API of Azure Cosmos DB Service (from https://github.com/Azure/azure-sdk-for-java)
+- Mockito (from http://www.mockito.org)
 - Mockito (from http://mockito.org)
 - Mockito (from http://mockito.org)
 - Mojo's Maven plugin for Cobertura (from http://mojo.codehaus.org/cobertura-maven-plugin/)
diff --git a/provider/legal-aws/pom.xml b/provider/legal-aws/pom.xml
index e58d28b6d580639f6dd44ca641efcce496aa7fc9..35f0029dc9114d5cc7d9e29542df46fc4981f484 100644
--- a/provider/legal-aws/pom.xml
+++ b/provider/legal-aws/pom.xml
@@ -27,7 +27,7 @@
     <packaging>jar</packaging>
 
     <properties>
-        <aws.version>1.11.651</aws.version>
+        <aws.version>1.11.1018</aws.version>
         <deployment.environment>dev</deployment.environment>
         <version.number>0.9.0-SNAPSHOT</version.number>
     </properties>
@@ -37,7 +37,7 @@
         <dependency>
             <groupId>org.opengroup.osdu.core.aws</groupId>
             <artifactId>os-core-lib-aws</artifactId>
-            <version>0.3.17</version>
+            <version>0.9.1-SNAPSHOT</version>
         </dependency>
         <dependency>
             <groupId>org.opengroup.osdu</groupId>
@@ -173,7 +173,7 @@
                 </property>
             </activation>
             <properties>
-                <aws.version>1.11.651</aws.version>
+                <aws.version>1.11.1018</aws.version>
             </properties>
         </profile>
         <profile>
@@ -185,7 +185,7 @@
                 </property>
             </activation>
             <properties>
-                <aws.version>1.11.632</aws.version>
+                <aws.version>1.11.1018</aws.version>
             </properties>
         </profile>
         <profile>
@@ -197,7 +197,7 @@
                 </property>
             </activation>
             <properties>
-                <aws.version>1.11.632</aws.version>
+                <aws.version>1.11.1018</aws.version>
             </properties>
         </profile>
     </profiles>
diff --git a/provider/legal-aws/src/main/java/org/opengroup/osdu/legal/aws/countries/StorageReaderFactoryImpl.java b/provider/legal-aws/src/main/java/org/opengroup/osdu/legal/aws/countries/StorageReaderFactoryImpl.java
index 9cb09173cf3866b2f345178ca5ce976a348d629c..d8c8ac5adec515ba0e19b34a0a9ebe2817aebeac 100644
--- a/provider/legal-aws/src/main/java/org/opengroup/osdu/legal/aws/countries/StorageReaderFactoryImpl.java
+++ b/provider/legal-aws/src/main/java/org/opengroup/osdu/legal/aws/countries/StorageReaderFactoryImpl.java
@@ -16,36 +16,23 @@ package org.opengroup.osdu.legal.aws.countries;
 
 import org.opengroup.osdu.core.aws.ssm.ParameterStorePropertySource;
 import org.opengroup.osdu.core.aws.ssm.SSMConfig;
+import org.opengroup.osdu.core.common.model.http.DpsHeaders;
 import org.opengroup.osdu.core.common.model.tenant.TenantInfo;
 import org.opengroup.osdu.legal.provider.interfaces.IStorageReader;
 import org.opengroup.osdu.legal.provider.interfaces.IStorageReaderFactory;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Component;
 
+import javax.inject.Inject;
+
 @Component
 public class StorageReaderFactoryImpl implements IStorageReaderFactory {
 
-    private String legalConfigBucketName;
-
-    @Value("${aws.s3.legal.config.file-name}")
-    private String legalConfigFileName;
-
-    @Value("${aws.s3.endpoint}")
-    private String awsS3Endpoint;
-
-    @Value("${aws.s3.region}")
-    private String awsS3Region;
-
-    @Value("${aws.legal.s3.bucket.name}")
-    String parameter;
-
-    private ParameterStorePropertySource ssm;
+    @Inject
+    StorageReaderImpl storageReaderImpl;
 
     @Override
     public IStorageReader getReader(TenantInfo tenant, String projectRegion) {
-        SSMConfig ssmConfig = new SSMConfig();
-        ssm = ssmConfig.amazonSSM();
-        legalConfigBucketName = ssm.getProperty(parameter).toString();
-        return new StorageReaderImpl(tenant, legalConfigBucketName, legalConfigFileName, awsS3Endpoint, awsS3Region);
+        return storageReaderImpl;
     }
 }
diff --git a/provider/legal-aws/src/main/java/org/opengroup/osdu/legal/aws/countries/StorageReaderImpl.java b/provider/legal-aws/src/main/java/org/opengroup/osdu/legal/aws/countries/StorageReaderImpl.java
index 75a88a7b6b2993bcfd583142522359368c3f1488..12acb716b7a822187d1b49350a95c274a90cd498 100644
--- a/provider/legal-aws/src/main/java/org/opengroup/osdu/legal/aws/countries/StorageReaderImpl.java
+++ b/provider/legal-aws/src/main/java/org/opengroup/osdu/legal/aws/countries/StorageReaderImpl.java
@@ -14,22 +14,72 @@
 
 package org.opengroup.osdu.legal.aws.countries;
 
-import org.opengroup.osdu.core.common.model.tenant.TenantInfo;
-import org.opengroup.osdu.legal.aws.tags.dataaccess.S3RecordClient;
+import com.amazonaws.AmazonServiceException;
+import com.amazonaws.SdkClientException;
+import com.amazonaws.services.s3.AmazonS3;
+import com.amazonaws.services.s3.model.AmazonS3Exception;
+import org.opengroup.osdu.core.aws.s3.IS3ClientFactory;
+import org.opengroup.osdu.core.aws.s3.S3ClientWithBucket;
+import org.opengroup.osdu.core.common.model.http.AppException;
+import org.opengroup.osdu.core.common.model.http.DpsHeaders;
 import org.opengroup.osdu.legal.provider.interfaces.IStorageReader;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.stereotype.Component;
 
+import javax.inject.Inject;
+
+@Component
 public class StorageReaderImpl implements IStorageReader {
-    private final TenantInfo tenantInfo;
-    private S3RecordClient client;
 
-    public StorageReaderImpl(TenantInfo tenantInfo, String legalConfigBucketName, String legalConfigFileName,
-                             String awsS3Endpoint, String awsS3Region) {
-        this.tenantInfo = tenantInfo;
-        client = new S3RecordClient(legalConfigBucketName, legalConfigFileName, awsS3Endpoint, awsS3Region);
-    }
+    @Inject
+    private DpsHeaders dpsHeaders;
+
+    @Inject
+    private IS3ClientFactory s3ClientFactory;
+
+    @Value("${aws.s3.configbucket.ssm.relativePath}")
+    private String s3ConfigBucketParameterRelativePath;
+
+    @Value("${aws.s3.legal.config.file-name}")
+    private String legalConfigFileName;
 
     @Override
     public byte[] readAllBytes() {
-        return (client.getConfigFile().getBytes()); //should return a json format of an array of Country class
+        return getConfigFile().getBytes(); //should return a json format of an array of Country class
+    }
+
+    public String getConfigFile(){
+        S3ClientWithBucket s3ClientWithBucket = s3ClientFactory.getS3ClientForPartition(
+                dpsHeaders.getPartitionIdWithFallbackToAccountId(), s3ConfigBucketParameterRelativePath);
+        AmazonS3 s3 = s3ClientWithBucket.getS3Client();
+        String legalConfigBucketName = s3ClientWithBucket.getBucketName();
+
+        String contents = "";
+        try {
+            contents = s3.getObjectAsString(legalConfigBucketName, String.format("%s/%s", dpsHeaders.getPartitionId(), legalConfigFileName));
+        } catch (AmazonS3Exception e){
+            if(e.getStatusCode() == 404){
+                contents = createDefaultConfigFile(s3, legalConfigBucketName);
+            } else {
+                throw new AppException(500, "Amazon service exception getting config file", e.getMessage());
+            }
+        }
+        catch (AmazonServiceException e) {
+            throw new AppException(500, "Amazon service exception getting config file", e.getMessage());
+        } catch (SdkClientException e) {
+            throw new AppException(500, "Amazon Sdk client exception getting config file", e.getMessage());
+        }
+        return contents;
+    }
+
+    private String createDefaultConfigFile(AmazonS3 s3, String legalConfigBucketName){
+        String contents = "[]";
+        try {
+            s3.putObject(legalConfigBucketName, String.format("%s/%s",
+                    dpsHeaders.getPartitionId(), legalConfigFileName), contents);
+        } catch (Exception e){
+            throw new AppException(500, "Exception creating default config file", e.getMessage());
+        }
+        return contents;
     }
 }
diff --git a/provider/legal-aws/src/main/java/org/opengroup/osdu/legal/aws/tags/dataaccess/LegalDoc.java b/provider/legal-aws/src/main/java/org/opengroup/osdu/legal/aws/tags/dataaccess/LegalDoc.java
index 5b5bbb9ecce6599e40f29f679b564c88fc55929c..2e875542bcba5f75e4f6b9add3520c0ae7de5a48 100644
--- a/provider/legal-aws/src/main/java/org/opengroup/osdu/legal/aws/tags/dataaccess/LegalDoc.java
+++ b/provider/legal-aws/src/main/java/org/opengroup/osdu/legal/aws/tags/dataaccess/LegalDoc.java
@@ -24,6 +24,9 @@ public class LegalDoc {
     @DynamoDBHashKey(attributeName = "Id")
     private String id;
 
+    @DynamoDBRangeKey(attributeName = "dataPartitionId")
+    private String dataPartitionId;
+
     @DynamoDBAttribute(attributeName = "Name")
     private String name;
 
@@ -46,6 +49,14 @@ public class LegalDoc {
         this.id = id;
     }
 
+    public String getDataPartitionId(){
+        return dataPartitionId;
+    }
+
+    public void setDataPartitionId(String tenant){
+        this.dataPartitionId = tenant;
+    }
+
     public void setName(String name) {
         this.name = name;
     }
diff --git a/provider/legal-aws/src/main/java/org/opengroup/osdu/legal/aws/tags/dataaccess/LegalTagRepositoryImpl.java b/provider/legal-aws/src/main/java/org/opengroup/osdu/legal/aws/tags/dataaccess/LegalTagRepositoryImpl.java
index bc5d06522755a1045e2343cc91e7d76ce9f3e112..8bebf9171b396f42a6e3f5fe3d892d9ead0d3ed3 100644
--- a/provider/legal-aws/src/main/java/org/opengroup/osdu/legal/aws/tags/dataaccess/LegalTagRepositoryImpl.java
+++ b/provider/legal-aws/src/main/java/org/opengroup/osdu/legal/aws/tags/dataaccess/LegalTagRepositoryImpl.java
@@ -14,9 +14,14 @@
 
 package org.opengroup.osdu.legal.aws.tags.dataaccess;
 
+import com.amazonaws.services.dynamodbv2.model.AttributeValue;
+import org.apache.commons.lang3.StringUtils;
 import org.apache.http.HttpStatus;
 import org.opengroup.osdu.core.aws.dynamodb.DynamoDBQueryHelper;
+import org.opengroup.osdu.core.aws.dynamodb.DynamoDBQueryHelperFactory;
+import org.opengroup.osdu.core.aws.dynamodb.DynamoDBQueryHelperV2;
 import org.opengroup.osdu.core.aws.dynamodb.QueryPageResult;
+import org.opengroup.osdu.core.common.model.http.DpsHeaders;
 import org.opengroup.osdu.core.common.model.legal.ListLegalTagArgs;
 import org.opengroup.osdu.core.common.model.legal.LegalTag;
 
@@ -26,30 +31,31 @@ import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Repository;
 
 import javax.annotation.PostConstruct;
+import javax.inject.Inject;
 import java.io.UnsupportedEncodingException;
 import java.util.*;
 
 @Repository // why use repository over component over service
 public class LegalTagRepositoryImpl implements ILegalTagRepository {
 
-    @Value("${aws.dynamodb.table.prefix}")
-    String tablePrefix;
+    @Inject
+    private DpsHeaders headers;
 
-    @Value("${aws.dynamodb.region}")
-    String dynamoDbRegion;
+    @Inject
+    private DynamoDBQueryHelperFactory dynamoDBQueryHelperFactory;
 
-    @Value("${aws.dynamodb.endpoint}")
-    String dynamoDbEndpoint;
+    @Value("${aws.dynamodb.legalTable.ssm.relativePath}")
+    String legalRepositoryTableParameterRelativePath;
 
-    private DynamoDBQueryHelper queryHelper;
-
-    @PostConstruct
-    public void init(){
-        queryHelper = new DynamoDBQueryHelper(dynamoDbEndpoint, dynamoDbRegion, tablePrefix);
+    private DynamoDBQueryHelperV2 getLegalRepositoryQueryHelper() {
+        return dynamoDBQueryHelperFactory.getQueryHelperForPartition(headers, legalRepositoryTableParameterRelativePath);
     }
 
+
     @Override
     public Long create(LegalTag legalTag) {
+        DynamoDBQueryHelperV2 queryHelper = getLegalRepositoryQueryHelper();
+
         LegalDoc legalDoc = CreateLegalDocFromTag(legalTag);
         if (queryHelper.keyExistsInTable(LegalDoc.class, legalDoc)){
             throw new AppException(409, "Legal tag conflict", String.format(
@@ -61,10 +67,12 @@ public class LegalTagRepositoryImpl implements ILegalTagRepository {
 
     @Override
     public Collection<LegalTag> get(long[] ids) {
+        DynamoDBQueryHelperV2 queryHelper = getLegalRepositoryQueryHelper();
+
         List<LegalTag> tags = new ArrayList<>();
 
         for(long id: ids) {
-            LegalDoc ld = queryHelper.loadByPrimaryKey(LegalDoc.class, String.valueOf(id)); //dynamoDBLegal.findById(String.valueOf(id));
+            LegalDoc ld = queryHelper.loadByPrimaryKey(LegalDoc.class, String.valueOf(id), headers.getPartitionId()); //dynamoDBLegal.findById(String.valueOf(id));
             if(ld != null) {
                 tags.add(CreateLegalTagFromDoc(ld));
             }
@@ -75,9 +83,11 @@ public class LegalTagRepositoryImpl implements ILegalTagRepository {
 
     @Override
     public Boolean delete(LegalTag legalTag) {
+        DynamoDBQueryHelperV2 queryHelper = getLegalRepositoryQueryHelper();
+
         Boolean result = true;
         try {
-            queryHelper.deleteByPrimaryKey(LegalDoc.class, String.valueOf(legalTag.getId()));
+            queryHelper.deleteByPrimaryKey(LegalDoc.class, String.valueOf(legalTag.getId()), headers.getPartitionId());
         } catch (Exception e){ // should be dynamodb specific exception
             result = false;
             // might need to throw app exception
@@ -94,15 +104,24 @@ public class LegalTagRepositoryImpl implements ILegalTagRepository {
 
     @Override
     public Collection<LegalTag> list(ListLegalTagArgs args) {
+        DynamoDBQueryHelperV2 queryHelper = getLegalRepositoryQueryHelper();
+
+        String filterExpression = "dataPartitionId = :partitionId";
+
+        AttributeValue dataPartitionAttributeValue = new AttributeValue(headers.getPartitionId());
+
+        Map<String, AttributeValue> eav = new HashMap<>();
+        eav.put(":partitionId", dataPartitionAttributeValue);
+
         int limit = args.getLimit();
 
         List<LegalDoc> docs = null;
         List<LegalTag> tags = new ArrayList<>();
         try {
             if(limit <= 0){
-                docs = queryHelper.scanTable(LegalDoc.class);
+                docs = queryHelper.scanTable(LegalDoc.class, filterExpression, eav);
             } else {
-                QueryPageResult<LegalDoc> scanPageResults = queryHelper.scanPage(LegalDoc.class, limit, args.getCursor());
+                QueryPageResult<LegalDoc> scanPageResults = queryHelper.scanPage(LegalDoc.class, limit, args.getCursor(),filterExpression, eav);
                 if (scanPageResults != null) docs = scanPageResults.results;
             }
         } catch (UnsupportedEncodingException e) {
@@ -120,6 +139,8 @@ public class LegalTagRepositoryImpl implements ILegalTagRepository {
     }
 
     private Long save(LegalDoc legalDoc){
+        DynamoDBQueryHelperV2 queryHelper = getLegalRepositoryQueryHelper();
+
         Long id = -1L;
         if(legalDoc != null){
             queryHelper.save(legalDoc);
@@ -141,6 +162,7 @@ public class LegalTagRepositoryImpl implements ILegalTagRepository {
     private LegalDoc CreateLegalDocFromTag(LegalTag legalTag){
         LegalDoc legalDoc = new LegalDoc();
         legalDoc.setId(String.valueOf(legalTag.getId()));
+        legalDoc.setDataPartitionId(headers.getPartitionId());
         legalDoc.setDescription(legalTag.getDescription());
         legalDoc.setName(legalTag.getName());
         legalDoc.setProperties(legalTag.getProperties());
diff --git a/provider/legal-aws/src/main/java/org/opengroup/osdu/legal/aws/tags/dataaccess/S3RecordClient.java b/provider/legal-aws/src/main/java/org/opengroup/osdu/legal/aws/tags/dataaccess/S3RecordClient.java
deleted file mode 100644
index d295c1b21ec833c07d84feafd340e7465943218e..0000000000000000000000000000000000000000
--- a/provider/legal-aws/src/main/java/org/opengroup/osdu/legal/aws/tags/dataaccess/S3RecordClient.java
+++ /dev/null
@@ -1,49 +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.legal.aws.tags.dataaccess;
-
-import com.amazonaws.AmazonServiceException;
-import com.amazonaws.SdkClientException;
-import com.amazonaws.services.s3.AmazonS3;
-import org.opengroup.osdu.core.aws.s3.S3Config;
-import org.opengroup.osdu.core.common.model.http.AppException;
-
-public class S3RecordClient {
-
-    // Storing all records in one bucket does not impact performance, no need to spread keys anymore
-    private String legalConfigBucketName;
-    private String legalConfigFileName;
-
-    private AmazonS3 s3;
-
-    public S3RecordClient(String legalConfigBucketName, String legalConfigFileName, String awsS3Endpoint, String awsS3Region){
-        this.legalConfigBucketName = legalConfigBucketName;
-        this.legalConfigFileName = legalConfigFileName;
-        S3Config s3Config = new S3Config(awsS3Endpoint, awsS3Region);
-        s3 = s3Config.amazonS3();
-    }
-
-    public String getConfigFile(){
-        String contents = "";
-        try {
-            contents = s3.getObjectAsString(legalConfigBucketName, legalConfigFileName);
-        } catch (AmazonServiceException e) {
-            throw new AppException(500, "Amazon service exception getting config file", e.getMessage());
-        } catch (SdkClientException e) {
-            throw new AppException(500, "Amazon Sdk client exception getting config file", e.getMessage());
-        }
-        return contents;
-    }
-}
diff --git a/provider/legal-aws/src/main/resources/application.properties b/provider/legal-aws/src/main/resources/application.properties
index c3c28a1323b784344345befb9ebb45c97286c807..3af3c71e2c4052b61f5e036f0675c26992d29f64 100644
--- a/provider/legal-aws/src/main/resources/application.properties
+++ b/provider/legal-aws/src/main/resources/application.properties
@@ -7,21 +7,18 @@ server.port=${APPLICATION_PORT}
 ## AWS Lambda configuration
 aws.lambda.get-groups-function-name=${ENVIRONMENT}-os-entitlements-GroupsFunction
 
+aws.environment=${ENVIRONMENT}
+aws.parameter.prefix=/osdu/${ENVIRONMENT}
+aws.resourcePrefix=${ENVIRONMENT}
+aws.region=${AWS_REGION}
+
 REGION=${AWS_REGION}
-AUTHORIZE_API=${ENTITLEMENTS_BASE_URL}/api/entitlements/v1
+AUTHORIZE_API=${ENTITLEMENTS_BASE_URL}/api/entitlements/v2
+PARTITION_API=${ENTITLEMENTS_BASE_URL}/api/partition/v1
 LEGAL_HOSTNAME=notused
 CRON_JOB_IP=10.0.0.1
 ACCEPT_HTTP=true
-
-## AWS DynamoDB configuration
-aws.dynamodb.key=id
-aws.dynamodb.table.prefix=${ENVIRONMENT}-
-aws.dynamodb.region=${AWS_REGION}
-aws.dynamodb.endpoint=dynamodb.${AWS_REGION}.amazonaws.com
-
-## AWS S3 configuration
-aws.s3.region=${AWS_REGION}
-aws.s3.endpoint=s3.${AWS_REGION}.amazonaws.com
+        
 aws.s3.legal.config.file-name=Legal_COO.json
 
 ## AWS SNS configuration
@@ -30,7 +27,10 @@ aws.sns.region=${AWS_REGION}
 aws.ssm=${SSM_ENABLED}
 aws.ssm.prefix=/osdu/${ENVIRONMENT}
 aws.legal.sns.topic.arn=${aws.ssm.prefix}/legal/legal-sns-topic-arn
-aws.legal.s3.bucket.name=${aws.ssm.prefix}/legal/legal-s3-bucket-name
+
+aws.s3.configbucket.ssm.relativePath=${CONFIG_BUCKET_SSM_RELATIVE_PATH:legal/s3DataBucket}
+aws.s3.configfilename.ssm.relativePath=${CONFIG_FILE_SSM_RELATIVE_PATH:legal/s3ConfigFileName}
+aws.dynamodb.legalTable.ssm.relativePath=${LEGAL_REPOSITORY_SSM_RELATIVE_PATH:legal/legalTable}
 
 server.ssl.enabled=${SSL_ENABLED:true}
 server.ssl.key-store-type=PKCS12
diff --git a/provider/legal-aws/src/main/resources/skipper.keystore b/provider/legal-aws/src/main/resources/skipper.keystore
deleted file mode 100644
index 3524c7c68dcd9b53cb13971f955654774ea1dd35..0000000000000000000000000000000000000000
Binary files a/provider/legal-aws/src/main/resources/skipper.keystore and /dev/null differ
diff --git a/provider/legal-aws/src/test/java/org/opengroup/osdu/legal/aws/api/LegalTagRepositoryImplTest.java b/provider/legal-aws/src/test/java/org/opengroup/osdu/legal/aws/api/LegalTagRepositoryImplTest.java
index d3c1832d1ca450a3c6eb73fa1eb3b4f3a0efb65f..03abdf8a4fc174d53cb97277702cdfe958ca5694 100644
--- a/provider/legal-aws/src/test/java/org/opengroup/osdu/legal/aws/api/LegalTagRepositoryImplTest.java
+++ b/provider/legal-aws/src/test/java/org/opengroup/osdu/legal/aws/api/LegalTagRepositoryImplTest.java
@@ -21,13 +21,17 @@ import org.junit.runner.RunWith;
 import org.mockito.*;
 import org.mockito.runners.MockitoJUnitRunner;
 import org.opengroup.osdu.core.aws.dynamodb.DynamoDBQueryHelper;
+import org.opengroup.osdu.core.aws.dynamodb.DynamoDBQueryHelperFactory;
+import org.opengroup.osdu.core.aws.dynamodb.DynamoDBQueryHelperV2;
 import org.opengroup.osdu.core.aws.dynamodb.QueryPageResult;
+import org.opengroup.osdu.core.common.model.http.DpsHeaders;
 import org.opengroup.osdu.legal.aws.tags.dataaccess.LegalDoc;
 import org.opengroup.osdu.legal.aws.tags.dataaccess.LegalTagRepositoryImpl;
 import org.opengroup.osdu.core.common.model.legal.ListLegalTagArgs;
 import org.opengroup.osdu.core.common.model.legal.LegalTag;
 import org.springframework.boot.test.context.SpringBootTest;
 
+import javax.inject.Inject;
 import java.io.UnsupportedEncodingException;
 import java.util.*;
 
@@ -41,11 +45,19 @@ public class LegalTagRepositoryImplTest {
     private LegalTagRepositoryImpl repo = new LegalTagRepositoryImpl();
 
     @Mock
-    DynamoDBQueryHelper queryHelper;
+    private DynamoDBQueryHelperV2 queryHelper;
+
+    @Mock
+    private DpsHeaders headers;
+
+    @Mock
+    private DynamoDBQueryHelperFactory dynamoDBQueryHelperFactory;
 
     @Before
     public void setUp() {
         initMocks(this);
+        Mockito.when(dynamoDBQueryHelperFactory.getQueryHelperForPartition(Mockito.any(DpsHeaders.class), Mockito.any()))
+                .thenReturn(queryHelper);
     }
 
     @Test
@@ -72,15 +84,13 @@ public class LegalTagRepositoryImplTest {
             1L, 2L, 3L
         };
 
-        Mockito.when(queryHelper.loadByPrimaryKey(Mockito.any(), Mockito.anyString())).thenReturn(null);
-
         // act
         repo.get(ids);
 
         // assert
-        Mockito.verify(queryHelper, Mockito.times(1)).loadByPrimaryKey(Mockito.any(), Mockito.eq("1"));
-        Mockito.verify(queryHelper, Mockito.times(1)).loadByPrimaryKey(Mockito.any(), Mockito.eq("2"));
-        Mockito.verify(queryHelper, Mockito.times(1)).loadByPrimaryKey(Mockito.any(), Mockito.eq("3"));
+        Mockito.verify(queryHelper, Mockito.times(1)).loadByPrimaryKey(Mockito.any(), Mockito.eq("1"), Mockito.any());
+        Mockito.verify(queryHelper, Mockito.times(1)).loadByPrimaryKey(Mockito.any(), Mockito.eq("2"), Mockito.any());
+        Mockito.verify(queryHelper, Mockito.times(1)).loadByPrimaryKey(Mockito.any(), Mockito.eq("3"), Mockito.any());
     }
 
     @Test
@@ -96,7 +106,7 @@ public class LegalTagRepositoryImplTest {
         repo.delete(tag);
 
         // assert
-        Mockito.verify(queryHelper, Mockito.times(1)).deleteByPrimaryKey(Mockito.any(), Mockito.eq("-100"));
+        Mockito.verify(queryHelper, Mockito.times(1)).deleteByPrimaryKey(Mockito.any(), Mockito.eq("-100"), Mockito.any());
     }
 
     @Test
@@ -133,7 +143,7 @@ public class LegalTagRepositoryImplTest {
         QueryPageResult<LegalDoc> page = new QueryPageResult<LegalDoc>(null, listLd);
 
         try {
-            Mockito.when(queryHelper.scanPage(Mockito.eq(LegalDoc.class), Mockito.eq(100),Mockito.any()))
+            Mockito.when(queryHelper.scanPage(Mockito.eq(LegalDoc.class), Mockito.eq(100),Mockito.any(), Mockito.any(), Mockito.any()))
                     .thenReturn(page);
         } catch (UnsupportedEncodingException e) {
             Assert.fail("Unexpected exception");
@@ -163,13 +173,6 @@ public class LegalTagRepositoryImplTest {
         listLd.add(ld);
         QueryPageResult<LegalDoc> page = new QueryPageResult<LegalDoc>(null, listLd);
 
-        try {
-            Mockito.when(queryHelper.scanPage(Mockito.eq(LegalDoc.class), Mockito.eq(100),Mockito.any()))
-                    .thenReturn(page);
-        } catch (UnsupportedEncodingException e) {
-            Assert.fail("Unexpected exception");
-        }
-
         // act
         ArrayList<LegalTag> tags = (ArrayList)repo.list(args);
 
@@ -185,13 +188,6 @@ public class LegalTagRepositoryImplTest {
         args.setCursor("{{\"title\"={\"S\":\"Monster on the Campus\",}},{\"title\":{\"S\":\"+1\",}},}}}");
         args.setLimit(100);
 
-        try {
-            Mockito.when(queryHelper.scanPage(Mockito.eq(LegalDoc.class), Mockito.eq(100),Mockito.any()))
-                    .thenReturn(null);
-        } catch (UnsupportedEncodingException e) {
-            Assert.fail("Unexpected exception");
-        }
-
         // act
         ArrayList<LegalTag> tags = (ArrayList)repo.list(args);
 
diff --git a/testing/legal-test-aws/pom.xml b/testing/legal-test-aws/pom.xml
index 8f199b4de457db4d57edd690c0a9fabc045a1e8c..fa9fd399153677912b0b8b5fce5578937d31909e 100644
--- a/testing/legal-test-aws/pom.xml
+++ b/testing/legal-test-aws/pom.xml
@@ -45,25 +45,25 @@
         <dependency>
             <groupId>org.opengroup.osdu.core.aws</groupId>
             <artifactId>os-core-lib-aws</artifactId>
-            <version>0.3.16</version>
+            <version>0.9.1-SNAPSHOT</version>
         </dependency>
 
         <!-- AWS managed packages -->
         <dependency>
             <groupId>com.amazonaws</groupId>
             <artifactId>aws-java-sdk</artifactId>
-            <version>1.11.651</version>
+            <version>1.11.1018</version>
         </dependency>
         <dependency>
             <groupId>com.amazonaws</groupId>
             <artifactId>aws-java-sdk-bom</artifactId>
-            <version>1.11.651</version>
+            <version>1.11.1018</version>
             <type>pom</type>
         </dependency>
         <dependency>
             <groupId>com.amazonaws</groupId>
             <artifactId>aws-java-sdk-dynamodb</artifactId>
-            <version>1.11.651</version>
+            <version>1.11.1018</version>
         </dependency>
 
         <!-- third party Apache 2.0 license packages -->
diff --git a/testing/legal-test-aws/src/test/java/org/opengroup/osdu/legal/util/AwsLegalTagUtils.java b/testing/legal-test-aws/src/test/java/org/opengroup/osdu/legal/util/AwsLegalTagUtils.java
index 329990130bcc766195d136c860373afb077578b0..2ed3b8f6060fbbeed48c8c165a52294e25dd2e65 100644
--- a/testing/legal-test-aws/src/test/java/org/opengroup/osdu/legal/util/AwsLegalTagUtils.java
+++ b/testing/legal-test-aws/src/test/java/org/opengroup/osdu/legal/util/AwsLegalTagUtils.java
@@ -22,6 +22,7 @@ import java.util.List;
 import com.amazonaws.services.s3.AmazonS3;
 import org.opengroup.osdu.core.aws.cognito.AWSCognitoClient;
 import org.opengroup.osdu.core.aws.dynamodb.DynamoDBQueryHelper;
+import org.opengroup.osdu.core.aws.dynamodb.DynamoDBQueryHelperV2;
 import org.opengroup.osdu.core.aws.s3.S3Config;
 import org.opengroup.osdu.core.common.model.legal.Properties;
 import org.springframework.beans.factory.annotation.Value;
@@ -45,12 +46,13 @@ public class AwsLegalTagUtils extends LegalTagUtils {
     public synchronized void uploadTenantTestingConfigFile() {
         String amazonS3Endpoint = System.getProperty("AWS_S3_ENDPOINT", System.getenv("AWS_S3_ENDPOINT"));
         String amazonS3Region = System.getProperty("AWS_S3_REGION", System.getenv("AWS_S3_REGION"));
+        String dataPartitionId = System.getProperty("MY_TENANT", System.getenv("MY_TENANT"));
 
         S3Config s3Config = new S3Config(amazonS3Endpoint, amazonS3Region);
         AmazonS3 s3Client = s3Config.amazonS3();
 
         try {
-            s3Client.putObject(BUCKET_NAME_AWS, FILE_NAME, readTestFile("TenantConfigTestingPurpose.json"));
+            s3Client.putObject(BUCKET_NAME_AWS, String.format("%s/%s", dataPartitionId, FILE_NAME), readTestFile("TenantConfigTestingPurpose.json"));
         } catch(IOException e){
             throw new RuntimeException(e.getMessage(), e);
         }
@@ -92,15 +94,17 @@ public class AwsLegalTagUtils extends LegalTagUtils {
         properties.setExportClassification("EAR99");
         doc.setProperties(properties);
 
-        String tablePrefix = String.format("%s%s", System.getenv(TABLE_PREFIX), "-");
+        doc.setDataPartitionId(getMyDataPartition());
+
         String dynamoDbRegion = System.getenv(DYNAMO_DB_REGION);
         String dynamoDbEndpoint = System.getenv(DYNAMO_DB_ENDPOINT);
 
-        DynamoDBQueryHelper queryHelper = new DynamoDBQueryHelper(dynamoDbEndpoint, dynamoDbRegion, tablePrefix);
+        String table = String.format("%s-shared-LegalRepository", System.getenv(TABLE_PREFIX));
+        DynamoDBQueryHelperV2 queryHelper = new DynamoDBQueryHelperV2(dynamoDbEndpoint, dynamoDbRegion, table);
 
         // delete legal tag if it exists
         if(queryHelper.keyExistsInTable(LegalDoc.class, doc)){
-            queryHelper.deleteByPrimaryKey(LegalDoc.class, doc.getId());
+            queryHelper.deleteByPrimaryKey(LegalDoc.class, doc.getId(), doc.getDataPartitionId());
         }
 
         queryHelper.save(doc);
diff --git a/testing/legal-test-aws/src/test/java/org/opengroup/osdu/legal/util/LegalDoc.java b/testing/legal-test-aws/src/test/java/org/opengroup/osdu/legal/util/LegalDoc.java
index f8e0c0b1d0a2b6dc8aa9cfca3472ab38fc571b7c..6b20d3dc93dfcefbb1e160e9963090a97be7108e 100644
--- a/testing/legal-test-aws/src/test/java/org/opengroup/osdu/legal/util/LegalDoc.java
+++ b/testing/legal-test-aws/src/test/java/org/opengroup/osdu/legal/util/LegalDoc.java
@@ -14,10 +14,7 @@
 
 package org.opengroup.osdu.legal.util;
 
-import com.amazonaws.services.dynamodbv2.datamodeling.DynamoDBAttribute;
-import com.amazonaws.services.dynamodbv2.datamodeling.DynamoDBHashKey;
-import com.amazonaws.services.dynamodbv2.datamodeling.DynamoDBTable;
-import com.amazonaws.services.dynamodbv2.datamodeling.DynamoDBTypeConverted;
+import com.amazonaws.services.dynamodbv2.datamodeling.*;
 import org.opengroup.osdu.core.common.model.legal.Properties;
 
 
@@ -27,6 +24,9 @@ public class LegalDoc {
     @DynamoDBHashKey(attributeName = "Id")
     private String id;
 
+    @DynamoDBRangeKey(attributeName = "dataPartitionId")
+    private String dataPartitionId;
+
     @DynamoDBAttribute(attributeName = "Name")
     private String name;
 
@@ -49,6 +49,14 @@ public class LegalDoc {
         this.id = id;
     }
 
+    public String getDataPartitionId(){
+        return dataPartitionId;
+    }
+
+    public void setDataPartitionId(String tenant){
+        this.dataPartitionId = tenant;
+    }
+
     public void setName(String name) {
         this.name = name;
     }