We have a JDBC source that is read-only so write transactions to a staging table using a JDBC Provisioning Rule and Provisioning plans for “Create, disable, enable and modify’. Every plan has the same variables with different information for ‘Disabled’ field. Each operation calls the same function, ‘writeToDB’. The create operation works everytime without fail. The disable operation writes a null value the first time that is key for the application to import so is rejected. In fact there are 11 of 41 values that are NULL. Since SailPoint gets a successful completion of writting the information to the staging table, it sets the account as appropriate (enable or disable). An account aggregation resets it back. However, If we immediately perform an enable after a disable, via the UI or API it populates all the values in the staging table and then if we perform the disable funtion again it will populate all the values. It is almost like the rule needs to be initialized or woken up when doing an enable or disable. If not immediately done after the first attempt it again fails. So In order to disable an account you have to perform 3 funtions before the next account aggregation; disable, enable and disable again. In order to enable the account you also have to perform 3 functions; enable, disable and enable again. We know the rule works because the create operation always does and the enable and disable work the second and third time if performed soon enough. If we don’t allow NULL values in the table then it never works to enable or disable, it needs to write to DB the first time so that it changes the account state.
Does anyone have any suggestions on how to get it to work the first time? How do you wake it up before performing the operation?
Other things I’ve tried:
I’ve added delays without success. Logging the plan values to ccg log return Null the first time for the 11 values but not the second or subsequent attempts. I’ve tried to read the values more than once from the plan before writing to staging table. I’ve added code to retrieve application values if the plan values are Null but key values needed from plan aren’t provided the first time. I’ve tried to create separate functions for disable and get the same results.2 different accounts (disabled, enabled, finally disabled successfully without Text1 as NULL)
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.util.concurrent.TimeUnit;
import java.util.List;
import java.util.Properties;
import org.apache.log4j.Logger;
import sailpoint.object.Application;
import sailpoint.object.ProvisioningPlan;
import sailpoint.object.ProvisioningPlan.AccountRequest;
import sailpoint.object.ProvisioningPlan.AttributeRequest;
import sailpoint.object.ProvisioningResult;
public String getAttributeRequestValue(AccountRequest acctReq, String attribute) {
String rtnValue = null;
if (acctReq != null) {
AttributeRequest attrReq = acctReq.getAttributeRequest(attribute);
if (attrReq != null) {
rtnValue = attrReq.getValue();
} else {
String attrVal = application.getStringAttributeValue(attribute);
if (attrVal != null) {
rtnValue = attrVal.getValue();
}
}
} else {
String attrVal = application.getStringAttributeValue(attribute);
if (attrVal != null) {
rtnValue = attrVal.getValue();
}
}
return rtnValue;
}
public void UpdateDB(AccountRequest account) throws Exception {
log.info("CCURE: Inside writeToDB method");
String insertQuery = "INSERT INTO dbo.staging( Text1, LastName, FirstName, MiddleName, Text21, Text2, Text3, Text4, Disabled, mode ) VALUES ( ?, ?, ?, ?, ?, ?, ?, ?, ?, ? )";
String empId = getAttributeRequestValue( account, "Text1" ); //EmployeeID
String lastname = getAttributeRequestValue( account, "LastName" );
String firstname = getAttributeRequestValue( account, "FirstName" );
String middlename = getAttributeRequestValue( account, "MiddleName" );
String companyname = getAttributeRequestValue( account, "Text21" );
String jobTitle = getAttributeRequestValue( account, "Text2" );
String department = getAttributeRequestValue( account, "Text3" );
String location = getAttributeRequestValue( account, "Text4" );
String Disabled = getAttributeRequestValue( account, "Disabled" );
String mode = getAttributeRequestValue( account, "mode" );
try {
log.info("CCURE: Connecting to database !!!!!!!!!");
String dbURL3 = "jdbc:sqlserver://...;integratedSecurity=false;trustServerCertificate=true;Trusted_Connection=SSPI;MultiSubnetFailover=True;";
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
Connection connection = DriverManager.getConnection(dbURL3);
log.info("CCURE: database Connected");
preparedStatement = connection.prepareStatement(insertQuery);
preparedStatement.setString( 1, empId );
preparedStatement.setString( 2, lastname );
preparedStatement.setString( 3, firstname );
preparedStatement.setString( 4, middlename );
preparedStatement.setString( 5, companyname ); //Text21
preparedStatement.setString( 6, jobTitle ); //Text2
preparedStatement.setString( 7, department ); //Text3
preparedStatement.setString( 8, location ); //Text4
preparedStatement.setString( 9, Disabled );
preparedStatement.setString( 10, mode ); //mode
preparedStatement.executeUpdate();
result.setStatus(ProvisioningResult.STATUS_COMMITTED);
log.info("CCURE: Data Added to DB Successfully");
} catch (SQLException ex) {
result.setStatus(ProvisioningResult.STATUS_FAILED);
result.addError(ex.getMessage());
log.error("CCURE: Error Found while Insert into DB" + ex.getMessage());
}
}
public void writeToDB(AccountRequest account) throws Exception {
log.info("CCURE: Inside writeToDB method");
String insertQuery = "INSERT INTO dbo.staging( Text1, LastName, FirstName, MiddleName, Text21, Text2, Text3, Text4, Disabled, mode, Text5, Text6, Text7, Text8, Text9, Text10, Text11, Text12, Text13, Text14, Text15, Text16, Text17, Text18, Text19, Text20, ext22, Text23, Text24, Text25, Logical2, Date1, Date2, Date3, Date4, EmailAddress, WindowsPrincipal, ManagerEmail ) VALUES ( ?, ?, ?, ?, ?, ?, ?, ?, ?, ?,?, ?, ?, ?, ?, ?, ?, ?, ?, ?,?, ?, ?, ?, ?, ?, ?, ?, ?, ?,?, ?, ?, ?, ?, ?, ?, ? )";
String empId = getAttributeRequestValue( account, "Text1" ); //EmployeeID
String lastname = getAttributeRequestValue( account, "LastName" );
String firstname = getAttributeRequestValue( account, "FirstName" );
String middlename = getAttributeRequestValue( account, "MiddleName" );
String companyname = getAttributeRequestValue( account, "Text21" );
String jobTitle = getAttributeRequestValue( account, "Text2" );
String department = getAttributeRequestValue( account, "Text3" );
String location = getAttributeRequestValue( account, "Text4" );
String Disabled = getAttributeRequestValue( account, "Disabled" );
String mode = getAttributeRequestValue( account, "mode" );
String departmentId = getAttributeRequestValue( account, "Text5" );
String employeeType = getAttributeRequestValue( account, "Text6" );
String connectionType = getAttributeRequestValue( account, "Text7" );
String workPhone = getAttributeRequestValue( account, "Text8" );
String addressLine1 = getAttributeRequestValue( account, "Text9" );
String addressLine2 = getAttributeRequestValue( account, "Text10" );
String city = getAttributeRequestValue( account, "Text11" );
String postalCode = getAttributeRequestValue( account, "Text12" );
String country = getAttributeRequestValue( account, "Text13" );
String state = getAttributeRequestValue( account, "Text14" );
String regionId = getAttributeRequestValue( account, "Text15" );
String regionName = getAttributeRequestValue( account, "Text16" );
String geoRegion = getAttributeRequestValue( account, "Text17" );
String locationId = getAttributeRequestValue( account, "Text18" );
String lcs = getAttributeRequestValue( account, "Text19" );
String companyId = getAttributeRequestValue( account, "Text20" );
String departmentbelongsto = getAttributeRequestValue( account, "Text22" );
String functionalunit = getAttributeRequestValue( account, "Text23" );
String action = getAttributeRequestValue( account, "Text24" );
String actionreason = getAttributeRequestValue( account, "Text25" );
String ismanager = getAttributeRequestValue( account, "Logical2" );
String startDate = getAttributeRequestValue( account, "Date1" );
String endDate = getAttributeRequestValue( account, "Date2" );
String expectedenddate = getAttributeRequestValue( account, "Date3" );
String assignmeneteffectivedate = getAttributeRequestValue( account, "Date4" );
String email = getAttributeRequestValue( account, "EmailAddress" );
String principal = getAttributeRequestValue( account, "WindowsPrincipal" );
String managerEmail = getAttributeRequestValue( account, "ManagerEmail" );
try {
log.info("CCURE: Connecting to database !!!!!!!!!");
String dbURL3 = "jdbc:sqlserver://...;integratedSecurity=false;trustServerCertificate=true;Trusted_Connection=SSPI;MultiSubnetFailover=True;";
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
Connection connection = DriverManager.getConnection(dbURL3);
log.info("CCURE: database Connected");
preparedStatement = connection.prepareStatement(insertQuery);
preparedStatement.setString( 1, empId );
preparedStatement.setString( 2, lastname );
preparedStatement.setString( 3, firstname );
preparedStatement.setString( 4, middlename );
preparedStatement.setString( 5, companyname ); //Text21
preparedStatement.setString( 6, jobTitle ); //Text2
preparedStatement.setString( 7, department ); //Text3
preparedStatement.setString( 8, location ); //Text4
preparedStatement.setString( 9, Disabled );
preparedStatement.setString( 10, mode ); //mode
preparedStatement.setString( 11, departmentId ); //Text5
preparedStatement.setString( 12, employeeType ); //Text6
preparedStatement.setString( 13, connectionType ); //Text7
preparedStatement.setString( 14, workPhone ); //Text8
preparedStatement.setString( 15, addressLine1 ); //Text9
preparedStatement.setString( 16, addressLine2 ); //Text10
preparedStatement.setString( 17, city ); //Text11
preparedStatement.setString( 18, postalCode ); //Text12
preparedStatement.setString( 19, country ); //Text13
preparedStatement.setString( 20, state ); //Text14
preparedStatement.setString( 21, regionId ); //Text15
preparedStatement.setString( 22, regionName ); //Text16
preparedStatement.setString( 23, geoRegion ); //Text17
preparedStatement.setString( 24, locationId ); //Text18
preparedStatement.setString( 25, lcs ); //Text19
preparedStatement.setString( 26, companyId ); //Text20
preparedStatement.setString( 27, departmentbelongsto ); //Text22
preparedStatement.setString( 28, functionalunit ); //Text23
preparedStatement.setString( 29, action ); //Text24
preparedStatement.setString( 30, actionreason ); //Text25
preparedStatement.setString( 31, ismanager ); //Logical2
preparedStatement.setString( 32, startDate ); //Date1
preparedStatement.setString( 33, endDate ); //Date2
preparedStatement.setString( 34, expectedenddate ); //Date3
preparedStatement.setString( 35, assignmeneteffectivedate ); //Date4
preparedStatement.setString( 36, email ); //EmailAddress
preparedStatement.setString( 37, principal ); //WindowsPrincipal
preparedStatement.setString( 38, managerEmail ); //ManagerEmail
preparedStatement.executeUpdate();
result.setStatus(ProvisioningResult.STATUS_COMMITTED);
log.info("CCURE: Data Added to DB Successfully");
} catch (SQLException ex) {
result.setStatus(ProvisioningResult.STATUS_FAILED);
result.addError(ex.getMessage());
log.error("CCURE: Error Found while Insert into DB" + ex.getMessage());
}
}
// Code Starts here
// Main
ProvisioningResult result = new ProvisioningResult();
PreparedStatement preparedStatement;
log.info(" CCURE: !!!!!! Global Provisioning Rule Started !!!!!! ");
if (plan != null) {
log.info("CCURE: Plan is " + plan);
List accounts = plan.getAccountRequests();
if ((accounts != null) && (accounts.size() > 0)) {
for (AccountRequest account : accounts) {
log.info("CCURE: account is " + account);
try {
if (AccountRequest.Operation.Disable.equals(account.getOperation())) {
log.info("CCURE: Account Request is Disable ");
UpdateDB(account);
} else if (AccountRequest.Operation.Enable.equals(account.getOperation())) {
log.info("CCURE: Account Request is Enable ");
UpdateDB(account);
} else if ( AccountRequest.Operation.Create.equals( account.getOperation() ) ) {
log.info("CCURE: Account Request is Create ");
writeToDB(account);
} else if (AccountRequest.Operation.Modify.equals(account.getOperation())) {
log.info("CCURE: Account Request is Modify ");
String Test = getAttributeRequestValue(account, "Disabled");
if (Test != null) {
writeToDB(account);
} else {
log.info("CCURE: Account Request is Modify and Disabled attribute is not present, so skipping the record");
result.setStatus(ProvisioningResult.STATUS_FAILED);
}
} else if (AccountRequest.Operation.Delete.equals(account.getOperation())) {
log.info("CCURE: Delete Operation is not supported");
} else {
log.info("CCURE: Unsupported operation: " + account.getOperation());
}
} catch (Exception e) {
result.setStatus(ProvisioningResult.STATUS_FAILED);
result.addError(e);
log.error("CCURE: Error Found getting operation " + e.getMessage());
}
}
}
}
log.info("CCURE: !!!!!! Global Provisioning Rule Ended !!!!!! ");
return result;
Create provisioning plan
{
"name": "Account",
"description": "this provisioning policy Creates account based on identity provisioning",
"usageType": "CREATE",
"fields": [
{
"name": "Text1",
"transform": {
"type": "identityAttribute",
"attributes": {
"name": "uid"
}
},
"attributes": {},
"isRequired": false,
"type": "string",
"isMultiValued": false
},
{
"name": "LastName",
"transform": {
"type": "identityAttribute",
"attributes": {
"name": "lastname"
}
},
"attributes": {},
"isRequired": false,
"type": "string",
"isMultiValued": false
},
{
"name": "FirstName",
"transform": {
"type": "identityAttribute",
"attributes": {
"name": "firstname"
}
},
"attributes": {},
"isRequired": false,
"type": "string",
"isMultiValued": false
},
{
"name": "MiddleName",
"transform": {
"type": "identityAttribute",
"attributes": {
"name": "middleName"
}
},
"attributes": {},
"isRequired": false,
"type": "string",
"isMultiValued": false
},
{
"name": "PartitionID",
"transform": {
"type": "static",
"attributes": {
"value": "5014"
}
},
"attributes": {},
"isRequired": false,
"type": "string",
"isMultiValued": false
},
{
"name": "PersonnelTypeID",
"transform": {
"type": "static",
"attributes": {
"value": "1"
}
},
"attributes": {},
"isRequired": false,
"type": "string",
"isMultiValued": false
},
{
"name": "Disabled",
"transform": {
"type": "static",
"attributes": {
"value": "1"
}
},
"attributes": {},
"isRequired": false,
"type": "string",
"isMultiValued": false
},
{
"name": "Text2",
"transform": {
"type": "identityAttribute",
"attributes": {
"name": "jobDescription"
}
},
"attributes": {},
"isRequired": false,
"type": "string",
"isMultiValued": false
},
{
"name": "Text3",
"transform": {
"type": "identityAttribute",
"attributes": {
"name": "departmentName"
}
},
"attributes": {},
"isRequired": false,
"type": "string",
"isMultiValued": false
},
{
"name": "Text4",
"transform": {
"type": "identityAttribute",
"attributes": {
"name": "locationName"
}
},
"attributes": {},
"isRequired": false,
"type": "string",
"isMultiValued": false
},
{
"name": "Text5",
"transform": {
"type": "identityAttribute",
"attributes": {
"name": "departmentId"
}
},
"attributes": {},
"isRequired": false,
"type": "string",
"isMultiValued": false
},
{
"name": "Text6",
"transform": {
"type": "identityAttribute",
"attributes": {
"name": "employeeType"
}
},
"attributes": {},
"isRequired": false,
"type": "string",
"isMultiValued": false
},
{
"name": "Text7",
"transform": {
"type": "identityAttribute",
"attributes": {
"name": "connectionType"
}
},
"attributes": {},
"isRequired": false,
"type": "string",
"isMultiValued": false
},
{
"name": "Text8",
"transform": {
"type": "identityAttribute",
"attributes": {
"name": "workPhone"
}
},
"attributes": {},
"isRequired": false,
"type": "string",
"isMultiValued": false
},
{
"name": "Text9",
"transform": {
"type": "identityAttribute",
"attributes": {
"name": "addressLine1"
}
},
"attributes": {},
"isRequired": false,
"type": "string",
"isMultiValued": false
},
{
"name": "Text10",
"transform": {
"type": "identityAttribute",
"attributes": {
"name": "addressLine2"
}
},
"attributes": {},
"isRequired": false,
"type": "string",
"isMultiValued": false
},
{
"name": "Text11",
"transform": {
"type": "identityAttribute",
"attributes": {
"name": "city"
}
},
"attributes": {},
"isRequired": false,
"type": "string",
"isMultiValued": false
},
{
"name": "Text12",
"transform": {
"type": "identityAttribute",
"attributes": {
"name": "postalCode"
}
},
"attributes": {},
"isRequired": false,
"type": "string",
"isMultiValued": false
},
{
"name": "Text13",
"transform": {
"type": "identityAttribute",
"attributes": {
"name": "country"
}
},
"attributes": {},
"isRequired": false,
"type": "string",
"isMultiValued": false
},
{
"name": "Text14",
"transform": {
"type": "identityAttribute",
"attributes": {
"name": "state"
}
},
"attributes": {},
"isRequired": false,
"type": "string",
"isMultiValued": false
},
{
"name": "Text15",
"transform": {
"type": "identityAttribute",
"attributes": {
"name": "regionId"
}
},
"attributes": {},
"isRequired": false,
"type": "string",
"isMultiValued": false
},
{
"name": "Text16",
"transform": {
"type": "identityAttribute",
"attributes": {
"name": "regionName"
}
},
"attributes": {},
"isRequired": false,
"type": "string",
"isMultiValued": false
},
{
"name": "Text17",
"transform": {
"type": "identityAttribute",
"attributes": {
"name": "geoRegion"
}
},
"attributes": {},
"isRequired": false,
"type": "string",
"isMultiValued": false
},
{
"name": "Text18",
"transform": {
"type": "identityAttribute",
"attributes": {
"name": "locationId"
}
},
"attributes": {},
"isRequired": false,
"type": "string",
"isMultiValued": false
},
{
"name": "Text19",
"transform": {
"type": "identityAttribute",
"attributes": {
"name": "cloudLifecycleState"
}
},
"attributes": {},
"isRequired": false,
"type": "string",
"isMultiValued": false
},
{
"name": "Text20",
"transform": {
"type": "identityAttribute",
"attributes": {
"name": "companyId"
}
},
"attributes": {},
"isRequired": false,
"type": "string",
"isMultiValued": false
},
{
"name": "Text21",
"transform": {
"type": "identityAttribute",
"attributes": {
"name": "companyName"
}
},
"attributes": {},
"isRequired": false,
"type": "string",
"isMultiValued": false
},
{
"name": "Text22",
"transform": {
"type": "identityAttribute",
"attributes": {
"name": "departmentbelongsto"
}
},
"attributes": {},
"isRequired": false,
"type": "string",
"isMultiValued": false
},
{
"name": "Text23",
"transform": {
"type": "identityAttribute",
"attributes": {
"name": "functionalunit"
}
},
"attributes": {},
"isRequired": false,
"type": "string",
"isMultiValued": false
},
{
"name": "Text24",
"transform": {
"type": "identityAttribute",
"attributes": {
"name": "action"
}
},
"attributes": {},
"isRequired": false,
"type": "string",
"isMultiValued": false
},
{
"name": "Text25",
"transform": {
"type": "identityAttribute",
"attributes": {
"name": "actionreason"
}
},
"attributes": {},
"isRequired": false,
"type": "string",
"isMultiValued": false
},
{
"name": "Logical2",
"transform": {
"type": "identityAttribute",
"attributes": {
"name": "ismanager"
}
},
"attributes": {},
"isRequired": false,
"type": "string",
"isMultiValued": false
},
{
"name": "Date1",
"transform": {
"type": "identityAttribute",
"attributes": {
"name": "startDate"
}
},
"attributes": {},
"isRequired": false,
"type": "string",
"isMultiValued": false
},
{
"name": "Date2",
"transform": {
"type": "identityAttribute",
"attributes": {
"name": "endDate"
}
},
"attributes": {},
"isRequired": false,
"type": "string",
"isMultiValued": false
},
{
"name": "Date3",
"transform": {
"type": "identityAttribute",
"attributes": {
"name": "expectedenddate"
}
},
"attributes": {},
"isRequired": false,
"type": "string",
"isMultiValued": false
},
{
"name": "Date4",
"transform": {
"type": "identityAttribute",
"attributes": {
"name": "assignmentEffectiveDate"
}
},
"attributes": {},
"isRequired": false,
"type": "string",
"isMultiValued": false
},
{
"name": "EmailAddress",
"transform": {
"type": "identityAttribute",
"attributes": {
"name": "email"
}
},
"attributes": {},
"isRequired": false,
"type": "string",
"isMultiValued": false
},
{
"name": "WindowsPrincipal",
"transform": {
"type": "identityAttribute",
"attributes": {
"name": "downlevelLogon"
}
},
"attributes": {},
"isRequired": false,
"type": "string",
"isMultiValued": false
},
{
"name": "ManagerEmail",
"transform": {
"type": "identityAttribute",
"attributes": {
"name": "managerEmail"
}
},
"attributes": {},
"isRequired": false,
"type": "string",
"isMultiValued": false
},
{
"name": "Int1",
"transform": {
"type": "identityAttribute",
"attributes": {
"name": "buildingBadgeId"
}
},
"attributes": {},
"isRequired": false,
"type": "string",
"isMultiValued": false
},
{
"name": "mode",
"transform": {
"type": "static",
"attributes": {
"value": "create"
}
},
"attributes": {},
"isRequired": false,
"type": "string",
"isMultiValued": false
}
]
}
Disable Provisioning plan
{
"name": "Disable",
"description": "this provisioning policy Disables access based on an identity going inactive",
"usageType": "DISABLE",
"fields": [
{
"name": "Text1",
"transform": {
"type": "identityAttribute",
"attributes": {
"name": "identificationNumber"
}
},
"attributes": {},
"isRequired": false,
"type": "string",
"isMultiValued": false
},
{
"name": "LastName",
"transform": {
"type": "identityAttribute",
"attributes": {
"name": "lastname"
}
},
"attributes": {},
"isRequired": false,
"type": "string",
"isMultiValued": false
},
{
"name": "FirstName",
"transform": {
"type": "identityAttribute",
"attributes": {
"name": "firstname"
}
},
"attributes": {},
"isRequired": false,
"type": "string",
"isMultiValued": false
},
{
"name": "MiddleName",
"transform": {
"type": "identityAttribute",
"attributes": {
"name": "middleName"
}
},
"attributes": {},
"isRequired": false,
"type": "string",
"isMultiValued": false
},
{
"name": "PartitionID",
"transform": null,
"attributes": {},
"isRequired": false,
"type": "string",
"isMultiValued": false
},
{
"name": "PersonnelTypeID",
"transform": null,
"attributes": {},
"isRequired": false,
"type": "string",
"isMultiValued": false
},
{
"name": "Disabled",
"transform": {
"type": "static",
"attributes": {
"value": "1"
}
},
"attributes": {},
"isRequired": false,
"type": "string",
"isMultiValued": false
},
{
"name": "Text2",
"transform": {
"type": "identityAttribute",
"attributes": {
"name": "jobDescription"
}
},
"attributes": {},
"isRequired": false,
"type": "string",
"isMultiValued": false
},
{
"name": "Text3",
"transform": {
"type": "identityAttribute",
"attributes": {
"name": "departmentName"
}
},
"attributes": {},
"isRequired": false,
"type": "string",
"isMultiValued": false
},
{
"name": "Text4",
"transform": {
"type": "identityAttribute",
"attributes": {
"name": "locationName"
}
},
"attributes": {},
"isRequired": false,
"type": "string",
"isMultiValued": false
},
{
"name": "Text5",
"transform": {
"type": "identityAttribute",
"attributes": {
"name": "departmentId"
}
},
"attributes": {},
"isRequired": false,
"type": "string",
"isMultiValued": false
},
{
"name": "Text6",
"transform": {
"type": "identityAttribute",
"attributes": {
"name": "employeeType"
}
},
"attributes": {},
"isRequired": false,
"type": "string",
"isMultiValued": false
},
{
"name": "Text7",
"transform": {
"type": "identityAttribute",
"attributes": {
"name": "connectionType"
}
},
"attributes": {},
"isRequired": false,
"type": "string",
"isMultiValued": false
},
{
"name": "Text8",
"transform": {
"type": "identityAttribute",
"attributes": {
"name": "workPhone"
}
},
"attributes": {},
"isRequired": false,
"type": "string",
"isMultiValued": false
},
{
"name": "Text9",
"transform": {
"type": "identityAttribute",
"attributes": {
"name": "addressLine1"
}
},
"attributes": {},
"isRequired": false,
"type": "string",
"isMultiValued": false
},
{
"name": "Text10",
"transform": {
"type": "identityAttribute",
"attributes": {
"name": "addressLine2"
}
},
"attributes": {},
"isRequired": false,
"type": "string",
"isMultiValued": false
},
{
"name": "Text11",
"transform": {
"type": "identityAttribute",
"attributes": {
"name": "city"
}
},
"attributes": {},
"isRequired": false,
"type": "string",
"isMultiValued": false
},
{
"name": "Text12",
"transform": {
"type": "identityAttribute",
"attributes": {
"name": "postalCode"
}
},
"attributes": {},
"isRequired": false,
"type": "string",
"isMultiValued": false
},
{
"name": "Text13",
"transform": {
"type": "identityAttribute",
"attributes": {
"name": "country"
}
},
"attributes": {},
"isRequired": false,
"type": "string",
"isMultiValued": false
},
{
"name": "Text14",
"transform": {
"type": "identityAttribute",
"attributes": {
"name": "state"
}
},
"attributes": {},
"isRequired": false,
"type": "string",
"isMultiValued": false
},
{
"name": "Text15",
"transform": {
"type": "identityAttribute",
"attributes": {
"name": "regionId"
}
},
"attributes": {},
"isRequired": false,
"type": "string",
"isMultiValued": false
},
{
"name": "Text16",
"transform": {
"type": "identityAttribute",
"attributes": {
"name": "regionName"
}
},
"attributes": {},
"isRequired": false,
"type": "string",
"isMultiValued": false
},
{
"name": "Text17",
"transform": {
"type": "identityAttribute",
"attributes": {
"name": "geoRegion"
}
},
"attributes": {},
"isRequired": false,
"type": "string",
"isMultiValued": false
},
{
"name": "Text18",
"transform": {
"type": "identityAttribute",
"attributes": {
"name": "locationId"
}
},
"attributes": {},
"isRequired": false,
"type": "string",
"isMultiValued": false
},
{
"name": "Text19",
"transform": {
"type": "identityAttribute",
"attributes": {
"name": "cloudLifecycleState"
}
},
"attributes": {},
"isRequired": false,
"type": "string",
"isMultiValued": false
},
{
"name": "Text20",
"transform": {
"type": "identityAttribute",
"attributes": {
"name": "companyId"
}
},
"attributes": {},
"isRequired": false,
"type": "string",
"isMultiValued": false
},
{
"name": "Text21",
"transform": {
"type": "identityAttribute",
"attributes": {
"name": "companyName"
}
},
"attributes": {},
"isRequired": false,
"type": "string",
"isMultiValued": false
},
{
"name": "Text22",
"transform": {
"type": "identityAttribute",
"attributes": {
"name": "departmentbelongsto"
}
},
"attributes": {},
"isRequired": false,
"type": "string",
"isMultiValued": false
},
{
"name": "Text23",
"transform": {
"type": "identityAttribute",
"attributes": {
"name": "functionalunit"
}
},
"attributes": {},
"isRequired": false,
"type": "string",
"isMultiValued": false
},
{
"name": "Text24",
"transform": {
"type": "identityAttribute",
"attributes": {
"name": "action"
}
},
"attributes": {},
"isRequired": false,
"type": "string",
"isMultiValued": false
},
{
"name": "Text25",
"transform": {
"type": "identityAttribute",
"attributes": {
"name": "actionreason"
}
},
"attributes": {},
"isRequired": false,
"type": "string",
"isMultiValued": false
},
{
"name": "Logical2",
"transform": {
"type": "identityAttribute",
"attributes": {
"name": "ismanager"
}
},
"attributes": {},
"isRequired": false,
"type": "string",
"isMultiValued": false
},
{
"name": "Date1",
"transform": {
"type": "identityAttribute",
"attributes": {
"name": "startDate"
}
},
"attributes": {},
"isRequired": false,
"type": "string",
"isMultiValued": false
},
{
"name": "Date2",
"transform": {
"type": "identityAttribute",
"attributes": {
"name": "endDate"
}
},
"attributes": {},
"isRequired": false,
"type": "string",
"isMultiValued": false
},
{
"name": "Date3",
"transform": {
"type": "identityAttribute",
"attributes": {
"name": "expectedenddate"
}
},
"attributes": {},
"isRequired": false,
"type": "string",
"isMultiValued": false
},
{
"name": "Date4",
"transform": {
"type": "identityAttribute",
"attributes": {
"name": "assignmentEffectiveDate"
}
},
"attributes": {},
"isRequired": false,
"type": "string",
"isMultiValued": false
},
{
"name": "EmailAddress",
"transform": {
"type": "identityAttribute",
"attributes": {
"name": "email"
}
},
"attributes": {},
"isRequired": false,
"type": "string",
"isMultiValued": false
},
{
"name": "WindowsPrincipal",
"transform": {
"type": "identityAttribute",
"attributes": {
"name": "downlevelLogon"
}
},
"attributes": {},
"isRequired": false,
"type": "string",
"isMultiValued": false
},
{
"name": "ManagerEmail",
"transform": {
"type": "identityAttribute",
"attributes": {
"name": "managerEmail"
}
},
"attributes": {},
"isRequired": false,
"type": "string",
"isMultiValued": false
},
{
"name": "Int1",
"transform": {
"type": "identityAttribute",
"attributes": {
"name": "buildingBadgeId"
}
},
"attributes": {},
"isRequired": false,
"type": "string",
"isMultiValued": false
},
{
"name": "mode",
"transform": {
"type": "static",
"attributes": {
"value": "disable"
}
},
"attributes": {},
"isRequired": false,
"type": "string",
"isMultiValued": false
}
]
}
