← SailPoint ISC Greenfield Implementation Field Guide

SailPoint ISC Greenfield Implementation Field Guide

Limits, Caveats and Workarounds Reference

One table per area, for use during build and support. Each row says what happens, what to do instead and which page of the guide explains it. Items are Observed on the program unless marked otherwise. Limits tied to licensing or release level (the workflow tier limit, unlicensed actions, the VA timeout) were measured on a 2026 tenant: re-test on yours before designing around them.

Search, API and listing

CaveatWorkaroundPage
A limit above 250 on the source-app access-profile sub-resource returns an empty list, silentlyPage at 250Access Model
The source-app list payload shows an empty accessProfiles array for apps that have profilesRead the app's own sub-resourceAccess Model
Entitlement attributes are not indexed; only name, value, attribute, schema and source are searchablePut the context in the display name or in tagsForms and Workflows
Values containing hyphens tokenise, so wildcard prefix queries on them failQuery on another field, or use tagsForms and Workflows
GET /connector-rules/{id} returns the script in clear text, including any embedded credentialNever put credentials in rules; restrict who can call itSecurity
Cloud rules cannot be read with GETUse the configuration export with type RULESecurity
GET /sources/{id} returns attributes not on the encrypted list in clearAudit the encrypted listSecurity
A list rendered into a Lucene query appears as [5 2] and gives HTTP 400Build tags:("A" "B") as an ORForms and Workflows

Aggregation and paging

CaveatWorkaroundPage
A single large page with no paging steps drops the overflow silently, and the dropped accounts later look deletedImplement paging; monitor population per run and alert on a drop or a count equal to a page sizeWeb Services and JDBC
An expired token returning an HTTP 200 body is not an error to the connectorDetect in the rule and refreshConnector Patterns
Aggregate groups before accounts, or entitlement references dangleOrder the aggregationsConnector Patterns
Every source needs a schedule. Two production sources ran for months without oneMake the schedule a line on the onboarding checklist and monitor last aggregation dateHypercare
Delete threshold defaults can allow a mass delete if a source returns nothingSet it deliberately on every source (10 percent on the directories) and verify; an early document and a later one disagreed on one source, so verify rather than trustActive Directory
Entitlement counts halving between runsA truncated aggregation: check paging and the delete thresholdSymptom Lookup

Connectors and rules

CaveatWorkaroundPage
A status comparison that stops matching makes every account look enabledSet IIQDisabled in both directions in every ruleConnector Patterns
HttpURLConnection cannot send PATCHGET then PUT, or use the connector's own HTTP helperWeb Services and JDBC
An Apache HTTP client inside a rule produced consecutive aggregation errors and was revertedUse the connector's own helperWeb Services and JDBC
Cloud rules have no network accessMove lookups to a workflow or a connector ruleIdentity Model
A cloud rule cannot call an external model or serviceRun the call elsewhere and hand the result inIdentity Model
Rule changes may need SailPoint to deploy themPlan release time for itSecurity
Rules that parse identifiers out of entitlement names depend on the name formatTreat the format as a contract; never renameAccess Model
Double spaces or case differences in names (two rules in one set had a double space)Look up by exact name and normaliseWeb Services and JDBC
Correlation is case-sensitiveNormalise case, or correlate on a normalised attributeIdentity Model
Two rule variants left in the tenant (four near-identical lifecycle rules)Keep one, archive the rest outsideIdentity Model
Debug webhook helpers in production rules fail provisioning when the listener is downRemove, or gate behind a false flag and swallow failureSecurity
IQService before and after scripts run on the Windows host, outside the cloud sandboxUse sparingly and documentActive Directory

Lifecycle and identity

CaveatWorkaroundPage
Lifecycle state actions name target sources by explicit list. Only 13 of 146 sources were in the disable action at the endAdd "update the lifecycle source list" to every onboarding checklistLifecycle
An organisation setting controls whether lifecycle changes honour a source's "can enable" flagKnow its valueLifecycle
Account creation happens in the user's local time zone, and the termination cut-off is localDocument the time zones (organisation, workflow schedule, identity)Architecture
The HR feed carried years of leavers: about 43,000 identities for about 13,000 peopleFilter or treat as inactive by designIdentity Model
More than 1,300 directory accounts had no employee idClean up before the first production aggregationTesting and Go-Live
A predictable initial password built from HR attribute slicesGenerate randomlyActive Directory
A last day wrongly entered in HR disables the wrong dayMandatory fields and an HR change processLifecycle

Access model and requests

CaveatWorkaroundPage
Entitlements requestable directly bypass the approval schemeMake entitlements non-requestable by default; search for exceptionsAccess Model
One person owning thousands of profiles routes every review through themGovernance groupsAccess Model
Governing profiles over a huge catalogue (tens of thousands of role assignments) is not worth itReview the catalogue; request only what is asked forAccess Model
Approvals with no reminders or fallback sit foreverSet reminders and a fallback approverAccess Model
Revocation approval defaults to noneDecide and record per applicationAccess Model
Role propagation was disabledKnow the settingAccess Model
Empty placeholder roles clutter reportsFill or removeAccess Model
Applications with no tile are discoverable only by searchPublish the naming conventionAccess Model

Forms and launchers

