Direct provisioning through API - OIM 11g
Hi,
OIM 11g here. I am trying to use the APIs to make direct provisioning. What i have done till now:
tcUserOperationsIntf userIntf = (tcUserOperationsIntf)ioUtilityFactory.getUtility("Thor.API.Operations.tcUserOperationsIntf");
ResourceData rd = userIntf.provisionResource(userkey, objectkey);
now, in the ResourceData object i have two ids, obiKey and ouiKey. Now i need to extract the process instance key with those numbers. How can i do this?
Using the userIntf getObjects method i can get the list of objects provisioned, iterate over it and retrieve the process instance key of the object which matches obiKey and ouiKey. Is there an easier method to do this?
Another question, which one is the process instance key, ORC_KEY or ORC_TOS_INSTANCE_KEY ?
Last, how do i trigger the task responsible for provisioning given the filled process form?
thx in advance
Ok, i guess the process instance key is ORC_KEY.
Now i am trying to provision through APIs a resource object (say AD User) to an OIM user. I have used the provisionResource(userkey, objectkey) method, but the Create User task is not put in the Resource History (there is only the System Validation Task), and i don't know how to look for it's task id to add it manually.
Similar Messages
-
How to create Approval Policies using API - OIM 11g R2
Hi,
Could you please let me know how to create the Approval Policies using java API code in OIM 11g R2.
ThanksHi Karthik,
Thanks for sharing the link. Could you please let me know how to specify the rule condition while creating the Approval Policy using the API given in this link. -
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 -
All,
Had a query regarding provisioning a resource to a user through OIM API. iam using the provisionObject in tcUserOperationsIntf which provisions a new resource for the user . I would like to pass in process form values before this provisions resource to the user . Currently i see that i can only set values on process form only when the provisioning happens.
i require this because i want to choose which provisioning process to pick up based on a value on process form
ThanksSomething like that will also work . But whats complicating my requirement little bit , i have a single process form shared by two different process definition for this resource object . If i choose pre-population , i should prepoulate only for one process definition not the default process definition.
Message was edited by:
rufus -
Requesting to remove roles for the direct report's in OIM 11g R2
Is it possible to have the manager log into OIM and request to remove roles for one of his/her direct reports? You can only add roles from the catalog interface.
ThanksSearch the user
Go to the Roles Tab
Select the Role
"Remove Role" link will get enabled
Click that link
Submit
Request ID will be generated
For SELF REQUEST:
Go to My Access Form
And do the same thing -
OID Provisioning issue on OIM 11g
Hi,
I have ran the target user recon for OID and noticed from the events that users are not linked. I tried assigning OID User resource from the provisioning workflow on the admin console but I am seeing the following the issue:
DOBJ.ORC_NO_ORDER
An error occurred while retrieving process information null : null
Please help.Hi
Can you verify On your OID resource object in desing console 'Order For User' is chosen.
Regards
user12841694 -
Exchange Provisioning Issue in OIM 11g
Hi ,
I am trying to do AD and Exchange provisioning. AD User is getting provisioned succesfully, However Exchange is getting rejected. That particular Create Mailbox is getting rejected, Can you please help me here.
Here are logs trace,
Running Create mailbox
<Jul 16, 2012 11:19:08 AM EDT> <Error> <OIMCP.MEXC> <BEA-000000> <====================================================>
<Jul 16, 2012 11:19:08 AM EDT> <Error> <OIMCP.MEXC> <BEA-000000> <com.thortech.xl.integration.Exchange.tcExchangeTasks : createMailboxForADUser : Insufficient data, may be all mandatory field are not present : :Does not exist>
<Jul 16, 2012 11:19:08 AM EDT> <Error> <OIMCP.MEXC> <BEA-000000> <====================================================
>
<Jul 16, 2012 11:19:08 AM EDT> <Error> <OIMCP.MEXC> <BEA-000000> <================= Start Stack Trace =======================>
<Jul 16, 2012 11:19:08 AM EDT> <Error> <OIMCP.MEXC> <BEA-000000> <com.thortech.xl.integration.Exchange.tcExchangeTasks : createMailboxForADUser>
<Jul 16, 2012 11:19:08 AM EDT> <Error> <OIMCP.MEXC> <BEA-000000> <Does not exist>
<Jul 16, 2012 11:19:08 AM EDT> <Error> <OIMCP.MEXC> <BEA-000000> <Description : Does not exist>
<Jul 16, 2012 11:19:08 AM EDT> <Error> <OIMCP.MEXC> <BEA-000000> <com.thortech.xl.exception.ProvisioningException: Does not exist
at com.thortech.xl.integration.Exchange.tcExchangeTasks.getObjectByObjectGUID(Unknown Source)
at com.thortech.xl.integration.Exchange.tcExchangeTasks.createMailboxForADUser(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.thortech.xl.adapterGlue.ScheduleItemEvents.adpMEXCCREATEMAILBOX.CREATEMAILBOX(adpMEXCCREATEMAILBOX.java:708)
at com.thortech.xl.adapterGlue.ScheduleItemEvents.adpMEXCCREATEMAILBOX.implementation(adpMEXCCREATEMAILBOX.java:199)
at com.thortech.xl.client.events.tcBaseEvent.run(tcBaseEvent.java:196)
at com.thortech.xl.dataobj.tcDataObj.runEvent(tcDataObj.java:2492)
at com.thortech.xl.dataobj.tcScheduleItem.runMilestoneEvent(tcScheduleItem.java:2917)
at com.thortech.xl.dataobj.tcScheduleItem.eventPostInsert(tcScheduleItem.java:547)
at com.thortech.xl.dataobj.tcDataObj.insert(tcDataObj.java:602)
at com.thortech.xl.dataobj.tcDataObj.save(tcDataObj.java:474)
at com.thortech.xl.dataobj.tcORC.insertNonConditionalMilestones(tcORC.java:844)
at com.thortech.xl.dataobj.tcORC.completeSystemValidationMilestone(tcORC.java:1159)
at com.thortech.xl.dataobj.tcOrderItemInfo.completeCarrierBaseMilestone(tcOrderItemInfo.java:735)
at com.thortech.xl.dataobj.tcOrderItemInfo.eventPostInsert(tcOrderItemInfo.java:171)
at com.thortech.xl.dataobj.tcUDProcess.eventPostInsert(tcUDProcess.java:235)
at com.thortech.xl.dataobj.tcDataObj.insert(tcDataObj.java:602)
at com.thortech.xl.dataobj.tcDataObj.save(tcDataObj.java:474)
at com.thortech.xl.dataobj.tcTableDataObj.save(tcTableDataObj.java:2906)
at com.thortech.xl.dataobj.tcORC.autoDOBSave(tcORC.java:3002)
at com.thortech.xl.dataobj.util.tcOrderPackages.createOrder(tcOrderPackages.java:526)
at com.thortech.xl.dataobj.util.tcOrderPackages.orderPackageForUser(tcOrderPackages.java:177)
at com.thortech.xl.dataobj.tcOIU.provision(tcOIU.java:527)
at com.thortech.xl.dataobj.tcOIU.eventPostInsert(tcOIU.java:303)
at com.thortech.xl.dataobj.tcDataObj.insert(tcDataObj.java:602)
at com.thortech.xl.dataobj.tcDataObj.save(tcDataObj.java:474)
at com.thortech.xl.dataobj.tcTableDataObj.save(tcTableDataObj.java:2906)
at com.thortech.xl.dataobj.tcUserProvisionObject.insertImplementation(tcUserProvisionObject.java:283)
at com.thortech.xl.dataobj.tcDataObj.insert(tcDataObj.java:591)
at com.thortech.xl.dataobj.tcDataObj.save(tcDataObj.java:474)
at oracle.iam.accesspolicy.impl.handlers.provisioning.ProvisionAccountActionHandler.execute(ProvisionAccountActionHandler.java:104)
at oracle.iam.accesspolicy.impl.handlers.provisioning.ProvisionAccountActionHandler.execute(ProvisionAccountActionHandler.java:35)Now I get this error, What is missing here?
Running Create mailbox
<Jul 16, 2012 1:25:20 PM EDT> <Error> <OIMCP.MEXC> <BEA-000000> <====================================================>
<Jul 16, 2012 1:25:20 PM EDT> <Error> <OIMCP.MEXC> <BEA-000000> <com.thortech.xl.integration.ActiveDirectory.tcADUtilLDAPController : connectToAvailableAD : Empty Argum
ents Passed in either Root Context,Admin FQDN,Admin Password,Server Address,Port Number in the IT Resource. >
<Jul 16, 2012 1:25:20 PM EDT> <Error> <OIMCP.MEXC> <BEA-000000> <====================================================
>
<Jul 16, 2012 1:25:20 PM EDT> <Error> <OIMCP.MEXC> <BEA-000000> <====================================================>
<Jul 16, 2012 1:25:20 PM EDT> <Error> <OIMCP.MEXC> <BEA-000000> <com.thortech.xl.integration.ActiveDirectory.tcADUtilLDAPController : connectToAvailableAD : The error o
ccured in tcADUtilLDAPController::connectToAvailableAD():Empty Arguments Passed in either Root Context,Admin FQDN,Admin Password,Server Address,Port Number in the IT Re
source. >
<Jul 16, 2012 1:25:20 PM EDT> <Error> <OIMCP.MEXC> <BEA-000000> <====================================================
>
<Jul 16, 2012 1:25:20 PM EDT> <Error> <OIMCP.MEXC> <BEA-000000> <================= Start Stack Trace =======================>
<Jul 16, 2012 1:25:20 PM EDT> <Error> <OIMCP.MEXC> <BEA-000000> <com.thortech.xl.integration.ActiveDirectory.tcADUtilLDAPController : connectToAvailableAD>
<Jul 16, 2012 1:25:20 PM EDT> <Error> <OIMCP.MEXC> <BEA-000000> <Empty Arguments Passed in either Root Context,Admin FQDN,Admin Password,Server Address,Port Number in t
he IT Resource. >
<Jul 16, 2012 1:25:20 PM EDT> <Error> <OIMCP.MEXC> <BEA-000000> <Description : Empty Arguments Passed in either Root Context,Admin FQDN,Admin Password,Server Address,Po
rt Number in the IT Resource. >
<Jul 16, 2012 1:25:20 PM EDT> <Error> <OIMCP.MEXC> <BEA-000000> <java.lang.Exception: Empty Arguments Passed in either Root Context,Admin FQDN,Admin Password,Server Add
ress,Port Number in the IT Resource.
at com.thortech.xl.integration.ActiveDirectory.tcADUtilLDAPController.connectToAvailableAD(Unknown Source)
at com.thortech.xl.integration.ActiveDirectory.tcADUtilLDAPController.search(Unknown Source)
at com.thortech.xl.integration.Exchange.tcExchangeTasks.getExchMailboxStores(Unknown Source)
at com.thortech.xl.integration.Exchange.tcExchangeTasks.createMailboxForADUser(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.thortech.xl.adapterGlue.ScheduleItemEvents.adpMEXCCREATEMAILBOX.CREATEMAILBOX(adpMEXCCREATEMAILBOX.java:625)
at com.thortech.xl.adapterGlue.ScheduleItemEvents.adpMEXCCREATEMAILBOX.implementation(adpMEXCCREATEMAILBOX.java:188)
at com.thortech.xl.client.events.tcBaseEvent.run(tcBaseEvent.java:196) -
OIM 11g - Mail Notification for multiple resources
User will be provisioned to 5 target system through access policies.So instead of sending 5 different mail notifications to the manager on the Create User task about the account creation, is it possible to send one consolidated mail about the provisioned resources in OIM 11g.
Hi,
How abt for the following requirement for sending single mail for multiple resources provisioned.
We have 3 Access Policies which is defined as follows.
1) Policy 1 -> R1,R2,R3 Resources
2) Policy 2 -> R3,R5 Resources
3) Policy 3 -> R1,R4 Resources
In such a case we will not be able to put dependencies on Resources and adding a task for sending email. -
HI all,
Please help me with a SQL query which fetches all users with a specific resource in provisioning state in OIM 11g.
Thanks.Hi Gyan,
Thankyou it helped us a lot.
But I started working with OIM apis but I am not aware of the back end flow.
lets say when a user is being created, a request being raised untill approved, or a resource is provisioned ...I want to know what keys will generated and where they gets stored.
It would be very helpful for me if u explain and explain some more scenrios.
Thanks in advance. -
OIM-AD connector Issues in OIM 11g
Hi
We are trying to provision user from OIM 11G to AD using Administration Tab of Admin Console.
As part of ADITResource configuration , follwoing fields are included.In the Enterprise manager OIM server log, we are getting the below error message.
Error Message In Enterprise manager OIM server log -
Module OIMCP.ADCS
Thread ID [ACTIVE].ExecuteThread: '3' for queue: 'weblogic.kernel.Default (self-tuning)'
Message com.thortech.xl.integration.ActiveDirectory.tcUtilADTasks : createUser : Wrong Value Specified in Root Context of IT ResourceOr Organization DN_
However, in Admin console Selfservice-->Task-->Provisioning -->Shows error as
Response:Connection Error encountered
Response Description: Error encountered while connecting to target system
We have sucessfully tested the connection using Diagnoistic Dashboard (XIMDD) & Ldap Browser.
IT Resource Details-
Parameter Value
AD Sync installed (yes/no) no
ADAM LockoutThreshold Value 5
ADDisableAttr Lookup Definition Lookup.ADProvisioning.DisableAttrLookup
ADGroup LookUp Definition Lookup.ADReconciliation.GroupLookup
Abandoned connection timeout 600
Admin FQDN cn=administrator,cn=Users,dc=example,dc=com
Admin Login administrator
Admin Password ********
Allow Password Provisioning yes
AtMap ADGroup AtMap.ADGroup
AtMap ADUser AtMap.AD
AtMap Group AtMap.ADGroup
Atmap ADOrg AtMap.ADOrg
Backup Server URL [NONE]
Connection pooling supported false
Connection wait timeout 100
Custom Attribute Name
CustomizedReconQuery
Inactive connection timeout 600
Initial pool size 1
Invert Display Name no
LDAP Connection Timeout 30000
Last Modified Time Stamp 0
Last Modified Time Stamp Group 0
Max pool size 30
Min pool size 2
Native connection pool class definition
OIM User UDF
Pool excluded fields
Pool preference Default
Port Number 389
Remote Manager Prov Lookup AtMap.AD.RemoteScriptlookUp
Remote Manager Prov Script Path
ResourceConnection class definition com.thortech.xl.integration.ActiveDirectory.ADResourceConnectionImpl
Root Context dc=example,dc=com
SSL Port Number 636
Server Address WIN-PEUB23TMMT4.example.com
Target Locale: Country US
Target Locale: Language en
Target Locale: TimeZone GMT
Target supports only one connection false
Timeout check interval 100
UPN Domain example.com
Use Disable Attr false
Use SSL false
Validate connection on borrow true
isADAM no
isUserDeleteLeafNode no
For Organization we have selected ou=Test,dc=example,dc=com in our lookup defination
Please suggest....
ThanksIt's not Key, it's the Scheduled Task attribute "IT Resource Name"
Documentation: http://download.oracle.com/docs/cd/E11223_01/doc.910/e11197/using_conn.htm#CHDFBAAC
Here is the documentation on the lookup format: http://download.oracle.com/docs/cd/E11223_01/doc.910/e11197/intro.htm#CHDHCCJD
-Kevin -
Direct provisioing using API in OIM 11g
Hi Experts,
I am facing couple of issues.
*1)* I am trying to provision a resource direcly using API's in OIM 11g. Here I do not have any object form for this resource but I have a process form with some pre-population adapters.
And I am trying to use the below code for direct provisioining.
Hashtable objectHash = new Hashtable();
objectHash.put("Objects.Name", objectName);
tcResultSet objectResultSet = objIntf.findObjects(objectHash);
long objectKey = objectResultSet.getLongValue("Objects.Key");
com.thortech.xl.vo.ResourceData data = userIntf.provisionResource(userKey, objectKey);
long userObjectInstanceKey = Long.parseLong(data.getOiuKey());
long objectInstanceKey = Long.parseLong(data.getObiKey());
And I am getting nulls for the attributes userObjectInstanceKey & objectInstanceKey .
Please let me know how to provision a resource which has no object form but has some pre-population adapters using API .
*2)* I am trying to provision a resource direcly using API's in OIM 11g. Here I do have an object form for this resource which has one of the attribute as of type lookup.
ResourceData data = userIntf.provisionResource(userKey, resourceKey);
long userObjectInstanceKey = Long.parseLong(data.getOiuKey());
long objectInstanceKey = Long.parseLong(data.getObiKey());
Hashtable objectHash = new Hashtable();
objectHash.put("UD_ADGROUP_NAME",groupName);
In this case I am getting objectInstanceKey properly but it is not seeting lookup field value but it is setting all other fields on the object form correctly.
How to set a field of type lookup on the object form while provisioing a resource directly using API's.
Thanks a lot for your help.947670 wrote:
Hi Pallavi,
I am not populating any object form. I am trying for direct provisioning a resource thru OIM API's.
Hence, I need populate all of the process form fields inorder to skip the approval flow. So, I was using setProcessFormData method.
Here is what happening.
1) My resource has a request dataset which has only one field called "Group Name".
2) My resource has a process form with the fields name UD_GROUP_NAME, UD_GROUP_DESCRIPTION, UD_GROUP_OWNER.
3) When I use the below code, I was able to populate the fields UD_GROUP_DESCRIPTION, UD_GROUP_OWNER (Because pre-populate adapters are getting invoked) as they did not exist on the request data.
tcFormInstanceOperationsIntf formInstanceOps=Platform.getService(tcFormInstanceOperationsIntf.class);
ResourceData data = userIntf.provisionResource(userKey, resourceKey);
long userObjectInstanceKey = Long.parseLong(data.getOiuKey());
long objectInstanceKey = Long.parseLong(data.getObiKey());
Hashtable objectHash = new Hashtable();
objectHash.put("*UD_ADGROUP_NAME*",groupName);
formInstanceOps.setProcessFormData(objectInstanceKey, objectHash);
4) I am having this issue only with the fields that are exist on the request dataset. Since, UD_GROUP_NAME exist on the request dataset, even if I try to set some value in the process form, it is not taking.
Using API's, I am not able to populate any of the attributes on the process form that are exist on the request dataset.
How to solve this issue.1. Check the process form field name.
2. Use tcUserOperationsIntfAPI Method provisionObject(userKey,ObjectKey)
userIntf.provisionObject(userKey, objectKey);
3. Get the process-instance key.
tcResultSet objResultSet = userIntf.getObjects(userKey);
int objCount = objResultSet.getRowCount();
for (int count = 0; count < objCount; count++) {
objResultSet.goToRow(count);
if (objResultSet.getStringValue("Objects.Name").equalsIgnoreCase(resourceObjectName)){
processInstanceKey = objResultSet.getLongValue("Process Instance.Key");
4. Use tcFormInstanceOperationsIntf API method setProcesFormData(processInstanceKey,dataMap)
Hope this helps you. -
OIM 11g-configure SoD so that it works for direct provisioning of the roles
Dear All,
page 23-3 of Developer's Guide (OIM 11g) provides information regarding configuration of the SoD for Direct provisioning of the resources. How to configure SoD so that it works for direct provisioning of the roles?
Thank you for your time
MariaRajiv,
I did not find the documentation regarding this. But I hoped I will.
In my project we assign roles directlly, not resources.
I suspect the integration with Role Manager is required in this case. SoD module in OIA should be used then.
Maria -
TcObjectNotFoundException Error when provisioning through OIM API
Hi,
I am trying to provision resources using OIM client API. I am using the following code which is generating the exception mentioned after the code snippet:
*******************************Code*******************************
java.util.Hashtable env = new java.util.Hashtable();
env.put(oracle.iam.platform.OIMClient.JAVA_NAMING_FACTORY_INITIAL,
oimInitialContextFactory);
env.put(oracle.iam.platform.OIMClient.JAVA_NAMING_PROVIDER_URL, oimURL);
oracle.iam.platform.OIMClient client = new oracle.iam.platform.OIMClient(env);
Thor.API.Operations.tcUserOperationsIntf userIntf = client.getService(Thor.API.Operations.tcUserOperationsIntf.class);
Thor.API.Operations.tcObjectOperationsIntf objIntf = client.getService(Thor.API.Operations.tcObjectOperationsIntf.class);
Thor.API.Operations.tcFormInstanceOperationsIntf formIntf = client.getService(Thor.API.Operations.tcFormInstanceOperationsIntf.class);
Thor.API.Operations.tcProvisioningOperationsIntf provIntf = client.getService(Thor.API.Operations.tcProvisioningOperationsIntf.class);
Thor.API.Operations.tcUserOperationsIntf userOper = client.getService(Thor.API.Operations.tcUserOperationsIntf.class);
java.util.Hashtable mhSearchCriteria = new java.util.Hashtable();
Hashtable objectHash = new Hashtable();
objectHash.put("Objects.Name", "ITAX_GTC");
com.thortech.xl.vo.ResourceData data = userIntf.provisionResource(Long.parseLong(userId), objectKey);
long userObjectInstanceKey = Long.parseLong(data.getOiuKey());
long objectInstanceKey = Long.parseLong(data.getObiKey());
Hashtable inputHash = new Hashtable();
//Populate the entry below with the object form data
for(int b = 3; b < row.length; b++)
inputHash.put(header[b], row[b]);
//Sets the object data
formIntf.setProcessFormData(objectInstanceKey, inputHash);
Thor.API.Exceptions.tcObjectNotFoundException
at weblogic.rjvm.ResponseImpl.unmarshalReturn(ResponseImpl.java:234)
at weblogic.rmi.cluster.ClusterableRemoteRef.invoke(ClusterableRemoteRef.java:348)
at weblogic.rmi.cluster.ClusterableRemoteRef.invoke(ClusterableRemoteRef.java:259)
at Thor.API.Operations.tcUserOperationsIntf_e9jcxp_tcUserOperationsIntfRemoteImpl_1035_WLStub.revokeObjectx(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 $Proxy2.revokeObjectx(Unknown Source)
at Thor.API.Operations.tcUserOperationsIntfDelegate.revokeObject(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:120)
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 $Proxy3.revokeObject(Unknown Source)
at com.infotech.tra.organization.RoleAssignment.ProvisionResources(RoleAssignment.java:1013)
at com.infotech.tra.organization.RoleAssignment.main(RoleAssignment.java:48)
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.eclipse.jdt.internal.jarinjarloader.JarRsrcLoader.main(JarRsrcLoader.java:56)
Caused by: Thor.API.Exceptions.tcObjectNotFoundException
at com.thortech.xl.ejb.beansimpl.tcUserOperationsBean.revokeObject(tcUserOperationsBean.java:3184)
at Thor.API.Operations.tcUserOperationsIntfEJB.revokeObjectx(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 $Proxy344.revokeObjectx(Unknown Source)
at Thor.API.Operations.tcUserOperationsIntf_e9jcxp_tcUserOperationsIntfRemoteImpl.__WL_invoke(Unknown Source)
at weblogic.ejb.container.internal.SessionRemoteMethodInvoker.invoke(SessionRemoteMethodInvoker.java:40)
at Thor.API.Operations.tcUserOperationsIntf_e9jcxp_tcUserOperationsIntfRemoteImpl.revokeObjectx(Unknown Source)
at Thor.API.Operations.tcUserOperationsIntf_e9jcxp_tcUserOperationsIntfRemoteImpl_WLSkel.invoke(Unknown Source)
at weblogic.rmi.internal.BasicServerRef.invoke(BasicServerRef.java:667)
at weblogic.rmi.cluster.ClusterableServerRef.invoke(ClusterableServerRef.java:230)
at weblogic.rmi.internal.BasicServerRef$1.run(BasicServerRef.java:522)
at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:363)
at weblogic.security.service.SecurityManager.runAs(SecurityManager.java:146)
at weblogic.rmi.internal.BasicServerRef.handleRequest(BasicServerRef.java:518)
at weblogic.rmi.internal.wls.WLSExecuteRequest.run(WLSExecuteRequest.java:118)
at weblogic.work.ExecuteThread.execute(ExecuteThread.java:209)
at weblogic.work.ExecuteThread.run(ExecuteThread.java:178)To set the form data, you need the "Process Instance.Key" and not the object instance key. This is the code i use and i've replaced your data with some of the entries here:
String resource = "ITAX_GTC";
String userID = "JSMITH";
Map map = new HashMap();
map.put("Objects.Name",resource);
tcResultSet set = objIntf.findObjects(map);
long resourceKey = set.getLongValue("Objects.Key");
Set<String> attrNames = new HashSet<String>();
attrNames.add(UserManagerConstants.AttributeName.USER_KEY.getId());
HashMap searchCriteria = new HashMap();
searchCriteria.put("Objects.Name",resource);
int counter = 0;
String[] users = new String[] {userID};
for (String userID:users){
try {
counter++;
User user = usermgr.getDetails(userID, attrNames, true);
long objectInstanceKey = userIntf.provisionObject(Long.parseLong(user.getEntityId()), resourceKey);
System.out.println("objectInstanceKey[" + objectInstanceKey + "]");
set = provIntf.findObjects("Revoke", new String[]{ user.getEntityId() }, "U", searchCriteria);
for (int i=0;i<set.getTotalRowCount();i++){
set.goToRow(i);
outputResultSet(set, i);
if (set.getLongValue("Users-Object Instance For User.Key")==objectInstanceKey){
map = new HashMap();
//Populate the entry below with the object form data
for(int b = 3; b < row.length; b++){
map.put(header[b], row[b]);
formIntf.setProcessFormData(set.getLongValue("Process Instance.Key"), map);
} catch (Exception e) {
System.out.println(e.getLocalizedMessage());
See if that helps.
-Kevin -
Creating a Request via OIM 11g API
I'm trying to create a request in OIM using the API. I found this post ( OIM 11g - Setting Process Form Data through Request API ) which has the code to do it but I'm getting an error:
Here is what I have
OIMClient client = getOIMClient(url, username, password);
long resKey = 0L;
String str = null;
String resourceKey = null;
Map<String, String> searchMap = new HashMap<String, String>();
tcResultSet resultSet = null;
RequestData requestData = null;
Beneficiary beneficiary = null;
RequestBeneficiaryEntity entity = null;
List<Beneficiary> beneficiaryList = new ArrayList<Beneficiary>();
List<RequestBeneficiaryEntity> entityList = null;
List<RequestBeneficiaryEntityAttribute> entityAttrList = null;
String RESOURCE = "TESTRESOURCE_GTC";
tcITResourceInstanceOperationsIntf operations = client.getService(tcITResourceInstanceOperationsIntf.class);
Map<String, String> conditions = new HashMap<String, String>();
conditions.put("IT Resources.Name", "TESTRESOURCE_GTC");
resultSet = operations.findITResourceInstances(conditions);
resKey = resultSet.getLongValue("IT Resource.Key");
resourceKey = Long.toString(resKey);
RequestBeneficiaryEntityAttribute parantAttr = new RequestBeneficiaryEntityAttribute();
parantAttr.setType(TYPE.String);
parantAttr.setName("Title");
parantAttr.setValue("Mr.");
entityAttrList = new ArrayList<RequestBeneficiaryEntityAttribute>();
entityAttrList.add(parantAttr);
entity = new RequestBeneficiaryEntity();
entity.setEntityKey(resourceKey);
entity.setEntityType(RequestConstants.RESOURCE);
entity.setEntitySubType(RESOURCE);
entity.setEntityData(entityAttrList);
entityList = new ArrayList<RequestBeneficiaryEntity>();
entityList.add(entity);
System.out.println("*********** USR KEY" + usrKey);
beneficiary = new Beneficiary();
beneficiary.setBeneficiaryType(Beneficiary.USER_BENEFICIARY);
beneficiary.setBeneficiaryKey(usrKey);
beneficiary.setTargetEntities(entityList);
beneficiaryList.add(beneficiary);
requestData = new RequestData();
requestData.setRequestTemplateName("Self-Request Resource");
requestData.setJustification("Test");
requestData.setBeneficiaries(beneficiaryList);
UnauthenticatedRequestService reqsrvc = client.getService(UnauthenticatedRequestService.class);
str = reqsrvc.submitRequest(requestData);
System.out.println("Value from submitRequest : '" + (str != null ? str : null) + "'");I'm getting
<Feb 14, 2012 4:53:24 PM EST> <Error> <oracle.iam.request.impl> <IAM-2050128> <Invalid beneficiary key was specified for Self-Request. >
oracle.iam.request.exception.InvalidRequestDataException: IAM-2050128:Invalid beneficiary key was specified for Self-Request.
I can see that USER KEY is getting populated.
Edited by: DJ on Feb 14, 2012 4:59 PM
Edited by: DJ on Feb 14, 2012 5:00 PMWhile creating a request to provision iPlanet User one of the errors I was getting:
oracle.iam.request.exception.RequestServiceException: IAM-2050061:Type mismatch for the attribute Server. The type passed is String, but the corresponding type in the data set is Long.:Server:String:Long
So I replaced the value of the attribute Server to the IT Resource.Key which is 5. After making the changes, it goes through approvals with no problems, but when I approve all the work items, it errors out with an error:
Error occurred while provisioning resource with key 45 to user 5
User Key is 45 and Resource Key is 5. I'm not sure why it swapped it.
Here is the code I'm using:
public static void createRequest(String userLogin, String templateName, String resourceName, HashMap<String, Object> attrs, OIMClient client) {
try {
String usrKey = searchUserByLogin(userLogin, client).get(0).getId();
long resKey = 0L;
String str = null;
String resourceKey = null;
Map<String, String> searchMap = new HashMap<String, String>();
tcResultSet resultSet = null;
RequestData requestData = null;
Beneficiary beneficiary = null;
RequestBeneficiaryEntity entity = null;
List<Beneficiary> beneficiaryList = new ArrayList<Beneficiary>();
List<RequestBeneficiaryEntity> entityList = null;
List<RequestBeneficiaryEntityAttribute> entityAttrList = new ArrayList<RequestBeneficiaryEntityAttribute>();
tcITResourceInstanceOperationsIntf operations = client == null ? Platform.getService(tcITResourceInstanceOperationsIntf.class) : client.getService(tcITResourceInstanceOperationsIntf.class);
Map<String, String> conditions = new HashMap<String, String>();
conditions.put("IT Resources.Name", resourceName);
resultSet = operations.findITResourceInstances(conditions);
resKey = resultSet.getLongValue("IT Resource.Key");
resourceKey = Long.toString(resKey);
for (String attr : attrs.keySet()) {
RequestBeneficiaryEntityAttribute parantAttr = new RequestBeneficiaryEntityAttribute();
if (attrs.get(attr) instanceof String) {
parantAttr.setType(TYPE.String);
parantAttr.setName(attr);
parantAttr.setValue(String.valueOf(attrs.get(attr)));
entityAttrList.add(parantAttr);
} else if (attrs.get(attr) instanceof Long) {
parantAttr.setType(TYPE.Long);
parantAttr.setName(attr);
parantAttr.setValue(String.valueOf(attrs.get(attr)));
entityAttrList.add(parantAttr);
} else {
// do nothing
entity = new RequestBeneficiaryEntity();
entity.setEntityKey(resourceKey);
entity.setEntityType(RequestConstants.RESOURCE);
entity.setEntitySubType(resourceName);
entity.setEntityData(entityAttrList);
entityList = new ArrayList<RequestBeneficiaryEntity>();
entityList.add(entity);
beneficiary = new Beneficiary();
beneficiary.setBeneficiaryType(Beneficiary.USER_BENEFICIARY);
beneficiary.setBeneficiaryKey(usrKey);
beneficiary.setTargetEntities(entityList);
beneficiaryList.add(beneficiary);
requestData = new RequestData();
requestData.setRequestTemplateName(templateName);
requestData.setJustification("Test");
requestData.setBeneficiaries(beneficiaryList);
System.out.println("Resource Keys " + resKey + " " + resourceKey);
System.out.println("User Key " + usrKey);
RequestService reqsrvc = client == null ? Platform.getService(RequestService.class) : client.getService(RequestService.class);
str = reqsrvc.submitRequest(requestData);
System.out.println("Value from submitRequest : '" + (str != null ? str : null) + "'");
} catch (Throwable t) {
t.printStackTrace();
}Edited by: DJ on Feb 16, 2012 5:01 PM -
Getting error while provisioning user to AD - OIM 11g R2
Hi,
I have installed the AD connector and I am able to do the user and group reconciliation between AD and OIM 11g R2.
But when I am trying to provision the user to AD, I am getting the below error :
oracle.iam.connectors.icfcommon.prov.ICProvisioningManager : createObject : Error while creating user[[
java.lang.NumberFormatException: null
at java.lang.Long.parseLong(Long.java:375)
at java.lang.Long.parseLong(Long.java:468)
at oracle.iam.connectors.icfcommon.prov.ICProvisioningManager.init(ICProvisioningManager.java:104)
at oracle.iam.connectors.icfcommon.prov.ICProvisioningManager.init(ICProvisioningManager.java:123)
at oracle.iam.connectors.icfcommon.prov.ICProvisioningManager.createObject(ICProvisioningManager.java:267)
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.thortech.xl.adapterGlue.ScheduleItemEvents.adpADIDCCREATEOBJECT.CREATEOBJECT(adpADIDCCREATEOBJECT.java:109)
at com.thortech.xl.adapterGlue.ScheduleItemEvents.adpADIDCCREATEOBJECT.implementation(adpADIDCCREATEOBJECT.java:54)
at com.thortech.xl.client.events.tcBaseEvent.run(tcBaseEvent.java:196)
at com.thortech.xl.dataobj.tcDataObj.runEvent(tcDataObj.java:2492)
at com.thortech.xl.dataobj.tcScheduleItem.runMilestoneEvent(tcScheduleItem.java:3148)
at com.thortech.xl.dataobj.tcScheduleItem.eventPostInsert(tcScheduleItem.java:716)
at com.thortech.xl.dataobj.tcDataObj.insert(tcDataObj.java:602)
at com.thortech.xl.dataobj.tcDataObj.save(tcDataObj.java:474)
at com.thortech.xl.dataobj.tcORC.insertNonConditionalMilestones(tcORC.java:847)
at com.thortech.xl.dataobj.tcORC.completeSystemValidationMilestone(tcORC.java:1162)
at com.thortech.xl.dataobj.tcOrderItemInfo.completeCarrierBaseMilestone(tcOrderItemInfo.java:757)
at com.thortech.xl.dataobj.tcOrderItemInfo.eventPostInsert(tcOrderItemInfo.java:173)
at com.thortech.xl.dataobj.tcUDProcess.eventPostInsert(tcUDProcess.java:235)
at com.thortech.xl.dataobj.tcDataObj.insert(tcDataObj.java:602)
at com.thortech.xl.dataobj.tcDataObj.save(tcDataObj.java:474)
at com.thortech.xl.dataobj.tcTableDataObj.save(tcTableDataObj.java:2910)
at com.thortech.xl.dataobj.tcORC.autoDOBSave(tcORC.java:3008)
at com.thortech.xl.dataobj.util.tcOrderPackages.createOrder(tcOrderPackages.java:471)
at com.thortech.xl.dataobj.util.tcOrderPackages.orderPackageForUser(tcOrderPackages.java:180)
at com.thortech.xl.dataobj.tcOIU.provision(tcOIU.java:639)
at com.thortech.xl.dataobj.tcOIU.eventPostInsert(tcOIU.java:357)
at com.thortech.xl.dataobj.tcDataObj.insert(tcDataObj.java:602)
at com.thortech.xl.dataobj.tcDataObj.save(tcDataObj.java:474)
at com.thortech.xl.dataobj.tcTableDataObj.save(tcTableDataObj.java:2910)
at com.thortech.xl.dataobj.tcUserProvisionObject.insertImplementation(tcUserProvisionObject.java:288)
at com.thortech.xl.dataobj.tcDataObj.insert(tcDataObj.java:591)
at com.thortech.xl.dataobj.tcDataObj.save(tcDataObj.java:474)
at oracle.iam.provisioning.spi.DOBProvisioningUtil.provisionObject(DOBProvisioningUtil.java:128)
at oracle.iam.provisioning.spi.DOBProvisioningMechanism.provision(DOBProvisioningMechanism.java:341)
at oracle.iam.provisioning.impl.ProvisioningServiceImpl$4.process(ProvisioningServiceImpl.java:483)
at oracle.iam.provisioning.impl.ProvisioningServiceImpl$4.process(ProvisioningServiceImpl.java:471)
at oracle.iam.platform.tx.OIMTransactionCallback.doInTransaction(OIMTransactionCallback.java:13)
at oracle.iam.platform.tx.OIMTransactionCallback.doInTransaction(OIMTransactionCallback.java:6)
at org.springframework.transaction.support.TransactionTemplate.execute(TransactionTemplate.java:128)
at oracle.iam.platform.tx.OIMTransactionManager.oimExecute(OIMTransactionManager.java:46)
at oracle.iam.provisioning.impl.ProvisioningServiceImpl.provision(ProvisioningServiceImpl.java:471)
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.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:182)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:149)
at oracle.iam.platform.utils.DMSMethodInterceptor.invoke(DMSMethodInterceptor.java:25)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:171)
at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:204)
at $Proxy380.provision(Unknown Source)
at oracle.iam.provisioning.api.ProvisioningServiceEJB.provisionx(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.oracle.pitchfork.spi.MethodInvocationVisitorImpl.visit(MethodInvocationVisitorImpl.java:34)
at weblogic.ejb.container.injection.EnvironmentInterceptorCallbackImpl.callback(EnvironmentInterceptorCallbackImpl.java:54)
at com.oracle.pitchfork.spi.EnvironmentInterceptor.invoke(EnvironmentInterceptor.java:42)
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 $Proxy379.provisionx(Unknown Source)
at oracle.iam.provisioning.api.ProvisioningService_p7m7x_ProvisioningServiceRemoteImpl.__WL_invoke(Unknown Source)
Please help me in solving this issue.
Thanks.
Edited by: user9212679 on May 9, 2013 4:17 AMHi Kevin,
Thanks for the reply. As suggested by you I have assigned the default value as 0 for all the checkbox type in form designer for AD User form but still I am getting the same error while provisioning the AD resource.
Please help.
Maybe you are looking for
-
How to keep the information in the form?
In our jsp,for example: a form for use to fill some information.when submit the form,meet someting,such as the loginId is exist,so I call history.back().In normal page ,it works well,the information still in the form.But I found that if some input's(
-
Implementation of Shared Libraries on Palm Using J2ME
Hi, I am currently working on the Palm Shared Libraries using C...Kind of drag....so I wonder is there any way to implement this on the Palm using J2ME... Thanks and Regards, Joseph
-
Family share will not allow to accept the invitation
how to get this to work
-
So my song file actually is corrupted...
Ok, so I got my new macpro, I thought everything was working great, until I tried to move some audio and it disappeared completely. bah... Ok.. so-- I have approx 100 tracks of audio + software instruments.... What is the best way to copy over my dat
-
Darker, black gap suddenly appear..no not the normal gray gap..
While i was editing, suddenly i realize that black gaps appears on my timeline.. i did purposely create gaps to position clips at certain places but usually it'll produce the normal gray gaps.. this is pure black and im not sure how i did it. anyone