Step 1:
//The below code shows an example of implementing the PreProcessHandler. In the same way you can implement the other interfaces:
Pre-Process-- oracle.iam.platform.kernel.spi.PreProcessHandler
Post-Process-- oracle.iam.platform.kernel.spi.PostProcessHandler
Validation-- oracle.iam.platform.kernel.spi.ValidationHandler
Validation handler can be used to validate the data being entered while creating a user,role in OIM.
Writing a custom code to implement the actual logic:
Sample code:
import java.io.Serializable;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Set;
import com.thortech.util.logging.Logger;
import oracle.iam.platform.context.ContextAware;
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 GenerateUserID implements oracle.iam.platform.kernel.spi.PreProcessHandler{
public boolean cancel(long l, long l1, AbstractGenericOrchestration abstractgenericorchestration) {
// TODO Auto-generated method stub
return false;
}
public void compensate(long l, long l1, AbstractGenericOrchestration abstractgenericorchestration) {
// TODO Auto-generated method stub
}
public EventResult execute(long processID, long eventID, Orchestration orchestration) {
// TODO Auto-generated method stub
Logger logger=Logger.getLogger("CustomEventHandler");
logger.debug("Entering the EventHandler");
HashMap<String, Serializable> parameters = orchestration.getParameters();
Set<String> keyset=parameters.keySet();
Iterator<String> itr=keyset.iterator();
while(itr.hasNext()){
String attrName=itr.next();
System.out.println("Attr Name is : "+attrName);
System.out.println(parameters.get(attrName));
}
String middleName = getParamaterValue(parameters, "Middle Name");
if (middleName==null||middleName.isEmpty()) {
String firstName = getParamaterValue(parameters, "First Name");
middleName = firstName.substring(1,3);
orchestration.addParameter("Middle Name", middleName);
}
return new EventResult();
}
public BulkEventResult execute(long l, long l1, BulkOrchestration bulkorchestration) {
// TODO Auto-generated method stub
return null;
}
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;
}
public void initialize(HashMap<String, String> arg0) {
// TODO Auto-generated method stub
}
}
Step 2:
Create a plugin.xml file with the following contents:
<?xml version="1.0" encoding="UTF-8"?>
<oimplugins xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.oracle.com/schema/oim/plugin plugin.xsd">
<plugins pluginpoint="oracle.iam.platform.kernel.spi.EventHandler">
<plugin pluginclass=
"com.test.ad.GenerateUserID"
version="1.0"
name="SamplePreprocessExtension">
</plugin>
</plugins>
</oimplugins>
Step 3:
Creating a metadata xml.
Note: Make sure that the right namespace is given if you are using the latest version 11.1.1.5. This is not required if you are using older version 11.1.1.3.
EventHandlers.xml
<?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">
<!-- Custom preprocess event handlers -->
<action-handler
class="com.test.ad.GenerateUserID"
entity-type="User"
operation="CREATE"
name="SamplePreprocessExtension"
stage="preprocess"
order="1000"
sync="TRUE"/>
</eventhandlers>
Step 4: Packaging
Package the contents in the following manner:
Folder Handler.zip if extracted should look like this:
lib[dir]
plugin.xml[file]
Note: The lib folder should containg the jar file which has the custom eventhandler implementation.
Step 5:
Register the plugin using the OIM_HOME/plugin-utility/pluginregistration.xml.
Run the following command:
ant -f pluginregistration.xml register
Give the complete path of the zip file like /app/Oracle/CustomPlugins/Handler.zip and make sure that the user has enough permissions.
Note: make sure that the ant path is exported to the path.
Step 6:
MDS import:
Using the weblogicImportMetadata.sh/bat import the EventHandlers.xml.
Now validate the user create functionality as implemented by the eventhandler.
//The below code shows an example of implementing the PreProcessHandler. In the same way you can implement the other interfaces:
Pre-Process-- oracle.iam.platform.kernel.spi.PreProcessHandler
Post-Process-- oracle.iam.platform.kernel.spi.PostProcessHandler
Validation-- oracle.iam.platform.kernel.spi.ValidationHandler
Validation handler can be used to validate the data being entered while creating a user,role in OIM.
Writing a custom code to implement the actual logic:
Sample code:
import java.io.Serializable;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Set;
import com.thortech.util.logging.Logger;
import oracle.iam.platform.context.ContextAware;
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 GenerateUserID implements oracle.iam.platform.kernel.spi.PreProcessHandler{
public boolean cancel(long l, long l1, AbstractGenericOrchestration abstractgenericorchestration) {
// TODO Auto-generated method stub
return false;
}
public void compensate(long l, long l1, AbstractGenericOrchestration abstractgenericorchestration) {
// TODO Auto-generated method stub
}
public EventResult execute(long processID, long eventID, Orchestration orchestration) {
// TODO Auto-generated method stub
Logger logger=Logger.getLogger("CustomEventHandler");
logger.debug("Entering the EventHandler");
HashMap<String, Serializable> parameters = orchestration.getParameters();
Set<String> keyset=parameters.keySet();
Iterator<String> itr=keyset.iterator();
while(itr.hasNext()){
String attrName=itr.next();
System.out.println("Attr Name is : "+attrName);
System.out.println(parameters.get(attrName));
}
String middleName = getParamaterValue(parameters, "Middle Name");
if (middleName==null||middleName.isEmpty()) {
String firstName = getParamaterValue(parameters, "First Name");
middleName = firstName.substring(1,3);
orchestration.addParameter("Middle Name", middleName);
}
return new EventResult();
}
public BulkEventResult execute(long l, long l1, BulkOrchestration bulkorchestration) {
// TODO Auto-generated method stub
return null;
}
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;
}
public void initialize(HashMap<String, String> arg0) {
// TODO Auto-generated method stub
}
}
Step 2:
Create a plugin.xml file with the following contents:
<?xml version="1.0" encoding="UTF-8"?>
<oimplugins xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.oracle.com/schema/oim/plugin plugin.xsd">
<plugins pluginpoint="oracle.iam.platform.kernel.spi.EventHandler">
<plugin pluginclass=
"com.test.ad.GenerateUserID"
version="1.0"
name="SamplePreprocessExtension">
</plugin>
</plugins>
</oimplugins>
Step 3:
Creating a metadata xml.
Note: Make sure that the right namespace is given if you are using the latest version 11.1.1.5. This is not required if you are using older version 11.1.1.3.
EventHandlers.xml
<?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">
<!-- Custom preprocess event handlers -->
<action-handler
class="com.test.ad.GenerateUserID"
entity-type="User"
operation="CREATE"
name="SamplePreprocessExtension"
stage="preprocess"
order="1000"
sync="TRUE"/>
</eventhandlers>
Step 4: Packaging
Package the contents in the following manner:
Folder Handler.zip if extracted should look like this:
lib[dir]
plugin.xml[file]
Note: The lib folder should containg the jar file which has the custom eventhandler implementation.
Step 5:
Register the plugin using the OIM_HOME/plugin-utility/pluginregistration.xml.
Run the following command:
ant -f pluginregistration.xml register
Give the complete path of the zip file like /app/Oracle/CustomPlugins/Handler.zip and make sure that the user has enough permissions.
Note: make sure that the ant path is exported to the path.
Step 6:
MDS import:
Using the weblogicImportMetadata.sh/bat import the EventHandlers.xml.
Now validate the user create functionality as implemented by the eventhandler.
Different sorts of exclusive composition aid associations like site are just processes that handle or endeavor to handle the power that an innovative firm has imbued inside their blood stream.
ReplyDeleteGood one.Please update the weblogic.properties file as well.
ReplyDeleteI have written a pre process event handler to insert middle name. I 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
Same problem
ReplyDeleteIAM-2050243 : Orchestration process with id 5611, failed with error message IAM-0080026 : Event handler {0} implemented using class/plug-in {1} could not be loaded.
reply asap
The above code also generate following error.
ReplyDeleteIAM-2050243 : Orchestration process with id 5611, failed with error message IAM-0080026 :Unknown attribute for entity user.
If anyone have solution reply.
Hey Kunal,
ReplyDeletePlease try adding sysouts in the code and print all the attribute names. Possibly one of the attribute names is being passed wrong.
Hey Vishnu,
ReplyDeleteI have also added sysout statements though the error is still there.?
Its shwoing
Orchestration process with id 5716, failed with error message IAM-0080026 : Event handler {0} implemented using class/plug-in {1} could not be loaded..
i m getting the same error. I have unregistered the event handler and deleted the metadata. i am still getting the same. please help.
Delete(We have registered the event handler again with a different versions.So further it is not unregistering the same)