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

Similar Messages

  • Exception while reconciliation with child table attributes

    I developed scheduler task that take information about users and create reconciliation event with multi valued field "Roles" that consist of "Role" field and "App" fields. Primary reconciliation work fine and resource added to user, but when i update user in target system and run my scheduler task - exception occured:
    oracle.iam.reconciliation.exception.ModifyAccountException: java.lang.Exception: Error occurred in XL_SP_RECONCHILDMATCH While processing Event No 3523 One or more input parameter passed as null at oracle.iam.reconciliation.impl.AccountHandler.modify(AccountHandler.java:361) at oracle.iam.reconciliation.impl.AccountHandler.applyRule(AccountHandler.java:243) at oracle.iam.reconciliation.impl.AccountHandler.process(AccountHandler.java:205) at oracle.iam.reconciliation.impl.ActionEngine.processEvent(ActionEngine.java:197) at oracle.iam.reconciliation.impl.ReconOperationsServiceImpl.processReconciliationEvent(ReconOperationsServiceImpl.java:982) at oracle.iam.reconciliation.api.ReconOperationsServiceEJB.processReconciliationEventx(Unknown Source) at sun.reflect.GeneratedMethodAccessor707.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
    Here is code from scheduler task:
    try{ if(!reconOperations.ignoreEvent(objectName, attrs))
    long eventId = reconOperations.createReconciliationEvent(objectName, attrs, eventAttributes);
    List<HashMapWrapper> childList = port.getRolesForUser((String)attrs.get("Identity"),resourceProperties.get(LOGIN_RESOURCE_PROPERTY),
    resourceProperties.get(PASSWORD_RESOURCE_PROPERTY));
    if(childList!=null && !childList.isEmpty())
    for(int k=0;k<childList.size();k++)
    HashMap<String,String> child = new HashMap<String, String>();
    HashMapWrapper childWrapper = childList.get(k);
    HashMapWrapper.Map childMap = childWrapper.getMap();
    List<HashMapWrapper.Map.Entry> childEntry = childMap.getEntry();
    for(int f=0;f<childEntry.size();f++)
    HashMapWrapper.Map.Entry childParam = childEntry.get(f);
    child.put(childParam.getKey(),childParam.getValue());
    reconOperations.addMultiAttributeData(eventId,"Roles",child);
    reconOperations.providingAllMultiAttributeData(eventId,"Roles",true);
    reconOperations.finishReconciliationEvent(eventId);
    reconOperations.processReconciliationEvent(eventId);
    LOG.fine("created : " + eventId);
    Help to solve this issue!

    First make one of the child form fields as Key Field!!!
    List<HashMapWrapper> childList = port.getRolesForUser((String) attrs.get("Identity"), resourceProperties.get(LOGIN_RESOURCE_PROPERTY),
    resourceProperties.get(PASSWORD_RESOURCE_PROPERTY));
    HashMap[] childs = null;
    if (childList != null && !childList.isEmpty()) {
    childs = new HashMap[childList.size()];
    for (int k = 0; k < childList.size(); k++) {
    HashMap<String, String> child = new HashMap<String, String>();
    HashMapWrapper childWrapper = childList.get(k);
    HashMapWrapper.Map childMap = childWrapper.getMap();
    List<HashMapWrapper.Map.Entry> childEntry = childMap.getEntry();
    for (int f = 0; f < childEntry.size(); f++) {
    HashMapWrapper.Map.Entry childParam = childEntry.get(f);
    child.put(childParam.getKey(), childParam.getValue());
    childs[k] = child;
    if (!reconOperations.ignoreEventAttributeData(objectName, attrs, "Roles", childs)) {
    long eventId = reconOperations.createReconciliationEvent(objectName, attrs, eventAttributes);
    if (childs != null && childs.length != 0) {
    for (int f = 0; f < childs.length; f++) {
    reconOperations.providingAllMultiAttributeData(eventId, "Roles", true);
    reconOperations.addDirectMultiAttributeData(eventId, "Roles", childs[f]);
    reconOperations.finishReconciliationEvent(eventId);
    LOG.debug("created: " + eventId);
    } else {
    LOG.debug("ignored: " + attrs.get("LoginName"));
    }

  • Help with child forms

    Hi,
    I am trying something very simple to learn how child forms work but was not very successful so far. I am hoping one of the experts on this forum can shed some light on what I am doing wrong.
    I did the following:
    1) Created a simple Resource Object.
    2) Created 2 process forms with one of them designated as a child to the other one.
    3) Created a simple Process Task Adapter which simply prints the assigned variables data out to STDOUT
    4) Created a Process Definition and added a task called Create User and used the adapter created in previous step.
    5) In the integration tab, I did the mapping of both the parent and child form data to the adapter variables.
    Whenever I assign the RO to an user, I keep getting the following error.
    When ever I go and assign the RO to the user
    19:05:17,014 ERROR [DATABASE] select UD_RO3_CF_ATTR1 from UD_RO3_CF where UD_RO3_CF_KEY =
    java.sql.SQLException: ORA-00936: missing expression
    I also tried the following. In the general tab, from the child table drop down, I selected the child form name and for trigger type, selected insert. When I do that, I get the following error..
    In browser, I get
    DOBJ.GEN_ERROR
    Cannot schedule a task for child table change, schedule item save failed
    In the logs, I see the following exception..
    12:35:57,718 INFO [DATABASE] Class/Method: tcDataBase/setTransaction: ##########setTransaction getting called from: #######
    12:35:57,733 ERROR [APIS] Class/Method: tcFormInstanceOperationsBean/addProcessFormChildData encounter some problems: maoErrors:Cannot schedule a task for child table change, schedule item save failed
    12:35:57,749 ERROR [APIS] Class/Method: tcFormInstanceOperationsBean/addProcessFormChildData encounter some problems: Error occurred while validating password policy '
    12:35:57,749 ERROR [APIS] Class/Method: tcFormInstanceOperationsBean/addProcessFormChildData encounter some problems: Cannot schedule a task for child table change, schedule item save failed
    Thor.API.Exceptions.tcAPIException: Cannot schedule a task for child table change, schedule item save failed
    at com.thortech.xl.ejb.beansimpl.tcFormInstanceOperationsBean.addProcessFormChildData(Unknown Source)
    at com.thortech.xl.ejb.beansimpl.tcFormInstanceOperationsBean.addProcessFormChildData(Unknown Source)
    at com.thortech.xl.ejb.beans.tcFormInstanceOperationsSession.addProcessFormChildData(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)
    Thank you very much

    The details of a child table entry are available only when you define the process task as a child task trigger. You can define the task to trigger based on insert, update, or delete from child table. There is a drop down on the process task configuration screen. When the trigger happens on the child table entry, this is where you can map the value of the child table entry.
    You would want to configure your provisioning process definition to have 1 task for create user, and another task for adding an entry to the child table, and another entry for deleting an entry from the child table. On the delete, you'll want to check the "Old Value" checkbox for the child table mapping.
    -Kevin

  • Iplanet process form issue in OIM 11g

    Hi,
    When I try to provision a user to iPlanet. It throws below error in OIM Admin console itself in OIM 11g
    This resource is not configured correctly. Contact your System Administrator.
    Form does not have any fields defined.
    I'm not able to see my process form when I try to provision, eventhough I have fields over there. I'm assumption is there is some problem with Process Definition and Process form linkage for iPlanet resource. I don't think OIM will allow to attach new process form in current process defiintion. Correct me If I'm worng.
    Is there any way to check this linkage from backend. any queries available to check from OIM DB?
    Pls help me to fix this?

    Hi,
    When I try to provision a user to iPlanet. It throws below error in OIM Admin console itself in OIM 11g
    This resource is not configured correctly. Contact your System Administrator.
    Form does not have any fields defined.
    I'm not able to see my process form when I try to provision, eventhough I have fields over there. I'm assumption is there is some problem with Process Definition and Process form linkage for iPlanet resource. I don't think OIM will allow to attach new process form in current process defiintion. Correct me If I'm worng.
    Is there any way to check this linkage from backend. any queries available to check from OIM DB?
    Pls help me to fix this?

  • SAP Employee Reconciliation ConnectorRelease 9.1.2.2 --OIM 11g R2 support

    Hi All
    We want to reconcile SAP HRMS users to OIM 11g R2 . Does SAP Employee Reconciliation ConnectorRelease 9.1.2.2 support for OIM 11g R2.
    In Connector Documentation ---Certified Components it shows support for
    Oracle Identity Manager 11g release 1 (11.1.1)
    Thanks
    Darshan

    I have some problem 9.1.2.2 which is bug actually. It is batter if you use OIM SAP Employee Reconciliation Connector Version 9.1.2.5 Patch 12710600. which is the last patch of SAP Employee Reconciliation Connector.
    Thanks
    Tamim Khan

  • Error: custom reconciliation (with child data)

    I have "HR System" Resource Object (Allow Multiple, Allow All).
    Reconciliation Fields:
    -HR Tab No [String]
    -HR FirstName [String]
    -HR LastName [String]
    -HR Department [String]
    -HR Position [String]
    -HR Location [String]
    -HR Manager [String]
    -Role [Multi-Valued]
    ---Role [String]
    Code:
    Hashtable ht = new Hashtable();
    Hashtable htc = new Hashtable();
    ht.put("HR Tab No" , "1368");
    ht.put("HR FirstName" , "ReconUser2");
    ht.put("HR LastName" , "ReconUser2");
    ht.put("HR Department" , "test");
    ht.put("HR Position" , "test");
    ht.put("HR Location" , "test");
    ht.put("HR Manager" , "test");
    long result = l_tcRecon.createReconciliationEvent("HR System", ht, false);
    System.out.println("recon key: " + result);
    htc.put("Role" , "Role1");
    htc.put("Role" , "Role2");
    long resultc = l_tcRecon.addMultiAttributeData(result, "Role", htc);
    System.out.println("child recon key: " + resultc);
    l_tcRecon.providingAllMultiAttributeData(result, "Role", true);
    l_tcRecon.finishReconciliationEvent(result);
    ReconOperationsService l_objReconService = oimClient.getService(ReconOperationsService.class);
    l_objReconService.processReconciliationEvent(result);
    Error:
    +<Sep 3, 2012 6:39:21 PM GMT+04:00> <Warning> <JNDI> <BEA-050006> <An attempt was made to look up versioned object "ejb.stateless.ClientLoginSessionService#oracle.iam.platformservice.api.ClientLoginSessionServiceRemote" from an external client or another application. This can potentially cause in-flight work of the application version not being tracked properly and thus being retired prematurely.>+
    +<Sep 3, 2012 6:39:23 PM GMT+04:00> <Error> <oracle.iam.reconciliation.dao> <IAM-5010001> <Calling stored procedure - XL_SP_RECONEVALUATEACCOUNT+
    intUserKey_in = 1
    intEventKey_in = 720563
    strRequiredAttributesList_in =
    strMappedTableName_in = UD_HRSYS
    strTargetTableName_in = RA_HRSYSTEM220
    strEntityTableName_in = USR
    strAccountMatchingRule_in = ((UD_HRSYS.UD_HRSYS_PERSONID=RA_HRSYSTEM220.RECON_HRTABNO2B020A42))
    strEntityMatchingRule_in =
    strChildTargetTableName_in =
    strChildReqAttributesList_in = >
    +<Sep 3, 2012 6:39:23 PM GMT+04:00> <Error> <oracle.iam.reconciliation.impl> <IAM-5010000> <Generic Information: {0}+
    oracle.iam.platform.utils.SuperRuntimeException: oracle.iam.platform.utils.SuperRuntimeException: Error occured in XL_SP_RECONEVALUATEACCOUNT while processing Event  No 720563  Error occurred in XL_SP_RECONUSERMATCH while processing Event No 720563    One or more input parameter passed as null
    at oracle.iam.reconciliation.impl.ActionEngine.processEvent(ActionEngine.java:239)
    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 $Proxy350.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)
    at oracle.iam.reconciliation.api.ReconOperationsService_emc07d_ReconOperationsServiceRemoteImpl.processReconciliationEventx(Unknown Source)
    at oracle.iam.reconciliation.api.ReconOperationsService_emc07d_ReconOperationsServiceRemoteImpl_WLSkel.invoke(Unknown Source)
    at weblogic.rmi.internal.BasicServerRef.invoke(BasicServerRef.java:667)
    at weblogic.rmi.cluster.ClusterableServerRef.invoke(ClusterableServerRef.java:230)
    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)
    Caused By: oracle.iam.platform.utils.SuperRuntimeException: Error occured in XL_SP_RECONEVALUATEACCOUNT while processing Event  No 720563  Error occurred in XL_SP_RECONUSERMATCH while processing Event No 720563    One or more input parameter passed as null
    at oracle.iam.reconciliation.dao.ReconActionDao.executeAccountMatch(ReconActionDao.java:482)
    at oracle.iam.reconciliation.dao.ReconActionDao.executeAccountMatch(ReconActionDao.java:404)
    at oracle.iam.reconciliation.impl.AccountHandler.process(AccountHandler.java:203)
    at oracle.iam.reconciliation.impl.ActionEngine.processEvent(ActionEngine.java:197)
    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 $Proxy350.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)
    at oracle.iam.reconciliation.api.ReconOperationsService_emc07d_ReconOperationsServiceRemoteImpl.processReconciliationEventx(Unknown Source)
    at oracle.iam.reconciliation.api.ReconOperationsService_emc07d_ReconOperationsServiceRemoteImpl_WLSkel.invoke(Unknown Source)
    at weblogic.rmi.internal.BasicServerRef.invoke(BasicServerRef.java:667)
    at weblogic.rmi.cluster.ClusterableServerRef.invoke(ClusterableServerRef.java:230)
    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)
    Please, help!

    A_Sergey wrote:
    Thanks, but how can I set this parameter?Really do not know. I've just traced your problem down to the PL/SQL procedure, that generates the error message.
    I suppose you have no means to set the name explicitly. Rather something is wrong with your configuration.
    Regards,
    Vladimir

  • APP - Custom program created with smart forms

    Hi Experts,
    In the automatic payment program, the ABAPer has created a custom program for payment methods for check. The program is assigned in the payment method for country in the payment program. However went the APP is run we are unable to generate a printout for the check payment. Also when the program is run in SE38 we are able to generate the output. The forms have not been assigned in the payment method country as he is not using SAP script and is using a samrt forms. Any pointers as to where we have missed out would be really useful.
    Thanks,
    Sai

    HI,
    Goto table likp and pass the delivery note to LIFEX field and get the delivery number if the output type is abc then print this delivery number.
    else
      with above logic u have delivery number go to VBFA table pass the delivery number as Subsequent sales and distribution document and  Document category of preceding SD document as O (Order ) then you will get the sales order.. then goto VBSS table and pass the sales order number that you just got and get required field from VBSS.
    Thanks
    Mahesh

  • How to retrieve Request Form Data in OIM 11g for SOA workflows

    Hi,
    I have a business requirement wherein, I need to retrieve a field's value inside my SOA composite for further processing and decide on the Approver of the Request. Say for e.g. I'm having a field *"Country"* inside my Request Form, and what i need to do is, as soon as the request form is submitted, I need to retrieve the value for *"Country"* attribute inside my SOA Composite using Payload, and further process it. This scenerio is with respect to provision an application instance to a user.
    Now, in a similar scenario, where I was trying to create a user of type *"Contractor"*, I had used Request Service Api to retrieve the Basic information of the userform submitted, and decide on approval. Fortunately, the basic data like, First Name, Last Name, Login etc was successfully being fetched from the Request and I was able to perform further operations.
    Unfortunately, the same code which was working for Creation of a User, is not working when I'm trying to provision an application instance to the user.
    Below is the code which worked fine for me to retrieve basic request data for user creation, and isn't working for provisioning application instance:
    RequestService reqSvc = (RequestService)oimClient.getService(RequestService.class);
    String reqId = ((oracle.xml.parser.v2.XMLElement)getVariableData("inputVariable", "payload", "/ns3:process/ns4:RequestID")).getText();
    System.out.println("request ID: " reqId);+
    Request req = reqSvc.getBasicRequestData(reqId);
    List <RequestEntity> targetEntities = req.getTargetEntities();
    System.out.println("targetEntities : " targetEntities);+
    System.out.println("------------");
    for (RequestEntity rea : targetEntities)
    +{+
    List <RequestEntityAttribute> attributes = rea.getEntityData();
    for( oracle.iam.request.vo.RequestEntityAttribute attribute : attributes)
    +{+  
    System.out.println("Attribute.getName() : " attribute.getName().toString());+
         if(attribute.getName().equals("User Manager"))
         +{+
    beneficiaryManagerKey = attribute.getValue().toString();
         System.out.println("User Manager : " beneficiaryManagerKey);+
    +}+
         e+lse if(attribute.getName().equals("User Login"))+
         +{+
    userid = attribute.getValue().toString();
         System.out.println("User Login  : " userid);+
    +}+
    +}+
    +}+
    Any pointers to this would be of a great help.
    Regards

    List <RequestEntity> targetEntities = req.getTargetEntities();
    System.out.println("targetEntities : " + targetEntities);
    System.out.println("------------");
    The above piece of code retrieves the attributes and their values from the request form while creating a user, but not from the request form, which provisioning a resource to a user.
    Regards,

  • Custom Event Notification (email) for Approval Tasks in OIM 11g

    Hi,
    how to create event notification for approval tasks in OIM 11g. I mean how to send email notification to user who sholuld accept or reject approval task?
    best
    mp
    Edited by: J23 on 2011-05-30 04:08

    Here is the documentation http://download.oracle.com/docs/cd/E21764_01/integration.1111/e10224/bp_notif.htm#SOASE548
    Search for SOA BPEL Email Notifications for more information:
    http://soa-bpel-esb.blogspot.com/2010/01/email-notification-in-bpel.html
    http://download.oracle.com/docs/cd/B31017_01/core.1013/b28764/bpel013.htm
    There are many more search links that can help you out.
    -Kevin

  • How can I create a custom button for opening a form?

    I have a parent form having child forms. In my main form I want to create custom buttons for opening child forms. I want to use master-detail form but there are more than one child forms, and in master-detail form I can only create one detail form. So I will create a form based on a table and in that form I will call the child forms by custom buttons. Can I do that?
    Thanx,
    Gulsah.

    This can be easily done. First open up two instances of your Portal. In one window, you will need to go into your component you wish to link FROM. In the other window you will need to go into your component you wish to link TO. In the component you wish to link TO there will be a moduleid. Note this somewhere. Then, you will see an area that says: "Call Interface: Show". Click on this. (In the window you are linking to.). In this window, you will see a bunch of stuff. At the bottom you will see a URL call. This is the call you need to use. At the top, it explains each piece of the URL call. Just subsitute YOUR appropriate information into the URL call. In the form you wish to link FROM, create a button. Once you create this button, it will appear at the bottom, click on it and you will see an area to insert a Javascript. Click the onClick and insert:
    //this is the variable you want to pass from one form to the other
    get_field_name = getField(this.form,'COLUMN_NAME_IN_DATABASE');
    //this is so you can open the "child" form
    window.open('/pls/cc_prod/DAD_NAME.wwa_app_module.link?p_arg_names=_moduleid&p_arg_values=MOD_ID_HERE&p_arg_names=_sessionid&p_arg_values=&p_arg_names=COLUMN_NAME_IN_DATABASE&p_arg values='+GETFIELD_NAME+'&p_arg_names=_COLUMN_NAME_IN_DATABASE_cond&p_arg_values=%3D');
    In the fourth tab, where it says, "....before displaying form" insert the following: (This will tell the form how to handle the getField function.)
    htp.p('<script language="JavaScript1.3">
    < !--
    function getField(form,fieldName)
    var objName = "";
    var tmp = "";
    var dAction = "";
    var sel_idx = 0;
    var cnt = 0;
    var instance = 0;
    var slicedName;
    var fillData = new Array();
    for (var i = 0; i < form.length; i++)
    slicedName = form.elements.name.split(".");
    tmp = slicedName[2];
    instance = parseInt(slicedName[3],10);
    if (!tmp)
    continue;
    objName = tmp;
    if (objName == fieldName)
    return form.elements[i].value;
    //-->
    </script>');
    I hope this helps.
    null

  • Issue with deleting a group using Request APIs in OIM 11g R1

    Hi,
    I am facing an issue with Request Based provisioning in OIM 11g R1.
    I am currently testing a scenario where i have imported a data set for 'Modify Provisioned Resource' and am able to add a group/entitlement to an already provisioned resource by using the following code :
            RequestBeneficiaryEntityAttribute childEntityAttribute= new RequestBeneficiaryEntityAttribute();
            childEntityAttribute.setName("AD User Group Details");
            childEntityAttribute.setType(TYPE.String);
            List<RequestBeneficiaryEntityAttribute> childEntityAttributeList=new ArrayList<RequestBeneficiaryEntityAttribute>();
            RequestBeneficiaryEntityAttribute attr = new RequestBeneficiaryEntityAttribute("Group Name", <group>,                                                                       RequestBeneficiaryEntityAttribute.TYPE.String);
            childEntityAttributeList.add(attr);
            childEntityAttribute.setChildAttributes(childEntityAttributeList);
            childEntityAttribute.setAction(RequestBeneficiaryEntityAttribute.ACTION.Add);
            beneficiaryEntityAttributeList = new ArrayList<RequestBeneficiaryEntityAttribute>();   
            beneficiaryEntityAttributeList.add(childEntityAttribute);
            beneficiarytEntity.setEntityData(beneficiaryEntityAttributeList);
    This works fine for adding a group but if i try to remove a group by changing the action to Delete in the same code, the request fails. The only change made is in the following line:
    childEntityAttribute.setAction(RequestBeneficiaryEntityAttribute.ACTION.Delete);
    Could you please suggest where can this possibly be wrong.
    Thanks for your time and help

    Hi BB,
    I am trying to follow up your response.
    You are suggestng to use prepopulate adapter for to populate respource object name, that means We have to just use an sql query from obj tabke to get the resource object name. right ?? it could be like below, what should I have entity-type value here ??
    <AttributeReference name="Field1" attr-ref="act_key"
    available-in-bulk="false" type="Long" length="20" widget="ENTITY" required="true"
    entity-type="????"/>
    <PrePopulationAdapter name="prepopulateResurceObject"
    classname="my.sample.package.prepopulateResurceObject" />
    </AttributeReference>
    <AttributeReference name="Field2" attr-ref="Field2" type="String" length="256" widget="lookup-query"
    available-in-bulk="true" required="true">
    <lookupQuery lookup-query="select lkv_encoded as Value,lkv_decoded as Description from lkv lkv,lku lku
    where lkv.lku_key=lku.lku_key and lku_type_string_key='Lookup.xxx.BO.Field2'
    and instr(lkv_encoded,concat('$Form data.Field1', '~'))>0" display-field="Description" save-field="Value" />
    </AttributeReference>
    Then I need think about the 'Lookup.xxx.BO.Field2' format.
    Could you please let me know if my understanding is correct?? What is the entity-type value of the first attribute reference value?
    Thanks for your all help.

  • Reconciliation - Recon even results not reflected in child forms

    Hi All,
    I am new to OIM and prior to this i have worked Sun Identity Manager.
    My problem is:
    User(USER1) has two roles in SAP system. I have checked users resource profile (child form), it shows two records.
    Recon First Cycle: I have deleted one role in target system and ran the reconciliation for USER1. A recon event is created and recon manager shows that user has one role and status is "Event Linked". I have checked the users resource profile (child form), it shows only one record.
    Recon Second Cycle: Again i have deleted one more role in target system (SAP) and ran reconciliation. Now the reconciliation event is created and recon manager shows user has no role and status is "Event Linked". When i checking in users resource profile (child form), it still showing the last record.
    Even though the user doesn't have any role in target system and reconciliation manager, I don't know why it showing last records in users resource profile (child form).
    My system configuration:
    OIM version : OIM 9.1.0.2
    Oracle Database : 10g
    Application Server : JBOSS 4.2.3
    Web browser : Internet explorer 6.0
    Operating System : Windows server 2003
    -- Chellappan
    Edited by: user9164768 on May 12, 2010 12:30 PM

    Very strange result.
    Seems like a bug in the connector. Have you tried opening an SR with Oracle?
    Best regards
    /Martin

  • 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

  • Create Access Policy with OIM API: can't fill child form

    Hi!
    I'm having a problem with creating OIM Access Policy with API. I'm doing the following:
    1. Create a new access policy via AccessPolicyIntf
    2. Add a resource object which will be provisioned to all users who are within policy scope
    3. Get Resource Object (Parent) Form Definition via FormDefinitionIntf
    4. Add data to parent form (AccessPolicyIntf setFormData(FormDefinitionKey))
    5. Now I want to add data to the child form, for that purpose I need to know child form definition key, but I can' get one, because there's no method like 'getChildFormDefinitionKey' in FormDefinitionIntf interface.
    Please, help me to get child form definition key, knowing parent form definition key and version

    See if this code helps:
    public String addChildTableValue(long userKey, String group, String objectName, String fieldName tcDataProvider ioDatabase) {
    log.debug("addChildTableValue() Parameter Variables passed are:" +
    "userKey=[" + userKey + "]" +
    "group=[" + group + "]" +
    "fieldName=[" + fieldName + "]" +
    "objectName=[" + objectName + "]");
    try{
    tcUserOperationsIntf userIntf = (tcUserOperationsIntf)tcUtilityFactory.getUtility(ioDatabase, "Thor.API.Operations.tcUserOperationsIntf");
    tcFormInstanceOperationsIntf formIntf = (tcFormInstanceOperationsIntf)tcUtilityFactory.getUtility(ioDatabase, "Thor.API.Operations.tcFormInstanceOperationsIntf");
    boolean roleExists = false;
    //Result set of all Object for user
    tcResultSet obResultSet = userIntf.getObjects(userKey);
    if (obResultSet.isEmpty()){
    log.error("User has no provisioned objects");
    return "NO_OBJECTS_EXIST";
    }else{
    for (int ii=0; ii&lt;obResultSet.getRowCount(); ii++){
    obResultSet.goToRow(ii);
    if ((obResultSet.getStringValue("Objects.Name").equals(objectName)) &&
    (!(obResultSet.getStringValue("Objects.Object Status.Status").equals("Revoked")) &&
    !(obResultSet.getStringValue("Objects.Object Status.Status").equals("Provisioning")))){
    log.debug("Resource object found: " + objectName);
    //Process Instance Key of the object
    long plProcessInstanceKey = obResultSet.getLongValue("Process Instance.Key");
    log.debug("Process instance key: " + plProcessInstanceKey);
    //Process Key for the parent for
    long plParentFormDefinitionKey = obResultSet.getLongValue("Process.Process Definition.Process Form Key");
    log.debug("Parent form definition key: " + plParentFormDefinitionKey);
    //Form version of the parent form
    int pnParentFormVersion = formIntf.getProcessFormVersion(plProcessInstanceKey);
    log.debug("Parent form version: " + pnParentFormVersion);
    //Result set of Child Form information
    tcResultSet childFormResultSet = formIntf.getChildFormDefinition(plParentFormDefinitionKey, pnParentFormVersion);
    //Child form definition key
    long plChildFormDefinitionKey = childFormResultSet.getLongValue("Structure Utility.Child Tables.Child Key");
    String plChildTableName = childFormResultSet.getStringValue("Structure Utility.Table Name");
    log.debug("Child form definition key: " + plChildFormDefinitionKey);
    log.debug("Child table name: " + plChildTableName);
    tcResultSet childFormData = formIntf.getProcessFormChildData(plChildFormDefinitionKey, plProcessInstanceKey);
    if (!(childFormData.isEmpty())){
    log.debug("Searching child table current values");
    for (int iii=0; iii&lt;childFormData.getRowCount();iii++){
    childFormData.goToRow(iii);
    String fieldValue = childFormData.getStringValue(fieldName);
    log.debug("Child table entry: " + iii + " | value: " + fieldValue);
    if (fieldValue.equals(group)){
    roleExists = true;
    log.debug("Value already exists in child table");
    return "DUPLICATE_VALUE";
    log.debug("Value not found in child table");
    if (!roleExists){
    Hashtable childFormHash = new Hashtable();
    childFormHash.put(fieldName, group);
    formIntf.addProcessFormChildData(plChildFormDefinitionKey, plProcessInstanceKey, childFormHash);
    log.debug("Value successfully added to table");
    return "VALUE_ADDED";
    log.debug("Provisioned resource " + objectName + " object not found");
    return "OBJECT_NOT_FOUND";
    catch(Exception ex){
    ex.printStackTrace();
    return "ERROR";

  • Target group with customer and contact person

    Hi experts,
    I want to create a target group with customer data and the names of the main contact person to execute a campaign.
    During execution I need the name of the contact person to personalize my forms, the campaign activity should be connected to the customer (and not the contact person).
    Is there a functionality to solve my problem? (CRM 7.0)
    Thanks in advance.
    Werner

    Hi Werner,.
    I assume you want to select for Organizations (BUT000 Type 2) and you want to see in the Target Group the Contact Persons which are assigned via Relationship to the Orgnizations.
    Create for example a Datasource with  Infoset CRM_MKTTG_BP_ORG, and under Details for Business Partner use BUT000_PER-PARTNER_GUID.
    In Field Function Module maintain CRM_MKTTG_PF_BP_TAB_TO_CP.
    Create an Attribute List an assign the Datasource. After Creating the Target Group you will see the Organizations with all the assigned Contact Persons via Relationsship.
    Regards
    Andreas
    Another Tip: Create a Target Group for Persons, assign it to the Campaign, and now set the B2B Flag. Depending from your SP Level you have to apply a note so that the B2B Flag is visible (1263915)
    If you set the B2B flag you will get Communication Data for letters, for a Call List from the Relationship.
    Regards,
    Andreas
    Edited by: Andreas Pauli on Apr 29, 2009 10:18 AM

Maybe you are looking for

  • Check if a user has a specific role

    Hello, Is it possible to check if a user has a specific role in MII 12.0? For example if the user has the role "xmii Developers" I would do something more in a transaction than if the user doesn't have this role. Thank you for your help. Regards, Mat

  • Error while restoring 10.2.0.3 backup on 10.2.0.5

    Hello, I'm trying to restoring a production(10.2.0.3) backup on QA (10.2.0.5 which is a new host). I getting RMAN-06172 error. Please help I performed the following steps RMAN> set dbid 19357374 executing command: SET DBID RMAN> startup nomount start

  • But I can not download adobe photoshop elements 11 when I want then get AUTOMATIC elements 12?

    but I can not download adobe photoshop elements 11 when I want then get AUTOMATIC elements 12?

  • Having issues adding new package in brushes library?

    i purchased a symbol package online and it came with these instructions ... http://www.vectorian.net/pages/how-to-us- that i followed to a T. the problem.,. well the symbols and the brushes do not show in library for me to use. the package name showe

  • Query on table

    <b>is it possible to create a table with 750 fields, i have a requirement of that sort, the problem is that the length is exceeding the sap specified length??</b>