delivered for clients · names withheldupgrade Identity and access

IdentityIQ 8.x to 9.0 upgrade

Cohash upgrades IdentityIQ 8.x estates to 9.0. You go to 8.5 first, through each GA release, and SailPoint's iiq-precheck runs on an 8.5 copy. We fix the javax references it finds in rules, plugins, connectors and forms, then move you to a Jakarta EE 10 application server. Upgrade and rollback are both rehearsed on production data before the real window.

  1. 01Reach 8.5
  2. 02Inventory and pre-check
  3. 03Fix custom code
  4. 04Build the new application server
  5. 05Rehearse upgrade and rollback
  6. 06Production upgrade
case-study / sailpoint-identityiq-9-upgrade delivered
beforeSailPoint IdentityIQ 8.x afterSailPoint IdentityIQ 9.0
01 · SOURCES 02 · IDENTITYIQ 03 · RUNTIME 04 · TARGETS HR system: Workday HR system Workday Active Directory: accounts · groups Active Directory accounts · groups IdentityIQ 9.0: lifecycle · requests · certs IdentityIQ 9.0 lifecycle · requests ·certs Jakarta-ready rules and plugins: executed and rebuilt Jakarta-ready rulesand plugins executed and rebuilt Jakarta EE 10 app server: Tomcat 10.1 · JBoss EAP 8 · Liberty Jakarta EE 10 appserver Tomcat 10.1 · JBossEAP 8 · Liberty IdentityIQ database: 9.0 schema · tested restore IdentityIQ database 9.0 schema · testedrestore Entra ID: groups · app roles Entra ID groups · app roles Salesforce: permission sets Salesforce permission sets CyberArk: privileged accounts CyberArk privileged accounts
01 · SOURCES02 · IDENTITYIQ03 · RUNTIME04 · TARGETS HR system: Workday HR system Workday Active Directory: accounts · groups ActiveDirectory accounts · groups IdentityIQ 9.0: lifecycle · requests · certs IdentityIQ 9.0 lifecycle ·requests · certs Jakarta-ready rules and plugins: executed and rebuilt Jakarta-readyrules andplugins executed andrebuilt Jakarta EE 10 app server: Tomcat 10.1 · JBoss EAP 8 · Liberty Jakarta EE 10app server Tomcat 10.1 ·JBoss EAP 8 ·… IdentityIQ database: 9.0 schema · tested restore IdentityIQdatabase 9.0 schema ·tested restore Entra ID: groups · app roles Entra ID groups · approles Salesforce: permission sets Salesforce permission sets CyberArk: privileged accounts CyberArk privilegedaccounts © Cohash · cohash.com
case file

The story

Told without the client's name or anything that could identify them.

what happened

A bank's identity team ran IdentityIQ 8.3 on WebLogic, with years of BeanShell rules and several plugins written before anyone on the team joined. SailPoint's announcement of IdentityIQ 9.0 on Jakarta EE 10, and its decision to drop WebLogic, turned a routine upgrade into an application server change as well. We took a copy through each GA release to 8.5, ran iiq-precheck on it and sorted every javax finding into renames, developer fixes and code nobody used. The fixed code now runs on a Jakarta EE 10 application server in rehearsal, the upgrade and rollback are timed on a production clone, and the production date waits only on SailPoint's GA.

why it was urgent

SailPoint announced IdentityIQ 9.0 on 6 October 2026 and still hasn't given a GA date. The release moves from Java EE 8 to Jakarta EE 10 and runs on Tomcat 10.1 and 11, JBoss EAP 8 and WebSphere Liberty. WebLogic is dropped. Staying on Tomcat 9 doesn't help, because Apache ends support for 9.0.x on 31 March 2027.

problem statement
  • openIdentityIQ runs on Tomcat 9 or WebLogic, and one of those has to change.
  • recurringThe estate is on 8.3 or 8.4, two GA releases short of where the pre-check runs.
  • blockedThere are hundreds of BeanShell rules and several plugins, and all of them predate everyone on the current team.
  • openLeadership wants a firm upgrade date, but SailPoint hasn't announced GA yet.
architecture

The estate, before and after

before
before

Before: IdentityIQ 8.x on WebLogic with javax custom code

IdentityIQ governed joiners, movers and leavers on an 8.x release hosted on WebLogic. Custom rules and plugins used javax imports that only fail when a rule fires.

