GlideRecord.canWrite in the Edit UI Action does not work if the 'Active' field is checked in the ACL


The Global UI Action 'Edit...' for one-to-many-lists uses the following clause in the condition:

(new GlideRecord(current.getTableName())).canWrite()

If the ACL for the listed table contains a condition that checks the 'Active' field, this will fail, regardless of the state, even if Active IS NOT true or Active IS NOT false should pass for null or undefined.

UI Action example:


Steps to Reproduce

1. Add the 'Incidents' related list to the Problem form.
2. Impersonate an itil user and verify that the 'Edit...' UI Action is present on the Incidents related list.
3. Login as administrator and modify the ACL for Incident to have a condition 'ActiveISNOTfalse'.
4. Impersonate an itil user and verify the 'Edit...' UI Action no longer shows up.
5. Perform steps 3 - 4 again but with the condition 'ActiveISNOTtrue'.
One of these conditions should work regardless of the default value of 'Active'. If 'orActiveISempty' is added the ACL will work again.


After carefully considering the severity and frequency of the issue, and the cost and risk of attempting a fix, it has been decided to not address this issue in any current or near future releases. We do not make these decisions lightly, and we apologize for any inconvenience. You can submit an Enhancement Request and Subscribe to this article to be notified in case of future updates.

As a workaround, add 'Active is empty' to the condition on the affected ACL. Alternatively, instead of the "Active" field, use the "Incident State" field as in the OOB provided ACL.


Related Problem: PRB623422