OIM 11g: Custom Scheduler code

Hi
I need to develop custom scheduler in OIM 11g. But I am struck at how to use execute() method.
public class CustomScheduler extends oracle.iam.scheduler.vo.TaskSupport {
*//How to use execute(HashMap argMap) -- What hashmap data I need to pass to this method*
Please help me out with a code snippet.

Hi
I created a scheduler job in OIM with parameters as IT Resource and Resource Object.
Now through my custom scheduler I need to get the value of Parameter IT Resource.
I don't want to extend SchedulerBaseTask class to get task attributes. Instead I am trying to get values of those attributes using oracle.iam.scheduler.vo.TaskSupport class.
I tried with the below code. But it throws compile time error.
public class HRReconciliationTask extends oracle.iam.scheduler.vo.TaskSupport {
     public void init()
          String itResource = getAttribute("IT Resource");//Error: getAttribute() is undefined for type HRReconciliationTask
     public void execute()
          //code here
Pls help with code snippet.

Similar Messages

  • Problem creating OIM 11g Custom Schedule task

    hi,
    i am creating custom schedule task in oim . while importing scheduletask metadata xml getting follwoing error.
    Problem invoking WLST - Traceback (innermost last):
    File "/app/Oracle/Middleware/Oracle_IDM1/server/bin/weblogicImportMetadata.py", line 21, in ?
    File "/app/Oracle/Middleware/oracle_common/common/wlst/mdsWLSTCommands.py", line 268, in importMetadata
    File "/app/Oracle/Middleware/oracle_common/common/wlst/mdsWLSTCommands.py", line 727, in executeAppRuntimeMBeanOperation
    File "/app/Oracle/Middleware/oracle_common/common/wlst/mdsWLSTCommands.py", line 697, in getMDSAppRuntimeMBean
    UserWarning: MDS-91002: MDS Application runtime MBean for "OIMMetadata" is not available. "importMetadata" operation failure.
    can any one help me.
    Thanks in Advance.

    Do the following:
    From the oracle home (oracle_idm1) run the command <ORACLE_OIM_HOME>\common\bin\wlst.cmd
    Run the connect() command and connect with the weblogic user to the to the oim managed server (port 14000)
    Use the following command change your from location to the directory where your files are at. The location should be one folder up from the base "db" directory : importMetadata(application='oim', server='oim_server1', fromLocation='e:/files', applicationVersion='*')
    -Kevin

  • Oim 11g Custom Challenge questions

    hi,
    does oim 11g allows users to setup custom challenge questions.
    Sun Idm does have this feature..
    any idea on Oracle Idm..
    thank you.

    How to add custom challenge questions in OIM 11g
    Find below link for 11gR2
    http://srini-bellamkonda.blogspot.in/2012/11/adding-custom-challenge-questions-in.html

  • OIM 11s Custom Scheduler plugin.xml not found error.

    Hi,
    I am working on OIM11g Custom Schedulers . I have created a Custom scheduler javatask packaged it in plugin.jar , configured same in pulgin.xml and made a zip file of it. There after i have placed it in oim)server/server/plugins directory. Along with it i have made a SchduleTask.xml and imported it in mds. Now my problem is when i try to run Schedule Job created through OIm COnsole, i get exception as Class not found.
    Along with tht on oim server start up i am getting error as below :
    <Feb 28, 2011 10:12:14 AM GMT+05:30> <Error> <oracle.iam.platform.pluginframework> <IAM-1050001> <plugin.xml is not found in the plugin zip D:\Oracle\Middleware\Oracle_IDM1\server\plugins\plugin.zip.>
    <Feb 28, 2011 10:12:14 AM GMT+05:30> <Warning> <oracle.iam.platform.pluginframework> <IAM-1050022> <Unable to load plugins from D:\Oracle\Middleware\Oracle_IDM1\server\plugins\plugin.zip. Error plugin.xml is not found in the plugin zip D:\Oracle\Midd
    leware\Oracle_IDM1\server\plugins\plugin.zip.>
    However , plugin.xml is already there in my zip file. Is there any step i have missed ? I am providing here the detail of my plugin.xml.
    Here is the content of my plugin.xml.
    <?xml version="1.0" encoding="UTF-8"?>
    <oimplugins xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    <plugins pluginpoint="oracle.iam.scheduler.vo.TaskSupport">
    <plugin pluginclass="com.*.*.*.*.*.HREmployeeScheduler" version="1.0.1" name="HREmployeeScheduler">
    </plugin>
    </plugins>
    </oimplugins>
    Thanks In Advance
    Swati Pandey

    The Issue is resolved. You need to place your jar file in JavaTasks .

  • 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

  • Custom scheduler to perform recon....

    Hi,
    I have developed a custom scheduler code..that target recons from the target system ..since its custom Its not updating the timestamp field. So how can i implement in the code to read from the last stop time and write into the IT resource timestamp filed .what is the api i need to use...please guide
    Please help
    Thanks

