UI Policies on form widgets, dictionary level mandatory or read only options are enforced on the form even when the UI Policy sets differently. The behaviour is opposite on the desktop UI, where if there is a UI Policy present for a field, this takes precedence over the dictionary setting.
1. Create a new field on incident and set it to mandatory at the dictionary level
2. Create a UI Policy that sets the Visible action to False and Mandatory to False when a condition is met - example Category is (or any valid condition)
3. Create a new incident record on the Service Portal using the form widget using a URL like https://instancename.service-now.com/sp?id=form&table=incident&sys_id=-1
4. Update the form so that the UI Policy condition is met
5. Observe that the new field is not visible since the UI Policy condition is met
6. Submit the Incident after filling out the entire form including all the mandatory fields
EXPECTED: Dictionary level mandatory condition is ignored and you are allowed to submit the incident
ACTUAL: You get a 'Some fields are incomplete' message with the field name
NOTE: Same issue exists for Read-Only as well
This is expected behaviour and by design on the Service Portal, and the desktop UI behaviour is incorrect. UI Policies should not be able to change a mandatory attribute set by the dictionary or data policy.
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.