Repository: apache/airavata-custos (language: python)

Issue:
Stagingtodevelop

New API method to add user's external IDP links
We need to add user's external IDP link when restoring user accounts. Can you please create a new API method or change user registration body to add it?
New API method to add user's external IDP links
We need to add user's external IDP link when restoring user accounts. Can you please create a new API method or change user registration body to add it?


Discussion / hints:

Fix patch:
diff --git a/custos-client-sdks/custos-java-clients/user-management-client/src/main/java/org/apache/custos/user/management/client/UserManagementClient.java b/custos-client-sdks/custos-java-clients/user-management-client/src/main/java/org/apache/custos/user/management/client/UserManagementClient.java
index be76e883d..00e65aef6 100644
--- a/custos-client-sdks/custos-java-clients/user-management-client/src/main/java/org/apache/custos/user/management/client/UserManagementClient.java
+++ b/custos-client-sdks/custos-java-clients/user-management-client/src/main/java/org/apache/custos/user/management/client/UserManagementClient.java
@@ -234,11 +234,11 @@ public FindUsersResponse findUser(String username, String firstName, String last
         }
 
         if (lastName != null) {
-            builder = builder.setFirstName(lastName);
+            builder = builder.setLastName(lastName);
         }
 
         if (email != null) {
-            builder = builder.setFirstName(email);
+            builder = builder.setEmail(email);
         }
         UserSearchMetadata metadata = builder.build();
 
