OIM 11gR2 : Process task adapter

Hello Experts,
I have to create a process task adapter in order to assign the users provisioned on AD to various groups on AD.
1. How may i configure a new process task adapter from ther design console ?
2. How may i map the variables between the process task created in the design console with the input parameters of the adapter java code ?

http://www.idmworks.com/blog/oracle-identity-manager-basics-creating-a-custom-adapter-in-oim-11g
http://idmrockstar.com/blog/2009/08/how-to-create-a-prepopulate-adapter-in-oim/ (HINT)
http://docs.oracle.com/cd/E14571_01/doc.1111/e14309/creadp.htm#BABGHIFA

Similar Messages

  • Error in creating a process task adapter in OIM

    Hi All,
    I am trying to create a process task adapter(Java Task) in OIM 11.1.1.5.
    The code tries to fetch the values of a process form using a lookup and store it in a hashmap. So have done import for Thor.Api.* and com.thortech.xl.dataaccess.tcDataProvider in the code. The jar for the code is uploaded in MDS and saved in JavaTask folder.
    Whlie creating the the adapter Task, after selecting the API source as my jar file, when i selecting the Application API, i am getting the following error.
    SEVERE: Class/Method: tcADPClient/introspect encounter some problems: EJB Exception: ; nested exception is:
    java.lang.NoClassDefFoundError: com/thortech/xl/dataaccess/tcDataProvider; nested exception is: java.rmi.RemoteException: EJB Exception: ; nested exception is:
    java.lang.NoClassDefFoundError: com/thortech/xl/dataaccess/tcDataProvider
    javax.ejb.EJBException: EJB Exception: ; nested exception is:
    java.lang.NoClassDefFoundError: com/thortech/xl/dataaccess/tcDataProvider; nested exception is: java.rmi.RemoteException: EJB Exception: ; nested exception is:
    java.lang.NoClassDefFoundError: com/thortech/xl/dataaccess/tcDataProvider
    java.rmi.RemoteException: EJB Exception: ; nested exception is:
    java.lang.NoClassDefFoundError: com/thortech/xl/dataaccess/tcDataProvider
    at weblogic.rjvm.ResponseImpl.unmarshalReturn(ResponseImpl.java:234)
    at weblogic.rmi.internal.BasicRemoteRef.invoke(BasicRemoteRef.java:223)
    at com.thortech.xl.ejb.interfaces.tcADP_3uwi2l_tcADPRemoteImpl_1035_WLStub.introspectAPIx(Unknown Source)
    at sun.reflect.GeneratedMethodAccessor50.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:597)
    at weblogic.ejb.container.internal.RemoteBusinessIntfProxy.invoke(RemoteBusinessIntfProxy.java:85)
    at $Proxy4.introspectAPIx(Unknown Source)
    at com.thortech.xl.ejb.interfaces.tcADPDelegate.introspectAPI(Unknown Source)
    at sun.reflect.GeneratedMethodAccessor49.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:597)
    at Thor.API.Base.SecurityInvocationHandler$1.run(SecurityInvocationHandler.java:68)
    at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:321)
    at weblogic.security.service.SecurityManager.runAs(SecurityManager.java:120)
    at weblogic.security.Security.runAs(Security.java:41)
    at Thor.API.Security.LoginHandler.weblogicLoginSession.runAs(weblogicLoginSession.java:52)
    at Thor.API.Base.SecurityInvocationHandler.invoke(SecurityInvocationHandler.java:79)
    at $Proxy5.introspectAPI(Unknown Source)
    at com.thortech.xl.client.dataobj.tcADPClient.introspect(tcADPClient.java:113)
    at com.thortech.xl.adapterfactory.forms.tcfrmAdapterTask.setJavaApiLookup(tcfrmAdapterTask.java:433)
    at com.thortech.xl.adapterfactory.forms.tcfrmAdapterTask.access$1200(tcfrmAdapterTask.java:40)
    at com.thortech.xl.adapterfactory.forms.tcfrmAdapterTask$4.actionPerformed(tcfrmAdapterTask.java:683)
    at javax.swing.JComboBox.fireActionEvent(JComboBox.java:1240)
    at javax.swing.JComboBox.setSelectedItem(JComboBox.java:567)
    at javax.swing.JComboBox.setSelectedIndex(JComboBox.java:603)
    at javax.swing.plaf.basic.BasicComboPopup$Handler.mouseReleased(BasicComboPopup.java:840)
    at java.awt.AWTEventMulticaster.mouseReleased(AWTEventMulticaster.java:273)
    at java.awt.Component.processMouseEvent(Component.java:6289)
    at javax.swing.JComponent.processMouseEvent(JComponent.java:3267)
    at java.awt.Component.processEvent(Component.java:6054)
    at java.awt.Container.processEvent(Container.java:2041)
    at java.awt.Component.dispatchEventImpl(Component.java:4652)
    at java.awt.Container.dispatchEventImpl(Container.java:2099)
    at java.awt.Component.dispatchEvent(Component.java:4482)
    at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4577)
    at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4238)
    at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4168)
    at java.awt.Container.dispatchEventImpl(Container.java:2085)
    at java.awt.Window.dispatchEventImpl(Window.java:2478)
    at java.awt.Component.dispatchEvent(Component.java:4482)
    at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:644)
    at java.awt.EventQueue.access$000(EventQueue.java:85)
    at java.awt.EventQueue$1.run(EventQueue.java:603)
    at java.awt.EventQueue$1.run(EventQueue.java:601)
    at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:87)
    at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:98)
    at java.awt.EventQueue$2.run(EventQueue.java:617)
    at java.awt.EventQueue$2.run(EventQueue.java:615)
    at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:87)
    at java.awt.EventQueue.dispatchEvent(EventQueue.java:614)
    at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269)
    at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184)
    at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:178)
    at java.awt.Dialog$1.run(Dialog.java:1046)
    at java.awt.Dialog$3.run(Dialog.java:1098)
    at java.awt.Dialog.show(Dialog.java:1096)
    at com.thortech.xl.gui.base.tcDialog.show(tcDialog.java:102)
    at java.awt.Component.show(Component.java:1585)
    at java.awt.Component.setVisible(Component.java:1537)
    at java.awt.Window.setVisible(Window.java:842)
    at java.awt.Dialog.setVisible(Dialog.java:986)
    at com.thortech.xl.gui.base.tcfrmPopup.jbInit(tcfrmPopup.java:199)
    at com.thortech.xl.gui.base.tcfrmPopup.addForm(tcfrmPopup.java:166)
    at com.thortech.xl.adapterfactory.guibase.tcAdapterTaskTree.loadAddForm1(tcAdapterTaskTree.java:1387)
    at com.thortech.xl.adapterfactory.guibase.tcAdapterTaskTree.launchEditorForm(tcAdapterTaskTree.java:1355)
    at com.thortech.xl.adapterfactory.guibase.tcAdapterTaskTree.addAdapterTask(tcAdapterTaskTree.java:555)
    at com.thortech.xl.adapterfactory.guibase.tcAdapterTaskTree.actionPerformed(tcAdapterTaskTree.java:459)
    at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1995)
    at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2318)
    at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:387)
    at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:242)
    at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:236)
    at java.awt.AWTEventMulticaster.mouseReleased(AWTEventMulticaster.java:272)
    at java.awt.Component.processMouseEvent(Component.java:6289)
    at javax.swing.JComponent.processMouseEvent(JComponent.java:3267)
    at java.awt.Component.processEvent(Component.java:6054)
    at java.awt.Container.processEvent(Container.java:2041)
    at java.awt.Component.dispatchEventImpl(Component.java:4652)
    at java.awt.Container.dispatchEventImpl(Container.java:2099)
    at java.awt.Component.dispatchEvent(Component.java:4482)
    at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4577)
    at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4238)
    at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4168)
    at java.awt.Container.dispatchEventImpl(Container.java:2085)
    at java.awt.Window.dispatchEventImpl(Window.java:2478)
    at java.awt.Component.dispatchEvent(Component.java:4482)
    at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:644)
    at java.awt.EventQueue.access$000(EventQueue.java:85)
    at java.awt.EventQueue$1.run(EventQueue.java:603)
    at java.awt.EventQueue$1.run(EventQueue.java:601)
    at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:87)
    at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:98)
    at java.awt.EventQueue$2.run(EventQueue.java:617)
    at java.awt.EventQueue$2.run(EventQueue.java:615)
    at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:87)
    at java.awt.EventQueue.dispatchEvent(EventQueue.java:614)
    at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269)
    at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184)
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161)
    at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)
    Caused by: java.lang.NoClassDefFoundError: com/thortech/xl/dataaccess/tcDataProvider
    at java.lang.Class.getDeclaredMethods0(Native Method)
    at java.lang.Class.privateGetDeclaredMethods(Class.java:2427)
    at java.lang.Class.privateGetPublicMethods(Class.java:2547)
    at java.lang.Class.getMethods(Class.java:1410)
    at com.thortech.xl.dataobj.util.tcApplicationLookup.introspect(tcApplicationLookup.java:417)
    at com.thortech.xl.dataobj.tcADP.introspectAPI(tcADP.java:172)
    at com.thortech.xl.ejb.databeansimpl.tcADPBean.introspectAPI(tcADPBean.java:89)
    at com.thortech.xl.ejb.interfaces.tcADPEJB.introspectAPIx(Unknown Source)
    at sun.reflect.GeneratedMethodAccessor589.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:597)
    at com.bea.core.repackaged.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:310)
    at com.bea.core.repackaged.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:182)
    at com.bea.core.repackaged.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:149)
    at com.bea.core.repackaged.springframework.aop.support.DelegatingIntroductionInterceptor.doProceed(DelegatingIntroductionInterceptor.java:131)
    at com.bea.core.repackaged.springframework.aop.support.DelegatingIntroductionInterceptor.invoke(DelegatingIntroductionInterceptor.java:119)
    at com.bea.core.repackaged.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:171)
    at com.bea.core.repackaged.springframework.jee.spi.MethodInvocationVisitorImpl.visit(MethodInvocationVisitorImpl.java:37)
    at weblogic.ejb.container.injection.EnvironmentInterceptorCallbackImpl.callback(EnvironmentInterceptorCallbackImpl.java:54)
    at com.bea.core.repackaged.springframework.jee.spi.EnvironmentInterceptor.invoke(EnvironmentInterceptor.java:50)
    at com.bea.core.repackaged.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:171)
    at com.bea.core.repackaged.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:89)
    at com.bea.core.repackaged.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:171)
    at com.bea.core.repackaged.springframework.aop.support.DelegatingIntroductionInterceptor.doProceed(DelegatingIntroductionInterceptor.java:131)
    at com.bea.core.repackaged.springframework.aop.support.DelegatingIntroductionInterceptor.invoke(DelegatingIntroductionInterceptor.java:119)
    at com.bea.core.repackaged.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:171)
    at com.bea.core.repackaged.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:204)
    at $Proxy329.introspectAPIx(Unknown Source)
    at com.thortech.xl.ejb.interfaces.tcADP_3uwi2l_tcADPRemoteImpl.__WL_invoke(Unknown Source)
    at weblogic.ejb.container.internal.SessionRemoteMethodInvoker.invoke(SessionRemoteMethodInvoker.java:40)
    at com.thortech.xl.ejb.interfaces.tcADP_3uwi2l_tcADPRemoteImpl.introspectAPIx(Unknown Source)
    at com.thortech.xl.ejb.interfaces.tcADP_3uwi2l_tcADPRemoteImpl_WLSkel.invoke(Unknown Source)
    at weblogic.rmi.internal.activation.ActivatableServerRef.invoke(ActivatableServerRef.java:85)
    at weblogic.rmi.internal.BasicServerRef$1.run(BasicServerRef.java:522)
    at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:363)
    at weblogic.security.service.SecurityManager.runAs(SecurityManager.java:146)
    at weblogic.rmi.internal.BasicServerRef.handleRequest(BasicServerRef.java:518)
    at weblogic.rmi.internal.wls.WLSExecuteRequest.run(WLSExecuteRequest.java:118)
    at weblogic.work.ExecuteThread.execute(ExecuteThread.java:209)
    at weblogic.work.ExecuteThread.run(ExecuteThread.java:178)
    javax.ejb.EJBException: EJB Exception: ; nested exception is:
    java.lang.NoClassDefFoundError: com/thortech/xl/dataaccess/tcDataProvider; nested exception is: java.rmi.RemoteException: EJB Exception: ; nested exception is:
    java.lang.NoClassDefFoundError: com/thortech/xl/dataaccess/tcDataProvider
    at weblogic.ejb.container.internal.RemoteBusinessIntfProxy.unwrapRemoteException(RemoteBusinessIntfProxy.java:124)
    at weblogic.ejb.container.internal.RemoteBusinessIntfProxy.invoke(RemoteBusinessIntfProxy.java:96)
    at $Proxy4.introspectAPIx(Unknown Source)
    at com.thortech.xl.ejb.interfaces.tcADPDelegate.introspectAPI(Unknown Source)
    at sun.reflect.GeneratedMethodAccessor49.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:597)
    at Thor.API.Base.SecurityInvocationHandler$1.run(SecurityInvocationHandler.java:68)
    at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:321)
    at weblogic.security.service.SecurityManager.runAs(SecurityManager.java:120)
    at weblogic.security.Security.runAs(Security.java:41)
    at Thor.API.Security.LoginHandler.weblogicLoginSession.runAs(weblogicLoginSession.java:52)
    at Thor.API.Base.SecurityInvocationHandler.invoke(SecurityInvocationHandler.java:79)
    at $Proxy5.introspectAPI(Unknown Source)
    at com.thortech.xl.client.dataobj.tcADPClient.introspect(tcADPClient.java:113)
    at com.thortech.xl.adapterfactory.forms.tcfrmAdapterTask.setJavaApiLookup(tcfrmAdapterTask.java:433)
    at com.thortech.xl.adapterfactory.forms.tcfrmAdapterTask.access$1200(tcfrmAdapterTask.java:40)
    at com.thortech.xl.adapterfactory.forms.tcfrmAdapterTask$4.actionPerformed(tcfrmAdapterTask.java:683)
    at javax.swing.JComboBox.fireActionEvent(JComboBox.java:1240)
    at javax.swing.JComboBox.setSelectedItem(JComboBox.java:567)
    at javax.swing.JComboBox.setSelectedIndex(JComboBox.java:603)
    at javax.swing.plaf.basic.BasicComboPopup$Handler.mouseReleased(BasicComboPopup.java:840)
    at java.awt.AWTEventMulticaster.mouseReleased(AWTEventMulticaster.java:273)
    at java.awt.Component.processMouseEvent(Component.java:6289)
    at javax.swing.JComponent.processMouseEvent(JComponent.java:3267)
    at java.awt.Component.processEvent(Component.java:6054)
    at java.awt.Container.processEvent(Container.java:2041)
    at java.awt.Component.dispatchEventImpl(Component.java:4652)
    at java.awt.Container.dispatchEventImpl(Container.java:2099)
    at java.awt.Component.dispatchEvent(Component.java:4482)
    at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4577)
    at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4238)
    at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4168)
    at java.awt.Container.dispatchEventImpl(Container.java:2085)
    at java.awt.Window.dispatchEventImpl(Window.java:2478)
    at java.awt.Component.dispatchEvent(Component.java:4482)
    at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:644)
    at java.awt.EventQueue.access$000(EventQueue.java:85)
    at java.awt.EventQueue$1.run(EventQueue.java:603)
    at java.awt.EventQueue$1.run(EventQueue.java:601)
    at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:87)
    at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:98)
    at java.awt.EventQueue$2.run(EventQueue.java:617)
    at java.awt.EventQueue$2.run(EventQueue.java:615)
    at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:87)
    at java.awt.EventQueue.dispatchEvent(EventQueue.java:614)
    at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269)
    at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184)
    at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:178)
    at java.awt.Dialog$1.run(Dialog.java:1046)
    at java.awt.Dialog$3.run(Dialog.java:1098)
    at java.awt.Dialog.show(Dialog.java:1096)
    at com.thortech.xl.gui.base.tcDialog.show(tcDialog.java:102)
    at java.awt.Component.show(Component.java:1585)
    at java.awt.Component.setVisible(Component.java:1537)
    at java.awt.Window.setVisible(Window.java:842)
    at java.awt.Dialog.setVisible(Dialog.java:986)
    at com.thortech.xl.gui.base.tcfrmPopup.jbInit(tcfrmPopup.java:199)
    at com.thortech.xl.gui.base.tcfrmPopup.addForm(tcfrmPopup.java:166)
    at com.thortech.xl.adapterfactory.guibase.tcAdapterTaskTree.loadAddForm1(tcAdapterTaskTree.java:1387)
    at com.thortech.xl.adapterfactory.guibase.tcAdapterTaskTree.launchEditorForm(tcAdapterTaskTree.java:1355)
    at com.thortech.xl.adapterfactory.guibase.tcAdapterTaskTree.addAdapterTask(tcAdapterTaskTree.java:555)
    at com.thortech.xl.adapterfactory.guibase.tcAdapterTaskTree.actionPerformed(tcAdapterTaskTree.java:459)
    at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1995)
    at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2318)
    at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:387)
    at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:242)
    at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:236)
    at java.awt.AWTEventMulticaster.mouseReleased(AWTEventMulticaster.java:272)
    at java.awt.Component.processMouseEvent(Component.java:6289)
    at javax.swing.JComponent.processMouseEvent(JComponent.java:3267)
    at java.awt.Component.processEvent(Component.java:6054)
    at java.awt.Container.processEvent(Container.java:2041)
    at java.awt.Component.dispatchEventImpl(Component.java:4652)
    at java.awt.Container.dispatchEventImpl(Container.java:2099)
    at java.awt.Component.dispatchEvent(Component.java:4482)
    at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4577)
    at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4238)
    at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4168)
    at java.awt.Container.dispatchEventImpl(Container.java:2085)
    at java.awt.Window.dispatchEventImpl(Window.java:2478)
    at java.awt.Component.dispatchEvent(Component.java:4482)
    at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:644)
    at java.awt.EventQueue.access$000(EventQueue.java:85)
    at java.awt.EventQueue$1.run(EventQueue.java:603)
    at java.awt.EventQueue$1.run(EventQueue.java:601)
    at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:87)
    at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:98)
    at java.awt.EventQueue$2.run(EventQueue.java:617)
    at java.awt.EventQueue$2.run(EventQueue.java:615)
    at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:87)
    at java.awt.EventQueue.dispatchEvent(EventQueue.java:614)
    at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269)
    at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184)
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161)
    at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)
    Caused by: java.rmi.RemoteException: EJB Exception: ; nested exception is:
    java.lang.NoClassDefFoundError: com/thortech/xl/dataaccess/tcDataProvider
    at weblogic.rjvm.ResponseImpl.unmarshalReturn(ResponseImpl.java:234)
    at weblogic.rmi.internal.BasicRemoteRef.invoke(BasicRemoteRef.java:223)
    at com.thortech.xl.ejb.interfaces.tcADP_3uwi2l_tcADPRemoteImpl_1035_WLStub.introspectAPIx(Unknown Source)
    at sun.reflect.GeneratedMethodAccessor50.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:597)
    at weblogic.ejb.container.internal.RemoteBusinessIntfProxy.invoke(RemoteBusinessIntfProxy.java:85)
    ... 96 more
    Caused by: java.lang.NoClassDefFoundError: com/thortech/xl/dataaccess/tcDataProvider
    at java.lang.Class.getDeclaredMethods0(Native Method)
    at java.lang.Class.privateGetDeclaredMethods(Class.java:2427)
    at java.lang.Class.privateGetPublicMethods(Class.java:2547)
    at java.lang.Class.getMethods(Class.java:1410)
    at com.thortech.xl.dataobj.util.tcApplicationLookup.introspect(tcApplicationLookup.java:417)
    at com.thortech.xl.dataobj.tcADP.introspectAPI(tcADP.java:172)
    at com.thortech.xl.ejb.databeansimpl.tcADPBean.introspectAPI(tcADPBean.java:89)
    at com.thortech.xl.ejb.interfaces.tcADPEJB.introspectAPIx(Unknown Source)
    at sun.reflect.GeneratedMethodAccessor589.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:597)
    at com.bea.core.repackaged.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:310)
    at com.bea.core.repackaged.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:182)
    at com.bea.core.repackaged.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:149)
    at com.bea.core.repackaged.springframework.aop.support.DelegatingIntroductionInterceptor.doProceed(DelegatingIntroductionInterceptor.java:131)
    at com.bea.core.repackaged.springframework.aop.support.DelegatingIntroductionInterceptor.invoke(DelegatingIntroductionInterceptor.java:119)
    at com.bea.core.repackaged.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:171)
    at com.bea.core.repackaged.springframework.jee.spi.MethodInvocationVisitorImpl.visit(MethodInvocationVisitorImpl.java:37)
    at weblogic.ejb.container.injection.EnvironmentInterceptorCallbackImpl.callback(EnvironmentInterceptorCallbackImpl.java:54)
    at com.bea.core.repackaged.springframework.jee.spi.EnvironmentInterceptor.invoke(EnvironmentInterceptor.java:50)
    at com.bea.core.repackaged.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:171)
    at com.bea.core.repackaged.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:89)
    at com.bea.core.repackaged.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:171)
    at com.bea.core.repackaged.springframework.aop.support.DelegatingIntroductionInterceptor.doProceed(DelegatingIntroductionInterceptor.java:131)
    at com.bea.core.repackaged.springframework.aop.support.DelegatingIntroductionInterceptor.invoke(DelegatingIntroductionInterceptor.java:119)
    at com.bea.core.repackaged.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:171)
    at com.bea.core.repackaged.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:204)
    at $Proxy329.introspectAPIx(Unknown Source)
    at com.thortech.xl.ejb.interfaces.tcADP_3uwi2l_tcADPRemoteImpl.__WL_invoke(Unknown Source)
    at weblogic.ejb.container.internal.SessionRemoteMethodInvoker.invoke(SessionRemoteMethodInvoker.java:40)
    at com.thortech.xl.ejb.interfaces.tcADP_3uwi2l_tcADPRemoteImpl.introspectAPIx(Unknown Source)
    at com.thortech.xl.ejb.interfaces.tcADP_3uwi2l_tcADPRemoteImpl_WLSkel.invoke(Unknown Source)
    at weblogic.rmi.internal.activation.ActivatableServerRef.invoke(ActivatableServerRef.java:85)
    at weblogic.rmi.internal.BasicServerRef$1.run(BasicServerRef.java:522)
    at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:363)
    at weblogic.security.service.SecurityManager.runAs(SecurityManager.java:146)
    at weblogic.rmi.internal.BasicServerRef.handleRequest(BasicServerRef.java:518)
    at weblogic.rmi.internal.wls.WLSExecuteRequest.run(WLSExecuteRequest.java:118)
    at weblogic.work.ExecuteThread.execute(ExecuteThread.java:209)
    at weblogic.work.ExecuteThread.run(ExecuteThread.java:178)
    I am not able to select the Application API and so cant proceed further.
    Request you all to provide some help for the same

    The other error for the same is as follows
    Oct 9, 2012 6:36:21 PM com.thortech.util.logging.Logger error
    SEVERE: Class/Method: tcADPClient/getConstructors encounter some problems: Bean has been deleted.
    javax.ejb.NoSuchEJBException: Bean has been deleted.
    at weblogic.ejb.container.swap.DiskSwap.read(DiskSwap.java:192)
    at weblogic.ejb.container.manager.StatefulSessionManager.getBean(StatefulSessionManager.java:420)
    at weblogic.ejb.container.manager.StatefulSessionManager.preInvoke(StatefulSessionManager.java:492)
    at weblogic.ejb.container.internal.BaseRemoteObject.preInvoke(BaseRemoteObject.java:229)
    at weblogic.ejb.container.internal.StatefulRemoteObject.__WL_preInvoke(StatefulRemoteObject.java:57)
    at weblogic.ejb.container.internal.SessionRemoteMethodInvoker.invoke(SessionRemoteMethodInvoker.java:24)
    at com.thortech.xl.ejb.interfaces.tcADP_3uwi2l_tcADPRemoteImpl.getConstructorsx(Unknown Source)
    at com.thortech.xl.ejb.interfaces.tcADP_3uwi2l_tcADPRemoteImpl_WLSkel.invoke(Unknown Source)
    at weblogic.rmi.internal.activation.ActivatableServerRef.invoke(ActivatableServerRef.java:85)
    at weblogic.rmi.internal.BasicServerRef$1.run(BasicServerRef.java:522)
    at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:363)
    at weblogic.security.service.SecurityManager.runAs(SecurityManager.java:146)
    at weblogic.rmi.internal.BasicServerRef.handleRequest(BasicServerRef.java:518)
    at weblogic.rmi.internal.wls.WLSExecuteRequest.run(WLSExecuteRequest.java:118)
    at weblogic.work.ExecuteThread.execute(ExecuteThread.java:209)
    at weblogic.work.ExecuteThread.run(ExecuteThread.java:178)
    java.lang.NullPointerException
    at com.thortech.xl.adapterfactory.forms.tcfrmAdapterTask.setJavaApiLookup(tcfrmAdapterTask.java:447)
    at com.thortech.xl.adapterfactory.forms.tcfrmAdapterTask.access$1200(tcfrmAdapterTask.java:40)
    at com.thortech.xl.adapterfactory.forms.tcfrmAdapterTask$4.actionPerformed(tcfrmAdapterTask.java:683)
    at javax.swing.JComboBox.fireActionEvent(JComboBox.java:1240)
    at javax.swing.JComboBox.setSelectedItem(JComboBox.java:567)
    at javax.swing.JComboBox.setSelectedIndex(JComboBox.java:603)
    at javax.swing.plaf.basic.BasicComboPopup$Handler.mouseReleased(BasicComboPopup.java:840)
    at java.awt.AWTEventMulticaster.mouseReleased(AWTEventMulticaster.java:273)
    at java.awt.Component.processMouseEvent(Component.java:6289)
    at javax.swing.JComponent.processMouseEvent(JComponent.java:3267)
    at java.awt.Component.processEvent(Component.java:6054)
    at java.awt.Container.processEvent(Container.java:2041)
    at java.awt.Component.dispatchEventImpl(Component.java:4652)
    at java.awt.Container.dispatchEventImpl(Container.java:2099)
    at java.awt.Component.dispatchEvent(Component.java:4482)
    at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4577)
    at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4238)
    at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4168)
    at java.awt.Container.dispatchEventImpl(Container.java:2085)
    at java.awt.Window.dispatchEventImpl(Window.java:2478)
    at java.awt.Component.dispatchEvent(Component.java:4482)
    at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:644)
    at java.awt.EventQueue.access$000(EventQueue.java:85)
    at java.awt.EventQueue$1.run(EventQueue.java:603)
    at java.awt.EventQueue$1.run(EventQueue.java:601)
    at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:87)
    at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:98)
    at java.awt.EventQueue$2.run(EventQueue.java:617)
    at java.awt.EventQueue$2.run(EventQueue.java:615)
    at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:87)
    at java.awt.EventQueue.dispatchEvent(EventQueue.java:614)
    at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269)
    at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184)
    at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:178)
    at java.awt.Dialog$1.run(Dialog.java:1046)
    at java.awt.Dialog$3.run(Dialog.java:1098)
    at java.awt.Dialog.show(Dialog.java:1096)
    at com.thortech.xl.gui.base.tcDialog.show(tcDialog.java:102)
    at java.awt.Component.show(Component.java:1585)
    at java.awt.Component.setVisible(Component.java:1537)
    at java.awt.Window.setVisible(Window.java:842)
    at java.awt.Dialog.setVisible(Dialog.java:986)
    at com.thortech.xl.gui.base.tcfrmPopup.jbInit(tcfrmPopup.java:199)
    at com.thortech.xl.gui.base.tcfrmPopup.addForm(tcfrmPopup.java:166)
    at com.thortech.xl.adapterfactory.guibase.tcAdapterTaskTree.loadAddForm1(tcAdapterTaskTree.java:1387)
    at com.thortech.xl.adapterfactory.guibase.tcAdapterTaskTree.launchEditorForm(tcAdapterTaskTree.java:1355)
    at com.thortech.xl.adapterfactory.guibase.tcAdapterTaskTree.addAdapterTask(tcAdapterTaskTree.java:555)
    at com.thortech.xl.adapterfactory.guibase.tcAdapterTaskTree.actionPerformed(tcAdapterTaskTree.java:459)
    at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1995)
    at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2318)
    at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:387)
    at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:242)
    at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:236)
    at java.awt.AWTEventMulticaster.mouseReleased(AWTEventMulticaster.java:272)
    at java.awt.Component.processMouseEvent(Component.java:6289)
    at javax.swing.JComponent.processMouseEvent(JComponent.java:3267)
    at java.awt.Component.processEvent(Component.java:6054)
    at java.awt.Container.processEvent(Container.java:2041)
    at java.awt.Component.dispatchEventImpl(Component.java:4652)
    at java.awt.Container.dispatchEventImpl(Container.java:2099)
    at java.awt.Component.dispatchEvent(Component.java:4482)
    at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4577)
    at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4238)
    at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4168)
    at java.awt.Container.dispatchEventImpl(Container.java:2085)
    at java.awt.Window.dispatchEventImpl(Window.java:2478)
    at java.awt.Component.dispatchEvent(Component.java:4482)
    at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:644)
    at java.awt.EventQueue.access$000(EventQueue.java:85)
    at java.awt.EventQueue$1.run(EventQueue.java:603)
    at java.awt.EventQueue$1.run(EventQueue.java:601)
    at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:87)
    at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:98)
    at java.awt.EventQueue$2.run(EventQueue.java:617)
    at java.awt.EventQueue$2.run(EventQueue.java:615)
    at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:87)
    at java.awt.EventQueue.dispatchEvent(EventQueue.java:614)
    at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269)
    at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184)
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161)
    at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)

  • Process Task Adapter that looksup value

    Hi,
    Any help on creation of a process task adapter that will lookup a value in OIM.
    I wanted to make this as a generic adapter, by passing the lookup name and a codekey value which should fetch the decoded value in that lookup table.
    By doing so, I wanted to set few attributes so that when a attribute value got changed in USR form, it should search the mapped lookup and the codekey value (using a process task definition) and then set the decoded value in the targetted attribute.
    Thanks in advance.
    Regards.

    Here is the thread which might help you. Solution is there.
    Adapter for querying lookup table
    Sunny

  • Custom Process Task Adapter for AD OIM 11gR2

    Hi,
    Has anyone written a Custom Process Task Adpater for AD? We want to update bunch of attributes from a single task adapter and wondering how we can extend the OOTB ones?
    - Kaushik

    Thats the thing right, we are not able to get the API or appropriate connector classes to get AD Connections and other stuff.
    Consider the case where, you update the Manager's DN. How do we write an adapter using connector's api to fetch the dn?

  • Error creating a role from the process task adapter - OIM 11g R2 PS1

    I have a requirement to create an OIM role dynamically when a resource account is created. Also once the role is created, I need to assign that role to the user dynamically. Following code works perfectly fine if I replace the Platform with OIMClient and run it remotely. It fails when I run it from OIM:
    Exception:
    An exception occurred while performing the operation.
    java.lang.NullPointerException
    at oracle.iam.request.impl.RequestEngine.startOrchestrationFromPreProcess(RequestEngine.java:5516)
    at oracle.iam.request.impl.RequestEngine.triggerOperation(RequestEngine.java:5439)
    at oracle.iam.request.impl.RequestEngine.doOperation(RequestEngine.java:5154)
    at oracle.iam.impl.OIMServiceImpl.doOperation(OIMServiceImpl.java:43)
    at sun.reflect.GeneratedMethodAccessor6238.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:601)
    at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:307)
    at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:182)
    at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:149)
    at oracle.iam.platform.utils.DMSMethodInterceptor.invoke(DMSMethodInterceptor.java:25)
    at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:171)
    at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:204)
    at com.sun.proxy.$Proxy943.doOperation(Unknown Source)
    public static User searchUserByLogin(String login) {
            List<User> users = null;
            Set<String> retAttrs = new HashSet<String>();
            retAttrs.add(UserManagerConstants.AttributeName.USER_KEY.getId());
            SearchCriteria criteria;
            criteria = new SearchCriteria(UserManagerConstants.AttributeName.USER_LOGIN.getId(), login, SearchCriteria.Operator.EQUAL);
            try {
                UserManager userManager = Platform.getService(UserManager.class);
              users = userManager.search(criteria, retAttrs, null);
            } catch (AccessDeniedException ade) {
                // handle exception
            } catch (UserSearchException use) {
                // handle exception
            if (users.size() > 0) {
                return users.get(0);
            } else {
                return null;
        public static boolean grantRole(String usrLogin, String roleKey) throws oracle.iam.platform.authz.exception.AccessDeniedException, UserMembershipException, ValidationFailedException, RoleGrantException {
            RoleManager roleMgr = (RoleManager) Platform.getService(RoleManager.class);      
            adpLogger.debug("Entering grantRole(1): User - " + usrLogin + " Role - " + roleKey);
            Set userKeys = new HashSet();
            User user = searchUserByLogin(usrLogin);
            userKeys.add(user.getEntityId());
            if (!roleMgr.isRoleGranted(roleKey, user.getEntityId(), false)) {
                RoleManagerResult result = roleMgr.grantRole(roleKey, userKeys);
                adpLogger.debug("Role granted " + result.getStatus());
            } else {
                adpLogger.debug("Role is already granted");
            return true;
        public static String createOrUpdateRole(String usrLogin, String roleName) throws oracle.iam.platform.authz.exception.AccessDeniedException, RoleSearchException, ValidationFailedException, RoleAlreadyExistsException, RoleCreateException, RoleGrantException, UserMembershipException {
            adpLogger.debug("Entering createOrUpdateRole(1) Role " + roleName);
            RoleManager roleMgr = (RoleManager) Platform.getService(RoleManager.class);
            SearchCriteria criteria;
            criteria = new SearchCriteria(RoleManagerConstants.ROLE_NAME, roleName, SearchCriteria.Operator.EQUAL);
            Set<String> ret = new HashSet<String>();
            User user = searchUserByLogin(usrLogin);
            List<Role> roles = new ArrayList<Role>();
            roles = roleMgr.search(criteria, ret, null);
            String grpKey = "";
            if (roles.size() > 0) {
                adpLogger.debug("Role already exists. Role ID " + roles.get(0).getEntityId());
                grpKey = roles.get(0).getEntityId();
            } else {
                Role role = new Role(new HashMap());
                role.setName(roleName);
                RoleManagerResult result = roleMgr.create(role);
                adpLogger.debug("Role created with ID " + result.getEntityId());
                grpKey = result.getEntityId();
            return grpKey;
    It fails at             RoleManagerResult result = roleMgr.create(role); line in createOrUpdateRole() method.
    Has anyone ever run into this kind of issue?
    Thanks

    Can you please try after making organization for a particular role and user are same ?
    For new role creation publish the particular group to organization.
    Regards
    Shashank k

  • Clarification Adapter-Process task association

    Hi,
    yet another basic question...
    I have built my IT resource+resource object+adapters+provisioning process.
    This is for study purpose.
    The user get`s correctly created. What is now not clear to me is how can I tell
    to OIM which process task to use for updating the user. The same for delete/
    enable/disable.
    I realize that this must be done in the lookup definition in the design console,
    but do not now how. Can you please shed a light on this?
    Thank you very much.

    Hi
    Edits are typically done on the process form of the resource by an admin. for example say some attribute e.g. First Name needs to be changed on the target system after provisoning (i.e. account creation).
    You will need to create a conditional task (not required for completion) which has a name "First Name Updated".
    OIM understands tasks that are named with the <attribute/field name> Updated (the attribute name must be the exact case as the field name in the process form)<space>Updated (notice "U" upper case) are special and you can attach any adapter (business logic) to make OIM do what you need it to do. In this case you will attach a modify adapter that will update the value of the corresponding field on the target system.
    For Enable and Disable you will need to create a task with any name typically people use "Enable User" "Disable User" respectively but thats not necessary. Whats of essence is the task effect drop down on the "Edit Task" window of the task you created (Disable User or Enable User in this case), select the "Disables process or access to application" for disable user task and attach your adapter for disabling the account on the target system, and set the task to Object status mapping C as "Disabled".
    For enable just select the Enables.... from the drop down and attach your adapter for enabling the account on the target system, and set the task to Object status mapping C as "Enabled".
    For delete/revoke, you can create a task with any name e.g. Delete User but what you need to do is put this task in the undo/recovery of the "Create User" task or whatever task that creates the account e.g. Create User task.
    hope this helps.

  • Mapping Adapter to a process task in process definition.

    Hi Guys
    My requirement is , Disable users associated with an organization when the organization is disabled.
    I have performed the following steps:
    1. In design console Lookup definition Lookup.ACT_PROCESS_TRIGGERS , I added a row
    ACT_DISABLED   DisableUSerWhenOrgDisabled
    2. Then I created process task adapter to recursively disable the users based on the organization name.
    3.Next I attached the adapter to a new task in process definition --> Xellerate User with the name DisableUSerWhenOrgDisabled(decode field in Lookup.ACT_PROCESS_TRIGGERS ).
    4.Then I mapped the Adapter variables to appropriate entities in the Integration tab.
    Now when I login into the admin console and disable an Organization , the adapter is not at all invoked.
    I am unable to get if I am missing anything.Kindly help in resolving this.
    Is this the correct way to achieve this functionality?
    OR
    Do I need to go for Entity Adapters.
    Thank you
    sas
    Edited by: sas on Jan 8, 2009 4:55 PM

    SAS,
    You only need one adapter. You can use one variable that maps the Organization Name. Using this value, you can use the tcOrganizationOperationIntf apis to get information about that organization. Once you get the disabled value, you can create your if statement based on the value of this task. If the Organization is not disabled, return a literal string like "NO_ACTION_REQUIRED". If the Organization is disabled, using the code i previously posted, or the code you have generated, to disabled all the users within the organization. If this task successfully completes, return the literal string like "ALL_USERS_DISABLED". If an error happens, i would return something like "ERROR" or something more descriptive. Then on your responses tab, you can add these values you are returning, along with a more descriptive value. Set the NO_ACTION_REQUIRED and ALL_USERS_DISABLED to a C status and the ERROR responses to a R status. Now when you map your adapter, map in your Organization Name and for your Adapter Return Value map it to the responses.
    As far as what you can do with responses. On the process task, the response tab, you can select the specific response, and then have it trigger another task.
    -Kevin

  • OIM 11g attaching an adapter to the delete user process

    Hi everyone,
    Is there any way to attach
    1. A process task adapter to the Delete User task for the Xellerate User process. Either through creating a new task and linking this task to the Delete User task or modifying the out of the box event handler.
    2. Or an entity adapter to User on pre delete. (from what I understand you can't do this in 11g)
    What I'm trying to do is obscure a user's information in the database before or after they are deleted. I'm trying to avoid event handlers. Any help would be greatly appreciated.

    You should be able to create a pre-process event handler on the User object for action Delete.
    -Kevin

  • OIM 11gR2 : User groups not visible on UI

    Hello Experts,
    I have a requirement in which i need to assign the user provisioned to AD to some group(s) depending upon certain conditions like BU, Location etc. I created a Process Task adapter for the same and am able to successfully assign the users to the desired groups.
    But i am able to check for this validity from the Backend only.
    Ideally the groups assigned to the user must be visible after following these steps:
    *1. Search for a user provisioned to AD.
    2. Go the the Accounts tab.
    3. Click on the AD account (to which the user has been provisioned)
    4. A process form is displayed in the lower half of the webpage which also shows the information regarding the groups assigned to the User. But the groups are not getting displayed.*
    Kindly Help.
    Edited by: IDM_newbie on Jan 24, 2013 11:24 PM

    But sir, the groups are listed under the Accounts tab. Is there any schedule job provided by OIM 11gR2 which results in the display of Groups assigned to the user as well under the Accounts tab ?
    Edited by: IDM_newbie on Jan 25, 2013 1:51 AM

  • Notification from OIM(11gR2) after email id update

    Hi ,
         I have requirement to implement an use-case in OIM as follows.
    OIM has one target resource integrated - Say Resource1 . When ever email id is updated in OIM it will get propagated to Resourc1 and and if email is updated at Resource1 it will get reconciled to OIM. And we have a another system which was not integrated with OIM say Resource2 . Our requirement is to send an email notification to Resource2 admin(s) when ever users email update event occurs in OIM . What was the best way to implement this usecase. As far as I understood this could be implemented using event handlers. I there any other approach/design to address this usecase.
    I mean by using design console approach.
    -Satyendra

    The "Send Notification to Resource Admin task" should get called on the success of "Reconciliation Update Received" task.
    Inside process task adapter (Send Notification to Resource Admin task), you can read the value of old email/new email (using old checkbox, just give a try) or u can compare the User profile Email & Process Form Email Id ( inside your code) and trigger the update on User profile.
    The below post also had similar kind of requirement:
    Re: How to update OIM user profile fields after AD user target reconciliation
    Or to avoid any confusion, just use the cleaner approach of Event Handler to trigger notification.
    ~J

  • Trigger a process task based on Lookup Value

    Hi Everyone,
    We have a requirement like for one of the custom adaptors,we have
    The Process form has the below five attributes
    i)First Name----(String)
    ii)Last Name----(String)
    iii)Location----(Lookup)
    iv)Address----(String)
    V)Mobile-----(String)
    The attribute Location is a lookup Field.
    in Location we have
    Code Decode
    Chennai Chennai
    Bangalore Bangalore
    Delhi Delhi
    Mumbai Mumbai
    NOw if i select chennai in the location lookup.I want to trigger a seperate task from process definition.
    How can this be achieved?
    Regards,
    Naveen

    you can't achieve dynamicly using process task.
    if the value of that lookup is limited and known then you can design like below(Static)
    1. create a process task adapter which takes one string input(location) and return the same. update response for each location values
    2. create task called Location updated or if this task is there for update location value in target system then leave as it is
    3. create a new condiional task "call task based on location" . attach newly created adapter. pass location attribute as input and map return value with response code.
    finally attach this task on the success response of "Location Updated" task
    4. now you have response for all location . so attach respective task on each response.
    Note: if there is no Location Updated task present then create "Location Updated " task and directly attach above adapter on this task.
    --nayan                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               

  • OIM - Approval process available on updates/modifications of a resource ?

    Hello,
    I would like to implement a typical workflow :
    1) UserA is able to provision a resource for other users. He provisions it for UserB. There's an approval process which says that it's UserB's manager (ManagerB) who will approve this request. UserA provisions the resource.
    2) ManagerB approves the request
    3) UserB is now able to use the resource and modify it. He modifies it and his modifications aren't effective until his manager's approval.
    4) ManagerB approves the modification request, ensuring that the data is correct
    The main goal of this kind of workflow is that every action of the resource user means that an according approval process is fired.
    Right now I'm unable to implement such a process. Another user said on this forum that approval events are fired on grant/enable/disable/revoke events. I would like to know if it's possible to use this kind of processes on ANY modification of a given resource.
    And by the way, is there any mean to know exactly which are the minimal permissions/rights to have to be able to provision a resource to a user in a workflow as described earlier ? Right now I'm working with 177 different rights, whose names aren't quite helpful...
    Thanks in advance !

    Ajp , following your instructions, to enable approval on attribute changing (e.g, for resource named 'MyResource') I should take the following steps:
    1) Create a resource object called "Dummy ResObj"
    2) Create a Process Definition of type Approval (with respective task assignment adapters) and associate it with 'Dummy ResObj'.
    3) Create a task inside this to get the manager's approval
    4) Open a Process Definition of type Provisioning associated with the resource 'MyResource'
    5) Create a Process Task Adapter to provision target user to the Dummy ResObj
    - this adapter would get passed the resource object key and the user key
    - the adapter will create a request (on adding user)
    - it would also utilitize the tcUserOperations API
    7) Create a Process Definition for Dummy ResObj
    8) Create a Process Task Adapters to provision and de-provision target user to the Dummy ResObj
    9) Create tasks in the 'Dummy ResObj' provisioning process that calls this process task adapters
    Am I right? Haven't I missed something?

  • Pre populate adapter in OIM 11gr2 not triggered in database

    Hello,
    Folowing is the steps for creation of pre populated adapter in OIM
    ** we have created one form in OIM which is provisioned to Database**
    Steps
    · Installed GTC connector for Database Web App 9.*
    · Created new user and Table in Database
    · Created IT resource for Database
    · Created Sandbox, App Instance and Form, published sandbox
    · Started catalog synchronization job scheduler
    · Created user and and request account to app instance.
    * select application instance to catalog and checkout.
    ** we have created adapter as per the following link
    http://idmrockstar.com/blog/2009/08/how-to-create-a-prepopulate-adapter-in-oim/
    create a pre populated adapter that will populate the firstname of user in email using java class
    source code:
    public class AdapterClass{
    public String email( String fname )
    return fname;
    Steps:
    1) In the design console I have open the Adapter Factory and create a new adapter name :firstname
    adapter type: pre-populate rule generator
    click on save
    2) select variable list tab:
    variable name:Firstname
    type:String
    Map to : Resolve at runtime
    click on save
    3) select Adapter Task tab
    * click add and select logical task
    * select SET VARIABLE and click continue
    * Operand Type:variable
    * Operand Qualifier : FIrstname
    click save and save the adapter
    4) compile the java class into jar file and move the jar file into OIM_HOME\server\JavaTasks
    5)Create a new Adapter with the following"
    Adapter name:Email
    Adapter type: Pre-populate rule Generator
    click save
    6) select variable list tab:
    variable name: var1
    Type:String
    Map to:Resolve at runtime and click save
    7) select Functional Task tab:"
    select java click continue
    select the following information:
    Task name:email
    Api source: JavataskJar:Adapterclass.jar( the jar file which you have create)
    application api: adapteclass
    click save
    8) In the Application method parameters,select the first input: String
    Cange Map to:Adapter variables
    Set the name to:var1 and click save
    9) select the output:STring
    change map to:Adapter variables
    set name to: return variable
    10) click save and save the adapter and click on Build
    Adapter is now build the next step isto join it to the form
    ** join the adapter to the form**
    Steps:
    1) click on form designer and search the related form which we have created
    2) In the respective form click on create a new version and create a new version
    3) and then click on Pre populate tab and click on ADD
    4)select adapter field to firstname
    Rule : default
    Adapter : Firstname
    and click on save
    5) In the adapter variable field click on firstname and fill the following
    map to: Process data
    Qualifier : firstname
    6) Repeat steps 3 to 5 to map the email adapter
    7) click on save.
    Now we have done with all the steps and now we have created one User submit the user
    we have click on request acounts ---> search the catalog and select the application instance (select the app instance "database provisioning") ---> add to cart ---> and check out ---> fill the form leaving email field --> ready to submit ---> submit
    now we have check this user in database but still pre populated fields are not reflected. since this not working so we have found the other three links
    Re: OIM 11gR2 - Prepopulate Field Empty Problem
    http://fusionsecurity.blogspot.in/2013/01/populating-request-attributes-in-oim.html
    http://identityandaccessmanager.blogspot.in/2011/07/prepopulate-adapter-in-oim-11g.html
    according to these links they mention to implements the prepopulationadapter interface into the java class and create the plugin.xml for the class which we have used in jar.
    so we prepared a plugin.xml
    <?xml version="1.0" encoding="UTF-8" ?>
    <oimplugins xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    <plugins pluginpoint="oracle.iam.request.plugins.PrePopulationAdapter">
    <plugin pluginclass= "com.oracle.demo.iam.prepop.plugin.UserLoginPrePop" version="1.0" name="UserLoginPrePop">
    <metadata name="PrePopulationAdapater">
    <value> My_users::email</value>
    </metadata>
    </plugin>
    </plugins>
    </oimplugins>
    and the java class which implements "PrePopulationAdapter".
    they mention to put that jar into one directory named "lib"and paste the xml and lib folder into the OIM_HOME\server\plugin
    BUt we stuck on how to configure the adapter or what is the next steps for the above process. or there is something that we have missed in the process
    please do reply its urgent
    Regards,
    Tushar Palekar

    hii i have followed all your steps regarding the pre populated adapter ,but no luck.
    java code :
    package com.oracle.demo.iam.prepop.plugin;
    import java.io.Serializable;
    import oracle.iam.request.plugins.PrePopulationAdapter;
    import oracle.iam.request.vo.RequestData;
    public class Userfname implements PrePopulationAdapter {
    public Serializable prepopulate(RequestData requestData){
    String fname = "xyz";
    System.out.println("Returning fname ==== " + fname );
    return fname ;
    2)i have create a jar for this code and paste it into lib folder.
    3) i have create a plugin.xml
    <?xml version="1.0" encoding="UTF-8" ?>
    <oimplugins xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    <*plugins pluginpoint="oracle.iam.request.plugins.PrePopulationAdapter">*
    *<plugin pluginclass= "com.oracle.demo.iam.prepop.plugin.Userfname" version="1.0" name="Userfname">*
    *<metadata name="PrePopulationAdapater">*
    *<value>register::LAST_NAME</value>*
    *</metadata>*
    *</plugin>*
    *</plugins>*
    *</oimplugins>*
    4)i register the plugin using ant -f  pluginregistration.xml register
    5)i have restartthe oim server and then i create a user using the same app instatnce in which i have create the form(ie.register),and
    request acount-->select app instance ---> add to cart
    but the last name xyz as per the java code is not reflected in the dadbase table.
    please help
    tushar palekar

  • OIM 11g R1 - Modifying a Resource Erases Custom Process Task ???

    I've created a Generic Resource in OIM that uses the Database Applications Table connector 9.1.0.5.0.
    Then I add my own process tasks through Design Console under "Process Management -> Process Definitions". On each custom process task I've attached my own custom adapters, which I created through "Development Tools -> Adapter Factory" in Design Console. These custom adapters use methods from my Java code. My Java jar file is located in "Oracle_IDM1/server/JavaTasks".
    Now here is the issue:
    Whenever I modify this resource in OIM under "Configuration -> Manage Generic Connector" (E.g Changing reconciliation type from Full to Incremental), all my custom process tasks get deleted.
    What is the reason for this? Is there a solution for this problem?

    This is indeed a major flaw for GTC. Below I found this issue in a Oracle doc.
    Doc Link: http://docs.oracle.com/cd/E14571_01/doc.1111/e14309/aptrouble.htm
    Below is a description of this issue from the Oracle documentation
    Summary:
    Customization work done on objects of a generic technology connector would be overwritten if you perform a Manage Generic Technology Connector operation.
    Description:
    You can use the Design Console to customize connector objects that are automatically created during generic technology connector creation. However, after you customize connector objects, if you perform a Manage Generic Technology Connector operation, then all the customization done on the connector objects would be overwritten. Therefore, Oracle recommends that you to apply one of the following guidelines:
    Do not use the Design Console to modify generic technology connector objects.
    The exception to this guideline is the IT resource. You can modify the parameters of the IT resource by using the Design Console. However, if you have enabled the cache for the GenericConnector and GenericConnectorProviders categories, then you must purge the cache either before or after you modify IT resource parameters. See "Purging the Cache" in the Oracle Fusion Middleware System Administrator's Guide for Oracle Identity Manager for information about running the PurgeCache utility.
    If you use the Design Console to modify generic technology connector objects, then do not use the Manage Generic Technology Connector feature to modify the generic technology connector.
    Connector objects that are automatically created are not deleted even if the generic technology connector creation process fails.

  • Java adapter in process task

    Hi,
    I'm using DBAT connector to provision data from OIM to target system. I have a requirement to change password in target system when it is being changed in OIM (by default is is changed but this change has to be done in specific way). I have crated a java code that changes password in certain way and implemented it as a adapter in OIM (simple adapter; one input (user password) and one output).
    I guess that I should create a task in the process form that invokes this adapter, but after some trials I am still not able to make it work fine.
    My question is: how to implement adapter in the process task? There are 2 tasks by default that corresponds to user password:
    - Change User Password
    - Edit USR_PASSWORD
    Should I edit them?
    Thanks in advance!

    I don't concur with the approach Suren is suggesting because he is asking to set the password through Change User Password task itself. So you will have to create additional adapter variables which would be required to connect to the target and then update the OID password. And all this stuff is already there in the Password Updated task.
    If not this then may be you will have to update the Process form using API's ( ? ? ?)
    But in nearly 99% of such User Profile to Target attributes Updates you use Change User Password and Password Updated combination. So always:
    - Change User password fetches the password from User Definition and save it to Process form *(transformation could also be done as required like upper case)*
    - From process form its forwarded downstream
    Thanks
    Sunny

Maybe you are looking for

  • Date field

    Hey there, I have PopUpCalendar installed but none of my date fields has the popup calendar for selecting dates. I created a new metadata of type date but it's still only a text field. Is there anything special I have to do to see the calendar popup

  • Hooking up a PSP to the router

    HELP!!!  Having trouble hooking up our PSP. Can anyone help us? Have read numerous instructions from other websites but computer language is to hard to figure out. We are newbies to this wireless stuff and can not figure it out.  We think we need to

  • Flex4.6SDKとプロジェクターの再配布契約?

    ここに「無償のFlex SDKはアプリケーションと共に再配布可能ですが.再配布契約に署名する必要があります.」と書かれています. http://www.adobe.com/jp/products/flex/faq.html この署名はどうやってすればいいのでしょうか? また「Flash Player 11.3 プロジェクターをダウンロード (EXE, 8.14MB)」も再配布してOKなのでしょうか? http://www.adobe.com/jp/support/flashplayer/down

  • WEBUTIL DEMO FORM ifError:7/500

    Hello I'm trying to run the webutil demo form (WU_TEST_105.fmb) from Form Builder (version 9.0.4.0.19). The browser window opens but just displays the message ifError:7/500. I can't find any reference to what this means! Does anyone know? Thanks Evan

  • Creating dropdown by coding in Webdynpro ABAP

    Hi experts, I have a requirement to display a dropdown in the portal. But I cannot add it directly in the webdynpro layout as I am using standard WD component. So only through enhancement, it can be achieved. I am not sure how to create a dropdown by