OIM entity adapters vs event handlers

Hi everyone
What is the difference between running code in a pre-insert entity adapters and pre-insert event handler?
I have an adapter that generates and emails random user password but it has some undesirable actions such as running multiple times even though trusted reconciliation has failed. Are event handlers more suitable for this task?
Thanks in advance

event handler:A resource object's provisioning process contains tasks that must be completed automatically. When this occurs, you must assign an event handler or an adapter to the resource object. An event handler is a software routine that provides the processing of this specialized information
adapter :An adapter is a specialized type of event handler that generates Java code, which enables Oracle Identity Manager to communicate and interact with external resources.
Edited by: sk on Sep 9, 2010 2:53 AM

Similar Messages

  • Is there a way to disable OIM entity adapters while doing batch upload ?

    Hi experts,
    I have an adpater to generate UserID from a sequence based on user-type for creation of OIM users thru web UI.
    I have attached this to Users form in data object manager.
    We also have a 3-step batch bulk procedure from CSV file which checks data enterd, generates pword email etc etc and builds CSV file with records to be inserted.
    In the 3rd step, scheduled task runs with CSV file as input and creates users in OIM DB.
    The problem is the entity adapters are also getting triggerd which generate another UserID for each user created.
    This leads to loss in sequence numbers.
    Is there any way of disabling this ?? We need to have both in place, but this conflict should not arise ..
    Please advice.
    Regards,
    Chetan

    Even if i check the value of that UDF and execute the code to generate UserID based on that value,the function still has to return a value right ??Attach entity adapter at Post Insert.
    Create UDF with Default value "CSV".
    Add one more parameter in your java class which is responsible for generating userid.
    You can directly map UDF with Class Parameter.
    if (UDF == CSV){
    Don't Generate
    else {
    Generate with your logic
    And if that function is getting called for every user record in the CSV file, then i cant return a dummy value for it as well .You can use update User API of tcUserOperations

  • OIM11g event handlers - entity type as Role

    Hi ,
    I have a quick question. In OIM11g, can we have event handlers attached at role level.
    When a role is created/deleted in OIM, I need to perform some operations.
    Can someone suggest if its possible?? If yes, what is the entity-type I have to use. I havent seen enough documentation for the same.
    Regards
    Vicky

    check this :
    Re: OIM 11g Role Membership Event Handlers.

  • OIM 11g Entity Adapters

    Hi all,
    I have developed an Entity Adapter using Oracle Identity Manager Design Console which generates different account user ids against a user defined field on Process Form.
    Here I'll provide more details about my scenario.
    SCENARIO*
    a. OIM version: 11.1.1.5.0
    b. Process Form fields (Siebel Process Form):
    - User ID
    - First Name
    - Last Name
    .... [any other out of the box Siebel Connector field]
    - Anonymous Flag (this is a user defined field on Siebel Process Form)
    c. Entity Adapter
    - this adapter has an input variable which is Process Form user defined field "+Anonymous Flag+"
    - if "+Anonymous Flag+" is checked (true) then the adapter sets the return value to "*Anonymous*"
    - else if "+Anonymous Flag+" is uncheked (false) then the adapter sets the return value to "*NOT Anonymous*"
    - the adapter return variable is mapped to Process Form "+User ID+"
    - NOTE: the adapter return values are only for testing pourpose. In the future, the adapter should return two different syntax for User ID.
    For example in case of Anonymous Flag checked, account User ID should be +<surname>+ + "+_+" + +<name>+ + +<random_number>+; while in case of Anonymous Flag unchecked, account User ID should be <+company_name+> + <+random_number+>
    d. Access Policies
    - an access policy "+AP_for_Anonymous+" linked with a role "+ROLE_for_Anonymous+" that sets "+Anonymous Flag+" to checked (true)
    - an access policy "+AP_for_NOT_Anonymous+" linked with a role "+ROLE_for_NON_Anonymous+" that sets "+Anonymous Flag+" to unchecked (false)
    RESULTS*
    Assigning one of roles "+ROLE_for_Anonymous+" or "+ROLE_for_NON_Anonymous+", on Process Form, user defined field "+Anonymous Flag+" is valorized correctly, but Entity Adapter doesn't seems to work. In fact Process Form User ID remains empty.
    QUESTIONS*
    1. Are Entity Adapters associated with accounts supported in OIM 11g? I found a couple of posts that assert that Entity Adapters don't exist in OIM 11g (Event handlers are not getting invoked in oim 11g. or that state Entity Adapters are not supported with the User Form (Issue in adapters mapping in OIM 11g About this I found Entity Adapter Oracle documentation (http://docs.oracle.com/cd/E21764_01/doc.1111/e14309/creadp.htm#BABDHECI)
    2. If Entity Adapters are not applicabile to my scenario, can I use Event Handlers? If yes, what are the entity types that I can specify in event handler metadata xml file? For "event handler metadata xml file" I mean the following
    <action-handler class="com.test.sample" entity-type=????? operation="CREATE" name="Sample" stage="postprocess" order="1007" sync="TRUE"/>3. If Entity Adapters are not applicabile to my scenario, what are the operations that I can specify in event handler metadata xml file?
    Thank for your help,
    Daniele

    Entity Adapter still exist in 11g. Yes, you can use Event Handler .
    But why don't you use Process task/prepopulate adapter for your scenario. Try below
    1. You have some condition on which role is assigned. Based on same condition populate this Anonymous/ Not Anonymous(true/false) at user profile.
    2. write a pre-populate adapter to generate User ID. pass parameters Anonymous flag along with other user profile attribute(first name, last name..etc.) . Here based on flag you will be able to decide User ID.
    3. attach this pre-populate with process form.
    4. already you have two access policy which is fine. just edit both and remove the Anonymous flag value else can leave it as it is.
    Note: for populating Anonymous flag on user profile create a new UDF and try to populate in trusted recon.else write post process event handler for same which will execute before access policy. I mean the order of evethandler should be between 1003 to 1008
    If you have doubt let me know
    --nayan                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               

  • Event Handlers OIM 11g

    Hi Folks ,
    I am very new to OIM 11g , Could you please help me on below :
    I have a OIM system, i want to see what all event handlers are present in OIM . Could you please tell me where can i go and look to find out the event handlers in my
    OIM instance .
    Thanks
    P

    OimWannaBe wrote:
    Thanks i will go through the links .., just one more question :
    In 11g , creating normal process task adapters /scheduled tasks , does it involve all the plugins stuff etc .., or they are like 10 g and plugins comes in to picture when we create event handlers .No, process task adapters are the same old way, just that you need to upload the jar into the db rather than copying them. Other than that everything else needs plugins atleast.
    Other Ques :
    Is it possible to create pre process/pre insert Event handlers in OIM 11g for trusted reconciliation . I heard somewhere that 11g doesnt support pre insert event handlers for trusted recon , is it ?Yep you heard it right, you cannot have event handlers during 11g recon pre process.
    Thanks
    Preeti.Edited by: Bikash Bagaria on Dec 29, 2011 10:39 PM

  • 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.

  • OIM 11g: Event Handlers/Plugins Classpath

    We have a number of custom utility libraries that we use for OIM development which are currently uploaded to the OIM database OIMHOME_JARS table.
    Ideally, we'd like to reference classes from these JARs in our plugins/event handlers. During initial testing, it looks like the plugin code doesn't consider the uploaded JARs and we get a bunch of NoClassDefFoundError errors.
    Is there no way to get the plugin code to be able to use the uploaded utilities? or is the solution to also deploy the utility JARs within the plugin zip file itself (not ideal).
    Thanks.

    Not always true. In most of the cases you would find that it reads the helper jars from within the lib directory inside the plugin but in some special cases it does't behave that simple.
    UploadJars definitely doesn't work. I had to put the jar in the weblogic startup script to set classpath for this to work. This script is *<domain_home\bin\setDomainEnv.cmd\>*
    So its a bit dubious.

  • Event Handlers Invoked Everytime for update on User Profile.(OIM 11g)

    Hi,
    We had Custom event handlers for generating some fields on user form.
    Everytime there is update on user profile on any field, All the event handlers fired, (As seen from logs).
    I want to fire particular event handlers on particular update. Like if first name is updated then only display name event handler should fire. (not all)
    How can i achieve this???

    Here is my code..it is working fine for creation of the user. but when i am updating the user i am getting all null values except the updated one.
    Example if there are 5 fields in that i am updating 2 .apart from those 2 fields the other 3 are coming as null which is making validation to fail.
    package flatfilevalidation;
    import java.io.Serializable;
    import java.util.Date;
    import java.util.HashMap;
    import oracle.iam.platform.context.ContextAware;
    import oracle.iam.platform.kernel.ValidationException;
    import oracle.iam.platform.kernel.ValidationFailedException;
    import oracle.iam.platform.kernel.spi.ValidationHandler;
    import oracle.iam.platform.kernel.vo.BulkOrchestration;
    import oracle.iam.platform.kernel.vo.Orchestration;
    import oracle.iam.identity.usermgmt.api.UserManagerConstants.AttributeName;
    import Thor.API.*;
    import Thor.API.Exceptions.tcAPIException;
    import Thor.API.Operations.*;
    import java.util.Iterator;
    import java.util.List;
    import java.util.Set;
    import oracle.iam.identity.usermgmt.api.UserManagerConstants;
    import oracle.iam.identity.usermgmt.vo.User;
    import oracle.iam.passwordmgmt.utils.MLSUtils;
    import oracle.iam.platform.Platform;
    import oracle.iam.platform.kernel.vo.OrchestrationTarget;
    import oracle.iam.upgrade.changes.jaxb.Entity;
    public class FFValidation implements ValidationHandler {
    int count;
    tcUserOperationsIntf userOperationsService;
    Entity ent = null;
    @Override
    public void validate(long arg0, long arg1, Orchestration orchestration)
    throws ValidationException, ValidationFailedException {
    System.out.println("entered the Validation methode");
    HashMap<String, Serializable> parameters = orchestration.getParameters();
    System.out.println("****************************************************************");
    User user = getUser(orchestration);
    Object passwdOrchParam = parameters.get(UserManagerConstants.AttributeName.EMPLOYEE_NUMBER.getId());
    System.out.println("***************************"+passwdOrchParam+"*************************************");
    System.out.println("orch.getParameters() ============================ " + parameters);
    String ceo="CEO";
    String trainee="Trainee";
    String Emp="EMP";
    String Contractor="Contractor";
    //int Skypecount,Empcount,phonecount;
    String Role= getParameterValue(parameters, "Role");
    String Designation = getParameterValue(parameters, "Designation");
    Long Manager =getManagerid(parameters, "USR_MANAGER_KEY");
    Date EndDate =getDate(parameters, "End Date");
    String EmpNo=getParameterValue(parameters, "Employee Number");
    String skypeid=getParameterValue(parameters, "SkypeId");
    String Mobile=getParameterValue(parameters, "Mobile");
    String skypeidDb="usr_udf_skypeid";
    String MobileDb="usr_mobile";
    String EmpDB="usr_emp_no";
    //validating SkypeID
    uniquevalidate(skypeid,skypeidDb);
    //Validating Employee Number
    uniquevalidate(EmpNo,EmpDB);
    //Validating Employee Number
    uniquevalidate(Mobile,MobileDb);
    //CEO Validation
    if(Designation.equals(ceo)){
    if(Manager!=null){
    String msg="ManagerID not required";
    System.out.println("ManagerID not required ");
    throw new ValidationFailedException(msg);
    //Cotractor Validation
    if(Role.equals(Contractor) && Designation.equals(ceo)) {
    System.out.println(Designation.equals(ceo));
    String msg="Contractor Cannot be CEO";
    System.out.println("Contractor Cannot be CEO");
    throw new ValidationFailedException(msg);
    if(Role.equals(Contractor)&& EndDate==null) {
    String msg="Contractor Endate is not provided";
    System.out.println("Contractor Endate is not provided");
    throw new ValidationFailedException(msg);
    //Trainee Validation
    if(Role.equals(trainee) && Designation.equals(ceo)) {
    System.out.println(Designation.equals(ceo));
    if(Designation.equals(ceo)) {
    String msg="Trainee Cannot be CEO";
    System.out.println("Trainee Cannot be CEO");
    throw new ValidationFailedException(msg);
    //manager validation
    if(!Designation.equals(ceo)){
    if(Manager==null){
    String msg="ManagerID Can not be Null";
    System.out.println("ManagerID Can not be Null");
    throw new ValidationFailedException(msg);
    //Employee Validation
    if(Role.equals(Emp)){
    if(EndDate!=null) {
    String msg="Employee End Date Should be empty";
    System.out.println("Employee End Date Should be empty");
    throw new ValidationFailedException(msg);
    @Override
    public void validate(long arg0, long arg1, BulkOrchestration arg2)
    throws ValidationException, ValidationFailedException {
    System.out.println("**************Inside BulkOrchestration****************");
    HashMap<String, Serializable> parameters = arg2.getParameters();
    System.out.println("orch.getParameters() ============================ " + parameters);
    @Override
    public void initialize(HashMap<String, String> arg0) {
    private String getParameterValue(HashMap<String, Serializable> parameters,
    String key) {
    String value = (parameters.get(key) instanceof ContextAware) ? (String) ((ContextAware) parameters
    .get(key)).getObjectValue()
    : (String) parameters.get(key);
    System.out.println("VALUE::" + value);
    return value;
    private boolean isNullOrEmpty(String str) {
    return str == null || str.isEmpty();
    private Long getManagerid(HashMap<String, Serializable> parameters,
    String key) {
    System.out.println(parameters);
    Long managerLogin = (parameters.get(AttributeName.MANAGER_KEY.getId()) instanceof ContextAware)
    ? (Long) ((ContextAware) parameters.get(AttributeName.MANAGER_KEY.getId())).getObjectValue()
    : (Long) parameters.get(AttributeName.MANAGER_KEY.getId());
    System.out.println("managerLogin "+managerLogin);
    return managerLogin;
    private Date getDate(HashMap<String, Serializable> parameters,
    String key) {
    System.out.println("date "+ parameters);
    Date date = (parameters.get(AttributeName.ACCOUNT_END_DATE.getId()) instanceof ContextAware)
    ? (Date) ((ContextAware) parameters.get(AttributeName.ACCOUNT_END_DATE.getId())).getObjectValue()
    : (Date) parameters.get(AttributeName.ACCOUNT_END_DATE.getId());
    System.out.println("EndDate "+date);
    return date;
    void uniquevalidate(String idvalue,String idDbvalue){
    userOperationsService = Platform.getService(tcUserOperationsIntf.class);
    HashMap<String, String> UMAttr = new HashMap<String, String>();
    String msg="Entered Value is not unique" + idvalue;
    System.out.println("idvalue="+ idvalue);
    System.out.println("idDbvalue="+ idDbvalue);
    if(idvalue!=null){
    try {
    System.out.println("in try block");
    UMAttr.put(idDbvalue, idvalue);
    tcResultSet USAttr = userOperationsService.findUsers(UMAttr);
    System.out.println(USAttr);
    System.out.println("User set count ========================= " + USAttr.getRowCount());
    count=USAttr.getRowCount();
    if(count>0)
    throw new ValidationFailedException(msg);
    catch (tcAPIException e) {
    e.printStackTrace();
    private User getUser(Orchestration orchestration)
    if(orchestration.getTarget() != null && orchestration.getTarget().getEntityId() != null)
    return new User(orchestration.getTarget().getEntityId());
    HashMap orchParams = orchestration.getParameters();
    User user = new User(null);
    Set orchParamNames = orchParams.keySet();
    String orchParamName;
    for(Iterator i$ = orchParamNames.iterator(); i$.hasNext(); user.setAttribute(orchParamName, orchParams.get(orchParamName)))
    orchParamName = (String)i$.next();
    MLSUtils.setStringValuesForMLSAttributes(user);
    System.out.println("+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++"+user);
    return user;
    }

  • OIM11 event handlers: How to avoid firing the same code in both pre+post

    Hi everyone,
    I have a question around event handlers. My experiments so far have gleaned the following:
    Manual updates of user form in admin interface -> Fires: pre-insert + Post-insert
    Reconciliation trusted creates -> Fires: Post-insert
    Reconciliation trusted updates -> Fires: pre-insert + Post-insert
    Now I have various handlers that trigger to update fields coming in from trusted recon. Formatting telephone numbers, setting custom user attributes.. etc. I am using the same code in both the post and pre handlers as wherever the update comes from it needs to be processed in the same way. Problem is if a handler fires twice I can't be sure exactly how the system is going to behave (updating the same field again etc), never mind it is unneeded processing.
    We have to keep the pre handlers because otherwise changes completed via the admin interface won't be seen until you refresh.
    Can anyone please advice how to go about ensuring a handler is only fired once? i.e. if pre fires don't fire post. Have I missed something key here?
    Edit: I know I've worded this badly. They will always fire as that's how OIM behaves, what I want is some way to work out in the underlying code if a field has already been modified in pre process... or something like it.
    Thanks,
    Wayne.
    Edited by: wblacklock on 27-Feb-2012 05:38

    I am sorry but I am not agree with your design.
    However there is no chance to avoid this according to my knowledge. As both class has separate thread under different process, so there is no way to implement thread lock on entity operation.
    Alternate way  to acheive your requirement:
    You can have hidden UDFs. Update hidden UDFs in prepost handler with some data (hardcoded).
    "You can have the value this hidden filed like :- "NAME_UPDATE|EMAIL_UPDATED|MANGER_UPDATE"
    Now in Post - Process handler check the value of hidden UDF.
    Get the value of hidden UDF, tokenize with String Tokenizer. Check which filed is not updated in Pre handler.
    *If it is already updated - do not update.* else Update.
    Thanks,
    Kuldeep

  • Some Doubts about Event Handlers

    Hi,
    I had some doubts on Event handlers in OIM 11.1.1.5 ........
    1) I want to use the same event handler for both Post Insert and Post update task.... Can I use the same event handler for that... If yes then how can I do that....
    2) Can I create the single Plugin.xml class and add the all jar files in single say lib folder and zip them all together.. if yes then What changes I need to do?? Need to add only the plugin tags for different class files in plugin.xml file? OR need to do some thing extra also...?
    3) If i need to change any thing in any class of event handler.. Is there need to unregister the plugin and again register...??
    If yes.... Is there need to delete the event handler using the weblogicDeleteMetadata command???
    4) As we Import the event handler from path like event handler/db/... If we add all the evetn handler.xml files in that folder..... As During Import weblogicImportMetadata recursively call all the files in that folder.... Now if i need to change anything in any one of event handler class... then if we import from the same folder event handler/db/... What will it do............Create the duplicate copy of all the eventhandlers????? OR i need to add only those Eventhandler.xml files for those class files i made the changes.....
    5) As I need to create email on user creation during recon and also email id get updated as first name or last name updates..... What I had to use in Event handler.xml (entity-type="User" operation="CREATE") or Some thing else....
    Help me clarify my doubts...

    Anil Bansal wrote:
    Hi,
    I had some doubts on Event handlers in OIM 11.1.1.5 ........
    1) I want to use the same event handler for both Post Insert and Post update task.... Can I use the same event handler for that... If yes then how can I do that....Yes, you can have the same. Just have two event handlers in the same MDS file and the operation should be CREATE for one while MODIFY for another. The class and version and name remains the same.
    2) Can I create the single Plugin.xml class and add the all jar files in single say lib folder and zip them all together.. if yes then What changes I need to do?? Need to add only the plugin tags for different class files in plugin.xml file? OR need to do some thing extra also...?Yes, in the single plugin xml you can define multiple eventhandlers and the jar will contain multiple event handlers class.
    3) If i need to change any thing in any class of event handler.. Is there need to unregister the plugin and again register...??
    If yes.... Is there need to delete the event handler using the weblogicDeleteMetadata command???No, if you are just changing the class, then you need to update the class only in the plugin. For this, first delete plugin and then update plugin and then purgecache.
    4) As we Import the event handler from path like event handler/db/... If we add all the evetn handler.xml files in that folder..... As During Import weblogicImportMetadata recursively call all the files in that folder.... Now if i need to change anything in any one of event handler class... then if we import from the same folder event handler/db/... What will it do............Create the duplicate copy of all the eventhandlers????? OR i need to add only those Eventhandler.xml files for those class files i made the changes.....If won't create duplicate copies but would overwrite the ones which are there in MDS at the same location. So effectively, if the xml is not changing you should not be worried about overwritting.
    5) As I need to create email on user creation during recon and also email id get updated as first name or last name updates..... What I had to use in Event handler.xml (entity-type="User" operation="CREATE") or Some thing else....For recon and event handler, you will need to have post process event handler on User CREATE and UPDATE. On Create construct the email address and populate it in the email field. For update check if the firstname/lastname are changing and if yes, then update the email id on the profile.
    >
    Help me clarify my doubts...

  • OIM11g - Event handlers - picking up external libraries

    Hi all,
    I seem to be running into an issue with event handlers. I have to refer to some other custom libraries within them and they don't seem to be accessible by the event handlers.
    I've put the libraries in JavaTasks and ThirdParty but I'm still getting NoClassDef found and in the worst case the Orcherstration engine seems to break preventing me from even logging into OIM and meaning I have to remove the event handler metadata manually.
    Does anyone know how the event handler classpath works and where I can put libs such that event handlers can use them?
    Thanks.
    Wayne.

    From the WebLogic Administrator screen, you can go to the servers for your OIM Server, or SOA Server, whichever will be accessing the jar. Under the server start tab, add in the path in the classpath section for your jar file. User forward slashes. Now when your server starts, it will load those jar files and they should be accessible.
    -Kevin

  • Validation Event Handlers

    Hi
    I have a requirement of creating a user identity in OIM 11gR2 only when few set of attributes say FirstName, MiddleName and Lastname. If this set of attributes are not exist in OIM then only we have to create the user otherwise not.
    So for this purpose we are using Validation Event Handlers, So whenever i am creating a user from OIM console the validation is working but with GTC reconciliation its not working.
    I have implemented both the validate(long eventID, long processID, BulkOrchestration orchestration) and validate(long eventID, long processID, Orchestration orchestration) methods under that event handler.
    So is it a expected behaviour that validation event handler will not work with Recon?
    Can somebody also suggest, what else we can use to satisy this requirement.
    Thanks in Advance

    In this case the values can be null also..So i dont think we can use Required attribute option.
    Let me know if you have some diffrent thought on this?

  • OIM 11g Pre Process event handler

    Hi All,
    I had built a pre process event handler to generate userid and it was working fine. But i had slight modifications in the code. When i unregistered the old event handler and registered a new one, oim was still picking the old event handler. So in order to bring the code changes into effect, i restarted the managed server after which the event handlers are not getting triggered(even the old one).
    I deleted all the records corresponding to the custom event handlers from MDS_PATHS,PLUGINS,LATEST_PLUGIN AND PLUGIN_ZIP tables and registered the handler again and also imported the event handler xml file. But still the plugin is not triggered.
    Please help.
    Thanks,
    Bhavana
    Edited by: 858491 on Jul 21, 2011 5:14 AM

    My 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

  • Do I need to worry about these event handlers in a grid from a memory leak perspective?

    I'm pretty new to Flex and coudn't figure out how to add event handlers to inline item renderer components from the containing file script so I attached the listnerers simply as part of the components themselves (eg <mx:Checkbox ... chnage="outerDocument.doSomething(event)"../>):
    <mx:DataGrid id="targetsGrid" width="100%" height="100%" doubleClickEnabled="true" styleName="itemCell"
          headerStyleName="headerRow" dataProvider="{targets}"
          rowHeight="19" fontSize="11" paddingBottom="0" paddingTop="1">
         <mx:columns>
         <mx:DataGridColumn width="78" dataField="@isSelected" headerText="">
         <mx:itemRenderer>
              <mx:Component>
                   <mx:HBox width="100%" height="100%" horizontalAlign="center">
                        <mx:CheckBox id="targetCheckBox" selected="{data.@isSelected == 'true'}"
                             change="outerDocument.checkChangeHandler(event);"/>
                        <mx:Image horizontalAlign="center" toolTip="Delete" source="@Embed('/assets/icons/delete.png')" useHandCursor="true" buttonMode="true"
                             click="outerDocument.deleteHandler(event);"/>
                        <mx:Image id="editButton" horizontalAlign="center" toolTip="Edit" source="@Embed('/assets/icons/edit-icon.png')" useHandCursor="true" buttonMode="true"
                             click="outerDocument.editHandler(event);"/>
                   </mx:HBox>
              </mx:Component>
         </mx:itemRenderer>
         </mx:DataGridColumn>
              <mx:DataGridColumn id="Name" dataField="@collectionDesc" headerText="Name" itemRenderer="com.foobar.integrated.media.ui.component.CellStyleForTargetName"/>
              <mx:DataGridColumn id="Created" width="140" dataField="@createDateTime" headerText="Created"  labelFunction="UiHelper.gridDateFormat" />
         </mx:columns>
    </mx:DataGrid>
    This grid is part of a view that will get destroyed and recreated potentially many times during a user's session within the application (there's a large dynamic nature to the app and views are created at run-time.) By destroyed I mean that the view that holds the above datagrid will no longer be referenced under certain circumstances and an entire new view object is created (meaning the old datagrid is no longer refernced and a new one is created.)
    I heard you should clean up event handlers when they are no longer used, and I know at what point the view is destroyed, but I don't know how to clean up the event handlers added to the item renderer components? Is it something that the Flex garbage collector will handle efficiently?
    Also, on a somewhat related note, how could I push the item renderer to an external component since in my event handlers for the item renderer buttons I need a reference to the datagrid.selectedIndex which, as an external item renderer I wouldn't have access to this containing grid?

    No. You don't need explicit cleanup in this case: if your outerDocument is going away, you have nothing to worry about. The event handler leak can happen in sort of the reverse situation: suppose you have a long-lived MyView that contains a custom DataGrid like the one below. Now suppose that MyView frequently destroys and re-creates the grid. And suppose that on its creationComplete event, the grid registers a listener for outerDocument's (MyView's) enterFrame Event. Unless you explicitly remove this listener, MyView will still have a reference to it even after the grid that registered the listener is destroyed (and garbage collected).
    This is a pretty contrived example, but it sort of illustrates the potential for leaks: a certain component is elligible for garbage collection, but some longer-lived component holds a reference to it (or part of it, such as a listener function). If the longer-lived component is elligible for GC as well, you don't really need to worry about proper cleanup. That's what you're paying the GC processor cycles for.

  • Unable to Create Event handlers , Plugs

    Hello everyone,
    We've just moved to a new development environment and had our existing WebUI enhancements transported from an old one (which was CRM 7.0 EHP1). The new system was also already in EHP1.
    The problem is we couldn't create any new Event Handlers and Inbound and Outbound plugs in an enhanced component via BSP_WD_CMPWB. Even though the component has already been enhanced, the system keeps on asking for an Access Key to edit SAP Standard objects and behaving as though the component hasn't been enhanced at all.
    Has anyone encountered this before? Any SAP OSS Note to fix the problem?

    Hello,
    Thanks for your replies, the issue has been solved. When the enhancements were transported into the new system the database entries used by the enhancement wizards weren't included into the transport. Basically we had to update the ff tables:
    BSP_WD_GEN -> Table with generated classes
    BSP_WD_EXT_HIST -> Mapping Table source controller class to  Z controller class, and source context class to Z context class

Maybe you are looking for