    I have created an adapter for thois to get IT resource Instance key using api findITResourceInstances
    to which i am passing a hashmap containing IT Resources.Name and value as input to hashmap. its throwing the error
    Error occurred while running adapter "ZZZ_ENT_abcd". Task: Find IT Resource, Message: null, Reason: , Exception: com.thortech.xl.dataobj.util.tcAdapterTaskException

  • Exception while running custom scheduler OIM 11g R1

    I have OIM 11g R1 installed on win 32 platform, and am getting the following exception while running the custom scheduler: Samplescheduledtask
    <Jan 12, 2013 7:37:13 PM IST> <Warning> <oracle.iam.scheduler.impl> <BEA-000000>
    <XSD Validation Exception: org.xml.sax.SAXParseException: cvc-elt.1: Cannot fin
    d the declaration of element 'scheduledTasks'.>
    <Jan 12, 2013 7:37:13 PM IST> <Warning> <oracle.iam.scheduler.impl> <BEA-000000>
    <XSD Validation Exception: org.xml.sax.SAXParseException: cvc-elt.1: Cannot fin
    d the declaration of element 'scheduledTasks'.>
    <Jan 12, 2013 7:37:13 PM IST> <Warning> <oracle.iam.scheduler.impl> <BEA-000000>
    <XSD Validation Exception: org.xml.sax.SAXParseException: cvc-elt.1: Cannot fin
    d the declaration of element 'scheduledTasks'.>
    <Jan 12, 2013 7:37:13 PM IST> <Warning> <oracle.iam.scheduler.impl> <BEA-000000>
    <XSD Validation Exception: org.xml.sax.SAXParseException: cvc-elt.1: Cannot fin
    d the declaration of element 'scheduledTasks'.>
    <Jan 12, 2013 7:37:13 PM IST> <Warning> <oracle.iam.scheduler.impl> <BEA-000000>
    <XSD Validation Exception: org.xml.sax.SAXParseException: cvc-elt.1: Cannot fin
    d the declaration of element 'scheduledTasks'.>
    <Jan 12, 2013 7:37:13 PM IST> <Warning> <oracle.iam.scheduler.impl> <BEA-000000>
    <XSD Validation Exception: org.xml.sax.SAXParseException: cvc-elt.1: Cannot fin
    d the declaration of element 'scheduledTasks'.>
    java.lang.ClassNotFoundException: ADP ClassLoader failed to load: oracle.iam.sam
    ple.scheduledtask.SampleScheduledTask
    at com.thortech.xl.dataobj.tcADPClassLoader.findClass(tcADPClassLoader.j
    ava:219)
    at oracle.iam.transUI.impl.CustomTaskLoaderImpl.getClassInstance(CustomT
    askLoaderImpl.java:12)
    at oracle.iam.scheduler.impl.quartz.QuartzJob.execute(QuartzJob.java:146
    at org.quartz.core.JobRunShell.run(JobRunShell.java:202)
    at org.quartz.simpl.SimpleThreadPool$WorkerThread.run(SimpleThreadPool.j
    ava:529)
    java.lang.ClassNotFoundException: ADP ClassLoader failed to load: oracle.iam.sam
    ple.scheduledtask.SampleScheduledTask
    at com.thortech.xl.dataobj.tcADPClassLoader.findClass(tcADPClassLoader.j
    ava:219)
    at oracle.iam.transUI.impl.CustomTaskLoaderImpl.getClassInstance(CustomT
    askLoaderImpl.java:12)
    at oracle.iam.scheduler.impl.quartz.QuartzJob.execute(QuartzJob.java:146
    at org.quartz.core.JobRunShell.run(JobRunShell.java:202)
    at org.quartz.simpl.SimpleThreadPool$WorkerThread.run(SimpleThreadPool.j
    ava:529)
    java.lang.ClassNotFoundException: ADP ClassLoader failed to load: oracle.iam.sam
    ple.scheduledtask.SampleScheduledTask
    at com.thortech.xl.dataobj.tcADPClassLoader.findClass(tcADPClassLoader.j
    ava:219)
    at oracle.iam.transUI.impl.CustomTaskLoaderImpl.getClassInstance(CustomT
    askLoaderImpl.java:12)
    at oracle.iam.scheduler.impl.quartz.QuartzJob.execute(QuartzJob.java:146
    at org.quartz.core.JobRunShell.run(JobRunShell.java:202)
    at org.quartz.simpl.SimpleThreadPool$WorkerThread.run(SimpleThreadPool.j
    ava:529)
    Following is the code of the custom scheduler:
    package oracle.iam.sample.scheduledtask;
    import java.util.HashMap;
    import oracle.iam.scheduler.vo.TaskSupport;
    public class SampleScheduledTask extends TaskSupport {
    public void execute(HashMap hashMap) throws Exception {
    // Display a message when this scheduled task is run
    System.out.println("Running the OIM Sample Scheduled Task...");
    public HashMap getAttributes() {
    return null;
    public void setAttributes() {
    kindly suggest......
    Regards,
    KK
    Edited by: 958122 on Jan 12, 2013 11:38 PM

    Hi,
    Please use the below commands to register the plugin:
    set the environment variable ORACLE_HOME, OIM_ORACLE_HOME, ANT_HOME,JAVA_HOME,MW_HOME and execute
    $ORACLE_HOME/server/plugin_utility/ant -f pluginregistration.xml register
    and provide the necessary input.
    $ORACLE_HOME/server/bin/PurgeCache.sh All
    and provide the necessary input
    Restart the OIM managed server
    http://docs.oracle.com/cd/E21764_01/doc.1111/e14309/plugins.htm#CHDHECGH
    Regards,
    Sunny

  • Custom Schedule Job Issue - OIM 11g R2

    Hi All,
    I deployed a custom schedule task to assign a role to a user and created a schedule job for the same.
    The problem is my job is executing twice even though I ran it for one time and getting exception saying Role already assigned..
    please tell me how to make execute job only once on one execution
    Thanks in advance
    Praveen...

    sorry, for late reply...
    I tried restarting servers... no luck....
    1)java code
    public class TerminateAbscondUsers extends TaskSupport
    ODLLogger logger = ODLLogger.getODLLogger("OIMCP.SAPH");
    UserManager usrMgr = Platform.getService(UserManager.class);
    public HashMap getAttributes()
    return null;
    public void setAttributes()
    public void execute(HashMap hashMap)
    logger.info("Entered TerminateAbscondUsers:execute() method");
    Long abscondDays = (Long)hashMap.get("AbscondDays");
    logger.info("Abscond Days = "+ abscondDays);
    List<User> resultUserList = getUserList();
    disableUsers(resultUserList,abscondDays);
    logger.info("Left TerminateAbscondUsers:execute() method");
    public List<User> getUserList()
    logger.info("Entered TerminateAbscondUsers:getUserList() method");
    HashSet<String> reqAttr = new HashSet<String>();
    reqAttr.add("User Login");
    reqAttr.add("Status");
    //reqAttr.add("EventDate");
    reqAttr.add("DateOfAbsconding");
    List<User> usrList = new ArrayList<User>();
         SearchCriteria usrIDSearchCriteria = new SearchCriteria("Action","AB",SearchCriteria.Operator.EQUAL);
         try
              usrList = usrMgr.search(usrIDSearchCriteria,reqAttr,null);
              logger.info("Absconded userList size ="+ usrList.size());
         catch(UserSearchException use)
              logger.info("UserSearchExecption = " + use.getMessage());
    catch(Exception e)
              logger.info("Exception TerminateAbscondUsers:getUserList() = " +Arrays.toString(e.getStackTrace()));
         logger.info("Absconded usrList = " + usrList.toString());
         logger.info("Left TerminateAbscondUsers:getUserList() method");
         return usrList;
    public void disableUsers(List<User> resultUserList, Long abscondDays)
    logger.info("Entered TerminateAbscondUsers:disableUsers() method");
         UserManagerResult localUserManagerResult1;
         UserManagerResult localUserManagerResult2;
    try
              for(int i=0;i<resultUserList.size();i++)
                   String userLogin = resultUserList.get(i).getLogin();
                   logger.info("User Login = " + userLogin);
                   Long userKey = (Long)resultUserList.get(i).getAttribute("usr_key");
                   String strUsrKey = userKey.toString();
                   logger.info("User key = " + strUsrKey);
                   //Date abscondDate = (Date)resultUserList.get(i).getAttribute("EventDate");
                   Date abscondDate = (Date)resultUserList.get(i).getAttribute("DateOfAbsconding");
                   Date currentDate = new Date();
                   Long diffDate = (Long)((currentDate.getTime() - abscondDate.getTime())/(1000*60*60*24));
                   if( diffDate > abscondDays)
                        logger.info("diff date = " + diffDate);
                        User localUser = new User(strUsrKey);
                        localUser.setAttribute("End Date",(Object)currentDate);
                        localUser.setAttribute("Action","TE");
                        localUserManagerResult1 = usrMgr.modify(localUser);
                        logger.info("Set End Date operation status = " + localUserManagerResult1.getStatus());
                        localUserManagerResult2 = usrMgr.disable(userLogin,true);
                        logger.info("Terminate operation status = " + localUserManagerResult2.getStatus());
    catch(ValidationFailedException vfe)
    logger.info("ValidationFailedException = " + vfe.getMessage());
    catch(UserDisableException ude)
    logger.info("UserDisableException = " + ude.getMessage());
    catch(NoSuchUserException nsue)
    logger.info("NoSuchUserException = " + nsue.getMessage());
    catch(UserModifyException ume)
    logger.info("UserModifyException = " + ume.getMessage());
    catch(Exception e)
         logger.info("Exception TerminateAbscondUsers:getUserList() = " +Arrays.toString(e.getStackTrace()));
         logger.info("Left TerminateAbscondUsers:disableUsers() method");
    2) METADATA XML
    <scheduledTasks xmlns="http://xmlns.oracle.com/oim/scheduler">
    <task>
    <name>Terminate Abscond Users</name>
    <class>com.hdfclife.oracle.iam.customScheduler.user.TerminateAbscondUsers</class>
    <description>Terminate Abscond Users</description>
    <retry>5</retry>
    <parameters>
    <number-param required="true" helpText="No. of days since Absconded">AbscondDays</number-param>
    </parameters>
    </task>
    </scheduledTasks>
    Thanks in Advance...

  • How to Deploy the Scheduler Task OIM 11g

    Hi.
    I have deployed the scheduler task in OIM 11g and also I have configured the Scheduler task in OIM Admin Console. The Java Scheduler class was not invoked when I run the Scheduler task.
    I have done the following configuration to develop and deploy the scheduler task in OIM.
    1) Developing the Java Class File.
    package edu.sfsu.oim11g.scheduler;
    import java.util.HashMap;
    import oracle.iam.scheduler.vo.TaskSupport;
    import edu.sfsu.oim11g.logger.SfsuLogger;
    public class SfsuTrustedSourceReconciliation extends TaskSupport {
         //private Logger logger= Logger.getLogger(SfsuTrustedSourceReconciliation.class);
         private SfsuLogger logger= new SfsuLogger("SFSU-LOGGER");
         private String className=this.getClass().getCanonicalName();
         private String methodName="";
         public SfsuTrustedSourceReconciliation() {
              methodName="SfsuTrustedSourceReconciliation";
              debug("SfsuTrustedSourceReconciliation() Called");
         @Override
         public void execute(HashMap arg0) throws Exception {
              // TODO Auto-generated method stub
              methodName="execute";
              debug("SfsuTrustedSourceReconciliation Arguments "+arg0);
         @Override
         public HashMap getAttributes() {
              // TODO Auto-generated method stub
              return null;
         @Override
         public void setAttributes() {
              // TODO Auto-generated method stub
         private void debug(Object message)
              logger.info(className+" : "+methodName+" : "+message);
    2) Custom Scheduler XML File
    This file is located in
    /home/oracle/confg_files/schedulers/db/SfsuTrustedSourceReconciliation.xml
    <scheduledTasks xmlns="http://xmlns.oracle.com/oim/scheduler">
         <task>
         <name>SfsuTrustedSourceReconciliation</name>
              <class>edu.sfsu.oim11g.scheduler.SfsuTrustedSourceReconciliation</class>
              <description>Reconciliation IDSync Data</description>
              <retry>5</retry>
              <parameters>
                   <string-param required="true" encrypted="false" helpText="Source Data Source">Source Resource Data Source Name</string-param>
                   <string-param required="true" encrypted="false" helpText="Config Data Source">Config Resource Data Source Name</string-param>
                   <string-param required="true" encrypted="false" helpText="Reconciliation Type is Full Or Cincremental. Default is Incremental">Reconciliation Type</string-param>
                   <number-param required="true" encrypted="false" helpText="Max Records" >Max Records</number-param>
              </parameters>
         </task>
    </scheduledTasks>
    3) Plugin File Configuration.
    <?xml version="1.0" encoding="UTF-8"?>
    <oimplugins>
    <plugins pluginpoint="oracle.iam.platform.kernel.spi.EventHandler">
    <plugin pluginclass="edu.sfsu.oim11g.eventhandlers.SfsuPostProcessEventHandler" version="1.0" name="SfsuPostprocessExtension"/>
    </plugins>
    <plugins pluginpoint="oracle.iam.scheduler.vo.TaskSupport">
    <plugin pluginclass="edu.sfsu.oim11g.scheduler.SfsuTrustedSourceReconciliation" version="1.0" name="SfsuTrustedSourceReconciliation"/>
    </plugins>
    </oimplugins>
    The event handler is successfully deployed and working fine without any issue.
    4) making the scheduler jar file.
    5) Making the scheduler zip with the following directory format.
    plugin.xml
    lib/scheduler.jar
    6) Registering the Schedule task and event handler as a Plugin.
    ant -f pluginregistration.xml register
    7) Importing the SfsuTrustedSourceReconciliation.xml file into the MDS.
    7.1) weblogic.properties
    wls_servername=oim_server1
    application_name=oim
    metadata_from_loc=/home/oracle/configfiles/schedulers
    7.2) Running the weblogicImportMetadata.sh file
    It imported the SfsuTrustedSourceReconciliation.xml file into the MDS Schema and it is available in the MDS_PATH table in MDS schema
    Path_Name : SfsuTrustedSourceReconciliation.xml
    PATH_FULL : /db/SfsuTrustedSourceReconciliation.xml
    8) Imported the EventHandlers.xml file into the MDS Schema.
    9) Run the PurgeCache.sh file
    10) Restarted the OIM Server.
    11) Loggin into the OIM Admin Console and Created the Scheduler job based on the SfsuTrustedSourceReconciliation listed in the scheduler.
    12) Run the Scheduler job and log file entries are not logged into the log file. My Log File Configuration
    <log_handler name='sfsu-handler' level='FINEST' class='oracle.core.ojdl.logging.ODLHandlerFactory'>
    <property name='logreader:' value='off'/>
    <property name='path' value='/u01/app/wl-10.3.5.0/Oracle/Middleware/user_projects/domains/oim_domain/servers/oim_server1/logs/sfsu-connector.log'/>
    <property name='format' value='ODL-Text'/>
    <property name='useThreadName' value='true'/>
    <property name='locale' value='en'/>
    <property name='maxFileSize' value='5242880'/>
    <property name='maxLogSize' value='52428800'/>
    <property name='encoding' value='UTF-8'/>
    </log_handler>
    <logger name="SFSU-LOGGER" level="FINEST" useParentHandlers="false">
    <handler name="sfsu-handler"/>
    <handler name="console-handler"/>
    </logger>
    Is there any special configuration Do i need to do invoke my Scheduler Java Class File.
    Help is Greatly Appreciated.

    Seems like you did it all right but just piece which if you can modify and test. The plugin.xml has two artifacts eventhandler and the schduler. Can you try creating separate plugin.xml with one for the scheduler zipped up with /lib/scheduleClass.jar and test it?
    Just deregister everything before trying it and let us know how it goes.
    Also the logger as I see is a custom logger, so it is extending the OOTB Logger? Just put some sysouts in the code and check for those in the server out file to be sure.
    Edited by: bbagaria on Jul 22, 2011 5:15 PM

  • Unable to invoke Custom PostProcessEventHandler in OIM 11g R2

    Hi,
    I am working with OIM 11g R2 .I created an custom PostProcessEventHandler to trigger on modify user operation.
    I created a jar file of custom class as xyz.jar
    I created an plugin.xml as:
    <?xml version="1.0" encoding="UTF-8"?>
    <oimplugins>
    <plugins pluginpoint="oracle.iam.platform.kernel.spi.EventHandler">
    <plugin pluginclass="com.xyz.DisablePostProcessEventHandler" version="1.0" name="DisablePostProcessEventHandler">
    </plugin>
    </plugins>
    </oimplugins>
    I made an xyz.zip of plugin.xml and lib/xyz.jar
    I registered the xyz.zip by placing zip file in plugins directory.
    I created an EventHandlers.xml as below:
    <?xml version='1.0' encoding='utf-8'?>
    <eventhandlers xmlns="http://www.oracle.com/schema/oim/platform/kernel"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://www.oracle.com/schema/oim/platform/kernelorchestration-handlers.xsd">
    <!-- Custom postprocess event handlers -->
    <action-handler
    class="com.xyz.DisablePostProcessEventHandler" entity-type="User" operation="MODIFY" name="DisablePostProcessEventHandler" stage="postprocess" order="9999" sync="TRUE"/>
    </eventhandlers>
    and placed in the path temp/metadata/user/custom/CustomPostProcessHandler and imported it to MDS.
    I purged the cache as ./PurgeCache MetaData.
    When i am trying to modify user i am getting error as below:
    [WARNING] [] [oracle.adf.controller.faces.lifecycle.Utils] [tid: [ACTIVE].ExecuteThread: '7' for queue: 'weblogic.kernel.Default (self-tuning)'] [userId: xelsysadm] [ecid: 0000JqaUC9MDoYO_qh5EiY1HJuY90001ve,0] [APP: oracle.iam.console.identity.self-service.ear#V2.0] ADF: Adding the following JSF error message: Localized message not available. Error returned is: JBO-29000: Unexpected exception caught: java.lang.NullPointerException, msg=null[[
    oracle.jbo.JboException: JBO-29000: Unexpected exception caught: java.lang.NullPointerException, msg=null
    at oracle.adf.model.binding.DCInvokeMethod.invokeMethod(DCInvokeMethod.java:699)
    at oracle.adf.model.binding.DCDataControl.invokeMethod(DCDataControl.java:2143)
    at oracle.adf.model.bc4j.DCJboDataControl.invokeMethod(DCJboDataControl.java:3114)
    at oracle.adf.model.binding.DCInvokeMethod.callMethod(DCInvokeMethod.java:261)
    at oracle.jbo.uicli.binding.JUCtrlActionBinding.doIt(JUCtrlActionBinding.java:1635)
    at oracle.adf.model.binding.DCDataControl.invokeOperation(DCDataControl.java:2150)
    at oracle.jbo.uicli.binding.JUCtrlActionBinding.invoke(JUCtrlActionBinding.java:740)
    at oracle.adf.controller.v2.lifecycle.PageLifecycleImpl.executeEvent(PageLifecycleImpl.java:402)
    at oracle.adfinternal.view.faces.model.binding.FacesCtrlActionBinding._execute(FacesCtrlActionBinding.java:252)
    at oracle.adfinternal.view.faces.model.binding.FacesCtrlActionBinding.execute(FacesCtrlActionBinding.java:210)
    at oracle.iam.ui.platform.utils.FacesUtils.executeOperationBinding(FacesUtils.java:165)
    Caused by: java.lang.NullPointerException
    at oracle.iam.request.impl.RequestEngine.startOrchestrationFromPreProcess(RequestEngine.java:5385)
    at oracle.iam.request.impl.RequestEngine.triggerOperation(RequestEngine.java:5297)
    at oracle.iam.request.impl.RequestEngine.doOperation(RequestEngine.java:5028)
    at oracle.iam.impl.OIMServiceImpl.doOperation(OIMServiceImpl.java:43)
    at sun.reflect.GeneratedMethodAccessor2994.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:601)
    at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:307)
    at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:182)
    at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:149)
    at oracle.iam.platform.utils.DMSMethodInterceptor.invoke(DMSMethodInterceptor.java:25)
    at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:171)
    at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:204)
    at $Proxy384.doOperation(Unknown Source)
    at oracle.iam.api.OIMServiceEJB.doOperationx(Unknown Source)
    at sun.reflect.GeneratedMethodAccessor4224.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:601)
    ## Detail 0 ##
    java.lang.NullPointerException
    at oracle.iam.request.impl.RequestEngine.startOrchestrationFromPreProcess(RequestEngine.java:5385)
    at oracle.iam.request.impl.RequestEngine.triggerOperation(RequestEngine.java:5297)
    at oracle.iam.request.impl.RequestEngine.doOperation(RequestEngine.java:5028)
    at oracle.iam.impl.OIMServiceImpl.doOperation(OIMServiceImpl.java:43)
    at sun.reflect.GeneratedMethodAccessor2994.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:601)
    at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:307)
    at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:182)
    at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:149)
    at oracle.iam.platform.utils.DMSMethodInterceptor.invoke(DMSMethodInterceptor.java:25)
    at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:171)
    at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:204)
    at $Proxy384.doOperation(Unknown Source)
    at oracle.iam.api.OIMServiceEJB.doOperationx(Unknown Source)
    at sun.reflect.GeneratedMethodAccessor4224.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:601)
    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.Deleg
    Please help me in resolving this issue.

    Hi Suny,
    Yes I restarted the OIM Server but getting same error.
    I have logger in my code and and nothing is getting printed thet menas the code is not getting invoked itself.
    My eventhandler is for postprocess and I am not understanding why i am getting PreProcess error.
    java.lang.NullPointerException
    at oracle.iam.request.impl.RequestEngine.startOrchestrationFromPreProcess(RequestEngine.java:

  • XML Parsing in a Schedule Job (OIM 11g R1)

    Hi,
    I am writing a lookup recon - schedule task in OIM 11g R1 to connect to a webservice and get the lookup attribute values. Now, I am able to fetch the values in a xml format. I am facing an issue while trying to parse the xml values (tried both as a string and from a file).
    I have tried using both the SAX and the DOM parser. PFA the snippet for the DOM Parser:
                        DocumentBuilderFactory builderFactory =
                            DocumentBuilderFactory.newInstance();
                        DocumentBuilder builder = null;
                        try {
                            builder = builderFactory.newDocumentBuilder();
                        } catch (ParserConfigurationException e) {
                            e.printStackTrace();
                        org.w3c.dom.Document doc =
                            (org.w3c.dom.Document)builder.parse(file);
                        System.out.println("Parsed the xml");
                        org.w3c.dom.NodeList nodes =
                            doc.getElementsByTagName("entry");
                        System.out.println("Total Profiles fetched:: " +
                                           nodes.getLength());
    This is giving the nodes.getLength() as 0. Though the code runs fine in the Java Client (directly from eclipse)
    The snippet for the SAX method is :
                SAXParserFactory factory = SAXParserFactory.newInstance();
                SAXParser saxParser = factory.newSAXParser();
                DefaultHandler handler = new DefaultHandler() {
                    boolean bfname = false;
                    boolean blname = false;
                    boolean bnname = false;
                    boolean bsalary = false;
                    public void startElement(String uri, String localName,
                                             String qName,
                                             Attributes attributes) throws SAXException {
                        //   System.out.println("Start Element :" + qName);
                        if (qName.equalsIgnoreCase("d:Name")) {
                            blname = true;
                    public void endElement(String uri, String localName,
                                           String qName) throws SAXException {
                        //     System.out.println("End Element :" + qName);
                    public void characters(char[] ch, int start,
                                           int length) throws SAXException {
                        if (blname) {
                            System.out.println("d:Name : " +
                                               new String(ch, start, length));
                            blname = false;
                           saxParser.parse("home/oracle/UserProfiles.xml", handler);
    This is throwing a java.net.malformedurlexception: no protocol: /home/oracle/userprofiles.xml exception. I tried to pass it as "file://home/oracle/UserProfiles.xml" but then is gives a
    java.net.ConnectException: Connection refused Even this code is running fine in the Java Client when ran directly. It seems there is some weblogic configurations I am missing for the XML parsing?
    Please do help, if anyone has faced any issues parsing an xml in a Schedule job. Will highly appreciate your inputs.
    Thanks,
    Anuj.  

    Hi,
    I am writing a lookup recon - schedule task in OIM 11g R1 to connect to a webservice and get the lookup attribute values. Now, I am able to fetch the values in a xml format. I am facing an issue while trying to parse the xml values (tried both as a string and from a file).
    I have tried using both the SAX and the DOM parser. PFA the snippet for the DOM Parser:
                        DocumentBuilderFactory builderFactory =
                            DocumentBuilderFactory.newInstance();
                        DocumentBuilder builder = null;
                        try {
                            builder = builderFactory.newDocumentBuilder();
                        } catch (ParserConfigurationException e) {
                            e.printStackTrace();
                        org.w3c.dom.Document doc =
                            (org.w3c.dom.Document)builder.parse(file);
                        System.out.println("Parsed the xml");
                        org.w3c.dom.NodeList nodes =
                            doc.getElementsByTagName("entry");
                        System.out.println("Total Profiles fetched:: " +
                                           nodes.getLength());
    This is giving the nodes.getLength() as 0. Though the code runs fine in the Java Client (directly from eclipse)
    The snippet for the SAX method is :
                SAXParserFactory factory = SAXParserFactory.newInstance();
                SAXParser saxParser = factory.newSAXParser();
                DefaultHandler handler = new DefaultHandler() {
                    boolean bfname = false;
                    boolean blname = false;
                    boolean bnname = false;
                    boolean bsalary = false;
                    public void startElement(String uri, String localName,
                                             String qName,
                                             Attributes attributes) throws SAXException {
                        //   System.out.println("Start Element :" + qName);
                        if (qName.equalsIgnoreCase("d:Name")) {
                            blname = true;
                    public void endElement(String uri, String localName,
                                           String qName) throws SAXException {
                        //     System.out.println("End Element :" + qName);
                    public void characters(char[] ch, int start,
                                           int length) throws SAXException {
                        if (blname) {
                            System.out.println("d:Name : " +
                                               new String(ch, start, length));
                            blname = false;
                           saxParser.parse("home/oracle/UserProfiles.xml", handler);
    This is throwing a java.net.malformedurlexception: no protocol: /home/oracle/userprofiles.xml exception. I tried to pass it as "file://home/oracle/UserProfiles.xml" but then is gives a
    java.net.ConnectException: Connection refused Even this code is running fine in the Java Client when ran directly. It seems there is some weblogic configurations I am missing for the XML parsing?
    Please do help, if anyone has faced any issues parsing an xml in a Schedule job. Will highly appreciate your inputs.
    Thanks,
    Anuj.  

  • Schedule task - manager updation for user in oim 11g

    Hi,
    I am in the way of writing a custom schedule task to update manager for the user created in oim.
    I know the procedure of custom scedule task
    I want the code snipet to be written in the execute() method of java class to update the manager for the user
    Could anybody help me with this!

    Hi Gyanprakash,
    How will you retrieve the user detail ..?? i am getting null pointer exception error
    public void execute(HashMap taskParameters) {
    System.out.println("inside the Execute methode");
    System.out.println("Schedule task Arguments "+taskParameters);
    String userId = (String)taskParameters.get("User Login");
    System.out.println("===========input=============== "+userId);
    String passwordex=taskParameters.get("usr_pwd_expire_date").toString();
    System.out.println("===========input=============== "+passwordex);
    String passwordwar=taskParameters.get("usr_pwd_warn_date").toString();
    System.out.println("===========input=============== "+passwordwar);
    Thanks,
    Edited by: Srivatsa.kashyap on May 25, 2012 6:00 AM

  • Customizing Request Application Flows in OIM 11g?

    To all:
    I'm trying to work through a scenario using Request Templates - I'm not sure that this approach is possible using configuration approaches and wanted to see if anyone has any useful feedback. First, let me describe the problem I'm attempting to solve:
    - The users who will be using self-service will be somewhat restricted on what they can do: basically, once they have an account in OIM (this is 'automatic' from a reconciliation - there's no self-registration or user creation) they can request access to a small number of applications.
    The ideal flow that we would like to follow is:
    Step 1: Log in to OIM.
    Step 2: Create Request
    Step 3: Select the Application for requested access and the requested role.
    Step 4: Enter an effective date and justification.
    Step 5: Submit
    ... something 'application focused', not 'resource focused' as the end user community is not particularly aware (nor do they really need to be) about the details of how a user is authenticated.
    I can get 'close' to this using a request template, with this flow:
    Step 1: Log in to OIM
    Step 2: Create a request.
    Step 3: Select a Request Template. (I named the template after the application - "Select App Account")
    Step 4: Select Your Resource (only one in this case - restricted to "AD User")
    Step 5: Enter information about the AD account. (I can restrict this down to only allow for group selection, which is great.)
    Step 6: Enter effective date, justification
    Step 7: Submit
    So the only thing I'd really like to 'skip' (or somehow default) is the selection of a resource and skip that step - because the template only allows for a single selection anyway, and having an extra step with a single selection that may only muddle the process would be detrimental to the usability of the request.
    Is this a modification that we can make to the request flow ("If only one resource, default and move on") - or will we need to create some form of customized request process using the APIs?
    I've dug into the JSF navigation in the iam-console-faces WAR file; it seems that navigation is tied up in the backing beans - has anyone else used Request Templates to meet this type of need?
    My thanks in advance for any insight you can provide!

    Dewan.Rajiv wrote:
    It's a new flow which Oracle has introduced in OIM 11g. You can't skip that selection until you do modification in OOTB UI.
    RO is mandatory thing to raise request so you can go for custom UI (Need ADF Knowledge) in which you'll ask end user to select other things except that Resource and you'll fetch RO name from some configuration file for using in request APIs.Thanks - it looks like customizing the OOTB UI might not be possible - rather than using ADF/Faces configuration files, most of the navigation redirects seem to be 'hidden away' in compiled class files. (My original thought: add some kind of filter and/or extension to an ADF Task Flow that governs the request application flow - but there are not task flow files to modify?)

  • Customizing request datasets in OIM 11g

    Hi Friends,
    I have couple of questions/issues while customizing request datasets in OIM 11g. Can you please help me?
    1) I gave read-only="true" in my request dataset for one of the attribute, but I was still able to edit that attribute value while raising requests.
    2) I gave hidden="true" in my request dataset for one of the attribute, but I was still able to see that attribute while raising requests.
    3) I have around 90 attributes in my request dataset. Is there any way to display category type and under that category display the attrbitues i.e. just like attributes in user profile.
    4) As I have 90 attributes, I am expecting the format will be like first 45 will be shown in left panel(column) and remaining 45 in right panel (column). Instead of this , it is showing first 70 in left panel and the remaining 20 in right panel which is very ugly to see. Is there any way to show frist 45 on left side and remaining 45 on the right side? Please help me.

    Regarding the first two points:
    1) The read only property applies to the approver only, i.e. approver can read and not modify the attribute. It does not apply to the requester. I don't believe you can configure a read-only attribute in the data set.
    2) If you want to hide an attribute, you can restrict it in your request template.

  • OIM 11g - How to run a schedule task using API

    Hi All,
    May I know how i can run a schedule job in OIM 11g through API.I referred the below link but it is for 9.x version.I need the same functionality in 11g?.
    Schedule Tasks
    Thanks in advance.

    Check this :
    SchedulerService schService = oimClient.getService(SchedulerService.class);
    schService.triggerNow("Second Demo Scheduled Task");
    API Reference :
    void triggerNow(java.lang.String jobName)
    throws SchedulerException,
    SchedulerAccessDeniedException
    Runs the specified job
    Parameters:
    jobName - The job that is to be triggered
    Throws:
    SchedulerException - when an error occurs at the Quartz Engine or scheduler is not running.
    SchedulerAccessDeniedException - This exception will be thrown if access permission for operation is not available to the user

Maybe you are looking for

  • Indicator "Payment order created"

    Hi gurus, Help me please with  the following problem. I have  accounting document (incoming invoice) in the system and it has indicator "Payment order created". So that means that payment order must exist concerned with this accounting document. But

  • Oracle 11g , Administrator OCM certification

    Hi, I have completed OCP certification in the developers track by clearing in the following exams : 1Z0-007 , 1Z0-147 and 1Z0-146. I wish to become an OCM in DBA track for Oracle 11g. Going by the steps mentioned in the Oracle certification website,

  • Downloading doc document after it is converted from pdf

    I used the converter for the first time and the message said the pdf file had been successfully converted to doc; and to download converted file. This instruction is not clear to me. What will be the file name, and from where do find the doc file?

  • Background flow when agent opens a message in Inbox -eMailCenter -OA11.5.9

    Hi Techies! Currently In CRM eMail Center Module,when an agent opens the mail(message) from a mail id which is not primary mail Id but exists as alternate in hz_contact_points,the customer is not associated automatically and hence no customer informa

  • What does '1 seat' mean in subscription plan

    Hi all. I was about to subscribe 'CreatePDF' service. and I read the subscriton plan. '# of seats => 1' What does this mean? I can use this services in 'ONLY ONE COMPUTER'? or I can use this services in one 'subscribed ID'? please let me know.