Post Event Handler
Hi,
I have created a post event handler and registered it. Then i checked in the PLUGINS table, my event handler exist there. But this event handler never called after create user.
I have added like:
<action-handler class="xxxxx"
entity-type="User" operation="CREATE" name="DBPostProcessEventHandler" stage="postprocess"
Do I missing any?
thanks
Robb
I've got the same problem, I follwed instruction as in 1262803.1. its ok for pre-process, but for post-process it dosn't work. Did you success?
I also tried to unregister the pre-process EvenHandler (with command ant -f pluginregistration.xml unregister) I got info "Unregistred succesful" but handler still works.. Do I omit something?
Regards
Magda
Similar Messages
-
OIM 11g R2 Post Event Handler not trigerred
Hi,
I have developed the event handler that request resources on user load into OIM (its a GTC load). I can see that:
1. event handler is registered in "PLUGINS" table,
2. appearing in em
3. see the following under /dms/spy
PostEventRequestResourceCreate company.com oim_server1:14000 active, threads 0 oim_server1
avg, msecs 1.67
completed, ops 3
maxActive, threads 1
maxTime, msecs 3
minTime, msecs 1
time, msecs 5
As per the 11g R2 doc, I have included eventhandlers.xml as part of META-INF folder of my pluign zip -I did not import it into MDS as it was not mentioned in the doc (as it was mentioned in the case of 11g R1).
I have updated the lib of the plugin zip with the custom class jar.
I have few SOPs in my Eventhandler which are not getting printed and hence events are not triggered.
Is there anything that I am missing here?
ThanksHashMap eventDataHashMap = bulkOrchestration.getInterEventData();
Identity[] currentUserStates = (Identity[]) eventDataHashMap.get("CURRENT_USER");
You can loop through the same way you are through the bulkParameters and pull the database from there.
-Kevin -
Accessing properties file value in event handler in OIM11gR2
Hi,
Can i store the bolded values in below code in a propery file and call them. I am implementing this code in Post event handler.
logger.debug("Function::Client Initiate: Initializing OIM client");
String ctxFactory = "weblogic.jndi.WLInitialContextFactory";
String serverURL = "t3://host:port";
String username = "oim_user";
String password = "some_password";
String authConfigLocCl="C:/OIM11g/Oracle_IDM1/designconsole/config/authwl.conf";
Hashtable<String, String> env = new Hashtable<String, String>();
env.put(OIMClient.JAVA_NAMING_FACTORY_INITIAL,ctxFactory);
env.put(OIMClient.JAVA_NAMING_PROVIDER_URL, serverURL);
logger.debug("Function::Client Initiate: Creating OIM client");
System.setProperty("java.security.auth.login.config",authConfigLoc);
System.setProperty("APPSERVER_TYPE", "wls");
oimClient = new OIMClient(env);Another option to get OIM credentails dynamically using CSF map
Try something like below code
oracle.security.jps.JpsContext ctx;
final oracle.security.jps.service.credstore.CredentialStore cs;
oracle.security.jps.service.credstore.CredentialMap cmap;
oracle.security.jps.service.credstore.Credential cred;
oracle.security.jps.service.credstore.PasswordCredential pcred;
ctx = oracle.security.jps.JpsContextFactory.getContextFactory().getContext();
cs = ctx.getServiceInstance(oracle.security.jps.service.credstore.CredentialStore.class);
final String mymapName="oracle.oim.sysadminMap";
final String mykeyName="sysadmin";
cred = AccessController.doPrivileged(new PrivilegedExceptionAction<Credential>() {
public Credential run() throws CredStoreException {
return cs.getCredential(mymapName, mykeyName);
}, null);
String oimUserName = "";
String oimPassword = "";
String oimURL = "";
if (cred instanceof oracle.security.jps.service.credstore.PasswordCredential)
pcred = (oracle.security.jps.service.credstore.PasswordCredential)cred;
char[] p = pcred.getPassword();
oimUserName = pcred.getName();
oimPassword = new String(p);
} -
Hi,
Products
OIM 11.1.1.5 BP02
OAM 11.1.1.5
OID 11.1.1.5
Problem
I have written a post-process event handler which fires when a role is assigned to a user. The event handler calls a plugin which uses the UserManager API to generate and change the user's password.
I've tested this by assigning a role to the user via the OIM web console. I can see my log messages indicating that the event handler has fired and that the password has been changed.
However, I expected that when UserManager.changePassword completed, a notification email would then be sent to the user informing them of the new password, but no notification email has been sent.
The email notifications have been set up correctly, because I have changed the same user's password via the OIM web console and successfully received a Reset Password email.
So, my questions are:
1) Am I right in thinking that when you call UserManager.changePassword(), an out-of-the-box ResetPassword email notification should be sent to the user?
2) Has anyone got this working in 11.1.1.5?
Some more detailed info
In my plugin class I'm calling the following from both execute methods (EventResult and BulkEventResult):
char newpasswd[] = new RandomPasswordGeneratorImpl().generatePassword(user);
getUserManager().changePassword(userKey, newpasswd, false, null, true);
logger.info(("Successfully changed password"));
plugin.xml
<oimplugins xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<plugins pluginpoint="oracle.iam.platform.kernel.spi.EventHandler">
<plugin
pluginclass="oracle.iam.PostInsertPlugin"
version="1.0"
name="PostInsertPlugin">
</plugin>
</plugins>
</oimplugins>
$OIM_HOME/server/bin/weblogic.properties
wls_servername = oim_server1
app = OIMMetadata
metadata_from_loc=/home/oracle/eventhandlers
metadata_file=/metadata/roleuser/custom/EventHandlers.xml
/home/oracle/eventhandlers/import/metadata/roleuser/custom/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">
<action-handler
class="oracle.iam.PostInsertPlugin"
entity-type="RoleUser"
operation="CREATE"
name="PostInsertPlugin"
stage="postprocess"
order="1002"
sync="TRUE"/>
</eventhandlers>
There are no errors in the OIM out and diagnostic logs apart from the following which occur at OIM startup:
[2013-01-07T16:29:23.425+00:00] [oim_server1] [ERROR] [IAM-0080075] [oracle.iam.platform.kernel.impl] [tid: [ACTIVE].ExecuteThread: '13' for queue: 'weblogic.kernel.Default (self-tuning)'] [userId: oiminternal] [ecid: 2e903d7ef060ab65:66b2de91:13c15d6d9ce:-8000-0000000000000002,0] [APP: oim#11.1.1.3.0] XML schema validation failed for XML /metadata/iam-features-OIMMigration/EventHandlers.xml and it will not be loaded by kernel.
[2013-01-07T16:29:24.267+00:00] [oim_server1] [ERROR] [IAM-0080075] [oracle.iam.platform.kernel.impl] [tid: [ACTIVE].ExecuteThread: '13' for queue: 'weblogic.kernel.Default (self-tuning)'] [userId: oiminternal] [ecid: 2e903d7ef060ab65:66b2de91:13c15d6d9ce:-8000-0000000000000002,0] [APP: oim#11.1.1.3.0] XML schema validation failed for XML /metadata/iam-features-callbacks/event_configuration/EventHandlers.xml and it will not be loaded by kernel.
Thanks
dty
Edited by: oim_user on Jan 7, 2013 5:37 PMNo notification will be sent if you changepassword using the method from usermanager api.
You have to trigger the resetpassword event manullay in your code.
Here is a sample code to create an event for reset password. Once you create event, invoke it from notification service - notify method.
NotificationEvent event = new NotificationEvent();
String[] receiverUserIds= {userLogin};
event.setUserIds(receiverUserIds);
event.setTemplateName("ResetPasswordNotification");
event.setSender(null);
HashMap<String, Object> resolvedData = new HashMap<String, Object>();
resolvedData.put("userLoginId", userLogin);
event.setParams(resolvedData); -
Post Process Event Handler ----Unique Constraint Violation--Create User
Hi Evryone..
I am creating the user using the create user request template and there is one level of approval for this.
I have one pre process event handler which populates one field A and one post process event handler which updates some 3 fields in the user form .
In request template itself we had placed value as "ABC" for field B and this field B will be overridden in the post process event handler with Value as "XYZ" .
Now when i raise the request the user is getting created in OIM but the value XYZ is not getting replaced in the field B.
Below are the errors which i got in the logs while executing post process event handler :
<Mar 28, 2012 10:25:58 AM CDT> <Warning> <oracle.iam.callbacks.common> <IAM-2030146> <[CALLBACKMSG] Are applicable policies present for this async eventhandler ? : false>
<Mar 28, 2012 10:25:59 AM CDT> <Warning> <org.eclipse.persistence.session.oim> <BEA-000000> <
Exception [EclipseLink-4002] (Eclipse Persistence Services - 2.1.3.v20110304-r9073): org.eclipse.persistence.exceptions.DatabaseException
Internal Exception: java.sql.SQLIntegrityConstraintViolationException: ORA-00001: unique constraint (DEV_OIM.UK_UAR_ATTR_NAME_VALUE) violated
Error Code: 1
Call: INSERT INTO USR_ATTRIBUTE_RESERVATIONS (UAR_RESERVATION_KEY, UAR_ATTRIBUTE_NAME, CREATED_BY, CREATED_ON, DATA_LEVEL, UAR_REQUEST_ID, UAR_RESERVED_VALUE, UPDATED_BY, UPDATED_ON) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)
bind => [10, User Login, null, null, null, 10, DUMMY14, null, null]
Query: InsertObjectQuery([email protected]658269)
Exception at usrIntf.updateUser IAM-3050128 : Cannot reserve user attribute User Login with value DUMMY14 in OIMDB. Corresponding request ID is 10.:User Login:DUMMY14:10
I checked reservations table and there are no records in that table.
Has any one faced this issue..if so how it can be resolved..Are you trying to update the User ID? As far as I know during create user requests, OIM reserves the user login as it goes through approval and you cannot update that directly I think. I haven't tried it but can you tell me which fields you are prepopulating and which are you updating? Are there any OOTB fields in this or UDF?
-Bikash -
Post Process Event Handler not getting user's CURRENT_STATE for a UDF field
I have a post process event handler in OIM R2 BP04 , which runs on Trusted Reconciliation and it compares user's ("CURRENT_USER") state and ("NEW_USER_STATE") and based on that derives a business logic.
The problem that i am facing is that, it is not able to get the User's ("CURRENT_USER") state for a UDF(EMAIL_LIST) field and it is coming as null,and hence is breaking the business logic.The same Event Handler is working on TEST and QA ( 4 node cluster)environments and is not working on PROD environment( 4 node cluster).
The different thing that was done on was that during the initial recon the event Handler was not present and after the initial load of the users i have manually executed the database sql query which have updated the "EMAIL_LIST field manually for all the users
I think that since during the initial recon as the EMAIL_LIST was not populated and was populated through the SQL update for all the users, the orchestration inter event data does not contain email list, and so it is coming as null.
But i am seeing the same behavior for new records as well, which are created and then updated after event handler is registered.
Please reply, if you have encountered something similar.
Thnx
AkshatYes i need the old state, which is
Identity[] oldUserStatesIdntArr =
(Identity[])(Identity[])interEventData.get("CURRENT_USER"); -
Error in post process event handler
We should write a post process event handler that updates the manager field. So, I used the following code to update the manager field when a user gets created:
Code:
public EventResult execute(long processId, long eventId,
Orchestration orchestration) {
System.out.println("Test for Event Handler");
try
String userKey = getUserKey(processId, orchestration);
System.out.println("USERKEY1"+userKey);
UserManager userMgmt = Platform.getService(UserManager.class);
System.out.println("USERMANAGEMENT"+userMgmt);
System.out.println(userMgmt.modify(new User(userKey)));
userMgmt.modify("usr_mgr_key","28",new User(userKey));
System.out.println("USERKEY2"+userKey);
} catch (ValidationFailedException e) {
System.out.println("Exception1");
} catch (AccessDeniedException e) {
System.out.println("Exception2");} catch (UserModifyException e) {
System.out.println("Exception3");} catch (NoSuchUserException e) {
System.out.println("Exception4");} catch (SearchKeyNotUniqueException e) {
return new EventResult();
private String getUserKey (long processID, Orchestration orchestration) {
String userKey;
String entityType = orchestration.getTarget().getType();
EventResult result;
result = new EventResult();
System.out.println("Entity Type"+entityType);
System.out.println("Process ID"+processID);
if (!orchestration.getOperation().equals("CREATE")) {
userKey = orchestration.getTarget().getEntityId();
System.out.println("UserKEY0"+userKey);
} else {
OrchestrationEngine orchEngine = Platform.getService(OrchestrationEngine.class);
userKey = (String) orchEngine.getActionResult(processID);
System.out.println("UserKEY-1"+userKey);
return userKey;
It compiles fine and when we try to create a user, the user gets created successfully. But, the expected behaviour of upadting the manager field with the user key '28' is not happening. My approach above - is it right or is there any other method that will make it work?
The output message I see is:
Test for Event Handler
Entity TypeUser
Process ID140343
UserKEY-1613
USERKEY1613
USERMANAGEMENToracle.iam.identity.usermgmt.api.UserManagerDelegate@75ecf9ed
<27-Feb-2012 10:56:41 o'clock GMT> <Warning> <oracle.iam.callbacks.common> <IAM-2030146> <[CALLBACKMSG] Are applicable policies present for this async eventhandler ? : false>
oracle.iam.identity.usermgmt.vo.UserManagerResult@14da2ada
<27-Feb-2012 10:56:44 o'clock GMT> <Error> <oracle.iam.identity.usermgmt.impl> <IAM-3051212> <An error occurred while searching for users - : [usr_mgr_key].>
Exception4
Thanks
Krishi hope wrong coding.
Use this code.
UserManager userMgmt = oimClient.getService(UserManager.class);
//Attribute you want to modify
HashMap<String, Object> atrrMap= new HashMap<String, Object>();
atrrMap.put("usr_manager_key", Long.valueOf("1")); //user will upadated with manager key 1 (xelsysadm) make sure usr_key 1 (manager) exist in OIM.
//get the user to whom you want to modify
User user = userMgmt.getDetails("usr_key", "41", null);
user = new User(String.valueOf(user.getId()), atrrMap);
UserManagerResult result = userMgmt.modify("usr_key", String.valueOf("41"), user);
//UserManagerResult str = userMgmt.modify("usr_mgr_key","111",new User("41"));
System.out.println("UserUpdate.process() "+result.getStatus());
Also don't use UserManager class, As it will go for looping.
Use
EntityManager entityManager = Platform.getService(EntityManager.class);
entityManager.modifyEntity(orchestrationTarget.getType(), userKey, mapAttrs);
Also I am assuming you want to use Associate manager With user use case.
Thanks,
Kuldeep -
Migrate Post to Pre-Processing Event Handler
Hi All,
I am moving logic from a post-processing event handler to a pre-processing one.The Post-Processing logic used the EntityManager to save the attribute, is this applicable for a Pre-Process?
Thank You
RonIn a pre-process handler add the value back into the orchestration, e.g. orchestration.addParameter(<attribute>, <value>);
-
OIM 11g - ldap sync - Post Process event handler 'CREATE' faillling
Hi Gurus,
We have ldap sync set up between OIM 11.1.1.5 and ODSEE 11g,
Post process event handler on user creation with is setting a attribute with random 16 digit character, This event handler is getting triggered and setting the attribute in OIM but in logs i can see "Modification failed because user 45118 is not synchronized to the LDAP directory." error and it is not updated in ODSEE.
This behaviour is only for trusted recon not for the User created through UI.
Not sure what exactly is happening..
Is it expected behavior??
Gurus help me out on this.IF it fail because event handler unable to produce random number then verify below
is eventhandler code being executed in trusted recon verify in log.
There are two method execute and bulk execute in eventhandler. execute is being called from UI and bulk execute is being called for trusted recon.
either put code in bulk execute or update batch recon size something like that system property to 1. so, it will function as UI. Default value of batch is 500
--nayan -
OID resource goes to Disabled Status after running the post process event handler
Hi,
We have an event handler on post update operation. The event handler using the user manager API to do some modification. We are using the "Lock()" function of User Manager API to lock the user based on attribute value. After running the event handler though the user gets locked as expected, it also disables the OID resource after that. We have other resources along with OID but they are not affected with event handler. Only the OID user is triggering the disable operation on locking the user on event handler. We have used the OID 11g Connector for implementation.
If you manually lock the user in user interface it's not going to disable status.
How we can stop to disable the OID User Account.
ThanksNo.If you lock the user in Console it's not going disable status.
Thanks -
Issues with Post Process Event Handler in oim11g
Hi I am trying to trigger a post process event handler to set middle name but couldn't succeed.
can you please point out the mistakes if there are any?
This is the Java code.
package oim.eventhandler;
import java.io.Serializable;
import java.util.HashMap;
import oim.util.FROLogger;
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;
public class setmiddlename implements PostProcessHandler {
public void initialize(HashMap<String, String> arg0) {
// TODO Auto-generated method stub
public boolean cancel(long arg0, long arg1,
AbstractGenericOrchestration arg2) {
// TODO Auto-generated method stub
return false;
public void compensate(long arg0, long arg1,
AbstractGenericOrchestration arg2) {
// TODO Auto-generated method stub
* public EventResult execute(long arg0, long arg1, Orchestration arg2) { //
* TODO Auto-generated method stub return null; }
public BulkEventResult execute(long arg0, long arg1, BulkOrchestration arg2) {
// TODO Auto-generated method stub
return null;
public EventResult execute(long processId, long eventId,
Orchestration orchestration) {
HashMap<String, Serializable> parameters = orchestration.getParameters();
// If the middle name is empty set the first letter of the first name as the middle initial
String middleName = getParamaterValue(parameters, "Middle Name");
if (middleName.trim().length()>0) {
String firstName = getParamaterValue(parameters, "First Name");
middleName = firstName.substring(0,1);
orchestration.addParameter("Middle Name", middleName);
return new EventResult();
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;
################ PostProcessEventHandlers.XML#############
<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 validation event handlers -->
<!-- Custom preprocess event handlers -->
<action-handler
class="oim.eventhandler.setmiddlename"
entity-type="User"
operation="CREATE"
name="setmiddlename"
stage="postprocess"
order="1000"
sync="TRUE"/>
</eventhandlers>
################ plugin.xml##############
<?xml version="1.0" encoding="UTF-8"?>
<oimplugins>
<plugins pluginpoint="oracle.iam.platform.kernel.spi.EventHandler">
<plugin pluginclass="oim.eventhandler.setmiddlename" version="1.0" name="setmiddlename"/>
</plugins>
</oimplugins>
################ weblogic.properties##############
wls_servername=oim_server1
application_name=OIMMetadata
metadata_from_loc=/data1/oim_install/Oracle/Middleware/Oracle_IDM1/server/temp/import/metadata/custom/PostProcess
metadata_files=/metadata/custom/PostProcess/PostProcessEventHandlers.xml
application_version=11.1.1.3.0
And the PostProcessEventHandlers.zip contains lib\PostProcess.jar
both PostProcessEventHandlers.zip and PostProcessEventHandlers.xml are placed in the "metadata_from_loc"
The registration was successful and I could see the entries in the PLUGINS table
ID: oim.eventhandler.setmiddlename
TYPE: oracle.iam.platform.kernel.spi.EventHandler
VERSION: 1.0
NAME: setmiddlename
ZIPID: 23
and PLUGIN_METADATA does not contain any values
PLUGIN_ZIP contains ZIPID as 23 and ZIP as (BLOB)
Did I miss anything?
what is the mistake that I am doing?
Edited by: 883725 on Sep 9, 2011 2:30 AM
Edited by: 883725 on Sep 9, 2011 2:31 AMI am getting this error when running weblogicDeleteMetadata.sh.
I have set the OIM Home and Weblogic home. Though Import and export works absolutely fine.
Any other way where I can connect directly to DB and delete the contents?
+Please enter your username [weblogic] :weblogic+
+Please enter your password [welcome1] :+
+Please enter your server URL [t3://localhost:7001] :t3://localhost:10070+
Connecting to t3://localhost:10070 with userid weblogic ...
Successfully connected to Admin Server 'AdminServer' that belongs to domain 'IDM_domain'.
Warning: An insecure protocol was used to connect to the
server. To ensure on-the-wire security, the SSL port or
Admin port should be used instead.
Location changed to domainRuntime tree. This is a read-only tree with DomainMBean as the root.
For more help, use help(domainRuntime)
Problem invoking WLST - Traceback (innermost last):
File "/data1/oim_install/Oracle/Middleware/Oracle_IDM1/server/bin/weblogicDeleteMetadata.py", line 21, in ?
File "/data1/oim_install/Oracle/Middleware/oracle_common/common/wlst/mdsWLSTCommands.py", line 109, in deleteMetadata
File "/data1/oim_install/Oracle/Middleware/oracle_common/common/wlst/mdsWLSTCommands.py", line 574, in executeAppRuntimeMBeanOperation
File "/data1/oim_install/Oracle/Middleware/oracle_common/common/wlst/mdsWLSTCommands.py", line 713, in saveStackAndRaiseException
WLSTException: MDS-00001: exception in Metadata Services layerMDS-91009: Operation "deleteMetadata" failure. Use dumpStack() to view the full stacktrace. -
OIM 11g: Access Denied searching usr_emp_no in post process event handler
I am logging in as xelsysadm and creating a new user. I have populated a UDF called Manager Employee Number with a value of 12345 and I have a corresponding user with the Employee Number populated with that same value.
When I create the user, my code searches for a corresponding user in OIM with that employee number. The problem is that i am getting an access denied error searching use_emp_no. Ironically, in a different post process event handler, I have access to decrypting the user's password.
I tried searching by Employee Number rather than use_emp_no (which is what is returned with AttributeName.EMPLOYEE_NUMBER.getId()) but that did not find any users. It did seem to attempt the search though.
Here is the code and the error:
//get the manager object and retrieve the user login and user key of the manager
mgrRetAttrs.add("USER_LOGIN");
mgrRetAttrs.add("USER_KEY");
List<User> mgrList = searchUsr(mgrEmpNo, mgrRetAttrs);
logger.finest("Retrieved " + mgrList.size() + " managers with that employee number.");
private List<User> searchUsr(String mgrEmpNo, Set<String> mgrRetAttrs) throws AccessDeniedException, UserSearchException{
logger.finest("************Entering BBTMgrIDPostProcEventHandler#searchUser()***********");
logger.finest("This is the manager emp no we are searching: " + mgrEmpNo);
SearchCriteria srchCriteria =
new SearchCriteria(AttributeName.EMPLOYEE_NUMBER.getId(), mgrEmpNo, SearchCriteria.Operator.EQUAL);
logger.finest("This is the search criteria: " + srchCriteria.toString());
logger.finest("Exiting BBTMgrIDPostProcEventHandler#searchUser()");
return getUserManager().search(srchCriteria, mgrRetAttrs, null);
private UserManager getUserManager() {
logger.finest("Enter BBTMgrIDPostProcEventHandler#getUserManager()");
if (this.userMgr == null) {
this.userMgr = Platform.getService(UserManager.class);
logger.finest("Exit BBTMgrIDPostProcEventHandler#getUserManager()");
return this.userMgr;
Entering BBTMgrIDPostProcEventHandler#execute()
oracle.iam.platform.authz.exception.AccessDeniedException: You do not have permission to search the following user attributes: usr_emp_no.
at oracle.iam.identity.usermgmt.impl.UserManagerImpl.search(UserManagerImpl.java:1699)
at oracle.iam.identity.usermgmt.api.UserManagerEJB.searchx(Unknown Source)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at com.bea.core.repackaged.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:310)
at com.bea.core.repackaged.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:182)
at com.bea.core.repackaged.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:149)
at com.bea.core.repackaged.springframework.aop.support.DelegatingIntroductionInterceptor.doProceed(DelegatingIntroductionInterceptor.java:131)
at com.bea.core.repackaged.springframework.aop.support.DelegatingIntroductionInterceptor.invoke(DelegatingIntroductionInterceptor.java:119)
at com.bea.core.repackaged.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:171)
at com.bea.core.repackaged.springframework.jee.spi.MethodInvocationVisitorImpl.visit(MethodInvocationVisitorImpl.java:37)
at weblogic.ejb.container.injection.EnvironmentInterceptorCallbackImpl.callback(EnvironmentInterceptorCallbackImpl.java:54)
at com.bea.core.repackaged.springframework.jee.spi.EnvironmentInterceptor.invoke(EnvironmentInterceptor.java:50)
at com.bea.core.repackaged.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:171)
at com.bea.core.repackaged.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:89)
at com.bea.core.repackaged.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:171)
at com.bea.core.repackaged.springframework.aop.support.DelegatingIntroductionInterceptor.doProceed(DelegatingIntroductionInterceptor.java:131)
at com.bea.core.repackaged.springframework.aop.support.DelegatingIntroductionInterceptor.invoke(DelegatingIntroductionInterceptor.java:119)
at com.bea.core.repackaged.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:171)
at com.bea.core.repackaged.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:204)
at $Proxy328.searchx(Unknown Source)
at oracle.iam.identity.usermgmt.api.UserManager_nimav7_UserManagerRemoteImpl.__WL_invoke(Unknown Source)
at weblogic.ejb.container.internal.SessionRemoteMethodInvoker.invoke(SessionRemoteMethodInvoker.java:40)
at oracle.iam.identity.usermgmt.api.UserManager_nimav7_UserManagerRemoteImpl.searchx(Unknown Source)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at weblogic.ejb.container.internal.RemoteBusinessIntfProxy.invoke(RemoteBusinessIntfProxy.java:85)
at $Proxy196.searchx(Unknown Source)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:307)
at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:198)
at $Proxy318.searchx(Unknown Source)
at oracle.iam.identity.usermgmt.api.UserManagerDelegate.search(Unknown Source)
at com.oracle.iam.bbt.eventhandler.BBTFindMgrID.searchUsr(BBTFindMgrID.java:244)
at com.oracle.iam.bbt.eventhandler.BBTFindMgrID.executeEvent(BBTFindMgrID.java:189)
at com.oracle.iam.bbt.eventhandler.BBTFindMgrID.execute(BBTFindMgrID.java:114)
at oracle.iam.platform.kernel.impl.OrchProcessData.runPostProcessEvents(OrchProcessData.java:1168)
at oracle.iam.platform.kernel.impl.OrchProcessData.runEvents(OrchProcessData.java:710)
at oracle.iam.platform.kernel.impl.OrchProcessData.executeEvents(OrchProcessData.java:227)
at oracle.iam.platform.kernel.impl.OrchestrationEngineImpl.resumeProcess(OrchestrationEngineImpl.java:674)
at oracle.iam.platform.kernel.impl.OrchestrationEngineImpl.resumeProcess(OrchestrationEngineImpl.java:705)
at oracle.iam.platform.kernel.impl.OrhestrationAsyncTask.execute(OrhestrationAsyncTask.java:108)
at oracle.iam.platform.async.impl.TaskExecutor.executeUnmanagedTask(TaskExecutor.java:100)
at oracle.iam.platform.async.impl.TaskExecutor.execute(TaskExecutor.java:70)
at oracle.iam.platform.async.messaging.MessageReceiver.onMessage(MessageReceiver.java:68)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at com.bea.core.repackaged.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:310)
at com.bea.core.repackaged.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:182)
at com.bea.core.repackaged.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:149)
at com.bea.core.repackaged.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:89)
at com.bea.core.repackaged.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:171)
at com.bea.core.repackaged.springframework.aop.support.DelegatingIntroductionInterceptor.doProceed(DelegatingIntroductionInterceptor.java:131)
at com.bea.core.repackaged.springframework.aop.support.DelegatingIntroductionInterceptor.invoke(DelegatingIntroductionInterceptor.java:119)
at com.bea.core.repackaged.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:171)
at com.bea.core.repackaged.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:204)
at $Proxy331.onMessage(Unknown Source)
at weblogic.ejb.container.internal.MDListener.execute(MDListener.java:574)
at weblogic.ejb.container.internal.MDListener.transactionalOnMessage(MDListener.java:477)
at weblogic.ejb.container.internal.MDListener.onMessage(MDListener.java:379)
at weblogic.jms.client.JMSSession.onMessage(JMSSession.java:4659)
at weblogic.jms.client.JMSSession.execute(JMSSession.java:4345)
at weblogic.jms.client.JMSSession.executeMessage(JMSSession.java:3821)
at weblogic.jms.client.JMSSession.access$000(JMSSession.java:115)
at weblogic.jms.client.JMSSession$UseForRunnable.run(JMSSession.java:5170)
at weblogic.work.SelfTuningWorkManagerImpl$WorkAdapterImpl.run(SelfTuningWorkManagerImpl.java:528)
at weblogic.work.ExecuteThread.execute(ExecuteThread.java:209)
at weblogic.work.ExecuteThread.run(ExecuteThread.java:178)
Caused by: oracle.iam.identity.exception.SearchAttributeAccessDeniedException: You do not have permission to search the following user attributes: usr_emp_no.
at oracle.iam.identity.usermgmt.impl.UserManagerImpl.search(UserManagerImpl.java:1696)
... 76 more
Thanks,
RuthThis is what fixed the problem:
Instead of the following:
//get the manager object and retrieve the user login and user key of the manager
mgrRetAttrs.add("USER_LOGIN");
mgrRetAttrs.add("USER_KEY");
I needed to do this instead:
mgrRetAttrs.add(UserManagerConstants.AttributeName.USER_LOGIN.getId());
mgrRetAttrs.add(UserManagerConstants.AttributeName.USER_KEY.getId());
Then I changed the searchCriteria back to the following:
SearchCriteria srchCriteria =
new SearchCriteria("Employee Number", "12345", SearchCriteria.Operator.EQUAL);
This did the trick.
Ruth -
Input value given on web page is not getting pickedup in event handler
Hi friends,
I have created one simple page in SE80 with program with flow logic option, in which I would like to show business partner details from BUT000 table with the input of partner number. But the thing is the input value(partner no.)which I am giving on web page is not getting picked up in selection in event handler though I am giving input value it is becoming initial while selecting. What could be the reason?
Below I am mentioning the code which I have written in even handler for OnInputProcessing event.
CASE EVENT_ID.
WHEN 'select'.
NAVIGATION->SET_PARAMETER( 'partner' ).
SELECT * FROM but000 INTO TABLE I_but000 WHERE partner BETWEEN partner AND partner1.
WHEN OTHERS.
ENDCASE.
Thanks in advance,
SteveHi Abhinav,
I tried with the one you posted. But it is giving run time error as shown below.
Note
The following error text was processed in the system CRD : Access via 'NULL' object reference not possible.
The error occurred on the application server crmdev_CRD_00 and in the work process 0 .
The termination type was: RABAX_STATE
The ABAP call stack was:
Method: ONINPUTPROCESSING of program CLO24DDFJW575HVAQVJ89KWHEHC9OCP
Method: %_ONINPUTPROCESSING of program CL_O24DDFJW575HVAQVJ89KWHEHC9OCP
Method: DO_REQUEST of program CL_BSP_PAGE===================CP
Method: ON_REQUEST of program CL_BSP_RUNTIME================CP
Method: IF_HTTP_EXTENSION~HANDLE_REQUEST of program CL_HTTP_EXT_BSP===============CP
Method: EXECUTE_REQUEST_FROM_MEMORY of program CL_HTTP_SERVER================CP
Function: HTTP_DISPATCH_REQUEST of program SAPLHTTP_RUNTIME
Module: %_HTTP_START of program SAPMHTTP
Regards,
Steve -
Hello all,
I have a problem with event handling. I have two buttons in my GUI application with the same name.They are instance variables of two different objects of the same class and are put together in the one GUI.And their actionlisteners are registered with the same GUI. How can I differentiate between these two buttons?
To be more eloborate here is a basic definition of my classes
class SystemPanel{
SystemPanel(FTP ftp){ app = ftp};
FTP app;
private JButton b = new JButton("ChgDir");
b.addActionListener(app);
class FTP extends JFrame implements ActionListener{
SystemPanel rem = new SystemPanel(this);
SystemPanel loc = new SystemPanel(this);
FTP(){
add(rem);
add(loc);
pack();
show();
void actionPerformed(ActionEvent evt){
/*HOW WILL I BE ABLE TO KNOW WHICH BUTTON WAS PRESSED AS THEY
BOTH HAVE SAME ID AND getSouce() ?
In this case..it if was from rem or loc ?
} It would be really helpful if anyone could help me in this regard..
Thanks
Hari VigenshHi levi,
Thankx..
I solved the problem ..using same concept but in a different way..
One thing i wanted to make clear is that the two buttons are in the SAME CLASS and i am forming 2 different objects of the SAME class and then putting them in a GUI.THERE IS NO b and C. there is just two instances of b which belong to the SAME CLASS..
So the code
private JButton b = new JButton("ChgDir");
b.setActionCommand ("1");
wont work as both the instances would have the label "ChgDir" and have setActionCommand set to 1!!!!
Actually I have an array of buttons..So I solved the prob by writting a function caled setActionCmdRemote that would just set the action commands of one object of the class differently ..here is the code
public void setActionCommandsRemote()
for(int i = 0 ; i <cmdButtons.length ; i++)
cmdButtons.setActionCommand((cmdButtons[i].getText())+"Rem");
This just adds "rem" to the existing Actioncommand and i check it as folows in my actionperformed method
if(button.getActionCommand().equals("DeleteRem") )
deleteFileRemote();
else if(button.getActionCommand().equals("Delete") )
deleteFileLocal();Anyway thanx a milion for your help..this was my first posting and I was glad to get a prompt reply!!! -
Javascript embedded in button pl/sql event handler not being executed
Javascript calls not working from pl/sql button event handler. What am I missing? Are specific settings needed to execute javascript from pl/sql proceedures?
Example: Want to toggle target='_blank' off and on in a button pl/sql event handler to open url call in new window & then reset when processing submit is done & the app returns to the form.
portal form button's pl/sql submit handler:
begin
htp.p('<script language=JavaScript>') ;
htp.p('this.form.target="_blank"') ;
htp.p('</script>') ;
PORTAL.wwa_app_module.set_target('http://www.oracle.com') ;
htp.p('<script language=JavaScript>') ;
htp.p('this.form.target="_blank"') ;
htp.p('</script>') ;
end ;
Putting the following in the button's javascript on_click event handler works great:
this.form.target='_blank'
to force opening new window with a call in the button's submit pl/sql code via:
PORTAL.wwa_app_module.set_target('http://www.oracle.com') ;
but then the target='_blank' is left on when the submit is done & we return to the form.
putting the above javascript as a function (called fcn_newpage) elsewhere (e.g., after form opens) & calling in the submit pl/sql with
htp.p('fcn_newpage') ;
also doesn't work.
Metalink thought this was an application issue instead of a bug, so thought I'd see if anyone knows what's going wrong here. (Portal 9.0.4.1)thanks for your discussion of my post.
Please clarify:
"htp.p('fcn_newwindow') sends a string":
What would you suggest the proper syntax for a function fcn_newwindow() call from a pl/sql javascript block that differs from
htp.p('<script language="Javascript">') ;
htp.p('fcn_newwindow');
htp.p('</script>');
or more simply
htp.p('fcn_newwindow') ;
More generally, what I'm trying to figure out is under what conditions javascript is executed, if ever, in the pl/sql of a button (either the submit or custom event handler, depending on the button).
I've seen lots of posts asking how to do a simple htp.p('alert("THIS IS TROUBLE")') ; in a pl/sql event handler for a button on a form, but no description of how this can be done successfully.
In addition to alerts, in my case, I'd like to call a javascript fcn from a pl/sql event handle that would pass a URL (e.g., http://www.oracle.com) where the javascript fcn executed
window.open(URL). The API call to set_target(URL) in pl/sql has no ability to open in a new window, so calling that is inadequate to my needs and I must resort to javascript.
Its clear in the PL/SQL of a button, you can effect form components since p_session..set_target & p_session.get_target set or get the contents of form components.
So to see if javascript ever works, I tried to focus on something simple that only had to set what amounts to an enviromental variable when we returned to the form after a post. I chose to try to change the html value of TARGET from javascript in the PL/SQL button because it doesn't need to be implemented until we finish the post and return to the form.
So I focused on a hack, setting this.form.TARGET='_blank' in the on_click event handler that forced every subsequent URL call or refresh of the form to be a new window. I then wanted to turn off opening new windows once I'd opened the URL call in a new window by setting TARGET='' in the portal form. I can achieve what I want by coding this.form.TARGET='' in the javascript (on_focus, on_change, or on_mousedown, ...) of every form component that might refresh the form. However, that is a ridiculous hack when a simple htp.p('<script>') ; htp.p('this.form.target=""') ; htp.p('</script>') ; at the end of the button's pl/sql event handle should do the same thing reliably if javascript ever works in the pl/sql event handler.
If we didn't have access to form components through p_session calls, I'd assume it was a scope issue (what is available from the pl/sql event handler). But unless my syntax is just off, when, if ever, can javascript be used in a portal form's pl/sql event handler for a button?
if I code a javascript funtion in the forms' pl/sql before displaying form:
htp.p('<script language="JavaScript">') ;
htp.p('function fcn_new_window(URL)') ;
htp.p('window.open(URL)' ) ;
htp.p('</script>') ;
the function can be called from a button's on_click javascript event handler:
fcn_new_window('http://www.oracle.com')
but from the same button's pl/sql submit event handler this call doesn't work: htp.p('fcn_new_window("http://www.oracle.com")')
So my questions remain: Is there other syntax I need, or does javascript ever work properly from the pl/sql of a form button's event handler? If it doesn't work, isn't this a bug that should be fixed by Oracle?
I can probably figure out hacks to make things work the way I need, but executing javascript from pl/sql event handlers seems to be the expected way to affect portal html pages (forms, reports, ...) and it seems not to work as expected. I don't feel I should have to implement hacks for something as simple as calling a javascript function from pl/sql when almost every example I've found in metalink or the forums or Oracle Press's "portal bible" suggests using javascript from pl/sql via the utility htp.p() to effect web page components in portal.
My TAR on the subject, while still open, returned the result basically: "We can reproduce your situation. Everything looks okay to us, but we can't explain how to use javascript where you want or point you to any documentation that would solve your problem or expain why it should not work the way you want it to. We don't feel its a technical issue. Why don't you post the problem on the portal applications forum."
I'm hoping I'm just missing something fundamental and everything will work if I implement it a little differently. So if anyone sees my error, please let me know.
by the way, not sure this is germain, but in reference to your comment:
"redirections in pl/sql procedures give a peculiar result. in a pl/sql procedure, usually, portals give the last redirection statement and ignore anything else coming after it."
if I try to raise an alert:
htp.p('alert("you screwed up")');
return;
in a pl/sql event handler, it still doesn't raise the alert, even though its the last thing implemented in the event handler. But if I set the value of a text box using p_session..set_value_as_string() at the same spot, it correctly sets the text box value when I return to the form.
Maybe you are looking for
-
Warning message during the settlement of WBSE
Hi, We have PS structure. During the settlement cost booked in WBSE moves to AUC & from AUC to final asset. While settling the cost from AUC to Final asset, I am getting the warning message " Asset Value date earlier that Asset Capitalization date".
-
Urgent - - Differences Between Oracle 11.5.7 and 11.5.10
Hi All, Can somebody tell me the differences between 11.5.7 and 11.5.10...The additional features that are there in the 11.5.10...any doc on the same will be of great help. Thanks in advance
-
Re: "MSVCR80.dll Missing" Thanks to mspanner and others for you help. Followed your advice, which worked.
-
Flash Player for Meego ?
Will Adobe be creating a Flash Player for the Meego platform (it is a Linux variant, so I would think it wouldn't be too difficult to do). Thanks for any information.
-
Hi, We have accidentally deleted a database from SQL server. Then we have used NTFS file recovery tools such as R-Studio and scanned the entire drive. As a result of the scanning process we found a set of MDF files. Then we tried to attach the MDF fi