aggregation-report
Aggregation Report
Generate a health report on SailPoint ISC source aggregations by querying the Search API for source_management events.
How it works
The report queries aggregation events from the ISC Search API and breaks them down into actionable sections. This gives a quick picture of which sources are healthy and which need attention.
Running the report
Execute the bundled script at scripts/report.sh (located in the same directory as this SKILL.md). It accepts an optional time period argument — the default is 1w (one week).
bash <skill-dir>/scripts/report.sh # last 7 days
bash <skill-dir>/scripts/report.sh 1d # last 24 hours
bash <skill-dir>/scripts/report.sh 30d # last 30 days
Important: sail api output quirk
The sail CLI sends JSON response bodies to stderr, not stdout. It also mixes in log lines (timestamped) and a Status: line. The bundled script handles this, but if you need to run sail api commands directly, always filter like this:
sail api get "/v2025/sources" 2>&1 | grep -v '^[0-9]\{4\}/' | grep -v '^Status:' | grep -v '^Error:'
For POST requests, sail api post requires the --body flag (even if the body is empty):
sail api post /v2025/search --body '{"indices": ["events"], "query": {"query": "..."}}' 2>&1 | grep -v ...
Report sections
The report output contains four sections:
- Event Summary — Total counts by action type (started, passed, failed) to get a high-level view
- Account Aggregation per Source — Success rate for each source's account aggregation, sorted by failures first so problem sources are immediately visible
- Entitlement Aggregation per Source — Same breakdown for entitlement aggregation
- Failing Sources — Details on every source that had failures: source ID, failure count, last failure timestamp, and which aggregation types failed. This is the section to focus on for troubleshooting
Interpreting the results
- A source showing
0/N passed, N failedis completely broken and needs immediate attention (likely a connector config issue — missing credentials, unreachable endpoint, etc.) - Occasional failures mixed with passes may indicate intermittent connectivity or timeouts
- Sources with
[gov-async-ent]prefix are governance-triggered entitlement aggregations - The search API returns events up to 90 days old
Follow-up actions
After identifying failing sources, common next steps:
- Test connector health:
sail api post /v2025/sources/<sourceId>/connector/check-connection --body '{}' - Check source config:
sail api get /v2025/sources/<sourceId> - Check source health:
sail api get /v2025/sources/<sourceId>/source-health