Before: IdentityIQ 8.x on WebLogic with javax custom code IdentityIQ governed joiners, movers and leavers on an 8.x release hosted on WebLogic. Custom rules and plugins used javax imports that only fail when a rule fires. 01 · SOURCES 02 · IDENTITYIQ 03 · RUNTIME 04 · TARGETS joiner · mover · leaver aggregation fails at runtime hosted on reads and writes provision provision safe membership WO HR system Workday Active Directory accounts · groups SP IdentityIQ 8.3 lifecycle · requests· certs Custom rules andplugins BeanShell · javax imports Oracle WebLogic dropped in IdentityIQ 9.0 IdentityIQ database 8.x schema Ex Entra ID groups · app roles Sf Salesforce permission sets CA CyberArk privileged accounts © Cohash · cohash.com
01 · SOURCES02 · IDENTITYIQ03 · RUNTIME04 · TARGETS HR system: Workday HR system Workday Active Directory: accounts · groups ActiveDirectory accounts · groups IdentityIQ 8.3: lifecycle · requests · certs IdentityIQ 8.3 lifecycle ·requests · certs Custom rules and plugins: BeanShell · javax imports Custom rulesand plugins BeanShell · javaximports Oracle WebLogic: dropped in IdentityIQ 9.0 Oracle WebLogic dropped inIdentityIQ 9.0 IdentityIQ database: 8.x schema IdentityIQdatabase 8.x schema Entra ID: groups · app roles Entra ID groups · approles Salesforce: permission sets Salesforce permission sets CyberArk: privileged accounts CyberArk privilegedaccounts joiner · mover · leaver aggregation hosted on reads and writes provision provision safe membership © Cohash · cohash.com
after
after

After: IdentityIQ 9.0 on a Jakarta EE 10 application server

Nothing changed for sources and targets. They connect to IdentityIQ 9.0, which now runs on a Jakarta EE 10 application server, with custom code fixed, executed and rebuilt and a rehearsed rollback for the database upgrade.

After: IdentityIQ 9.0 on a Jakarta EE 10 application server Nothing changed for sources and targets. They connect to IdentityIQ 9.0, which now runs on a Jakarta EE 10 application server, with custom code fixed, executed and rebuilt and a rehearsed rollback for the database upgrade. 01 · SOURCES 02 · IDENTITYIQ 03 · RUNTIME 04 · TARGETS joiner · mover · leaver aggregation tested deploy hosted on schema upgrade provision provision safe membership WO HR system Workday Active Directory accounts · groups SP IdentityIQ 9.0 lifecycle · requests· certs Jakarta-ready rules andplugins executed and rebuilt Jakarta EE 10 appserver Tomcat 10.1 · JBoss EAP 8· Liberty IdentityIQ database 9.0 schema · testedrestore Ex Entra ID groups · app roles Sf Salesforce permission sets CA CyberArk privileged accounts © Cohash · cohash.com
01 · SOURCES02 · IDENTITYIQ03 · RUNTIME04 · TARGETS HR system: Workday HR system Workday Active Directory: accounts · groups ActiveDirectory accounts · groups IdentityIQ 9.0: lifecycle · requests · certs IdentityIQ 9.0 lifecycle ·requests · certs Jakarta-ready rules and plugins: executed and rebuilt Jakarta-readyrules andplugins executed andrebuilt Jakarta EE 10 app server: Tomcat 10.1 · JBoss EAP 8 · Liberty Jakarta EE 10app server Tomcat 10.1 ·JBoss EAP 8 ·… IdentityIQ database: 9.0 schema · tested restore IdentityIQdatabase 9.0 schema ·tested restore Entra ID: groups · app roles Entra ID groups · approles Salesforce: permission sets Salesforce permission sets CyberArk: privileged accounts CyberArk privilegedaccounts joiner · mover · leaver aggregation hosted on schema upgrade provision provision safe membership © Cohash · cohash.com
results

What the client got

What changed for the client once the work was done. Described, not scored: we don't publish client figures.

  1. result 01

    A tested route through every GA release to 8.5

    We went hop by hop to 8.5 on its latest patch, upgrading IQService each time and recording the regression tests. So the pre-check and 9.0 start from a base we know.

  2. result 02

    Every javax reference has a decision

    We turned the iiq-precheck output into a single work list, split into renames, developer fixes and deletions. Every changed BeanShell rule was executed as well as scanned, and plugins were rebuilt against Jakarta EE 10.

  3. result 03

    WebLogic is replaced

    There's a working Jakarta EE 10 application server build, with the JNDI data sources, session settings and load balancer health checks moved over from WebLogic.

  4. result 04

    Upgrade and rollback are rehearsed

    The full upgrade ran at least twice on a production clone, with the schema upgrade timed and go or no-go tests for aggregation, provisioning, requests and certifications. The restore was rehearsed too.

  5. result 05

    The production window has a runbook and a no-go time

    Scheduled tasks are paused during the window. If we have to roll back, provisioning is logged so an aggregation can bring the restored 8.5 database back in line.

what can go wrong

