4 Replies Latest reply: Sep 7, 2012 5:46 AM by 944276 RSS

    Exception while reconciliation with child table attributes

    944276
      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!
        • 1. Re: Exception while reconciliation with child table attributes
          944276
          I decided this issue! Just i marked one of the multi valued attribute as Key Field!
          • 3. Re: Exception while reconciliation with child table attributes
            idm1983
            Hi,

            Can you send me the code for it. I am facing issues with adding the child attribute to the recon event in 11gr2
            • 4. Re: Exception while reconciliation with child table attributes
              944276
              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"));
              }