@@ -476,11 +476,11 @@ public FindUsersResponse findUsers(String searchString, String username, String
         }
 
         if (lastName != null) {
-            builder = builder.setFirstName(lastName);
+            builder = builder.setLastName(lastName);
         }
 
         if (email != null) {
-            builder = builder.setFirstName(email);
+            builder = builder.setEmail(email);
         }
 
         if (searchString != null) {
diff --git a/custos-core-services-client-stubs/agent-profile-core-service-client-stub/pom.xml b/custos-core-services-client-stubs/agent-profile-core-service-client-stub/pom.xml
index ae9e6abb9..e4c67340c 100644
--- a/custos-core-services-client-stubs/agent-profile-core-service-client-stub/pom.xml
+++ b/custos-core-services-client-stubs/agent-profile-core-service-client-stub/pom.xml
@@ -25,6 +25,7 @@
         <artifactId>custos-core-services-client-stubs</artifactId>
         <groupId>org.apache.custos</groupId>
         <version>1.0-SNAPSHOT</version>
+        <relativePath>../pom.xml</relativePath>
     </parent>
     <modelVersion>4.0.0</modelVersion>
 
diff --git a/custos-core-services-client-stubs/cluster-management-core-service-client-stub/pom.xml b/custos-core-services-client-stubs/cluster-management-core-service-client-stub/pom.xml
index f87e49ca4..92cddcfda 100644
--- a/custos-core-services-client-stubs/cluster-management-core-service-client-stub/pom.xml
+++ b/custos-core-services-client-stubs/cluster-management-core-service-client-stub/pom.xml
@@ -25,6 +25,7 @@
         <artifactId>custos-core-services-client-stubs</artifactId>
         <groupId>org.apache.custos</groupId>
         <version>1.0-SNAPSHOT</version>
+        <relativePath>../pom.xml</relativePath>
     </parent>
     <modelVersion>4.0.0</modelVersion>
 
diff --git a/custos-core-services-client-stubs/credential-store-core-service-client-stubs/pom.xml b/custos-core-services-client-stubs/credential-store-core-service-client-stubs/pom.xml
index 5f876547b..c37cca5b5 100644
--- a/custos-core-services-client-stubs/credential-store-core-service-client-stubs/pom.xml
+++ b/custos-core-services-client-stubs/credential-store-core-service-client-stubs/pom.xml
@@ -25,6 +25,7 @@
         <artifactId>custos-core-services-client-stubs</artifactId>
         <groupId>org.apache.custos</groupId>
         <version>1.0-SNAPSHOT</version>
+        <relativePath>../pom.xml</relativePath>
     </parent>
     <modelVersion>4.0.0</modelVersion>
 
diff --git a/custos-core-services-client-stubs/custos-logging-client-stub/pom.xml b/custos-core-services-client-stubs/custos-logging-client-stub/pom.xml
index c66585dc7..4e44d1127 100644
--- a/custos-core-services-client-stubs/custos-logging-client-stub/pom.xml
+++ b/custos-core-services-client-stubs/custos-logging-client-stub/pom.xml
@@ -25,6 +25,7 @@
         <artifactId>custos-core-services-client-stubs</artifactId>
         <groupId>org.apache.custos</groupId>
         <version>1.0-SNAPSHOT</version>
+        <relativePath>../pom.xml</relativePath>
     </parent>
     <modelVersion>4.0.0</modelVersion>
 
diff --git a/custos-core-services-client-stubs/federated-authentication-core-service-client-stub/pom.xml b/custos-core-services-client-stubs/federated-authentication-core-service-client-stub/pom.xml
index 0cecb8ca3..06344b3ea 100644
--- a/custos-core-services-client-stubs/federated-authentication-core-service-client-stub/pom.xml
+++ b/custos-core-services-client-stubs/federated-authentication-core-service-client-stub/pom.xml
@@ -25,6 +25,7 @@
         <artifactId>custos-core-services-client-stubs</artifactId>
         <groupId>org.apache.custos</groupId>
         <version>1.0-SNAPSHOT</version>
+        <relativePath>../pom.xml</relativePath>
     </parent>
     <modelVersion>4.0.0</modelVersion>
 
diff --git a/custos-core-services-client-stubs/iam-admin-core-service-client-stub/pom.xml b/custos-core-services-client-stubs/iam-admin-core-service-client-stub/pom.xml
index 989940805..2d6684d7a 100644
--- a/custos-core-services-client-stubs/iam-admin-core-service-client-stub/pom.xml
+++ b/custos-core-services-client-stubs/iam-admin-core-service-client-stub/pom.xml
@@ -25,6 +25,7 @@
         <artifactId>custos-core-services-client-stubs</artifactId>
         <groupId>org.apache.custos</groupId>
         <version>1.0-SNAPSHOT</version>
+        <relativePath>../pom.xml</relativePath>
     </parent>
     <modelVersion>4.0.0</modelVersion>
 
diff --git a/custos-core-services-client-stubs/iam-admin-core-service-client-stub/src/main/java/org/apache/custos/iam/admin/client/IamAdminServiceClient.java b/custos-core-services-client-stubs/iam-admin-core-service-client-stub/src/main/java/org/apache/custos/iam/admin/client/IamAdminServiceClient.java
index fabee59ec..361e002c8 100644
--- a/custos-core-services-client-stubs/iam-admin-core-service-client-stub/src/main/java/org/apache/custos/iam/admin/client/IamAdminServiceClient.java
+++ b/custos-core-services-client-stubs/iam-admin-core-service-client-stub/src/main/java/org/apache/custos/iam/admin/client/IamAdminServiceClient.java
@@ -349,6 +349,10 @@ public  OperationStatus deleteExternalIDPLinksOfUsers(DeleteExternalIDPsRequest
         return iamAdminServiceBlockingStub.deleteExternalIDPLinksOfUsers(deleteExternalIDPsRequest);
     }
 
+    public  OperationStatus addExternalIDPLinksOfUsers(AddExternalIDPLinksRequest addExternalIDPLinksRequest) {
+        return iamAdminServiceBlockingStub.addExternalIDPLinksOfUsers(addExternalIDPLinksRequest);
+    }
+
     public Agent getAgent(UserSearchRequest request) {
         return iamAdminServiceBlockingStub.getAgent(request);
     }
@@ -362,6 +366,10 @@ public Empty deleteTenant(DeleteTenantRequest request) {
         return iamAdminServiceBlockingStub.deleteTenant(request);
     }
 
+    public GetExternalIDPsResponse getExternalIDPLinks(GetExternalIDPsRequest request) {
+        return iamAdminServiceBlockingStub.getExternalIDPLinksOfUsers(request);
+    }
+
     private StreamObserver getObserver(ServiceCallback callback, String failureMsg) {
         final Object[] response = new Object[1];
         StreamObserver observer = new StreamObserver() {
diff --git a/custos-core-services-client-stubs/messaging-core-service-client-stub/pom.xml b/custos-core-services-client-stubs/messaging-core-service-client-stub/pom.xml
index fcc2f8978..869cdc7e0 100644
--- a/custos-core-services-client-stubs/messaging-core-service-client-stub/pom.xml
+++ b/custos-core-services-client-stubs/messaging-core-service-client-stub/pom.xml
@@ -25,6 +25,7 @@
         <artifactId>custos-core-services-client-stubs</artifactId>
         <groupId>org.apache.custos</groupId>
         <version>1.0-SNAPSHOT</version>
+        <relativePath>../pom.xml</relativePath>
     </parent>
     <modelVersion>4.0.0</modelVersion>
 
diff --git a/custos-core-services-client-stubs/pom.xml b/custos-core-services-client-stubs/pom.xml
index 5a59cf65a..7097c9f75 100644
--- a/custos-core-services-client-stubs/pom.xml
+++ b/custos-core-services-client-stubs/pom.xml
@@ -24,6 +24,7 @@
         <artifactId>custos</artifactId>
         <groupId>org.apache.custos</groupId>
         <version>1.0-SNAPSHOT</version>
+        <relativePath>../pom.xml</relativePath>
     </parent>
     <modelVersion>4.0.0</modelVersion>
     <packaging>pom</packaging>
diff --git a/custos-core-services-client-stubs/resource-secret-core-service-client-stub/pom.xml b/custos-core-services-client-stubs/resource-secret-core-service-client-stub/pom.xml
index b7d28ff20..205227ae6 100644
--- a/custos-core-services-client-stubs/resource-secret-core-service-client-stub/pom.xml
+++ b/custos-core-services-client-stubs/resource-secret-core-service-client-stub/pom.xml
@@ -25,6 +25,7 @@
         <artifactId>custos-core-services-client-stubs</artifactId>
         <groupId>org.apache.custos</groupId>
         <version>1.0-SNAPSHOT</version>
+        <relativePath>../pom.xml</relativePath>
     </parent>
     <modelVersion>4.0.0</modelVersion>
 
diff --git a/custos-core-services-client-stubs/sharing-core-service-client-stub/pom.xml b/custos-core-services-client-stubs/sharing-core-service-client-stub/pom.xml
index f0a6c184e..8d64b2a04 100644
--- a/custos-core-services-client-stubs/sharing-core-service-client-stub/pom.xml
+++ b/custos-core-services-client-stubs/sharing-core-service-client-stub/pom.xml
@@ -25,6 +25,7 @@
         <artifactId>custos-core-services-client-stubs</artifactId>
         <groupId>org.apache.custos</groupId>
         <version>1.0-SNAPSHOT</version>
+        <relativePath>../pom.xml</relativePath>
     </parent>
     <modelVersion>4.0.0</modelVersion>
 
diff --git a/custos-core-services-client-stubs/tenant-profile-core-service-client-stub/pom.xml b/custos-core-services-client-stubs/tenant-profile-core-service-client-stub/pom.xml
index 3d0b6de83..fba0a08fd 100644
--- a/custos-core-services-client-stubs/tenant-profile-core-service-client-stub/pom.xml
+++ b/custos-core-services-client-stubs/tenant-profile-core-service-client-stub/pom.xml
@@ -25,6 +25,7 @@
         <artifactId>custos-core-services-client-stubs</artifactId>
         <groupId>org.apache.custos</groupId>
         <version>1.0-SNAPSHOT</version>
+        <relativePath>../pom.xml</relativePath>
     </parent>
     <modelVersion>4.0.0</modelVersion>
 
diff --git a/custos-core-services-client-stubs/user-profile-core-service-client-stub/pom.xml b/custos-core-services-client-stubs/user-profile-core-service-client-stub/pom.xml
index 718de294a..83534adf6 100644
--- a/custos-core-services-client-stubs/user-profile-core-service-client-stub/pom.xml
+++ b/custos-core-services-client-stubs/user-profile-core-service-client-stub/pom.xml
@@ -25,6 +25,7 @@
         <artifactId>custos-core-services-client-stubs</artifactId>
         <groupId>org.apache.custos</groupId>
         <version>1.0-SNAPSHOT</version>
+        <relativePath>../pom.xml</relativePath>
     </parent>
     <modelVersion>4.0.0</modelVersion>
 
diff --git a/custos-core-services/agent-profile-core-service/pom.xml b/custos-core-services/agent-profile-core-service/pom.xml
index e0d6f7f31..028d429b1 100644
--- a/custos-core-services/agent-profile-core-service/pom.xml
+++ b/custos-core-services/agent-profile-core-service/pom.xml
@@ -25,6 +25,7 @@
         <artifactId>custos-core-services</artifactId>
         <groupId>org.apache.custos</groupId>
         <version>1.0-SNAPSHOT</version>
+        <relativePath>../pom.xml</relativePath>
     </parent>
     <modelVersion>4.0.0</modelVersion>
 
diff --git a/custos-core-services/cluster-management-core-service/pom.xml b/custos-core-services/cluster-management-core-service/pom.xml
index 0f0d6ffb2..8c102a544 100644
--- a/custos-core-services/cluster-management-core-service/pom.xml
+++ b/custos-core-services/cluster-management-core-service/pom.xml
@@ -25,6 +25,7 @@
         <artifactId>custos-core-services</artifactId>
         <groupId>org.apache.custos</groupId>
         <version>1.0-SNAPSHOT</version>
+        <relativePath>../pom.xml</relativePath>
     </parent>
     <modelVersion>4.0.0</modelVersion>
 
diff --git a/custos-core-services/credential-store-core-service/pom.xml b/custos-core-services/credential-store-core-service/pom.xml
index 8a03262fd..db4a843e2 100644
--- a/custos-core-services/credential-store-core-service/pom.xml
+++ b/custos-core-services/credential-store-core-service/pom.xml
@@ -25,6 +25,7 @@
         <artifactId>custos-core-services</artifactId>
         <groupId>org.apache.custos</groupId>
         <version>1.0-SNAPSHOT</version>
+        <relativePath>../pom.xml</relativePath>
     </parent>
     <modelVersion>4.0.0</modelVersion>
 
diff --git a/custos-core-services/credential-store-core-service/src/main/resources/vault-client-truststore.pkcs12 b/custos-core-services/credential-store-core-service/src/main/resources/vault-client-truststore.pkcs12
index ec1e989cc..ebd754fc6 100644
Binary files a/custos-core-services/credential-store-core-service/src/main/resources/vault-client-truststore.pkcs12 and b/custos-core-services/credential-store-core-service/src/main/resources/vault-client-truststore.pkcs12 differ
diff --git a/custos-core-services/custos-core-services-commons/pom.xml b/custos-core-services/custos-core-services-commons/pom.xml
index 1135ea24b..821d8e784 100644
--- a/custos-core-services/custos-core-services-commons/pom.xml
+++ b/custos-core-services/custos-core-services-commons/pom.xml
@@ -25,6 +25,7 @@
         <artifactId>custos-core-services</artifactId>
         <groupId>org.apache.custos</groupId>
         <version>1.0-SNAPSHOT</version>
+        <relativePath>../pom.xml</relativePath>
     </parent>
     <modelVersion>4.0.0</modelVersion>
 
diff --git a/custos-core-services/custos-logging/pom.xml b/custos-core-services/custos-logging/pom.xml
index 3d9c9a75a..f55394931 100644
--- a/custos-core-services/custos-logging/pom.xml
+++ b/custos-core-services/custos-logging/pom.xml
@@ -25,6 +25,7 @@
         <artifactId>custos-core-services</artifactId>
         <groupId>org.apache.custos</groupId>
         <version>1.0-SNAPSHOT</version>
+        <relativePath>../pom.xml</relativePath>
     </parent>
     <modelVersion>4.0.0</modelVersion>
 
diff --git a/custos-core-services/custos-messaging-core-service/pom.xml b/custos-core-services/custos-messaging-core-service/pom.xml
index 440d30263..0bd992bc5 100644
--- a/custos-core-services/custos-messaging-core-service/pom.xml
+++ b/custos-core-services/custos-messaging-core-service/pom.xml
@@ -25,6 +25,7 @@
         <artifactId>custos-core-services</artifactId>
         <groupId>org.apache.custos</groupId>
         <version>1.0-SNAPSHOT</version>
+        <relativePath>../pom.xml</relativePath>
     </parent>
     <modelVersion>4.0.0</modelVersion>
 
@@ -112,7 +113,7 @@
         <dependency>
             <groupId>org.apache.custos</groupId>
             <artifactId>user-profile-core-service-client-stub</artifactId>
-            <version>1.0-SNAPSHOT</version>
+            <version>${project.version}</version>
         </dependency>
 
         <dependency>
diff --git a/custos-core-services/custos-messaging-core-service/src/main/resources/application.properties b/custos-core-services/custos-messaging-core-service/src/main/resources/application.properties
index ced645344..eb8f6766a 100644
--- a/custos-core-services/custos-messaging-core-service/src/main/resources/application.properties
+++ b/custos-core-services/custos-messaging-core-service/src/main/resources/application.properties
@@ -39,4 +39,5 @@ spring.jpa.properties.hibernate.dialect = org.hibernate.dialect.MySQL5InnoDBDial
 
 # Hibernate ddl auto (create, create-drop, validate, update)
 spring.jpa.hibernate.ddl-auto = update
-logging.level.root=WARN
\ No newline at end of file
+logging.level.root=WARN
+spring.profiles.active=@spring.profiles.active@
\ No newline at end of file
diff --git a/custos-core-services/custos-messaging-core-service/src/main/resources/bootstrap.properties b/custos-core-services/custos-messaging-core-service/src/main/resources/bootstrap.properties
index fd0bbe03e..c6576723e 100644
--- a/custos-core-services/custos-messaging-core-service/src/main/resources/bootstrap.properties
+++ b/custos-core-services/custos-messaging-core-service/src/main/resources/bootstrap.properties
@@ -17,5 +17,6 @@
 #  under the License.
 #
 
+
 spring.cloud.config.uri=http://custos-configuration-service.custos.svc.cluster.local:9000
-spring.profiles.active:default
\ No newline at end of file
+spring.profiles.active=@spring.profiles.active@
\ No newline at end of file
diff --git a/custos-core-services/federated-authentication-core-service/pom.xml b/custos-core-services/federated-authentication-core-service/pom.xml
index 07df78f75..a33a4d019 100644
--- a/custos-core-services/federated-authentication-core-service/pom.xml
+++ b/custos-core-services/federated-authentication-core-service/pom.xml
@@ -25,6 +25,7 @@
         <artifactId>custos-core-services</artifactId>
         <groupId>org.apache.custos</groupId>
         <version>1.0-SNAPSHOT</version>
+        <relativePath>../pom.xml</relativePath>
     </parent>
     <modelVersion>4.0.0</modelVersion>
 
diff --git a/custos-core-services/iam-admin-core-service/pom.xml b/custos-core-services/iam-admin-core-service/pom.xml
index 2962b314d..7cfbe4504 100644
--- a/custos-core-services/iam-admin-core-service/pom.xml
+++ b/custos-core-services/iam-admin-core-service/pom.xml
@@ -25,6 +25,7 @@
         <artifactId>custos-core-services</artifactId>
         <groupId>org.apache.custos</groupId>
         <version>1.0-SNAPSHOT</version>
+        <relativePath>../pom.xml</relativePath>
     </parent>
     <modelVersion>4.0.0</modelVersion>
 
diff --git a/custos-core-services/iam-admin-core-service/src/main/java/org/apache/custos/iam/service/IamAdminService.java b/custos-core-services/iam-admin-core-service/src/main/java/org/apache/custos/iam/service/IamAdminService.java
index b225ed22c..e1fa8798e 100644
--- a/custos-core-services/iam-admin-core-service/src/main/java/org/apache/custos/iam/service/IamAdminService.java
+++ b/custos-core-services/iam-admin-core-service/src/main/java/org/apache/custos/iam/service/IamAdminService.java
@@ -31,10 +31,8 @@
 import org.apache.custos.iam.service.IamAdminServiceGrpc.IamAdminServiceImplBase;
 import org.apache.custos.iam.utils.IAMOperations;
 import org.apache.custos.iam.utils.Status;
-import org.keycloak.representations.idm.EventRepresentation;
-import org.keycloak.representations.idm.ProtocolMapperRepresentation;
 import org.keycloak.representations.idm.UserRepresentation;
-import org.keycloak.representations.idm.UserSessionRepresentation;
+import org.keycloak.representations.idm.*;
 import org.lognet.springboot.grpc.GRpcService;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -465,10 +463,27 @@ public void findUsers(FindUsersRequest request, StreamObserver<FindUsersResponse
                 boolean status = keycloakClient.isValidEndUser(String.valueOf(request.getTenantId()),
                         r.getUsername(), request.getAccessToken());
 
-
                 if (status) {
-                    users.add(this.getUser(r, request.getClientId()));
+
+                    org.apache.custos.iam.service.UserRepresentation user = this.getUser(r, request.getClientId());
+
+                    UserSessionRepresentation sessionRepresentation = keycloakClient.getLatestSession(String.valueOf(request.getTenantId()),
+                            request.getClientId(), null, r.getUsername());
+                    if (sessionRepresentation != null) {
+                        user = user.toBuilder().setLastLoginAt(sessionRepresentation.getLastAccess()).build();
+                    } else {
+                        EventRepresentation eventRepresentation = keycloakClient.
+                                getLastLoginEvent(String.valueOf(request.getTenantId()), request.getClientId()
+                                        , r.getUsername());
+
+                        if (eventRepresentation != null) {
+                            user = user.toBuilder().setLastLoginAt(eventRepresentation.getTime()).build();
+                        }
+                    }
+
+                    users.add(user);
                 }
+
             });
             long endTime = System.currentTimeMillis();
             long total = endTime - initiationTime;
@@ -559,6 +574,57 @@ public void deleteExternalIDPLinksOfUsers(DeleteExternalIDPsRequest request,
 
     }
 
+    @Override
+    public void getExternalIDPLinksOfUsers(GetExternalIDPsRequest request, StreamObserver<GetExternalIDPsResponse> responseObserver) {
+        try {
+            long tenantId = request.getTenantId();
+            List<FederatedIdentityRepresentation> identityRepresentations = keycloakClient.getExternalIDPLinks(String.valueOf(tenantId), request.getUserId());
+            GetExternalIDPsResponse.Builder response = GetExternalIDPsResponse.newBuilder();
+            identityRepresentations.forEach(rep -> {
+                response.addIdpLinks(ExternalIDPLink.newBuilder()
+                        .setProviderAlias(rep.getIdentityProvider())
+                        .setProviderUsername(rep.getUserName())
+                        .setProviderUserId(rep.getUserId()));
+            });
+
+            responseObserver.onNext(response.build());
+            responseObserver.onCompleted();
+        } catch (Exception ex) {
+            String msg = "Error occurred while getExternalIDPLinksOfUsers" + ex;
+            LOGGER.error(msg, ex);
+            responseObserver.onError(io.grpc.Status.INTERNAL.withDescription(msg).asRuntimeException());
+        }
+    }
+
+    @Override
+    public void addExternalIDPLinksOfUsers(AddExternalIDPLinksRequest request, StreamObserver<org.apache.custos.iam.service.OperationStatus> responseObserver) {
+        try {
+            long tenantId = request.getTenantId();
+            List<ExternalIDPLink> externalIDPLinkList = request.getIdpLinksList();
+            List<FederatedIdentityRepresentation> federatedIdentityRepresentations = new ArrayList<>();
+            externalIDPLinkList.forEach(link -> {
+                FederatedIdentityRepresentation representation = new FederatedIdentityRepresentation();
+                representation.setUserId(link.getProviderUserId());
+                representation.setUserName(link.getProviderUsername());
+                representation.setIdentityProvider(link.getProviderAlias());
+                federatedIdentityRepresentations.add(representation);
+
+            });
+            keycloakClient.addExternalIDPLinks(String.valueOf(tenantId), federatedIdentityRepresentations);
+            org.apache.custos.iam.service.OperationStatus status = org.apache.custos.iam.service.OperationStatus
+                    .newBuilder()
+                    .setStatus(true)
+                    .build();
+            responseObserver.onNext(status);
+            responseObserver.onCompleted();
+        } catch (Exception ex) {
+            String msg = "Error occurred while getExternalIDPLinksOfUsers" + ex;
+            LOGGER.error(msg, ex);
+            responseObserver.onError(io.grpc.Status.INTERNAL.withDescription(msg).asRuntimeException());
+        }
+    }
+
+
     @Override
     public void updateUserProfile(UpdateUserProfileRequest request, StreamObserver<org.apache.custos.iam.service.OperationStatus> responseObserver) {
         String userId = request.getUser().getUsername() + "@" + request.getTenantId();
diff --git a/custos-core-services/iam-admin-core-service/src/main/java/org/apache/custos/iam/validator/InputValidator.java b/custos-core-services/iam-admin-core-service/src/main/java/org/apache/custos/iam/validator/InputValidator.java
index 497460827..4d856f960 100644
--- a/custos-core-services/iam-admin-core-service/src/main/java/org/apache/custos/iam/validator/InputValidator.java
+++ b/custos-core-services/iam-admin-core-service/src/main/java/org/apache/custos/iam/validator/InputValidator.java
@@ -141,6 +141,10 @@ public void validate(String methodName, Object obj) {
             case "deleteExternalIDPLinksOfUsers":
                 validateDeleteExternalIDPsLinks(obj);
                 break;
+            case "getExternalIDPLinksOfUsers":
+                validateGetExternalIDPsLinks(obj);
+                break;
+
 
             default:
 
@@ -933,4 +937,21 @@ private boolean validateDeleteExternalIDPsLinks(Object obj) {
         }
         return true;
     }
+
+    private boolean validateGetExternalIDPsLinks(Object obj) {
+        if (obj instanceof GetExternalIDPsRequest) {
+            GetExternalIDPsRequest request = (GetExternalIDPsRequest) obj;
+
+            if (request.getTenantId() == 0) {
+                throw new MissingParameterException("Tenant Id should not be null", null);
+            }
+            if (request.getUserId().isEmpty()) {
+                throw new MissingParameterException("User Id should not be null", null);
+            }
+
+        } else {
+            throw new RuntimeException("Unexpected input type for method getExternalIDPLinks");
+        }
+        return true;
+    }
 }
diff --git a/custos-core-services/iam-admin-core-service/src/main/proto/IamAdminService.proto b/custos-core-services/iam-admin-core-service/src/main/proto/IamAdminService.proto
index 418ba8fc7..77fe2bb28 100644
--- a/custos-core-services/iam-admin-core-service/src/main/proto/IamAdminService.proto
+++ b/custos-core-services/iam-admin-core-service/src/main/proto/IamAdminService.proto
@@ -412,6 +412,29 @@ message DeleteExternalIDPsRequest {
     repeated string user_id=3;
 }
 
+message GetExternalIDPsRequest {
+    int64 tenant_id= 1;
+    string client_id = 2;
+    string user_id=3;
+}
+
+
+message ExternalIDPLink {
+    string provider_alias = 1;
+    string provider_user_id =2;
+    string provider_username = 3;
+}
+
+message GetExternalIDPsResponse {
+  repeated   ExternalIDPLink idp_links = 1;
+}
+
+message AddExternalIDPLinksRequest {
+   repeated ExternalIDPLink idp_links = 1;
+   int64 tenant_id= 2;
+   string client_id = 3;
+}
+
 service IamAdminService {
 
     rpc setUPTenant (SetUpTenantRequest) returns (SetUpTenantResponse);
@@ -435,6 +458,8 @@ service IamAdminService {
     rpc grantAdminPrivilege (UserSearchRequest) returns (OperationStatus);
     rpc removeAdminPrivilege (UserSearchRequest) returns (OperationStatus);
     rpc deleteExternalIDPLinksOfUsers(DeleteExternalIDPsRequest) returns (OperationStatus);
+    rpc getExternalIDPLinksOfUsers(GetExternalIDPsRequest) returns (GetExternalIDPsResponse);
+    rpc addExternalIDPLinksOfUsers(AddExternalIDPLinksRequest) returns (OperationStatus);
 
     rpc registerAndEnableUsers (RegisterUsersRequest) returns (RegisterUsersResponse);
     rpc addUserAttributes (AddUserAttributesRequest) returns (OperationStatus);
diff --git a/custos-core-services/iam-admin-core-service/src/main/resources/keycloak-client-truststore.pkcs12 b/custos-core-services/iam-admin-core-service/src/main/resources/keycloak-client-truststore.pkcs12
index 169e2436c..6107b4610 100644
Binary files a/custos-core-services/iam-admin-core-service/src/main/resources/keycloak-client-truststore.pkcs12 and b/custos-core-services/iam-admin-core-service/src/main/resources/keycloak-client-truststore.pkcs12 differ
diff --git a/custos-core-services/identity-core-service/pom.xml b/custos-core-services/identity-core-service/pom.xml
index 16f907e1c..070617dc8 100644
--- a/custos-core-services/identity-core-service/pom.xml
+++ b/custos-core-services/identity-core-service/pom.xml
@@ -25,6 +25,7 @@
         <artifactId>custos-core-services</artifactId>
         <groupId>org.apache.custos</groupId>
         <version>1.0-SNAPSHOT</version>
+        <relativePath>../pom.xml</relativePath>
     </parent>
     <modelVersion>4.0.0</modelVersion>
 
diff --git a/custos-core-services/identity-core-service/src/main/resources/keycloak-client-truststore.pkcs12 b/custos-core-services/identity-core-service/src/main/resources/keycloak-client-truststore.pkcs12
index 169e2436c..6107b4610 100644
Binary files a/custos-core-services/identity-core-service/src/main/resources/keycloak-client-truststore.pkcs12 and b/custos-core-services/identity-core-service/src/main/resources/keycloak-client-truststore.pkcs12 differ
diff --git a/custos-core-services/resource-secret-core-service/pom.xml b/custos-core-services/resource-secret-core-service/pom.xml
index 2380ec6b2..c80b55b25 100644
--- a/custos-core-services/resource-secret-core-service/pom.xml
+++ b/custos-core-services/resource-secret-core-service/pom.xml
@@ -25,6 +25,7 @@
         <artifactId>custos-core-services</artifactId>
         <groupId>org.apache.custos</groupId>
         <version>1.0-SNAPSHOT</version>
+        <relativePath>../pom.xml</relativePath>
     </parent>
     <modelVersion>4.0.0</modelVersion>
 
diff --git a/custos-core-services/resource-secret-core-service/src/main/resources/vault-client-truststore.pkcs12 b/custos-core-services/resource-secret-core-service/src/main/resources/vault-client-truststore.pkcs12
index ec1e989cc..ebd754fc6 100644
Binary files a/custos-core-services/resource-secret-core-service/src/main/resources/vault-client-truststore.pkcs12 and b/custos-core-services/resource-secret-core-service/src/main/resources/vault-client-truststore.pkcs12 differ
diff --git a/custos-core-services/sharing-core-service/pom.xml b/custos-core-services/sharing-core-service/pom.xml
index c47183d3a..5a16d028c 100644
--- a/custos-core-services/sharing-core-service/pom.xml
+++ b/custos-core-services/sharing-core-service/pom.xml
@@ -25,6 +25,7 @@
         <artifactId>custos-core-services</artifactId>
         <groupId>org.apache.custos</groupId>
         <version>1.0-SNAPSHOT</version>
+        <relativePath>../pom.xml</relativePath>
     </parent>
     <modelVersion>4.0.0</modelVersion>
 
diff --git a/custos-core-services/sharing-core-service/src/main/java/org/apache/custos/sharing/service/SharingService.java b/custos-core-services/sharing-core-service/src/main/java/org/apache/custos/sharing/service/SharingService.java
index 60b7949c8..bb02298c6 100644
--- a/custos-core-services/sharing-core-service/src/main/java/org/apache/custos/sharing/service/SharingService.java
+++ b/custos-core-services/sharing-core-service/src/main/java/org/apache/custos/sharing/service/SharingService.java
@@ -40,6 +40,7 @@
 import java.util.HashMap;
 import java.util.List;
 import java.util.Optional;
+import java.util.concurrent.atomic.AtomicBoolean;
 
 @GRpcService
 public class SharingService extends org.apache.custos.sharing.service.SharingServiceGrpc.SharingServiceImplBase {
@@ -1261,18 +1262,23 @@ public void getAllSharings(SharingRequest request, StreamObserver<GetAllSharings
 
             });
 
+
             //TODO: replace with proper query
             sharingMetadata.forEach(shr -> {
                 if (selectedList.isEmpty()) {
                     selectedList.add(shr);
                 } else {
+                    AtomicBoolean matched = new AtomicBoolean(false);
                     new ArrayList<>(selectedList).forEach(selVar -> {
-                        if (!(shr.getEntity().getId().equals(selVar.getEntity().getId())
+                        if ((shr.getEntity().getId().equals(selVar.getEntity().getId())
                                 && shr.getOwnerId().equals(selVar.getOwnerId()) &&
                                 shr.getPermission().getId().equals(selVar.getPermission().getId()))) {
-                            selectedList.add(shr);
+                            matched.set(true);
                         }
                     });
+                    if (!matched.get()) {
+                        selectedList.add(shr);
+                    }
                 }
             });
 
diff --git a/custos-core-services/user-profile-core-service/pom.xml b/custos-core-services/user-profile-core-service/pom.xml
index 02cdadd31..9b9c65422 100644
--- a/custos-core-services/user-profile-core-service/pom.xml
+++ b/custos-core-services/user-profile-core-service/pom.xml
@@ -25,6 +25,7 @@
         <artifactId>custos-core-services</artifactId>
         <groupId>org.apache.custos</groupId>
         <version>1.0-SNAPSHOT</version>
+        <relativePath>../pom.xml</relativePath>
     </parent>
     <modelVersion>4.0.0</modelVersion>
 
diff --git a/custos-core-services/utility-services/custos-configuration-service/pom.xml b/custos-core-services/utility-services/custos-configuration-service/pom.xml
index e39d7f888..5a0deb86e 100644
--- a/custos-core-services/utility-services/custos-configuration-service/pom.xml
+++ b/custos-core-services/utility-services/custos-configuration-service/pom.xml
@@ -80,7 +80,7 @@
 <!--                             passphrase="isjarana" trust="true">-->
 <!--                        </scp>-->
 <!--                    </target>-->
-                    <skip>true</skip>
+                    <skip>false</skip>
                 </configuration>
             </plugin>
         </plugins>
diff --git a/custos-core-services/utility-services/custos-configuration-service/src/main/resources/agentManagementService.properties b/custos-core-services/utility-services/custos-configuration-service/src/main/resources/agentManagementService-dev.properties
similarity index 100%
rename from custos-core-services/utility-services/custos-configuration-service/src/main/resources/agentManagementService.properties
rename to custos-core-services/utility-services/custos-configuration-service/src/main/resources/agentManagementService-dev.properties
diff --git a/custos-core-services/utility-services/custos-configuration-service/src/main/resources/agentManagementService-production.properties b/custos-core-services/utility-services/custos-configuration-service/src/main/resources/agentManagementService-production.properties
index 3107484f5..718392e0e 100644
--- a/custos-core-services/utility-services/custos-configuration-service/src/main/resources/agentManagementService-production.properties
+++ b/custos-core-services/utility-services/custos-configuration-service/src/main/resources/agentManagementService-production.properties
@@ -37,4 +37,6 @@ cluster.management.core.service.port=7000
 resource.secret.service.dns.name=resource-secret-core-service.custos.svc.cluster.local
 resource.secret.service.port=7000
 user.profile.core.service.dns.name=user-profile-core-service.custos.svc.cluster.local
-user.profile.core.service.port=7000
\ No newline at end of file
+user.profile.core.service.port=7000
+messaging.core.service.dns.name=custos-messaging-core-service.custos.svc.cluster.local
+messaging.core.service.port=7000
\ No newline at end of file
diff --git a/custos-core-services/utility-services/custos-configuration-service/src/main/resources/agentManagementService-staging.properties b/custos-core-services/utility-services/custos-configuration-service/src/main/resources/agentManagementService-staging.properties
index b49f9d61b..2b468ae62 100644
--- a/custos-core-services/utility-services/custos-configuration-service/src/main/resources/agentManagementService-staging.properties
+++ b/custos-core-services/utility-services/custos-configuration-service/src/main/resources/agentManagementService-staging.properties
@@ -27,7 +27,7 @@ agent.profile.core.service.dns.name=agent-profile-core-service.custos.svc.cluste
 agent.profile.core.service.port=7000
 iam.admin.service.dns.name=iam-admin-core-service.custos.svc.cluster.local
 iam.admin.service.port=7000
-iam.server.url=https://service.staging.usecustos.org:30170/auth/
+iam.server.url=https://keycloak.staging.usecustos.org:30170/auth/
 federated.authentication.service.dns.name=federeted-authentication-core-service.custos.svc.cluster.local
 federated.authentication.service.port=7000
 custos.logging.core.service.dns.name=custos-logging.custos.svc.cluster.local
@@ -37,4 +37,6 @@ cluster.management.core.service.port=7000
 resource.secret.service.dns.name=resource-secret-core-service.custos.svc.cluster.local
 resource.secret.service.port=7000
 user.profile.core.service.dns.name=user-profile-core-service.custos.svc.cluster.local
-user.profile.core.service.port=7000
\ No newline at end of file
+user.profile.core.service.port=7000
+messaging.core.service.dns.name=custos-messaging-core-service.custos.svc.cluster.local
+messaging.core.service.port=7000
\ No newline at end of file
diff --git a/custos-core-services/utility-services/custos-configuration-service/src/main/resources/clusterManagementCoreService.properties b/custos-core-services/utility-services/custos-configuration-service/src/main/resources/clusterManagementCoreService-dev.properties
similarity index 100%
rename from custos-core-services/utility-services/custos-configuration-service/src/main/resources/clusterManagementCoreService.properties
rename to custos-core-services/utility-services/custos-configuration-service/src/main/resources/clusterManagementCoreService-dev.properties
diff --git a/custos-core-services/utility-services/custos-configuration-service/src/main/resources/federatedAuthenticatedCoreService.properties b/custos-core-services/utility-services/custos-configuration-service/src/main/resources/federatedAuthenticationCoreService-dev.properties
similarity index 99%
rename from custos-core-services/utility-services/custos-configuration-service/src/main/resources/federatedAuthenticatedCoreService.properties
rename to custos-core-services/utility-services/custos-configuration-service/src/main/resources/federatedAuthenticationCoreService-dev.properties
index f7d21d1b0..af7d4c2be 100644
--- a/custos-core-services/utility-services/custos-configuration-service/src/main/resources/federatedAuthenticatedCoreService.properties
+++ b/custos-core-services/utility-services/custos-configuration-service/src/main/resources/federatedAuthenticationCoreService-dev.properties
@@ -19,4 +19,4 @@
 
 ciLogon.admin.client.id=${cilogon.dev.id}
 ciLogon.admin.client.secret=${cilogon.dev.sec}
-ciLogon.admin.auth.endpoint=https://test.cilogon.org/oauth2/oidc-cm
\ No newline at end of file
+ciLogon.admin.auth.endpoint=https://test.cilogon.org/oauth2/oidc-cm
diff --git a/custos-core-services/utility-services/custos-configuration-service/src/main/resources/groupManagementService.properties b/custos-core-services/utility-services/custos-configuration-service/src/main/resources/groupManagementService-dev.properties
similarity index 100%
rename from custos-core-services/utility-services/custos-configuration-service/src/main/resources/groupManagementService.properties
rename to custos-core-services/utility-services/custos-configuration-service/src/main/resources/groupManagementService-dev.properties
diff --git a/custos-core-services/utility-services/custos-configuration-service/src/main/resources/groupManagementService-staging.properties b/custos-core-services/utility-services/custos-configuration-service/src/main/resources/groupManagementService-staging.properties
index f5ac6c2ed..e96ea44cb 100644
--- a/custos-core-services/utility-services/custos-configuration-service/src/main/resources/groupManagementService-staging.properties
+++ b/custos-core-services/utility-services/custos-configuration-service/src/main/resources/groupManagementService-staging.properties
@@ -27,7 +27,7 @@ user.profile.core.service.dns.name=user-profile-core-service.custos.svc.cluster.
 user.profile.core.service.port=7000
 iam.admin.service.dns.name=iam-admin-core-service.custos.svc.cluster.local
 iam.admin.service.port=7000
-iam.server.url=https://service.staging.usecustos.org:30170/auth/
+iam.server.url=https://keycloak.staging.usecustos.org:30170/auth/
 custos.logging.core.service.dns.name=custos-logging.custos.svc.cluster.local
 custos.logging.core.service.port=7000
 cluster.management.core.service.dns.name=cluster-management-core-service.custos.svc.cluster.local
diff --git a/custos-core-services/utility-services/custos-configuration-service/src/main/resources/iamAdminCoreService.properties b/custos-core-services/utility-services/custos-configuration-service/src/main/resources/iamAdminCoreService-dev.properties
similarity index 100%
rename from custos-core-services/utility-services/custos-configuration-service/src/main/resources/iamAdminCoreService.properties
rename to custos-core-services/utility-services/custos-configuration-service/src/main/resources/iamAdminCoreService-dev.properties
diff --git a/custos-core-services/utility-services/custos-configuration-service/src/main/resources/iamAdminCoreService-staging.properties b/custos-core-services/utility-services/custos-configuration-service/src/main/resources/iamAdminCoreService-staging.properties
index c6d22a4ed..1da5a9f59 100644
--- a/custos-core-services/utility-services/custos-configuration-service/src/main/resources/iamAdminCoreService-staging.properties
+++ b/custos-core-services/utility-services/custos-configuration-service/src/main/resources/iamAdminCoreService-staging.properties
@@ -1,7 +1,7 @@
 iam.server.client.id=admin-cli
 iam.server.truststore.path=/home/ubuntu/keystore/keycloak-client-truststore.pkcs12
 iam.server.truststore.password=keycloak
-iam.server.url=https://service.staging.usecustos.org:30170/auth/
+iam.server.url=https://keycloak.staging.usecustos.org:30170/auth/
 iam.server.admin.username=${iam.staging.username}
 iam.server.admin.password=${iam.staging.password}
 iam.server.super.admin.realm.id=master
diff --git a/custos-core-services/utility-services/custos-configuration-service/src/main/resources/identityCoreService.properties b/custos-core-services/utility-services/custos-configuration-service/src/main/resources/identityCoreService-dev.properties
similarity index 100%
rename from custos-core-services/utility-services/custos-configuration-service/src/main/resources/identityCoreService.properties
rename to custos-core-services/utility-services/custos-configuration-service/src/main/resources/identityCoreService-dev.properties
diff --git a/custos-core-services/utility-services/custos-configuration-service/src/main/resources/identityCoreService-staging.properties b/custos-core-services/utility-services/custos-configuration-service/src/main/resources/identityCoreService-staging.properties
index a3dc94a59..9cfc99d7f 100644
--- a/custos-core-services/utility-services/custos-configuration-service/src/main/resources/identityCoreService-staging.properties
+++ b/custos-core-services/utility-services/custos-configuration-service/src/main/resources/identityCoreService-staging.properties
@@ -19,7 +19,7 @@
 
 custos.identity.auth.cache.enabled=true
 custos.identity.auth.cache.size=1024
-iam.server.url=https://service.staging.usecustos.org:30170/auth/
+iam.server.url=https://keycloak.staging.usecustos.org:30170/auth/
 iam.server.truststore.path=/home/ubuntu/keystore/keycloak-client-truststore.pkcs12
 iam.server.truststore.password=keycloak
 introspection.endpoint=https://service.staging.usecustos.org/apiserver/identity-management/v1.0.0/token/introspect
diff --git a/custos-core-services/utility-services/custos-configuration-service/src/main/resources/identityManagementService.properties b/custos-core-services/utility-services/custos-configuration-service/src/main/resources/identityManagementService-dev.properties
similarity index 100%
rename from custos-core-services/utility-services/custos-configuration-service/src/main/resources/identityManagementService.properties
rename to custos-core-services/utility-services/custos-configuration-service/src/main/resources/identityManagementService-dev.properties
diff --git a/custos-core-services/utility-services/custos-configuration-service/src/main/resources/identityManagementService-staging.properties b/custos-core-services/utility-services/custos-configuration-service/src/main/resources/identityManagementService-staging.properties
index ad9bc71f4..4209726b4 100644
--- a/custos-core-services/utility-services/custos-configuration-service/src/main/resources/identityManagementService-staging.properties
+++ b/custos-core-services/utility-services/custos-configuration-service/src/main/resources/identityManagementService-staging.properties
@@ -23,7 +23,7 @@ tenant.profile.core.service.dns.name=tenant-profile-core-service.custos.svc.clus
 tenant.profile.core.service.port=7000
 credential.store.service.dns.name=credential-store-core-service.custos.svc.cluster.local
 credential.store.service.port=7000
-iam.server.url=https://service.staging.usecustos.org:30170/auth/
+iam.server.url=https://keycloak.staging.usecustos.org:30170/auth/
 user.profile.core.service.dns.name=user-profile-core-service.custos.svc.cluster.local
 user.profile.core.service.port=7000
 iam.admin.service.dns.name=iam-admin-core-service.custos.svc.cluster.local
diff --git a/custos-core-services/utility-services/custos-configuration-service/src/main/resources/logManagementService.properties b/custos-core-services/utility-services/custos-configuration-service/src/main/resources/logManagementService-dev.properties
similarity index 100%
rename from custos-core-services/utility-services/custos-configuration-service/src/main/resources/logManagementService.properties
rename to custos-core-services/utility-services/custos-configuration-service/src/main/resources/logManagementService-dev.properties
diff --git a/custos-core-services/utility-services/custos-configuration-service/src/main/resources/logManagementService-staging.properties b/custos-core-services/utility-services/custos-configuration-service/src/main/resources/logManagementService-staging.properties
index 7f601c466..1a89db5a3 100644
--- a/custos-core-services/utility-services/custos-configuration-service/src/main/resources/logManagementService-staging.properties
+++ b/custos-core-services/utility-services/custos-configuration-service/src/main/resources/logManagementService-staging.properties
@@ -29,7 +29,7 @@ identity.service.dns.name=identity-core-service.custos.svc.cluster.local
 identity.service.port=7000
 user.profile.core.service.dns.name=user-profile-core-service.custos.svc.cluster.local
 user.profile.core.service.port=7000
-iam.server.url=https://service.staging.usecustos.org:30170/auth/
+iam.server.url=https://keycloak.staging.usecustos.org:30170/auth/
 custos.logging.core.service.dns.name=custos-logging.custos.svc.cluster.local
 custos.logging.core.service.port=7000
 cluster.management.core.service.dns.name=cluster-management-core-service.custos.svc.cluster.local
diff --git a/custos-core-services/utility-services/custos-configuration-service/src/main/resources/messagingCoreService.properties b/custos-core-services/utility-services/custos-configuration-service/src/main/resources/messagingCoreService-dev.properties
similarity index 100%
rename from custos-core-services/utility-services/custos-configuration-service/src/main/resources/messagingCoreService.properties
rename to custos-core-services/utility-services/custos-configuration-service/src/main/resources/messagingCoreService-dev.properties
diff --git a/custos-core-services/utility-services/custos-configuration-service/src/main/resources/resourceSecretManagementService.properties b/custos-core-services/utility-services/custos-configuration-service/src/main/resources/resourceSecretManagementService-dev.properties
similarity index 100%
rename from custos-core-services/utility-services/custos-configuration-service/src/main/resources/resourceSecretManagementService.properties
rename to custos-core-services/utility-services/custos-configuration-service/src/main/resources/resourceSecretManagementService-dev.properties
diff --git a/custos-core-services/utility-services/custos-configuration-service/src/main/resources/resourceSecretManagementService-staging.properties b/custos-core-services/utility-services/custos-configuration-service/src/main/resources/resourceSecretManagementService-staging.properties
index 7ef9103d9..1c895e8c6 100644
--- a/custos-core-services/utility-services/custos-configuration-service/src/main/resources/resourceSecretManagementService-staging.properties
+++ b/custos-core-services/utility-services/custos-configuration-service/src/main/resources/resourceSecretManagementService-staging.properties
@@ -29,7 +29,7 @@ identity.service.dns.name=identity-core-service.custos.svc.cluster.local
 identity.service.port=7000
 user.profile.core.service.dns.name=user-profile-core-service.custos.svc.cluster.local
 user.profile.core.service.port=7000
-iam.server.url=https://service.staging.usecustos.org:30170/auth/
+iam.server.url=https://keycloak.staging.usecustos.org:30170/auth/
 cluster.management.core.service.dns.name=cluster-management-core-service.custos.svc.cluster.local
 cluster.management.core.service.port=7000
 resource.secret.service.dns.name=resource-secret-core-service.custos.svc.cluster.local
diff --git a/custos-core-services/utility-services/custos-configuration-service/src/main/resources/scimService.properties b/custos-core-services/utility-services/custos-configuration-service/src/main/resources/scimService-dev.properties
similarity index 100%
rename from custos-core-services/utility-services/custos-configuration-service/src/main/resources/scimService.properties
rename to custos-core-services/utility-services/custos-configuration-service/src/main/resources/scimService-dev.properties
diff --git a/custos-core-services/utility-services/custos-configuration-service/src/main/resources/sharingManagementService.properties b/custos-core-services/utility-services/custos-configuration-service/src/main/resources/sharingManagementService-dev.properties
similarity index 100%
rename from custos-core-services/utility-services/custos-configuration-service/src/main/resources/sharingManagementService.properties
rename to custos-core-services/utility-services/custos-configuration-service/src/main/resources/sharingManagementService-dev.properties
diff --git a/custos-core-services/utility-services/custos-configuration-service/src/main/resources/sharingManagementService-staging.properties b/custos-core-services/utility-services/custos-configuration-service/src/main/resources/sharingManagementService-staging.properties
index 84d483579..d25415f34 100644
--- a/custos-core-services/utility-services/custos-configuration-service/src/main/resources/sharingManagementService-staging.properties
+++ b/custos-core-services/utility-services/custos-configuration-service/src/main/resources/sharingManagementService-staging.properties
@@ -29,7 +29,7 @@ identity.service.dns.name=identity-core-service.custos.svc.cluster.local
 identity.service.port=7000
 user.profile.core.service.dns.name=user-profile-core-service.custos.svc.cluster.local
 user.profile.core.service.port=7000
-iam.server.url=https://service.staging.usecustos.org:30170/auth/
+iam.server.url=https://keycloak.staging.usecustos.org:30170/auth/
 sharing.core.service.dns.name=sharing-core-service.custos.svc.cluster.local
 sharing.core.service.port=7000
 custos.logging.core.service.dns.name=custos-logging.custos.svc.cluster.local
diff --git a/custos-core-services/utility-services/custos-configuration-service/src/main/resources/tenantManagementService.properties b/custos-core-services/utility-services/custos-configuration-service/src/main/resources/tenantManagementService-dev.properties
similarity index 100%
rename from custos-core-services/utility-services/custos-configuration-service/src/main/resources/tenantManagementService.properties
rename to custos-core-services/utility-services/custos-configuration-service/src/main/resources/tenantManagementService-dev.properties
diff --git a/custos-core-services/utility-services/custos-configuration-service/src/main/resources/tenantManagementService-production.properties b/custos-core-services/utility-services/custos-configuration-service/src/main/resources/tenantManagementService-production.properties
index d560fc48c..0b0f855d8 100644
--- a/custos-core-services/utility-services/custos-configuration-service/src/main/resources/tenantManagementService-production.properties
+++ b/custos-core-services/utility-services/custos-configuration-service/src/main/resources/tenantManagementService-production.properties
@@ -19,4 +19,6 @@ resource.secret.service.dns.name=resource-secret-core-service.custos.svc.cluster
 resource.secret.service.port=7000
 tenant.base.uri=https://service.staging.usecustos.org/apiserver/tenant-management/v1.0.0/oauth2/tenant
 messaging.core.service.dns.name=custos-messaging-core-service.custos.svc.cluster.local
-messaging.core.service.port=7000
\ No newline at end of file
+messaging.core.service.port=7000
+sharing.core.service.dns.name=sharing-core-service.custos.svc.cluster.local
+sharing.core.service.port=7000
\ No newline at end of file
diff --git a/custos-core-services/utility-services/custos-configuration-service/src/main/resources/tenantManagementService-staging.properties b/custos-core-services/utility-services/custos-configuration-service/src/main/resources/tenantManagementService-staging.properties
index bec2fc96c..c6e3284ae 100644
--- a/custos-core-services/utility-services/custos-configuration-service/src/main/resources/tenantManagementService-staging.properties
+++ b/custos-core-services/utility-services/custos-configuration-service/src/main/resources/tenantManagementService-staging.properties
@@ -10,7 +10,7 @@ identity.service.dns.name=identity-core-service.custos.svc.cluster.local
 identity.service.port=7000
 user.profile.core.service.dns.name=user-profile-core-service.custos.svc.cluster.local
 user.profile.core.service.port=7000
-iam.server.url=https://service.staging.usecustos.org:30170/auth/
+iam.server.url=https://keycloak.staging.usecustos.org:30170/auth/
 custos.logging.core.service.dns.name=custos-logging.custos.svc.cluster.local
 custos.logging.core.service.port=7000
 cluster.management.core.service.dns.name=cluster-management-core-service.custos.svc.cluster.local
@@ -19,4 +19,6 @@ resource.secret.service.dns.name=resource-secret-core-service.custos.svc.cluster
 resource.secret.service.port=7000
 tenant.base.uri=https://service.staging.usecustos.org/apiserver/tenant-management/v1.0.0/oauth2/tenant
 messaging.core.service.dns.name=custos-messaging-core-service.custos.svc.cluster.local
-messaging.core.service.port=7000
\ No newline at end of file
+messaging.core.service.port=7000
+sharing.core.service.dns.name=sharing-core-service.custos.svc.cluster.local
+sharing.core.service.port=7000
\ No newline at end of file
diff --git a/custos-core-services/utility-services/custos-configuration-service/src/main/resources/userManagementService.properties b/custos-core-services/utility-services/custos-configuration-service/src/main/resources/userManagementService-dev.properties
similarity index 100%
rename from custos-core-services/utility-services/custos-configuration-service/src/main/resources/userManagementService.properties
rename to custos-core-services/utility-services/custos-configuration-service/src/main/resources/userManagementService-dev.properties
diff --git a/custos-core-services/utility-services/custos-configuration-service/src/main/resources/userManagementService-staging.properties b/custos-core-services/utility-services/custos-configuration-service/src/main/resources/userManagementService-staging.properties
index 1d4ba4f1d..51774063a 100644
--- a/custos-core-services/utility-services/custos-configuration-service/src/main/resources/userManagementService-staging.properties
+++ b/custos-core-services/utility-services/custos-configuration-service/src/main/resources/userManagementService-staging.properties
@@ -27,7 +27,7 @@ user.profile.core.service.dns.name=user-profile-core-service.custos.svc.cluster.
 user.profile.core.service.port=7000
 iam.admin.service.dns.name=iam-admin-core-service.custos.svc.cluster.local
 iam.admin.service.port=7000
-iam.server.url=https://service.staging.usecustos.org:30170/auth/
+iam.server.url=https://keycloak.staging.usecustos.org:30170/auth/
 custos.logging.core.service.dns.name=custos-logging.custos.svc.cluster.local
 custos.logging.core.service.port=7000
 cluster.management.core.service.dns.name=cluster-management-core-service.custos.svc.cluster.local
diff --git a/custos-external-services-distributions/custos-keycloak/Dockerfile b/custos-external-services-distributions/custos-keycloak/Dockerfile
index f1ea2c7c7..1f3998509 100644
--- a/custos-external-services-distributions/custos-keycloak/Dockerfile
+++ b/custos-external-services-distributions/custos-keycloak/Dockerfile
@@ -1,4 +1,5 @@
 FROM quay.io/keycloak/keycloak:9.0.2
 COPY src/main/resources/standalone-ha.xml /opt/jboss/keycloak/standalone/configuration/standalone-ha.xml
+COPY src/main/resources/keycloak-metrics-spi-2.5.1.jar   /opt/jboss/keycloak/standalone/deployments/keycloak-metrics-spi-2.5.1.jar
 COPY src/main/resources/standalone.xml /opt/jboss/keycloak/standalone/configuration/standalone.xml
 COPY src/main/resources/themes  /opt/jboss/keycloak/themes/
\ No newline at end of file
diff --git a/custos-external-services-distributions/custos-keycloak/src/main/resources/keycloak-metrics-spi-2.5.1.jar b/custos-external-services-distributions/custos-keycloak/src/main/resources/keycloak-metrics-spi-2.5.1.jar
new file mode 100644
index 000000000..68d0f723c
Binary files /dev/null and b/custos-external-services-distributions/custos-keycloak/src/main/resources/keycloak-metrics-spi-2.5.1.jar differ
diff --git a/custos-federated-services-clients/pom.xml b/custos-federated-services-clients/pom.xml
index 724ea87e2..b498ca177 100644
--- a/custos-federated-services-clients/pom.xml
+++ b/custos-federated-services-clients/pom.xml
@@ -25,6 +25,7 @@
         <artifactId>custos</artifactId>
         <groupId>org.apache.custos</groupId>
         <version>1.0-SNAPSHOT</version>
+        <relativePath>../pom.xml</relativePath>
     </parent>
     <modelVersion>4.0.0</modelVersion>
 
@@ -82,7 +83,7 @@
         <dependency>
             <groupId>org.apache.custos</groupId>
             <artifactId>cluster-management-core-service-client-stub</artifactId>
-            <version>1.0-SNAPSHOT</version>
+            <version>${project.version}</version>
             <scope>compile</scope>
         </dependency>
     </dependencies>
diff --git a/custos-federated-services-clients/src/main/java/org/apache/custos/federated/services/clients/keycloak/KeycloakClient.java b/custos-federated-services-clients/src/main/java/org/apache/custos/federated/services/clients/keycloak/KeycloakClient.java
index ec6a4c31b..3d61a5fc6 100644
--- a/custos-federated-services-clients/src/main/java/org/apache/custos/federated/services/clients/keycloak/KeycloakClient.java
+++ b/custos-federated-services-clients/src/main/java/org/apache/custos/federated/services/clients/keycloak/KeycloakClient.java
@@ -37,7 +37,6 @@
 import javax.ws.rs.core.Response;
 import java.net.URI;
 import java.util.*;
-import java.util.concurrent.TimeUnit;
 import java.util.stream.Collectors;
 
 /**
@@ -867,7 +866,7 @@ public boolean deleteRealm(String realmId) {
         Keycloak client = null;
         try {
             // get client
-            LOGGER.info("IAM server URL "+ iamServerURL);
+            LOGGER.info("IAM server URL " + iamServerURL);
             client = getClient(iamServerURL, superAdminRealmID, superAdminUserName, superAdminPassword);
 
             RealmResource realmResource = client.realm(realmId);
@@ -1444,6 +1443,74 @@ public boolean deleteExternalIDPLinks(String realmId, List<String> users) {
     }
 
 
+    public List<FederatedIdentityRepresentation> getExternalIDPLinks(String realmId, String requestedUser) {
+
+        Keycloak client = null;
+        List<FederatedIdentityRepresentation> arrayList = new ArrayList<>();
+        try {
+            client = getClient(iamServerURL, superAdminRealmID, superAdminUserName, superAdminPassword);
+
+            RealmResource realmResource = client.realm(realmId);
+            List<UserRepresentation> userResourceList = client.realm(realmId).users().list();
+            userResourceList.forEach(user -> {
+                if (requestedUser.equals(user.getUsername())) {
+                    UserResource userResource = realmResource.users().get(user.getId());
+                    List<FederatedIdentityRepresentation> federatedIdentityRepresentations =
+                            userResource.getFederatedIdentity();
+                    if (federatedIdentityRepresentations != null && !federatedIdentityRepresentations.isEmpty()) {
+                        federatedIdentityRepresentations.forEach(fed -> {
+                            arrayList.add(fed);
+                        });
+                    }
+                }
+            });
+            return arrayList;
+        } catch (Exception ex) {
+            String msg = "Error occurred while deleting external IDP links of realm "
+                    + realmId + ", reason " + ex.getMessage();
+            LOGGER.error(msg, ex);
+            throw new RuntimeException(msg, ex);
+
+        } finally {
+            if (client != null) {
+                client.close();
+            }
+        }
+
+    }
+
+    public void addExternalIDPLinks(String realmId, List<FederatedIdentityRepresentation> representations) {
+
+        Keycloak client = null;
+        try {
+            client = getClient(iamServerURL, superAdminRealmID, superAdminUserName, superAdminPassword);
+            Keycloak finalClient = client;
+            if (representations != null && !representations.isEmpty()) {
+                representations.forEach(fed -> {
+                    List<UserRepresentation> userRepresentationList = finalClient.realm(realmId).users().search(fed.getUserName());
+                    userRepresentationList.forEach(user -> {
+                        UserResource userResource = finalClient.realm(realmId).users().get(user.getId());
+                        userResource.addFederatedIdentity(fed.getIdentityProvider(), fed);
+                    });
+
+                });
+            }
+
+        } catch (Exception ex) {
+            String msg = "Error occurred while adding external IDP links " +
+                    realmId + ", reason " + ex.getMessage();
+            LOGGER.error(msg, ex);
+            throw new RuntimeException(msg, ex);
+
+        } finally {
+            if (client != null) {
+                client.close();
+            }
+        }
+
+    }
+
+
     /**
      * creates groups and child groups in Keycloak
      *
@@ -1875,8 +1942,6 @@ private boolean isValidEndUser(Keycloak client, String realmId, String username)
     }
 
 
-
-
     private Keycloak getClient(String adminUrl, String realm, String loginUsername, String password) {
 
         return KeycloakUtils.getClient(adminUrl, realm, loginUsername,
diff --git a/custos-integration-core/pom.xml b/custos-integration-core/pom.xml
index 7fb086dd7..0994e6f79 100644
--- a/custos-integration-core/pom.xml
+++ b/custos-integration-core/pom.xml
@@ -25,6 +25,7 @@
         <artifactId>custos</artifactId>
         <groupId>org.apache.custos</groupId>
         <version>1.0-SNAPSHOT</version>
+        <relativePath>../pom.xml</relativePath>
     </parent>
     <modelVersion>4.0.0</modelVersion>
 
diff --git a/custos-integration-services/agent-management-service-parent/agent-management-service-sidecar/pom.xml b/custos-integration-services/agent-management-service-parent/agent-management-service-sidecar/pom.xml
index 4609d5b74..95fdbcaa2 100644
--- a/custos-integration-services/agent-management-service-parent/agent-management-service-sidecar/pom.xml
+++ b/custos-integration-services/agent-management-service-parent/agent-management-service-sidecar/pom.xml
@@ -25,6 +25,7 @@
         <artifactId>agent-management-service-parent</artifactId>
         <groupId>org.apache.custos</groupId>
         <version>1.0-SNAPSHOT</version>
+        <relativePath>../pom.xml</relativePath>
     </parent>
     <modelVersion>4.0.0</modelVersion>
 
diff --git a/custos-integration-services/agent-management-service-parent/agent-management-service/pom.xml b/custos-integration-services/agent-management-service-parent/agent-management-service/pom.xml
index 611bd16ac..31a144170 100644
--- a/custos-integration-services/agent-management-service-parent/agent-management-service/pom.xml
+++ b/custos-integration-services/agent-management-service-parent/agent-management-service/pom.xml
@@ -25,6 +25,7 @@
         <artifactId>agent-management-service-parent</artifactId>
         <groupId>org.apache.custos</groupId>
         <version>1.0-SNAPSHOT</version>
+        <relativePath>../pom.xml</relativePath>
     </parent>
     <modelVersion>4.0.0</modelVersion>
 
diff --git a/custos-integration-services/agent-management-service-parent/agent-management-service/src/main/helm/templates/ingress-grpc.yaml b/custos-integration-services/agent-management-service-parent/agent-management-service/src/main/helm/templates/ingress-grpc.yaml
index 2549ca2a9..2ac037684 100644
--- a/custos-integration-services/agent-management-service-parent/agent-management-service/src/main/helm/templates/ingress-grpc.yaml
+++ b/custos-integration-services/agent-management-service-parent/agent-management-service/src/main/helm/templates/ingress-grpc.yaml
@@ -4,7 +4,7 @@ metadata:
   annotations:
     kubernetes.io/ingress.class: "nginx"
     nginx.ingress.kubernetes.io/backend-protocol: "GRPC"
-    cert-manager.io/cluster-issuer: letsencrypt-prod
+    cert-manager.io/cluster-issuer: {{ .Values.deployment.clusterIssuer }}
   name: ${artifactId}-ingress-grpc
 spec:
   rules:
diff --git a/custos-integration-services/agent-management-service-parent/agent-management-service/src/main/helm/templates/ingress.yaml b/custos-integration-services/agent-management-service-parent/agent-management-service/src/main/helm/templates/ingress.yaml
index 640171435..865fb72ee 100644
--- a/custos-integration-services/agent-management-service-parent/agent-management-service/src/main/helm/templates/ingress.yaml
+++ b/custos-integration-services/agent-management-service-parent/agent-management-service/src/main/helm/templates/ingress.yaml
@@ -4,7 +4,7 @@ metadata:
   name: ${artifactId}-ingress
   annotations:
     nginx.ingress.kubernetes.io/rewrite-target: /agent-management/$2
-    cert-manager.io/cluster-issuer: letsencrypt-prod
+    cert-manager.io/cluster-issuer: {{ .Values.deployment.clusterIssuer }}
     kubernetes.io/ingress.class: nginx
 spec:
   rules:
diff --git a/custos-integration-services/agent-management-service-parent/agent-management-service/src/main/helm/values.yaml b/custos-integration-services/agent-management-service-parent/agent-management-service/src/main/helm/values.yaml
index 22250b6e2..a17d101eb 100644
--- a/custos-integration-services/agent-management-service-parent/agent-management-service/src/main/helm/values.yaml
+++ b/custos-integration-services/agent-management-service-parent/agent-management-service/src/main/helm/values.yaml
@@ -62,8 +62,7 @@ resources:
     #   cpu: 100m
    # memory: 150Mi
 
-nodeSelector:
-    custosServiceWorker: "enabled"
+nodeSelector: {}
 
 tolerations: []
 
@@ -71,7 +70,7 @@ affinity: {}
 
 proxy:
    repository: apachecustos/agent-management-service-sidecar
-   tag: "${project.version}
+   tag: "${project.version}"
    port: 50000
    adminport: 9901
 
@@ -86,4 +85,5 @@ readinessProbe:
   successThreshold: 1
 
 deployment:
-  host: service.staging.usecustos.org
\ No newline at end of file
+  host: "${host}"
+  clusterIssuer: "${clusterIssuer}"
\ No newline at end of file
diff --git a/custos-integration-services/agent-management-service-parent/pom.xml b/custos-integration-services/agent-management-service-parent/pom.xml
index 957d7c80c..9cf2971b2 100644
--- a/custos-integration-services/agent-management-service-parent/pom.xml
+++ b/custos-integration-services/agent-management-service-parent/pom.xml
@@ -25,6 +25,7 @@
         <artifactId>custos-integration-services</artifactId>
         <groupId>org.apache.custos</groupId>
         <version>1.0-SNAPSHOT</version>
+        <relativePath>../pom.xml</relativePath>
     </parent>
     <modelVersion>4.0.0</modelVersion>
 
diff --git a/custos-integration-services/custos-integration-services-commons/pom.xml b/custos-integration-services/custos-integration-services-commons/pom.xml
index 80f31630e..bee4d1baa 100644
--- a/custos-integration-services/custos-integration-services-commons/pom.xml
+++ b/custos-integration-services/custos-integration-services-commons/pom.xml
@@ -25,6 +25,7 @@
         <artifactId>custos-integration-services</artifactId>
         <groupId>org.apache.custos</groupId>
         <version>1.0-SNAPSHOT</version>
+        <relativePath>../pom.xml</relativePath>
     </parent>
     <modelVersion>4.0.0</modelVersion>
 
diff --git a/custos-integration-services/custos-integration-services-swagger/pom.xml b/custos-integration-services/custos-integration-services-swagger/pom.xml
index 140a5a3f2..14481352f 100644
--- a/custos-integration-services/custos-integration-services-swagger/pom.xml
+++ b/custos-integration-services/custos-integration-services-swagger/pom.xml
@@ -25,6 +25,7 @@
         <artifactId>custos-integration-services</artifactId>
         <groupId>org.apache.custos</groupId>
         <version>1.0-SNAPSHOT</version>
+        <relativePath>../pom.xml</relativePath>
     </parent>
     <modelVersion>4.0.0</modelVersion>
 
diff --git a/custos-integration-services/custos-integration-services-swagger/src/main/helm/templates/ingress.yaml b/custos-integration-services/custos-integration-services-swagger/src/main/helm/templates/ingress.yaml
index 8120c05f5..218eeb9b8 100644
--- a/custos-integration-services/custos-integration-services-swagger/src/main/helm/templates/ingress.yaml
+++ b/custos-integration-services/custos-integration-services-swagger/src/main/helm/templates/ingress.yaml
@@ -4,11 +4,11 @@ metadata:
   name: ${artifactId}-ingress
   annotations:
     nginx.ingress.kubernetes.io/rewrite-target: /$2
-    cert-manager.io/cluster-issuer: letsencrypt-prod
+    cert-manager.io/cluster-issuer: {{ .Values.deployment.clusterIssuer }}
     kubernetes.io/ingress.class: nginx
 spec:
   rules:
-    - host: custos.scigap.org
+    - host: "${host}"
       http:
         paths:
           - path: /services(/|$)(.*)
diff --git a/custos-integration-services/custos-integration-services-swagger/src/main/helm/values.yaml b/custos-integration-services/custos-integration-services-swagger/src/main/helm/values.yaml
index 396736fcd..f1b38c003 100644
--- a/custos-integration-services/custos-integration-services-swagger/src/main/helm/values.yaml
+++ b/custos-integration-services/custos-integration-services-swagger/src/main/helm/values.yaml
@@ -81,3 +81,7 @@ readinessProbe:
   initialDelaySeconds: 5
   periodSeconds: 1
   successThreshold: 1
+
+deployment:
+  host: "${host}"
+  clusterIssuer: "${clusterIssuer}"
diff --git a/custos-integration-services/custos-integration-services-swagger/src/main/resources/protos/IamAdminService.proto b/custos-integration-services/custos-integration-services-swagger/src/main/resources/protos/IamAdminService.proto
index 418ba8fc7..77fe2bb28 100644
--- a/custos-integration-services/custos-integration-services-swagger/src/main/resources/protos/IamAdminService.proto
+++ b/custos-integration-services/custos-integration-services-swagger/src/main/resources/protos/IamAdminService.proto
@@ -412,6 +412,29 @@ message DeleteExternalIDPsRequest {
     repeated string user_id=3;
 }
 
+message GetExternalIDPsRequest {
+    int64 tenant_id= 1;
+    string client_id = 2;
+    string user_id=3;
+}
+
+
+message ExternalIDPLink {
+    string provider_alias = 1;
+    string provider_user_id =2;
+    string provider_username = 3;
+}
+
+message GetExternalIDPsResponse {
+  repeated   ExternalIDPLink idp_links = 1;
+}
+
+message AddExternalIDPLinksRequest {
+   repeated ExternalIDPLink idp_links = 1;
+   int64 tenant_id= 2;
+   string client_id = 3;
+}
+
 service IamAdminService {
 
     rpc setUPTenant (SetUpTenantRequest) returns (SetUpTenantResponse);
@@ -435,6 +458,8 @@ service IamAdminService {
     rpc grantAdminPrivilege (UserSearchRequest) returns (OperationStatus);
     rpc removeAdminPrivilege (UserSearchRequest) returns (OperationStatus);
     rpc deleteExternalIDPLinksOfUsers(DeleteExternalIDPsRequest) returns (OperationStatus);
+    rpc getExternalIDPLinksOfUsers(GetExternalIDPsRequest) returns (GetExternalIDPsResponse);
+    rpc addExternalIDPLinksOfUsers(AddExternalIDPLinksRequest) returns (OperationStatus);
 
     rpc registerAndEnableUsers (RegisterUsersRequest) returns (RegisterUsersResponse);
     rpc addUserAttributes (AddUserAttributesRequest) returns (OperationStatus);
diff --git a/custos-integration-services/custos-integration-services-swagger/src/main/resources/protos/IdentityManagementService.proto b/custos-integration-services/custos-integration-services-swagger/src/main/resources/protos/IdentityManagementService.proto
index 1a1c75d6c..47e2453ad 100644
--- a/custos-integration-services/custos-integration-services-swagger/src/main/resources/protos/IdentityManagementService.proto
+++ b/custos-integration-services/custos-integration-services-swagger/src/main/resources/protos/IdentityManagementService.proto
@@ -81,7 +81,7 @@ service IdentityManagementService {
 
     rpc isAuthenticated (org.apache.custos.identity.service.AuthToken) returns (org.apache.custos.identity.service.IsAuthenticatedResponse) {
         option (google.api.http) = {
-           get: "/identity-management/v1.0.0/authenticate/status"
+           post: "/identity-management/v1.0.0/authenticate/status"
          };
     }
 
diff --git a/custos-integration-services/custos-integration-services-swagger/src/main/resources/protos/UserManagementService.proto b/custos-integration-services/custos-integration-services-swagger/src/main/resources/protos/UserManagementService.proto
index b028e653c..9d1a3376c 100644
--- a/custos-integration-services/custos-integration-services-swagger/src/main/resources/protos/UserManagementService.proto
+++ b/custos-integration-services/custos-integration-services-swagger/src/main/resources/protos/UserManagementService.proto
@@ -145,6 +145,19 @@ service UserManagementService {
          };
     }
 
+    rpc addExternalIDPsOfUsers (org.apache.custos.iam.service.AddExternalIDPLinksRequest) returns (org.apache.custos.iam.service.OperationStatus) {
+        option (google.api.http) = {
+           post: "/user-management/v1.0.0/users/federatedIDPs"
+         };
+    }
+
+
+    rpc getExternalIDPsOfUsers (org.apache.custos.iam.service.GetExternalIDPsRequest) returns (org.apache.custos.iam.service.GetExternalIDPsResponse) {
+        option (google.api.http) = {
+           get: "/user-management/v1.0.0/users/federatedIDPs"
+         };
+    }
+
     rpc addRolesToUsers (org.apache.custos.iam.service.AddUserRolesRequest) returns (org.apache.custos.iam.service.OperationStatus) {
         option (google.api.http) = {
            post: "/user-management/v1.0.0/users/roles"
diff --git a/custos-integration-services/group-management-service-parent/group-management-service-sidecar/pom.xml b/custos-integration-services/group-management-service-parent/group-management-service-sidecar/pom.xml
index 324bfe2da..a5e9e4d5a 100644
--- a/custos-integration-services/group-management-service-parent/group-management-service-sidecar/pom.xml
+++ b/custos-integration-services/group-management-service-parent/group-management-service-sidecar/pom.xml
@@ -25,6 +25,7 @@
         <artifactId>group-management-service-parent</artifactId>
         <groupId>org.apache.custos</groupId>
         <version>1.0-SNAPSHOT</version>
+        <relativePath>../pom.xml</relativePath>
     </parent>
     <modelVersion>4.0.0</modelVersion>
 
diff --git a/custos-integration-services/group-management-service-parent/group-management-service/pom.xml b/custos-integration-services/group-management-service-parent/group-management-service/pom.xml
index 7678ff97b..a15f48590 100644
--- a/custos-integration-services/group-management-service-parent/group-management-service/pom.xml
+++ b/custos-integration-services/group-management-service-parent/group-management-service/pom.xml
@@ -25,6 +25,7 @@
         <artifactId>group-management-service-parent</artifactId>
         <groupId>org.apache.custos</groupId>
         <version>1.0-SNAPSHOT</version>
+        <relativePath>../pom.xml</relativePath>
     </parent>
     <modelVersion>4.0.0</modelVersion>
 
diff --git a/custos-integration-services/group-management-service-parent/group-management-service/src/main/helm/templates/ingress-grpc.yaml b/custos-integration-services/group-management-service-parent/group-management-service/src/main/helm/templates/ingress-grpc.yaml
index 8fc381067..bbb9056e6 100644
--- a/custos-integration-services/group-management-service-parent/group-management-service/src/main/helm/templates/ingress-grpc.yaml
+++ b/custos-integration-services/group-management-service-parent/group-management-service/src/main/helm/templates/ingress-grpc.yaml
@@ -4,7 +4,7 @@ metadata:
   annotations:
     kubernetes.io/ingress.class: "nginx"
     nginx.ingress.kubernetes.io/backend-protocol: "GRPC"
-    cert-manager.io/cluster-issuer: letsencrypt-prod
+    cert-manager.io/cluster-issuer: {{ .Values.deployment.clusterIssuer }}
   name: ${artifactId}-ingress-grpc
 spec:
   rules:
diff --git a/custos-integration-services/group-management-service-parent/group-management-service/src/main/helm/templates/ingress.yaml b/custos-integration-services/group-management-service-parent/group-management-service/src/main/helm/templates/ingress.yaml
index 558bc3e80..2b2099a27 100644
--- a/custos-integration-services/group-management-service-parent/group-management-service/src/main/helm/templates/ingress.yaml
+++ b/custos-integration-services/group-management-service-parent/group-management-service/src/main/helm/templates/ingress.yaml
@@ -4,7 +4,7 @@ metadata:
   name: ${artifactId}-ingress
   annotations:
     nginx.ingress.kubernetes.io/rewrite-target: /group-management/$2
-    cert-manager.io/cluster-issuer: letsencrypt-prod
+    cert-manager.io/cluster-issuer: {{ .Values.deployment.clusterIssuer }}
     kubernetes.io/ingress.class: nginx
 spec:
   rules:
diff --git a/custos-integration-services/group-management-service-parent/group-management-service/src/main/helm/values.yaml b/custos-integration-services/group-management-service-parent/group-management-service/src/main/helm/values.yaml
index c46834f1b..e406f93c2 100644
--- a/custos-integration-services/group-management-service-parent/group-management-service/src/main/helm/values.yaml
+++ b/custos-integration-services/group-management-service-parent/group-management-service/src/main/helm/values.yaml
@@ -50,20 +50,19 @@ ingress:
   #    hosts:
   #      - chart-example.local
 
-resources:
+resources: {}
   # We usually recommend not to specify default resources and to leave this as a conscious
   # choice for the user. This also increases chances charts run on environments with little
   # resources, such as Minikube. If you do want to specify resources, uncomment the following
   # lines, adjust them as necessary, and remove the curly braces after 'resources:'.
-  limits:
-    #   cpu: 100m
-   # memory: 150Mi
-  requests:
-    #   cpu: 100m
-   # memory: 150Mi
+  # limits:
+  #   cpu: 100m
+  #   memory: 128Mi
+  # requests:
+  #   cpu: 100m
+  #   memory: 128Mi
 
-nodeSelector:
-    custosServiceWorker: "enabled"
+nodeSelector: {}
 
 tolerations: []
 
@@ -71,7 +70,7 @@ affinity: {}
 
 proxy:
    repository: apachecustos/group-management-service-sidecar
-   tag: "${project.version}
+   tag: "${project.version}"
    port: 50000
    adminport: 9901
 
@@ -85,4 +84,5 @@ readinessProbe:
   successThreshold: 1
 
 deployment:
-  host: service.staging.usecustos.org
\ No newline at end of file
+  host: "${host}"
+  clusterIssuer: "${clusterIssuer}"
\ No newline at end of file
diff --git a/custos-integration-services/group-management-service-parent/pom.xml b/custos-integration-services/group-management-service-parent/pom.xml
index c0151ceea..13cbf9315 100644
--- a/custos-integration-services/group-management-service-parent/pom.xml
+++ b/custos-integration-services/group-management-service-parent/pom.xml
@@ -25,6 +25,7 @@
         <artifactId>custos-integration-services</artifactId>
         <groupId>org.apache.custos</groupId>
         <version>1.0-SNAPSHOT</version>
+        <relativePath>../pom.xml</relativePath>
     </parent>
     <modelVersion>4.0.0</modelVersion>
 
diff --git a/custos-integration-services/identity-management-service-parent/identity-management-service-sidecar/pom.xml b/custos-integration-services/identity-management-service-parent/identity-management-service-sidecar/pom.xml
index 13472578d..aca5af45d 100644
--- a/custos-integration-services/identity-management-service-parent/identity-management-service-sidecar/pom.xml
+++ b/custos-integration-services/identity-management-service-parent/identity-management-service-sidecar/pom.xml
@@ -25,6 +25,7 @@
         <artifactId>identity-management-service-parent</artifactId>
         <groupId>org.apache.custos</groupId>
         <version>1.0-SNAPSHOT</version>
+        <relativePath>../pom.xml</relativePath>
     </parent>
     <modelVersion>4.0.0</modelVersion>
 
diff --git a/custos-integration-services/identity-management-service-parent/identity-management-service-sidecar/src/main/resources/identity-management-service.pb b/custos-integration-services/identity-management-service-parent/identity-management-service-sidecar/src/main/resources/identity-management-service.pb
index 9a003131f..52f9471e9 100644
Binary files a/custos-integration-services/identity-management-service-parent/identity-management-service-sidecar/src/main/resources/identity-management-service.pb and b/custos-integration-services/identity-management-service-parent/identity-management-service-sidecar/src/main/resources/identity-management-service.pb differ
diff --git a/custos-integration-services/identity-management-service-parent/identity-management-service/pom.xml b/custos-integration-services/identity-management-service-parent/identity-management-service/pom.xml
index aeeb8ba4b..55c373069 100644
--- a/custos-integration-services/identity-management-service-parent/identity-management-service/pom.xml
+++ b/custos-integration-services/identity-management-service-parent/identity-management-service/pom.xml
@@ -25,6 +25,7 @@
         <artifactId>identity-management-service-parent</artifactId>
         <groupId>org.apache.custos</groupId>
         <version>1.0-SNAPSHOT</version>
+        <relativePath>../pom.xml</relativePath>
     </parent>
     <modelVersion>4.0.0</modelVersion>
 
diff --git a/custos-integration-services/identity-management-service-parent/identity-management-service/src/main/helm/templates/deployment.yaml b/custos-integration-services/identity-management-service-parent/identity-management-service/src/main/helm/templates/deployment.yaml
index 668c290e3..4ba779eeb 100644
--- a/custos-integration-services/identity-management-service-parent/identity-management-service/src/main/helm/templates/deployment.yaml
+++ b/custos-integration-services/identity-management-service-parent/identity-management-service/src/main/helm/templates/deployment.yaml
@@ -17,7 +17,7 @@ spec:
   template:
     metadata:
       annotations:
-        linkerd.io/inject: enabled
+#        linkerd.io/inject: enabled
       labels:
         app.kubernetes.io/name: {{ include "helm.name" . }}
         app.kubernetes.io/instance: {{ .Release.Name }}
diff --git a/custos-integration-services/identity-management-service-parent/identity-management-service/src/main/helm/templates/ingress-grpc.yaml b/custos-integration-services/identity-management-service-parent/identity-management-service/src/main/helm/templates/ingress-grpc.yaml
index 86677aed1..7af38aa2a 100644
--- a/custos-integration-services/identity-management-service-parent/identity-management-service/src/main/helm/templates/ingress-grpc.yaml
+++ b/custos-integration-services/identity-management-service-parent/identity-management-service/src/main/helm/templates/ingress-grpc.yaml
@@ -4,7 +4,7 @@ metadata:
   annotations:
     kubernetes.io/ingress.class: "nginx"
     nginx.ingress.kubernetes.io/backend-protocol: "GRPC"
-    cert-manager.io/cluster-issuer: letsencrypt-prod
+    cert-manager.io/cluster-issuer: {{ .Values.deployment.clusterIssuer }}
   name: ${artifactId}-ingress-grpc
 spec:
   rules:
diff --git a/custos-integration-services/identity-management-service-parent/identity-management-service/src/main/helm/templates/ingress.yaml b/custos-integration-services/identity-management-service-parent/identity-management-service/src/main/helm/templates/ingress.yaml
index ad765da13..e86c23730 100644
--- a/custos-integration-services/identity-management-service-parent/identity-management-service/src/main/helm/templates/ingress.yaml
+++ b/custos-integration-services/identity-management-service-parent/identity-management-service/src/main/helm/templates/ingress.yaml
@@ -4,7 +4,7 @@ metadata:
   name: ${artifactId}-ingress
   annotations:
     nginx.ingress.kubernetes.io/rewrite-target: /identity-management/$2
-    cert-manager.io/cluster-issuer: letsencrypt-prod
+    cert-manager.io/cluster-issuer: {{ .Values.deployment.clusterIssuer }}
     kubernetes.io/ingress.class: nginx
 spec:
   rules:
diff --git a/custos-integration-services/identity-management-service-parent/identity-management-service/src/main/helm/values.yaml b/custos-integration-services/identity-management-service-parent/identity-management-service/src/main/helm/values.yaml
index bdd7a24e5..082a05ff5 100644
--- a/custos-integration-services/identity-management-service-parent/identity-management-service/src/main/helm/values.yaml
+++ b/custos-integration-services/identity-management-service-parent/identity-management-service/src/main/helm/values.yaml
@@ -50,20 +50,19 @@ ingress:
   #    hosts:
   #      - chart-example.local
 
-resources:
+resources: {}
   # We usually recommend not to specify default resources and to leave this as a conscious
   # choice for the user. This also increases chances charts run on environments with little
   # resources, such as Minikube. If you do want to specify resources, uncomment the following
   # lines, adjust them as necessary, and remove the curly braces after 'resources:'.
-  limits:
-    #   cpu: 100m
-   # memory: 150Mi
-  requests:
-    #   cpu: 100m
-   # memory: 150Mi
+  # limits:
+  #   cpu: 100m
+  #   memory: 128Mi
+  # requests:
+  #   cpu: 100m
+  #   memory: 128Mi
 
-nodeSelector:
-    custosServiceWorker: "enabled"
+nodeSelector: {}
 
 tolerations: []
 
@@ -71,7 +70,7 @@ affinity: {}
 
 proxy:
    repository: apachecustos/identity-management-service-sidecar
-   tag: "${project.version}
+   tag: "${project.version}"
    port: 50000
    adminport: 9901
 
@@ -86,4 +85,5 @@ readinessProbe:
   successThreshold: 1
 
 deployment:
-  host: service.staging.usecustos.org
\ No newline at end of file
+  host: "${host}"
+  clusterIssuer: "${clusterIssuer}"
\ No newline at end of file
diff --git a/custos-integration-services/identity-management-service-parent/identity-management-service/src/main/java/org/apache/custos/identity/management/interceptors/AuthInterceptorImpl.java b/custos-integration-services/identity-management-service-parent/identity-management-service/src/main/java/org/apache/custos/identity/management/interceptors/AuthInterceptorImpl.java
index b00bc2b43..1691f30e8 100644
--- a/custos-integration-services/identity-management-service-parent/identity-management-service/src/main/java/org/apache/custos/identity/management/interceptors/AuthInterceptorImpl.java
+++ b/custos-integration-services/identity-management-service-parent/identity-management-service/src/main/java/org/apache/custos/identity/management/interceptors/AuthInterceptorImpl.java
@@ -57,6 +57,7 @@ public AuthInterceptorImpl(CredentialStoreServiceClient credentialStoreServiceCl
     @Override
     public <ReqT> ReqT intercept(String method, Metadata headers, ReqT reqT) {
 
+        LOGGER.info("request received ....." + method);
         if (method.equals("authorize") || method.equals("getAgentToken") || method.equals("endAgentSession")) {
             return reqT;
         }
diff --git a/custos-integration-services/identity-management-service-parent/identity-management-service/src/main/java/org/apache/custos/identity/management/service/IdentityManagementService.java b/custos-integration-services/identity-management-service-parent/identity-management-service/src/main/java/org/apache/custos/identity/management/service/IdentityManagementService.java
index b2efea65a..2e45e7f7b 100644
--- a/custos-integration-services/identity-management-service-parent/identity-management-service/src/main/java/org/apache/custos/identity/management/service/IdentityManagementService.java
+++ b/custos-integration-services/identity-management-service-parent/identity-management-service/src/main/java/org/apache/custos/identity/management/service/IdentityManagementService.java
@@ -270,7 +270,7 @@ public void token(GetTokenRequest request, StreamObserver<Struct> responseObserv
     @Override
     public void getOIDCConfiguration(GetOIDCConfiguration request, StreamObserver<Struct> responseObserver) {
         try {
-            LOGGER.debug("Request received  to fetch OIDC configuration " + request.getTenantId());
+            LOGGER.info("Request received  to fetch OIDC configuration " + request.getTenantId());
 
             String clientId = request.getClientId();
 
diff --git a/custos-integration-services/identity-management-service-parent/identity-management-service/src/main/proto/IdentityManagementService.proto b/custos-integration-services/identity-management-service-parent/identity-management-service/src/main/proto/IdentityManagementService.proto
index 1a1c75d6c..47e2453ad 100644
--- a/custos-integration-services/identity-management-service-parent/identity-management-service/src/main/proto/IdentityManagementService.proto
+++ b/custos-integration-services/identity-management-service-parent/identity-management-service/src/main/proto/IdentityManagementService.proto
@@ -81,7 +81,7 @@ service IdentityManagementService {
 
     rpc isAuthenticated (org.apache.custos.identity.service.AuthToken) returns (org.apache.custos.identity.service.IsAuthenticatedResponse) {
         option (google.api.http) = {
-           get: "/identity-management/v1.0.0/authenticate/status"
+           post: "/identity-management/v1.0.0/authenticate/status"
          };
     }
 
diff --git a/custos-integration-services/identity-management-service-parent/pom.xml b/custos-integration-services/identity-management-service-parent/pom.xml
index 5f83745b1..db8cd2ab9 100644
--- a/custos-integration-services/identity-management-service-parent/pom.xml
+++ b/custos-integration-services/identity-management-service-parent/pom.xml
@@ -25,6 +25,7 @@
         <artifactId>custos-integration-services</artifactId>
         <groupId>org.apache.custos</groupId>
         <version>1.0-SNAPSHOT</version>
+        <relativePath>../pom.xml</relativePath>
     </parent>
     <modelVersion>4.0.0</modelVersion>
 
diff --git a/custos-integration-services/log-management-service-parent/log-management-service-sidecar/pom.xml b/custos-integration-services/log-management-service-parent/log-management-service-sidecar/pom.xml
index 49911b6c8..e9aaa49c8 100644
--- a/custos-integration-services/log-management-service-parent/log-management-service-sidecar/pom.xml
+++ b/custos-integration-services/log-management-service-parent/log-management-service-sidecar/pom.xml
@@ -25,6 +25,7 @@
         <artifactId>log-management-service-parent</artifactId>
         <groupId>org.apache.custos</groupId>
         <version>1.0-SNAPSHOT</version>
+        <relativePath>../pom.xml</relativePath>
     </parent>
     <modelVersion>4.0.0</modelVersion>
 
diff --git a/custos-integration-services/log-management-service-parent/log-management-service/pom.xml b/custos-integration-services/log-management-service-parent/log-management-service/pom.xml
index 90d38f8af..f056c04fb 100644
--- a/custos-integration-services/log-management-service-parent/log-management-service/pom.xml
+++ b/custos-integration-services/log-management-service-parent/log-management-service/pom.xml
@@ -25,6 +25,7 @@
         <artifactId>log-management-service-parent</artifactId>
         <groupId>org.apache.custos</groupId>
         <version>1.0-SNAPSHOT</version>
+        <relativePath>../pom.xml</relativePath>
     </parent>
     <modelVersion>4.0.0</modelVersion>
 
@@ -141,7 +142,7 @@
         <dependency>
             <groupId>org.apache.custos</groupId>
             <artifactId>custos-logging-client-stub</artifactId>
-            <version>1.0-SNAPSHOT</version>
+            <version>${project.version}</version>
             <scope>compile</scope>
         </dependency>
 
diff --git a/custos-integration-services/log-management-service-parent/log-management-service/src/main/helm/templates/ingress-grpc.yaml b/custos-integration-services/log-management-service-parent/log-management-service/src/main/helm/templates/ingress-grpc.yaml
index 0bd071a26..e2463ae97 100644
--- a/custos-integration-services/log-management-service-parent/log-management-service/src/main/helm/templates/ingress-grpc.yaml
+++ b/custos-integration-services/log-management-service-parent/log-management-service/src/main/helm/templates/ingress-grpc.yaml
@@ -4,7 +4,7 @@ metadata:
   annotations:
     kubernetes.io/ingress.class: "nginx"
     nginx.ingress.kubernetes.io/backend-protocol: "GRPC"
-    cert-manager.io/cluster-issuer: letsencrypt-prod
+    cert-manager.io/cluster-issuer: {{ .Values.deployment.clusterIssuer }}
   name: ${artifactId}-ingress-grpc
 spec:
   rules:
diff --git a/custos-integration-services/log-management-service-parent/log-management-service/src/main/helm/templates/ingress.yaml b/custos-integration-services/log-management-service-parent/log-management-service/src/main/helm/templates/ingress.yaml
index 388f28d66..93b4dbd04 100644
--- a/custos-integration-services/log-management-service-parent/log-management-service/src/main/helm/templates/ingress.yaml
+++ b/custos-integration-services/log-management-service-parent/log-management-service/src/main/helm/templates/ingress.yaml
@@ -4,7 +4,7 @@ metadata:
   name: ${artifactId}-ingress
   annotations:
     nginx.ingress.kubernetes.io/rewrite-target: /log-management/$2
-    cert-manager.io/cluster-issuer: letsencrypt-prod
+    cert-manager.io/cluster-issuer: {{ .Values.deployment.clusterIssuer }}
     kubernetes.io/ingress.class: nginx
 spec:
   rules:
diff --git a/custos-integration-services/log-management-service-parent/log-management-service/src/main/helm/values.yaml b/custos-integration-services/log-management-service-parent/log-management-service/src/main/helm/values.yaml
index 5349d0e33..82fe6fa32 100644
--- a/custos-integration-services/log-management-service-parent/log-management-service/src/main/helm/values.yaml
+++ b/custos-integration-services/log-management-service-parent/log-management-service/src/main/helm/values.yaml
@@ -50,20 +50,19 @@ ingress:
   #    hosts:
   #      - chart-example.local
 
-resources:
+resources: {}
   # We usually recommend not to specify default resources and to leave this as a conscious
   # choice for the user. This also increases chances charts run on environments with little
   # resources, such as Minikube. If you do want to specify resources, uncomment the following
   # lines, adjust them as necessary, and remove the curly braces after 'resources:'.
-  limits:
-    #   cpu: 100m
-   # memory: 150Mi
-  requests:
-    #   cpu: 100m
-   # memory: 150Mi
+  # limits:
+  #   cpu: 100m
+  #   memory: 128Mi
+  # requests:
+  #   cpu: 100m
+  #   memory: 128Mi
 
-nodeSelector:
-    custosServiceWorker: "enabled"
+nodeSelector: {}
 
 tolerations: []
 
@@ -76,7 +75,7 @@ role:
 
 proxy:
    repository: apachecustos/log-management-service-sidecar
-   tag: "${project.version}
+   tag: "${project.version}"
    port: 50000
    webport: 50001
    adminport: 9901
@@ -92,4 +91,5 @@ readinessProbe:
   successThreshold: 1
 
 deployment:
-  host: service.staging.usecustos.org
\ No newline at end of file
+  host: "${host}"
+  clusterIssuer: "${clusterIssuer}"
\ No newline at end of file
diff --git a/custos-integration-services/log-management-service-parent/pom.xml b/custos-integration-services/log-management-service-parent/pom.xml
index 745aae805..3268c1fba 100644
--- a/custos-integration-services/log-management-service-parent/pom.xml
+++ b/custos-integration-services/log-management-service-parent/pom.xml
@@ -25,6 +25,7 @@
         <artifactId>custos-integration-services</artifactId>
         <groupId>org.apache.custos</groupId>
         <version>1.0-SNAPSHOT</version>
+        <relativePath>../pom.xml</relativePath>
     </parent>
     <modelVersion>4.0.0</modelVersion>
 
diff --git a/custos-integration-services/pom.xml b/custos-integration-services/pom.xml
index 47fc27888..3276e263c 100644
--- a/custos-integration-services/pom.xml
+++ b/custos-integration-services/pom.xml
@@ -25,6 +25,7 @@
         <artifactId>custos</artifactId>
         <groupId>org.apache.custos</groupId>
         <version>1.0-SNAPSHOT</version>
+        <relativePath>../pom.xml</relativePath>
     </parent>
     <modelVersion>4.0.0</modelVersion>
     <artifactId>custos-integration-services</artifactId>
diff --git a/custos-integration-services/resource-secret-management-service-parent/pom.xml b/custos-integration-services/resource-secret-management-service-parent/pom.xml
index a3fe1434a..da6811d01 100644
--- a/custos-integration-services/resource-secret-management-service-parent/pom.xml
+++ b/custos-integration-services/resource-secret-management-service-parent/pom.xml
@@ -25,6 +25,7 @@
         <artifactId>custos-integration-services</artifactId>
         <groupId>org.apache.custos</groupId>
         <version>1.0-SNAPSHOT</version>
+        <relativePath>../pom.xml</relativePath>
     </parent>
     <modelVersion>4.0.0</modelVersion>
 
diff --git a/custos-integration-services/resource-secret-management-service-parent/resource-secret-management-service-sidecar/pom.xml b/custos-integration-services/resource-secret-management-service-parent/resource-secret-management-service-sidecar/pom.xml
index e9705de98..0703bdbc7 100644
--- a/custos-integration-services/resource-secret-management-service-parent/resource-secret-management-service-sidecar/pom.xml
+++ b/custos-integration-services/resource-secret-management-service-parent/resource-secret-management-service-sidecar/pom.xml
@@ -25,6 +25,7 @@
         <artifactId>resource-secret-management-service-parent</artifactId>
         <groupId>org.apache.custos</groupId>
         <version>1.0-SNAPSHOT</version>
+        <relativePath>../pom.xml</relativePath>
     </parent>
     <modelVersion>4.0.0</modelVersion>
 
diff --git a/custos-integration-services/resource-secret-management-service-parent/resource-secret-management-service/pom.xml b/custos-integration-services/resource-secret-management-service-parent/resource-secret-management-service/pom.xml
index b5638519a..54b40105c 100644
--- a/custos-integration-services/resource-secret-management-service-parent/resource-secret-management-service/pom.xml
+++ b/custos-integration-services/resource-secret-management-service-parent/resource-secret-management-service/pom.xml
@@ -25,6 +25,7 @@
         <artifactId>resource-secret-management-service-parent</artifactId>
         <groupId>org.apache.custos</groupId>
         <version>1.0-SNAPSHOT</version>
+        <relativePath>../pom.xml</relativePath>
     </parent>
     <modelVersion>4.0.0</modelVersion>
 
diff --git a/custos-integration-services/resource-secret-management-service-parent/resource-secret-management-service/src/main/helm/templates/ingress-grpc.yaml b/custos-integration-services/resource-secret-management-service-parent/resource-secret-management-service/src/main/helm/templates/ingress-grpc.yaml
index 3e1ed8524..adfa02bdc 100644
--- a/custos-integration-services/resource-secret-management-service-parent/resource-secret-management-service/src/main/helm/templates/ingress-grpc.yaml
+++ b/custos-integration-services/resource-secret-management-service-parent/resource-secret-management-service/src/main/helm/templates/ingress-grpc.yaml
@@ -4,7 +4,7 @@ metadata:
   annotations:
     kubernetes.io/ingress.class: "nginx"
     nginx.ingress.kubernetes.io/backend-protocol: "GRPC"
-    cert-manager.io/cluster-issuer: letsencrypt-prod
+    cert-manager.io/cluster-issuer: {{ .Values.deployment.clusterIssuer }}
   name: ${artifactId}-ingress-grpc
 spec:
   rules:
diff --git a/custos-integration-services/resource-secret-management-service-parent/resource-secret-management-service/src/main/helm/templates/ingress.yaml b/custos-integration-services/resource-secret-management-service-parent/resource-secret-management-service/src/main/helm/templates/ingress.yaml
index 5f7b01537..4ff4ace0d 100644
--- a/custos-integration-services/resource-secret-management-service-parent/resource-secret-management-service/src/main/helm/templates/ingress.yaml
+++ b/custos-integration-services/resource-secret-management-service-parent/resource-secret-management-service/src/main/helm/templates/ingress.yaml
@@ -4,7 +4,7 @@ metadata:
   name: ${artifactId}-ingress
   annotations:
     nginx.ingress.kubernetes.io/rewrite-target: /resource-secret-management/$2
-    cert-manager.io/cluster-issuer: letsencrypt-prod
+    cert-manager.io/cluster-issuer: {{ .Values.deployment.clusterIssuer }}
     kubernetes.io/ingress.class: nginx
 spec:
   rules:
diff --git a/custos-integration-services/resource-secret-management-service-parent/resource-secret-management-service/src/main/helm/values.yaml b/custos-integration-services/resource-secret-management-service-parent/resource-secret-management-service/src/main/helm/values.yaml
index 6460ccc59..f5e55d39c 100644
--- a/custos-integration-services/resource-secret-management-service-parent/resource-secret-management-service/src/main/helm/values.yaml
+++ b/custos-integration-services/resource-secret-management-service-parent/resource-secret-management-service/src/main/helm/values.yaml
@@ -50,20 +50,19 @@ ingress:
   #    hosts:
   #      - chart-example.local
 
-resources:
+resources: {}
   # We usually recommend not to specify default resources and to leave this as a conscious
   # choice for the user. This also increases chances charts run on environments with little
   # resources, such as Minikube. If you do want to specify resources, uncomment the following
   # lines, adjust them as necessary, and remove the curly braces after 'resources:'.
-  limits:
-    #   cpu: 100m
-   # memory: 150Mi
-  requests:
-    #   cpu: 100m
-   # memory: 150Mi
+  # limits:
+  #   cpu: 100m
+  #   memory: 128Mi
+  # requests:
+  #   cpu: 100m
+  #   memory: 128Mi
 
-nodeSelector:
-    custosServiceWorker: "enabled"
+nodeSelector: {}
 
 tolerations: []
 
@@ -76,7 +75,7 @@ role:
 
 proxy:
    repository: apachecustos/resource-secret-management-service-sidecar
-   tag: "${project.version}
+   tag: "${project.version}"
    port: 50000
    webport: 50001
    adminport: 9901
@@ -91,4 +90,5 @@ readinessProbe:
   successThreshold: 1
 
 deployment:
-  host: service.staging.usecustos.org
\ No newline at end of file
+  host: "${host}"
+  clusterIssuer: "${clusterIssuer}"
\ No newline at end of file
diff --git a/custos-integration-services/scim-service/pom.xml b/custos-integration-services/scim-service/pom.xml
index 6aeb85d3f..bf1611a57 100644
--- a/custos-integration-services/scim-service/pom.xml
+++ b/custos-integration-services/scim-service/pom.xml
@@ -25,6 +25,7 @@
         <artifactId>custos-integration-services</artifactId>
         <groupId>org.apache.custos</groupId>
         <version>1.0-SNAPSHOT</version>
+        <relativePath>../pom.xml</relativePath>
     </parent>
     <modelVersion>4.0.0</modelVersion>
 
diff --git a/custos-integration-services/scim-service/src/main/helm/templates/ingress.yaml b/custos-integration-services/scim-service/src/main/helm/templates/ingress.yaml
index dd268d597..812407b06 100644
--- a/custos-integration-services/scim-service/src/main/helm/templates/ingress.yaml
+++ b/custos-integration-services/scim-service/src/main/helm/templates/ingress.yaml
@@ -5,7 +5,7 @@ metadata:
   annotations:
     nginx.ingress.kubernetes.io/rewrite-target: /$2
     kubernetes.io/ingress.class: "nginx"
-    cert-manager.io/cluster-issuer: letsencrypt-prod
+    cert-manager.io/cluster-issuer: {{ .Values.deployment.clusterIssuer }}
 spec:
   rules:
     - host: {{ .Values.deployment.host }}
diff --git a/custos-integration-services/scim-service/src/main/helm/values.yaml b/custos-integration-services/scim-service/src/main/helm/values.yaml
index 7cfde9718..c5595ba24 100644
--- a/custos-integration-services/scim-service/src/main/helm/values.yaml
+++ b/custos-integration-services/scim-service/src/main/helm/values.yaml
@@ -50,20 +50,19 @@ ingress:
   #    hosts:
   #      - chart-example.local
 
-resources:
+resources: {}
   # We usually recommend not to specify default resources and to leave this as a conscious
   # choice for the user. This also increases chances charts run on environments with little
   # resources, such as Minikube. If you do want to specify resources, uncomment the following
   # lines, adjust them as necessary, and remove the curly braces after 'resources:'.
-  limits:
-    #   cpu: 100m
-   # memory: 150Mi
-  requests:
-    #   cpu: 100m
-   # memory: 150Mi
+  # limits:
+  #   cpu: 100m
+  #   memory: 128Mi
+  # requests:
+  #   cpu: 100m
+  #   memory: 128Mi
 
-nodeSelector:
-    custosServiceWorker: "enabled"
+nodeSelector: {}
 
 tolerations: []
 
@@ -80,5 +79,5 @@ readinessProbe:
 
 
 deployment:
-  host: service.staging.usecustos.org
-
+  host: "${host}"
+  clusterIssuer: "${clusterIssuer}"
diff --git a/custos-integration-services/sharing-management-service-parent/pom.xml b/custos-integration-services/sharing-management-service-parent/pom.xml
index 75c1b8d8b..76e3bc00d 100644
--- a/custos-integration-services/sharing-management-service-parent/pom.xml
+++ b/custos-integration-services/sharing-management-service-parent/pom.xml
@@ -25,6 +25,7 @@
         <artifactId>custos-integration-services</artifactId>
         <groupId>org.apache.custos</groupId>
         <version>1.0-SNAPSHOT</version>
+        <relativePath>../pom.xml</relativePath>
     </parent>
     <modelVersion>4.0.0</modelVersion>
 
diff --git a/custos-integration-services/sharing-management-service-parent/sharing-management-service-sidecar/pom.xml b/custos-integration-services/sharing-management-service-parent/sharing-management-service-sidecar/pom.xml
index 217936284..0cb343a40 100644
--- a/custos-integration-services/sharing-management-service-parent/sharing-management-service-sidecar/pom.xml
+++ b/custos-integration-services/sharing-management-service-parent/sharing-management-service-sidecar/pom.xml
@@ -25,6 +25,7 @@
         <artifactId>sharing-management-service-parent</artifactId>
         <groupId>org.apache.custos</groupId>
         <version>1.0-SNAPSHOT</version>
+        <relativePath>../pom.xml</relativePath>
     </parent>
     <modelVersion>4.0.0</modelVersion>
 
diff --git a/custos-integration-services/sharing-management-service-parent/sharing-management-service/pom.xml b/custos-integration-services/sharing-management-service-parent/sharing-management-service/pom.xml
index 362cf0bad..badff6e4b 100644
--- a/custos-integration-services/sharing-management-service-parent/sharing-management-service/pom.xml
+++ b/custos-integration-services/sharing-management-service-parent/sharing-management-service/pom.xml
@@ -25,6 +25,7 @@
         <artifactId>sharing-management-service-parent</artifactId>
         <groupId>org.apache.custos</groupId>
         <version>1.0-SNAPSHOT</version>
+        <relativePath>../pom.xml</relativePath>
     </parent>
     <modelVersion>4.0.0</modelVersion>
 
diff --git a/custos-integration-services/sharing-management-service-parent/sharing-management-service/src/main/helm/templates/ingress-grpc.yaml b/custos-integration-services/sharing-management-service-parent/sharing-management-service/src/main/helm/templates/ingress-grpc.yaml
index fc2e96489..82cea6b7f 100644
--- a/custos-integration-services/sharing-management-service-parent/sharing-management-service/src/main/helm/templates/ingress-grpc.yaml
+++ b/custos-integration-services/sharing-management-service-parent/sharing-management-service/src/main/helm/templates/ingress-grpc.yaml
@@ -4,7 +4,7 @@ metadata:
   annotations:
     kubernetes.io/ingress.class: "nginx"
     nginx.ingress.kubernetes.io/backend-protocol: "GRPC"
-    cert-manager.io/cluster-issuer: letsencrypt-prod
+    cert-manager.io/cluster-issuer: {{ .Values.deployment.clusterIssuer }}
   name: ${artifactId}-ingress-grpc
 spec:
   rules:
diff --git a/custos-integration-services/sharing-management-service-parent/sharing-management-service/src/main/helm/templates/ingress.yaml b/custos-integration-services/sharing-management-service-parent/sharing-management-service/src/main/helm/templates/ingress.yaml
index 497468011..e22c81355 100644
--- a/custos-integration-services/sharing-management-service-parent/sharing-management-service/src/main/helm/templates/ingress.yaml
+++ b/custos-integration-services/sharing-management-service-parent/sharing-management-service/src/main/helm/templates/ingress.yaml
@@ -4,7 +4,7 @@ metadata:
   name: ${artifactId}-ingress
   annotations:
     nginx.ingress.kubernetes.io/rewrite-target: /sharing-management/$2
-    cert-manager.io/cluster-issuer: letsencrypt-prod
+    cert-manager.io/cluster-issuer: {{ .Values.deployment.clusterIssuer }}
     kubernetes.io/ingress.class: nginx
 spec:
   rules:
diff --git a/custos-integration-services/sharing-management-service-parent/sharing-management-service/src/main/helm/values.yaml b/custos-integration-services/sharing-management-service-parent/sharing-management-service/src/main/helm/values.yaml
index b21671185..74e90135a 100644
--- a/custos-integration-services/sharing-management-service-parent/sharing-management-service/src/main/helm/values.yaml
+++ b/custos-integration-services/sharing-management-service-parent/sharing-management-service/src/main/helm/values.yaml
@@ -50,20 +50,19 @@ ingress:
   #    hosts:
   #      - chart-example.local
 
-resources:
+resources: {}
   # We usually recommend not to specify default resources and to leave this as a conscious
   # choice for the user. This also increases chances charts run on environments with little
   # resources, such as Minikube. If you do want to specify resources, uncomment the following
   # lines, adjust them as necessary, and remove the curly braces after 'resources:'.
-  limits:
-    #   cpu: 100m
-   # memory: 150Mi
-  requests:
-    #   cpu: 100m
-   # memory: 150Mi
+  # limits:
+  #   cpu: 100m
+  #   memory: 128Mi
+  # requests:
+  #   cpu: 100m
+  #   memory: 128Mi
 
-nodeSelector:
-    custosServiceWorker: "enabled"
+nodeSelector: {}
 
 tolerations: []
 
@@ -71,7 +70,7 @@ affinity: {}
 
 proxy:
    repository: apachecustos/sharing-management-service-sidecar
-   tag: "${project.version}
+   tag: "${project.version}"
    port: 50000
    adminport: 9901
 
@@ -85,4 +84,5 @@ readinessProbe:
   successThreshold: 1
 
 deployment:
-  host: service.staging.usecustos.org
\ No newline at end of file
+  host: "${host}"
+  clusterIssuer: "${clusterIssuer}"
\ No newline at end of file
diff --git a/custos-integration-services/tenant-management-service-parent/pom.xml b/custos-integration-services/tenant-management-service-parent/pom.xml
index 0dbe2b362..5d14691bb 100644
--- a/custos-integration-services/tenant-management-service-parent/pom.xml
+++ b/custos-integration-services/tenant-management-service-parent/pom.xml
@@ -25,6 +25,7 @@
         <artifactId>custos-integration-services</artifactId>
         <groupId>org.apache.custos</groupId>
         <version>1.0-SNAPSHOT</version>
+        <relativePath>../pom.xml</relativePath>
     </parent>
     <modelVersion>4.0.0</modelVersion>
 
diff --git a/custos-integration-services/tenant-management-service-parent/tenant-management-service-sidecar/pom.xml b/custos-integration-services/tenant-management-service-parent/tenant-management-service-sidecar/pom.xml
index 4f293deee..7b9433e38 100644
--- a/custos-integration-services/tenant-management-service-parent/tenant-management-service-sidecar/pom.xml
+++ b/custos-integration-services/tenant-management-service-parent/tenant-management-service-sidecar/pom.xml
@@ -25,6 +25,7 @@
         <artifactId>tenant-management-service-parent</artifactId>
         <groupId>org.apache.custos</groupId>
         <version>1.0-SNAPSHOT</version>
+        <relativePath>../pom.xml</relativePath>
     </parent>
     <modelVersion>4.0.0</modelVersion>
 
diff --git a/custos-integration-services/tenant-management-service-parent/tenant-management-service/pom.xml b/custos-integration-services/tenant-management-service-parent/tenant-management-service/pom.xml
index e238bd44c..07ef58736 100644
--- a/custos-integration-services/tenant-management-service-parent/tenant-management-service/pom.xml
+++ b/custos-integration-services/tenant-management-service-parent/tenant-management-service/pom.xml
@@ -25,6 +25,7 @@
         <artifactId>tenant-management-service-parent</artifactId>
         <groupId>org.apache.custos</groupId>
         <version>1.0-SNAPSHOT</version>
+        <relativePath>../pom.xml</relativePath>
     </parent>
     <modelVersion>4.0.0</modelVersion>
 
@@ -134,13 +135,13 @@
         <dependency>
             <groupId>org.apache.custos</groupId>
             <artifactId>messaging-core-service-client-stub</artifactId>
-            <version>1.0-SNAPSHOT</version>
+            <version>${project.version}</version>
             <scope>compile</scope>
         </dependency>
         <dependency>
             <groupId>org.apache.custos</groupId>
             <artifactId>sharing-core-service-client-stub</artifactId>
-            <version>1.0-SNAPSHOT</version>
+            <version>${project.version}</version>
             <scope>compile</scope>
         </dependency>
     </dependencies>
diff --git a/custos-integration-services/tenant-management-service-parent/tenant-management-service/src/main/helm/templates/ingress-grpc.yaml b/custos-integration-services/tenant-management-service-parent/tenant-management-service/src/main/helm/templates/ingress-grpc.yaml
index 5a9200c51..7a464cbe1 100644
--- a/custos-integration-services/tenant-management-service-parent/tenant-management-service/src/main/helm/templates/ingress-grpc.yaml
+++ b/custos-integration-services/tenant-management-service-parent/tenant-management-service/src/main/helm/templates/ingress-grpc.yaml
@@ -4,7 +4,7 @@ metadata:
   annotations:
     kubernetes.io/ingress.class: "nginx"
     nginx.ingress.kubernetes.io/backend-protocol: "GRPC"
-    cert-manager.io/cluster-issuer: letsencrypt-prod
+    cert-manager.io/cluster-issuer: {{ .Values.deployment.clusterIssuer }}
   name: ${artifactId}-ingress-grpc
 spec:
   rules:
diff --git a/custos-integration-services/tenant-management-service-parent/tenant-management-service/src/main/helm/templates/ingress.yaml b/custos-integration-services/tenant-management-service-parent/tenant-management-service/src/main/helm/templates/ingress.yaml
index bbbe35870..1f5e8079a 100644
--- a/custos-integration-services/tenant-management-service-parent/tenant-management-service/src/main/helm/templates/ingress.yaml
+++ b/custos-integration-services/tenant-management-service-parent/tenant-management-service/src/main/helm/templates/ingress.yaml
@@ -4,7 +4,7 @@ metadata:
   name: ${artifactId}-ingress
   annotations:
     nginx.ingress.kubernetes.io/rewrite-target: /tenant-management/$2
-    cert-manager.io/cluster-issuer: letsencrypt-prod
+    cert-manager.io/cluster-issuer: {{ .Values.deployment.clusterIssuer }}
     kubernetes.io/ingress.class: nginx
 spec:
   rules:
diff --git a/custos-integration-services/tenant-management-service-parent/tenant-management-service/src/main/helm/values.yaml b/custos-integration-services/tenant-management-service-parent/tenant-management-service/src/main/helm/values.yaml
index 7b64642b5..078fe1818 100644
--- a/custos-integration-services/tenant-management-service-parent/tenant-management-service/src/main/helm/values.yaml
+++ b/custos-integration-services/tenant-management-service-parent/tenant-management-service/src/main/helm/values.yaml
@@ -50,20 +50,19 @@ ingress:
   #    hosts:
   #      - chart-example.local
 
-resources:
+resources: {}
   # We usually recommend not to specify default resources and to leave this as a conscious
   # choice for the user. This also increases chances charts run on environments with little
   # resources, such as Minikube. If you do want to specify resources, uncomment the following
   # lines, adjust them as necessary, and remove the curly braces after 'resources:'.
-   limits:
+  # limits:
   #   cpu: 100m
-  #    memory: 150Mi
-   requests:
+  #   memory: 128Mi
+  # requests:
   #   cpu: 100m
-   #   memory: 150Mi
+  #   memory: 128Mi
 
-nodeSelector:
-    custosServiceWorker: "enabled"
+nodeSelector: {}
 
 tolerations: []
 
@@ -85,4 +84,5 @@ readinessProbe:
   successThreshold: 1
 
 deployment:
-  host: service.staging.usecustos.org
\ No newline at end of file
+  host: "${host}"
+  clusterIssuer: "${clusterIssuer}"
diff --git a/custos-integration-services/user-management-service-parent/pom.xml b/custos-integration-services/user-management-service-parent/pom.xml
index 5c8d26b6b..e123c6c50 100644
--- a/custos-integration-services/user-management-service-parent/pom.xml
+++ b/custos-integration-services/user-management-service-parent/pom.xml
@@ -25,6 +25,7 @@
         <artifactId>custos-integration-services</artifactId>
         <groupId>org.apache.custos</groupId>
         <version>1.0-SNAPSHOT</version>
+        <relativePath>../pom.xml</relativePath>
     </parent>
     <modelVersion>4.0.0</modelVersion>
 
diff --git a/custos-integration-services/user-management-service-parent/user-management-service-sidecar/pom.xml b/custos-integration-services/user-management-service-parent/user-management-service-sidecar/pom.xml
index b1d2b7749..0004a1693 100644
--- a/custos-integration-services/user-management-service-parent/user-management-service-sidecar/pom.xml
+++ b/custos-integration-services/user-management-service-parent/user-management-service-sidecar/pom.xml
@@ -25,6 +25,7 @@
         <artifactId>user-management-service-parent</artifactId>
         <groupId>org.apache.custos</groupId>
         <version>1.0-SNAPSHOT</version>
+        <relativePath>../pom.xml</relativePath>
     </parent>
     <modelVersion>4.0.0</modelVersion>
 
diff --git a/custos-integration-services/user-management-service-parent/user-management-service-sidecar/src/main/resources/user-management-service.pb b/custos-integration-services/user-management-service-parent/user-management-service-sidecar/src/main/resources/user-management-service.pb
index ac2149723..4ee8d22b9 100644
Binary files a/custos-integration-services/user-management-service-parent/user-management-service-sidecar/src/main/resources/user-management-service.pb and b/custos-integration-services/user-management-service-parent/user-management-service-sidecar/src/main/resources/user-management-service.pb differ
diff --git a/custos-integration-services/user-management-service-parent/user-management-service/pom.xml b/custos-integration-services/user-management-service-parent/user-management-service/pom.xml
index 83b47786e..a447d5c3a 100644
--- a/custos-integration-services/user-management-service-parent/user-management-service/pom.xml
+++ b/custos-integration-services/user-management-service-parent/user-management-service/pom.xml
@@ -25,6 +25,7 @@
         <artifactId>user-management-service-parent</artifactId>
         <groupId>org.apache.custos</groupId>
         <version>1.0-SNAPSHOT</version>
+        <relativePath>../pom.xml</relativePath>
     </parent>
     <modelVersion>4.0.0</modelVersion>
 
diff --git a/custos-integration-services/user-management-service-parent/user-management-service/src/main/helm/templates/ingress-grpc.yaml b/custos-integration-services/user-management-service-parent/user-management-service/src/main/helm/templates/ingress-grpc.yaml
index c40690be1..5de2cad8e 100644
--- a/custos-integration-services/user-management-service-parent/user-management-service/src/main/helm/templates/ingress-grpc.yaml
+++ b/custos-integration-services/user-management-service-parent/user-management-service/src/main/helm/templates/ingress-grpc.yaml
@@ -4,7 +4,7 @@ metadata:
   annotations:
     kubernetes.io/ingress.class: "nginx"
     nginx.ingress.kubernetes.io/backend-protocol: "GRPC"
-    cert-manager.io/cluster-issuer: letsencrypt-prod
+    cert-manager.io/cluster-issuer: {{ .Values.deployment.clusterIssuer }}
   name: ${artifactId}-ingress-grpc
 spec:
   rules:
diff --git a/custos-integration-services/user-management-service-parent/user-management-service/src/main/helm/templates/ingress.yaml b/custos-integration-services/user-management-service-parent/user-management-service/src/main/helm/templates/ingress.yaml
index 2c00cc988..787d5cfdc 100644
--- a/custos-integration-services/user-management-service-parent/user-management-service/src/main/helm/templates/ingress.yaml
+++ b/custos-integration-services/user-management-service-parent/user-management-service/src/main/helm/templates/ingress.yaml
@@ -4,7 +4,7 @@ metadata:
   name: ${artifactId}-ingress
   annotations:
     nginx.ingress.kubernetes.io/rewrite-target: /user-management/$2
-    cert-manager.io/cluster-issuer: letsencrypt-prod
+    cert-manager.io/cluster-issuer: {{ .Values.deployment.clusterIssuer }}
     kubernetes.io/ingress.class: nginx
 spec:
   rules:
diff --git a/custos-integration-services/user-management-service-parent/user-management-service/src/main/helm/values.yaml b/custos-integration-services/user-management-service-parent/user-management-service/src/main/helm/values.yaml
index 1c04a2f31..953282604 100644
--- a/custos-integration-services/user-management-service-parent/user-management-service/src/main/helm/values.yaml
+++ b/custos-integration-services/user-management-service-parent/user-management-service/src/main/helm/values.yaml
@@ -50,20 +50,19 @@ ingress:
   #    hosts:
   #      - chart-example.local
 
-resources:
+resources: {}
   # We usually recommend not to specify default resources and to leave this as a conscious
   # choice for the user. This also increases chances charts run on environments with little
   # resources, such as Minikube. If you do want to specify resources, uncomment the following
   # lines, adjust them as necessary, and remove the curly braces after 'resources:'.
-  limits:
-    #   cpu: 100m
-   # memory: 150Mi
-  requests:
-    #   cpu: 100m
-   # memory: 150Mi
+  # limits:
+  #   cpu: 100m
+  #   memory: 128Mi
+  # requests:
+  #   cpu: 100m
+  #   memory: 128Mi
 
-nodeSelector:
-    custosServiceWorker: "enabled"
+nodeSelector: {}
 
 tolerations: []
 
@@ -71,7 +70,7 @@ affinity: {}
 
 proxy:
    repository: apachecustos/user-management-service-sidecar
-   tag: "${project.version}
+   tag: "${project.version}"
    port: 50000
    adminport: 9901
 
@@ -85,4 +84,5 @@ readinessProbe:
   successThreshold: 1
 
 deployment:
-  host: service.staging.usecustos.org
\ No newline at end of file
+  host: "${host}"
+  clusterIssuer: "${clusterIssuer}"
\ No newline at end of file
diff --git a/custos-integration-services/user-management-service-parent/user-management-service/src/main/java/org/apache/custos/user/management/interceptors/AuthInterceptorImpl.java b/custos-integration-services/user-management-service-parent/user-management-service/src/main/java/org/apache/custos/user/management/interceptors/AuthInterceptorImpl.java
index aba3cc8c8..b4351ccc8 100644
--- a/custos-integration-services/user-management-service-parent/user-management-service/src/main/java/org/apache/custos/user/management/interceptors/AuthInterceptorImpl.java
+++ b/custos-integration-services/user-management-service-parent/user-management-service/src/main/java/org/apache/custos/user/management/interceptors/AuthInterceptorImpl.java
@@ -195,7 +195,7 @@ public <ReqT> ReqT intercept(String method, Metadata headers, ReqT msg) {
                     .setClientId(oauthId)
                     .setAccessToken(token.getAccessToken())
                     .setTenantId(tenantId)
-                    .setPerformedBy(claim.get().getPerformedBy().isEmpty()?Constants.SYSTEM:claim.get().getPerformedBy())
+                    .setPerformedBy(claim.get().getPerformedBy().isEmpty() ? Constants.SYSTEM : claim.get().getPerformedBy())
                     .build();
 
             return (ReqT) operationRequest;
@@ -458,6 +458,36 @@ public <ReqT> ReqT intercept(String method, Metadata headers, ReqT msg) {
                     .setTenantId(tenantId)
                     .setClientId(oauthId)
                     .build();
+        } else if (method.equals("getExternalIDPsOfUsers")) {
+            GetExternalIDPsRequest getExternalIDPsRequest = (GetExternalIDPsRequest) msg;
+
+            Optional<AuthClaim> claim = authorize(headers, getExternalIDPsRequest.getClientId());
+
+            if (claim.isEmpty()) {
+                throw new UnAuthorizedException("Request is not authorized", null);
+            }
+            String oauthId = claim.get().getIamAuthId();
+            long tenantId = claim.get().getTenantId();
+
+            return (ReqT) ((GetExternalIDPsRequest) msg).toBuilder()
+                    .setTenantId(tenantId)
+                    .setClientId(oauthId)
+                    .build();
+        } else if (method.equals("addExternalIDPsOfUsers")) {
+            AddExternalIDPLinksRequest getExternalIDPsRequest = (AddExternalIDPLinksRequest) msg;
+
+            Optional<AuthClaim> claim = authorize(headers, getExternalIDPsRequest.getClientId());
+
+            if (claim.isEmpty()) {
+                throw new UnAuthorizedException("Request is not authorized", null);
+            }
+            String oauthId = claim.get().getIamAuthId();
+            long tenantId = claim.get().getTenantId();
+
+            return (ReqT) ((AddExternalIDPLinksRequest) msg).toBuilder()
+                    .setTenantId(tenantId)
+                    .setClientId(oauthId)
+                    .build();
         }
 
         return msg;
diff --git a/custos-integration-services/user-management-service-parent/user-management-service/src/main/java/org/apache/custos/user/management/service/UserManagementService.java b/custos-integration-services/user-management-service-parent/user-management-service/src/main/java/org/apache/custos/user/management/service/UserManagementService.java
index a2d75be79..92d5dd299 100644
--- a/custos-integration-services/user-management-service-parent/user-management-service/src/main/java/org/apache/custos/user/management/service/UserManagementService.java
+++ b/custos-integration-services/user-management-service-parent/user-management-service/src/main/java/org/apache/custos/user/management/service/UserManagementService.java
@@ -1289,6 +1289,43 @@ public void deleteExternalIDPsOfUsers(DeleteExternalIDPsRequest request, StreamO
         }
     }
 
+    @Override
+    public void getExternalIDPsOfUsers(GetExternalIDPsRequest request, StreamObserver<GetExternalIDPsResponse> responseObserver) {
+        try {
+            LOGGER.debug("Request received to getExternalIDPs of users in " + request.getTenantId());
+
+            GetExternalIDPsResponse status = iamAdminServiceClient.getExternalIDPLinks(request);
+
+            responseObserver.onNext(status);
+            responseObserver.onCompleted();
+
+        } catch (Exception ex) {
+            String msg = "Error occurred while  fetching external IDPs of Users " + ex.getMessage();
+            LOGGER.error(msg, ex);
+            responseObserver.onError(Status.INTERNAL.withDescription(msg).asRuntimeException());
+
+        }
+    }
+
+
+    @Override
+    public void addExternalIDPsOfUsers(AddExternalIDPLinksRequest request, StreamObserver<OperationStatus> responseObserver) {
+        try {
+            LOGGER.debug("Request received to addExternalIDPsOfUsers of users in " + request.getTenantId());
+
+            OperationStatus status = iamAdminServiceClient.addExternalIDPLinksOfUsers(request);
+
+            responseObserver.onNext(status);
+            responseObserver.onCompleted();
+
+        } catch (Exception ex) {
+            String msg = "Error occurred while  adding external IDPs of Users " + ex.getMessage();
+            LOGGER.error(msg, ex);
+            responseObserver.onError(Status.INTERNAL.withDescription(msg).asRuntimeException());
+
+        }
+    }
+
     @Override
     public void synchronizeUserDBs(SynchronizeUserDBRequest request, StreamObserver<OperationStatus> responseObserver) {
         try {
diff --git a/custos-integration-services/user-management-service-parent/user-management-service/src/main/proto/UserManagementService.proto b/custos-integration-services/user-management-service-parent/user-management-service/src/main/proto/UserManagementService.proto
index b028e653c..9d1a3376c 100644
--- a/custos-integration-services/user-management-service-parent/user-management-service/src/main/proto/UserManagementService.proto
+++ b/custos-integration-services/user-management-service-parent/user-management-service/src/main/proto/UserManagementService.proto
@@ -145,6 +145,19 @@ service UserManagementService {
          };
     }
 
+    rpc addExternalIDPsOfUsers (org.apache.custos.iam.service.AddExternalIDPLinksRequest) returns (org.apache.custos.iam.service.OperationStatus) {
+        option (google.api.http) = {
+           post: "/user-management/v1.0.0/users/federatedIDPs"
+         };
+    }
+
+
+    rpc getExternalIDPsOfUsers (org.apache.custos.iam.service.GetExternalIDPsRequest) returns (org.apache.custos.iam.service.GetExternalIDPsResponse) {
+        option (google.api.http) = {
+           get: "/user-management/v1.0.0/users/federatedIDPs"
+         };
+    }
+
     rpc addRolesToUsers (org.apache.custos.iam.service.AddUserRolesRequest) returns (org.apache.custos.iam.service.OperationStatus) {
         option (google.api.http) = {
            post: "/user-management/v1.0.0/users/roles"
diff --git a/pom.xml b/pom.xml
index 6d994b633..34c732f08 100644
--- a/pom.xml
+++ b/pom.xml
@@ -362,7 +362,7 @@
                 <vault.uri>http://vault.vault.svc.cluster.local:8200</vault.uri>
                 <iam.dev.username>{{token}}</iam.dev.username>
                 <iam.dev.password>{{token}}</iam.dev.password>
-                <iam.staging.username>admin</iam.staging.username>
+                <iam.staging.username>{{token}}</iam.staging.username>
                 <iam.staging.password>{{token}}</iam.staging.password>
                 <iam.production.username>{{token}}</iam.production.username>
                 <iam.production.password>{{token}}</iam.production.password>
@@ -373,8 +373,8 @@
                 <cilogon.production.id>{{token}}</cilogon.production.id>
                 <cilogon.production.sec>{{token}}</cilogon.production.sec>
                 <custos.email.password>{{token}}</custos.email.password>
-                <spring.datasource.username>root</spring.datasource.username>
-                <spring.datasource.password>root</spring.datasource.password>
+                <spring.datasource.username>{{token}}</spring.datasource.username>
+                <spring.datasource.password>{{token}}</spring.datasource.password>
 
             </properties>
             <activation>
@@ -541,13 +541,13 @@
                                          username="${ssh.username}"
                                          keyfile="${ssh.privatekey}"
                                          passphrase="${ssh.passphrase}" trust="true"
-                                         command="helm delete ${project.artifactId} -n custos"/>
+                                         command="helm delete  ${project.artifactId} -n custos "/>
 
                                 <sshexec host="${host}"
                                          username="${ssh.username}"
                                          keyfile="${ssh.privatekey}"
                                          passphrase="${ssh.passphrase}" trust="true"
-                                         command="helm install ${project.artifactId} /home/ubuntu/custos/artifacts/${project.artifactId}-${project.version}.tgz -n custos"/>
+                                         command="helm install  ${project.artifactId} /home/ubuntu/custos/artifacts/${project.artifactId}-${project.version}.tgz  -n custos"/>
 
                                 <!-- SSH -->
                                 <taskdef name="sshexec"
@@ -684,6 +684,7 @@
         <com.codahale.version>0.7.0</com.codahale.version>
 
         <host>service.staging.usecustos.org</host>
+<!--        <host>custos.scigap.org</host>-->
 
         <ssh.privatekey>/Users/isururanawaka/.ssh/custos/id_rsa</ssh.privatekey>
 
@@ -694,6 +695,8 @@
 
         <email.version>1.5.0-b01</email.version>
         <ssh.username>ubuntu</ssh.username>
+        <project.version>1.0-SNAPSHOT</project.version>
+        <clusterIssuer>letsencrypt-staging</clusterIssuer>
 
 
     </properties>


Test patch:
diff --git a/custos-tests/pom.xml b/custos-tests/pom.xml
index df8835107..d6d9535e2 100644
--- a/custos-tests/pom.xml
+++ b/custos-tests/pom.xml
@@ -25,6 +25,7 @@
         <artifactId>custos</artifactId>
         <groupId>org.apache.custos</groupId>
         <version>1.0-SNAPSHOT</version>
+        <relativePath>../pom.xml</relativePath>
     </parent>
     <modelVersion>4.0.0</modelVersion>