9i eventhandler in 11G
Hi All,
Can i use 9i feature of creating eventhandler adapter in 11G ???
i.e. we used to place java file inside EventHandler folder in 9i to use it for validation and poplulating the values to the user form using data-object manager in design console. can we implement the same in 11g ?? cause i am performing GTC reconciliation and i have to perform the validation for the data which is coming through the flat file during trusted recon.
Thank you
Srivatsa Kashyap
We can implement in 11g but now API for event handler has been changed. Refer below link for exact steps:
http://docs.oracle.com/cd/E14571_01/doc.1111/e14309/oper.htm
Steps are little complex as compare to 9i implementations.
regards,
GP
Similar Messages
-
Problem with EventHandler in OIM 11g
Hi All,
I followed the Part I(Chapters 6,7 & 30) in pdf file shown below
http://download.oracle.com/docs/cd/E14571_01/doc.1111/e14309.pdf
I developed the plugin and registered the plugin for custom eventhandler.
Iam not able to see the defined eventhandler in design console .
I am running weblogicImportMetadata.bat (import specific metadata files into the MDS database) as specified in pdf document after making necessary changes.
After restarting OIM server ,the server is not starting , and showing errors like " target invocation exception","null pointer exception" etc.
Have anyone done the EventHandler in OIM 11g , if anyone done please provide the followed document link.
Please suggest to solve the issue.
Thanks & Regards
Satish
Edited by: satish on Sep 17, 2010 4:53 PM
Edited by: satish on Sep 22, 2010 3:14 PMHello Satish,
You won't find the eventhandler in the design console. This is by design.
I had a similar error. Hope this helps you.
Verify your EventHandlers.xml file. For me one of the entries, particularly stage="preprocess" had the letter 's' in uppercase (Stage="preprocess"). This was the source of my error below.
<An error occurred while initializing service : {0}
java.lang.NullPointerException
Caused by: oracle.iam.platform.utils.ServiceInitializationException: java.lang.NullPointerException
<Nov 2, 2010 12:30:55 PM PDT> <Warning> <oracle.iam.platform.utils> <IAM-0070016> <An error occurred while initializing service : oracle.iam.platform.kernel.OrchestrationEngine>
<Nov 2, 2010 12:30:55 PM PDT> <Warning> <oracle.iam.platform.utils> <IAM-0070016> <An error occurred while initializing service : {0}
java.lang.NoClassDefFoundError: oracle/iam/platform/kernel/impl/KernelObjFactory
There is definitely a lack of clear documentation around developing plugins (e.g. oim.home in ant.properties should point to OIM home/server).
I worked with Oracle support and provided some feedback. They are going to publish a KB article soon. I now have a preprocess eventhandler that seems to work. -
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: -
Unregister Event Handler OIM 11g
Hi
I have created a event handler and registered the same within OIM 11g. it gets executed as expected after create user (post process). next i changed some of the code within my custom event handler. and registered the plugin after i unregistered the old one. unfortunately i still see the old output in my logs
i have purged the metadata chache, i have bounced the OIM but no luck..
Are there any steps / checks i need to follow after i unregister the event handler.. and also plz confirm whether we need to follow all the steps of registration of event handler every time we make changes to the event handler class. uhhh.. its really time consuming when
thanks
shivHi,
Please make sure you are shipping updated JAR files in plugin.zip and re-register.
Follow below steps to re-register plugin,
1. Unregister plugin using below command
ant -f pluginregistration.xml unregister
2. Prepare plugin.zip with updated JAR file.
3. register plugin using below command
ant -f pluginregistration.xml register
You do not need to restart OIM server after re-register and need not to import eventhandler.xml unless you change version of plugin.
Also you can verify registered plugin details in plugin table with following query (Run on OIM DB),
select * from plugins;
Thanks,
Pradeep. -
Debuging Event Handler OIM 11g
Hi experts
I have built the event handler and its able to set email of the end user as [email protected] after post process. Fortunatly i could do this at first shot after following the link on the oracle meta link.
But i could not debug the eventhandler class file for any additional changes. though i have added the SOP statments i cud not see anythin in the OIM Diagnostic logs.
can any one help me where i can find the trace out put of the SOP's i've set in the event handler.. is it in the WLS logs or do i need to set the OIM log level to finest. im lil confused
this is the first time im dealing with oim event handlers.Hi ,
By default SOP statments prints on OIM logs.
You can generate Custom Log file in OIM 11g for event handler.
1.Open logging.xml from <OIM Domain>/config/fmwconfig/servers/<OIM Server>
2.In the <log_handlers> tag add entry for custom handler
3.Add entry for the custom logger under <loggers> tag
4.Restart the OIM server
For more details, please see link http://docs.oracle.com/cd/E21764_01/doc.1111/e14308/log.htm#CEGEAGIB .
Thanks,
Pradeep
Edited by: Pradeep Khopade on Jan 30, 2012 10:23 PM
Edited by: Pradeep Khopade on Jan 30, 2012 10:24 PM -
Custom Pre Process Event Handler in OIM 11g for middle initials
Hi,
I am trying to congiure a Custom Pre Process Event Handler for generating middle name in OIM 11g and I am following the steps as given in metalink ID: *1262803.1*
Even after successfully performing all the steps I am not able to get the middle initials in Admin Console when I create a new user.
1) Directory structure for the application that I have created through JDeveloper.
CustomApplication/
|-- CustomApplication.jws
`-- CustomProject
|-- CustomProject.jpr
|-- classes
| `-- com
| `-- example
| `-- custompph
| `-- CustomPreProcessEventHandler.class
`-- src
`-- com
`-- example
`-- custompph
`-- CustomPreProcessEventHandler.java
2) Directory structure for Plugins directory
My Plugin.xml :
<?xml version="1.0" encoding="UTF-8" ?>
<oimplugins>
<plugins pluginpoint="oracle.iam.platform.kernel.spi.EventHandler">
<plugin pluginclass="com.example.custompph.CustomPreProcessEventHandler"
version="1.0" name="CustomPreProcessEventHandler" />
</plugins>
</oimplugins>
plugin/
|-- lib
| `-- com
| `-- example
| `-- custompph
| `-- CustomPreProcessEventHandler.class
|-- middlename.zip
`-- plugin.xml
Copied the middlename.zip in the plugin folder in OIM_HOME and registered it successfully.
3) Created a EventHandlers file and imported it successfully using importmetadata.
My EventHandlers.xml:
<?xml version='1.0' encoding='utf-8'?>
<eventhandlers>
<!-- Custom preprocess event handlers -->
<action-handler
class="com.example.custompph.CustomPreProcessEventHandler"
entity-type="User"
operation="CREATE"
name="CustomPreProcessEventHandler"
stage="preprocess"
order="10"
sync="TRUE"/>
</eventhandlers>
I checked the logs as well but could not find something which can help me to proceed.
Also please advise is their any mapping that I need to do in *"Design Console"*
Please advise !!!!!
ThanksMy lib file contains the package as mentioned in the metalink.
Heirarchy in Plugin folder :
1) plugin.xml
2) Lib ( lib contains 3 folders : com/example/custompph; And inside custompph is my CustomPreProcessEventHandler.class file)
You mean to say i should not copy the entire package in lib but only the jar file of the CustomPreProceessEventHandler.class* file.
If i put only a .jar file in lib i get the following error.
"Error occured during the use of plugin registering utility. The plugin zip does not contain the definition of plugin class com.example.custompph.CustomPreProcessEventHandler"
Thanks
Edited by: 870050 on Jul 4, 2011 4:30 AM -
OIM 11g - ldap sync - Post Process event handler 'CREATE' faillling
Hi Gurus,
We have ldap sync set up between OIM 11.1.1.5 and ODSEE 11g,
Post process event handler on user creation with is setting a attribute with random 16 digit character, This event handler is getting triggered and setting the attribute in OIM but in logs i can see "Modification failed because user 45118 is not synchronized to the LDAP directory." error and it is not updated in ODSEE.
This behaviour is only for trusted recon not for the User created through UI.
Not sure what exactly is happening..
Is it expected behavior??
Gurus help me out on this.IF it fail because event handler unable to produce random number then verify below
is eventhandler code being executed in trusted recon verify in log.
There are two method execute and bulk execute in eventhandler. execute is being called from UI and bulk execute is being called for trusted recon.
either put code in bulk execute or update batch recon size something like that system property to 1. so, it will function as UI. Default value of batch is 500
--nayan -
Manage OIM 11g System Properties via API
Can someone please help me understand how to use the OIM 11g API to manage OIM System Properties. In the prior version I was able to use the tcPropertyOperationsIntf class, but it looks like this now only supports reading the attributes, but I need the ability to update and delete properties from the API.
What is the proper API to use to implement this in an EventHandler class that extends tcBaseEvent?
Thanks!Hey,
Sorry to revive this pretty old thread, but it's still unanswered and I would be interested in having the answer to this question...
Thanks,
--jtellier -
Unable to send Email Notification for Oracle Identity Manager 11g for users
Hi All,
Can anyone please share a workaround to send email notifications when user is created through trusted recon in OIM 11G.Please Help Me out.
\oim_userHi
Do you just create the user in OIM and not anywhere else?
I have cofigured notification on the the target resources that i automatically assign to users as soon as they are created via trusted recon. Let say a user gets AD rersource. Ill notify whoever i want from there.
Another way i did it was using the post eventHandler code. I call an email service to notify admins on the status of the recon and post recon eventhandlers. snippet below..
tcEmailNotificationUtil emailNotificationUtil = new tcEmailNotificationUtil(dbReference);
emailNotificationUtil.constructEmail(emailTemp);
emailNotificationUtil.setBody(buildMailBody(message));
emailNotificationUtil.sendEmail(toAddress);
Let me know if this gives you an idea. -
How to Deploy the Event Handlers OIM 11g
Hi
I have developed the code for post process event handler using OIM 11 G API. The OIM not invoking the EventHandlers while updating the users attribute or creating the users attribute.
I have done the following task to develop and deploy the OIM 11g Event handlers. They are
1) Implementing the PostProcessHandler interface and provide the implementation of execute method.
Sample Class
public class SamplePostProcessEventHandler implements PostProcessHandler {
private Logger logger=Logger.getLogger("TEST-LOGGER");
public SfsuPostProcessEventHandler()
logger.debug("Invoking Event Handler Plugin");
@Override
public boolean cancel(long arg0, long arg1,
AbstractGenericOrchestration arg2) {
// TODO Auto-generated method stub
return false;
@Override
public void compensate(long arg0, long arg1,
AbstractGenericOrchestration arg2) {
// TODO Auto-generated method stub
@Override
public EventResult execute(long processid, long eventid, Orchestration orchestration) {
// TODO Auto-generated method stub
logger.debug("Operation "+orchestration.getOperation());
logger.debug("Parameters "+orchestration.getInterEventData());
logger.debug("Parameters "+orchestration.getParameters());
EventResult result=new EventResult();
return result;
@Override
public BulkEventResult execute(long arg0, long arg1, BulkOrchestration arg2) {
// TODO Auto-generated method stub
return null;
@Override
public void initialize(HashMap<String, String> arg0) {
// TODO Auto-generated method stub
2) Create the Jar File SamplePostProcessEventHandler.jar
3) Create the Plugin.xml file
Sample File
<?xml version="1.0" encoding="UTF-8"?>
<oimplugins>
<plugins pluginpoint="oracle.iam.platform.kernel.spi.EventHandler">
<plugin pluginclass="test.eventhandlers.SamplePostProcessEventHandler" version="1.0" name="SamplePostProcessEventHandler">
</plugin>
</plugins>
</oimplugins>
4) Create the directory lib and copy the SamplePostProcessEventHandler.jar file into this directory
5) Creating the Zip file with the following directory structure.
plugin.xml
lib/SamplePostProcessEventHandler.jar
6) Register the plugin
ant -f pluginregistration.xml register
7) Creating the Custom Events xml file called EventHandlers.xml
<?xml version='1.0' encoding='UTF-8'?>
<eventhandlers>
<action-handler class="test.eventhandlers.SamplePostProcessEventHandler" entity-type="User" operation="CREATE" name="SamplePostProcessEventHandler" stage="postprocess" order="LAST" sync="TRUE"/>
<action-handler class="test.eventhandlers.SamplePostProcessEventHandler" entity-type="User" operation="MODIFY" name="SamplePostProcessEventHandler" stage="postprocess" order="LAST" sync="TRUE"/>
</eventhandlers>
8) Importing the Above XML into the MDS Schema Using the weblogicImportMetadata.sh file
Directory Structure of the Event Handler Schema File
/home/oracle/eventhandler/db/EventHandlers.xml
weblogic.properties file parameters
wls_servername=oim_server1
application_name=oim
metadata_from_loc=/home/oracle/eventhandler
9) Finnally Running the PurgeCache.sh All
10) Restarted the OIM Server.
11) Testing
I have logged into the OIM Admin Console >> Search the User > Update the First Name. The event handlers are not invoked any create or update operation. I am not able to see the log entries into the log file.
My Log Entry Configuration.
log File Configuration :
/u01/app/wl-10.3.5.0/Oracle/Middleware/user_projects/domains/oim_domain/config/fmwconfig/servers/oim_server1/logging.xml
<log_handler name='test-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/test-event.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'/>
<logger name="TEST-LOGGER" level="FINEST" useParentHandlers="false">
<handler name="test-handler"/>
<handler name="console-handler"/>
</logger>
Is there anything is missing while deploying the event handlers.
Help is Greatly appreciated.Change as per the following :
1. Put the event hander in the /home/oracle/eventhandler /metadata/metadata directory and
2. Change the following in the weblogic properties
application_name=OIMMetadata
metadata_from_loc to =/home/oracle/eventhandler/metadata
This will work. -
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 -
OIM 11g R2 Post Event Handler not trigerred
Hi,
I have developed the event handler that request resources on user load into OIM (its a GTC load). I can see that:
1. event handler is registered in "PLUGINS" table,
2. appearing in em
3. see the following under /dms/spy
PostEventRequestResourceCreate company.com oim_server1:14000 active, threads 0 oim_server1
avg, msecs 1.67
completed, ops 3
maxActive, threads 1
maxTime, msecs 3
minTime, msecs 1
time, msecs 5
As per the 11g R2 doc, I have included eventhandlers.xml as part of META-INF folder of my pluign zip -I did not import it into MDS as it was not mentioned in the doc (as it was mentioned in the case of 11g R1).
I have updated the lib of the plugin zip with the custom class jar.
I have few SOPs in my Eventhandler which are not getting printed and hence events are not triggered.
Is there anything that I am missing here?
ThanksHashMap eventDataHashMap = bulkOrchestration.getInterEventData();
Identity[] currentUserStates = (Identity[]) eventDataHashMap.get("CURRENT_USER");
You can loop through the same way you are through the bulkParameters and pull the database from there.
-Kevin -
EBS HRMS Trusted Recon Post-Process Eventhandler
Hi Guys,
I have written a post-process eventhandler for eBs HRMS trusted recon to update user attributes.
It works fine if one record is reconciled from eBs. But when i create 2 or more records, the eventhandler executes for just one record off the two. I understand 11g recons are bulk operations.
Please help on how i can manage to update all records.
CheersHi Sunny,
I have the specified the first name in the resource object --> object reconciliation. I exported RA_EBUSINESSPERSON9.xml and found that first name was missing in the mappings.
I added the mapping and imported the xml. But now when i run the recon the records are not inseted into the table. Infact i had run the weblogicDeleteMetadata.sh befoew importing the xml. But no record was deleted in MDS_PATHS. Now when i run the recon i get following exception.
[2011-06-30T03:17:45.985-07:00] [oim_server1] [ERROR] [IAM-5010000] [oracle.iam.reconciliation.impl] [tid: OIMQuartzScheduler_Worker-3] [userId: xelsysadm] [ecid: 0000J3KC5ivDc_05RzL6id1E2K6P00006C,0] [APP: oim#11.1.1.3.0] [dcid: 8fc5720b3d343e01:-4ea6126c:130d42a55d4:-7ffd-0000000000000f61] Generic Error/Information: {0}[[
oracle.iam.reconciliation.exception.ReconciliationException: Exception occurred while inserting data into table RA_EBUSINESSPERSON9 due to RA_EBUSINESSPERSON9
at oracle.iam.reconciliation.impl.ReconOperationsServiceImpl.reconEvent(ReconOperationsServiceImpl.java:285)
at oracle.iam.reconciliation.impl.ReconOperationsServiceImpl.createReconciliationEvent(ReconOperationsServiceImpl.java:189)
at oracle.iam.reconciliation.impl.ReconOperationsServiceImpl.createReconciliationEvent(ReconOperationsServiceImpl.java:212)
at oracle.iam.reconciliation.impl.ReconOperationsServiceImpl.createReconciliationEvent(ReconOperationsServiceImpl.java:201)
at Thor.API.Operations.tcReconciliationOperationsIntfEJB.createReconciliationEventx(Unknown Source)
at sun.reflect.GeneratedMethodAccessor2032.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
Please let me know what steps i need to take to make this work.
Thanks -
Hi everyone,
I wrote an eventhandler and I deployed this jar and plugin.xml to OIM and deployed eventhandler definition xml to MDS successfully.
http://idmoim.blogspot.com/2011/07/developing-and-deploying-oim-11g-custom_29.html
I can see my xml in MDS_PATHS table.
I can see my post process eventhandler in enterprise manager.
But when I create a user, an error occurs :
<Jun 5, 2013 10:06:18 AM EEST> <Info> <oracle.iam.platform.kernel.impl> <BEA-000000> <Orchestration process moved to failed stage, and the corresponding error is - {0}
oracle.iam.platform.kernel.EventFailedException: Event result is not returned for a synchronous kernel event handler.
at oracle.iam.platform.kernel.impl.OrchProcessData.runPostProcessEvents(OrchProcessData.java:1303)
at oracle.iam.platform.kernel.impl.OrchProcessData.runEvents(OrchProcessData.java:767)
at oracle.iam.platform.kernel.impl.OrchProcessData.executeEvents(OrchProcessData.java:268)
at oracle.iam.platform.kernel.impl.OrchestrationEngineImpl.resumeProcess(OrchestrationEngineImpl.java:817)
at oracle.iam.platform.kernel.impl.OrchestrationEngineImpl.resumeProcess(OrchestrationEngineImpl.java:847)
at oracle.iam.platform.kernel.impl.OrhestrationAsyncTask.execute(OrhestrationAsyncTask.java:129)
at oracle.iam.platform.async.impl.TaskExecutor.executeUnmanagedTask(TaskExecutor.java:99)
at oracle.iam.platform.async.impl.TaskExecutor.execute(TaskExecutor.java:69)
at oracle.iam.platform.async.messaging.MessageReceiver.onMessage(MessageReceiver.java:68)
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.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:149)
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.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 $Proxy387.onMessage(Unknown Source)
at weblogic.ejb.container.internal.MDListener.execute(MDListener.java:583)
at weblogic.ejb.container.internal.MDListener.transactionalOnMessage(MDListener.java:486)
at weblogic.ejb.container.internal.MDListener.onMessage(MDListener.java:389)
at weblogic.jms.client.JMSSession.onMessage(JMSSession.java:4659)
at weblogic.jms.client.JMSSession.execute(JMSSession.java:4345)
at weblogic.jms.client.JMSSession.executeMessage(JMSSession.java:3822)
at weblogic.jms.client.JMSSession.access$000(JMSSession.java:115)
at weblogic.jms.client.JMSSession$UseForRunnable.run(JMSSession.java:5170)
at weblogic.work.SelfTuningWorkManagerImpl$WorkAdapterImpl.run(SelfTuningWorkManagerImpl.java:545)
at weblogic.work.ExecuteThread.execute(ExecuteThread.java:256)
at weblogic.work.ExecuteThread.run(ExecuteThread.java:221)
>
<Jun 5, 2013 10:06:19 AM EEST> <Trace> <oracle.iam.platform.kernel.impl> <BEA-000000> <DefaultActionHandler: compensate - 537305.5839122>
<Jun 5, 2013 10:06:19 AM EEST> <Warning> <oracle.iam.platform.kernel.impl> <BEA-000000> <An error occurred while executing the kernel event handler.
oracle.iam.platform.kernel.EventFailedException
at oracle.iam.reconciliation.impl.ReconFailedHandler$1.processWithoutResult(ReconFailedHandler.java:65)
at oracle.iam.platform.tx.OIMTransactionCallbackWithoutResult.process(OIMTransactionCallbackWithoutResult.java:10)
at oracle.iam.platform.tx.OIMTransactionCallback.doInTransaction(OIMTransactionCallback.java:13)
at oracle.iam.platform.tx.OIMTransactionCallback.doInTransaction(OIMTransactionCallback.java:6)
at org.springframework.transaction.support.TransactionTemplate.execute(TransactionTemplate.java:128)
at oracle.iam.platform.tx.OIMTransactionManager.execute(OIMTransactionManager.java:22)
at oracle.iam.reconciliation.impl.ReconFailedHandler.execute(ReconFailedHandler.java:82)
at oracle.iam.reconciliation.impl.ReconUserLoginHandler.compensate(ReconUserLoginHandler.java:58)
at oracle.iam.platform.kernel.impl.OrchestrationEngineImpl.startCompensation(OrchestrationEngineImpl.java:762)
at oracle.iam.platform.kernel.impl.OrchProcessData.runFinalizationEvents(OrchProcessData.java:1366)
at oracle.iam.platform.kernel.impl.OrchProcessData.runEvents(OrchProcessData.java:780)
at oracle.iam.platform.kernel.impl.OrchProcessData.executeEvents(OrchProcessData.java:268)
at oracle.iam.platform.kernel.impl.OrchestrationEngineImpl.resumeProcess(OrchestrationEngineImpl.java:812)
at oracle.iam.platform.kernel.impl.OrchFailedProcessData.handleCompensate(OrchFailedProcessData.java:146)
at oracle.iam.platform.kernel.impl.OrchFailedProcessData.handleFailedResult(OrchFailedProcessData.java:213)
at oracle.iam.platform.kernel.impl.OrchFailedProcessData.resume(OrchFailedProcessData.java:135)
at oracle.iam.platform.kernel.impl.OrchestrationEngineImpl.failed(OrchestrationEngineImpl.java:783)
at oracle.iam.platform.kernel.impl.OrchProcessData.executeEvents(OrchProcessData.java:270)
at oracle.iam.platform.kernel.impl.OrchestrationEngineImpl.resumeProcess(OrchestrationEngineImpl.java:817)
at oracle.iam.platform.kernel.impl.OrchestrationEngineImpl.resumeProcess(OrchestrationEngineImpl.java:847)
at oracle.iam.platform.kernel.impl.OrhestrationAsyncTask.execute(OrhestrationAsyncTask.java:129)
at oracle.iam.platform.async.impl.TaskExecutor.executeUnmanagedTask(TaskExecutor.java:99)
at oracle.iam.platform.async.impl.TaskExecutor.execute(TaskExecutor.java:69)
at oracle.iam.platform.async.messaging.MessageReceiver.onMessage(MessageReceiver.java:68)
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.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:149)
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.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 $Proxy387.onMessage(Unknown Source)
at weblogic.ejb.container.internal.MDListener.execute(MDListener.java:583)
at weblogic.ejb.container.internal.MDListener.transactionalOnMessage(MDListener.java:486)
at weblogic.ejb.container.internal.MDListener.onMessage(MDListener.java:389)
at weblogic.jms.client.JMSSession.onMessage(JMSSession.java:4659)
at weblogic.jms.client.JMSSession.execute(JMSSession.java:4345)
at weblogic.jms.client.JMSSession.executeMessage(JMSSession.java:3822)
at weblogic.jms.client.JMSSession.access$000(JMSSession.java:115)
at weblogic.jms.client.JMSSession$UseForRunnable.run(JMSSession.java:5170)
at weblogic.work.SelfTuningWorkManagerImpl$WorkAdapterImpl.run(SelfTuningWorkManagerImpl.java:545)
at weblogic.work.ExecuteThread.execute(ExecuteThread.java:256)
at weblogic.work.ExecuteThread.run(ExecuteThread.java:221)
Caused By: java.lang.NullPointerException
at oracle.iam.reconciliation.impl.ReconFailedHandler$1.processWithoutResult(ReconFailedHandler.java:50)
at oracle.iam.platform.tx.OIMTransactionCallbackWithoutResult.process(OIMTransactionCallbackWithoutResult.java:9)
at oracle.iam.platform.tx.OIMTransactionCallback.doInTransaction(OIMTransactionCallback.java:13)
at oracle.iam.platform.tx.OIMTransactionCallback.doInTransaction(OIMTransactionCallback.java:6)
at org.springframework.transaction.support.TransactionTemplate.execute(TransactionTemplate.java:128)
at oracle.iam.platform.tx.OIMTransactionManager.execute(OIMTransactionManager.java:22)
at oracle.iam.reconciliation.impl.ReconFailedHandler.execute(ReconFailedHandler.java:41)
at oracle.iam.reconciliation.impl.ReconUserLoginHandler.compensate(ReconUserLoginHandler.java:58)
at oracle.iam.platform.kernel.impl.OrchestrationEngineImpl.startCompensation(OrchestrationEngineImpl.java:762)
at oracle.iam.platform.kernel.impl.OrchProcessData.runFinalizationEvents(OrchProcessData.java:1365)
at oracle.iam.platform.kernel.impl.OrchProcessData.runEvents(OrchProcessData.java:780)
at oracle.iam.platform.kernel.impl.OrchProcessData.executeEvents(OrchProcessData.java:268)
at oracle.iam.platform.kernel.impl.OrchestrationEngineImpl.resumeProcess(OrchestrationEngineImpl.java:811)
at oracle.iam.platform.kernel.impl.OrchFailedProcessData.handleCompensate(OrchFailedProcessData.java:146)
at oracle.iam.platform.kernel.impl.OrchFailedProcessData.handleFailedResult(OrchFailedProcessData.java:213)
at oracle.iam.platform.kernel.impl.OrchFailedProcessData.resume(OrchFailedProcessData.java:135)
at oracle.iam.platform.kernel.impl.OrchestrationEngineImpl.failed(OrchestrationEngineImpl.java:783)
at oracle.iam.platform.kernel.impl.OrchProcessData.executeEvents(OrchProcessData.java:270)
at oracle.iam.platform.kernel.impl.OrchestrationEngineImpl.resumeProcess(OrchestrationEngineImpl.java:816)
at oracle.iam.platform.kernel.impl.OrchestrationEngineImpl.resumeProcess(OrchestrationEngineImpl.java:847)
at oracle.iam.platform.kernel.impl.OrhestrationAsyncTask.execute(OrhestrationAsyncTask.java:129)
at oracle.iam.platform.async.impl.TaskExecutor.executeUnmanagedTask(TaskExecutor.java:99)
at oracle.iam.platform.async.impl.TaskExecutor.execute(TaskExecutor.java:69)
at oracle.iam.platform.async.messaging.MessageReceiver.onMessage(MessageReceiver.java:68)
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.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 $Proxy387.onMessage(Unknown Source)
at weblogic.ejb.container.internal.MDListener.execute(MDListener.java:583)
at weblogic.ejb.container.internal.MDListener.transactionalOnMessage(MDListener.java:486)
at weblogic.ejb.container.internal.MDListener.onMessage(MDListener.java:388)
at weblogic.jms.client.JMSSession.onMessage(JMSSession.java:4659)
at weblogic.jms.client.JMSSession.execute(JMSSession.java:4345)
at weblogic.jms.client.JMSSession.executeMessage(JMSSession.java:3821)
at weblogic.jms.client.JMSSession.access$000(JMSSession.java:115)
at weblogic.jms.client.JMSSession$UseForRunnable.run(JMSSession.java:5170)
at weblogic.work.SelfTuningWorkManagerImpl$WorkAdapterImpl.run(SelfTuningWorkManagerImpl.java:545)
at weblogic.work.ExecuteThread.execute(ExecuteThread.java:256)
at weblogic.work.ExecuteThread.run(ExecuteThread.java:221)
>
Do you have any idea?
Thanks.
Best Regards.Hi,
Sorry for the late response.Below is the content in my custom Eventhandler.xml file.
<?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/kernel orchestration-handlers.xsd">
<action-handler class="com.test.eventhandler.TestEventHandler" entity-type="User" operation="CREATE" name="TestEventHandler" stage="postprocess" order="1000" sync="TRUE"/>
<action-handler class="com.test.eventhandler.TestEventHandler" entity-type="User" operation="MODIFY" name="TestEventHandler" stage="postprocess" order="1001" sync="TRUE"/>
</eventhandlers>
Please let me know if you need anything else.
Thanks,
Rajesh -
Hi ,
May I know how i can set a default password to all the users who are getting created in OIM 11g.In 9.1.X version,I can write an eventhandler to do this.Can I do the same thing in 11g as well?.Thanks.My apologies for the hijacking....
I have used basically the code in metalink...please see snippet below...i have storage enabled so i dont need to register the handler via ant script.
public EventResult execute(long processId, long eventId,
Orchestration orchestration) {
HashMap<String, Serializable> parameters =
orchestration.getParameters();
System.out.println("GenerateUsernameEventHandler####ParameterList=" +
orchestration.getParameters());
String loginName = getParameterValue(parameters, "User Login");
if (isNullOrEmpty(loginName)) {
String lastname = getParameterValue(parameters, "Last Name");
String employeeNumber =
getParameterValue(parameters, "Employee Number");
if (lastname.length() > 10) {
loginName = (lastname.substring(0, 11) + employeeNumber);
} else {loginName =(lastname + employeeNumber).replaceAll("\\s+$", ""); }
System.out.println("GenerateUsernameEventHandler####username=" + loginName);
orchestration.addParameter("User Login", loginName);;
return new EventResult();
public BulkEventResult execute(long l, long l1,
BulkOrchestration bulkOrchestration) {
throw new RuntimeException("Bulk Orchestration not yet implmented");
Please let me know...Thanks
Maybe you are looking for
-
Application Importing Problem??
Hello ALL, I have created one of the application yesterday on apex.oracle.com, and from yesterday apex workspace upgraded from 3.1.2 to 3.2.0 Now when I am importing the application into the my PC(which is having 3.1.2) I am getting error as:- "1 err
-
I have an X200s that supports 1440 x 900 resolution but my x200 only goes up to 1280 x 800 but appears to use the same chipset. How can I get my x200 up to 1440 x 900 resolution? thanks.
-
Having trouble updating to LogicPro 9.1.5
HI, I've been running version LogicPro 9.0.2 up until today when I decided to update. Upon downloading and trying to run the script, I'm faced with this respone: Currently opperating on: Mac OS X 10.6.8 Any suggestions? Many thanks.
-
I have a MacBook 6,1 and have a number of start up discs. How can I find out which one came with my model?
-
Exposing properties in mxml components
I am tring to figure out how to create a property in a component so that I can set said property in the instance via mxml. For example, I have an Group mxml component with a label and a text field. I want to be able to set the text property of the l