CaveatWorkaroundPage
Dependent dropdowns cannot cascade through search data sourcesMulti-step interactive formsForms and Workflows
Data-source queries do not interpolate form valuesUse workflow-built option listsForms and Workflows
A condition on a form input did nothing; element conditions workTest in a browserForms and Workflows
SHOW only works on a sectionInvert to hidesForms and Workflows
Section labels are not renderedPut text in field labelsForms and Workflows
Operators other than EQ, CO, NOT_CO, IN, NOT_IN, SW, EW are rejected; string and boolean onlyRestructure the conditionForms and Workflows
No repeatable groupFixed blocks revealed by condition, or loop over a multi-selectForms and Workflows
Conditions address elements by numeric idPreserve ids when editingForms and Workflows
Input and element casing can differ (userSailpointId and userSailPointId)Read the element's casing downstreamForms and Workflows
Launcher-driven forms leave formData empty in execution historyList form instances; a GET by id omits formDataForms and Workflows
Deleting a form while a launch is open breaks it with a 404Retire it insteadForms and Workflows
A launcher is not patchable (405) and is visible only when assigned and its workflow is enabledAssign through an entitlement or a roleForms and Workflows

Workflows

CaveatWorkaroundPage
Secrets written through the API are silently dropped; the reference form comes only from the UICreate secrets in the UIForms and Workflows
A full PUT wipes a UI-set secretRead back and preserve the referenceForms and Workflows
One OAuth reference per workflowAvoid two credentialed HTTP steps in one workflowForms and Workflows
An unresolved template path renders as literal {{...}}Verify field names; never assume an errorForms and Workflows
.JSON() is the only stringify functionUse itForms and Workflows
Define Variable and Update Variable allow at most 50 operations per variable (documented)GroupForms and Workflows
The workflow tier limit is 50 steps after the trigger, counting loop bodiesSplit workflowsForms and Workflows
Validation happens on enable; step display names must be under 65 charactersEnable to validateForms and Workflows
An enabled workflow cannot be PUTDisable, PUT, enableForms and Workflows
sp:generic-approval was not licensedForm-based approvalForms and Workflows
sp:interactive-form does not reliably raise sp:form-submittedTrigger on the approval formForms and Workflows
There is no create-account actionPOST /accounts, which runs the connector create and its before-rulesForms and Workflows
Inner loop steps are missing from the parent historyDebug the inner executionForms and Workflows
A call that exceeds the VA timeout (63 seconds, measured) wedged a requester for about an hourKeep calls short and asynchronousWeb Services and JDBC
Workflow definitions can carry secretsReference, not literalSecurity

Campaigns

CaveatWorkaroundPage
Uncorrelated accounts are never in an access campaignA source-owner campaignCampaigns
Reviewers cannot review their own access; ISC moves the item to the managerTell reviewersCampaigns
User ids differing only in case make ISC drop one spellingUnify them when writing the fileCampaigns
Reviewer display names must be uniqueUse emailCampaigns
Attributes used by correlation or a profile cannot be deleted or renamedAdd new first, remove old lastCampaigns

Configuration and promotion

CaveatWorkaroundPage
Source secrets do not move with Config HubRe-enter in the target tenantTesting and Go-Live
VAs and clusters are per tenantBuild themTesting and Go-Live
JDBC URLs, hostnames and rule literals differ per environmentAn environment table; search rules for sandbox valuesTesting and Go-Live
Mail routing differs per environmentA notification matrixHypercare
The encrypted list can drift or hold duplicatesAudit itSecurity
The features list can overstate capabilityRun the operation and record what worksSecurity

How to use this table

  1. Before designing a form, workflow or connector, read the matching section.
  2. When something misbehaves, search this page for the symptom, then the last page for the diagnostic.
  3. Add a row when you find a new limit, with the date measured and the tenant release.

Documented by SailPoint

Limits and behaviours taken from SailPoint's own documentation (checked October 2026) rather than from our measurements. Each links to the page of the guide where it is discussed.

AreaDocumented limit or behaviourPage
API100 requests per client ID and API version per 10 seconds; HTTP 429 with a Retry-After headerWeb Services and JDBC
AggregationOptimized by default: unchanged accounts skip account and manager correlation. disableOptimization=true through the API for one unoptimized runIdentity Model
AggregationDelete threshold is an integer 1 to 100, rounded to whole accounts, and applies to scheduled and flat-file runsConnector Patterns
AggregationSchedule time zone follows the VA cluster setting and does not shift for daylight saving timeConnector Patterns
Flat filesBest under 500 MB; delimited files sorted by account IDConnector Patterns
Quick compliance sourcesUp to 3 aggregations per day, 8 hours apart, not applied to Org AdminsConnector Patterns
Workflows400K executions per day at full speed, then about 5 per second; up to two hours after first enablementForms and Workflows
WorkflowsParallel loop 250 items; serial loop 1,000 items; serial loop test limited to 50 iterationsForms and Workflows
WorkflowsOne trigger per workflow; 50 operations per variableForms and Workflows
Identity profileOne profile per identity, by priority; user name, work email and last name required; avoid * ( ) & ! . in the user name sourceIdentity Model
Identity profileCannot create or delete a profile during an account aggregation; deleting a profile deletes its identitiesIdentity Model
CertificationsAutomated reassignment stops after four hopsCampaigns
Config Hub10 manual backups, 5,000 objects per backup or draft, weekly system backups kept to fiveTesting and Go-Live
Config HubUnsupported object types are skipped and the import still reports COMPLETE; non-employee sources cannot be deployedTesting and Go-Live
Virtual appliancesAt least two per cluster, sandbox included; one per host; reserved range 10.255.255.241/28; untrusted certificates rejectedArchitecture
TenantOrg name 3 to 13 characters; sandbox URL carries -sbArchitecture

Actions

  • Keep a copy of this table in your project wiki and add rows as you find them.
  • Re-test every platform-limit row on your tenant before relying on it.
  • Link each row from the design document that depends on it.