# Certification launch fails on deepcopy error

**URL:** <https://developer.sailpoint.com/discuss/t/certification-launch-fails-on-deepcopy-error/220901>\
**Category:** IIQ Discussion and Questions\
**Tags:** certifications, identityiq\
**Created:** [August 28, 2026, 3:58pm UTC](https://developer.sailpoint.com/discuss/t/certification-launch-fails-on-deepcopy-error/220901 "2026-08-28T15:58:00Z")\
**Posts on this page:** 14\
**Page:** 1

<div class="post-metadata">

**Author:** ![schawlalvfs1987](https://avatars.discourse-cdn.com/v4/letter/s/ecd19e/32.png) [@schawlalvfs1987](https://developer.sailpoint.com/discuss/u/schawlalvfs1987)\
**Post date:** [August 28, 2026, 3:58pm UTC](https://developer.sailpoint.com/discuss/t/certification-launch-fails-on-deepcopy-error/220901/1 "2026-08-28T15:58:00Z")

</div>

## Which IIQ version are you inquiring about?

_8.4_

## Share all details about your problem, including any error messages you may have received.

```auto
java.lang.NullPointerException: Cannot invoke "sailpoint.object.EntitlementGroup.deepCopy(sailpoint.object.Resolver)" because "eg" is null
	at sailpoint.certification.CertifiableAnalyzer.getCombinedExceptions(CertifiableAnalyzer.java:735)
	at sailpoint.certification.CertifiableAnalyzer.getExceptionCertifiables(CertifiableAnalyzer.java:701)
	at sailpoint.certification.CertifiableAnalyzer.getCertifiables(CertifiableAnalyzer.java:575)
	at sailpoint.certification.CertifiableAnalyzer.BaseGetCertifiables(CertifiableAnalyzer.java:471)
	at sailpoint.certification.CertifiableAnalyzer.getCertifiables(CertifiableAnalyzer.java:222)
	at sailpoint.certification.EntityBuilder.createCertificationEntity(EntityBuilder.java:1248)
	at sailpoint.certification.EntityBuilder.buildEntity(EntityBuilder.java:675)
	at sailpoint.certification.EntityBuilder.buildEntities(EntityBuilder.java:620)
	at sailpoint.certification.PartitionHandler.executeSynchronous(PartitionHandler.java:442)
	at sailpoint.certification.IdentityCertificationStarter.execute(IdentityCertificationStarter.java:276)
	at sailpoint.task.CertificationExecutor.handleTargetedCert(CertificationExecutor.java:381)
	at sailpoint.task.CertificationExecutor.execute(CertificationExecutor.java:196)
	at sailpoint.api.TaskManager.runSync(TaskManager.java:981)
	at sailpoint.api.TaskManager.runSync(TaskManager.java:764)
	at sailpoint.scheduler.JobAdapter.execute(JobAdapter.java:128)
	at org.quartz.core.JobRunShell.run(JobRunShell.java:202)
	at org.quartz.simpl.SimpleThreadPool$WorkerThread.run(SimpleThreadPool.java:573)

```

I am trying to launch a targeted certification, this is using a classification filter, the classification was imported as xml and then attached to the entitlement via UI

We have used this approach earlier as well for launching reviews where AD groups control access to an app, and I am just reusing that certification as template, by changing the filter, cert name and active period

Somehow the launch keeps getting stuck, and I see this error in the stacktrace, this has happened twice now

We have no clue what this error means, and this launch is critical for us, any inputs please!

---

<div class="post-metadata">

**Author:** ![neel193](https://sea1.discourse-cdn.com/sailpoint/discuss/user_avatar/developer.sailpoint.com/neel193/32/34038_2.png) [@neel193](https://developer.sailpoint.com/discuss/u/neel193)\
**Post date:** [August 28, 2026, 4:02pm UTC](https://developer.sailpoint.com/discuss/t/certification-launch-fails-on-deepcopy-error/220901/2 "2026-08-28T16:02:53Z")

</div>

@schawlalvfs1987 Is this happening regularly? or just one off case?

Have you ran the identity refresh on all the inscope users with “Refresh assigned, detected roles and promote additional entitlements” option checked?

---

<div class="post-metadata">

**Author:** ![schawlalvfs1987](https://avatars.discourse-cdn.com/v4/letter/s/ecd19e/32.png) [@schawlalvfs1987](https://developer.sailpoint.com/discuss/u/schawlalvfs1987)\
**Post date:** [August 28, 2026, 4:04pm UTC](https://developer.sailpoint.com/discuss/t/certification-launch-fails-on-deepcopy-error/220901/3 "2026-08-28T16:04:59Z")

</div>

This is one off case, we can try running the refresh again, we have ran it once

---

<div class="post-metadata">

**Author:** ![neel193](https://sea1.discourse-cdn.com/sailpoint/discuss/user_avatar/developer.sailpoint.com/neel193/32/34038_2.png) [@neel193](https://developer.sailpoint.com/discuss/u/neel193)\
**Post date:** [August 28, 2026, 4:16pm UTC](https://developer.sailpoint.com/discuss/t/certification-launch-fails-on-deepcopy-error/220901/4 "2026-08-28T16:16:00Z")

</div>

@schawlalvfs1987 Sure.. please give it a try.. This possibly indicates that one or more identities in scope have a null or orphaned entitlement group reference in their identity cube.

Try running a query to identify identities in scope that have entitlement groups referencing entitlements or applications that no longer exist or have null values.

```auto
SELECT i.name, eg.id FROM spt_identity i 
JOIN spt_entitlement_group eg ON eg.identity_id = i.id 
WHERE eg.application IS NULL OR eg.id IS NULL;

```

---

<div class="post-metadata">

**Author:** ![schawlalvfs1987](https://avatars.discourse-cdn.com/v4/letter/s/ecd19e/32.png) [@schawlalvfs1987](https://developer.sailpoint.com/discuss/u/schawlalvfs1987)\
**Post date:** [August 28, 2026, 4:33pm UTC](https://developer.sailpoint.com/discuss/t/certification-launch-fails-on-deepcopy-error/220901/6 "2026-08-28T16:33:32Z")

</div>

Refresh failed with this error: java.lang.NullPointerException: Cannot invoke ‘“Object.getClass()” because “obj” is null  
at sailpoint.persistence.ClassPersistenceManager.getManager(ClassPersistenceManager.java:166)  
at sailpoint.persistence.ClassPersistenceManager.removeObject(ClassPersistenceManager.java:305)  
at sailpoint.server.InternalContext.removeObject(InternalContext.java:891)  
at sailpoint.api.EntitlementCorrelator.saveDetectionAnalysis(EntitlementCorrelator.java:1107)  
at sailpoint.api.Identitizer.refresh(Identitizer.java:2407)  
at sailpoint.task.IdentityRefreshExecutor$RefreshWorker.refreshAndProcess(IdentityRefreshExecutor.java:1610)  
at sailpoint.task.IdentityRefreshExecutor$RefreshWorkerPool.queue(IdentityRefreshExecutor.java:1928)  
at sailpoint.task.IdentityRefreshExecutor.refresh(IdentityRefreshExecutor.java:1113)  
at sailpoint.task.IdentityRefreshExecutor.execute(IdentityRefreshExecutor.java:856)  
at sailpoint.api.TaskManager.runSync(TaskManager.java:981)  
at sailpoint.api.TaskManager.runSync(TaskManager.java:764)  
at sailpoint.scheduler.JobAdapter.execute(JobAdapter.java:128)  
at org.quartz.core.JobRunShell.run(JobRunShell.java:202)  
at org.quartz.simpl.SimpleThreadPool$WorkerThread.run(SimpleThreadPool.java:573)’

I dont have access to DB. Only console or debug, how do I resolve this ☹

---

<div class="post-metadata">

**Author:** ![neel193](https://sea1.discourse-cdn.com/sailpoint/discuss/user_avatar/developer.sailpoint.com/neel193/32/34038_2.png) [@neel193](https://developer.sailpoint.com/discuss/u/neel193)\
**Post date:** [August 28, 2026, 4:38pm UTC](https://developer.sailpoint.com/discuss/t/certification-launch-fails-on-deepcopy-error/220901/7 "2026-08-28T16:38:48Z")

</div>

@schawlalvfs1987 It looks there is a null object in the entitlement correlation path that needs to be cleaned up first. Can you try running the query i shared.

---

<div class="post-metadata">

**Author:** ![schawlalvfs1987](https://avatars.discourse-cdn.com/v4/letter/s/ecd19e/32.png) [@schawlalvfs1987](https://developer.sailpoint.com/discuss/u/schawlalvfs1987)\
**Post date:** [August 28, 2026, 4:40pm UTC](https://developer.sailpoint.com/discuss/t/certification-launch-fails-on-deepcopy-error/220901/8 "2026-08-28T16:40:02Z")

</div>

I dont have access to DB, can you try suggesting some way using debug or console. As this is prod support I cant run code on it as well..

---

<div class="post-metadata">

**Author:** ![neel193](https://sea1.discourse-cdn.com/sailpoint/discuss/user_avatar/developer.sailpoint.com/neel193/32/34038_2.png) [@neel193](https://developer.sailpoint.com/discuss/u/neel193)\
**Post date:** [August 28, 2026, 4:40pm UTC](https://developer.sailpoint.com/discuss/t/certification-launch-fails-on-deepcopy-error/220901/9 "2026-08-28T16:40:46Z")

</div>

@schawlalvfs1987 Login to console: and run like this:

> sql “your query”

---

<div class="post-metadata">

**Author:** ![ryan\_toornburg](https://sea1.discourse-cdn.com/sailpoint/discuss/user_avatar/developer.sailpoint.com/ryan_toornburg/32/21550_2.png) [@ryan\_toornburg](https://developer.sailpoint.com/discuss/u/ryan_toornburg)\
**Post date:** [August 28, 2026, 4:49pm UTC](https://developer.sailpoint.com/discuss/t/certification-launch-fails-on-deepcopy-error/220901/10 "2026-08-28T16:49:33Z")

</div>

Here is the SQL command if you have access to the IIQ Console:

> sql “SELECT i.name, eg.id FROM spt\_identity i JOIN spt\_entitlement\_group eg ON eg.identity\_id = i.id where eg.application IS NULL OR eg.id IS NULL;”

You can also add | at the end to save the output

---

<div class="post-metadata">

**Author:** ![bohorapujan](https://sea1.discourse-cdn.com/sailpoint/discuss/user_avatar/developer.sailpoint.com/bohorapujan/32/40159_2.png) [@bohorapujan](https://developer.sailpoint.com/discuss/u/bohorapujan)\
**Post date:** [August 28, 2026, 4:50pm UTC](https://developer.sailpoint.com/discuss/t/certification-launch-fails-on-deepcopy-error/220901/11 "2026-08-28T16:50:30Z")

</div>

I’d actually try SailPoint’s Correct IDX rule first: [https://community.sailpoint.com/t5/IdentityIQ-Wiki/Correct-IDX-rule-to-detect-and-fix-IDX-values/ta-p/73051](https://community.sailpoint.com/t5/IdentityIQ-Wiki/Correct-IDX-rule-to-detect-and-fix-IDX-values/ta-p/73051)

SailPoint calls this out specifically for NPEs caused by null/corrupted Hibernate idx values and that can surface during refresh, aggregation, basically any bulk processing, which lines up with what you’re seeing.

You import it via Global Settings → Import from File and it gives you a task called Support Task for Hibernate IDX.

Run it first in read-only mode, just check “process all DB tables” and “scan tables for null-valued key-column composited with non-null ‘idx’ key-column.” It won’t touch anything, just reports back what it finds.

This task only fixes null IDX values, it won’t catch things like a null parent reference.

Still, it’s worth running first since it’s quick and low-risk. If it comes back clean then I would split the population filter into smaller subsets and run refresh against each, and narrow down based on which subset fails.

---

<div class="post-metadata">

**Author:** ![schawlalvfs1987](https://avatars.discourse-cdn.com/v4/letter/s/ecd19e/32.png) [@schawlalvfs1987](https://developer.sailpoint.com/discuss/u/schawlalvfs1987)\
**Post date:** [August 28, 2026, 5:01pm UTC](https://developer.sailpoint.com/discuss/t/certification-launch-fails-on-deepcopy-error/220901/12 "2026-08-28T17:01:56Z")

</div>

The query returned zero results

---

<div class="post-metadata">

**Author:** ![schawlalvfs1987](https://avatars.discourse-cdn.com/v4/letter/s/ecd19e/32.png) [@schawlalvfs1987](https://developer.sailpoint.com/discuss/u/schawlalvfs1987)\
**Post date:** [August 28, 2026, 5:02pm UTC](https://developer.sailpoint.com/discuss/t/certification-launch-fails-on-deepcopy-error/220901/13 "2026-08-28T17:02:32Z")

</div>

Giving the IDX task a try now

---

<div class="post-metadata">

**Author:** ![bohorapujan](https://sea1.discourse-cdn.com/sailpoint/discuss/user_avatar/developer.sailpoint.com/bohorapujan/32/40159_2.png) [@bohorapujan](https://developer.sailpoint.com/discuss/u/bohorapujan)\
**Post date:** [August 28, 2026, 5:31pm UTC](https://developer.sailpoint.com/discuss/t/certification-launch-fails-on-deepcopy-error/220901/14 "2026-08-28T17:31:12Z")

</div>

@schawlalvfs1987

Can you also try these queries:

```auto
1. Entitlement groups with null application reference

SELECT id, identity_id, name, native_identity, application
FROM spt_entitlement_group
WHERE application IS NULL;

```

```auto
2. Identity entitlement rows with null application

SELECT id, identity_id, name, value, type, application
FROM spt_identity_entitlement
WHERE application IS NULL
  AND name NOT IN ('detectedRoles', 'assignedRoles');

```

```auto
3. Detected-role references pointing at a role ID that no longer exists

SELECT ib.identity_id, ib.idx, ib.bundle
FROM spt_identity_bundles ib
LEFT JOIN spt_bundle b ON ib.bundle = b.id
WHERE b.id IS NULL;

```

```auto
4. Duplicate detected-role rows for the same identity+role

SELECT identity_id, bundle, COUNT(*) AS occurrences
FROM spt_identity_bundles
GROUP BY identity_id, bundle
HAVING COUNT(*) > 1;

```

If any of these return a row, that’s very likely your cause

---

<div class="post-metadata">

**Author:** ![schawlalvfs1987](https://avatars.discourse-cdn.com/v4/letter/s/ecd19e/32.png) [@schawlalvfs1987](https://developer.sailpoint.com/discuss/u/schawlalvfs1987)\
**Post date:** [August 28, 2026, 6:13pm UTC](https://developer.sailpoint.com/discuss/t/certification-launch-fails-on-deepcopy-error/220901/15 "2026-08-28T18:13:56Z")

</div>

So after running the IDX cleanup job, and then running refresh identity entitlement on all links + refresh assigned detected roles and promote entitlements on a filtered population, the certification finally launched!

Thank you to everyone who replied and helped solve this!
