I’m encountering an issue in SailPoint IIQ 8.4 related to Advanced Analytics and Advanced Policy Violation during Refresh.
Context:
I’ve configured policy rules that are triggered during Identity Refresh (policy evaluation). The identity refresh job completes successfully without any visible errors in the logs.
However, when I navigate to Advanced Analytics (under “Syslog”), I see the following error message: “Selected filter has produced more than one result”
And when I click the error for more detail, it just says: “No stacktrace available”
Additional Info:
I’m not applying any custom filters directly in Advanced Analytics.
The issue seems to appear only after policy violations are created.
This may be impacting the visibility or loading of data in the Advanced Analytics module.
Questions:
What does this error typically mean in IIQ?
Is it caused by duplicate records in a field that expects a single value (like policy reference or identity name)?
How can I trace the root cause of this, given that no stacktrace is available?
Are there specific configuration checks I should perform on the Analytics definitions or saved filters?
Policy Violation Table
SELECT * FROM spt_policy_violation;
Examine how violations are structured. Are there any oddities that might cause the analytics engine to trip?
If it is okay then, could you please try to delete the newly created policies, let’s see will that sort out the issue as you have mentioned that the issue caused by latest violations.
Make sure all the system and mandatory identity refresh tasks have been performed without any issue.
Here are other possibilities and deeper troubleshooting steps:
1. Granular Duplicates in spt_policy_violation
Even if policy and rule names are unique, the combination of factors that define a specific violation might be duplicated. The error “Selected filter has produced more than one result” points to a query that expects a unique record but finds multiple identical ones based on its criteria.
Action: Execute a more granular SQL query directly on your IIQ database to identify true duplicates in the spt_policy_violation table. This query should include all columns that define a unique policy violation:
SQLSELECT
pv.identity_id,
pv.policy_id,
pv.constraint_id,
pv.attribute_id, -- Critical: The specific attribute causing the violation (e.g., roles, entitlements)
pv.value, -- Critical: The actual value of the attribute that's violating the policy
pv.description, -- The description of the violation
pv.created, -- Timestamp of creation (useful for identifying multiple identical violations created at different times)
pv.active, -- Whether the violation is currently active
COUNT(*) AS NumberOfDuplicates
FROM
spt_policy_violation pv
GROUP BY
pv.identity_id,
pv.policy_id,
pv.constraint_id,
pv.attribute_id,
pv.value,
pv.description,
pv.created,
pv.active
HAVING
COUNT(*) > 1
ORDER BY
NumberOfDuplicates DESC, pv.identity_id, pv.policy_id;