Task #3235
closedError when running synchronization with mapped attribute included set with "strategy" set as "write only if target value is null"
100%
Description
There is an error after synchronization is run with mapped attribute included set with "strategy" set as "write only if target value is null". This issue was encountered while working with version 12.2.2 and 12.2.3. Attribute mapping details can be seen here:
Files
Updated by Filip Králik about 2 years ago
Log with the error for one particular identity:
15.12.2022 14:08:07: System entity [9ad8b452-8e23-424c-9387-62caa4031d3c] for this UID [john.doe] was found. We try to find account for this system entity ------------------------- 15.12.2022 14:08:07: Account was not found. We try to find account for UID [john.doe] (generated from the mapped attribute marked as Identifier) ------------------------- 15.12.2022 14:08:07: Account doesn't exist in IdM ------------------------- 15.12.2022 14:08:07: Account and entity don't exist (missing entity). ------------------------- 15.12.2022 14:08:07: Missing entity action is [CREATE_ENTITY] ------------------------- 15.12.2022 14:08:07: Missing entity action is CREATE_ENTITY, we will create new entity. ------------------------- 15.12.2022 14:08:07: java.lang.IllegalArgumentException: Owner id is required. at org.springframework.util.Assert.notNull(Assert.java:198) at eu.bcvsolutions.idm.core.eav.service.impl.DefaultFormService.getValues(DefaultFormService.java:1067) at eu.bcvsolutions.idm.core.eav.service.impl.DefaultFormService.getValues(DefaultFormService.java:1056) at eu.bcvsolutions.idm.core.eav.service.impl.DefaultFormService$$FastClassBySpringCGLIB$$f7e12749.invoke(<generated>) at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:218) at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.invokeJoinpoint(CglibAopProxy.java:752) at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:163) at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:295) at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:98) at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186) at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:691) at eu.bcvsolutions.idm.core.eav.service.impl.DefaultFormService$$EnhancerBySpringCGLIB$$68fe3127.getValues(<generated>) at eu.bcvsolutions.idm.acc.service.impl.DefaultSysSystemAttributeMappingService.getAttributeValue(DefaultSysSystemAttributeMappingService.java:841) at eu.bcvsolutions.idm.acc.service.impl.DefaultSysSystemAttributeMappingService.getAttributeValue(DefaultSysSystemAttributeMappingService.java:813) at eu.bcvsolutions.idm.acc.service.impl.DefaultSysSystemAttributeMappingService$$FastClassBySpringCGLIB$$507e7707.invoke(<generated>) at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:218) at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:687) at eu.bcvsolutions.idm.acc.service.impl.DefaultSysSystemAttributeMappingService$$EnhancerBySpringCGLIB$$c98ee721.getAttributeValue(<generated>) at eu.bcvsolutions.idm.acc.service.impl.AbstractSynchronizationExecutor.canSetValue(AbstractSynchronizationExecutor.java:1918) at eu.bcvsolutions.idm.acc.service.impl.AbstractSynchronizationExecutor.lambda$fillExtendedAttributes$3(AbstractSynchronizationExecutor.java:1766) at java.base/java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:176) at java.base/java.util.ArrayList$ArrayListSpliterator.forEachRemaining(ArrayList.java:1655) at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:484) at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:474) at java.base/java.util.stream.ForEachOps$ForEachOp.evaluateSequential(ForEachOps.java:150) at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(ForEachOps.java:173) at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234) at java.base/java.util.stream.ReferencePipeline.forEach(ReferencePipeline.java:497) at eu.bcvsolutions.idm.acc.service.impl.AbstractSynchronizationExecutor.fillExtendedAttributes(AbstractSynchronizationExecutor.java:1768) at eu.bcvsolutions.idm.acc.service.impl.AbstractSynchronizationExecutor.doCreateEntity(AbstractSynchronizationExecutor.java:1352) at eu.bcvsolutions.idm.acc.service.impl.AbstractSynchronizationExecutor.resolveMissingEntitySituation(AbstractSynchronizationExecutor.java:1148) at eu.bcvsolutions.idm.acc.service.impl.AbstractSynchronizationExecutor.resolveAccountNotExistSituation(AbstractSynchronizationExecutor.java:572) at eu.bcvsolutions.idm.acc.service.impl.AbstractSynchronizationExecutor.doItemSynchronization(AbstractSynchronizationExecutor.java:462) at eu.bcvsolutions.idm.acc.service.impl.DefaultSynchronizationService.doItemSynchronization(DefaultSynchronizationService.java:218) at eu.bcvsolutions.idm.acc.service.impl.DefaultSynchronizationService$$FastClassBySpringCGLIB$$66d7ee75.invoke(<generated>) at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:218) at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.invokeJoinpoint(CglibAopProxy.java:752) at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:163) at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:295) at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:98) at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186) at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:691) at eu.bcvsolutions.idm.acc.service.impl.DefaultSynchronizationService$$EnhancerBySpringCGLIB$$592622b.doItemSynchronization(<generated>) at eu.bcvsolutions.idm.acc.event.processor.synchronization.SynchronizationItemProcessor.process(SynchronizationItemProcessor.java:52) at eu.bcvsolutions.idm.core.api.event.AbstractEntityEventProcessor.onApplicationEvent(AbstractEntityEventProcessor.java:244) at org.springframework.context.event.SimpleApplicationEventMulticaster.doInvokeListener(SimpleApplicationEventMulticaster.java:172) at org.springframework.context.event.SimpleApplicationEventMulticaster.invokeListener(SimpleApplicationEventMulticaster.java:165) at org.springframework.context.event.SimpleApplicationEventMulticaster.multicastEvent(SimpleApplicationEventMulticaster.java:139) at org.springframework.context.support.AbstractApplicationContext.publishEvent(AbstractApplicationContext.java:403) at org.springframework.context.support.AbstractApplicationContext.publishEvent(AbstractApplicationContext.java:373) at eu.bcvsolutions.idm.core.model.service.impl.DefaultEntityEventManager.process(DefaultEntityEventManager.java:253) at eu.bcvsolutions.idm.core.model.service.impl.DefaultEntityEventManager.process(DefaultEntityEventManager.java:180) at eu.bcvsolutions.idm.acc.service.impl.AbstractSynchronizationExecutor.startItemSynchronization(AbstractSynchronizationExecutor.java:661) at eu.bcvsolutions.idm.acc.service.impl.AbstractSynchronizationExecutor.handleIcObject(AbstractSynchronizationExecutor.java:622) at eu.bcvsolutions.idm.acc.service.impl.AbstractSynchronizationExecutor$DefaultResultHandler.handle(AbstractSynchronizationExecutor.java:2582) at eu.bcvsolutions.idm.ic.connid.service.impl.ConnIdIcConnectorService$2.handle(ConnIdIcConnectorService.java:248) at org.identityconnectors.framework.impl.api.StreamHandlerUtil$ObjectStreamHandlerAdapter.handle(StreamHandlerUtil.java:101) at org.identityconnectors.framework.impl.api.BufferedResultsProxy.invoke(BufferedResultsProxy.java:262) at org.identityconnectors.framework.impl.api.DelegatingTimeoutProxy.invoke(DelegatingTimeoutProxy.java:94) at com.sun.proxy.$Proxy547.search(Unknown Source) at org.identityconnectors.framework.impl.api.AbstractConnectorFacade.search(AbstractConnectorFacade.java:179) at eu.bcvsolutions.idm.ic.connid.service.impl.ConnIdIcConnectorService.pageSearch(ConnIdIcConnectorService.java:264) at eu.bcvsolutions.idm.ic.connid.service.impl.ConnIdIcConnectorService.search(ConnIdIcConnectorService.java:259) at eu.bcvsolutions.idm.ic.service.impl.DefaultIcConnectorFacade.search(DefaultIcConnectorFacade.java:114) at eu.bcvsolutions.idm.acc.service.impl.AbstractSynchronizationExecutor.process(AbstractSynchronizationExecutor.java:282) at eu.bcvsolutions.idm.acc.service.impl.DefaultSynchronizationService.startSynchronization(DefaultSynchronizationService.java:189) at eu.bcvsolutions.idm.acc.service.impl.DefaultSynchronizationService$$FastClassBySpringCGLIB$$66d7ee75.invoke(<generated>) at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:218) at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:687) at eu.bcvsolutions.idm.acc.service.impl.DefaultSynchronizationService$$EnhancerBySpringCGLIB$$592622b.startSynchronization(<generated>) at eu.bcvsolutions.idm.acc.scheduler.task.impl.SynchronizationSchedulableTaskExecutor.process(SynchronizationSchedulableTaskExecutor.java:79) at eu.bcvsolutions.idm.acc.scheduler.task.impl.SynchronizationSchedulableTaskExecutor.process(SynchronizationSchedulableTaskExecutor.java:38) at eu.bcvsolutions.idm.core.scheduler.api.service.AbstractLongRunningTaskExecutor.call(AbstractLongRunningTaskExecutor.java:269) at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264) at eu.bcvsolutions.idm.core.config.DelegatingTransactionContextRunnable.run(DelegatingTransactionContextRunnable.java:39) at org.springframework.security.concurrent.DelegatingSecurityContextRunnable.run(DelegatingSecurityContextRunnable.java:84) at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128) at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628) at java.base/java.lang.Thread.run(Thread.java:829) ------------------------- 15.12.2022 14:08:07: Operation count for [CREATE_ENTITY] is [1] ------------------------- 15.12.2022 14:08:07: java.lang.IllegalArgumentException: Owner id is required. at org.springframework.util.Assert.notNull(Assert.java:198) at eu.bcvsolutions.idm.core.eav.service.impl.DefaultFormService.getValues(DefaultFormService.java:1067) at eu.bcvsolutions.idm.core.eav.service.impl.DefaultFormService.getValues(DefaultFormService.java:1056) at eu.bcvsolutions.idm.core.eav.service.impl.DefaultFormService$$FastClassBySpringCGLIB$$f7e12749.invoke(<generated>) at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:218) at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.invokeJoinpoint(CglibAopProxy.java:752) at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:163) at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:295) at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:98) at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186) at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:691) at eu.bcvsolutions.idm.core.eav.service.impl.DefaultFormService$$EnhancerBySpringCGLIB$$68fe3127.getValues(<generated>) at eu.bcvsolutions.idm.acc.service.impl.DefaultSysSystemAttributeMappingService.getAttributeValue(DefaultSysSystemAttributeMappingService.java:841) at eu.bcvsolutions.idm.acc.service.impl.DefaultSysSystemAttributeMappingService.getAttributeValue(DefaultSysSystemAttributeMappingService.java:813) at eu.bcvsolutions.idm.acc.service.impl.DefaultSysSystemAttributeMappingService$$FastClassBySpringCGLIB$$507e7707.invoke(<generated>) at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:218) at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:687) at eu.bcvsolutions.idm.acc.service.impl.DefaultSysSystemAttributeMappingService$$EnhancerBySpringCGLIB$$c98ee721.getAttributeValue(<generated>) at eu.bcvsolutions.idm.acc.service.impl.AbstractSynchronizationExecutor.canSetValue(AbstractSynchronizationExecutor.java:1918) at eu.bcvsolutions.idm.acc.service.impl.AbstractSynchronizationExecutor.lambda$fillExtendedAttributes$3(AbstractSynchronizationExecutor.java:1766) at java.base/java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:176) at java.base/java.util.ArrayList$ArrayListSpliterator.forEachRemaining(ArrayList.java:1655) at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:484) at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:474) at java.base/java.util.stream.ForEachOps$ForEachOp.evaluateSequential(ForEachOps.java:150) at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(ForEachOps.java:173) at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234) at java.base/java.util.stream.ReferencePipeline.forEach(ReferencePipeline.java:497) at eu.bcvsolutions.idm.acc.service.impl.AbstractSynchronizationExecutor.fillExtendedAttributes(AbstractSynchronizationExecutor.java:1768) at eu.bcvsolutions.idm.acc.service.impl.AbstractSynchronizationExecutor.doCreateEntity(AbstractSynchronizationExecutor.java:1352) at eu.bcvsolutions.idm.acc.service.impl.AbstractSynchronizationExecutor.resolveMissingEntitySituation(AbstractSynchronizationExecutor.java:1148) at eu.bcvsolutions.idm.acc.service.impl.AbstractSynchronizationExecutor.resolveAccountNotExistSituation(AbstractSynchronizationExecutor.java:572) at eu.bcvsolutions.idm.acc.service.impl.AbstractSynchronizationExecutor.doItemSynchronization(AbstractSynchronizationExecutor.java:462) at eu.bcvsolutions.idm.acc.service.impl.DefaultSynchronizationService.doItemSynchronization(DefaultSynchronizationService.java:218) at eu.bcvsolutions.idm.acc.service.impl.DefaultSynchronizationService$$FastClassBySpringCGLIB$$66d7ee75.invoke(<generated>) at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:218) at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.invokeJoinpoint(CglibAopProxy.java:752) at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:163) at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:295) at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:98) at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186) at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:691) at eu.bcvsolutions.idm.acc.service.impl.DefaultSynchronizationService$$EnhancerBySpringCGLIB$$592622b.doItemSynchronization(<generated>) at eu.bcvsolutions.idm.acc.event.processor.synchronization.SynchronizationItemProcessor.process(SynchronizationItemProcessor.java:52) at eu.bcvsolutions.idm.core.api.event.AbstractEntityEventProcessor.onApplicationEvent(AbstractEntityEventProcessor.java:244) at org.springframework.context.event.SimpleApplicationEventMulticaster.doInvokeListener(SimpleApplicationEventMulticaster.java:172) at org.springframework.context.event.SimpleApplicationEventMulticaster.invokeListener(SimpleApplicationEventMulticaster.java:165) at org.springframework.context.event.SimpleApplicationEventMulticaster.multicastEvent(SimpleApplicationEventMulticaster.java:139) at org.springframework.context.support.AbstractApplicationContext.publishEvent(AbstractApplicationContext.java:403) at org.springframework.context.support.AbstractApplicationContext.publishEvent(AbstractApplicationContext.java:373) at eu.bcvsolutions.idm.core.model.service.impl.DefaultEntityEventManager.process(DefaultEntityEventManager.java:253) at eu.bcvsolutions.idm.core.model.service.impl.DefaultEntityEventManager.process(DefaultEntityEventManager.java:180) at eu.bcvsolutions.idm.acc.service.impl.AbstractSynchronizationExecutor.startItemSynchronization(AbstractSynchronizationExecutor.java:661) at eu.bcvsolutions.idm.acc.service.impl.AbstractSynchronizationExecutor.handleIcObject(AbstractSynchronizationExecutor.java:622) at eu.bcvsolutions.idm.acc.service.impl.AbstractSynchronizationExecutor$DefaultResultHandler.handle(AbstractSynchronizationExecutor.java:2582) at eu.bcvsolutions.idm.ic.connid.service.impl.ConnIdIcConnectorService$2.handle(ConnIdIcConnectorService.java:248) at org.identityconnectors.framework.impl.api.StreamHandlerUtil$ObjectStreamHandlerAdapter.handle(StreamHandlerUtil.java:101) at org.identityconnectors.framework.impl.api.BufferedResultsProxy.invoke(BufferedResultsProxy.java:262) at org.identityconnectors.framework.impl.api.DelegatingTimeoutProxy.invoke(DelegatingTimeoutProxy.java:94) at com.sun.proxy.$Proxy547.search(Unknown Source) at org.identityconnectors.framework.impl.api.AbstractConnectorFacade.search(AbstractConnectorFacade.java:179) at eu.bcvsolutions.idm.ic.connid.service.impl.ConnIdIcConnectorService.pageSearch(ConnIdIcConnectorService.java:264) at eu.bcvsolutions.idm.ic.connid.service.impl.ConnIdIcConnectorService.search(ConnIdIcConnectorService.java:259) at eu.bcvsolutions.idm.ic.service.impl.DefaultIcConnectorFacade.search(DefaultIcConnectorFacade.java:114) at eu.bcvsolutions.idm.acc.service.impl.AbstractSynchronizationExecutor.process(AbstractSynchronizationExecutor.java:282) at eu.bcvsolutions.idm.acc.service.impl.DefaultSynchronizationService.startSynchronization(DefaultSynchronizationService.java:189) at eu.bcvsolutions.idm.acc.service.impl.DefaultSynchronizationService$$FastClassBySpringCGLIB$$66d7ee75.invoke(<generated>) at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:218) at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:687) at eu.bcvsolutions.idm.acc.service.impl.DefaultSynchronizationService$$EnhancerBySpringCGLIB$$592622b.startSynchronization(<generated>) at eu.bcvsolutions.idm.acc.scheduler.task.impl.SynchronizationSchedulableTaskExecutor.process(SynchronizationSchedulableTaskExecutor.java:79) at eu.bcvsolutions.idm.acc.scheduler.task.impl.SynchronizationSchedulableTaskExecutor.process(SynchronizationSchedulableTaskExecutor.java:38) at eu.bcvsolutions.idm.core.scheduler.api.service.AbstractLongRunningTaskExecutor.call(AbstractLongRunningTaskExecutor.java:269) at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264) at eu.bcvsolutions.idm.core.config.DelegatingTransactionContextRunnable.run(DelegatingTransactionContextRunnable.java:39) at org.springframework.security.concurrent.DelegatingSecurityContextRunnable.run(DelegatingSecurityContextRunnable.java:84) at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128) at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628) at java.base/java.lang.Thread.run(Thread.java:829) ------------------------- 15.12.2022 14:08:07: Operation count for [CREATE_ENTITY] is [1]
Updated by Tomáš Doischer about 2 years ago
- Category set to Synchronization
- Assignee set to Tomáš Doischer
Updated by Ondřej Kopr almost 2 years ago
- Status changed from New to In Progress
- Assignee changed from Tomáš Doischer to Ondřej Kopr
- Target version set to 12.2.4
- % Done changed from 0 to 50
Implemented:
Commit: https://github.com/bcvsolutions/CzechIdMng/commit/93bc53db4c9c6235bc5c2a8a90ae81751c4a13ab (branch: hotfix-12.2.4)
Now we can start tests on test environment
Updated by Ondřej Kopr almost 2 years ago
- Status changed from In Progress to Needs feedback
- Assignee changed from Ondřej Kopr to Michal Steinhart
Updated by Michal Steinhart almost 2 years ago
- Status changed from Needs feedback to Resolved
- Assignee changed from Michal Steinhart to Tomáš Doischer
- % Done changed from 50 to 100
Hotfix-12.2.4 #note-3 was used on test envinronment and now the synchronizaton with the "strategy" set as "write only if target value is null" is working according to expectation thanks to the fix.
From my point of view it´s ready for implementation to the product.
Updated by Tomáš Doischer almost 2 years ago
- Status changed from Resolved to In Progress
- Target version changed from 12.2.4 to 13.0.0
Needs to be merged to develop.
Updated by Tomáš Doischer almost 2 years ago
- Status changed from In Progress to Needs feedback
- Assignee changed from Tomáš Doischer to Peter Štrunc
@sourek, have a look at this PR: https://github.com/bcvsolutions/CzechIdMng/pull/321
It was already tested but it needs to merged to develop.
Updated by Tomáš Doischer almost 2 years ago
- Status changed from Needs feedback to Resolved
- Assignee changed from Peter Štrunc to Ondřej Kopr
Merged to develop.
Updated by Tomáš Doischer almost 2 years ago
- Status changed from Resolved to Closed