I Have created custom workflow which is launching via quick link to update Extending contractor accountExpires value in AD.
Quicklink Extend contractor form>>Entering accountExpires date>> workflow will launch>>setting Identity Attributes >> building Modify plan for AD to update accountExpires and executing plan using Provisioner>> creating Audit Event.
when i do this process, provisioning plan is getting two values for same attribute accountExpires due to provisioning policy update account form and in provisioning transaction channel is showing as Filtered.
I have tried to remove the attribute in update account policy, still in provisioning transaction channel is showing Filtered.
Fyi. same process when i did in development environment is working fine, when i do in production facing the issue.
Could you please any one suggest how to overcome this.
Fyi. Attribute sync also there for that attribute accountExpires
Requests gets filtered in the Access Request when the value that you are trying to add is already there. SailPoint engine does it automatically. So, Can you please verify the data of the user accountExpires in SailPoint identity attribute and also the account attribute value in AD.
Let me know if you get the data or have any more questions regarding this.
can you try to remove one of the value from plan using Before Prov Rule of the application.
you can check and if duplicate values are present then remove the one which is not required.
This code will remove the duplicate AttributeRequest from your Plan. Please make sure to provide appropriate conditions(if-else) since this will be placed in Before-Provisioning Rule and it will impact all application level process.
AccountRequest newAccountRequest = new AccountRequest();
List accReqs = plan.getAccountRequests();
AccountRequest accReqToRemove = accReqs.get(0);
for(AccountRequest accReq : accReqs )
{
// create new account request and remove old one
newAccountRequest.setApplication(accReq.getApplicationName());
newAccountRequest.setNativeIdentity(accReq.getNativeIdentity());
newAccountRequest.setOperation(ProvisioningPlan.AccountRequest.Operation.Modify);
AttributeRequest newAttributeRequest = new AttributeRequest();
newAttributeRequest.setName("accountExpires");
newAttributeRequest.setOperation(ProvisioningPlan.Operation.Set);
List attrReqs = accReq.getAttributeRequests();
for(AttributeRequest attrReq : attrReqs)
{
// check whether you want to add first or second value
newAttributeRequest.setValue(attrReq.getValue());
break;
}
List attrReqList = new ArrayList();
attrReqList.add(newAttributeRequest);
newAccountRequest.setAttributeRequests(attrReqList);
}
plan.remove(accReqToRemove);
plan.add(newAccountRequest);