We have a before create rule used for generating sAMAccountName and email for and Active Directory account
The sAMAccountName is made of the first letter of the identity’s first name concatenated with an incremental number that is stored on a file on IQService machine.
eg c000001
After consulting the file, the process updates the file adding +1 to the incremental number
There is a lock/mutex in the powershell script to make sure that the file is used by only one process at a time.
But sometimes a process dies because of timeout waiting for the lock, and when this happens, the request that is sent to the IQService doesn’t have the sAMAccountName attribute, so the account created will have this attribute with a random value starting with $ eg $E7E500-1R4GNAI9BCET
Where are using try/except throw syntax, and we thought that when raising an exception the request wouldn’t be sent to IQService, but it seems this is not the case.
Is there a way to not send the Request to the IQService when the waiting lock times out? Or when the before creation script starts running the request will be sent no matter what?
An important consideration with IdentityAttribute rules is whether generation logic that includes uniqueness checks is acceptable. While not explicitly disallowed, this type of logic is firmly against SailPoint’s best practices. When calculating and promoting identity attributes via a transform or a rule, the logic contained within the attribute is always re-run and new values might end up being generated where such behavior is not desired. Additionally, the attribute calculation process is multi-threaded, so the uniqueness logic contained on a single attribute is not always guaranteed to be accurate. For this reason, SailPoint strongly discourages the use of logic that conducts uniqueness checks within an IdentityAttribute rule. The recommendation is to execute this check during account generation for the target system where the value is needed.
I’m searching for more information about this timeout attribute, but I still couldn’t find some things:
Is it in seconds?
Does it have a limit?
When the rule times out, the request is sent to IQS automatically?
Is there a limit of how many processes can be running at the same time? I guess if there are too many waiting for locks/mutex (this only happens for the script residing in IQS machine) will ISC kill all of them? idk
I’ll try increasing the timeout attribute for the rule and see what happens