We have noticed that identity Attribute is updated in Workday Aggregation.
for. Identity Attribute is Hired and Workday Worker status is Hired.
If we changed Workday Worker status to Terminated then immediately Identity Attribute (System_LifeCyclestate) is updated to Terminated in Workday Account Aggregation.
Is it expected behavior or we can update Identity Attribute after refresh the identity.
I am little confused. If you refer to Termination operation in SP, this is a correct behavior. Termination operation in SP is the immadiatly inactivation of the identity, so if you configured the provising on workday for the inactivation, the workday account will be terminated.
Instead if you terminate the account from workday and have a mapping to the indentity attribute, the idn attribute will update after the refresh task
Yes. we are terminating the accounts in Workday but when we are doing aggregation during that time idn Attribute gets updated from Active to Terminate so that is causing to trigger Termination Lifecycle events as this is based on Attribute changed from Active to Terminate.
Any idea why iden.attribute gets updated during Aggregation. generally we exepect thos should get updated after refreshed
you can use customization rule in workday application to check the values from the app object and update the that in the identity attribute field and save and commit those changes in rule it self.
@ntelavan Yes this is expected, like if you have direct source mapping. if you want to update these attribute in refresh then use global rule to update this identity attribute.
- get AD Link
- get accountExpires value
- if null or never -> keep previous value
- if accountExpires has date then check with current date
- if it's before current date then return System_LifeCyclestate to terminated
Sample would be like below
String previousValue = identity.getAttribute("System_LifeCyclestate");
Link adLink = identity.getLink(...........);
if(adLink != null) {
String acExpire = (String) adLink.getAttribute("accountExpires");
if(acExpire == null || "never".equals(acExpire)) return previousValue;
//Here you need to parse the acExpire so you can compare with currentDate.
}
``