I created a “WebServiceBeforeOperationRule” but I have no idea how this rule can be tested.
Could anyone advice me anything?
import java.util.*;
import connector.common.JsonUtil;
import sailpoint.object.ProvisioningPlan;
import sailpoint.object.ProvisioningPlan.AccountRequest;
import sailpoint.object.ProvisioningPlan.AttributeRequest;
import sailpoint.connector.webservices.Endpoint;
// Get request endpoint
Endpoint requestEndPoint = (Endpoint) args.get("requestEndPoint");
// Extract attribute values from provisioning plan
ProvisioningPlan plan = (ProvisioningPlan) args.get("provisioningPlan");
String email = null;
String phone = null;
if (plan != null && plan.getAccountRequests() != null) {
for (AccountRequest acctReq : plan.getAccountRequests()) {
if ("Source ABC".equalsIgnoreCase(acctReq.getApplicationName())) {
for (AttributeRequest attrReq : acctReq.getAttributeRequests()) {
if ("secondaryEmail".equals(attrReq.getName())) {
email = (String) attrReq.getValue();
}
if ("phoneCallCell1".equals(attrReq.getName())) {
phone = (String) attrReq.getValue();
}
}
}
}
}
// Get existing attributes from Source ABC
Map<String, Object> existingAttributes = (Map<String, Object>) args.getOrDefault("existingAttributes", new HashMap<>());
String existingEmail = (String) existingAttributes.get("secondaryEmail");
String existingPhone = (String) existingAttributes.get("phoneCallCell1");
// Build dynamic payload
List<Map<String, Object>> payloadList = new ArrayList<>();
// Email logic
if (email != null) {
Map<String, Object> emailPayload = new HashMap<>();
if (existingEmail == null || "".equals(existingEmail)) {
emailPayload.put("op", "add");
emailPayload.put("path", "/paths/-");
Map<String, Object> valueMap = new HashMap<>();
valueMap.put("pathId", 240001148045317L);
valueMap.put("value", email);
emailPayload.put("value", valueMap);
} else if (!existingEmail.equals(email)) {
emailPayload.put("op", "replace");
emailPayload.put("path", "/paths/pathId:240001148045317/value");
emailPayload.put("value", email);
}
if (!emailPayload.isEmpty()) {
payloadList.add(emailPayload);
}
}
// Phone logic
if (phone != null) {
Map<String, Object> phonePayload = new HashMap<>();
if (existingPhone == null || "".equals(existingPhone)) {
phonePayload.put("op", "add");
phonePayload.put("path", "/paths/-");
Map<String, Object> valueMap = new HashMap<>();
valueMap.put("pathId", 240001148045319L);
valueMap.put("value", phone);
valueMap.put("countryCode", "US");
phonePayload.put("value", valueMap);
} else if (!existingPhone.equals(phone)) {
phonePayload.put("op", "replace");
phonePayload.put("path", "/paths/pathId:240001148045319/value");
phonePayload.put("value", phone);
}
if (!phonePayload.isEmpty()) {
payloadList.add(phonePayload);
}
}
// Inject payload
if (!payloadList.isEmpty()) {
String finalPayload = JsonUtil.render(payloadList);
requestEndPoint.setPayload(finalPayload);
} else {
}
return requestEndPoint;
Thank you