diff --git a/provider/notification-aws/pom.xml b/provider/notification-aws/pom.xml
index 85ddaf9fc1cdef0b1118882288ac4cf9e76c54e5..19bd5d784d520289da5d5a12dc1c49c21fff360c 100644
--- a/provider/notification-aws/pom.xml
+++ b/provider/notification-aws/pom.xml
@@ -50,7 +50,7 @@
         <dependency>
             <groupId>org.opengroup.osdu.core.aws</groupId>
             <artifactId>os-core-lib-aws</artifactId>
-            <version>0.3.11</version>
+            <version>0.3.13</version>
         </dependency>
 
         <!-- https://mvnrepository.com/artifact/com.amazonaws/aws-java-sdk-secretsmanager -->
diff --git a/provider/notification-aws/src/main/java/org/opengroup/osdu/notification/provider/aws/impl/ServiceAccountJwtAwsClientImpl.java b/provider/notification-aws/src/main/java/org/opengroup/osdu/notification/provider/aws/impl/ServiceAccountJwtAwsClientImpl.java
index dcfbf42aa4cedd1976432d027e0b855b7d392384..02e2b91e7f64abc56a6ecafa648183337e4fe2df 100644
--- a/provider/notification-aws/src/main/java/org/opengroup/osdu/notification/provider/aws/impl/ServiceAccountJwtAwsClientImpl.java
+++ b/provider/notification-aws/src/main/java/org/opengroup/osdu/notification/provider/aws/impl/ServiceAccountJwtAwsClientImpl.java
@@ -12,36 +12,26 @@
 // limitations under the License.
 package org.opengroup.osdu.notification.provider.aws.impl;
 
+
 import com.amazonaws.auth.AWSCredentialsProvider;
-import com.amazonaws.services.secretsmanager.AWSSecretsManager;
-import com.amazonaws.services.secretsmanager.AWSSecretsManagerClientBuilder;
-import com.amazonaws.services.secretsmanager.model.*;
 import com.amazonaws.services.simplesystemsmanagement.AWSSimpleSystemsManagement;
 import com.amazonaws.services.simplesystemsmanagement.AWSSimpleSystemsManagementClientBuilder;
-import com.amazonaws.services.simplesystemsmanagement.model.*;
-import com.fasterxml.jackson.core.JsonParseException;
-import com.fasterxml.jackson.databind.JsonMappingException;
-import com.fasterxml.jackson.databind.ObjectMapper;
+import com.amazonaws.services.simplesystemsmanagement.model.GetParameterRequest;
+import com.amazonaws.services.simplesystemsmanagement.model.GetParameterResult;
+import com.amazonaws.services.simplesystemsmanagement.model.Parameter;
 import lombok.AccessLevel;
 import lombok.Getter;
 import lombok.Setter;
 
+import org.opengroup.osdu.core.aws.entitlements.ServicePrincipal;
 import org.opengroup.osdu.core.aws.iam.IAMConfig;
-import org.opengroup.osdu.core.common.logging.JaxRsDpsLog;
+import org.opengroup.osdu.core.aws.secrets.SecretsManager;
 import org.opengroup.osdu.core.common.util.IServiceAccountJwtClient;
-import org.opengroup.osdu.notification.provider.aws.utils.AwsCognitoClient;
-import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Component;
 
 import javax.annotation.PostConstruct;
 
