Skip to Main Content

Security Software

Announcement

For appeals, questions and feedback about Oracle Forums, please email oracle-forums-moderators_us@oracle.com. Technical questions should be asked in the appropriate category. Thank you!

Post Process custom Event Handler not Working(change Display name when change in first,middle or las

User_JU665Apr 19 2020 — edited Apr 23 2020

I have implemented a post-process event handler for updating the display name when the user modifies their first, middle or last name. created and registered successfully but when I am modifying the user detail display name not updated. below are the code please help me out.

package abc;

import java.io.Serializable;

import java.util.HashMap;

import java.util.logging.Level;

import java.util.logging.Logger;

import oim.client.config.Configration;

import oracle.core.ojdl.logging.ODLLogger;

import oracle.iam.identity.usermgmt.vo.User;

import oracle.iam.platform.context.ContextAware;

import oracle.iam.platform.kernel.spi.PostProcessHandler;

import oracle.iam.platform.kernel.vo.AbstractGenericOrchestration;

import oracle.iam.platform.kernel.vo.BulkEventResult;

import oracle.iam.platform.kernel.vo.BulkOrchestration;

import oracle.iam.platform.kernel.vo.EventResult;

import oracle.iam.platform.kernel.vo.Orchestration;

/**

* Event Handler Type: Post-Process

* Triggers: Whenever a first name, last name, middle name is changed. Operation Type is defined

* in the meta-data XML file for this event handler.

* Action: Set the new display name when user's first name,last name, middle name changed.

*

*

*/

public class ModifyDisplayNameInProfile implements PostProcessHandler

{

    public static final Logger logger = ODLLogger.getLogger("CUSTOM.COMMON.EVENTHANDLERS");

  

    static private String OIM_URL = Configration.OIM_URL;

    @Override

    public EventResult execute(long processId, long eventId, Orchestration orchestration)

    {

        logger.info("================Start ModifyDisplayNameInProfile execute method: =====================");

        try

        {

            logger.info(String.format("Start execute() with ProcessId: %s and EventId %s",processId, eventId));

            HashMap<String, Serializable> newParameters = orchestration.getParameters(); //contains only the new values

            HashMap<String, Serializable> interParameters = orchestration.getInterEventData(); //contains old and new values of user

            //logger.info(String.format("Inter Parameters: %s ", interParameters));

            logger.info(String.format("New Parameters: %s ", newParameters));

            String operation = orchestration.getOperation();

            logger.info("================OPERATION IS ====================="+operation);

            //Check if the user's password is being modified

            //If it is, it should be in the newParameters object

            if((newParameters.get("First Name") != null || newParameters.get("Last Name") != null || newParameters.get("Middle Name") != null) && operation.equalsIgnoreCase("modify")) {

                //User currentUserState = (User) interParameters.get("CURRENT_USER"); //Get target user's current (old) info state

                User newUserState = (User) interParameters.get("NEW_USER_STATE"); //Get target user's current (new) info state

                logger.info(String.format("Inter Parameters New User State: %s ", newUserState));

                String userKey = orchestration.getTarget().getEntityId(); //Get the target user's key

                //String userLogin = currentUserState.getLogin(); //Get target user's login

          

                String oldFirstName = (newUserState.getAttribute("First Name") instanceof ContextAware)

                    ? (String) ((ContextAware) newUserState.getAttribute("First Name")).getObjectValue()

                    : (String) newUserState.getAttribute("First Name");

              

                String oldMiddleName = (newUserState.getAttribute("Middle Name") instanceof ContextAware)

                    ? (String) ((ContextAware) newUserState.getAttribute("Middle Name")).getObjectValue()

                    : (String) newUserState.getAttribute("Middle Name");

              

                String oldLastName = (newUserState.getAttribute("Last Name") instanceof ContextAware)

                    ? (String) ((ContextAware) newUserState.getAttribute("Last Name")).getObjectValue()

                    : (String) newUserState.getAttribute("Last Name");

              

                logger.info(String.format("New First Name: %s , New Middle Name %s , New Last Name %s",oldFirstName, oldMiddleName, oldLastName));

              

                //String newFirstName = getParamaterValue(newParameters, "First Name");

                //String newMiddleName = getParamaterValue(newParameters, "Middle Name");

                //String newLastName = getParamaterValue(newParameters, "Last Name");

                //logger.info(String.format("New First Name: %s and New Last Name %s",newFirstName, newLastName));

              

                //String dfname = (newFirstName != null)?newFirstName:oldFirstName;

                //String dmname = (newMiddleName != null)?newMiddleName:oldMiddleName;

                //if(!(dmname != null))

                //    dmname = "";

                //String dlname = (newLastName != null)?newLastName:oldLastName;

              

                String newDisplayName = "";

                String dfname = oldFirstName;

                String dlname = oldLastName;

                String dmname = oldMiddleName;

                if((dmname == null)){

                    newDisplayName = dfname +" "+ dlname;

                } else {

                    newDisplayName = dfname+ " "+ dmname +" "+ dlname;

                }

                   // dmname = "";

              

              

                logger.info(String.format("New Display Name: %s",newDisplayName));

              

              

              

                /*UserManager usrOps = Platform.getService(UserManager.class); //Get services from UserManager class

                HashMap modParams = new HashMap(); //contains the attaributes to modify

                modParams.put("Display Name", newDisplayName); //set Display Name attribute value to Display Name

                User modUser = new User(userKey, modParams);

                usrOps.modify("usr_key", userKey, modUser); //modify the target user

                logger.info("Display name of user is modified sucessfully.");*/

              

              

            }

          

          

          

        }

       /* catch (ValidationFailedException ex) {logger.log(Level.SEVERE,"",ex);}

        catch (AccessDeniedException ex) {logger.log(Level.SEVERE,"",ex);}

        catch (UserModifyException ex) {logger.log(Level.SEVERE,"",ex);}

        catch (NoSuchUserException ex) {logger.log(Level.SEVERE,"",ex);}

        catch (SearchKeyNotUniqueException ex) {logger.log(Level.SEVERE,"",ex);}

        catch (tcCryptoException ex) {logger.log(Level.SEVERE,"",ex);}*/

        catch (Exception ex) {logger.log(Level.SEVERE,"",ex);}

        return new EventResult();

    }

    /**

     * ContextAware object is obtained when the actor is a regular user.

     * If the actor is an administrator, the exact value of the attribute is obtained.

     * @param parameters    parameters from the orchestration object

     * @param key   name of User Attribute in OIM Profile or column in USR table

     * @return value of the corresponding key in parameters

     */

    private String getParamaterValue(HashMap<String, Serializable> parameters, String key)

    {

        String value = (parameters.get(key) instanceof ContextAware)

        ? (String) ((ContextAware) parameters.get(key)).getObjectValue()

        : (String) parameters.get(key);

        return value;

    }

    @Override

    public BulkEventResult execute(long l, long l1, BulkOrchestration bo)

    {

        return null;

    }

    @Override

    public void compensate(long l, long l1, AbstractGenericOrchestration ago)

    {

    }

    @Override

    public boolean cancel(long l, long l1, AbstractGenericOrchestration ago)

    {

        return false;

    }

    @Override

    public void initialize(HashMap<String, String> hm)

    {

    }

  

}

Process that i have followed-:

created a jar file.

put in lib folder

created plugin.xml file where define about operation and class,

created zip containing above two

put a zip in plugin_utility folder and run register command

Event handler registered successfully with OIM, but not working please help me out .

@Kevin Pinsky @"Srinath Menon-Oracle" @"vanantha komara-Oracle"

Comments
Post Details
Added on Apr 19 2020
14 comments
257 views