Customizing request datasets in OIM 11g

Hi Friends,
I have couple of questions/issues while customizing request datasets in OIM 11g. Can you please help me?
1) I gave read-only="true" in my request dataset for one of the attribute, but I was still able to edit that attribute value while raising requests.
2) I gave hidden="true" in my request dataset for one of the attribute, but I was still able to see that attribute while raising requests.
3) I have around 90 attributes in my request dataset. Is there any way to display category type and under that category display the attrbitues i.e. just like attributes in user profile.
4) As I have 90 attributes, I am expecting the format will be like first 45 will be shown in left panel(column) and remaining 45 in right panel (column). Instead of this , it is showing first 70 in left panel and the remaining 20 in right panel which is very ugly to see. Is there any way to show frist 45 on left side and remaining 45 on the right side? Please help me.

Regarding the first two points:
1) The read only property applies to the approver only, i.e. approver can read and not modify the attribute. It does not apply to the requester. I don't believe you can configure a read-only attribute in the data set.
2) If you want to hide an attribute, you can restrict it in your request template.

Similar Messages

  • How to polulate data from lookup using request dataset in OIM 11g

    Hi,
    Using Request dataset in OIM 11g, I need to display one dropdown with the roles those need to come from Lookup.
    For Ex; I have 2 resources,i.e Resource A and Resource B. Resource A has 5 roles and Resource B has 3 Roles.
    While creating a request, If I select Resource A, then I should be able to get 5 Roles and if I select Resource B then I should be able to see corresponding 3 roles.
    Pls. note I have only one Look up definition , where I have roles for both Resource A and B.
    I have done simillar thing in OIM 10g , however I am unable to do it using OIM 11g Request dataset.
    Pls suggest.

    Hi BB,
    I am trying to follow up your response.
    You are suggestng to use prepopulate adapter for to populate respource object name, that means We have to just use an sql query from obj tabke to get the resource object name. right ?? it could be like below, what should I have entity-type value here ??
    <AttributeReference name="Field1" attr-ref="act_key"
    available-in-bulk="false" type="Long" length="20" widget="ENTITY" required="true"
    entity-type="????"/>
    <PrePopulationAdapter name="prepopulateResurceObject"
    classname="my.sample.package.prepopulateResurceObject" />
    </AttributeReference>
    <AttributeReference name="Field2" attr-ref="Field2" type="String" length="256" widget="lookup-query"
    available-in-bulk="true" required="true">
    <lookupQuery lookup-query="select lkv_encoded as Value,lkv_decoded as Description from lkv lkv,lku lku
    where lkv.lku_key=lku.lku_key and lku_type_string_key='Lookup.xxx.BO.Field2'
    and instr(lkv_encoded,concat('$Form data.Field1', '~'))>0" display-field="Description" save-field="Value" />
    </AttributeReference>
    Then I need think about the 'Lookup.xxx.BO.Field2' format.
    Could you please let me know if my understanding is correct?? What is the entity-type value of the first attribute reference value?
    Thanks for your all help.

  • Lookup codekey value in Request dataset in OIM 11g

    Hi,
    Below is my Attribute reference in Request dataset in OIM 11g.
    Could you please suggest what could be the possible Lookup code key values in lookup 'Lookup.AccountingControl.Roles'
    I tried giving CodeKey values as "ACCOUNTING CONTROL~" then Decode value as "Administrator" , However it does not give any value.
    So I think what I am giving as Codekey value is wrong based on below lookup query.
    What could be the correct value for CodeKey ? Thanks!!
    <AttributeReference name = "Role Name" attr-ref = "Role Name" type = "String" length = "256" widget = "lookup-query"
    available-in-bulk = "true"
    required = "true"
    primary = "true">
    <lookupQuery
    lookup-query = "select lkv_encoded as Value,lkv_decoded as
    Description from lkv lkv,lku lku where lkv.lku_key=lku.lku_key and
    lku_type_string_key='Lookup.AccountingControl.Roles' and instr(lkv_encoded,concat('ACCOUNTING CONTROL','~'))>0"
    display-field = "Description"
    save-field = "Value"/>
    </AttributeReference>

    Yes..You were right.
    You resolved one of my issue. I have marked it as answered giving 10 pts ;-)
    I think I have already raised another forum question where I needed to pass this Accounting Control as dynamic and this is one Resource Obkect selected from previous page.
    You asked me to use Prepopulate adapter to get the Resource Object name.
    I have still some questions to solve that issue.I will put that question there. It would be great yo answer it.

  • Develop pre-populate adapter in request dataset in OIM 11G

    Hi Friends,
    I have a field say UD_TEMP_FORM_FIELDA on the process form which is going to be populated based on the value of a field SAY UD_TEMP_FORM_FIELDB on the request dataset.
    So my request dataset will have only one field which is UD_TEMP_FORM_FIELDB.
    And my process form will have two fields UD_TEMP_FORM_FIELDA and UD_TEMP_FORM_FIELDB.
    And I developed a pre-populate adapter on the process form to populate UD_TEMP_FORM_FIELDA field based on the value of UD_TEMP_FORM_FIELDB during provisioning. But pre-population is not at all getting triggered during provisioning. I believe I need to put UD_TEMP_FORM_FIELDA also on the request dataset and pre-populate its value in request dataset itself and pass the value from request data set to process form. Is this correct?
    If so, as per the documentation, we need to create a request dataset with pre-pop adapter in the below format.
    <AttributeReference name="Domain" attr-ref="domain" available-in-bulk="true" type="String" length="20" widget="text">
    <PrePopulationAdapter classname="oracle.iam.request.DomainPrepopulateAdapter"/>
    </AttributeReference
    As we are specifying only the class name in the above statement,
    1) How to pass the value of UD_TEMP_FORM_FIELDB to this class.
    2) Which method in the class will execute
    3) How to Registert this class.
    Can you please provide me some steps/urls for the above requirement?
    Thanks,
    Mike

    Hi Nishith,
    Thanks for your response.
    As per my requirement I am going to keep UD_TEMP_FORM_FIELDA (Group Owner) and UD_TEMP_FORM_FIELDB (AD Group Name) in the child forms and I am going to use the below pre-populate adapter code to get the value for UD_TEMP_FORM_FIELDA based on value of UD_TEMP_FORM_FIELDB.
    My question is:
    If I raise a request with only one value in the child form, then the below code will code work. But, If I add more than one value say AD groups in the child form while raising a request, this code is going to retrieve same owner value for all AD groups as it will go by FOR loop.
    How to pre-populate the individual owner for the individual AD group given in the child form? Please let me know.
    public class PrepopEBSRespValue implements PrePopulationAdapter {
    public Serializable prepopulate(RequestData requestData) throws RequestServiceException,
    tcAPIException,
    tcInvalidLookupException,
    tcColumnNotFoundException {
    List<Beneficiary> beneficiaries = null;
    List<RequestBeneficiaryEntity> benEntities = null;
    List<RequestBeneficiaryEntityAttribute> benAttrs = null;
    String ownerValue="";
    beneficiaries = requestData.getBeneficiaries();
    if (beneficiaries != null && !beneficiaries.isEmpty())
    for (oracle.iam.request.vo.Beneficiary beneficiary : beneficiaries)
    benEntities = beneficiary.getTargetEntities();
    if (benEntities != null && benEntities.size() > 0)
    for (oracle.iam.request.vo.RequestBeneficiaryEntity benEntity : benEntities)
    benAttrs = benEntity.getEntityData();
    if (benAttrs != null && benAttrs.size() > 0)
    for (oracle.iam.request.vo.RequestBeneficiaryEntityAttribute benAttr : benAttrs)
    if(benAttr.hasChild())
    java.util.List <oracle.iam.request.vo.RequestBeneficiaryEntityAttribute> list = benAttr.getChildAttributes();
    java.util.Iterator iterator = list.iterator();
    while(iterator.hasNext())
    oracle.iam.request.vo.RequestBeneficiaryEntityAttribute attribute =(oracle.iam.request.vo.RequestBeneficiaryEntityAttribute)iterator.next();
    String attrName=attribute.getName();
    if (attrName.equalsIgnoreCase("Owner"))
    String lookupName="Lookup.Owner.values";
    System.out.println("Getting decoded value for the given code key..");
    String attrValue=attribute.getValue().toString();
    HashMap searchcriteria = new HashMap();
    searchcriteria.put("Lookup Definition.Lookup Code Information.Decode", attrValue);
    Thor.API.Operations.tcLookupOperationsIntf lookupIntf=Platform.getService(Thor.API.Operations.tcLookupOperationsIntf.class);
    tcResultSet result = lookupIntf.getLookupValues(lookupName,searchcriteria);
    for(int i=0;i<result.getRowCount();i++)
    result.goToRow(i);
    ownerValue = result.getStringValue("Lookup Definition.Lookup Code Information.Code Key");
    System.out.println("Decoded Value::"+ownerValue);
    return (Serializable) ownerValue;
    }

  • Unable to export or import custom request dataset

    Hi,
    I am a newbie to OIM, please let me know where I am going wrong with either export or importing the custom request dataset.
    Following are the steps which I followed:
    1. Modified the weblogic.properties file with required values such as
    wls_servername = xxx
    application_name=OIMMetadata
    metadata_from_loc=D://Oracle//Middleware//Oracle_IDM1//server//metadata//custom
    metadata_to_loc=D://Oracle//Middleware//Oracle_IDM1//server//metadata//custom
    metadata_files=/**
    2. Created the request dataset to provision a user to a resource.
    <?xml version="1.0" encoding="UTF-8"?>
    <request-data-set xmlns="http://www.oracle.com/schema/oim/request"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://www.oracle.com/schema/oim/request"
    name="Provision ABC Interface" entity="ABC Interface" operation="PROVISION">
    <AttributeReference name="User ID"
    attr-ref="User ID"
    available-in-bulk="false"
    type="String"
    length="50"
    widget="text"
    required="true" />
    <AttributeReference name="Last Name"
    attr-ref="Last Name"
    available-in-bulk="false"
    type="String"
    length="50"
    widget="text"
    required="true"
    mls="false" />
    <AttributeReference name="First Name"
    attr-ref="First Name"
    available-in-bulk="false"
    type="String"
    length="50"
    widget="text"
    required="true"
    mls="false" />
    <AttributeReference name="Email"
    attr-ref="Email"
    available-in-bulk="false"
    type="String"
    length="50"
    widget="text"
    required="true"
    mls="false" />
    <AttributeReference name="Type"
    attr-ref="Type"
    available-in-bulk="false"
    type="String"
    length="50"
    widget="dropdown"
    lookup-code="Type"
    required="true" />
    </request-data-set>
    3. Placed the request dataset in D://Oracle//Middleware//Oracle_IDM1//server//metadata//custom/ABC
    4. OIMMetadata is in Active State.
    5. Tried to import the dataset with credentials but failed with the following error:
    UserWarning: MDS-91002: MDS Application runtime MBean for "OIMMetadata" is not available. "importMetadata" operation failure.
    while importing request datasets
    There is no error while starting the OIM server with MBean too.
    Could anyone suggest me to resolve this error.
    Appreciate your help
    Thanks
    SG.

    Import issue got resolved. Thank you.
    Problem is with the case sensitivity of server name in weblogic.properties.
    Now am facing other issue. I am not able to see the attributes which i have defined in request dataaset when am creating request template, but, I am able to get the xml file (request dataset) when I am exporting.
    Any clue?
    Thanks
    SG

  • Creating a request type in OIM 11g R2

    Hi All,
    I came to know that the request templates have been removed from OIM 11g R2 . I have the below scenario,
    1)When an end user logs into Identity console and access his self profile through the 'My Information' link.
    2)If he tries to modify some of his attributes(say First Name) the approval policy should not get triggered and should be auto approved and committed to the database
    3)For some of the attributes(say Last Name) approval policy has to be triggered and request has to be created and wait for the approval .
    4)Now that request templates are removed , Can I create a new request type like 'Modify Custom attributes' similar to 'Modify User Profile' for this scenario to be achieved ?
    Please let me know how the above scenario is going to work in OIM 11g R2 ?
    Regards,
    Senthil.

    Hi ,
    Thanks for your reply .. I am able to understand the scenario what you are trying to explain .. I tried to do the same ...but in my scenario ,this is the problem that I am facing ..
    1)When a user modifies only his First Name then it works fine and gets auto approved .
    2)When a user modifies only his Last Name then it works fine and goes for approval and waits till it gets approved.
    3)Now the problem is when a user modifies both his First Name and Last Name and submits as a single request , how to handle this ? In this case the First Name should get committed and the Last Name should not get committed .. But he has submitted only a single request .. so how to handle this scenario ?How to divide a single request into two to commit one attribute and not commit another one ?

  • How to assign approvaal policy for a request template in OIM 11g

    When I request for resource in OIM 11g, It's always going for Default approval of xelsysadm.
    I want this Request level approval must go to "Beneficiary Manager approval". While requesting I am selecting request template (which I created) for Provision resource as Request type.I have already set "Beneficiary Manager approval" as request level approval for this request template.
    I have created one approval policy, How can I assign this approval Policy to request template so that When i submit this request , it should go to my Manager approval.
    Regards,
    J

    Hi Rajiv,
    I do not need approval of Operational level. I want to stop the approval process after request level approval.
    Here you are saying to create a new approval policy and set as AUTO Approval as true. There are some default approval policies which comes with OIM 11g and one of the approval policy is trigeering the Operaional level approval. So I think I do not need to create new approval policy and I can use exsting approval policy and modify as you suggested selecting AUTO APPROVAL and create approval rule as request template=="XYZ".
    I am not sure which default approval policy trigeering the Operational approval now. Can you pls tell me that?
    Can you pls confirm that, there is only way to restrict Opertional Approval by selecting "AUTO APPROVAL" true and put the approval rule as request template=="XYZ"
    Thanks Rajiv for your help all the time.

  • Can approver modify user's request form in OIM 11g?

    Dear All,
    In OIM 10g, the approver of a request can modify user's request form, we just need to configure the permission in OIM. But, can we do it in OIM 11g?
    If can, how can i configure it?
    really need your help guys,, :D
    Thank you,
    --herry                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               

    Hi user12841694,
    Thanks for the suggestion. But, the data (field) that can be modified by the approver is very limited. We cannot attach multi-valued attribute there (like Child Form).
    Regards,
    ---herry

  • Issue with deleting a group using Request APIs in OIM 11g R1

    Hi,
    I am facing an issue with Request Based provisioning in OIM 11g R1.
    I am currently testing a scenario where i have imported a data set for 'Modify Provisioned Resource' and am able to add a group/entitlement to an already provisioned resource by using the following code :
            RequestBeneficiaryEntityAttribute childEntityAttribute= new RequestBeneficiaryEntityAttribute();
            childEntityAttribute.setName("AD User Group Details");
            childEntityAttribute.setType(TYPE.String);
            List<RequestBeneficiaryEntityAttribute> childEntityAttributeList=new ArrayList<RequestBeneficiaryEntityAttribute>();
            RequestBeneficiaryEntityAttribute attr = new RequestBeneficiaryEntityAttribute("Group Name", <group>,                                                                       RequestBeneficiaryEntityAttribute.TYPE.String);
            childEntityAttributeList.add(attr);
            childEntityAttribute.setChildAttributes(childEntityAttributeList);
            childEntityAttribute.setAction(RequestBeneficiaryEntityAttribute.ACTION.Add);
            beneficiaryEntityAttributeList = new ArrayList<RequestBeneficiaryEntityAttribute>();   
            beneficiaryEntityAttributeList.add(childEntityAttribute);
            beneficiarytEntity.setEntityData(beneficiaryEntityAttributeList);
    This works fine for adding a group but if i try to remove a group by changing the action to Delete in the same code, the request fails. The only change made is in the following line:
    childEntityAttribute.setAction(RequestBeneficiaryEntityAttribute.ACTION.Delete);
    Could you please suggest where can this possibly be wrong.
    Thanks for your time and help

    Hi BB,
    I am trying to follow up your response.
    You are suggestng to use prepopulate adapter for to populate respource object name, that means We have to just use an sql query from obj tabke to get the resource object name. right ?? it could be like below, what should I have entity-type value here ??
    <AttributeReference name="Field1" attr-ref="act_key"
    available-in-bulk="false" type="Long" length="20" widget="ENTITY" required="true"
    entity-type="????"/>
    <PrePopulationAdapter name="prepopulateResurceObject"
    classname="my.sample.package.prepopulateResurceObject" />
    </AttributeReference>
    <AttributeReference name="Field2" attr-ref="Field2" type="String" length="256" widget="lookup-query"
    available-in-bulk="true" required="true">
    <lookupQuery lookup-query="select lkv_encoded as Value,lkv_decoded as Description from lkv lkv,lku lku
    where lkv.lku_key=lku.lku_key and lku_type_string_key='Lookup.xxx.BO.Field2'
    and instr(lkv_encoded,concat('$Form data.Field1', '~'))>0" display-field="Description" save-field="Value" />
    </AttributeReference>
    Then I need think about the 'Lookup.xxx.BO.Field2' format.
    Could you please let me know if my understanding is correct?? What is the entity-type value of the first attribute reference value?
    Thanks for your all help.

  • Request failed in OIM 11g

    After obtaining operational approvals, some of my request get dropped. In the OIM log I see the following error message -
    <Sep 2, 2011 3:57:56 PM PDT> <Warning> <oracle.wsm.agent.handler.wls.WLSPropertyUtils> <BEA-000000> <WLSPropertyUtils:getOperationName(),operation name is null>
    <Sep 2, 2011 3:57:56 PM PDT> <Warning> <oracle.iam.callbacks.common> <IAM-2030081> <[CALLBACKMSG] Inside completion plugin for request 181.>
    <Sep 2, 2011 3:57:56 PM PDT> <Warning> <oracle.iam.callbacks.common> <IAM-2030082> <[CALLBACKMSG] Inside completion plugin for request 181, target tye is Resource and operation is PROVISION.>
    <Sep 2, 2011 3:57:56 PM PDT> <Warning> <oracle.iam.callbacks.common> <IAM-2030082> <[CALLBACKMSG] Inside completion plugin for request 181, target tye is Resource and operation is PROVISION.>
    oracle.iam.platform.kernel.ProcessNotInPrePostStageException: The orchestration event with id ApprovalInitiation is not in pending status.
    at oracle.iam.platform.kernel.impl.OrchestrationEngineImpl.setEventResult(OrchestrationEngineImpl.java:185)
    at oracle.iam.request.impl.ApprovalManager.approvalInstanceComplete(ApprovalManager.java:275)
    at oracle.iam.request.impl.ApprovalPolicyServiceImpl.updateApprovalResult(ApprovalPolicyServiceImpl.java:52)
    at oracle.iam.request.api.ApprovalPolicyServiceEJB.updateApprovalResultx(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 $Proxy398.updateApprovalResultx(Unknown Source)
    at oracle.iam.request.api.ApprovalPolicyService_1nib43_ApprovalPolicyServiceRemoteImpl.updateApprovalResultx(ApprovalPolicyService_1nib43_ApprovalPolicyServiceRemoteImpl.java:132)
    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:84)
    at $Proxy178.updateApprovalResultx(Unknown Source)
    at oracle.iam.request.api.ApprovalPolicyServiceDelegate.updateApprovalResult(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 Thor.API.Base.SecurityInvocationHandler$1.run(SecurityInvocationHandler.java:68)
    at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:321)
    at weblogic.security.service.SecurityManager.runAs(SecurityManager.java:121)
    at weblogic.security.Security.runAs(Security.java:41)
    at Thor.API.Security.LoginHandler.weblogicLoginSession.runAs(weblogicLoginSession.java:52)
    at Thor.API.Base.SecurityInvocationHandler.invoke(SecurityInvocationHandler.java:79)
    at $Proxy397.updateApprovalResult(Unknown Source)
    at oracle.iam.request.workflowcallback.ApprovalCallBack.completed(ApprovalCallBack.java:28)
    at oracle.iam.platform.workflowservice.ws.CallbackServiceImpl.callback(CallbackServiceImpl.java:98)
    at oracle.iam.platform.workflowservice.ws.wls.CallbackService.callback(CallbackService.java:33)
    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.wsee.jaxws.WLSInstanceResolver$WLSInvoker.invoke(WLSInstanceResolver.java:92)
    at weblogic.wsee.jaxws.WLSInstanceResolver$WLSInvoker.invoke(WLSInstanceResolver.java:74)
    at com.sun.xml.ws.server.InvokerTube$2.invoke(InvokerTube.java:151)
    at com.sun.xml.ws.server.sei.EndpointMethodHandlerImpl.invoke(EndpointMethodHandlerImpl.java:265)
    at com.sun.xml.ws.server.sei.SEIInvokerTube.processRequest(SEIInvokerTube.java:100)
    at weblogic.wsee.jaxws.tubeline.FlowControlTube$FlowControlAwareTube.processRequest(FlowControlTube.java:155)
    at weblogic.wsee.jaxws.tubeline.FlowControlTube$1.run(FlowControlTube.java:94)
    at weblogic.wsee.jaxws.tubeline.FlowControlTube$1.run(FlowControlTube.java:92)
    at java.security.AccessController.doPrivileged(Native Method)
    at javax.security.auth.Subject.doAs(Subject.java:337)
    at weblogic.wsee.jaxws.tubeline.FlowControlTube.processRequest(FlowControlTube.java:91)
    at com.sun.xml.ws.api.pipe.Fiber.__doRun(Fiber.java:604)
    at com.sun.xml.ws.api.pipe.Fiber._doRun(Fiber.java:563)
    at com.sun.xml.ws.api.pipe.Fiber.doRun(Fiber.java:548)
    at com.sun.xml.ws.api.pipe.Fiber.runSync(Fiber.java:445)
    at com.sun.xml.ws.server.WSEndpointImpl$2.process(WSEndpointImpl.java:373)
    at com.sun.xml.ws.transport.http.HttpAdapter$HttpToolkit.handle(HttpAdapter.java:524)
    at com.sun.xml.ws.transport.http.HttpAdapter.handle(HttpAdapter.java:255)
    at com.sun.xml.ws.transport.http.servlet.ServletAdapter.handle(ServletAdapter.java:140)
    at weblogic.wsee.jaxws.WLSServletAdapter.handle(WLSServletAdapter.java:208)
    at weblogic.wsee.jaxws.HttpServletAdapter$AuthorizedInvoke.run(HttpServletAdapter.java:310)
    at weblogic.wsee.jaxws.HttpServletAdapter.post(HttpServletAdapter.java:223)
    at weblogic.wsee.jaxws.JAXWSServlet.doPost(JAXWSServlet.java:124)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:727)
    at weblogic.wsee.jaxws.JAXWSServlet.service(JAXWSServlet.java:79)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:820)
    at weblogic.servlet.internal.StubSecurityHelper$ServletServiceAction.run(StubSecurityHelper.java:227)
    at weblogic.servlet.internal.StubSecurityHelper.invokeServlet(StubSecurityHelper.java:125)
    at weblogic.servlet.internal.ServletStubImpl.execute(ServletStubImpl.java:300)
    at weblogic.servlet.internal.TailFilter.doFilter(TailFilter.java:26)
    at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:56)
    at oracle.dms.wls.DMSServletFilter.doFilter(DMSServletFilter.java:330)
    at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:56)
    at weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.doIt(WebAppServletContext.java:3684)
    at weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.run(WebAppServletContext.java:3650)
    at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:321)
    at weblogic.security.service.SecurityManager.runAs(SecurityManager.java:121)
    at weblogic.servlet.internal.WebAppServletContext.securedExecute(WebAppServletContext.java:2268)
    at weblogic.servlet.internal.WebAppServletContext.execute(WebAppServletContext.java:2174)
    at weblogic.servlet.internal.ServletRequestImpl.run(ServletRequestImpl.java:1446)
    at weblogic.work.ExecuteThread.execute(ExecuteThread.java:201)
    at weblogic.work.ExecuteThread.run(ExecuteThread.java:173)
    <Sep 2, 2011 3:57:56 PM PDT> <Warning> <oracle.wsm.agent.handler.wls.WLSPropertyUtils> <BEA-000000> <WLSPropertyUtils:getOperationName(),operation name is null>
    Any pointers?

    Which version of OIM 11G you are using?
    If request is in failed status after operational label approved ->
    Check if any post operation are attached like (Provisioning process or Event handlers), If you will get any
    Exception, then whole process along with request will rollback
    If it happens in occasionally ->
    It could be bug with OIM 11.1.1.5, because I am facing same issue but if I shutdown one managed server
    (Cluster mode) and 2nd is in running mode, then my request is get approved always.

  • Create user request from api OIM 11g r2

    Hi,
    I need to read a database and raise a request for creating uses. After  approval the user needs to be created in OIM 11g R2.
    I want to write a scheduled task which will read database columns and rasie a request to create users.
    I dont want to use UnauthenticatedSelfService api.
    Please suggest a way to achive that. any pointer / sample coede / suggestion  is helpful.

    Here are links to creating a request for a role and a resource.  https://java.net/projects/openptk/sources/svn/show/branches/Oracle/OIM11g/examples/java/OIMClient/src/oim/client/request?rev=1402
    I would suggest you start with these and modify the parameters to be for a user.  You will have to try some trial and error to get it working, unless someone already has it available.  And so far, no one who is posting does.  Give it a shot.  You can always create an SR with oracle and ask for assistance.
    -Kevin

  • Display Custom Error Message in OIM 11g

    Hi,
    I'm trying to display an error message from a validation event handler but seems that am missing something. When the "oracle.iam.platform.kernel.ValidationFailedException" is thrown from a validation handler an error message is displayed: "An error occurred". If an error code is provided (see code below) then the message looks like: "An error occurred. The corresponding error code is ERR-0001". I guess that some resource bungle with corresponding messages should be provided.
    the code used:
    package test;
    public class UserGeneralValidationHandler implements oracle.iam.platform.kernel.spi.ValidationHandler
    @Override
    public void validate(long processId, long eventId, Orchestration orchestration)
                   throws ValidationException
    String errorCode = "ERR-0001";
    String message = "Simple validation message.";
    ValidationFailedException ex = new ValidationFailedException(message);
    ex.setProcessID(processId);
    ex.setErrorCode(errorCode);
    throw ex;
    Q:
    1.What is missing for complete solution?
    2.What is the algorithm that used by OIM to find default or non default resource bundle?
    3.How to change out-of-box validation messages? For a sample "The organization ABC does not exist." message is shown if non existing organization is provided during user creation and I'd like to have a different one.
    Regards
    Serge

    rename OIMUI.jar  to OIMUI.zip
    find logging_en and loggin.properties.
    Modify the "IAM-2050512" error message with your custom message
    Find Agent and agent_en.properties.
    Find Note[ERROR_SUBMITTING_REQUEST].text.  Modify the message. Make sure the message must be the same with in logging.properties("IAM_2050512")
    Deploy
    change the  OIMUI.zip to jar
    replace the existing OIMUI.jar
    login to weblogic  and redeploy OIM (oim.ear)
    no need to restart OIM server.
    Test:
    create a request in web console again, you must see the custom message when you hit the submit button
    hope this helps.
    -rad

  • Request Payload OtherDetails -OIM 11g R2

    Hi,
    I have followed link to set data element in paylod:
    http://bbagaria.blogspot.com/2011/08/how-to-extend-payload-from-oim-to-soa.html
    I had a requirement of showing up 3 attributes on request which i have set like:
    detailtype.setName(“Custom Attribute1”);
    detailtype.setValue(“Custom VALUE1”);
    detailtype.setName(“Custom Attribute2”);
    detailtype.setValue(“Custom VALUE2”);
    detailtype.setName(“Custom Attribute3”);
    detailtype.setValue(“Custom VALUE3”);
    detailtypesList.add(detailtype);
    payload.setOtherDetails(otherDetails);
    Now what should i do inorder to retrieve in Task Title section of approval task? All I can see in my configuration under OtherDetails section is Name and Value -should I manually create these custom Attributes/values in approval task and redeploy the composite or is there any way to retrieve them during run time on task Title?
    Thanks

    Hi ,
    Thanks for your reply .. I am able to understand the scenario what you are trying to explain .. I tried to do the same ...but in my scenario ,this is the problem that I am facing ..
    1)When a user modifies only his First Name then it works fine and gets auto approved .
    2)When a user modifies only his Last Name then it works fine and goes for approval and waits till it gets approved.
    3)Now the problem is when a user modifies both his First Name and Last Name and submits as a single request , how to handle this ? In this case the First Name should get committed and the Last Name should not get committed .. But he has submitted only a single request .. so how to handle this scenario ?How to divide a single request into two to commit one attribute and not commit another one ?

  • Request dataset in OIM 11gr2

    Hi Experts,
    I have integrated OIM 11gR2 with Siebel and able to provision by xelsysadm. My requirement is End User will be raising request for siebel resource and approval workflow associated with is triggered.
    1. End user raising the request is able to view the process form, I need to restrict few attributes i.e. position and responsiblity should not be visible to end user
    2. Position and Responsibility should be provided by approver (this is specified in request data set of provision resource)
    3. As per Oracle document there is no request data set for PROVISION and MODIFY resource. What is the replacement for this?
    4. After Request is raised it has been assgined to xelsysadm, how do i control the approval ?
    Regards
    A Abhinay

    1. End user raising the request is able to view the process form, I need to restrict few attributes i.e. position and responsiblity should not be visible to end userEnd user will see Application Instance Form and you can customize the UI to hide attributes
    2. Position and Responsibility should be provided by approver (this is specified in request data set of provision resource)
    Make your Java Code/Beans/Expression to show/hide attributes conditionally.
    3. As per Oracle document there is no request data set for PROVISION and MODIFY resource. What is the replacement for this?Application Instance Form
    4. After Request is raised it has been assgined to xelsysadm, how do i control the approval ?Approval Policies

  • Custom Schedule Job Issue - OIM 11g R2

    Hi All,
    I deployed a custom schedule task to assign a role to a user and created a schedule job for the same.
    The problem is my job is executing twice even though I ran it for one time and getting exception saying Role already assigned..
    please tell me how to make execute job only once on one execution
    Thanks in advance
    Praveen...

    sorry, for late reply...
    I tried restarting servers... no luck....
    1)java code
    public class TerminateAbscondUsers extends TaskSupport
    ODLLogger logger = ODLLogger.getODLLogger("OIMCP.SAPH");
    UserManager usrMgr = Platform.getService(UserManager.class);
    public HashMap getAttributes()
    return null;
    public void setAttributes()
    public void execute(HashMap hashMap)
    logger.info("Entered TerminateAbscondUsers:execute() method");
    Long abscondDays = (Long)hashMap.get("AbscondDays");
    logger.info("Abscond Days = "+ abscondDays);
    List<User> resultUserList = getUserList();
    disableUsers(resultUserList,abscondDays);
    logger.info("Left TerminateAbscondUsers:execute() method");
    public List<User> getUserList()
    logger.info("Entered TerminateAbscondUsers:getUserList() method");
    HashSet<String> reqAttr = new HashSet<String>();
    reqAttr.add("User Login");
    reqAttr.add("Status");
    //reqAttr.add("EventDate");
    reqAttr.add("DateOfAbsconding");
    List<User> usrList = new ArrayList<User>();
         SearchCriteria usrIDSearchCriteria = new SearchCriteria("Action","AB",SearchCriteria.Operator.EQUAL);
         try
              usrList = usrMgr.search(usrIDSearchCriteria,reqAttr,null);
              logger.info("Absconded userList size ="+ usrList.size());
         catch(UserSearchException use)
              logger.info("UserSearchExecption = " + use.getMessage());
    catch(Exception e)
              logger.info("Exception TerminateAbscondUsers:getUserList() = " +Arrays.toString(e.getStackTrace()));
         logger.info("Absconded usrList = " + usrList.toString());
         logger.info("Left TerminateAbscondUsers:getUserList() method");
         return usrList;
    public void disableUsers(List<User> resultUserList, Long abscondDays)
    logger.info("Entered TerminateAbscondUsers:disableUsers() method");
         UserManagerResult localUserManagerResult1;
         UserManagerResult localUserManagerResult2;
    try
              for(int i=0;i<resultUserList.size();i++)
                   String userLogin = resultUserList.get(i).getLogin();
                   logger.info("User Login = " + userLogin);
                   Long userKey = (Long)resultUserList.get(i).getAttribute("usr_key");
                   String strUsrKey = userKey.toString();
                   logger.info("User key = " + strUsrKey);
                   //Date abscondDate = (Date)resultUserList.get(i).getAttribute("EventDate");
                   Date abscondDate = (Date)resultUserList.get(i).getAttribute("DateOfAbsconding");
                   Date currentDate = new Date();
                   Long diffDate = (Long)((currentDate.getTime() - abscondDate.getTime())/(1000*60*60*24));
                   if( diffDate > abscondDays)
                        logger.info("diff date = " + diffDate);
                        User localUser = new User(strUsrKey);
                        localUser.setAttribute("End Date",(Object)currentDate);
                        localUser.setAttribute("Action","TE");
                        localUserManagerResult1 = usrMgr.modify(localUser);
                        logger.info("Set End Date operation status = " + localUserManagerResult1.getStatus());
                        localUserManagerResult2 = usrMgr.disable(userLogin,true);
                        logger.info("Terminate operation status = " + localUserManagerResult2.getStatus());
    catch(ValidationFailedException vfe)
    logger.info("ValidationFailedException = " + vfe.getMessage());
    catch(UserDisableException ude)
    logger.info("UserDisableException = " + ude.getMessage());
    catch(NoSuchUserException nsue)
    logger.info("NoSuchUserException = " + nsue.getMessage());
    catch(UserModifyException ume)
    logger.info("UserModifyException = " + ume.getMessage());
    catch(Exception e)
         logger.info("Exception TerminateAbscondUsers:getUserList() = " +Arrays.toString(e.getStackTrace()));
         logger.info("Left TerminateAbscondUsers:disableUsers() method");
    2) METADATA XML
    <scheduledTasks xmlns="http://xmlns.oracle.com/oim/scheduler">
    <task>
    <name>Terminate Abscond Users</name>
    <class>com.hdfclife.oracle.iam.customScheduler.user.TerminateAbscondUsers</class>
    <description>Terminate Abscond Users</description>
    <retry>5</retry>
    <parameters>
    <number-param required="true" helpText="No. of days since Absconded">AbscondDays</number-param>
    </parameters>
    </task>
    </scheduledTasks>
    Thanks in Advance...

Maybe you are looking for