Hi
In my example I am setting the middle Name if the user doesn't provide any middle Name in the OIM Form in the CREATE Operation. Please follow steps to build the Custom Pre-Process Event Handlers in OIM 11g.
Environment Setup
The following jar files are required to compile the Custom Scheduler Task Java file. They are
1) wlfullclient.jar
2) wlclient.jar
Generating wlfullclient.jar
Go to the WL_Home/server/lib directory and Run the following command
java -jar wljarbuilder.jar
It will generate the wlfullclient.jar file and set the class path for the wlfullclient.jar and wlclient.jar file.
Develop the Java Class
package test.eventhandlers;
import java.io.Serializable;
import java.util.HashMap;
import com.thortech.util.logging.Logger;
import oracle.iam.platform.context.ContextAware;
import oracle.iam.platform.kernel.spi.PreProcessHandler;
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;
public class NamePreProcessEventHandlers implements PreProcessHandler{
private Logger logger=Logger.getLogger("logger Handel Name");
private String methodName="";
public NamePreProcessEventHandlers()
{
debug("Invoking NamePreProcessEventHandlers");
}
@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
}
// Write Your implementation.
public EventResult execute(long processId, long eventId, Orchestration orchestration) {
// TODO Auto-generated method stub
this.methodName="execute";
// this method getting the Request parameters from the OIM form
HashMap parameters=orchestration.getParameters();
debug("Parameters "+parameters);
String operation=orchestration.getOperation();
debug("Pre Process Operation "+operation);
if(operation != null && operation.equalsIgnoreCase("create"))
{
String firstName= getParamaterValue(parameters,"First Name")
if(firstName != null && !firstName.trim().isEmpty())
{
if(!parameters.containsKey("Middle Name"))
{
orchestration.addParameter("Middle Name", firstName.substring(0,1));
}
}
}
return new EventResult();
}
@Override
public BulkEventResult execute(long arg0, long arg1, BulkOrchestration arg2) {
// TODO Auto-generated method stub
return null;
}
@Override
public void initialize(HashMap arg0) {
// TODO Auto-generated method stub
}
/**
* Getting the Value from the Request Parameters
*/
private String getParamaterValue(HashMap parameters,
String key) {
String value = (parameters.get(key) instanceof ContextAware)
? (String) ((ContextAware) parameters.get(key)).getObjectValue()
: (String) parameters.get(key);
return value;
}
private void debug(String message)
{
logger.debug(this.getClass().getName()+" : "+methodName+" : "+message);
}
}
Make Jar File
Jar cvf NamePreProcessEventHandlers.jar *
Develop the Custom Event Handler Config File
<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="test.eventhandlers.NamePreProcessEventHandlers" entity-type="User" operation="CREATE" name="NamePreProcessEventHandlers" stage="preprocess" order="FIRST" sync="TRUE"/>
</eventhandlers>
Save this file as EventHandlers.xml and the directory structure of the file is /oracle/home/eventhandlers/metadata/EventHandlers.xml.
XML Name space is very important when you deploying custom event handler in MDS Schema. If you give wrong name space in eventhandler tag and it will deploy in the OIMMetadata MDS Schema But OIM won't recognised as a Event Handler. If you give the correct Name space and it will loaded into the OIM and evaluated the preprocess in the create operation.
Develop the plugin.xml file
<oimplugins>
<plugins pluginpoint="oracle.iam.platform.kernel.spi.EventHandler">
<plugin pluginclass="test.eventhandlers.NamePreProcessEventHandlers" version="1.0" name=" NamePreProcessEventHandlers"/>
</plugins>
</oimplugins>
Making the EventHandler.zip File
plugin.xml file
lib/NamePreProcessEventHandlers.jar
Regsiter the Plugin File into the OIM Server
ant -f pluginregistration.xml register
It will ask the following details after running the above command
1) OIM Admin User Name : xelsysadm
2) OIM Admin Password : xelsysadm password
3) OIM URL : t3://localhost:14000
4) Plugin Zip File absolute path.
It will deploy the OIM Plugin without any issue. Some Times It will throw error if the class file is not found in the jar file.
Importing the Custom Event into MDS Schema
Go to the OIM_HOME/bin directory and modify the following properties in the weblogic.properties file
wls_servername=oim_server1
application_name=OIMMetadata
metadata_from_loc=/home/oracle/eventhandlers
Event Handler Config file location as /home/oracle/eventhandlers/metadata/EventHandlers.xml
Run the weblogicImportmetada.sh file and will ask the following details
1) Weblogic Admin User Name : weblogic
2) Weblogic Admin Password : weblogic admin password
3) weblogic Admin URL : t3://localhost:7001
After running the above command the custom scheduler task will be imported into the MDS Schema.
Clear the OIM Cache
Run the PurgeCache.sh All file and it will ask the following details.
1) OIM Admin User Name : xelsysadm
2) OIM Admin Password : xelsysadm password
3) OIM URL : t3://localhost:14000
After running the above command and it will clear the OIM cache
Restart the OIM Server
Go to the WL_DOMAIN_HOME/bin direcory and run stopManagedServer.sh oim_server1 command and it will stop the oim managed server.
Run the startManagedServer.sh oim_server1 and it will start the OIM Managed Server.
Testing The Event Handlers
Login to the OIM Admin Console >> Create User >> Enter First Name,Last Name, User Id, Password, Organization Name, User Type and Click Save Button. It will display the Log Message
Trouble Shooting
Problem : Event Handler Not Loaded in the OIM Server
Cause : Event Handler Name space is missing
Solution : Check the Scheduler name space in the scheduer task. The name space always 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"
Problem : The Event Handler implemented class file not found while deploying the plugin.zip file.
Cause : The class file is missing in the zip file.
Solution : Please add the jar file into the lib directory and make the zip file again and regsiter the plugin.
Reference Document : Oracle Identity Manager Developer Guide
In my example I am setting the middle Name if the user doesn't provide any middle Name in the OIM Form in the CREATE Operation. Please follow steps to build the Custom Pre-Process Event Handlers in OIM 11g.
Environment Setup
The following jar files are required to compile the Custom Scheduler Task Java file. They are
1) wlfullclient.jar
2) wlclient.jar
Generating wlfullclient.jar
Go to the WL_Home/server/lib directory and Run the following command
java -jar wljarbuilder.jar
It will generate the wlfullclient.jar file and set the class path for the wlfullclient.jar and wlclient.jar file.
Develop the Java Class
package test.eventhandlers;
import java.io.Serializable;
import java.util.HashMap;
import com.thortech.util.logging.Logger;
import oracle.iam.platform.context.ContextAware;
import oracle.iam.platform.kernel.spi.PreProcessHandler;
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;
public class NamePreProcessEventHandlers implements PreProcessHandler{
private Logger logger=Logger.getLogger("logger Handel Name");
private String methodName="";
public NamePreProcessEventHandlers()
{
debug("Invoking NamePreProcessEventHandlers");
}
@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
}
// Write Your implementation.
public EventResult execute(long processId, long eventId, Orchestration orchestration) {
// TODO Auto-generated method stub
this.methodName="execute";
// this method getting the Request parameters from the OIM form
HashMap
debug("Parameters "+parameters);
String operation=orchestration.getOperation();
debug("Pre Process Operation "+operation);
if(operation != null && operation.equalsIgnoreCase("create"))
{
String firstName= getParamaterValue(parameters,"First Name")
if(firstName != null && !firstName.trim().isEmpty())
{
if(!parameters.containsKey("Middle Name"))
{
orchestration.addParameter("Middle Name", firstName.substring(0,1));
}
}
}
return new EventResult();
}
@Override
public BulkEventResult execute(long arg0, long arg1, BulkOrchestration arg2) {
// TODO Auto-generated method stub
return null;
}
@Override
public void initialize(HashMap
// TODO Auto-generated method stub
}
/**
* Getting the Value from the Request Parameters
*/
private String getParamaterValue(HashMap
String key) {
String value = (parameters.get(key) instanceof ContextAware)
? (String) ((ContextAware) parameters.get(key)).getObjectValue()
: (String) parameters.get(key);
return value;
}
private void debug(String message)
{
logger.debug(this.getClass().getName()+" : "+methodName+" : "+message);
}
}
Make Jar File
Jar cvf NamePreProcessEventHandlers.jar *
Develop the Custom Event Handler Config File
<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="test.eventhandlers.NamePreProcessEventHandlers" entity-type="User" operation="CREATE" name="NamePreProcessEventHandlers" stage="preprocess" order="FIRST" sync="TRUE"/>
</eventhandlers>
Save this file as EventHandlers.xml and the directory structure of the file is /oracle/home/eventhandlers/metadata/EventHandlers.xml.
XML Name space is very important when you deploying custom event handler in MDS Schema. If you give wrong name space in eventhandler tag and it will deploy in the OIMMetadata MDS Schema But OIM won't recognised as a Event Handler. If you give the correct Name space and it will loaded into the OIM and evaluated the preprocess in the create operation.
Develop the plugin.xml file
<oimplugins>
<plugins pluginpoint="oracle.iam.platform.kernel.spi.EventHandler">
<plugin pluginclass="test.eventhandlers.NamePreProcessEventHandlers" version="1.0" name="
</plugins>
</oimplugins>
Making the EventHandler.zip File
plugin.xml file
lib/NamePreProcessEventHandlers.jar
Regsiter the Plugin File into the OIM Server
ant -f pluginregistration.xml register
It will ask the following details after running the above command
1) OIM Admin User Name : xelsysadm
2) OIM Admin Password : xelsysadm password
3) OIM URL : t3://localhost:14000
4) Plugin Zip File absolute path.
It will deploy the OIM Plugin without any issue. Some Times It will throw error if the class file is not found in the jar file.
Importing the Custom Event into MDS Schema
Go to the OIM_HOME/bin directory and modify the following properties in the weblogic.properties file
wls_servername=oim_server1
application_name=OIMMetadata
metadata_from_loc=/home/oracle/eventhandlers
Event Handler Config file location as /home/oracle/eventhandlers/metadata/EventHandlers.xml
Run the weblogicImportmetada.sh file and will ask the following details
1) Weblogic Admin User Name : weblogic
2) Weblogic Admin Password : weblogic admin password
3) weblogic Admin URL : t3://localhost:7001
After running the above command the custom scheduler task will be imported into the MDS Schema.
Clear the OIM Cache
Run the PurgeCache.sh All file and it will ask the following details.
1) OIM Admin User Name : xelsysadm
2) OIM Admin Password : xelsysadm password
3) OIM URL : t3://localhost:14000
After running the above command and it will clear the OIM cache
Restart the OIM Server
Go to the WL_DOMAIN_HOME/bin direcory and run stopManagedServer.sh oim_server1 command and it will stop the oim managed server.
Run the startManagedServer.sh oim_server1 and it will start the OIM Managed Server.
Testing The Event Handlers
Login to the OIM Admin Console >> Create User >> Enter First Name,Last Name, User Id, Password, Organization Name, User Type and Click Save Button. It will display the Log Message
Trouble Shooting
Problem : Event Handler Not Loaded in the OIM Server
Cause : Event Handler Name space is missing
Solution : Check the Scheduler name space in the scheduer task. The name space always 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"
Problem : The Event Handler implemented class file not found while deploying the plugin.zip file.
Cause : The class file is missing in the zip file.
Solution : Please add the jar file into the lib directory and make the zip file again and regsiter the plugin.
Reference Document : Oracle Identity Manager Developer Guide
Hi,
ReplyDeleteThanks for your posts. I am a big fan of all the details that you provide. It is very helpful in performing these complex task :)
i used this post to create a post-porcess even handler
i am running a Trusted reconciliation task from a flat file.
I am trying to set the default password of the user
Following happens
1. Plugin registration is successful.I can see the initialize() being called during OIM start. SOP in initialize gets printed
2. Flat file trusted recon is successful as the user get created in OIM
Following fails
The event handler dosn't get triggered as the SOP messages during the execute() are not getting printed
I see the following on the console
<[CALLBACKMSG] Are applicable policies present for this async eventhandler ? : false>
I have already checked and provided the schema location in both the .xml files
I can also see the event handler in the deployment management export
All help is appreciated
Hi
ReplyDeleteI have also face the same issue while invoking the Web Service. The problem is, the plugin class loader was not able to load the Web Service client classes from the plugin/lib directory. For that reason you need to duplicate the web service client files into the your plugin/lib and also following directory.
Oracle_IDM1/server/apps/oim.ear/APP-INF/lib
Note: Use wsimport to generate your webservice client classes because OIM has product limitations such as apache axis support 1.2. Please use the OIM supported version of wsimport to generate the client classes.
Hi
ReplyDeleteSorry I have miss understood your SOP statements. Please use default oracle logger to print the output. Please see my blog how to enable logger in oim.
Hello,
ReplyDeleteWE are in process of creating the random password generatpr whenever a user is getting created in 11g.
My Doubt whether do we need to map any procss in the Event Handler Manager in the design console or the steps mentioned by you in the above blog is enough?
Waiting for your response.
Thanks
HI Kichee.
DeleteThe above process is more sufficient to deploy and generate the random password in the pre-process event handler plugin.
Hi can yo help me running eventhandler on oim 11 g R1.Need assistance to setup.
ReplyDeleteHi Basu.
DeleteWhat kind of assistance do you need to setup the event handler?
I have to generate password for reconciled users in OIM.i would like to know the code for genrate password. And it is mandatory to setup eventhandler in OIM design console?I have set the event handler code and register plugin and updated mds schema everything was successfull.But password was not getting generated.
ReplyDeleteGuide me
where would reconcile users stored in OIM 11 g R1 ? Give me table name in database?Where would provisioned users stored ? table name?
ReplyDeletewhere could i see log for evevthandler not getting triggered?
I ve send recon.SEND NOTIFICATION =true in OIM Administration console an still email are not getting trigged.?
Receiving error like "An error occurred while changing the user password. An unknown error occurred while sending the notification." when i try to change password in oim and check email password to the users
ReplyDeleteHi,
ReplyDeleteI ve created post process eventhandler for password genertion for reconciled users. But email notification is not been sent.Is ther any adapter i have to create to send notification.?
How your sending email through code or OIM. Please let me know
DeleteHi
DeleteI am trying to send password through code( Java code).
I have followed the same process mentioned by you in the post and everything went successful but emails are not getting generated.
Hi,
ReplyDeleteCould you let me know for oracle 11 g r 1 11.1.1.7 what is the procedure to set up mail server and any thing needs to be done in OIM design console.
I have followed the same process but the middle name is not getting generated for the user. I checked the log but nothing related to this was there. Also, if EventHandlers.xml is imported to the MDS, where would it be stored? There are several EventHandlers.xml files. Where should this be checked?
ReplyDeleteHI
ReplyDeletePlease verify the following pre-requisite while deploying the event handler. They are
1. Please verify the following name space exists in the eventhandler.xml file:
2. Please verify the application should be OIMMetadata in the weblogic.properties file.
3. Please configure the logging and verify the event handler works.
Please let me know if you have any issues and I can look into your issue.
<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">
ReplyDeleteShould this EventHandlers.xml be imported in case of OIM 11g R2? As there are several EventHandler.xml files in the mds, doesn't it cause any conflict? The plugin was successfully registered through ant utility. How to configure the logging? Please explain.
ReplyDeleteHi
ReplyDeleteThe event handler will be invoked based on your plugins configuration without conflict. I have blogged the logger configuration in oim. I am providing the logger configuration link as follows: http://idmoim.blogspot.com/2011/07/enabling-logging-in-oim-11g.html
Import of the EventHandler.xml should be done through importMetadata utility in OIM 11g R2. Please correct me if I'm wrong.
ReplyDeleteHi
ReplyDeleteYour right. Check your import path while deploying the event handler in OIM. The path suffix should be metadata/EventHandler.xml. For example Your EventHandler store location is /home/oracle/eventhandler/metadata/EventHanlder.xml and your should specify the metadata_from_loc is /home/oracle/eventhandler. Please let me know If you have any issues.
Our requirement is to save the value of selected organization to a custom attribute. I deployed the code and imported the event handler. Still I'm unable to get the value. Please suggest on this.
ReplyDeleteHi Rathna.
ReplyDeleteYou need to add the custom attribute in the event handler orchestration.addParameter("Custom Attribute Label", );
Please let me know more info.
This is the snippet in my code:
ReplyDeletepublic EventResult execute(long processId, long eventId,
Orchestration orchestration) {
System.out.println("Entered custom code");
HashMap parameters = orchestration
.getParameters();
logger.debug("Inside LDAPOrg handler");
String ldapOrgName = getParamaterValue(parameters,"Organization");
System.out.println("This is the org selected"+ldapOrgName);
orchestration.addParameter("LDAP Organization Name", ldapOrgName);
return new EventResult();
}
Please correct if I went wrong somewhere..
Hi Rathna.
DeleteSorry for the late response.
You can add the organization as follows.
1. Retrieve the Organization Key
HashMap parameters= orchestration.getParameters();
String orgId=getParamaterValue(parameters,"act_key");
2. Retrieve the Organization name based on the org key as follows.
OrganizationManager orgManager=Platform.getService(OrganizationManager.class);
Organization org=orgManager.getDetails(orgId, new HashSet(), false);
//Get the Organization Name
String orgName=org.getAttribute("Organization Name");
3. Adding the Organization in the Custom Attribute.
// finally Add the Organization Name into the orchestration parameter
orchestration.addParameter("LDAP Organization Name", orgName);
Please let me know if you need any help.
Hi,
DeleteHashMap interEvtDataMap = orchestration.getInterEventData();
Set> hashSet = interEvtDataMap.entrySet();
for(Entry entry:hashSet ) {
LOGGER.info("Key="+entry.getKey()+", Value="+entry.getValue().toString());
}
Using the user key i need to fetch the user organization name and then if that orgname belongs to a desired name then update usr table udf one column.Can you please provide any code snippet if you have
Thanks for the inputs. OrganizationManager is oracle.iam.identity.orgmgmt.api.OrganizationManager and Organization is oracle.iam.identity.orgmgmt.vo.Organization. Is that correct?
ReplyDeletethe import packages are correct
ReplyDeleteHi can you help me in building an event handler for email n SMS feature.. I am completely new to this, so if you could provide some basic links or blogs which I have to follow it would be of great help..
ReplyDeleteHi
ReplyDeletePlease follow the urls and you can get better idea to implement the SMS feature in OIM. They are
1. https://blogs.oracle.com/fusionmiddleware/entry/send_notification_with_oracle_identity
2. http://docs.oracle.com/cd/E14571_01/integration.1111/e10224/ns_java_pojo_api.htm
Hi, I am using Jdeveloper in my local machine and OIM server is in unix box can you explain me how do i deploy the event handler. I m following the steps u have provided and succesfully registered the plugin also but I m confused where to save EventHandlers.xml file please help on that..
ReplyDeleteI am facing the below error when I create an user in OIM:
ReplyDeleteIAM-2050243 : Orchestration process with id 22306, failed with error message IAM-0080026 : Event handler {0} implemented using class/plug-in {1} could not be loaded..
can you please help me out as soon as possible.
Hi
ReplyDeleteThree ways you can deploy the event handlers. One is Oracle Provided Default Utilities using weblogicImportMetada.sh and your need to login to OIM server using ssh and deploy. Second one is deploying through Deployment Manager using Import Deployment Manager File lync. This option requires to modify the EventHandler.xml file. Third option is Using tcImportOperationsIntf API.
I am providing the detailed steps to deploy the event handler in OIM. I have blogged the deployment steps in the following url http://idmoim.blogspot.com/2014/04/event-handler-handler-deployment-in-oim.html.
Please let me know if you need any help.
Hi, I deployed the event handler by using weblogicImportMetadata.sh
Deletebut now I am unable to create any user in OIM whenever I try to create an user it throws me the following error:
IAM-2050243 : Orchestration process with id 22306, failed with error message IAM-0080026 : Event handler {0} implemented using class/plug-in {1} could not be loaded..
Can you Please help me out.
Hi Sumanth.
DeletePlease verify the following steps to resolve the issue.
1. Verify Plugin Zip directory structure. The structure should be
plugin.xml
lib/plugin.jar
2. Verify your plugin class bundled as a jar file and its available in the plugin zip file.
3. Verify your plugin.xml file is available in the plugin zip file.
4. Verify your plugin class is available in the OIM data base. The table names are PLUGINS and PLUGIN_ZIP. The Plugins table contains the plugin class name and zip id. The plugin_zip contains the plugin zip file and zip ID
5. From step 1 to 4 are correct, redeploy the plugin.zip as follows.
5.1. Login to your OIM Server
5.2 Go to the weblogic domain bin directory and execute the source ./setDomianEnv.sh
For example Your domain directory is /app/Oracle/Middleware/user_projects/domains/oim/bin
5.3 Go to the Oracle_IDM1/server/plugin_utility
5.4 unregister the plugin as folllows
ant -f pluginregistration.xml unregister.
After Entering the above command the following details needs to be entered.
[input] Enter the oim user id:
xelsysadm
[input]Enter the oim user password:
[input] Enter the server url [t3://:] :
t3://oimhost:14000
[input] Enter class name (complete class name with package) of the plugin:
For example the class name is test.eventhandlers.NamePreProcessEventHandlers.
It will unregister the Plugin.
6. Restart the OIM Server
7. Deploy the plugin again.
8. Restart the oim server.
Your issue will be resolved.
Please let me know if you need any help.
Hi thanks a lot its working now....
DeleteCould please provide me some more links or resources which explains email n sms event handlers in the same way as this middle name event handler....
Hi,
DeleteI am facing the same problem.But in OIM database --> PLUGINS table no data is available. Please help me out the issue.
Thanks
Hi Aruna.
DeletePlease can you check the plugin zip directory structure. The plugin directory structure should be wrong. For example the plugin directory structure as follows:
plugin.xml
lib/youreventhandler.jar file.
For example your plugin zip directory
c:\postprocess
c:\postprocess\plugin.xml
c:\postprocess\lib\eventhandler.jar
You need the zip the plugin directory with plugin.xml and lib/eventhandler.jar file. GO to the c:\postprocess directory and make the zip file.
Please let me know if you need any help.
Thank you so much.
DeleteIt is working now but the whole process done the OIM admin user i.e xelsysadm password has changed. Please let me know what would be the issue.
Thanks,
Aruna
Hi,
ReplyDeleteI'm able to deploy custom event handler and it works. Now, the scenario is that the event has to invoke a piece of code when 'Manager' role(custom OIM role) is added to the user. I'm unable to get the added role through orchestration parameters. Please suggest..
Thanks in advance.
Hi
ReplyDeleteYou need to define the new custom event handler entity type is roleuser. After defining the roleuser entity type and you can capture the role membership when added or removed from the role. You need to developed the new custom eventhandler code to achieve the role membership add or removed from the role.
Please let me know if you need more info
Hi,
ReplyDeleteI'm stuck at "can capture the role membership when added or removed from the role" as I'm unable to get the information in the orchestration parameters. Please help me in retrieving membership parameters from the orchestration.
Hi,
ReplyDeleteI have a requirement where we need a post process event handler which would set value of samAcctName attribute from AD to userLogin attribute in OIM user profile after a PROVISIONING operation. I wanted to know if this is possible using OIM event handler since the event handlers are tied to CREATE operation in OIM & not on the target. i.e. there might be a delay in user getting created on target AD during which the event handler might have already finished since it is invoked as soon as user is created in OIM. I am using OIM 11g PS2. I read somewhere about being able to use callback but I dont have much idea about it
Hi,
ReplyDeleteYou can set the samAcctName attribute from AD to userLogin attribute as follows:
1. Create the process task and populate the SamAccountName attribute value to user login attribute using UserManager API.
2. Currently created task attach to create task response success event.
Please let me know If you need more help.
Hi,
ReplyDeleteThx for the reply but i have a customer requirement of doing this thru event handlers because they want the samAcctName to be copied to userLogin as soon as the user is created on AD because all other resources are provisioned after AD is done. So do you think it is feasible that way? As I mentioned I heard of async event handlers but dont know how to use it & cant find anything on google too
Hi,
ReplyDeleteI have followed the same approach to transfer the values from target resource to OIM User using the process task and my environment is 11g R1.
If I understand it correctly then it would mean I would have to create a process task and have it executed once my Create task of AD User resource is executed.
DeleteThe fact that you have mentioned using the UserManager sounds a bit interesting because isn't the UserManage service going to trigger the event handler's which we have registered for the modify user. I may not want to have those used. Wanted to check if EntityManager service worked for you here?
Hi,
DeleteCheck the dependent resource provisioning without using Event handlers comment below:
2. Dependant Resource Provisioning:
Hi,
ReplyDeleteThe best way to achieve dependent user provisioning as follows:
1. First compute the User Login attribute value and transform the computed value from OIM user to AD User target form samaccountname using pre-populate adapter.
2. Dependant Resource Provisioning:
Use Case:
Exchange Email provisioning required, the AD User should exists in the Active Directory.
Solution:
2.1 First Provision the Active Directory User.
2.2 Provision the Exchange Email Account. For this provisioning object the following configuration needs to be done because Exchange Email Provisioning wait until AD Account provisioning completed.
2.2.1 Open design console
2.2.2 Open the Exchange Resource Object and attached the dependent resource object. Your dependent object resource is AD User.
Please let me know if you need more info.
Hi,
DeleteIs dependent resource always one to one relation?
Like in My case I have MSSQL Login as dependent for MSSQL User.
I am creating MSSQL Login account first, which is a success.
Then I am creating MSSQL User which is also a success.
Third step I am trying again to create one more MSSQL User, which fails.
So I want to know whether if we add as dependent resource will it allow only one instance??
We have also checked on Allow Multiple Instance in MSSQL User Resource Object.
ReplyDeleteError returned is: Event handler UserProfileUpdate implemented using class/plug-in com.oim.handler.user.UserProfileUpdate could not be loaded.
Getting above error while updating user
unregisted plugin and removed plugin zip from folder
Please reply
Thanks
HI
ReplyDeletePlease can you check following checklists before deploying the event handler. They are
1. Custom Event handler class is should be packaged with zip file.
2. Global variables shouldn't initialize in the constructor object.
3. Deploy the Event handler zip file
4. Deploy the Event Handler meta data.
5. Restart the Web Logic after deploying the event handler.
Please let me know if you need any further assistance.
i created new handler class "ProfileUpdate" Instead of "UserProfileUpdate"
ReplyDeleteand redeployed with steps which you mentioned above
But still getting below exception which updating username
Error returned is: Event handler UserProfileUpdate implemented using class/plug-in com.oim.handler.user.UserProfileUpdate could not be loaded.
Still it is referring old handler class instead of new one.
It is working now.Actually wrong handler file placed in file folder of mds.Deleted wrong one and placed correct handler file in metadata folder.
ReplyDeleteThanks
Hi
ReplyDeleteI am not understanding on Last Execution Time parameter in eBusiness HRMS Trusted Reconciliation schedule Job
If i set Last Execution Time to 0
Getting below error
Caused by: oracle.iam.connectors.ebs.common.TargetOperationException: Failed to get the system date from target
at oracle.iam.connectors.ebs.common.dao.DBUtil.getSystemDate(Unknown Source)
... 32 more
Caused by: java.sql.SQLDataException: ORA-01821: date format not recognized
at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:462)
at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:405)
at oracle.jdbc.driver.T4C8Oall.processError(T4C8Oall.java:931)
at oracle.jdbc.driver.T4CTTIfun.receive(T4CTTIfun.java:481)
at oracle.jdbc.driver.T4CTTIfun.doRPC(T4CTTIfun.java:205)
at oracle.jdbc.driver.T4C8Oall.doOALL(T4C8Oall.java:548)
at oracle.jdbc.driver.T4CStatement.doOall8(T4CStatement.java:202)
at oracle.jdbc.driver.T4CStatement.executeForDescribe(T4CStatement.java:942)
at oracle.jdbc.driver.OracleStatement.executeMaybeDescribe(OracleStatement.java:1283)
at oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java:1441)
at oracle.jdbc.driver.OracleStatement.executeQuery(OracleStatement.java:1690)
at oracle.jdbc.driver.OracleStatementWrapper.executeQuery(OracleStatementWrapper.java:446)
If i set Last Execution Time to 1431704363000
No records found in logs
Please help me
Hi
DeleteSorry for the delay response.
You need to write the recon transformation converting values from target resource to OIM while synchronizing the trusted reconciliation. The reconciliation transformation example is given in the OIM documentation as follows:
http://docs.oracle.com/cd/E27559_01/dev.1112/e27150/icf_conn_conf.htm#OMDEV5062
Please let me know if you need more help.
please let me know the location of created custom event handlers and adapter...after configuration
ReplyDeleteHi,
ReplyDeleteI have a requirement for post process event handler Using the user key i need to fetch the user organization name and then if that orgname belongs to a desired name then update user email id .Using the below snippet we could fetch the user key but could not proceed further.Do you have any suggestion !!!
HashMap interEvtDataMap = orchestration.getInterEventData();
Set> hashSet = interEvtDataMap.entrySet();
for(Entry entry:hashSet ) {
LOGGER.info("Key="+entry.getKey()+", Value="+entry.getValue().toString());
}