Share all details about your problem, including any error messages you may have received.
I have written a plugin places a refresh button on the identity page, and I’m trying to use the sailpoint.api.Identitizer class to do the refresh when I click the button like so:
The root cause is object identity/session mismatch, not the refresh options themselves — promoteAttributes/provision just happen to be the options that trigger rule execution , so they’re the first ones to surface a stale-context problem that already existed.
Looking at your code, i can see you fetch target via context.getObject(Identity.class, identityId), but then call identitizer.refresh(identity) — a different object reference. If identity was loaded earlier , it’s detached from the current Hibernate session. Identitizer works fine for simple field updates on a detached-ish object, but as soon as a rule needs to lazy-load referencedRules, Hibernate has no session to fetch through → the exact error you’re seeing.
update these line in yori code
Identity target = context.getObject(Identity.class, identityId);
Identitizer identitizer = new Identitizer(context, options);
identitizer.refresh(target); // refresh the object you just loaded, not a stale reference
context.decache(target)
The identitizer.refresh(identity) was a typo on my account, when trying your example the context.decache(target) is never reached, the exception is thrown beforehand:
// ...
Identity target = context.getObject(Identity.class, identityId);
Identitizer identitizer = new Identitizer(context, options);
identitizer.refresh(target); // the code throws here
context.decache(target) // and thus, never reaches here
What baffels me is the “… no session” part of the error, i’m on the identity cubs page http://.../iiq/define/identity/identity.jsf?id=...
2026-08-14T09:09:29,883 ERROR http-nio-8080-exec-3 dk.andel.rest.RefreshResource:28 - Error refreshing identity for type: full and targetId: 0a5800029aa61f46819aa6649b361e22
sailpoint.tools.GeneralException: failed to lazily initialize a collection of role: sailpoint.object.Rule.referencedRules, could not initialize proxy - no Session
at sailpoint.server.BSFRuleRunner.runRule(BSFRuleRunner.java:226) ~[identityiq.jar:8.4p2 Build a559eb467b2-20241211-210440]
at sailpoint.server.InternalContext.runRule(InternalContext.java:1315) ~[identityiq.jar:8.4p2 Build a559eb467b2-20241211-210440]
at sailpoint.server.InternalContext.runRule(InternalContext.java:1287) ~[identityiq.jar:8.4p2 Build a559eb467b2-20241211-210440]
at sailpoint.api.Identitizer.promoteAttribute(Identitizer.java:3963) ~[identityiq.jar:8.4p2 Build a559eb467b2-20241211-210440]
at sailpoint.api.Identitizer.promoteAttributes(Identitizer.java:3773) ~[identityiq.jar:8.4p2 Build a559eb467b2-20241211-210440]
at sailpoint.api.Identitizer.refresh(Identitizer.java:2325) ~[identityiq.jar:8.4p2 Build a559eb467b2-20241211-210440]
at dk.andel.rest.RefreshService.RefreshIdentity(RefreshService.java:94) ~[?:?]
at dk.andel.rest.RefreshResource.handleRefreshRequest(RefreshResource.java:24) ~[?:?]
at jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:?]
at jdk.internal.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) ~[?:?]
at jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) ~[?:?]
at java.lang.reflect.Method.invoke(Unknown Source) ~[?:?]
at org.glassfish.jersey.server.model.internal.ResourceMethodInvocationHandlerFactory.lambda$static$0(ResourceMethodInvocationHandlerFactory.java:52) ~[jersey-server-2.35.jar:?]
at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher$1.run(AbstractJavaResourceMethodDispatcher.java:124) [jersey-server-2.35.jar:?]
at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher.invoke(AbstractJavaResourceMethodDispatcher.java:167) [jersey-server-2.35.jar:?]
at org.glassfish.jersey.server.model.internal.JavaResourceMethodDispatcherProvider$ResponseOutInvoker.doDispatch(JavaResourceMethodDispatcherProvider.java:176) [jersey-server-2.35.jar:?]
at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher.dispatch(AbstractJavaResourceMethodDispatcher.java:79) [jersey-server-2.35.jar:?]
at org.glassfish.jersey.server.model.ResourceMethodInvoker.invoke(ResourceMethodInvoker.java:475) [jersey-server-2.35.jar:?]
at org.glassfish.jersey.server.model.ResourceMethodInvoker.apply(ResourceMethodInvoker.java:397) [jersey-server-2.35.jar:?]
at org.glassfish.jersey.server.model.ResourceMethodInvoker.apply(ResourceMethodInvoker.java:81) [jersey-server-2.35.jar:?]
at org.glassfish.jersey.server.ServerRuntime$1.run(ServerRuntime.java:255) [jersey-server-2.35.jar:?]
at org.glassfish.jersey.internal.Errors$1.call(Errors.java:248) [jersey-common-2.35.jar:?]
at org.glassfish.jersey.internal.Errors$1.call(Errors.java:244) [jersey-common-2.35.jar:?]
at org.glassfish.jersey.internal.Errors.process(Errors.java:292) [jersey-common-2.35.jar:?]
at org.glassfish.jersey.internal.Errors.process(Errors.java:274) [jersey-common-2.35.jar:?]
at org.glassfish.jersey.internal.Errors.process(Errors.java:244) [jersey-common-2.35.jar:?]
at org.glassfish.jersey.process.internal.RequestScope.runInScope(RequestScope.java:265) [jersey-common-2.35.jar:?]
at org.glassfish.jersey.server.ServerRuntime.process(ServerRuntime.java:234) [jersey-server-2.35.jar:?]
at org.glassfish.jersey.server.ApplicationHandler.handle(ApplicationHandler.java:684) [jersey-server-2.35.jar:?]
at org.glassfish.jersey.servlet.WebComponent.serviceImpl(WebComponent.java:394) [jersey-container-servlet-core-2.35.jar:?]
at org.glassfish.jersey.servlet.WebComponent.service(WebComponent.java:346) [jersey-container-servlet-core-2.35.jar:?]
at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:366) [jersey-container-servlet-core-2.35.jar:?]
at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:319) [jersey-container-servlet-core-2.35.jar:?]
at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:205) [jersey-container-servlet-core-2.35.jar:?]
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:197) [catalina.jar:9.0.111]
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:142) [catalina.jar:9.0.111]
at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:51) [tomcat-websocket.jar:9.0.111]
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:166) [catalina.jar:9.0.111]
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:142) [catalina.jar:9.0.111]
at sailpoint.web.SailPointResponseFilter.doFilter(SailPointResponseFilter.java:88) [identityiq.jar:8.4p2 Build a559eb467b2-20241211-210440]
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:166) [catalina.jar:9.0.111]
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:142) [catalina.jar:9.0.111]
at sailpoint.rest.jaxrs.MethodOverrideFilter.doFilter(MethodOverrideFilter.java:90) [identityiq.jar:8.4p2 Build a559eb467b2-20241211-210440]
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:166) [catalina.jar:9.0.111]
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:142) [catalina.jar:9.0.111]
at sailpoint.rest.RestCsrfValidationFilter.doFilter(RestCsrfValidationFilter.java:71) [identityiq.jar:8.4p2 Build a559eb467b2-20241211-210440]
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:166) [catalina.jar:9.0.111]
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:142) [catalina.jar:9.0.111]
at sailpoint.rest.AuthenticationFilter.doFilter(AuthenticationFilter.java:109) [identityiq.jar:8.4p2 Build a559eb467b2-20241211-210440]
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:166) [catalina.jar:9.0.111]
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:142) [catalina.jar:9.0.111]
at sailpoint.web.SailPointContextRequestFilter.doFilter(SailPointContextRequestFilter.java:68) [identityiq.jar:8.4p2 Build a559eb467b2-20241211-210440]
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:166) [catalina.jar:9.0.111]
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:142) [catalina.jar:9.0.111]
at sailpoint.web.SailPointPollingRequestFilter.doFilter(SailPointPollingRequestFilter.java:151) [identityiq.jar:8.4p2 Build a559eb467b2-20241211-210440]
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:166) [catalina.jar:9.0.111]
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:142) [catalina.jar:9.0.111]
at sailpoint.web.ResponseHeaderFilter.doFilter(ResponseHeaderFilter.java:63) [identityiq.jar:8.4p2 Build a559eb467b2-20241211-210440]
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:166) [catalina.jar:9.0.111]
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:142) [catalina.jar:9.0.111]
at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:201) [spring-web-5.2.24.RELEASE.jar:5.2.24.RELEASE]
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119) [spring-web-5.2.24.RELEASE.jar:5.2.24.RELEASE]
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:166) [catalina.jar:9.0.111]
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:142) [catalina.jar:9.0.111]
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:166) [catalina.jar:9.0.111]
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:88) [catalina.jar:9.0.111]
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:481) [catalina.jar:9.0.111]
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127) [catalina.jar:9.0.111]
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:83) [catalina.jar:9.0.111]
at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:643) [catalina.jar:9.0.111]
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:72) [catalina.jar:9.0.111]
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:344) [catalina.jar:9.0.111]
at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:398) [tomcat-coyote.jar:9.0.111]
at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:63) [tomcat-coyote.jar:9.0.111]
at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:935) [tomcat-coyote.jar:9.0.111]
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1831) [tomcat-coyote.jar:9.0.111]
at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:52) [tomcat-coyote.jar:9.0.111]
at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:973) [tomcat-util.jar:9.0.111]
at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:491) [tomcat-util.jar:9.0.111]
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:63) [tomcat-util.jar:9.0.111]
at java.lang.Thread.run(Unknown Source) [?:?]
Caused by: org.hibernate.LazyInitializationException: failed to lazily initialize a collection of role: sailpoint.object.Rule.referencedRules, could not initialize proxy - no Session
at org.hibernate.collection.internal.AbstractPersistentCollection.throwLazyInitializationException(AbstractPersistentCollection.java:606) ~[hibernate-core-5.4.27.Final.jar:5.4.27.Final]
at org.hibernate.collection.internal.AbstractPersistentCollection.withTemporarySessionIfNeeded(AbstractPersistentCollection.java:218) ~[hibernate-core-5.4.27.Final.jar:5.4.27.Final]
at org.hibernate.collection.internal.AbstractPersistentCollection.initialize(AbstractPersistentCollection.java:585) ~[hibernate-core-5.4.27.Final.jar:5.4.27.Final]
at org.hibernate.collection.internal.AbstractPersistentCollection.read(AbstractPersistentCollection.java:149) ~[hibernate-core-5.4.27.Final.jar:5.4.27.Final]
at org.hibernate.collection.internal.PersistentList.iterator(PersistentList.java:155) ~[hibernate-core-5.4.27.Final.jar:5.4.27.Final]
at sailpoint.server.BSFRuleRunner.runRule(BSFRuleRunner.java:204) ~[identityiq.jar:8.4p2 Build a559eb467b2-20241211-210440]
... 80 more
please find document , this will help these lazy error mostly. as we are using native sailpoint functionality. No need to worry about any thing , like lock identity , decache etc.
@mlf11 I have created a similar plugin and placed it in the identity warehouse. It is working fine for me. In case above suggestions doesn’t work or you need any clarifications, please ping me over chat. We can discuss and troubleshoot.