Get manager of users

This script can be used as a transformation script to the system - in the provisioning mapping. The script will return the direct manager of the prime contract of a user.

import eu.bcvsolutions.idm.core.api.dto.IdmIdentityContractDto;
import eu.bcvsolutions.idm.core.api.dto.IdmIdentityDto;
import eu.bcvsolutions.idm.core.api.dto.filter.IdmIdentityFilter;
 
org.slf4j.Logger LOG = org.slf4j.LoggerFactory.getLogger("customGetManager");
 
IdmIdentityContractDto primeContract = identityContractService.getPrimeContract(entity.getId());
if (primeContract == null) {
    LOG.warn("User {} doesn't have any contract.", entity.getUsername());
    return null;
}
 
IdmIdentityFilter filter = new IdmIdentityFilter();
filter.setManagersFor(entity.getId());
filter.setManagersByContract(primeContract.getId());
 
List managers = identityService.find(filter, null).getContent();
 
if (managers == null || managers.isEmpty()) {
    LOG.info("Cannot find manager for contract {} of the user {}", primeContract.getId(), entity.getUsername());
    return null;
} else if (managers.size()> 1) {
    // TODO process multiple managers differently, if needed
    LOG.warn("Multiple managers found for contract {} of the user {}, using the first manager {}",
        primeContract.getId(), entity.getUsername(), managers.get(0).getUsername());
}
 
IdmIdentityDto managerForContract = managers.get(0);
 
String managerUsername = managerForContract.getUsername();
 
return managerUsername;

Service

identityContractService
identityService

Class

eu.bcvsolutions.idm.core.api.dto.filter.IdmIdentityFilter
eu.bcvsolutions.idm.core.api.dto.IdmIdentityContractDto
eu.bcvsolutions.idm.core.api.dto.IdmIdentityDto
org.springframework.data.domain.PageImpl
  • by apeterova