diff --git a/NOTICE b/NOTICE
index 79ee441461ce0fb66f7ae3466cac261c51ecb798..96b5625e41c571d9d9f64700a543f513c1d4a2c8 100644
--- a/NOTICE
+++ b/NOTICE
@@ -584,13 +584,13 @@ The following software have components provided under the terms of this license:
 - proto-google-common-protos (from https://github.com/googleapis/java-iam/proto-google-common-protos)
 - proto-google-iam-v1 (from https://github.com/googleapis/java-iam/proto-google-iam-v1)
 - resilience4j (from https://github.com/resilience4j/resilience4j)
-- resilience4j (from https://resilience4j.readme.io)
-- resilience4j (from https://resilience4j.readme.io)
-- resilience4j (from https://resilience4j.readme.io)
 - resilience4j (from https://github.com/resilience4j/resilience4j)
 - resilience4j (from https://github.com/resilience4j/resilience4j)
+- resilience4j (from https://resilience4j.readme.io)
 - resilience4j (from https://github.com/resilience4j/resilience4j)
 - resilience4j (from https://github.com/resilience4j/resilience4j)
+- resilience4j (from https://resilience4j.readme.io)
+- resilience4j (from https://resilience4j.readme.io)
 - rxjava (from https://github.com/ReactiveX/RxJava)
 - spring-boot-actuator-autoconfigure (from https://spring.io/projects/spring-boot)
 - spring-boot-dependencies (from https://spring.io/projects/spring-boot)
diff --git a/legal-core/src/main/java/org/opengroup/osdu/legal/api/LegalTagStatusJobApi.java b/legal-core/src/main/java/org/opengroup/osdu/legal/api/LegalTagStatusJobApi.java
index 33103d973d81ed354babd4f579acd62971d6e12c..90099678d67d15585a135490b1d220e072f03fb4 100644
--- a/legal-core/src/main/java/org/opengroup/osdu/legal/api/LegalTagStatusJobApi.java
+++ b/legal-core/src/main/java/org/opengroup/osdu/legal/api/LegalTagStatusJobApi.java
@@ -51,7 +51,7 @@ public class LegalTagStatusJobApi {
         boolean allPassed = true;
         for (TenantInfo tenantInfo : tenantsInfo) {
             convertedHeaders.put(DpsHeaders.ACCOUNT_ID, tenantInfo.getName());
-            boolean result = runJob(convertedHeaders, legalTagStatusJob);
+            boolean result = runJob(convertedHeaders, tenantInfo, legalTagStatusJob);
             if (allPassed)
                 allPassed = result;
         }
@@ -60,11 +60,11 @@ public class LegalTagStatusJobApi {
         return new ResponseEntity<HttpStatus>(status);
     }
 
-    private boolean runJob(DpsHeaders convertedHeaders, LegalTagStatusJob legalTagStatusJob) {
+    private boolean runJob(DpsHeaders convertedHeaders, TenantInfo tenantInfo, LegalTagStatusJob legalTagStatusJob) {
         boolean success = true;
         try {
             String  projectId = requestInfo.getTenantInfo().getProjectId();
-            StatusChangedTags result = legalTagStatusJob.run(projectId, convertedHeaders, requestInfo.getTenantInfo().getName());
+            StatusChangedTags result = legalTagStatusJob.run(projectId, convertedHeaders, tenantInfo.getName());
             auditLogger.legalTagJobRanSuccess(singletonList(result.toString()));
         } catch (Exception e) {
             success = false;
diff --git a/legal-core/src/test/java/org/opengroup/osdu/legal/logging/AuditLoggerTests.java b/legal-core/src/test/java/org/opengroup/osdu/legal/logging/AuditLoggerTests.java
index 5d5220ea63cd65f4f5fb707d8ea5b30a886f70bd..038a57109462879ee557368edbafd0ccc787f411 100644
--- a/legal-core/src/test/java/org/opengroup/osdu/legal/logging/AuditLoggerTests.java
+++ b/legal-core/src/test/java/org/opengroup/osdu/legal/logging/AuditLoggerTests.java
@@ -11,6 +11,8 @@ import org.opengroup.osdu.core.common.logging.JaxRsDpsLog;
 
 import java.util.Collections;
 import java.util.List;
+
+import static org.mockito.ArgumentMatchers.eq;
 import static org.mockito.Matchers.any;
 import static org.mockito.Mockito.verify;
 import static org.mockito.Mockito.when;
@@ -67,13 +69,15 @@ public class AuditLoggerTests {
 
     @Test
     public void should_writeLegalTagReadPropertiesSuccessEvent(){
-        sut.readLegalPropertiesSuccess(any());
+        List<String> resource = Collections.singletonList("1");
+        sut.readLegalPropertiesSuccess(resource);
         verify(log).audit(any());
     }
 
     @Test
     public void should_writeLegalTagReadPropertiesFailEvent(){
-        sut.readLegalPropertiesFail(any());
+        List<String> resource = Collections.singletonList("1");
+        sut.readLegalPropertiesFail(resource);
         verify(log).audit(any());
     }
 
diff --git a/provider/legal-aws/build-aws/buildspec.yaml b/provider/legal-aws/build-aws/buildspec.yaml
index 731961d497f3c6f072a69579f85e8bf07467fd93..4c1fa849f727704fdc922f70aa52571980947ca9 100644
--- a/provider/legal-aws/build-aws/buildspec.yaml
+++ b/provider/legal-aws/build-aws/buildspec.yaml
@@ -65,9 +65,9 @@ phases:
       - printenv
 
       - echo "Building primary service assemblies..."
-      - mvn -ntp -B test install sonar:sonar -pl .,legal-core,provider/legal-aws -Ddeployment.environment=prod -Dsonar.login=${SONAR_USERNAME} -Dsonar.password=${SONAR_PASSWORD} -Dsonar.branch.name=${BRANCH_NAME} 
+      - mvn -ntp -B test install sonar:sonar -pl .,legal-core,provider/legal-aws -Ddeployment.environment=prod -Dsonar.login=${SONAR_USERNAME} -Dsonar.password=${SONAR_PASSWORD} -Dsonar.branch.name=${BRANCH_NAME}
 
-#      Suspended until further notice
+      #      Suspended until further notice
 #      - echo "Copying assemblies to dist..."
 #      - cp ./provider/legal-aws/target/*spring-boot.jar ${OUTPUT_DIR}/bin # copy aws jars
 #      - cp ./legal-core/target/*.jar ${OUTPUT_DIR}/bin # copy core jar
diff --git a/provider/legal-aws/src/main/java/org/opengroup/osdu/legal/aws/jobs/AwsStatusChangedTag.java b/provider/legal-aws/src/main/java/org/opengroup/osdu/legal/aws/jobs/AwsStatusChangedTag.java
new file mode 100644
index 0000000000000000000000000000000000000000..e6882f4d5d0571ef2da728e5a3c08b0ead07badb
--- /dev/null
+++ b/provider/legal-aws/src/main/java/org/opengroup/osdu/legal/aws/jobs/AwsStatusChangedTag.java
@@ -0,0 +1,30 @@
+// Copyright © Amazon
+//
+// 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.jobs;
+
+import lombok.Data;
+import org.opengroup.osdu.core.common.model.legal.StatusChangedTag;
+
+@Data
+public class AwsStatusChangedTag extends StatusChangedTag {
+
+	private String dataPartitionId;
+
+    public AwsStatusChangedTag(String changedTagName, Enum changedTagStatus, String dataPartitionId) {
+    	super(changedTagName, changedTagStatus);
+        this.dataPartitionId = dataPartitionId;
+    }
+}
+
diff --git a/provider/legal-aws/src/main/java/org/opengroup/osdu/legal/aws/jobs/LegalTagPublisherImpl.java b/provider/legal-aws/src/main/java/org/opengroup/osdu/legal/aws/jobs/LegalTagPublisherImpl.java
index a130bd8f47d05626b8fd41b56f344d9c72c3ca74..2ba9af9c750bf3ca9d65ffd194a3f183efcc2fcc 100644
--- a/provider/legal-aws/src/main/java/org/opengroup/osdu/legal/aws/jobs/LegalTagPublisherImpl.java
+++ b/provider/legal-aws/src/main/java/org/opengroup/osdu/legal/aws/jobs/LegalTagPublisherImpl.java
@@ -30,9 +30,11 @@ import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Service;
 
 import javax.annotation.PostConstruct;
+import javax.inject.Inject;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
+import java.util.stream.Collectors;
 
 @Service
 public class LegalTagPublisherImpl implements ILegalTagPublisher {
@@ -43,7 +45,8 @@ public class LegalTagPublisherImpl implements ILegalTagPublisher {
 
     private AmazonSNS snsClient;
 
-
+    @Inject
+    private DpsHeaders headers;
 
     @PostConstruct
     public void init() throws K8sParameterNotFoundException {
@@ -75,9 +78,13 @@ public class LegalTagPublisherImpl implements ILegalTagPublisher {
         for (int i = 0; i < tags.getStatusChangedTags().size(); i += BATCH_SIZE){
             List<StatusChangedTag> batch = tags.getStatusChangedTags().subList(i, Math.min(tags.getStatusChangedTags().size(), i + BATCH_SIZE));
 
-            PublishRequestBuilder<StatusChangedTag> publishRequestBuilder = new PublishRequestBuilder<>();
+            List<AwsStatusChangedTag> awsBatch = batch.stream()
+                    .map(t -> new AwsStatusChangedTag(t.getChangedTagName(), t.getChangedTagStatus(), headers.getPartitionId()))
+                    .collect(Collectors.toList());
+
+            PublishRequestBuilder<AwsStatusChangedTag> publishRequestBuilder = new PublishRequestBuilder<>();
             PublishRequest publishRequest = publishRequestBuilder.generatePublishRequest("statusChangedTags",
-                    batch, messageAttributes, amazonSNSTopic);
+                    awsBatch, messageAttributes, amazonSNSTopic);
             snsClient.publish(publishRequest);
         }
     }
diff --git a/provider/legal-aws/src/main/java/org/opengroup/osdu/legal/aws/tags/dataaccess/LegalTagRepositoryFactoryAwsImpl.java b/provider/legal-aws/src/main/java/org/opengroup/osdu/legal/aws/tags/dataaccess/LegalTagRepositoryFactoryAwsImpl.java
new file mode 100644
index 0000000000000000000000000000000000000000..48e66dc459d54231991004ec4bad30f61f2ae521
--- /dev/null
+++ b/provider/legal-aws/src/main/java/org/opengroup/osdu/legal/aws/tags/dataaccess/LegalTagRepositoryFactoryAwsImpl.java
@@ -0,0 +1,50 @@
+package org.opengroup.osdu.legal.aws.tags.dataaccess;
+
+
+import org.apache.commons.lang3.StringUtils;
+import org.opengroup.osdu.core.common.model.http.AppException;
+import org.opengroup.osdu.core.common.model.http.DpsHeaders;
+import org.opengroup.osdu.core.common.model.tenant.TenantInfo;
+import org.opengroup.osdu.core.common.provider.interfaces.ITenantFactory;
+import org.opengroup.osdu.legal.provider.interfaces.ILegalTagRepository;
+import org.opengroup.osdu.legal.provider.interfaces.ILegalTagRepositoryFactory;
+import org.springframework.context.annotation.Primary;
+import org.springframework.stereotype.Service;
+import org.springframework.web.context.annotation.RequestScope;
+
+import javax.inject.Inject;
+
+@Service
+@Primary
+@RequestScope
+public class LegalTagRepositoryFactoryAwsImpl implements ILegalTagRepositoryFactory {
+
+
+	private TenantInfo tenantInfo;
+	private ITenantFactory tenantFactory;
+
+	@Inject
+	LegalTagRepositoryImpl repoImpl;
+
+	public LegalTagRepositoryFactoryAwsImpl(TenantInfo tenantInfo, ITenantFactory tenantFactory) {
+		this.tenantInfo = tenantInfo;
+		this.tenantFactory = tenantFactory;
+	}
+
+	@Override
+	public ILegalTagRepository get(String tenantName) {
+		if (StringUtils.isBlank(tenantName)) {
+			throw invalidTenantGivenException(tenantName);
+		}
+		TenantInfo tenantInfo = tenantFactory.getTenantInfo(tenantName);
+		repoImpl.setTenantInfo(tenantInfo);
+
+		return repoImpl;
+	}
+
+	AppException invalidTenantGivenException(String tenantName) {
+		return new AppException(403, "Forbidden",
+				String.format("You do not have access to the %s value given %s",
+						DpsHeaders.ACCOUNT_ID, tenantName));
+	}
+}
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 8bebf9171b396f42a6e3f5fe3d892d9ead0d3ed3..691a0e76c08f9a8154c91ba819119ec64811a4f5 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
@@ -21,14 +21,19 @@ 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.logging.JaxRsDpsLog;
 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;
 
 import org.opengroup.osdu.core.common.model.http.AppException;
+import org.opengroup.osdu.core.common.model.tenant.TenantInfo;
+import org.opengroup.osdu.core.common.provider.interfaces.ITenantFactory;
 import org.opengroup.osdu.legal.provider.interfaces.ILegalTagRepository;
 import org.springframework.beans.factory.annotation.Value;
+import org.springframework.context.annotation.Lazy;
 import org.springframework.stereotype.Repository;
+import org.springframework.web.context.annotation.RequestScope;
 
 import javax.annotation.PostConstruct;
 import javax.inject.Inject;
@@ -36,19 +41,38 @@ import java.io.UnsupportedEncodingException;
 import java.util.*;
 
 @Repository // why use repository over component over service
+@RequestScope
 public class LegalTagRepositoryImpl implements ILegalTagRepository {
 
     @Inject
     private DpsHeaders headers;
 
+    @Inject
+    private JaxRsDpsLog log;
+
+    private TenantInfo tenantInfo;
+
     @Inject
     private DynamoDBQueryHelperFactory dynamoDBQueryHelperFactory;
 
     @Value("${aws.dynamodb.legalTable.ssm.relativePath}")
     String legalRepositoryTableParameterRelativePath;
 
+    public void setTenantInfo(TenantInfo tenantInfo) {
+        this.tenantInfo = tenantInfo;
+    }
+
+    private String getDataPartitionId(){
+        if(this.tenantInfo == null){
+            log.warning("TenantInfo found to be null, defaulting to partition in headers");
+            return headers.getPartitionId();
+        }
+        return tenantInfo.getDataPartitionId();
+    }
+
     private DynamoDBQueryHelperV2 getLegalRepositoryQueryHelper() {
-        return dynamoDBQueryHelperFactory.getQueryHelperForPartition(headers, legalRepositoryTableParameterRelativePath);
+        String dataPartitionId = getDataPartitionId();
+        return dynamoDBQueryHelperFactory.getQueryHelperForPartition(dataPartitionId, legalRepositoryTableParameterRelativePath);
     }
 
 
@@ -72,7 +96,7 @@ public class LegalTagRepositoryImpl implements ILegalTagRepository {
         List<LegalTag> tags = new ArrayList<>();
 
         for(long id: ids) {
-            LegalDoc ld = queryHelper.loadByPrimaryKey(LegalDoc.class, String.valueOf(id), headers.getPartitionId()); //dynamoDBLegal.findById(String.valueOf(id));
+            LegalDoc ld = queryHelper.loadByPrimaryKey(LegalDoc.class, String.valueOf(id), getDataPartitionId()); //dynamoDBLegal.findById(String.valueOf(id));
             if(ld != null) {
                 tags.add(CreateLegalTagFromDoc(ld));
             }
@@ -87,7 +111,7 @@ public class LegalTagRepositoryImpl implements ILegalTagRepository {
 
         Boolean result = true;
         try {
-            queryHelper.deleteByPrimaryKey(LegalDoc.class, String.valueOf(legalTag.getId()), headers.getPartitionId());
+            queryHelper.deleteByPrimaryKey(LegalDoc.class, String.valueOf(legalTag.getId()), getDataPartitionId());
         } catch (Exception e){ // should be dynamodb specific exception
             result = false;
             // might need to throw app exception
@@ -108,7 +132,7 @@ public class LegalTagRepositoryImpl implements ILegalTagRepository {
 
         String filterExpression = "dataPartitionId = :partitionId";
 
-        AttributeValue dataPartitionAttributeValue = new AttributeValue(headers.getPartitionId());
+        AttributeValue dataPartitionAttributeValue = new AttributeValue(getDataPartitionId());
 
         Map<String, AttributeValue> eav = new HashMap<>();
         eav.put(":partitionId", dataPartitionAttributeValue);
@@ -162,7 +186,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.setDataPartitionId(getDataPartitionId());
         legalDoc.setDescription(legalTag.getDescription());
         legalDoc.setName(legalTag.getName());
         legalDoc.setProperties(legalTag.getProperties());
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 03abdf8a4fc174d53cb97277702cdfe958ca5694..3e6ed3ddbeca985535a074bed207b3ca700ee3ae 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
@@ -24,6 +24,7 @@ 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.logging.JaxRsDpsLog;
 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;
@@ -50,14 +51,20 @@ public class LegalTagRepositoryImplTest {
     @Mock
     private DpsHeaders headers;
 
+    @Mock
+    private JaxRsDpsLog log;
+
     @Mock
     private DynamoDBQueryHelperFactory dynamoDBQueryHelperFactory;
 
     @Before
     public void setUp() {
         initMocks(this);
-        Mockito.when(dynamoDBQueryHelperFactory.getQueryHelperForPartition(Mockito.any(DpsHeaders.class), Mockito.any()))
+        String testPartition = "test-partition";
+        Mockito.when(dynamoDBQueryHelperFactory.getQueryHelperForPartition(Mockito.eq(testPartition), Mockito.any()))
                 .thenReturn(queryHelper);
+        Mockito.when(headers.getPartitionId())
+                .thenReturn(testPartition);
     }
 
     @Test
diff --git a/testing/legal-test-aws/build-aws/prepare-dist.sh b/testing/legal-test-aws/build-aws/prepare-dist.sh
index baa16e0c8f465655d25f1dfd39bd6789ce553f85..367e34d3f5a089808d207d80311de3265ba7f413 100755
--- a/testing/legal-test-aws/build-aws/prepare-dist.sh
+++ b/testing/legal-test-aws/build-aws/prepare-dist.sh
@@ -21,7 +21,8 @@ echo $INTEGRATION_TEST_OUTPUT_BIN_DIR
 rm -rf "$INTEGRATION_TEST_OUTPUT_DIR"
 mkdir -p "$INTEGRATION_TEST_OUTPUT_DIR" && mkdir -p "$INTEGRATION_TEST_OUTPUT_BIN_DIR"
 echo "Building integration testing assemblies and gathering artifacts..."
-mvn -ntp install -f "$INTEGRATION_TEST_SOURCE_DIR_CORE"/pom.xml
+mvn -ntp clean install -DskipTests -f "$INTEGRATION_TEST_SOURCE_DIR/pom.xml" -pl legal-test-core,legal-test-aws -am
+# mvn -ntp install -f "$INTEGRATION_TEST_SOURCE_DIR_CORE"/pom.xml
 mvn -ntp install dependency:copy-dependencies -DskipTests -f "$INTEGRATION_TEST_SOURCE_DIR_AWS"/pom.xml -DincludeGroupIds=org.opengroup.osdu -Dmdep.copyPom
 cp "$INTEGRATION_TEST_SOURCE_DIR_AWS"/target/dependency/* "${INTEGRATION_TEST_OUTPUT_BIN_DIR}"
 (cd "${INTEGRATION_TEST_OUTPUT_BIN_DIR}" && ls *.jar | sed -e 's/\.jar$//' | xargs -I {} echo mvn -ntp install:install-file -Dfile={}.jar -DpomFile={}.pom >> install-deps.sh)
diff --git a/testing/legal-test-aws/src/test/java/org/opengroup/osdu/legal/util/AwsSqsHelper.java b/testing/legal-test-aws/src/test/java/org/opengroup/osdu/legal/util/AwsSqsHelper.java
index fef96a52ca439098a9034702b901fe4d81d46c36..0a1c0b31ac68c86d0f5bcaf04f13759301e21259 100644
--- a/testing/legal-test-aws/src/test/java/org/opengroup/osdu/legal/util/AwsSqsHelper.java
+++ b/testing/legal-test-aws/src/test/java/org/opengroup/osdu/legal/util/AwsSqsHelper.java
@@ -49,7 +49,7 @@ public class AwsSqsHelper {
         // comes wrapped in non-escaped double quotes
         data = data.substring(1);
         data = data.substring(0, data.length() - 1);
-        String dataCheck = "{\"statusChangedTags\":[{\"changedTagName\":\"" + name + "\",\"changedTagStatus\":\"incompliant\"}]}";
+        String dataCheck = "{\"statusChangedTags\":[{\"dataPartitionId\":\"" + TestUtils.getMyDataPartition() + "\",\"changedTagName\":\"" + name + "\",\"changedTagStatus\":\"incompliant\"}]}";
         dataCheck = dataCheck.replaceAll("\"", "\\\\\"");
         return data.equals(dataCheck);
     }