Procurement Orders not visible in ServiceNow Agent App due to missing query ACL on proc_po<!-- /*NS Branding Styles*/ --> .ns-kb-css-body-editor-container { p { font-size: 12pt; font-family: Lato; color: var(--now-color--text-primary, #000000); } span { font-size: 12pt; font-family: Lato; color: var(--now-color--text-primary, #000000); } h2 { font-size: 24pt; font-family: Lato; color: var(--now-color--text-primary, black); } h3 { font-size: 18pt; font-family: Lato; color: var(--now-color--text-primary, black); } h4 { font-size: 14pt; font-family: Lato; color: var(--now-color--text-primary, black); } a { font-size: 12pt; font-family: Lato; color: var(--now-color--link-primary, #00718F); } a:hover { font-size: 12pt; color: var(--now-color--link-primary, #024F69); } a:target { font-size: 12pt; color: var(--now-color--link-primary, #032D42); } a:visited { font-size: 12pt; color: var(--now-color--link-primary, #00718f); } ul { font-size: 12pt; font-family: Lato; } li { font-size: 12pt; font-family: Lato; } img { display: ; max-width: ; width: ; height: ; } } .kb-wrapper { font-family: 'Lato', sans-serif; font-size: 12pt; line-height: 1.7; color: #000000; max-width: 100%; } .kb-wrapper h2 { font-family: 'Lato', sans-serif; font-size: 14pt; font-weight: 900; color: #032D42; text-transform: uppercase; border-bottom: 2px solid #e8fce4; padding-bottom: 4px; margin-top: 28px; margin-bottom: 10px; } .kb-wrapper p { margin: 8px 0; } .kb-wrapper ul, .kb-wrapper ol { margin: 8px 0 8px 24px; padding: 0; } .kb-wrapper li { margin-bottom: 4px; } /* Numbered steps */ .kb-wrapper .steps-list { list-style: none; counter-reset: step-counter; margin-left: 0; padding: 0; } .kb-wrapper .steps-list > li { counter-increment: step-counter; display: flex; align-items: flex-start; gap: 12px; margin-bottom: 10px; } .kb-wrapper .steps-list > li::before { content: counter(step-counter); display: inline-flex; align-items: center; justify-content: center; min-width: 26px; height: 26px; border-radius: 50%; background-color: #032D42; color: #63DF4E; font-weight: 900; font-size: 11pt; flex-shrink: 0; margin-top: 2px; } .kb-wrapper .steps-list .step-content { flex: 1; } .kb-wrapper .steps-list .step-content ul { margin: 6px 0 0 20px; list-style: disc; } .kb-wrapper .steps-list .step-content ul li { display: list-item; counter-increment: none; margin-bottom: 3px; } .kb-wrapper .steps-list .step-content ul li::before { display: none; } /* Callout boxes */ .kb-wrapper .callout-info { border-left: 4px solid #52B8FF; background-color: #e6f4ff; padding: 10px 14px; margin: 14px 0; border-radius: 0 4px 4px 0; } .kb-wrapper .callout-warning { border-left: 4px solid #e6a817; background-color: #fff4e0; padding: 10px 14px; margin: 14px 0; border-radius: 0 4px 4px 0; } /* Inline code */ .kb-wrapper code { font-family: 'Courier New', Courier, monospace; font-size: 10.5pt; background-color: #e6f0f5; color: #032D42; border: 1px solid #b8cfd8; border-radius: 3px; padding: 1px 5px; } /* Code block */ .kb-wrapper pre { background-color: #e6f0f5; color: #032D42; border: 1px solid #b8cfd8; border-radius: 4px; padding: 12px 14px; overflow-x: auto; font-family: 'Courier New', Courier, monospace; font-size: 10.5pt; line-height: 1.5; margin: 12px 0; white-space: pre-wrap; word-break: break-word; } /* Tables */ .kb-wrapper table { width: 100%; border-collapse: collapse; margin: 14px 0; font-size: 12pt; } .kb-wrapper th { background-color: #032D42; color: #ffffff; padding: 8px 12px; text-align: left; font-weight: 700; } .kb-wrapper td { padding: 7px 12px; border-bottom: 1px solid #d0dde3; } .kb-wrapper tr:nth-child(even) td { background-color: #e8fce4; } /* Related links */ .kb-wrapper .related-links a { color: #032D42; text-decoration: underline; } .kb-wrapper .link-disclaimer { font-size: 10pt; font-style: italic; margin: 2px 0 10px 0; color: #444; } .kb-wrapper hr { border: none; border-top: 1px solid #e8fce4; margin: 24px 0; } Issue Procurement Orders are not visible in the ServiceNow Agent App for non-admin users who have the required procurement roles (procurement_user or procurement_admin) and the appropriate table-level ACL permissions to view the proc_po table. Symptoms Users with the procurement_user or procurement_admin role cannot see Purchase Order records when selecting POs next 30 days in the ServiceNow Agent App.Users with the admin role can see Purchase Order records in the Agent App without issue.Affected users can view Purchase Orders normally in the Classic UI.The following message appears in System Logs (syslog) for the affected transaction: Invalid query detected, please check logs for details [Unknown field null in table proc_po] The following warning appears in the application node logs for the affected transaction: Part of the query on proc_po has been ignored because of insufficient access for 'query_range' operation on proc_po.due_by Facts The POs next 30 days filter in the Agent App uses the following encoded query against the proc_po table: statusINordered,pending^due_byRELATIVELE@dayofweek@ahead@30^ORdue_byISEMPTY^EQ^ORDERBYnumber This query includes a relative range operation (RELATIVELE) on the proc_po.due_by field, which requires query_range ACL access.By default, when no query ACL is defined for a table, a *.* (star-dot-star) ACL grants query_range access to all users. However, when any query ACL is explicitly defined for a table, that default behavior is overridden — all query_range operations then require an explicit, matching query ACL.Query ACLs for proc_po.* are not defined out of the box, which causes the query_range operation on proc_po.due_by to be blocked for non-admin users.Admin users bypass ACL enforcement and are not affected. Note: This behavior is consistent with the Query ACL security model introduced to prevent data inference attacks. When explicit query ACLs exist on a table, they take precedence over the default *.* grant, and any query_range operation not covered by a matching ACL will be denied. Release All Versions Cause No query ACL is defined for proc_po.*. When a relative date range filter (such as POs next 30 days) is applied in the Agent App, the platform evaluates query_range access on the proc_po.due_by field. Because no explicit query ACL grants this access to non-admin users, the range portion of the query is silently dropped, and no records are returned. Resolution Create a query ACL for proc_po.* that grants query_range access to the appropriate procurement roles. Navigate to System Security > Access Control (ACL). Click New to create a new ACL record. Set the following field values: Type: recordOperation: query_rangeName: proc_po.* In the Requires role related list, add the roles that should be granted query_range access — at minimum, procurement_user and procurement_admin. Save the ACL record. Test by logging in as a non-admin user with the procurement_user or procurement_admin role and selecting POs next 30 days in the Agent App. Purchase Order records should now be returned. Warning: Modifying ACLs can affect record visibility across the platform. Validate this change in a sub-production environment before applying it to production, in accordance with your organization's change management process. Related Links Query ACLs — ServiceNow Documentation Procurement — Purchase Orders (proc_po) table reference