Risks we plan for

  1. BeanShell fails at runtime

    Rules are interpreted when they fire, so a missed import breaks a leaver workflow at night rather than at deploy. Every touched rule gets an execution test.

  2. Unknowns before GA

    SailPoint hasn't published the GA date, minimum source version or full platform matrix. The plan fixes what can be fixed now and leaves the production date open.

  3. WebLogic exit

    Moving off WebLogic is a project of its own, with data sources, clustering and load balancing to rebuild. It's planned separately from the code fixes.

  4. Provisioning during rollback

    If you roll back, anything provisioned after the upgrade started won't be in the restored 8.5 database. Pause provisioning or log it, so an aggregation can reconcile afterwards.

ai in this move

Where AI helps, and where it needs guardrails

SailPoint's Agentic Fabric, generally available since 4 August 2026, governs AI agents alongside people. For the upgrade itself, coding assistants handle the javax to jakarta renames that iiq-precheck reports pretty well. We still treat their output as a draft, running each rule and rebuilding and testing each plugin. If assistants get IdentityIQ data after the upgrade, give them a read-only MCP tool with its own scoped account.

forward deployed engineers →
you keep

What you're left with

We write these for your setup, and they're working documents. Your team should be able to keep things running from them long after we've gone.

  • tests01

    Upgrade route to 8.5 with test results per hop

    yours to keep
  • document02

    iiq-precheck work list sorted into renames, developer fixes and deletions

    yours to keep
  • document03

    Jakarta EE 10 application server build

    yours to keep
  • tests04

    Rehearsal timings and go or no-go test results

    yours to keep
  • runbook05

    Production runbook with tested rollback

    yours to keep
field notes

Learn the background

Terms from this page in plain English. If you want the why, the field note behind it is right there.

01Rules
The JavaScript snippets Auth0 used to run at login. Someone would write one to add a role to the token or block a sign-in, and each one ran after the last.in context →
02environment
The thing that holds a set of apps, flows and agents plus their database. Admins see one per team in the list when it's Dataverse for Teams.in context →
03provisioning
Creating, updating and removing accounts in an app automatically, based on who's assigned to it in Entra ID.in context →
04Runbook
A written, step-by-step procedure for an operational job like a cutover. Your on-call engineer should be able to follow it without phoning whoever wrote it.in context →
05Jakarta EE
Java EE's successor. Since Jakarta EE 9, packages are jakarta.*, not javax.*.in context →
06Application server
The server a Java web app runs in, like Tomcat, JBoss EAP or Liberty. WebLogic shops have to pick a new one for 9.0.in context →
IDENTITYIQ 8.5 Java EE, javax.* Tomcat 9.x on Tomcatsites WebLogic, Solaris OK Start/end dates IDENTITYIQ 9.0 Jakarta EE 10,jakarta.* Jakarta EE 10servers WebLogic, Solarisdropped Start/end times,zones
field note · 20 min · 3-question check Upgrading to SailPoint IdentityIQ 9.0: what breaks and what to fix first the ideaSame IdentityIQ on top, a new Java platform underneath. read the note
talent and delivery · sailpoint identityiq 9.0

Certified engineers, wherever you need them.

Some clients want a project team, some want a couple of engineers on theirs. Either works. Onsite, nearshore or offshore, with handovers across time zones that keep things moving.

Onsite

Engineers at your sites in the US

Nearshore

Overlapping hours with US teams

Offshore

Overnight progress on your backlog

All time zones

Coverage handed over across time zones

24-hour coverage · US Central time
OnsiteUS business hours
Nearshoreoverlapping US hours
Offshoreovernight progress
Combinedhandover, not hand-off
01When is IdentityIQ 9.0 generally available?

As of 20 October 2026, there's no GA date from SailPoint. That doesn't stop you doing the 8.5 upgrade, the pre-check and most of the code fixes now. The production date waits for GA.

02Do we have to go through 8.5?

iiq-precheck only runs on 8.5 and 9.0, which makes 8.5 the practical place to stage. Field guidance says to install each intermediate GA release on the way there, and we confirm that route with SailPoint Support for your environment.

03Should we move to Identity Security Cloud instead?

Depends how much custom code you own, and whether you must stay self-hosted. The pre-check report counts what has to change in both cases, which makes the estimates comparable.

04How long does the code work take?

Count the custom rules, plugins, connectors and XHTML forms and you have most of the answer. Small estates can be done in days. Several plugins and custom connectors push it to weeks, before regression testing.

fact-checked Checked against vendor and official documentation last checked 2026-10-20 content fingerprint ad73bc5b
  1. 01Book a 30-minute working sessionsenior engineer
  2. 02Talk to an engineer about your setupreply within 24 hours
  3. 03See how similar projects wentcase studies
Reviewed by the Cohash team Product names are trademarks of their owners. how we handle facts and data →
next step

Planning this move?

A 30-minute working session with a senior engineer. No slides.

useful to bring
  • The platform and the version you're on
  • Where you need to get to, and by when
  • What's custom: rules, plugins, integrations
  • Any audit finding or deadline driving it