iiq 8.3
Can you please review my workflow and provide comment on what i need to fix
<?xml version='1.0' encoding='UTF-8'?>
<!DOCTYPE Workflow PUBLIC "sailpoint.dtd" "sailpoint.dtd">
<Workflow created="1741020590642" explicitTransitions="true" id="0a31481694bc10a781955ce9f23274ca" modified="1743442895451" name="RR Joiner" significantModified="1743442895451" type="Subprocess">
<Variable name="workflowSuccessStatus" output="true"/>
<Variable name="activeDirectoryConnector"/>
<Variable name="adProvisioningPlan"/>
<Variable name="createdIdentity"/>
<Variable name="newIdentityUser"/>
<Variable name="individualCsvUser"/>
<Variable name="csvUserData"/>
<Variable input="true" name="workdayUserData" required="true"/>
<Variable name="provisioningTaskResult" output="true"/>
<Step icon="Start" name="Start" posX="28" posY="10">
<Transition to="Workday"/>
</Step>
<Step icon="Analysis" name="Workday" posX="98" posY="10">
<Script>
<Source>
import sailpoint.api.SailPointContext;
import sailpoint.connector.workday.WorkdayConnector;
import sailpoint.object.Identity;
WorkdayConnector workdayConnector = new WorkdayConnector();
List<Map<String, Object>> workdayUserData = workdayConnector.getUsers(sailPointContext);
for (Map<String, Object> userData : workdayUserData) {
String username = (String) userData.get("username");
String firstName = (String) userData.get("firstName");
String lastName = (String) userData.get("lastName");
String email = (String) userData.get("email");
String Status = (String) userData.get("Status");
String Type = (String) userData.get("Type");
// Add logic to handle this data, e.g., create a new Identity
}
</Source>
</Script>
<Transition to="CSV"/>
</Step>
<Step icon="Analysis" name="CSV" posX="184" posY="10">
<Script>
<Source>
import java.io.BufferedReader;
import java.io.FileReader;
import java.util.List;
import java.util.ArrayList;
String csvFile = "D:\\IIQ\\CITIZENSHIP.csv"; //
BufferedReader br = null;
String line = "";
String cvsSplitBy = ",";
List<Map<String, String>> csvUserData = new ArrayList<>();
try {
br = new BufferedReader(new FileReader(csvFile));
while ((line = br.readLine()) != null) {
String[] data = line.split(cvsSplitBy);
// Assume columns: Username, FirstName, LastName, Email
Map<String, String> row = new HashMap<>();
row.put("employeeID", data[0]);
row.put("CitizenshipCountry", data[1]);
row.put("CitizenshipStatus", data[2]);
row.put("CitizenshipVerified", data[3]);
csvUserData.add(row);
}
} catch (Exception e) {
e.printStackTrace();
}
// Example: Retrieve first entry from CSV data
Map<String, String> individualCsvUser = csvUserData.get(0); // You can loop through this list
</Source>
</Script>
<Transition to="GAD"/>
</Step>
<Step icon="Analysis" name="GAD" posX="184" posY="10">
<Script>
<Source>
import java.io.BufferedReader;
import java.io.FileReader;
import java.util.List;
import java.util.ArrayList;
String csvFile = "D:\\IIQ\\high.csv"; //
BufferedReader br = null;
String line = "";
String cvsSplitBy = ",";
List<Map<String, String>> csvUserData = new ArrayList<>();
try {
br = new BufferedReader(new FileReader(csvFile));
while ((line = br.readLine()) != null) {
String[] data = line.split(cvsSplitBy);
// Assume columns: Username, FirstName, LastName, Email
Map<String, String> row = new HashMap<>();
row.put("group", data[0]);
csvUserData.add(row);
}
} catch (Exception e) {
e.printStackTrace();
}
// Example: Retrieve first entry from CSV data
Map<String, String> individualCsvUser = csvUserData.get(0); // You can loop through this list
</Source>
</Script>
<Transition to="Identity Request Approve"/>
</Step>
<Step icon="Task" name="Identity Request Approve" posX="342" posY="104">
<Arg name="approvalScheme"/>
<Arg name="batchRequestApprover"/>
<Arg name="securityOfficerElectronicSignature"/>
<Arg name="fallbackApprover"/>
<Arg name="workItemComments"/>
<Arg name="workItemPriority"/>
<Arg name="identityRequestId"/>
<Arg name="managerElectronicSignature"/>
<Arg name="identityDisplayName"/>
<Arg name="ownerElectronicSignature"/>
<Arg name="batchRequestId"/>
<Arg name="approvalMode"/>
<Arg name="trace"/>
<Arg name="batchApproverEmailTemplate"/>
<Arg name="batchApproverElectronicSignature"/>
<Arg name="includeRejectedItemsInApprovalChain"/>
<Arg name="flow"/>
<Arg name="identityName"/>
<Arg name="approvalSet"/>
<Arg name="policyViolations"/>
<Arg name="ownerEmailTemplate"/>
<Arg name="tmpApprovalSet"/>
<Arg name="tmpApproval"/>
<Arg name="identityId"/>
<Arg name="securityOfficerName"/>
<Arg name="securityOfficerEmailTemplate"/>
<Arg name="managerEmailTemplate"/>
<WorkflowRef>
<Reference class="sailpoint.object.Workflow" id="0a314816939c137781939c463a31003e" name="Identity Request Approve"/>
</WorkflowRef>
<Transition to="CreateID"/>
</Step>
<Step icon="Message" name="CreateID" posX="434" posY="95">
<Script>
<Source>
import sailpoint.object.Identity;
import sailpoint.object.Attribute;
Identity createdIdentity = new Identity();
createdIdentity.setName((String) individualCsvUser.get("username")); // Using the CSV user
createdIdentity.setAttribute("firstName", (String) individualCsvUser.get("firstName"));
createdIdentity.setAttribute("lastName", (String) individualCsvUser.get("lastName"));
createdIdentity.setAttribute("email", (String) individualCsvUser.get("email"));
createdIdentity.setAttribute("department", (String) individualCsvUser.get("department"));
createdIdentity.setAttribute("employeeID", (String) individualCsvUser.get("employeeID"));
createdIdentity.setAttribute("group", (String) individualCsvUser.get("group"));
createdIdentity.setAttribute("type", (String) individualCsvUser.get("type"));
// Save Identity in IdentityIQ
context.saveObject(createdIdentity);
</Source>
</Script>
<Transition to="AD"/>
</Step>
<Step icon="Provision" name="AD" posX="556" posY="76">
<Script>
<Source>
import sailpoint.object.Application;
import sailpoint.object.ProvisioningPlan;
import sailpoint.object.ProvisioningTask;
import sailpoint.object.TaskResult;
// Retrieve the AD application
Application adApp = context.getObjectByName(Application.class, "Active Directory");
// Create a provisioning plan
ProvisioningPlan adProvisioningPlan = new ProvisioningPlan(adApp);
adProvisioningPlan.setAttribute("sAMAccountName", createdIdentity.getName());
adProvisioningPlan.setAttribute("givenName", createdIdentity.getAttribute("firstName"));
adProvisioningPlan.setAttribute("sn", createdIdentity.getAttribute("lastName"));
adProvisioningPlan.setAttribute("mail", createdIdentity.getAttribute("email"));
adProvisioningPlan.setAttribute("department", createdIdentity.getAttribute("department"));
// Create a provisioning task
ProvisioningTask provisioningTask = new ProvisioningTask(adApp, ProvisioningTask.OPERATION_CREATE, adProvisioningPlan);
TaskResult provisioningTaskResult = provisioningTask.run(context);
// Check for success/failure
if (provisioningTaskResult.isSuccess()) {
workflowSuccessStatus = true;
// Log success
} else {
workflowSuccessStatus = false;
// Log failure
}
</Source>
</Script>
<Transition to="Identity Request Notify"/>
</Step>
<Step icon="Task" name="Identity Request Notify" posX="679" posY="23">
<Arg name="approvalScheme"/>
<Arg name="batchRequestApprover"/>
<Arg name="securityOfficerElectronicSignature"/>
<Arg name="fallbackApprover"/>
<Arg name="workItemComments"/>
<Arg name="workItemPriority"/>
<Arg name="identityRequestId"/>
<Arg name="managerElectronicSignature"/>
<Arg name="identityDisplayName"/>
<Arg name="ownerElectronicSignature"/>
<Arg name="batchRequestId"/>
<Arg name="approvalMode"/>
<Arg name="trace"/>
<Arg name="batchApproverEmailTemplate"/>
<Arg name="batchApproverElectronicSignature"/>
<Arg name="includeRejectedItemsInApprovalChain"/>
<Arg name="flow"/>
<Arg name="identityName"/>
<Arg name="approvalSet"/>
<Arg name="policyViolations"/>
<Arg name="ownerEmailTemplate"/>
<Arg name="tmpApprovalSet"/>
<Arg name="tmpApproval"/>
<Arg name="identityId"/>
<Arg name="securityOfficerName"/>
<Arg name="securityOfficerEmailTemplate"/>
<Arg name="managerEmailTemplate"/>
<WorkflowRef>
<Reference class="sailpoint.object.Workflow" id="0a314816939c137781939c463a31003e" name="Identity Request Approve"/>
</WorkflowRef>
<Transition to="Stop"/>
</Step>
<Step icon="Stop" name="Stop" posX="814" posY="10"/>
</Workflow>
I’m trying to test my workflow works and function how do i do it. ?