Deferred Tasks

All,
I would like for a user to request a role that can be assigned for only 24 or more hours. After this time expires I would like for the role to be deprovisioned. Would I use a defered task to achive this?
Thanks

If you are using 8.1 you can set activation and expiration dates while assigning roles. Its supported in 7.1 too.
You can also write deferred task but i guess its not required if you set the dates.

Similar Messages

  • How to Get a list of pending deferred tasks

    Hi all
    there is a bunch of unfinished threads here asking how to get a list/report of deferred tasks that are associated with user objects and scheduled for future execution.
    I need this list and I can't find out how to get it anyway.
    I don't care if it's a SJSIM report, a database query or a SJSIM log mining exercise.
    Does anyone know how to do this?
    My org has just gone live with SJSIM and I want to report on the number of legacy resource accounts that have had deferred tasks created against them for future disabling/deletion (our consultants added this workflow based on rules with an email warning, a disabling deferred task set for 2 weeks from now and a deleting deferred task for 6 months after that). Hopefully I can say "look, 5,000 legacy accounts are going to be cleaned up!
    Thanks in advance

    You can do it with a custom workflow, something like this:
         <Activity>
            <Action id='0' class='com.waveset.session.WorkflowServices'>
              <Argument name='op' value='queryObjectNames'/>
              <Argument name='type' value='User'/>
              <Argument name='attributes'>
                 <list>
                        <new class='com.waveset.object.AttributeCondition'>
                           <s>deferredTaskDate</s>
                           <s>isPresent</s>
                        </new>
                  </list>
               </Argument>
            <Action id='1' process='Check User'>
              <Iterate for='currentUser' in='queryResult'/>
              <Argument name='accountId' value='$(currentUser)'/>
            </Action>
         </Activity>And:
           <WFProcess name='Check User'>
             <Variable name='accountId' input='true'/>
             <Activity id='0' name='start'>
               <Transition to='Check User'/>
             </Activity>
             <Activity id='1' name='Check User' hidden='true'>
               <Action id='1' name='Get User View' application='com.waveset.session.WorkflowServices'>
                 <Argument name='op' value='getView'/>
                 <Argument name='type' value='User'/>
                 <Argument name='id' value='$(accountId)'/>
                 <Argument name='authorized' value='true'/>
               </Action>
               <Transition to='Got One'>
                   <notnull>
                           <ref>view.accounts[Lighthouse].properties.tasks[Legacy Cleanup].date<ref>
                    </notnull>
                 </Transition>
                 <Transition to='end'/>
              </Activity>
              <Activity id='2 name='Got One'>
                 <ActionResult name='users' type='message' overwrite='false'>
                    <ref>accountId</ref>
                  </ActionResult>
              </Action>
              <Transition to='end'/>
            </Activity>
         </WFProcess>This just gives a rough idea of how it can be done. It might be best to bring your consultants back in to implement this.
    Edited by: PaulHilchey on Feb 25, 2009 10:35 AM

  • How to find out if a user has a deferred task

    In my WF, I will add a deferred task to a user. If that user already has a deferred task then i want to skip it. How do we find out if a user already has a deferred task? Thanks

    This should help you
    <notnull>
    <ref>view.accounts[Lighthouse].properties.tasks[taskname]</ref>
    </notnull>

  • How to check if a user has a deferred task or not?

    Right now, I use getView and then check for the deferred task as below
    1)
    <Action id='0' application='com.waveset.session.WorkflowServices'>
    <Argument name='op' value='getView'/>
    <Argument name='type' value='User'/>
    <Argument name='id' value='$(accountId)'/>
    </Action>
    2)
    <Transition to='Add Deferred Task'>
    <isnull>
    <ref>view.accounts[Lighthouse].properties.tasks[Task Name]</ref>
    </isnull>
    </Transition>
    Is there a quicker way to combine both steps 1 and 2 into one step?

    Here's my code
    <Action id='0' application='com.waveset.session.WorkflowServices'>
    <Argument name='op' value='queryObjectNames'/>
    <Argument name='type' value='User'/>
    <Argument name='single' value='true'/>
    <Argument name='attributes'>
    <map>
    <s>accountId</s>
    <ref>accountId</ref>
    <s>deferredTaskDate</s>
    <s>Task 123</s>
    </map>
    </Argument>
    </Action>
    So I'll pass in 2 parameters, the accountId and a task name. I want to see if this user has that particular task name or not.
    In the WF trace, I see this
    Argument attributes = {accountId=ABC, deferredTaskDate=Task 123}
    queryResult is null because it could not find this user even though user ABC exists in IDM and has a deferred task named Task 123.
    Is my code wrong and how do I use AttributeCondition in the queryObjectNames above?

  • Dates appear different in log file vs. debug page for Deferred Task

    I added a deferred task and in the log file, the date appeared correctly as
    Mon Dec 15 16:34:11 PST 2008
    But when I viewed the user in the debug page, the date appeared as
    <Date>2008-12-16T00:34:11.430Z</Date>
    I called an external java class that return a Date object
    <Action id='0' application='com.waveset.session.WorkflowServices'>
    <Argument name='op' value='addDeferredTask'/>
    <Argument name='date'>
    <invoke name='addWeekDays' class='MyDateUtil'/>
    </Argument>
    </Action>
    Do you have any ideas?

    IDM commonly stores dates in a Java or JDBC date format (which is what your debug date is) but often formats the date differently for log files and for web pages. It's annoying if you're trying to line two different outputs up.

  • Not able to Pass Reference Variables to Deferred task

    Hi All,
    I am not able to Pass the reference variables to Deferred task, With the following code, I am getting null values (for the passed refs) in Deferred Task.
    Code is as:
    <Action id='1' name='Set Deferred Task Action' application='com.waveset.session.WorkflowServices'>
    <Argument name='op' value='addDeferredTask'/>
    <Argument name='type' value='User'/>
    <Argument name='name' value='$(empId)'/>
    <Argument name='authorized' value='true'/>
    <Argument name='task' value='WF_User Deferred Task'/> // Task defination
    <Argument name='date'>
    <Date>2008-11-19T14:50:18.840Z</Date>
    </Argument>
    <Argument name='taskDefinition'>
    <block trace='true'>
    <defvar name='usrObject'> // This is the variable I am passing to 'WF_User Deferred Task'
    <new class='com.waveset.object.GenericObject'/>
    </defvar>
    <invoke name='setAttributes'>
    <ref>usrObject</ref>
    <map>
    <s>accId</s>
    <ref>empId</ref>
    <s>updStatus</s>
    <ref>newStatus</ref>
    </map>
    </invoke>
    </block>
    </Argument>
    </Action>
    <Transition to='End'/>
    Please suggest me.
    Thanks,
    Ravi.

    yeah, you don't have your usrObject available in the deffered task however all variables that you put inside the usrObject are avialble. Like <ref>accId<ref> and <ref>updStatus</ref>. If you still need them organized hierarchically, you might try to add one more level to the object before passing it to addDefferedTask
                <block>
                  <defvar name='objWrapper'>
                    <new class='com.waveset.object.GenericObject'/>
                  </defvar>
                  <defvar name='usrObject'>
                    <new class='com.waveset.object.GenericObject'/>
                  </defvar>
                  <invoke name='setAttributes'>
                    <ref>usrObject</ref>
                    <map>
                      <s>accId</s>
                      <s>yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy</s>
                      <s>updStatus</s>
                      <s>xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx</s>
                    </map>
                  </invoke>
                  <invoke name='setAttributes'>
                    <ref>objWrapper</ref>
                    <map>
                      <s>usrObject</s>
                      <ref>usrObject</ref>
                    </map>
                  </invoke>
                  <ref>objWrapper</ref>
                </block>I hope you ve got the idea. Cheerz.

  • Deferred task date change problem

    Hi,
    Every user in IDM has a deferred task as shown below. The requirement is to change the 'Date' value to set the time as 23:59:59.00Z.
    At the moment different users have different times set for them. All need to be same as mentioned above. Please assist me in this with a faster way as there are more than 5K users.
    <Object name='WF - Expire Contractor'>
    <Attribute name='authorized' value='true'/>
    <Attribute name='date'>
    <Date>2011-04-14T06:00:00.000Z</Date>
    </Attribute>
    <Attribute name='executeOnce' value='true'/>
    <Attribute name='owner' value='C670635'/>
    <Attribute name='subject' value='ProxyAdmin'/>
    <Attribute name='task' value='WF - Expire Contractor'/>
    </Object>
    Thanks,
    Santoshanand

    A code in xpress would be of great help.But much more lines of code :-(
    I am not sure if we have any already existing java or need to write
    a new one. So, I think writing a custom workflow will be a good way.I avoid writing XPRESS code unless it is absolutely necessary, so here I cannot help you :-( I think a
    stand-alone Java program of ~20 lines would complete your task.
    Also, task.setStartDate(<the date>); requires a date object. Problem
    here is to set the time to 23:59 for the same date.
    (new SimpleDateFormat("yyyy-MM-dd hh:mm")).parse("2011-04-14 23:59", new ParsePosition(0));

  • Deferred Task --- Variables not displaying in "Email Notification"

    Hi,
    there have been quite a lot of postings here regarding the issue of Deferred Tasks.
    I created a Deferred Task, and it is working perfectly. My deferred task is supposed to send an email notification on a pre-set date.
    The Email is being sent as it should.
    Just one problem : the "variables" / "attributes" of the particular User are not being displayed in the body of the email.
    The "Email Notification" is supposed to say something like : "*This is to notify you that the account for user Michael Jackson has been updated. Next update will occur on blah-blah-blah"*
    In other words, the body of the email should display the attributes : FIRSTNAME, LASTNAME, NEXT-DATE, etc, etc
    I input these attributes in the body of the email as follows : $firstname, $lastname, etc, etc, etc
    Furthermore, I made sure to DECLARE these variables at the beginning of the Email Template, as follows :
    *<EmailTemplate name='Send Notification' displayName='Send Notification' creator='Configurator' createDate='1258045088776' lastModifier='Configurator' lastModDate='1259051622181' lastMod='1' repoMod='1259051624770' smtpHost='$(smtpHost)' fromAddress='[email protected]' toAddress='[email protected]' authEnabled='$(authEnabled)' userId='$(userId)' password='$(password)' ssl='$(ssl)' port='$(port)'>*
    *<Variable name='firstname'>*
    *<select>*
    *<ref>user.global.firstname</ref>*
    *</select>*
    *</Variable>*
    *<Variable name='lastname'>*
    *<select>*
    *<ref>user.global.lastname</ref>*
    *</select>*
    *</Variable>*
    Apparently, there is something I am not doing correctly. But, I can't figure out what it is.
    Any tips would be welcome.
    Thanks.

    Email templates are slightly different in how they reference variables. Here's what I do in one of my deferred tasks. Notice the arguments in the action and the way the email template references those arguments, specifically the eventDate, accountId, method and eventtime arguments. The other variables are either filled in by IDM's configuration or they resolve to blank or empty strings.
    Action to call the notify process from my deferred task:
    <Action id='1' process='Notify'>
        <Argument name='template' value='My Email Template'/>
        <Argument name='from' value='%%FROM_ADDRESS%%'/>
        <Argument name='to' value='%%TO_ADDRESS%%'/>
        <Argument name='eventDate'>
            <ref>eventdate</ref>
        </Argument>
        <Argument name='accountId'>
            <ref>accountId</ref>
        </Argument>
        <Argument name='method'>
            <s>create</s>
        </Argument>
        <Argument name='eventtime'>
            <ref>eventtime</ref>
        </Argument>
    </Action>The email template:
    <?xml version='1.0' encoding='UTF-8'?>
    <!DOCTYPE EmailTemplate PUBLIC 'waveset.dtd' 'waveset.dtd'>
    <EmailTemplate
    id="#ID#EmailTemplate:MyEmailTemplate"
    name='My Email Template' 
    smtpHost='$(smtpHost)' 
    htmlEnabled='false'
    authEnabled='$(authEnabled)'
    userId='$(userId)'
    password='$(password)'
    ssl='$(ssl)'
    ignoreCert='$(ignoreCert)'>
      <subject>Processing $(method) $(accountId)</subject>
      <body>
    Processing $(method) account $(accountId) on $(eventDate) $(eventtime) is complete.
      </body>
      <MemberObjectGroups>
        <ObjectRef type='ObjectGroup' id='#ID#All' name='All'/>
      </MemberObjectGroups>
    </EmailTemplate>

  • Deferred Task Date - Issue

    Hello,
    I am attaching to deferred to a user object, for the date argument I am adding 2 hours to the current time. In the workflow trace I see the date argument is returning correctly i.e. adding 2 hours to the current time, but when I see the user object (from debug pages) it is adding additional 5 hours (including the 2hours) for the date argument.
    It looks like by default it is adding additional 5 hours and not sure how to control this.
    Did anybody come across a similar issue? I think it is not a code issue, some configuration settings I need to change and don't know where to change this.
    Please share any ideas.
    Thanks in advance.

    Yes, the deferred tasks show a time in comparison with the GMT. So, I think your code is correct, it just shows the different time in the user object, but actually it is the addition of 2 hours to it (considering GMT).
    e.g. If you are in India, it shows 6 hours latter time in the user object than the current.
    Your local time - 2011-04-08T00:00:00.000Z
    Time in debug pages - 2011-04-08T06:00:00.000Z
    When you add 2 hours to this, it shows 2011-04-08T08:00:00.000Z in Debug, BUT in fact it is 2011-04-08T02:00:00.000Z
    Thanks

  • Deferred Tasks - Passing Variables into Workflow

    Hi everyone
    I am experiencing difficulties with deferred tasks in IDM 8.1. I have managed to create a deferred task on a user, with the task name being ‘Generate Email’. I also passed in an attribute ‘id’, and these can be seen in the user view under waveset.properties.tasks.
      <Activity id='1' name='Add Deferred Task'>
                    <Action id='1' application='com.waveset.session.WorkflowServices'>
                        <Argument name='op' value='addDeferredTask'/>
                        <Argument name='type' value='User'/>
                        <Argument name='name'>
                            <ref>accountId</ref>
                        </Argument>
                        <Argument name='authorized' value='true'/>
                        <Argument name='subject'>
                            <s>Configurator</s>
                        </Argument>
                        <Argument name='task'>
                            <ref>taskToAdd</ref>
                        </Argument>
                        <Argument name='date'>
                            <new class='java.util.Date'/>
                        </Argument>
                        <Argument name='owner'>
                            <ref>WF_CASE_OWNER</ref>
                        </Argument>
                        <Argument name='taskDefinition'>
                            <new class='com.waveset.object.GenericObject'>
                                <map>
                                    <s>id</s>
                                    <ref>accountId</ref>
                                </map>
                            </new>
                        </Argument>
                    </Action>
                </Activity>I have set up a scheduler that correctly scans all the user objects for this workflow name, and the ‘Generate Email’ workflow is periodically run.
    The problem is when it gets to the Generate Email workflow, all the variables that were set when the deferred task was created are gone. Both <ref>id</ref> and <Variable name=’id’ input=’true’/> return null.
    Setting the following in the TaskSchedule object did not help, as the string value $(id) is passed into the workflow instead of the id itself. I cannot debug the TaskSchedule as the Netbeans IDE does not allow me to put in breakpoints on this file.
    <Variables>
        <Object>
          <Attribute name='id' value='$(id)'/>
        </Object>
      </Variables>My question is, how do I pass variables into a workflow via a deferred task?

    Hi,
    Here is an example that I found that may assist.
    <Activity name='setDefTask'>
         <Action application='com.waveset.session.WorkflowServices'>
           <Argument name='op' value='addDeferredTask'/>
           <Argument name='name' value='$(user)'/>
           <Argument name='task' value='$(taskType)'/>
           <Argument name='date' value='$(date)'/>
           <Argument name='description' value='$(taskDescription)'/>
           <Argument name='taskDefinition'>
              <Object>
                  <Attribute name='Arg1' value='value1'/>
                  <Attribute name='Arg2' value='value2'/>
                  <Attribute name='Arg3' value='value3'/>
              </Object>
           </Argument>
         </Action>
         <Transition to='end'/>
    </Activity>Hope it helps

  • Create a Task, for use in "Deferred Task"

    I am in the processing of creating Deferred Tasks for my Update-User workflow.
    I know how to create these easily. My problem is : the actual "Task" itself, which will be called upon from the Workflow.
    I don't know the proper syntax for it.
    For instance, below is the code I am using for my "Send Email Task". This task is supposed to send an automatic email notification.
    *<?xml version='1.0' encoding='UTF-8'?>*
    *<!DOCTYPE TaskDefinition PUBLIC 'waveset.dtd' 'waveset.dtd'>*
    *<!-- MemberObjectGroups="#ID#Top" authType="UserAdminTask" createDate="Thu Jul 16 15:22:08 EEST 2009" extensionClass="WFProcess" name="Send Email Task" visibility="invisible"-->*
    *<TaskDefinition name='Send Email Task' creator='%STARTUP%Configurator' createDate='1247746928617' lastModifier='%STARTUP%Configurator' lastModDate='1247746928617' repoMod='1247746928170' primaryObjectClass='TaskDefinition' wstype='ProvisioningTask' taskType='Workflow' executor='com.waveset.workflow.WorkflowExecutor' syncControlAllowed='true' execMode='sync' execLimit='0' resultLimit='3600' resultOption='delete' visibility='invisible' progressInterval='0'>*
    *<Extension>*
    *<WFProcess maxSteps='0' audit='true'>*
    *<Variable name='user' input='true'>*
    *<Comments>&#xA; A user view. This is required.&#xA; </Comments>*
    *</Variable>*
    *<Variable name='backgroundProvisioning' input='true'>*
    *</Variable>*
    *<Variable name='provisioningRetryButton' value='true' input='true'>*
    *<Comments>&#xA; Set to "true" to enable the inclusion of a Retry link&#xA; in the task result if the provisioning fails.&#xA; </Comments>*
    *</Variable>*
    *<Variable name='approvals'>*
    *<Comments>&#xA; Returned from the Lighthouse Approval process. Contains the&#xA; approval structure. The approvals.approved variable set if&#xA; all approvals were successful. This is passed into the Notify&#xA; process later for post-provisioning notifications.&#xA; </Comments>*
    *</Variable>*
    *<Variable name='userCreated'>*
    *<Comments>&#xA; Set to "true" from the Provision workflow when the&#xA; Lighthouse account has been created.&#xA; </Comments>*
    *</Variable>*
    *<Variable name='sunset'>*
    *<Comments>&#xA; Object containing information for registering a sunset date/time.&#xA; </Comments>*
    *</Variable>*
    *<Variable name='error'>*
    *<Comments>Set in the event of unusual processing errors.</Comments>*
    *</Variable>*
    *<Variable name='options'>*
    *<Comments>Options to pass to the provisioning task regarding resource&#xA; provisioning.&#xA; </Comments>*
    *</Variable>*
    *<Transition to='end'>*
    *<Comments>&#xA; Terminate if we encounter unusual errors (not provisioning errors).&#xA; </Comments>*
    *<ref>error</ref>*
    *</Transition>*
    *<Activity id='0' name='start'>*
    *<Transition to='Notify'/>*
    *</Activity>*
    *<Activity id='1' name='Notify'>*
    *<Action id='0' name='Email' application='com.waveset.provision.WorkflowServices'>*
    *<Argument name='op' value='notify'/>*
    *<Argument name='template' value='Send Email Now'/>*
    *</Action>*
    *<Transition to='End'/>*
    *</Activity>*
    *<Activity id='2' name='end'>*
    *<WorkflowEditor x='428' y='275'/>*
    *</Activity>*
    *</WFProcess>*
    *</Extension>*
    *<MemberObjectGroups>*
    *<ObjectRef type='ObjectGroup' id='#ID#Top' name='Top'/>*
    *</MemberObjectGroups>*
    *</TaskDefinition>*
    I am not sure if my syntax is correct?
    Any tips?

    Thanks again, sbalu.
    I may have found the error (although, I don't understand what it means).
    Something about *"Missing View"*
    Catalog#format() Entry locale=null, key=SES_WORKITEM_MISSING_VIEW, defVal=SES_WORKITEM_MISSING_VIEW
    20091126 08:28:22.701 TaskThread(0x0052fecf) Catalog#format() Info parameters=null
    20091126 08:28:22.701 TaskThread(0x0052fecf) Catalog#format() Info tmp=null
    20091126 08:28:22.701 TaskThread(0x0052fecf) Catalog#format() Info pattern=Missing view id.
    20091126 08:28:22.701 TaskThread(0x0052fecf) Catalog#format() Info msg=Missing view id.
    20091126 08:28:22.701 TaskThread(0x0052fecf) Catalog#format() Exit returned= Missing view id.
    20091126 08:28:23.092 TaskThread(0x0052fecf) DeferredScanner#addTaskResult() Entry name=Send Email Task, ti=TaskInstance:Send Email Task tdalton
    20091126 08:28:23.092 TaskThread(0x0052fecf) Catalog#format() Entry locale=null, key=SES_WORKITEM_MISSING_VIEW, defVal=SES_WORKITEM_MISSING_VIEW
    20091126 08:28:23.092 TaskThread(0x0052fecf) Catalog#format() Info parameters=null
    20091126 08:28:23.092 TaskThread(0x0052fecf) Catalog#format() Info tmp=null
    20091126 08:28:23.092 TaskThread(0x0052fecf) Catalog#format() Info pattern=Missing view id.
    20091126 08:28:23.092 TaskThread(0x0052fecf) Catalog#format() Info msg=Missing view id.
    20091126 08:28:23.092 TaskThread(0x0052fecf) Catalog#format() Exit returned= Missing view id.
    20091126 08:28:23.092 TaskThread(0x0052fecf) DeferredScanner#addTaskResult() Exit void
    20091126 08:28:23.092 TaskThread(0x0052fecf) DeferredScanner#launchTask() Data executeOnce= false
    20091126 08:28:23.092 TaskThread(0x0052fecf) DeferredScanner#launchTask() Exit returned= false
    20091126 08:28:23.092 TaskThread(0x0052fecf) DeferredScanner#processTrigger() Exit returned= false
    20091126 08:28:23.092 TaskThread(0x0052fecf) DeferredScanner#endObject() Entry no args
    20091126 08:28:23.092 TaskThread(0x0052fecf) DeferredScanner#endObject() Exit void
    20091126 08:28:23.092 TaskThread(0x0052fecf) DeferredScanner#processObject() Exit returned= false
    20091126 08:28:23.092 TaskThread(0x0052fecf) DeferredScanner#processDeferredTasks() Data idOrName== #ID#6BF7-:B3702F65421:491FD113-:D0E4376B71977D1D
    20091126 08:28:23.092 TaskThread(0x0052fecf) DeferredScanner#processDeferredTasks() Data nameOrId== ukaila
    20091126 08:28:23.123 TaskThread(0x0052fecf) DeferredScanner#processDeferredTasks() Data object lastMod= 24
    20091126 08:28:23.123 TaskThread(0x0052fecf) DeferredScanner#processObject() Entry obj=User:ukaila
    20091126 08:28:23.123 TaskThread(0x0052fecf) DeferredScanner#processObject() Data tasks= [ { accountId=ukaila, task=Send Email Task, name=Send Email Task, date=11/25/2009 11:15:00 } ]
    20091126 08:28:23.123 TaskThread(0x0052fecf) DeferredScanner#processObject() Data task list object= { accountId=ukaila, task=Send Email Task, name=Send Email Task, date=11/25/2009 11:15:00 }
    20091126 08:28:23.123 TaskThread(0x0052fecf) DeferredScanner#processTrigger() Entry obj=User:ukaila, trig={ accountId=ukaila, task=Send Email Task, name=Send Email Task, date=11/25/2009 11:15:00 }
    20091126 08:28:23.123 TaskThread(0x0052fecf) DeferredScanner#processTrigger() Data start= 11/25/09 11:15 AM
    20091126 08:28:23.123 TaskThread(0x0052fecf) DeferredScanner#processTrigger() Data _now= 11/26/09 8:28 AM
    20091126 08:28:23.123 TaskThread(0x0052fecf) DeferredScanner#processTrigger() Data task definition= CSC Send Email Task
    20091126 08:28:23.123 TaskThread(0x0052fecf) DeferredScanner#startObject() Entry obj=User:ukaila
    20091126 08:28:23.123 TaskThread(0x0052fecf) DeferredScanner#startObject() Entry type=User, nameOrId=ukaila
    20091126 08:28:23.123 TaskThread(0x0052fecf) DeferredScanner#startObject() Exit void
    20091126 08:28:23.123 TaskThread(0x0052fecf) DeferredScanner#startObject() Exit void
    20091126 08:28:23.123 TaskThread(0x0052fecf) DeferredScanner#processTrigger() Data task template= null
    20091126 08:28:23.123 TaskThread(0x0052fecf) DeferredScanner#processTrigger() Data task definition= TaskDefinition:Send Email Task
    20091126 08:28:23.123 TaskThread(0x0052fecf) DeferredScanner#processTrigger() Data task template= TaskTemplate:null
    20091126 08:28:23.123 TaskThread(0x0052fecf) DeferredScanner#launchTask() Entry obj=User:ukaila, trig={ accountId=ukaila, task=Send Email Task, name=Send Email Task, date=11/25/2009 11:15:00 }, tt=TaskTemplate:null
    20091126 08:28:23.123 TaskThread(0x0052fecf) DeferredScanner#launchTask() Data taskName= null
    20091126 08:28:23.123 TaskThread(0x0052fecf) DeferredScanner#launchTask() Data generated taskName= Send Email Task ukaila
    20091126 08:28:23.123 TaskThread(0x0052fecf) TaskTemplate#setTaskName(String) Entry no args
    20091126 08:28:23.123 TaskThread(0x0052fecf) TaskTemplate#setTaskName(String) Exit void
    20091126 08:28:23.123 TaskThread(0x0052fecf) DeferredScanner#launchTask() Data orgName= null
    20091126 08:28:23.123 TaskThread(0x0052fecf) DeferredScanner#launchTask() Data owner= null
    20091126 08:28:23.123 TaskThread(0x0052fecf) DeferredScanner#launchTask() Data subjectLength= 29,650
    20091126 08:28:23.123 TaskThread(0x0052fecf) XmlObjectFactory#create(Element) Entry element=[Map: null]
    20091126 08:28:23.123 TaskThread(0x0052fecf) XmlObjectFactory#getConstructor() Entry element=[Map: null]
    20091126 08:28:23.123 TaskThread(0x0052fecf) XmlObjectFactory#getConstructor() Info elname=Map
    20091126 08:28:23.123 TaskThread(0x0052fecf) XmlObjectFactory#getConstructor() Info classAtt=null
    20091126 08:28:23.123 TaskThread(0x0052fecf) XmlObjectFactory#getConstructor() Info classAtt=null
    20091126 08:28:23.123 TaskThread(0x0052fecf) XmlObjectFactory#getConstructor() Info regName=Map
    20091126 08:28:23.123 TaskThread(0x0052fecf) XmlObjectFactory#getConstructor() Exit returned= com.waveset.util.XmlObjectFactory$Registration@1edf84f
    20091126 08:28:23.123 TaskThread(0x0052fecf) XmlObjectFactory#create(Element) Info handler=com.waveset.util.XmlHashMap@493dca
    20091126 08:28:23.123 TaskThread(0x0052fecf) XmlObjectFactory#create(Element) Entry element=[Locale: null]
    20091126 08:28:23.123 TaskThread(0x0052fecf) XmlObjectFactory#getConstructor() Entry element=[Locale: null]
    20091126 08:28:23.123 TaskThread(0x0052fecf) XmlObjectFactory#getConstructor() Info elname=Locale
    20091126 08:28:23.123 TaskThread(0x0052fecf) XmlObjectFactory#getConstructor() Info classAtt=null
    20091126 08:28:23.123 TaskThread(0x0052fecf) XmlObjectFactory#getConstructor() Info classAtt=null
    20091126 08:28:23.123 TaskThread(0x0052fecf) XmlObjectFactory#getConstructor() Info regName=Locale
    20091126 08:28:23.123 TaskThread(0x0052fecf) XmlObjectFactory#getConstructor() Exit returned= com.waveset.util.XmlObjectFactory$Registration@77a748
    20091126 08:28:23.123 TaskThread(0x0052fecf) XmlObjectFactory#create(Element) Info handler=com.waveset.util.XmlLocale@1876e5d
    20091126 08:28:23.123 TaskThread(0x0052fecf) XmlObjectFactory#create(Element) Exit returned= en_US

  • Deferred task just for one organization

    Hi,
    Is there a way to configure deferred task to run on just one organization? We need to have a deferred task for contractors to notify the manager about the upcoming expiry date etc., Since the number of contractors are usually a small number, it would be much more efficient if we can let the scanner scan users objects just in contractor organization.
    Does anybody know what exactly the deferred task scanner does to find out that there is a task that needs to be executed. Does it go fetch the entire user object and then parse the user object xml for the list of tasks? Or does it do something more efficient?
    Just want to know some internal works to just get an idea of how efficient or inefficient the whole process is.
    Thanks
    -Kamal

    I actually run through all records with this
    <Action id='0' application='com.waveset.session.WorkflowServices'>
    <Argument name='op' value='removeDeferredTask'/>
    <Argument name='type' value='User'/>
    <Argument name='name' value='$(employeeid)'/>
    <Argument name='task' value='SD_WFP_DailyTerminateUserProcess'/>
    </Action>
    <Action id='1' application='com.waveset.session.WorkflowServices'>
    <Argument name='op' value='removeDeferredTask'/>
    <Argument name='type' value='User'/>
    <Argument name='name' value='$(employeeid)'/>
    <Argument name='task' value='SD_TerminateProcess'/>
    </Action>
    <Action id='2' application='com.waveset.session.WorkflowServices'>
    <Condition>
    <notnull>
    <ref>termdate</ref>
    </notnull>
    </Condition>
    <Argument name='op' value='addDeferredTask'/>
    <Argument name='type' value='User'/>
    <Argument name='name' value='$(employeeid)'/>
    <Argument name='task' value='SD_TerminateProcess'/>
    <Argument name='date' value='$(termdate)'/>
    </Action>
    I thought this will delete all old tasks (SD_WFP_DailyTerminateUserProcess) and re-assign the new one (SD_TerminateProcess). But today I still see 'SD_WFP_DailyTerminateUserProcess' running. Is there a way to find all DeferredTask assignments, to make sure that SD_WFP_DailyTerminateUserProcess tasks have been removed and SD_TerminateProcess assigned?
    I can query database if needed. I need to figure this out asap, this is a production server. thanks

  • Deferred Task ----  what am I doing wrong?

    I am trying to configure a Deferred Task, which will send an Email Notification on a particular date.
    I included this Task in my Update User Workflow (I included it as an <Action> in the Activity "Notify").
    Here is the code :
    <Activity id='7' name='Notify'>
    <Action id='0' process='Provisioning Notification'>
    <Argument name='approvals' value='$(approvals)'/>
    <Argument name='notifications' value='$(notifications)'/>
    </Action>
    <Action id='1' application='com.waveset.session.WorkflowServices'>
    <Argument name='op' value='addDeferredTask'/>
    <Argument name='type' value='User'/>
    <Argument name='name' value='$(accountId)'/>
    <Argument name='task' value='Send Email Task'/>
    <Argument name='date' value='$(user.global.parseddate)'/>
    <Argument name='accountId' value='$(accountId)'/>
    </Action>
    <Transition to='end'/>
    </Activity>
    The "Send Email Task" there is a Workflow which should send the Email Notification.
    Unfortunately, this didn't work.
    I don't know if the reason is because I made this an ACTION, and maybe it should be an ACTIVITY all by itself?
    Or, maybe the problem lies with the DATE ?

    Hi,
    I think the problem is in your Taskdefinition. Compare to mine as shown below and you will find a lot of differences.
    <?xml version='1.0' encoding='UTF-8'?>
    <!DOCTYPE TaskDefinition PUBLIC 'waveset.dtd' 'waveset.dtd'>
    <TaskDefinition name='Sunset Delete User' primaryObjectClass='TaskDefinition' taskType='DeferredTaskScanner' executor='com.waveset.workflow.WorkflowExecutor' syncControlAllowed='true' execMode='async' execLimit='0' resultLimit='0' resultOption='rename' visibility='runschedule' progressInterval='0'>
      <Extension>
        <WFProcess name='Sunset Delete User' maxSteps='0'>
          <Variable name='id' input='true'>
            <Comments>Passed in by Deferred Task Scanner</Comments>
          </Variable>
          <Variable name='triggerName' input='true'>
            <Comments>Passed in by Deferred Task Scanner</Comments>
          </Variable>
          <Variable name='accountId' input='true'>
            <Comments>
              The accountId of the user to be updated.
            </Comments>
          </Variable>
          <Variable name='options'>
            <Comments>
              Contains provisioning options stored in a Map representation of a
              ProvisioningOptions object.  See the DeProvision subprocess
              for a description of the options.
            </Comments>
          </Variable>
          <Variable name='user' input='true'/>
          <Activity id='0' name='start'>
            <Transition to='Check ID'/>
          </Activity>
          <Activity id='1' name='Check ID'>
            <Transition to='end'>
              <isnull>
                <ref>id</ref>
              </isnull>
            </Transition>
            <Transition to='Delete User'/>
          </Activity>
          <Activity id='2' name='Delete User'>
            <Variable name='user'/>
            <Action id='0' application='com.waveset.session.WorkflowServices'>
              <Argument name='op' value='getView'/>
              <Argument name='authorized' value='true'/>
              <Argument name='id' value='$(id)'/>
              <Argument name='type' value='User'/>
              <Return from='view' to='user'/>
            </Action>
            <Action id='1'>
              <expression>
                <block>
                  <set name='options.accountId'>
                    <ref>user.waveset.accountId</ref>
                  </set>
                  <set name='options.unlinkTargets'>
                    <list>
                      <s>app</s>
                    </list>
                  </set>
                  <set name='options.unassignTargets'>
                    <list>
                          <s>app</s>
                    </list>
                  </set>
                  <set name='options.targets'>
                    <remove>
                      <ref>user.accountInfo.assigned</ref>
                        <s>app</s>
                    </remove>
                  </set>
                  <set name='options.deleteUser'>
                    <s>true</s>
                  </set>
                  <set name='options.fetchAccounts'>
                    <s>false</s>
                  </set>
                  <set name='options.forceDelete'>
                    <s>false</s>
                  </set>
                  <set name='options.noCreate'>
                    <s>true</s>
                  </set>
                  <set name='options.noDelete'>
                    <s>false</s>
                  </set>
                  <set name='options.noLink'>
                    <s>false</s>
                  </set>
                  <set name='options.noUpdate'>
                    <s>true</s>
                  </set>
                  <set name='options.preserveChanges'>
                    <s>false</s>
                  </set>
                  <set name='options.fetchAccounts'>
                    <s>false</s>
                  </set>
                  <set name='options.selectAll'>
                    <s>true</s>
                  </set>
                </block>
              </expression>
            </Action>
            <Action id='2' process='DeProvision'>
              <Argument name='accountId' value='$(id)'/>
              <Argument name='options' value='$(options)'/>
            </Action>
            <Transition to='end'/>
          </Activity>
          <Activity id='3' name='end'>
          </Activity>
        </WFProcess>
      </Extension>
      <MemberObjectGroups>
        <ObjectRef type='ObjectGroup' id='#ID#Top' name='Top'/>
      </MemberObjectGroups>
    </TaskDefinition>

  • Bulk load to change deferred task date

    We initially loaded users with password expirations and a defered task we created to send them emails starting 15 days before the password expires. We want to move these dates out. Can we do a bulk load and change the dates?
    Thanks,
    Larry

    the deferred task scanner is expensive too. so much so in fact, that we dont use it. in fact, we keep a users "nextTaskDate" as a queriable attribute, which lets us get a result set of users that have tasks on that date. no more iterating through the users to find them. with this, its much easier to do what i had reccommended earlier.
    --Dana                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   

  • ActiveSync:Deferred Task role provision

    Hello,
    During active sync I am trying to provision an IDM role in some future date (ex. 30 days)
    on the same date I will need to remove the current IDM role.
    What is the best way to accomplish this?
    1) Should be done using a Deferred Task?
    Where I use a work-flow that removes the current role and then adds the new role?
    If so is the done by executing a workflow using viewOptions.Process?
    <Field name='viewOptions.Process'>
      <Disable>
        <neq>
          <ref>activeSync.DeferredFlag</ref>
          <s>true</s>
        </neq>
      </Disable>
      <Expansion>
        <s>MyDeferredTaskWorkflow</s>
      </Expansion>
    </Field>2) Should this be done by manipulating the Role Date ?
    http://docs.sun.com/app/docs/doc/820-5822/byahf?l=en&a=view&q=role+date
    This is for IDM 8.1
    All input is welcome and appreciated.
    Thank you

    This is an example of a field at the end of your activeSync form to set the workflow that invokes a deferred task (ours is quite complicated)
    <Field name='viewOptions.Process'>
    <Comments> Define custom workflow to run for each feed operation. Use null if the standard workflow for that operation should be used.</Comments>
    <Expansion>
    <s>Your custom workflow</s>
    </Expansion>
    </Field>

  • Adding/Deleting Deferred task thru Tabbed User Form

    I am trying to find a way to add/deleted deferred tasks thru the Tabbed User Form. Does anyone have any ideas?

    I am trying to find a way to add/deleted deferred tasks thru the Tabbed User Form. Does anyone have any ideas?

Maybe you are looking for