How to trigger a process task on IT Resource process form

Hi,
I want to know how to trigger a process task on IT resource process form using OIM API.For Example:- If a task ilike an e-mail is to be sent on the departure date of a user.So,how can it be done using API?
Thanks.

This would typically be done through a scheduled task. Write your code to query for the departure date. If someone meets your criteria for an action to occur, you can either use the addProcessTaskInstance which has an adapter attached to it to send the email, or in your code, send the email.
The details that need to be considered though is where the departure date is stored. Is it on a process form, or is it on the user's OIM profile. Do you want to disable the user or revoke the object instance at this departure date? You could use the notification tab of these existing tasks if so.
-Kevin

Similar Messages

  • How to catch rollback in Disable user process task in Xellerat User Process

    hi ...
    I want to send an email to manager group of the user, once the user is disabled from the OIM (when end date is reached). I created an adapter and attached it to the ‘Changed User Disabled’ process task in the ‘xellerate user provisioning’ process and add a new row in the “Lookup.USR_PROCESS_TRIGGERS” Lookup definition. (code key: USR_DISABLED and Decode: Change User Disabled ). This adapter executes only when the user status is equal to “disabled”.
    This works correctly when the OIM user disabling process execute without any errors. But sometimes while disabling the user it gives an error (“resource is not configured properly”) and rolls back everything and make the user active. But at the same time my adapter runs and sends the mail informing user is disabled but yet user is active.
    My problem is how can I find or catch rolls back transaction in the “Disable User” process task (which is in “Xellerate User” process”) ??? If I can get to know that a roll back is occurred then I can send a mail to OIM administrator, informing that user disable process is failed.
    Can someone please help me to find this..
    Thanks in advance :)
    Regards,
    i.k.

    Hi Rajiv,
    Error occurs while disabling the user due to resource configuration problems. ( error message is : DOBJ.RESOURCE_NOTCONFIGURED_PROPERLY -- One or more provisioned resource is not configured properly) In this case i know the problem and how to solve it. But what I want to know is in any case if disable process get fail and if things get roll back again, then how can I track that situation and send a mail to OIM Admin(informing the failure) instead of sending a mail to user managers saying that user account has been disabled.
    I think now my problem is clear…. Can u please help me to find this.
    Regards,
    i.k.

  • Can we add process tasks to Xellerate User process?

    Hi,
    Can I add a process task- unconditional one to "Xellerate User" process definition?
    I want certain fields to be populated in User Profile Form, when the user is created/updated.
    Please advice

    I could manage to trigger the Xellerate User Process Task and it runs fine, but when trying to update the OIM user field, it throws the below error:
    oracle.iam.platform.authz.exception.AccessDeniedException: You do not have permission to modify the [USR_UDF_IPWD] attributes of the user with user key null.
    at oracle.iam.identity.usermgmt.impl.UserManagerImpl.modify(UserManagerImpl.java:830)
    at oracle.iam.identity.usermgmt.impl.UserManagerImpl.modify(UserManagerImpl.java:971)
    usrManager.modify("User Login",sUserLogin.toString().toUpperCase(), new User(null, usrDetails));
    usDetails hashmap contains the key, value pair which needs to be updated.

  • How to trigger a JAVA class when replication is processed?

    Hi,
    How I can trigger a JAVA class when a replication is processed?
    Also I want to get the payload involved in that process.
    Is there any way to do this?
    Please post your suggestions on this...
    Regards,
    Shankar .A

    If you are interested in building your own payload format, check the ContentBuilder interface.
    If you want to get notified, when a replication is triggered, check the Sling event tab in the Felix console (http://localhost:4502/system/console/events). You can register your event OSGI event listener and process that information. See http://sling.apache.org/documentation/tutorials-how-tos/how-to-manage-events-in-sling.html for some more information and samples.
    Jörg

  • How to set dynamicaly the task-priority in a Process?

    Hello all,
    Once again with a question: Exists any way for set dynamicaly the priority in a human task?
    Because, we need to change this task attribute in runtime
    Thanks in advance again!

    Even in 7.3, I think you can achieve this only via API.
    There is no expression editor for priority

  • How to Trigger / execute a rule directly from an XML form?

    I am in the process of customizing User Forms, and I would like to implement a trigger (if that's the right name for it) in the XML script, which will execute a Rule (or some code) that will result in an email being sent.
    For example, the following simple script (selection from a dropdown menu) :
    *<Field name='orderlunch'>*
    *<Display class='Select' action='true'>*
    *<Property name='title' value='Order Lunch'/>*
    *<Property name='allowedValues'>*
    *<List>*
    *<String>- Please Select -</String>*
    *<String>Yes</String>*
    *<String>No</String>*
    *</List>*
    *</Property>*
    *</Display>*
    *</Field>*
    A small XML code, to indicate an order for lunch.
    naturally, if the user selects "No", then nothing happens.
    But, if he selects "Yes", then I would like to automatically send an Email Notification to the appropriate person, notifying him that lunch has been ordered. (of course, I would need to indicate such things as WHO ordered the lunch, WHEN, etc, etc. But, I will get into that later)
    Does anyone know how this can be done?
    (a) Could I insert the trigger/condition/whatever right into the main XML script itself?
    Or
    (b) should I write a code which will call on/invoke a separate Rule, which will subsequently send the email?
    If (b) is the right answer, then how would I go about creating such a Rule, and linking it to the main XML script?

    In your Wf or subprocess call the activity notify .testemaillist contains the list of users for whom the mail need to be sent .
    <Activity id='1' name='Notify'>
    <Action id='0' process='Notify'>
    <Iterate for='email' in='testEmaillist'/>
    <Argument name='template' value='emailtemplatename'/>
    <Argument name='to' value='$(email)'/>
    </Action>
    </Activity>
    I hope this may help you

  • How to trigger and change password for AD user after form based login

    Hello,
    We are authenticating against Active Directory with Weblogic 10.3 using FORM based security. Everything is working. I need to now change a password for an authenticated user. For example, I have set a user to have their password expire on next logon from the AD side. The user logs in but somehow I need to trap some info from Active Directory (or an LDAP conversation) to figure out if I need to force the user to change password.
    Do I need to start looking at custom code with LDAP Java SDK's or can I use a canned MBean from Weblogic Server.
    I am looking at http://www.mozilla.org/directory/ for LDAP.
    Can I set/reset an AD user's password with an MBean like the following link?
    http://download.oracle.com/docs/cd/E13222_01/wls/docs92/javadocs/index.html?weblogic/management/security/authentication/UserPasswordEditorMBean.html
    If anyone has any experience with this or can point me in the right direction let me know.
    If anyone else is interested please add to the tread and I'll be sure to keep the found solution(s) updated here.
    Thanks...........
    JJ Everett

    Hello JJ
    Please see document ID 403484.1 in http://metalink.oracle.com. This may help to understand what you are aiming to do. Cheers
    -- Nathan

  • How to trigger standard task manually in Process controlled workflow?

    Hi All,
    I would like to trigger a task mannually in BRF, process controlled workflow. My requirement is to send an approval notification to the approvers at the current approval level, at any instance by the requestor of the shopping cart. In that case, will it be possible to trigger the standard task 40007953 (SRM Shopping Cart Approval (1)) with the workitem of Shopping cart under consideration?
    I have tried searching for the same in SDN and other forums but most of the information was regarding application controlled workflows. None of those function modules seems to be working in PCW.
    Any pointers on how to trigger a standard task (using FM or code) in BRF(process controlled workflow) environment is also highly appreciated.
    Thanks,
    S.H@ri

    Hi,
    Use this FM [SAP_WAPI_START_WORKFLOW|http://www.sdn.sap.com/irj/scn/index?rid=/library/uuid/bb9100f8-0c01-0010-ac8e-e017351f3fc1].
    Regards,
    Surjith

  • How to call Process Task in AD User proccess definition from Xellerate user

    Hello,
    I need a help from you guys.
    I have one customized process task in "Xellerate User" Process definition. When my this task executes completely, I would like to call one of the customized process task in "AD User" process definition from xellearte user. Is there any way we can do that?
    Thanks for your any help....

    There are lots of ways to accomplish this. I haven't read through the other posts, but here are a few options.
    Option 1 - Create a second task that also triggers at the same time, but set the task you already have as preceding. Then on your second task, write whatever code is needed to update a field, insert a new task, whatever the function is that's needed.
    Option 2 - On the completion response of your original task, just use the response code to trigger the second task from running. Then again, write whatever code is needed.
    Option 3 - Create a UDF on your user form. Add this field to the Lookup.USR_PROCESS_TRIGGERS. When your first task completes, use the APIs to update this field with a new value, perhaps the current date. On your AD Process Definition, create a task with the name you used in the lookup. This task will get triggered whenever the field is updated. Now if the user does not have an AD Instance, you don't have to worry about it ever running.
    I'm sure you could create other event handlers as well to do this, it just depends on how creative you want to be.
    -Kevin

  • How to get Process Task Retry Count using API (OIM 10g)

    Hi ,
    I want to get all the process task which are failed after retried 5 times.
    For e.g Create user task in AD retried for 5 times but still it is in failed state. I want to get all such process task.
    I am stuck at point how to get process task retry count from process definition?
    Thanks

    You can reference the code in the "Task Timed Retry" scheduled task to get what you are looking for. Here is the decompiled code:
    >
    package com.thortech.xl.schedule.tasks;
    import Thor.API.Operations.tcScheduleTaskOperationsIntf;
    import com.thortech.util.logging.Logger;
    import com.thortech.xl.dataaccess.tcDataSetException;
    import com.thortech.xl.dataobj.tcDataSet;
    import com.thortech.xl.scheduler.tasks.SchedulerBaseTask;
    import com.thortech.xl.util.logging.LoggerMessages;
    import java.sql.Date;
    import java.util.Hashtable;
    public class tcTskTimedRetry extends SchedulerBaseTask
    private static Logger logger = Logger.getLogger("Xellerate.Scheduler.Task");
    Date isCurrentDate;
    public void init()
    logger.debug(LoggerMessages.getMessage("EnteredMethodDebug", "tcTskTimedRetry/init"));
    this.isCurrentDate = new Date(System.currentTimeMillis());
    logger.debug(LoggerMessages.getMessage("LeftMethodDebug", "tcTskTimedRetry/init"));
    public void execute()
    logger.debug(LoggerMessages.getMessage("EnteredMethodDebug", "tcTskTimedRetry/execute"));
    tcDataSet localtcDataSet1 = new tcDataSet();
    tcDataSet localtcDataSet2 = new tcDataSet();
    tcDataSet localtcDataSet3 = new tcDataSet();
    try
    if (isStopped())
    return;
    localtcDataSet2.setQuery(getDataBase(), "select osi_retry_on from osi where 1=2");
    localtcDataSet2.executeQuery();
    if (isStopped())
    return;
    localtcDataSet2.setDate("osi_retry_on", this.isCurrentDate);
    localtcDataSet1.setQuery(getDataBase(), "select osi.sch_key, osi.mil_key, osi.orc_key, osi.osi_rowver, sch.sch_rowver, osi.osi_retry_for, osi.osi_retry_on, osi.osi_retry_counter, sch.sch_note from osi osi,sch sch where osi.osi_retry_on <=" + localtcDataSet2.getSqlText("osi_retry_on") + " and osi.sch_key = sch.sch_key" + " and sch.sch_status='R'" + " and osi_retry_counter>0 order by osi.sch_key");
    localtcDataSet1.executeQuery();
    if (isStopped())
    return;
    int i = localtcDataSet1.getRowCount();
    logger.debug("tcTskTimedRetry:execute:Number of Process tasks retrieved is=" + i);
    tcScheduleTaskOperationsIntf localtcScheduleTaskOperationsIntf = (tcScheduleTaskOperationsIntf)getUtility("Thor.API.Operations.tcScheduleTaskOperationsIntf");
    tcDataSet localtcDataSet4 = new tcDataSet();
    localtcDataSet4.setQuery(getDataBase(), "select osi_retry_for, osi_retry_counter from osi where 1=2");
    localtcDataSet4.executeQuery();
    Hashtable localHashtable = new Hashtable();
    if (isStopped())
    return;
    for (int j = 0; j < i; j++)
    if (isStopped())
    return;
    localtcDataSet1.goToRow(j);
    localtcDataSet3.setQuery(getDataBase(), "select count(*) as counter from osi osi,sch sch where osi.sch_key = sch.sch_key and osi_retry_for=" + localtcDataSet1.getLong("sch_key"));
    localtcDataSet3.executeQuery();
    if (isStopped())
    return;
    if (localtcDataSet3.getInt("counter") > 0)
    continue;
    localHashtable.put("osi_retry_for", String.valueOf(localtcDataSet1.getLong("sch_key")));
    localHashtable.put("sch_note", localtcDataSet1.getString("sch_note"));
    long l = localtcDataSet1.getLong("osi_retry_counter");
    if (isStopped())
    return;
    try
    localtcScheduleTaskOperationsIntf.createScheduleItem(localtcDataSet1.getString("orc_key"), localtcDataSet1.getString("mil_key"), localHashtable, l - 1L);
    catch (Exception localException2)
    logger.error(LoggerMessages.getMessage("ErrorMethodDebug", "tcTskTimedRetry/execute", localException2.getMessage()), localException2);
    catch (tcDataSetException localtcDataSetException)
    logger.error(LoggerMessages.getMessage("ErrorMethodDebug", "tcTskTimedRetry/execute", localtcDataSetException.getMessage()), localtcDataSetException);
    logger.debug("PJ:tcTskTimedRetry:execute:DataSetexception has occured");
    catch (Exception localException1)
    logger.error(LoggerMessages.getMessage("ErrorMethodDebug", "tcTskTimedRetry/execute", localException1.getMessage()), localException1);
    logger.debug(LoggerMessages.getMessage("LeftMethodDebug", "tcTskTimedRetry/execute"));
    public boolean stop()
    logger.debug("tcTskTimedRetry:stop:Task being stopped");
    return true;
    >
    -Kevin

  • Trigger another Process Task after Enable User completed

    I would like to have a process task trigger after the "Enable User" process task successfully completed.
    E.g. Scenario
    A user currently has a disabled resource. When I enable the user, the Enable User process task
    gets called and enables the user. After that I would like to have my custom process task triggered after that.
    I tried adding my custom process task in the Enable User task as a dependent task, but it never gets called.
    Also, I tried adding the custom task to Tasks to Generate but that did not work.
    What am I doing wrong or am I missing a step?

    Instructions:
    Goal: When 1st process task is triggered, the 2nd process task will kickoff.
    1. Select the 1st process task
    2. In the Task Dependency Tab of the 1st process task, add the 2nd process task in the Dependant Task section.
    3. In the Responses Task of the 1st process task, select the SUCCESS response and add the 2nd process task in the Tasks to Generate section.
    IMPORTANT: Each response has its own Task to Generate. So make sure you add to the response you want the 2nd process task to trigger off by.

  • How to disable an out of the box disable User process task  from resource?

    How should I disable the out of the box disable User process task that is assigned to a particular resource? If I disable this disable User process task, when the user is provisioned to the same resource will I be able to stop this disable User process from running?
    My requirement: I need to disable the disable user process task from three resources x, y and z. Whenever a user is provisioned to one of these resources I should stop this disable user process task an out of the box process task from running. How can this be accomplished?? Please help me out on how to configureto remove the process task in the OIM Admin console to stop the process task.

    You can avoid the disable task from triggering by removing the Disable Process Or Access to Application from the task effect drop down in the process task. But this task is triggered once the user is disabled. But still I didn't understand the exact scenario.
    By the way the disable task is triggered when the user gets disabled and not when the user is provisioned.
    Edited by: vindla on Aug 1, 2011 10:26 PM

  • How to trigger an update in DBAT connector?

    Hello,
    I have set up the DBAT connector so that "Create User" task would call the create user groovy script, which calls the stored procedure to insert records into the parent and child tables.  This works fine.
    I also set up the connector so that "Delete User" task would call the delete user groovy script, which calls the stored procedure to delete records in the parent and child tables.  This also works fine.
    I have only 1 use case left which is the update of the child table.
    I have a field called Reporter ID in the USR form.  I created a Change Reporter ID process task in DBAT process definition (added this into the lookup.USR_PROCESS_TRIGGERS).  This called an adapter task that just returned a response code of SUCCESS.  I want to attach a process task to this Change Reporter ID so that "somehow" it would call my "update user" groovy script, which calls the stored procedure to delete records from the child table and re-insert new records into the child table.
    How can I achieve this?  I don't want to update anything in the parent process form or child process form.  I just want to call my update user stored procedure.
    Thanks
    Khanh

    Thank you for your response.
    I created the below java code and created a process task in DBAT User process form to call this code on "Change Reporter ID" event.
    import groovy.lang.GroovyClassLoader;
    import groovy.lang.GroovyObject;
    import groovy.lang.GroovyShell;
    //import groovy.lang.Binding;
    import java.io.File;
    import java.util.logging.Logger;
    public class MyDBATUpdateUser extends GroovyShell {
        private String METHOD_NAME = "DEBUG: MyDBATUpdateUser: ";
        public String MyDBATUpdateUser() {
            String result = "";
            try {
                ClassLoader parent = MyDBATUpdateUser.class.getClassLoader();
                  GroovyClassLoader loader = new GroovyClassLoader(parent);
                Class groovyClass =
                    loader.parseClass(new File("/home/iam_dev/dbat/scripts/my_dbat_update_user.groovy"));
                logger.warning(METHOD_NAME +
                               "Passed groovy file name");
                GroovyObject groovyObject =
                    (GroovyObject)groovyClass.newInstance();
                Object[] args = { };
                logger.warning(METHOD_NAME + "Defined args");
                groovyObject.invokeMethod("run", args);
                logger.warning(METHOD_NAME + "Success");
                return "SUCCESS";
            } catch (Exception e) {
                logger.warning("MYPROJECT ERROR: " + METHOD_NAME +
                               "Error encountered in main");
                e.printStackTrace();
                return "REJECT";
    It seemed the above java code died at the line of code: groovyObject.invokeMethod("run", args);
    my groovy script looks like this:
    import java.util.*;
    CallableStatement st = null;
    def id = attributes['__NAME__']?.value?.get(0);
    try {
    st = conn.prepareCall("{call MY_PROC_ADD_CHILD_GROUP(?)}");
    st.setString(1, id);
    st.executeUpdate();
    } finally {
    if (st != null)
    st.close();
    trace.error("Called MY_PROC_ADD_CHILD_GROUP [${id}]");
    return new Uid(id);
    Thanks for letting me know what's wrong with the above code.
    Khanh

  • Remove Unused Process Tasks from Process Definition for Export

    Hi Everyone,
    I am trying to delete a process task that is no longer used in the process definition of our resource; however, I get an error indicating the "The task cannot be deleted it has schedule items". I would like to export the connector without this particular process task. Can anyone please provide any suggestions on how I can do this? Any inputs will be highly appreciated.
    Many thanks,
    Wendell

    Hi,
    As per my knowledge you cannot delete a process task, if the associated resource object has been provisioned to a user and the task which you wants to delete has been executed atleast once.
    But you can very well delete a newly created process task with which no user has been provisioned.
    Having said this, the workaround for your problem will be as follows.
    1.Remove all the adapters,task dependecies,status mapping,etc from the task (in current env)and make sure that it doesn't get invoked in any scenario.
    2.Now export this process definition to the new environment and before provisioning any user to that specified resource object , delete all the unwanted process task and save the process task.
    Hope this will solve your problem
    Regards,
    NS

  • Using UNC Path With Execute Process Task

    I have an Execute Process task in which the process can either delete, get or put files to an SFTP site. The executeable takes arguments in the following format:
    "host" "user" "password" "put" "full local path/filename" "full remote path/filename"
    I have the task configured as follows:
    RequireFullFileName: True
    Executeable: \\server\groups\Development\ETLFiles\ETL_Utilities\ocsshhelper\ocsshhelper.exe
    Arguments: sftp user password \\server\groups\Developmement\ETLFiles\ETL_Data_Files\CT_FS_Export_20081113.csv stateExport\export
    WorkingDirectory: \\server\groups\Development\ETLFiles\ETL_Utilities\ocsshhelper
    WindowStyle: Hidden
    Arguments, Executeable and WorkingDirectory have been configured as Expressions. When I execute the package in BIDS from my Windows  XP SP3 machine, The task fails with the following error:
    [Execute Process Task] Error: In Executing "\\server\groups\Development\ETLFiles\ETL_Utilities\ocSSHHelper\ocsshhelper.exe" "sftp user password put \\server\groups\Development\ETLFiles\ETL_Data_Files\CT_FS_Export_20081113.csv stateExport\export" at "\\server\groups\Development\ETLFiles\ETL_Utilities\ocSSHHelper", The process exit code was "-532459699" while the expected was "0".
    My domain account has 'effective' full control rights to the location of ocsshhelper.exe.
    It could be that the executable does not support UNC paths, and I'm checking that. I have another package that uses this same application, but uses the physical path, and there are no problems. Does the Execute Process task have issues with UNC paths?
    Thank you for your help
    cdun2

    Actually it doesn't work properly in SQL Server 2008 R2.  I have a similar EP task.  If I set the working directory to \\server\share\subdir the task fails. However, if I map a drive latter to the \\server\share and set working directory to <drive>:\subdir
    it works

Maybe you are looking for

  • Need help hooking up an old laser printer to my wireless router

    I have an old HP Laserjet4 Plus that has been a workhorse. I've had it for years and it still works great. Previously I was using it as my network printer, plugged into a WRTP54G Linksys Vonage router. That setup worked fine, but over time the router

  • HOST IN 10g to run batch file on application server

    Hi, I am trying to deploy a form from 6i to 9i. the form use Host builtin to run batch file on machine. this works fine when i run form on client server environment. but when i run the same form after compiling in 9i and run on 3 tier model and try t

  • How can we find print program for user defind Tr. Code.

    Hello Friends, If I know the user defined Script Name and Corresponding Tr. Code, How can I find Print Program. In TNAPR Table, I am getting SAP Standard forms and corresponding print programs? Thanks & Regards Sathish Kumar

  • Losing network

    My iphone on Orange Network keeps losing the network,I have had the phone for three months no problem at all.The last few days my battery has been draining at a speed faster than light.I have reset my network settings as advised by Orange but this ha

  • Genius voice over not working

    When I first got my 3gs I was able to create genius playlists with voiceover by saying the command "Play more songs like this." All of the sudden it stopped working. When I try I get the message "genius not available." It does it with every song I tr