Hi all,
I want to add the below attributeRequest if I encounter the attributerequest for “ZSCGEN:ABCD” in a Provisioning plan.
Example:
Plan:
<ProvisioningPlan nativeIdentity="brendainsull" targetIntegration="SAP-APP" trackingId="cd07c7c48aaaaa58db55476e9bc26b6">
<AccountRequest application="SAP-APP" nativeIdentity="XXXX" op="Create">
<AttributeRequest name="User Groups" op="Add" value="INTEGRATION"/>
<AttributeRequest name="Roles" op="Add" value="ZSCGEN:ABCD"/>
I want to add the below attributes to the attributeRequest of "roles" in the above plan like the below:
<AttributeRequest name="Roles" op="Add" value="ZSCGEN:ABCD">
<Attributes>
<Map>
<entry key="assignment" value="true"/>
<entry key="endDate" value="2025-04-06"/>
</Map>
</Attributes>
</AttributeRequest>
abartkowski
(Adam Bartkowski)
March 19, 2025, 10:40am
2
Hi @rishavghoshacc
Try out the below code:
for (AccountRequest accountRequest : plan.getAccountRequests()) {
for (AttributeRequest attributeRequest : accountRequest.getAttributeRequests()) {
if ("Roles".equalsIgnoreCase(attributeRequest.getName()) && "ZSCGEN:ABCD".equals(attributeRequest.getValue())) {
attributeRequest.setAssignment(true);
attributeRequest.setRemoveDate(Date.from(Instant.from(LocalDate.now().plusDays(1).atStartOfDay())));
}
}
}
1 Like
@abartkowski This is giving removedate in the attribute. I need endDate
Do following:
for (ProvisioningPlan.AccountRequest accountRequest : plan.getAccountRequests()) {
if ("SAP-APP".equals(accountRequest.getApplication())) {
for (ProvisioningPlan.AttributeRequest attributeRequest : accountRequest.getAttributeRequests()) {
if ("Roles".equalsIgnoreCase(attributeRequest.getName()) && "ZSCGEN:ABCD".equals(attributeRequest.getValue())) {
Attributes<String, Object> attributes = new Attributes<>();
attributes.put("assignment", "true");
attributes.put("endDate", "2025-04-06");
attributeRequest.setArgs(attributes);
}
}
}
}
Output:
<?xml version='1.0' encoding='UTF-8'?>
<!DOCTYPE ProvisioningPlan PUBLIC "sailpoint.dtd" "sailpoint.dtd">
<ProvisioningPlan>
<AccountRequest application="SAP-APP" nativeIdentity="XXXX" op="Create">
<AttributeRequest name="User Groups" op="Set" value="INTEGRATION"/>
<AttributeRequest name="Roles" op="Set" value="ZSCGEN:ABCD">
<Attributes>
<Map>
<entry key="assignment" value="true"/>
<entry key="endDate" value="2025-04-06"/>
</Map>
</Attributes>
</AttributeRequest>
</AccountRequest>
</ProvisioningPlan>
1 Like
And if you need some extension - for testing purpose use the following code:
public void test() throws GeneralException {
ProvisioningPlan plan = new ProvisioningPlan();
ProvisioningPlan.AccountRequest accountRequest = new ProvisioningPlan.AccountRequest();
accountRequest.setApplication("SAP-APP");
accountRequest.setNativeIdentity("XXXX");
accountRequest.setOperation(ProvisioningPlan.AccountRequest.Operation.Create);
ProvisioningPlan.AttributeRequest groupAttributeRequest = new ProvisioningPlan.AttributeRequest();
groupAttributeRequest.setName("User Groups");
groupAttributeRequest.setOperation( ProvisioningPlan.Operation.Set);
groupAttributeRequest.setValue("INTEGRATION");
ProvisioningPlan.AttributeRequest roleAttributeRequest = new ProvisioningPlan.AttributeRequest();
roleAttributeRequest.setName("Roles");
roleAttributeRequest.setOperation( ProvisioningPlan.Operation.Set);
roleAttributeRequest.setValue("ZSCGEN:ABCD");
List<ProvisioningPlan.AttributeRequest> attributeRequests = new ArrayList<ProvisioningPlan.AttributeRequest>();
attributeRequests.add(groupAttributeRequest);
attributeRequests.add(roleAttributeRequest);
accountRequest.setAttributeRequests(attributeRequests);
plan.setAccountRequests(List.of(accountRequest));
modifyAttributeRequests(plan);
System.out.println(plan.toXml());
}
public static void modifyAttributeRequests(ProvisioningPlan plan) {
for (ProvisioningPlan.AccountRequest accountRequest : plan.getAccountRequests()) {
if ("SAP-APP".equals(accountRequest.getApplication())) {
for (ProvisioningPlan.AttributeRequest attributeRequest : accountRequest.getAttributeRequests()) {
if ("Roles".equalsIgnoreCase(attributeRequest.getName()) && "ZSCGEN:ABCD".equals(attributeRequest.getValue())) {
Attributes<String, Object> attributes = new Attributes<>();
attributes.put("assignment", "true");
attributes.put("endDate", "2025-04-06");
attributeRequest.setArgs(attributes);
}
}
}
}
}
1 Like