OIM Target Reconciliation

In OIM 9102 ,we are doing target recon
on day 0 when reconciliation insert recieved , we need to put a check that if we user is disabled at target , we want to perform some task.
Similarly from day 1 onwards when reconciliation update recieved , we need to put a check that if we user is disabled at target , we want to call a task.
Please reply soon.
Thanks
Hina

Should be Simple.
- Create this task which checks the Object Status for the resource profile to be in a Disabled state and based on that do the required action
- Attach this task to the response Event Processed for the 2 tasks Reconciliation insert received and Reconciliation Update received, so that it gets invoked every time reconciliation is run

Similar Messages

  • OIM Target reconciliation - Applying logic on field used in reconciliation rule

    Hi All,
    I am working on OIM 11g R1. We are doing target accounts reconciliation from AD using OOTB connectors. samAccountName is the field used for reconciliation matching rules. Now my requirement is to apply some logic on this field(For ex: Removing whitespaces at the end of the field value or adding 0 as prefix) before the reconciliation rules are evaluated to find the match in OIM.
    Could someone help me on implementing this.
    Thanks.
    Rgds,
    Mounika

    This can be achieved creating a class for doing the data transformation and making an an entry in the ReconTransformation lookup against the field for which transformation is required. Please follow the link - http://docs.oracle.com/cd/E22999_01/doc.111/e20347/extnd_func.htm#CMSAD357

  • Trusted and Target Reconciliation

    Hi All,
    Can we do trusted and target reconciliation from the same resource.I have to get email id and few attributes from ad on user profile and I need to do target recon for existing AD ids for further reporting and attestation. Can any one make recommendation for best possible way.
    Regards
    Nitesh

    For trusted recon: do you only have to fetch some attributes from AD to be populated on the User Profile only one time for e.g. contracter end dates are normally stored in AD and after the users have been reconciled in OIM, the end dates need to be updated on the oim profile from AD for the users. Is this the scenario or do you need to do this on an on-going basis, meaning when those attributes change in AD you need it propagated in OIM?
    If it is a one time thingy all you need to do is write a ST that will be run only once, to populate the required fields on the oim user profile of all users after day 1 recon has been completed.
    if you need this on an ongoing basis, you can configure only an app recon and on recon update recd write an adapter to see what fields have changed on the process form, see if those are the fields that you need to propagate to the user form, if so then simply update the user form with the value that is there for that field on the process form.

  • Error Active Directory Target Reconciliation

    Hi,
    I am trying to run target reconciliation for AD.
    I reconciled 8000 users successfully, but I have 22 users with errors.
    I want to know if the problem is with the AD user attributes or with the OIM.
    I'm getting the following exception:
    INFO,15 Apr 2011 11:22:53,229,[OIMCP.ADCS],com.thortech.xl.schedule.tasks.ActiveDirectoryReconTask : setTaskSchedulerObjectName : Starting Active Directory Target Reconciliation
    ERROR,15 Apr 2011 11:22:53,687,[OIMCP.ADCS],====================================================
    ERROR,15 Apr 2011 11:22:53,687,[OIMCP.ADCS],com.thortech.xl.schedule.tasks.ActiveDirectoryReconTask : processUserChange : null
    ERROR,15 Apr 2011 11:22:53,687,[OIMCP.ADCS],====================================================
    ERROR,15 Apr 2011 11:22:53,688,[OIMCP.ADCS],================= Start Stack Trace =======================
    ERROR,15 Apr 2011 11:22:53,688,[OIMCP.ADCS],com.thortech.xl.schedule.tasks.ActiveDirectoryReconTask : processUserChange
    ERROR,15 Apr 2011 11:22:53,688,[OIMCP.ADCS],
    ERROR,15 Apr 2011 11:22:53,689,[OIMCP.ADCS],Description : null
    ERROR,15 Apr 2011 11:22:53,689,[OIMCP.ADCS],Thor.API.Exceptions.IllegalInputException
    at Thor.API.Operations.tcReconciliationOperationsClient.ignoreEvent(Unknown Source)
    at sun.reflect.GeneratedMethodAccessor287.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(Unknown Source)
    at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:321)
    at weblogic.security.service.SecurityManager.runAs(SecurityManager.java:121)
    at weblogic.security.Security.runAs(Security.java:41)
    at Thor.API.Security.LoginHandler.weblogicLoginSession.runAs(Unknown Source)
    at Thor.API.Base.SecurityInvocationHandler.invoke(Unknown Source)
    at $Proxy73.ignoreEvent(Unknown Source)
    at com.thortech.xl.schedule.tasks.ActiveDirectoryReconTask.processUserChange(Unknown Source)
    at com.thortech.xl.schedule.tasks.ActiveDirectoryReconTask.processBatch(Unknown Source)
    at com.thortech.xl.integration.ActiveDirectory.tcADUtilLDAPController.searchResultPageEnum(Unknown Source)
    at com.thortech.xl.schedule.tasks.ActiveDirectoryReconTask.performReconciliation(Unknown Source)
    at com.thortech.xl.schedule.tasks.ActiveDirectoryReconTask.execute(Unknown Source)
    at com.thortech.xl.scheduler.tasks.SchedulerBaseTask.run(Unknown Source)
    at com.thortech.xl.scheduler.core.quartz.QuartzWrapper$TaskExecutionAction.run(Unknown Source)
    at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:321)
    at weblogic.security.service.SecurityManager.runAs(SecurityManager.java:121)
    at weblogic.security.Security.runAs(Security.java:41)
    at Thor.API.Security.LoginHandler.weblogicLoginSession.runAs(Unknown Source)
    at com.thortech.xl.scheduler.core.quartz.QuartzWrapper.execute(Unknown Source)
    at org.quartz.core.JobRunShell.run(JobRunShell.java:178)
    at org.quartz.simpl.SimpleThreadPool$WorkerThread.run(SimpleThreadPool.java:477)
    ERROR,15 Apr 2011 11:22:53,689,[OIMCP.ADCS],================= End Stack Trace =======================
    INFO,15 Apr 2011 11:22:53,781,[OIMCP.ADCS],com.thortech.xl.schedule.tasks.ActiveDirectoryReconTask : execute : End of Active Directory Reconciliation....
    Thanks,
    Ariel

    "Thor.API.Exceptions.IllegalInputException" , this exception tells me that the data which you are reconciling has unsupported characters.
    Validate the data ..
    Thanks
    Suren

  • How to control user updates during trusted/target reconciliation

    Hi All,
    I am new bie to OIM.
    Currently working on OIM 11g R2.
    1. I have user type called 'blind' which is updated by OIM admin.
    2. when I do a trusted/taget recon, I should not update user whose oim user type is 'blind'.
    Note: User type 'blind' is updated by OIM admin. There is no user type called 'blind' in target system while doing trusted system all users will be in status 'alive' or 'dead'.
    Kindly suggest how we can add OIM filter to prevent 'blind' user accounts from being overwritten by trusted reconciliation.
    Appreciate your response

    Hi GP,
    Thank you for the response. Please excuse me for using the terms Live,Dead,Blind.
    But we are not receiving the user Type "blind" from the reconciliation data. We receive only the two states either "live" (active) or dead (disable). Blind is the User status which we set as OIM user type manually and we do not want this blind type user get updated by the reconciliation engine. More over this reconciliation is a GTC reconciliation from CSV feed.
    Please correct me if the recon is of type target reconciliation can I write a Pre-Process Event Handler which will
    a) Get the list of users in OIM whose type if blind
    b) compare the data with the recon data available through event handler, then skip the change.
    Is this possible.
    Regards
    Srinivas

  • Target reconciliation Process Form

    Hi,
    I had done target reconciliation for lotus notes and the users got linked with OIM. I did some changes in the process form (I added CompanyName field) now when i am going target reconciliation again it is not get the companyname field in the process forms for the users. I checked the database table it contains the values for companyname. So it is not showing me the new updated process form for the users.
    Thanks & regards,

    Hi,
    I gonna tell you my trade secret.Let me understand your problem first.
    1.You created the process form and did the reconciliation and user got linked.
    2.You updated the process form and did the reconciliation again ,event got linked but process form did not get updated.
    Problem:
    See this is very old scenario that we face,atleast in my 3 years of OIM career I did faced this issue.With every provisioned resource OIM keep the information of process form in respective UD_Process form Name .Along with that it also contain the process form version so when ever you create a new version of process form it works fine for new provisioned object but OIM does not update the process form version in UD_ table for old entries. Thats why when you view the process form it will not show you the latest modified field.
    Solution:
    Every problem has solution yes I agree so what you can do to resolve the problem.First always design in a such a way that you don't need to modify the form but if you already done this mistake so this is how you can solve the problem.
    1.Take one user and provisioned it to lotus note resource.
    2.Get the usr_key of this user.
    3. select orc_key from orc where usr_key= ?? (Key that you get in step 2.
    4.select * from UD_LOTUSFORM where orc_key=?? Key that you get in step3
    5.Now you will see a field called UD_LOTUSFORM_VERSION ..See what is the value of this version.
    6.Update UD_LOTUSFORM set UD_LOTUSFORM_VERSION=?? ( Value you get in step5) WHERE 1=1 (It will update all existing entry)
    7.Run the reconciliation again.
    You are done buddy.Let me know if you have any questions.
    Regards
    Nitesh

  • OID target reconciliation error

    hi all.
    i am able to provision the USER to OID, even Trusted Reconciliation is working properly.But when i run Target reconciliation i am getting the following error please help me
    DEBUG,13 Apr 2011 13:32:19,062,[XELLERATE.DATABASE],select UD_OID_GR_key from UD_OID_GR where UD_OID_GRP_GROUP_NAME =? and UD_OID_USR_key=2407
    ERROR,13 Apr 2011 13:32:19,066,[XELLERATE.SERVER],Class/Method: tcReconciliationUtil/evaluateEvent encounter some problems: {1}
    com.thortech.xl.orb.dataaccess.tcDataAccessException
    at com.thortech.xl.dataaccess.tcDataAccessExceptionUtil.createException(Unknown Source)
    at com.thortech.xl.dataaccess.tcDataBase.createException(Unknown Source)
    at com.thortech.xl.dataaccess.tcDataBase.readPartialPreparedStatement(Unknown Source)
    at com.thortech.xl.dataaccess.tcDataBase.readPreparedStatement(Unknown Source)
    at com.thortech.xl.dataobj.PreparedStatementUtil.execute(Unknown Source)
    at com.thortech.xl.dataobj.util.tcReconciliationUtil.matchChildTableData(Unknown Source)
    at com.thortech.xl.dataobj.util.tcReconciliationUtil.matchChildTableData(Unknown Source)
    at com.thortech.xl.dataobj.util.tcReconciliationUtil.getProcessMatches(Unknown Source)
    at com.thortech.xl.dataobj.util.tcReconciliationUtil.evaluateEvent(Unknown Source)
    at com.thortech.xl.dataobj.tcRCE.checkDataSorted(Unknown Source)
    at com.thortech.xl.dataobj.tcRCE.eventPostUpdate(Unknown Source)
    at com.thortech.xl.dataobj.tcDataObj.update(Unknown Source)
    at com.thortech.xl.dataobj.tcDataObj.save(Unknown Source)
    at com.thortech.xl.dataobj.tcTableDataObj.save(Unknown Source)
    at com.thortech.xl.dataobj.tcRCE.finishDataReceived(Unknown Source)
    at com.thortech.xl.schedule.jms.reconOffline.ProcessOfflineReconMessages.finishReconciliationEvent(Unknown Source)
    at com.thortech.xl.schedule.jms.reconOffline.ProcessOfflineReconMessages.execute(Unknown Source)
    at com.thortech.xl.schedule.jms.messagehandler.MessageProcessUtil.processMessage(Unknown Source)
    at com.thortech.xl.schedule.jms.messagehandler.ReconMessageHandlerMDB.onMessage(Unknown Source)
    at weblogic.ejb.container.internal.MDListener.execute(MDListener.java:466)
    at weblogic.ejb.container.internal.MDListener.transactionalOnMessage(MDListener.java:371)
    at weblogic.ejb.container.internal.MDListener.onMessage(MDListener.java:327)
    at weblogic.jms.client.JMSSession.onMessage(JMSSession.java:4659)
    at weblogic.jms.client.JMSSession.execute(JMSSession.java:4345)
    at weblogic.jms.client.JMSSession.executeMessage(JMSSession.java:3821)
    at weblogic.jms.client.JMSSession.access$000(JMSSession.java:115)
    at weblogic.jms.client.JMSSession$UseForRunnable.run(JMSSession.java:5170)
    at weblogic.work.SelfTuningWorkManagerImpl$WorkAdapterImpl.run(SelfTuningWorkManagerImpl.java:528)
    at weblogic.work.ExecuteThread.execute(ExecuteThread.java:201)
    at weblogic.work.ExecuteThread.run(ExecuteThread.java:173)
    Caused by [Nested Exception]:
    java.sql.SQLSyntaxErrorException: ORA-00904: "UD_OID_USR_KEY": invalid identifier
    at oracle.jdbc.driver.SQLStateMapping.newSQLException(SQLStateMapping.java:91)
    at oracle.jdbc.driver.DatabaseError.newSQLException(DatabaseError.java:133)
    at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:206)
    at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:455)
    at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:413)
    at oracle.jdbc.driver.T4C8Oall.receive(T4C8Oall.java:1035)
    at oracle.jdbc.driver.T4CPreparedStatement.doOall8(T4CPreparedStatement.java:194)
    at oracle.jdbc.driver.T4CPreparedStatement.executeForDescribe(T4CPreparedStatement.java:791)
    at oracle.jdbc.driver.T4CPreparedStatement.executeMaybeDescribe(T4CPreparedStatement.java:866)
    at oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java:1188)
    at oracle.jdbc.driver.OraclePreparedStatement.executeInternal(OraclePreparedStatement.java:3386)
    at oracle.jdbc.driver.OraclePreparedStatement.executeQuery(OraclePreparedStatement.java:3430)
    at oracle.jdbc.driver.OraclePreparedStatementWrapper.executeQuery(OraclePreparedStatementWrapper.java:1491)
    at weblogic.jdbc.wrapper.PreparedStatement.executeQuery(PreparedStatement.java:135)
    at com.thortech.xl.dataaccess.tcDataBase.readPartialPreparedStatement(Unknown Source)
    at com.thortech.xl.dataaccess.tcDataBase.readPreparedStatement(Unknown Source)
    at com.thortech.xl.dataobj.PreparedStatementUtil.execute(Unknown Source)
    at com.thortech.xl.dataobj.util.tcReconciliationUtil.matchChildTableData(Unknown Source)
    at com.thortech.xl.dataobj.util.tcReconciliationUtil.matchChildTableData(Unknown Source)
    at com.thortech.xl.dataobj.util.tcReconciliationUtil.getProcessMatches(Unknown Source)
    at com.thortech.xl.dataobj.util.tcReconciliationUtil.evaluateEvent(Unknown Source)
    at com.thortech.xl.dataobj.tcRCE.checkDataSorted(Unknown Source)
    at com.thortech.xl.dataobj.tcRCE.eventPostUpdate(Unknown Source)
    at com.thortech.xl.dataobj.tcDataObj.update(Unknown Source)
    at com.thortech.xl.dataobj.tcDataObj.save(Unknown Source)
    at com.thortech.xl.dataobj.tcTableDataObj.save(Unknown Source)
    at com.thortech.xl.dataobj.tcRCE.finishDataReceived(Unknown Source)
    at com.thortech.xl.schedule.jms.reconOffline.ProcessOfflineReconMessages.finishReconciliationEvent(Unknown Source)
    at com.thortech.xl.schedule.jms.reconOffline.ProcessOfflineReconMessages.execute(Unknown Source)
    at com.thortech.xl.schedule.jms.messagehandler.MessageProcessUtil.processMessage(Unknown Source)
    at com.thortech.xl.schedule.jms.messagehandler.ReconMessageHandlerMDB.onMessage(Unknown Source)
    at weblogic.ejb.container.internal.MDListener.execute(MDListener.java:466)
    at weblogic.ejb.container.internal.MDListener.transactionalOnMessage(MDListener.java:371)
    at weblogic.ejb.container.internal.MDListener.onMessage(MDListener.java:327)
    at weblogic.jms.client.JMSSession.onMessage(JMSSession.java:4659)
    at weblogic.jms.client.JMSSession.execute(JMSSession.java:4345)
    at weblogic.jms.client.JMSSession.executeMessage(JMSSession.java:3821)
    at weblogic.jms.client.JMSSession.access$000(JMSSession.java:115)
    at weblogic.jms.client.JMSSession$UseForRunnable.run(JMSSession.java:5170)
    at weblogic.work.SelfTuningWorkManagerImpl$WorkAdapterImpl.run(SelfTuningWorkManagerImpl.java:528)
    at weblogic.work.ExecuteThread.execute(ExecuteThread.java:201)
    at weblogic.work.ExecuteThread.run(ExecuteThread.java:173)
    DEBUG,13 Apr 2011 13:32:19,067,[XELLERATE.SERVER],Class/Method: tcDataBase/getError entered.
    thank you

    Hi,
    Were you able to solve this?

  • OIM 11g - Reconciliation of Target Resource Status

    Hi,
    We're working with OIM 11.1.1.5.2 and connectors DBUM 9.1.0.4 and MSAD 9.1.1.7.
    Provisioning and reconciliation seem to be working correctly, but we found that the status of the resource is not getting reconciled on OIM console.
    For example, if we provision an user with an Oracle Database account, and then lock the account on the database, when we run reconciliation the event is generated and finished with "update succeded", we go to the UD_DB_ORA_U table and find that the field UD_DB_ORA_U_LOCK has a "LOCKED" value, then if we check the logs we can see that the connector is correctly mapping the resource status with the OIM object status:
    prepareTargetUsersRecordInOIMFormat : record value : LOCKED
    prepareTargetUsersRecordInOIMFormat : map : {OPEN=Enabled, 1=Disabled, YES=Disabled, 0=Enabled, EXPIRED & LOCKED=Disabled, NO=Enabled, LOCKED=Disabled}
    prepareTargetUsersRecordInOIMFormat : roValue : TEMPORARY_TABLESPACE_QUOTA
    prepareTargetUsersRecordInOIMFormat : Temp RO value : null
    prepareTargetUsersRecordInOIMFormat : reconData : [{Default Tablespace=27~USERS, Authentication Type=PASSWORD, Password=Dummy, Default Tablespace=27~USERS, Authentication Type=PASSWORD, Password=Dummy, Default Tablespace Quota=, Profile Name=27~USUARIOS, IT Resource=Oracle, User Name=USPRUEBA65, Temporary Tablespace=27~TEMP, Account Status=LOCKED, Status=Disabled, Global DN=, Privilege List=[], Role List=[{Role Admin Option=NO, Role Name=}], Temporary Tablespace Quota=}]
    prepareTargetUsersRecordInOIMFormat:: FINISHED
    But, even though the reconciliation has succeded the administrative console shows the account on "Enabled" status, and when I check the OIU table i can see that the OIM object status is still enabled.
    I found some threads related to this issue, the most similar was this one: Reconciliation for the deleted user accounts on Target Resource but everything there do not seem to be of much help because all tasks described are already done by the connector installation (at least in msad and dbum connectors).
    This problem is happening both for Active Directory and Oracle Database Users, maybe we're missing something but based on the documentation for both connectors we thought it was an OOTB functionality. Is there some system property or connector parameter we need to configure to make this work?
    Thanks.
    Edited by: fmc on Jul 26, 2012 12:53 PM

    Hi Pallavi,
    Well, you were right after all, we were mixing 2 totally different problems here and it got us confused.
    The problem with the DBUM connector was exactly what you said, a bug in the connector, just needed to modify the connector task object to status mapping. We were checking the Reconciliation Update Received task on AD and we thought it would be the same, and it was obviously not. Well, in this case teh recon event was being generated but nothing happened, after we changed the process task it worked like a charm.
    On the other hand, the problem with the AD reconciliation was that our search filter on the recon job was configured to ommit accounts with the disabled status (!(userAccountControl=66050)), it was certainly a silly problem, never thought we had that in the filter (it's a huge filter and we didn't pay attention to that clause the first time around) but everything is working now, thanks!

  • Custom Target Reconciliation with child form entries in OIM 11g

    Hello experts,
    I have developed custom scheduler code to reconcile users from target system to OIM. In this code I am using the API createReconciliationEvent(java.lang.String psObjectName, java.util.Map poData, boolean pbFinishEvent). If the reconciled user does not have any child form entries(like roles and groups) then the user account is linked to OIM user profile but if the user has child form entries then user is not getting reconciled to OIM. In the logs it says...
    oracle.iam.platform.utils.SuperRuntimeException: -104: Error occurred in XL_SP_RECONEVALUATEUSER while processing Event No 849 Error occurred in XL_SP_RECONREQDATACHECK while processing Event 849 'Event Received' is an invalid event status. Valid event states are Data Received,Data Validation Failed,Being Re-evaluated,Being Re-tried
    at oracle.iam.reconciliation.dao.ReconActionDao.executeUserMatch(ReconActionDao.java:393)
    at oracle.iam.reconciliation.impl.UserHandler.process(UserHandler.java:64)
    at oracle.iam.reconciliation.impl.ActionEngine.processEvent(ActionEngine.java:194)
    at oracle.iam.reconciliation.impl.ReconOperationsServiceImpl.processReconciliationEvent(ReconOperationsServiceImpl.java:982)
    at oracle.iam.reconciliation.api.ReconOperationsServiceEJB.processReconciliationEventx(Unknown Source)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
    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 $Proxy334.processReconciliationEventx(Unknown Source)
    at oracle.iam.reconciliation.api.ReconOperationsService_emc07d_ReconOperationsServiceRemoteImpl.__WL_invoke(Unknown Source)
    at weblogic.ejb.container.internal.SessionRemoteMethodInvoker.invoke(SessionRemoteMethodInvoker.java:40)
    Here is my code...
    public void reconCall(String ResourceObject, Hashtable mUserDetail)
    ReconOperationsService tcreconObj =null;
    EventAttributes eventattr= new EventAttributes();
    ArrayList roles=roleOfUser(mUserDetail.get("CommanName").toString(),mUserDetail.get("OrganizationUnit").toString());
    ArrayList groups=groupOfUser(mUserDetail.get("CommanName").toString(),mUserDetail.get("OrganizationUnit").toString());
    if((roles.size()==0)&& (groups.size()==0))
    eventattr.setEventFinished(true);
    else
    eventattr.setEventFinished(false);
    try
    LOGGER.info("In com.gapp.recon.tasks.ReconAllUsers reconCall()");
    LOGGER.info("Creating object of Thor.API.Operations.tcReconciliationOperationsIntf");
    tcreconObj = Platform.getService(oracle.iam.reconciliation.api.ReconOperationsService.class);
    LOGGER.info("Creating reconcilation event");
    long lnreckey = tcreconObj.createReconciliationEvent(ResourceObject, mUserDetail, eventattr);
    if(roles.size()==0)
    LOGGER.info("there are no roles for the user");
    if(roles.size()>0)
    tcreconObj.providingAllMultiAttributeData(lnreckey, "RoleName", true);
    LOGGER.info("Iterating roles");
    LOGGER.info(roles.toString());
    for(int k=0; k <roles.size(); k++)
    LOGGER.info("Iteration "+k);
    HashMap multiroles=new HashMap();
    LOGGER.info("Adding role to hashmap");
    multiroles.put("RoleName", roles.get(k));
    LOGGER.info(multiroles.toString());
    long j= tcreconObj.addMultiAttributeData(lnreckey, "RoleName", multiroles);
    LOGGER.info("addMultiAttributeData key "+j);
    if(groups.size()==0)
    LOGGER.info("There Are No Groups For This User");
    if(groups.size()>0)
    tcreconObj.providingAllMultiAttributeData(lnreckey, "GroupName", true);
    LOGGER.info("Iterating groups");
    LOGGER.info(groups.toString());
    for(int k=0; k <groups.size(); k++)
    LOGGER.info("Iteration "+k);
    HashMap multigroups=new HashMap();
    LOGGER.info("Adding group to hashmap");
    multigroups.put("GroupName", groups.get(k));
    LOGGER.info(multigroups.toString());
    long j= tcreconObj.addMultiAttributeData(lnreckey, "GroupName", multigroups);
    LOGGER.info("addMultiAttributeData key "+j);
    // LOGGER.info("executing processReconciliationEvent");
    tcreconObj.processReconciliationEvent(lnreckey);
    //LOGGER.info("executing finishReconciliationEvent");
    // tcreconObj.finishReconciliationEvent(lnreckey);
    // LOGGER.info("executing updateScheduletaskattribute");
    }Pls Help.
    Thanks

    You gotta specify your child table recon-field in the process definition mappings as a Key Field. Refer OOTB AD connector and check:
    Process Definition -> AD User ->Reconciliation Field Mappings -> memberOf

  • OIM EBS Target Reconciliation

    Hi all
    We have OIM 9101 with EBS UM 9043 connector. When we run the target recon, the target recon query fetches 12K user records but we can see only 2.5K user records in the Reconciliation manager. Ideally, all the users fetched by the connector query should be present in reconciliation manager. Please correct me if I am wrong.
    Does anyone of you have any idea about what's the missing piece here. Any help would be appreciated.
    Thanks

    Hi,
    All the recon event are placed in particualr table in database. As records are in huge it might be possible the table get flooded with so many records.
    Do below things:
    1. As you said there 2.5K records, just check if possible they are in sequence or randaom. If records are in sequence means table is flooded, increase the cache memeory of database and table size and try.
    2. IF records are random then there is some error in information just check that....
    Regards
    Alabhya Goel

  • [OIM] error while target reconciliation

    I want to reconcile the users from the target oid to do account linking. We do not want to reconcile multi valued attributes so i have removed the multi valued group and role entries from object reconciliation profile, process definition and also from the recon lookup. But even after that i am facing the issue as mentiioned below.
    <Exception in OID:tcTskOIDUserReconciliation:reconcileUser() Oim Child Table Name is null based on child mapping UserRole>What could be causing this still ?

    First of all, let's get things working...
    Then we can do R&D on this error
    Let's follow step by step..
    First of all, undo everything and make it OOTB connector... No change from your side...
    Test for one user only..
    It works and child tables in process form are getting populated...
    Good... Then Remove ONLY Child Form mapping in the "Reconciliation Field Mappings"... Do NOT TOUCH ANYTHING ELSE...
    Create Reconciliation Profile (if using OIM 11G)
    Then again, for the same user, make some minor change, say in the first name in the target system, add 1... Just minor change...
    Then again execute recon for this user only... Keep the logs open...
    Ideally, every thing should happen smoothly... Event should be generated and the new first name is populated in the process form... That's it... Nothing should happen to the Child Form... No UserRole related issues should appear...
    If again the same issue appears, then something else in the OOTB connector has been tampered with...
    And if it is OIM 11G, and I have seen many issues regarding Create Reconciliation Profile NOT reflecting the new Reconciliation configuration, that would be entirely another issue..
    My point is:- Simply removing the Child Form mapping in the "Reconciliation Field Mappings" should be sufficient to fulfil your requirement...
    And if any other issue arising from connector tampering or inconsistent behavior of Create Reconciliation Profile appears, that's another point altogether...
    So, please first try what I have suggested...

  • Target reconciliation

    Hi all,
    I am performing Trget reconciliation (OID-OIM) here is the scenario
    1. create User in OID.
    2. Run Traget Reconciliation.
    3. link should be established between xelsysadm and the OID account.
    How to achive this ?
    In the action rule od the OID Resource object i added the action NO MATCH FOUND = ASSIGN TO USER (xelsysadm) .
    But i am not able to see the link. help me
    thank you.

    For your understanding - Typical Scenario of Target Recon
    1) Process Matching
    For this, you need to create mapping between RO attributes and Process Form fields in the Process Definition (Reconciliation Field Mapping) and define the key mappings for matching to take place. You can define multiple keys. This way the process matching takes place with the already provisioned resource or certain actions takes place as you define your object reconciliation rule.
    2) Entity Matching
    For this, you need to create a Reconciliation Rule where you map the RO Attributes with Entity Attributes.
    In your case, you need to follow the Entity Matching scenario

  • Exception while performing Target Reconciliation

    My target is a CSV file which contains fields for empid (mapped as key field),firstname,lastname,emailid and status (mapped to OIM_OBJECT_STATUS)
    I can see the reconciliation data in Reconciliation event window in Design console but I am getting the following exception with Reconciiation Event status set to "Event Received":
    Data AccessException:com.thortech.xl.orb.dataaccess.tcDataAccessException: DB_READ_FAILEDDetail: SQL: select rpc.rpc_key, rpc.rcm_key, rcm.rcm_delete  from rcm rcm, rpc rpc where rpc.rcm_key=rcm.rcm_key and rcm.rcm_delete='1'  and rpc.rpc_parent_rpc_key is null and rcm.RCM_PARENT_RCM_KEY is null and rpc.rce_key= 166 and rpc.orc_key=710Description: O
    RA-00904: "RCM"."RCM_DELETE": invalid identifier
    SQL State: 42000Vendor Code: 904Additional Debug Info:com.thortech.xl.orb.dataaccess.tcDataAccessException
    at com.thortech.xl.dataaccess.tcDataAccessExceptionUtil.createException(Unknown Source)
    at com.thortech.xl.dataaccess.tcDataBase.createException(Unknown Source)
    at com.thortech.xl.dataaccess.tcDataBase.readPartialStatement(Unknown Source)
    at com.thortech.xl.dataobj.tcDataBase.readPartialStatement(Unknown Source)
    at com.thortech.xl.dataaccess.tcDataSet.executeQuery(Unknown Source)
    at com.thortech.xl.dataaccess.tcDataSet.executeQuery(Unknown Source)
    at com.thortech.xl.dataobj.tcRCE.updateProcessData(Unknown Source)
    at com.thortech.xl.dataobj.tcRCE.linkToProcess(Unknown Source)
    at com.thortech.xl.dataobj.tcRCE.applyActionRules(Unknown Source)
    at com.thortech.xl.dataobj.tcRCE.checkDataSorted(Unknown Source)
    at com.thortech.xl.dataobj.tcRCE.eventPostUpdate(Unknown Source)
    at com.thortech.xl.dataobj.tcDataObj.update(Unknown Source)
    at com.thortech.xl.dataobj.tcDataObj.save(Unknown Source)
    at com.thortech.xl.dataobj.tcTableDataObj.save(Unknown Source)
    at com.thortech.xl.dataobj.tcRCE.reapplyRules(Unknown Source)
    at com.thortech.xl.ejb.databeansimpl.tcRCEBean.reapplyRules(Unknown Source)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:597)
    at org.jboss.invocation.Invocation.performCall(Invocation.java:359)
    Please help me resolve this issue.

    Click on Reapply matching rules , what is the error it throws when you click on re apply matching rules in Recon Manager
    Thanks
    Suren

  • OIM Trusted Reconciliation with OID

    Hi all,
    1. i am facing the problem with trusted reconciliation , i mapped AttrName.Recon.OID.Map with OOTB values , and in Reconciliation manager the Event is created with No Match Found,
    2. In provisioning i am using the Entity Adapter to generate the User ID is this causing the error ?.
    3. when i run Trusted Recon ii am getting the following error
    DEBUG,06 Apr 2011 16:49:48,655,[XELLERATE.SERVER],Class/Method: tcDataObj:handleErr - Data: poError.isDescription - Value: Cannot save: Bad SQL operation FATAL REJECT, raw value 2.
    DEBUG,06 Apr 2011 16:49:48,656,[XELLERATE.SERVER],Class/Method: tcDataObj:handleErr - Data: poError.isRemedy - Value:
    DEBUG,06 Apr 2011 16:49:48,656,[XELLERATE.SERVER],Class/Method: tcDataObj:handleErr - Data: poError.isDetail - Value:
    DEBUG,06 Apr 2011 16:49:48,656,[XELLERATE.SERVER],Class/Method: tcErrorList/addError entered.
    DEBUG,06 Apr 2011 16:49:48,656,[XELLERATE.SERVER],Class/Method: tcDataObj/doRollback entered.
    ERROR,06 Apr 2011 16:49:48,656,[XELLERATE.DATABASE],Class/Method: tcDataBase/rollbackTransaction encounter some problems: Rollback Executed From
    java.lang.Exception: Rollback Executed From
    at com.thortech.xl.dataaccess.tcDataBase.rollbackTransaction(Unknown Source)
    at com.thortech.xl.dataobj.tcDataObj.rollback(Unknown Source)
    at com.thortech.xl.dataobj.tcDataObj.doRollback(Unknown Source)
    at com.thortech.xl.dataobj.tcDataObj.save(Unknown Source)
    at com.thortech.xl.dataobj.tcTableDataObj.save(Unknown Source)
    at com.thortech.xl.dataobj.tcRCE.createUserRecord(Unknown Source)
    at com.thortech.xl.ejb.databeansimpl.tcRCEBean.createUserRecord(Unknown Source)
    at com.thortech.xl.ejb.beans.tcRCE_4tknfu_EOImpl.createUserRecord(tcRCE_4tknfu_EOImpl.java:615)
    at com.thortech.xl.ejb.beans.tcRCE_4tknfu_EOImpl_WLSkel.invoke(Unknown Source)
    at weblogic.rmi.internal.activation.ActivatableServerRef.invoke(ActivatableServerRef.java:85)
    at weblogic.rmi.internal.BasicServerRef$1.run(BasicServerRef.java:477)
    at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:363)
    at weblogic.security.service.SecurityManager.runAs(SecurityManager.java:147)
    at weblogic.rmi.internal.BasicServerRef.handleRequest(BasicServerRef.java:473)
    at weblogic.rmi.internal.wls.WLSExecuteRequest.run(WLSExecuteRequest.java:118)
    at weblogic.work.ExecuteThread.execute(ExecuteThread.java:201)
    at weblogic.work.ExecuteThread.run(ExecuteThread.java:173)
    INFO,06 Apr 2011 16:49:48,656,[XELLERATE.DATABASE],Class/Method: tcDataBase/setTransaction: ##########setTransaction getting called from: #######
    DEBUG,06 Apr 2011 16:49:48,656,[XELLERATE.SERVER],Class/Method: tcDataObj/doRollback left.
    DEBUG,06 Apr 2011 16:49:48,656,[XELLERATE.SERVER],Class/Method: tcDataObj/save left.
    DEBUG,06 Apr 2011 16:49:48,657,[XELLERATE.SERVER],Class/Method: tcRCE/createUserRecord left.
    DEBUG,06 Apr 2011 16:49:48,825,[XELLERATE.SERVER],Class/Method: tcErrorList/getErrors entered.
    DEBUG,06 Apr 2011 16:49:48,825,[XELLERATE.SERVER],Class/Method: tcErrorList/getErrors left.
    DEBUG,06 Apr 2011 16:49:48,887,[XELLERATE.SERVER],Class/Method: tcErrorList/ getRejections entered.
    DEBUG,06 Apr 2011 16:49:48,887,[XELLERATE.SERVER],Class/Method: tcErrorList/ getRejections left.
    DEBUG,06 Apr 2011 16:49:48,997,[XELLERATE.SERVER],Class/Method: tcDataBase/readEncryptedStatement entered.
    DEBUG,06 Apr 2011 16:49:48,998,[XELLERATE.SERVER],Class/Method: tcDataBase/readPartialStatement entered.
    Thank you.

    Hi Khanh,
    [This is not good for my use case.  I don't want the users from OID to be created in OIM]
    Remember this Ldap Sync we use when we want all users in OID -OIM to be in Synch. Otherwise you should have disabled Ldap Sync and used OID 11g Connector.
    So if you want to link users in OIM using OID process form/resouce, then its must to use OID 11g Connector.
    ~J

  • OIM-OID reconciliation

    Hi,
    i am able to provision the user to OID from OIM..
    but OID OIM Reconciliation is not working...
    some one please provide me the steps to configure or provide the document for the reconciliation configuration steps.
    thank you
    Edited by: user13513300 on Feb 28, 2011 11:09 PM

    See the connector guide

Maybe you are looking for