-import java.io.IOException;
-
-import java.util.ArrayList;
-
-import java.util.List;
-import java.util.Map;
 
 @Component
 public class ServiceAccountJwtAwsClientImpl implements IServiceAccountJwtClient {
@@ -66,14 +56,20 @@ public class ServiceAccountJwtAwsClientImpl implements IServiceAccountJwtClient
     public String environment;
 
 
-    @Autowired
-    private JaxRsDpsLog log;
+    @Value("${aws.tokenUrl}")
+    @Getter()
+    public String tokenUrl;
+
+    @Value("${aws.oauth.custom.scope}")
+    @Getter()
+    private String awsOauthCustomScope;
+
+
+
+    String client_credentials_secret;
+    String client_credentials_clientid;
+    ServicePrincipal sp;
 
-    String password;
-    String clientid;
-    String userpoolid;
-    String serviceprincipaluser;
-    AwsCognitoClient cognitoClient;
 
     private AWSCredentialsProvider amazonAWSCredentials;
     private AWSSimpleSystemsManagement ssmManager;
@@ -81,132 +77,35 @@ public class ServiceAccountJwtAwsClientImpl implements IServiceAccountJwtClient
     @PostConstruct
     public void init() {
         if (ssmEnabled) {
-            String secretKey = "service_principal_password";
-            String secretName = "/osdu/" + environment + "/service_principal_password";
-            String cognito_user_pool_id = "/osdu/" + environment + "/cognito-user-pool-id";
-            String cognito_client_id = "/osdu/" + environment + "/cognito-client-id";
-            String service_principal = "/osdu/" + environment + "/service-principal-user";
+
+            SecretsManager sm = new SecretsManager();
+            sp = new ServicePrincipal(amazonRegion,environment,tokenUrl,awsOauthCustomScope);
+
+            String client_credentials_client_id = "/osdu/" + environment + "/client-credentials-client-id";
+            String client_secret_key = "client_credentials_client_secret";
+            String client_secret_secretName = "/osdu/" + environment + "/client_credentials_secret";
+
             amazonAWSCredentials = IAMConfig.amazonAWSCredentials();
             ssmManager = AWSSimpleSystemsManagementClientBuilder.standard()
                     .withCredentials(amazonAWSCredentials)
                     .withRegion(amazonRegion)
                     .build();
 
-            GetParametersRequest paramRequest = new GetParametersRequest()
-                    .withNames(cognito_user_pool_id,cognito_client_id,service_principal)
+            GetParameterRequest paramRequest = new GetParameterRequest()
+                    .withName(client_credentials_client_id)
                     .withWithDecryption(true);
-            GetParametersResult paramResult = new GetParametersResult();
-            paramResult = ssmManager.getParameters(paramRequest);
-            List<Parameter> paramsResultList = new ArrayList<>();
-            List<String> paramsResultListInvalid = new ArrayList<>();
-            paramsResultList = paramResult.getParameters();
-            paramsResultListInvalid = paramResult.getInvalidParameters();
-
-            if(paramsResultListInvalid.size() >0)
-            {
-                log.error("SSM did not retrieve all parameters");
-            }
-            for (Parameter s : paramsResultList) {
-                if (s.getName().equalsIgnoreCase(cognito_user_pool_id)) {
-                    userpoolid = s.getValue();
-                }
-                if (s.getName().equalsIgnoreCase(cognito_client_id)) {
-                    clientid = s.getValue();
-                }
-                if (s.getName().equalsIgnoreCase(service_principal)) {
-                    serviceprincipaluser = s.getValue();
-                }
-
-            }
-
-            password = getSecret(secretName,amazonRegion,secretKey);
-             cognitoClient = new AwsCognitoClient(amazonRegion,clientid,"USER_PASSWORD_AUTH", serviceprincipaluser,password);
-             cognitoClient.setPassword(serviceprincipaluser,password,userpoolid);
+            GetParameterResult paramResult = ssmManager.getParameter(paramRequest);
+            Parameter paramsResult = paramResult.getParameter();
+            client_credentials_clientid = paramsResult.getValue();
+            client_credentials_secret = sm.getSecret(client_secret_secretName,amazonRegion,client_secret_key);
+
         }
     }
 
     @Override
     public String getIdToken(String s) {
-
-        String token=  getServicePrincipalCredentials();
+        String token=  sp.getServicePrincipalAccessToken(client_credentials_clientid,client_credentials_secret);
         return token;
-
-    }
-
-    public  String getServicePrincipalCredentials()
-    {
-
-        String token = cognitoClient.getToken(serviceprincipaluser,password,"bearer");
-        return token;
-
-    }
-
-    public  String getSecret(String secretName, String region,String secretKey) {
-
-
-String secretVaue="";
-        // Create a Secrets Manager client
-        AWSSecretsManager client  = AWSSecretsManagerClientBuilder.standard()
-                .withRegion(region)
-                .build();
-
-        String secret="", decodedBinarySecret="";
-        GetSecretValueRequest getSecretValueRequest = new GetSecretValueRequest()
-                .withSecretId(secretName);
-        GetSecretValueResult getSecretValueResult = null;
-
-        try {
-            getSecretValueResult = client.getSecretValue(getSecretValueRequest);
-        } catch (DecryptionFailureException e) {
-            // Secrets Manager can't decrypt the protected secret text using the provided KMS key.
-            // Deal with the exception here, and/or rethrow at your discretion.
-            log.error("Error while setting up ServicePrincipalAccount"+e.getMessage());
-            throw e;
-        } catch (InternalServiceErrorException e) {
-            // An error occurred on the server side.
-            // Deal with the exception here, and/or rethrow at your discretion.
-            log.error("Error while setting up ServicePrincipalAccount"+e.getMessage());
-            throw e;
-        } catch (InvalidParameterException e) {
-            // You provided an invalid value for a parameter.
-            // Deal with the exception here, and/or rethrow at your discretion.
-            log.error("Error while setting up ServicePrincipalAccount"+e.getMessage());
-            throw e;
-        } catch (InvalidRequestException e) {
-            // You provided a parameter value that is not valid for the current state of the resource.
-            // Deal with the exception here, and/or rethrow at your discretion.
-            log.error("Error while setting up ServicePrincipalAccount"+e.getMessage());
-            throw e;
-        } catch (ResourceNotFoundException e) {
-            // We can't find the resource that you asked for.
-            // Deal with the exception here, and/or rethrow at your discretion.
-            log.error("Error while setting up ServicePrincipalAccount"+e.getMessage());
-            throw e;
-        }
-
-        // Decrypts secret using the associated KMS CMK.
-        // Depending on whether the secret is a string or binary, one of these fields will be populated.
-        if (getSecretValueResult.getSecretString() != null) {
-            secret = getSecretValueResult.getSecretString();
-            Map<String, String> secretMap=null;
-
-            try
-            {
-                secretMap = new ObjectMapper().readValue(secret.getBytes(), Map.class);
-
-            } catch (JsonParseException e) {
-                log.error(e.getMessage());
-            } catch (JsonMappingException e) {
-                log.error(e.getMessage());
-            } catch (IOException e) {
-                log.error(e.getMessage());
-            }
-
-             secretVaue = secretMap.get(secretKey);
-        }
-
-
-        return secretVaue;
     }
 
 
diff --git a/provider/notification-aws/src/main/resources/application.properties b/provider/notification-aws/src/main/resources/application.properties
index 6412b35466c829df8611f467c82b8e2428185846..cfccbdec8a2adc65bd8952cdb11bfcfc86fc6813 100644
--- a/provider/notification-aws/src/main/resources/application.properties
+++ b/provider/notification-aws/src/main/resources/application.properties
@@ -28,7 +28,8 @@ aws.region=${AWS_REGION}
 aws.dynamodb.table.prefix=${RESOURCE_PREFIX}-
 aws.dynamodb.endpoint=dynamodb.${AWS_REGION}.amazonaws.com
 
-
+aws.tokenUrl=${OAUTH_TOKEN_URL}
+aws.oauth.custom.scope=${OAUTH_CUSTOM_SCOPE}
 app.expireTime=300
 app.maxCacheSize=10
 
diff --git a/testing/notification-test-aws/pom.xml b/testing/notification-test-aws/pom.xml
index fa94003e20ef3933df797aad9d91a073fd5076b4..806791ec17a263688d4d335615877b7a93dd3229 100644
--- a/testing/notification-test-aws/pom.xml
+++ b/testing/notification-test-aws/pom.xml
@@ -38,14 +38,13 @@
         <java.version>8</java.version>
         <maven.compiler.target>${java.version}</maven.compiler.target>
         <maven.compiler.source>${java.version}</maven.compiler.source>
-        <os-core-lib-aws.version>0.3.11</os-core-lib-aws.version>
     </properties>
 
     <dependencies>
         <dependency>
             <groupId>org.opengroup.osdu.core.aws</groupId>
             <artifactId>os-core-lib-aws</artifactId>
-            <version>0.3.11</version>
+            <version>0.3.13</version>
         </dependency>
         <dependency>
             <groupId>com.amazonaws</groupId>