Incoming triggers examples
Load triggers
When you are configuring an agent, depending on the connector type, , it will be able to define BeanShell scripts that will be triggered when data is loaded into Soffid (incoming triggers).
Triggers can be used to validate or perform a specific action just before performing an operation or just after performing an operation into Soffid objects.
The trigger result will be a boolean value, true to continue or false to stop.
Use case examples
Example 1
A user can have more than one account on a target system. We want to reconcile only those accounts which have the same name on Soffid and on target system.
name = newObject{"accountName"};
uaList = serviceLocator.getAccountService().findUsersAccounts(name,"agentName");
for(userAccount: uaList) {
if (userAccount.name.equals(name)) {
return true;
} else {
return false;
}
}
return false;
Example 2
Update only users who belong to Soffid company.
name = newObject{"accountName"};
user = serviceLocator.getUserService().findUserByUserName(name);
if (user != null) {
attributes = serviceLocator.getUserService().findUserAttributes(name);
company = attributes.get("company");
if (company != null && company.equals("Soffid")) {
return true;
}
return false;
Example 3
Discard to create some accounts (PreInsert account).
System.out.println("************** Pre Insert Account");
cuentas = new java.util.HashMap();
cuentas.put("admin",null);
account = newObject{"accountName"};
if (cuentas.containsKey(account)) {
System.out.println("TRIGGER ACCOUNT PREINSERT - Discarded to create the account " + account);
return false;
}
System.out.println("TRIGGER ACCOUNT PREINSERT - Correct account " + account);
return true;
Example 4
If does not exist a mail domain, it wil be created.
mailDomain = newObject{"mailDomain"};
if (mailDomain != void && mailDomain != null) {
existMD = serviceLocator.getMailListsService().findMailDomainByName(mailDomain);
if (existMD == null) {
newMailDomain = new com.soffid.iam.api.MailDomain();
newMailDomain.setName(mailDomain);
newMailDomain.setDescription(mailDomain);
serviceLocator.getMailListsService().create(newMailDomain);
}
}
Example 5
Avoid deleting users (PreDelete user).
return false;