LCM Error Creating or Updating Batch File Upload

Version 8.4

Hello Everyone, I have the problem with LCM Create and Update, I just duplicate it and upload Batch File to create Identity, but I got the error

This is my workflow and xml file

<?xml version='1.0' encoding='UTF-8'?>
<!DOCTYPE Workflow PUBLIC "sailpoint.dtd" "sailpoint.dtd">
<Workflow configForm="Provisioning Workflow Config Form" created="1757322840765" explicitTransitions="true" handler="sailpoint.api.StandardWorkflowHandler" id="7f00010199281dba8199289a8abd05d9" libraries="Identity,BatchRequest" modified="1757323762013" monitored="true" name="New LCM Create and Update" significantModified="1757323762013" taskType="LCM" type="LCMIdentity">
  <Variable input="true" name="identityName">
    <Description>The name of the identity we&amp;#39;re supposed to update.</Description>
  </Variable>
  <Variable initializer="script:(identityDisplayName != void) ? identityDisplayName : resolveDisplayName(identityName)" input="true" name="identityDisplayName">
    <Description>The displayName of the identity being updated.
      Query for this using a projection query and fall back to the name.</Description>
  </Variable>
  <Variable initializer="false" input="true" name="endOnManualWorkItems">
    <Description>Option to skip requests with manual work items.</Description>
  </Variable>
  <Variable initializer="false" input="true" name="endOnProvisioningForms">
    <Description>Option to skip requests with provisioning forms.</Description>
  </Variable>
  <Variable input="true" name="batchRequestItemId">
    <Description>Used by the batch interface to record back individual request item status. The specific item id for the individual request in the batch file.</Description>
  </Variable>
  <Variable input="true" name="plan">
    <Description>The provisioning plan ready to execute.</Description>
  </Variable>
  <Variable input="true" name="flow">
    <Description>The name of the LCM flow that launched this workflow.

      This is one of these two values:

      IdentityCreateRequest
      IdentityEditRequest</Description>
  </Variable>
  <Variable editable="true" name="optimisticProvisioning">
    <Description>Set to true to enable optimistic provisioning.  This will cause
      changes to the entitlements compiled from role assignments to be
      applied immediately to the identity cube rather than waiting
      for the next refresh/reaggregation after the provisioning system
      completes the request.</Description>
  </Variable>
  <Variable editable="true" initializer="true" name="foregroundProvisioning">
    <Description>Normally provisioning is done in a step that uses the &amp;quot;background&amp;quot;
      option to force the workflow to be suspend and be resumed in a
      background task thread.  This prevents the browser session from
      hanging since provision can sometimes take a long time.  For demos
      and testing it can be better to do this in the foreground so that
      provisioning will have been performed when control is returned to the
      user.  This prevents having to run the Perform Maintenance task to
      see the results of the request.</Description>
  </Variable>
  <Variable editable="true" initializer="false" name="doRefresh">
    <Description>Set to true to cause an identity refresh after the changes in the plan
      have been provisioned.  This is normally off, you might want this on
      if you want modification of identity or link attributes to result in
      an immediate re-evaluation of assigned and detected roles.</Description>
  </Variable>
  <Variable initializer="Normal" input="true" name="workItemPriority">
    <Description>The String version of a WorkItem.Priority. This variable is
       used to set the priority on all of the workitems generated
       as part of this workflow and also set on the IdentityRequest
       object.</Description>
  </Variable>
  <Variable initializer="user, requester" input="true" name="notificationScheme">
    <Description>A string that specifies who should be notified when the request has been complete.
     The value can be null or a csv of one or more of the following options.

     none or null
       disable notifications

     user
       Identity that is being update will be notified.

     manager
       The manager of the Identity that is being updated will be notified.

     requester
       The person that has requested the update will be notified.</Description>
  </Variable>
  <Variable initializer="LCM User Notification" input="true" name="userEmailTemplate">
    <Description>The email template to use for user notification.</Description>
  </Variable>
  <Variable initializer="LCM Requester Notification" input="true" name="requesterEmailTemplate">
    <Description>The email template to use for requester notification.</Description>
  </Variable>
  <Variable initializer="LCM Manager Notification" input="true" name="managerEmailTemplate">
    <Description>The email template to use for manager notification.</Description>
  </Variable>
  <Variable input="true" name="securityOfficerEmailTemplate">
    <Description>The email template to use for security officer notification.</Description>
  </Variable>
  <Variable initializer="serial" input="true" name="approvalMode">
    <Description>A string that specifies how we should handle the approvals.

     By default this is serial since most of these request with
     the exception of manager transfers will have only one approver.

     parallel
       Approvals are processed concurrently and there must be consensus,
       we wait for all approvers to approve.  The first approver that
       rejects terminates the entire approval.

     parallelPoll
       Approvals are processed concurrently but consensus is not required.
       All approvals will be processed, we don&amp;#39;t stop if there are any
       rejections.

     serial
       Approvals are processed one at a time and there must be consensus.
       The first approver that rejects terminates the entire approval.

     serialPoll
       Approvals are processed in order but consensus is not required.
       All approvals will be processed, we don&amp;#39;t stop if there are any
       rejections.  In effect we are &amp;quot;taking a poll&amp;quot; of the approvers.

     any
      Approvals are processed concurrently, the first approver to
      respond makes the decision for the group.</Description>
  </Variable>
  <Variable initializer="manager, newManager" input="true" name="approvalScheme">
    <Description>A String that specifies how approvals should be generated for
      this workflow there are three built-in modes

      none - disabled approvals

      manager - The user&amp;#39;s current manager will get approvals

      newManager - The newly assigned manager will get approvals when
                   manager transfers occur. Otherwise the user&amp;#39;s manager
                   current manager will be the approver.</Description>
  </Variable>
  <Variable initializer="spadmin" input="true" name="fallbackApprover">
    <Description>A String that specifies the name of the Identity that will
      be assigned any approvals where the owner of the approver
      can&amp;#39;t be resolved. Example if the scheme is &amp;quot;owner&amp;quot; and the
      application doesn&amp;#39;t specify and owner.</Description>
  </Variable>
  <Variable initializer="LCM Identity Update Approval" input="true" name="approvalEmailTemplate">
    <Description>The email template to use for approval notifications.</Description>
  </Variable>
  <Variable input="true" name="securityOfficerName">
    <Description>The name of the identity that will be sent approvals
       during security officer approvals.</Description>
  </Variable>
  <Variable initializer="continue" input="true" name="policyScheme">
    <Description>A String that specifies how policy checks effect the overall
      process.

      none - disabled policy checking

      fail -  fail and exit the workflow if any policy violations are found

      continue -  continue if policy violations are found</Description>
  </Variable>
  <Variable input="true" name="ticketManagementApplication">
    <Description>Name of the application that can handle ticket requests.
      When non-null the Manage Ticket Steps will be visited to open
      tickets during the workflow lifecycle.</Description>
  </Variable>
  <Variable name="ticketId">
    <Description>The id of the ticket that is generated by the ticketingManagementApplication.
      This is typically generated on the &amp;quot;open&amp;quot; call, and then used in subsequent
      calls.  It is also stored on the IdentityRequest object under the
      externalTicketId variable.</Description>
  </Variable>
  <Variable input="true" name="policiesToCheck">
    <Description>A List of policies that should be checked. If this list is
      empty all violations will be checked. Used in combination
      with policyScheme.</Description>
  </Variable>
  <Variable name="policyViolations">
    <Description>List of policy violations that were found during our initial policy scan.
       This list is passed into each work item so the approvers can see
       pending violations.</Description>
  </Variable>
  <Variable initializer="LCM" input="true" name="source">
    <Description>String version of sailpoint.object.Source to indicate
      where the request originated.  Defaults to LCM.</Description>
  </Variable>
  <Variable name="approvalSet">
    <Description>This attributes is set during the &amp;quot;Build Approval Set&amp;quot; step,
       which builds this list by going through the ProvisioningPlan
       to build the line items that need to be approved,

       This variable includes all ApprovalItems that are part of
       the request process and is updated during the AfterScript
       of the approval process by assimilating the decisions
       and comments from the Approvals copy of the ApprovalItem.</Description>
  </Variable>
  <Variable initializer="false" name="trace">
    <Description>Used for debugging this workflow and when set to true trace
      will be sent to stdout.</Description>
  </Variable>
  <Variable name="project">
    <Description>ProvisioningProject which is just a compiled version of the ProvisioningPlan.</Description>
  </Variable>
  <Variable name="approvalForm">
    <Description>The form that is generated based on the changes that were made.  This
       form will be sent into the workitem and allow editing of the
       requested values during the approval process. This is generated
       in &amp;quot;Build Approval Form&amp;quot; based on the passed-in plan.</Description>
  </Variable>
  <Variable name="identityRequestId" output="true">
    <Description>The sequence id of the Identity request object which is stored in
       the name field of the identity request.</Description>
  </Variable>
  <Variable input="true" name="approverElectronicSignature">
    <Description>The name of the electronic signature object that should be used when workitems
       are completed by the batch approver when performing batch operations.</Description>
  </Variable>
  <RuleLibraries>
    <Reference class="sailpoint.object.Rule" id="7f00010196161e778196165f30ef018a" name="Approval Library"/>
    <Reference class="sailpoint.object.Rule" id="7f00010196161e778196165f39b2019d" name="LCM Workflow Library"/>
  </RuleLibraries>
  <Step icon="Start" monitored="true" name="Start" posX="14" posY="12">
    <Transition to="Generic Step"/>
  </Step>
  <Step icon="Task" monitored="true" name="Initialize" posX="183" posY="12">
    <Arg name="formTemplate"/>
    <Arg name="identityName" value="ref:identityName"/>
    <Arg name="enableRetryRequest"/>
    <Arg name="allowRequestsWithViolations"/>
    <Arg name="endOnManualWorkItems" value="ref:endOnManualWorkItems"/>
    <Arg name="policiesToCheck" value="ref:policiesToCheck"/>
    <Arg name="approvalSet" value="ref:approvalSet"/>
    <Arg name="workItemPriority" value="ref:workItemPriority"/>
    <Arg name="workItemComments"/>
    <Arg name="source" value="ref:source"/>
    <Arg name="violationReviewDecision"/>
    <Arg name="policyScheme" value="ref:policyScheme"/>
    <Arg name="identityDisplayName" value="ref:identityDisplayName"/>
    <Arg name="requireViolationReviewComments"/>
    <Arg name="identityRequest"/>
    <Arg name="trace" value="ref:trace"/>
    <Arg name="batchRequestItemId" value="ref:batchRequestItemId"/>
    <Arg name="enableApprovalRecommendations"/>
    <Arg name="asyncCacheRefresh"/>
    <Arg name="endOnProvisioningForms" value="ref:endOnProvisioningForms"/>
    <Arg name="optimisticProvisioning" value="false"/>
    <Arg name="plan" value="ref:plan"/>
    <Arg name="flow" value="ref:flow"/>
    <Arg name="launcher" value="ref:launcher"/>
    <Description>
      Call the standard subprocess to initialize the request, this includes
      auditing, building the approvalset, compiling the plan into
      a project and checking policy violations.
    </Description>
    <Return name="policyViolations" to="policyViolations"/>
    <Return name="identityRequestId" to="identityRequestId"/>
    <Return name="project" to="project"/>
    <WorkflowRef>
      <Reference class="sailpoint.object.Workflow" id="7f00010196161e778196166021670316" name="Identity Request Initialize"/>
    </WorkflowRef>
    <Transition to="Exit On Manual Work Items" when="script:(isTrue(endOnManualWorkItems) &amp;&amp; (project.getUnmanagedPlan() != null))"/>
    <Transition to="Exit On Provisioning Form" when="script:(isTrue(endOnProvisioningForms) &amp;&amp; (project.hasQuestions()))"/>
    <Transition to="Exit On Policy Violation" when="script:((size(policyViolations) > 0 ) &amp;&amp; (policyScheme.equals(&quot;fail&quot;)))"/>
    <Transition to="Create Ticket"/>
  </Step>
  <Step condition="script:(ticketManagementApplication != null)" icon="Task" monitored="true" name="Create Ticket" posX="403" posY="8">
    <Arg name="trace" value="ref:trace"/>
    <Arg name="ticketManagementApplication" value="ref:ticketManagementApplication"/>
    <Arg name="project" value="ref:project"/>
    <Arg name="action" value="open"/>
    <Arg name="workItemPriority" value="ref:workItemPriority"/>
    <Arg name="identityRequestId" value="ref:identityRequestId"/>
    <Arg name="source" value="ref:source"/>
    <Arg name="ticketProject"/>
    <Arg name="ticketDataGenerationRule"/>
    <Arg name="ticketPlan"/>
    <Description>
      Call a subprocess to create a ticket in the ticketManagementApplication is non-null.
      You can specify a specific 'ticketDataGenerationRule' here or you can also specify
      it on the application.  It'll be read from the argument first and fall back to the '
      application config.
    </Description>
    <Return name="ticketId" to="externalTicketId"/>
    <WorkflowRef>
      <Reference class="sailpoint.object.Workflow" id="7f00010196161e778196165f34f90191" name="Manage Ticket"/>
    </WorkflowRef>
    <Transition to="Approve"/>
  </Step>
  <Step icon="Task" monitored="true" name="Approve" posX="488" posY="8">
    <Arg name="formTemplate"/>
    <Arg name="approvalScheme" value="ref:approvalScheme"/>
    <Arg name="identityName" value="ref:identityName"/>
    <Arg name="fallbackApprover" value="ref:fallbackApprover"/>
    <Arg name="approvalSet" value="ref:approvalSet"/>
    <Arg name="approvers"/>
    <Arg name="policyViolations" value="ref:policyViolations"/>
    <Arg name="workItemPriority" value="ref:workItemPriority"/>
    <Arg name="workItemComments"/>
    <Arg name="identityRequestId" value="ref:identityRequestId"/>
    <Arg name="identityDisplayName" value="ref:identityDisplayName"/>
    <Arg name="approvalMode" value="ref:approvalMode"/>
    <Arg name="trace" value="ref:trace"/>
    <Arg name="approvalForm"/>
    <Arg name="requireCommentsForDenial" value="ref:requireCommentsForDenial"/>
    <Arg name="approvalEmailTemplate" value="ref:approvalEmailTemplate"/>
    <Arg name="securityOfficerName" value="ref:securityOfficerName"/>
    <Arg name="approverElectronicSignature" value="ref:approverElectronicSignature"/>
    <Arg name="plan" value="ref:plan"/>
    <Arg name="requireCommentsForApproval" value="ref:requireCommentsForApproval"/>
    <Arg name="launcher" value="ref:launcher"/>
    <Description>
      Call the standard subprocess that will handle the built-in
      owner, manager and security officer approval schemes.
    </Description>
    <Return name="approvalSet"/>
    <Return name="plan"/>
    <Return name="workItemComments"/>
    <WorkflowRef>
      <Reference class="sailpoint.object.Workflow" id="7f00010196161e778196166022ec031b" name="Identity Request Approve Identity Changes"/>
    </WorkflowRef>
    <Transition to="Update Ticket Post Approval"/>
  </Step>
  <Step condition="script:(ticketManagementApplication != null)" icon="Task" monitored="true" name="Update Ticket Post Approval" posX="599" posY="8">
    <Arg name="trace" value="ref:trace"/>
    <Arg name="ticketManagementApplication" value="ref:ticketManagementApplication"/>
    <Arg name="project" value="ref:project"/>
    <Arg name="action" value="postApproval"/>
    <Arg name="workItemPriority" value="ref:workItemPriority"/>
    <Arg name="identityRequestId" value="ref:identityRequestId"/>
    <Arg name="source" value="ref:source"/>
    <Arg name="ticketProject"/>
    <Arg name="ticketId"/>
    <Arg name="ticketDataGenerationRule"/>
    <Arg name="ticketPlan"/>
    <Description>
      Call a subprocess to update the ticket in the ticketManagementApplication is non-null.

      You can specify a specific 'ticketDataGenerationRule' here or you can also specify
      it on the application.  It'll be read from the argument first and fall back to the '
      application config.

    </Description>
    <WorkflowRef>
      <Reference class="sailpoint.object.Workflow" id="7f00010196161e778196165f34f90191" name="Manage Ticket"/>
    </WorkflowRef>
    <Transition to="Process Approval Decisions"/>
  </Step>
  <Step action="call:processPlanApprovalDecisions" icon="Task" monitored="true" name="Process Approval Decisions" posX="764" posY="9" resultVariable="plan">
    <Arg name="disableAudit" value="true"/>
    <Arg name="approvalSet" value="ref:approvalSet"/>
    <Arg name="plan" value="ref:plan"/>
    <Transition to="Notify" when="script:approvalSet.hasRejected()"/>
    <Transition to="Recompile Project"/>
  </Step>
  <Step action="call:recompileProvisioningProject" icon="Task" monitored="true" name="Recompile Project" posX="913" posY="5" resultVariable="project">
    <Arg name="requester" value="ref:launcher"/>
    <Arg name="identityName" value="ref:identityName"/>
    <Arg name="workItemPriority" value="ref:workItemPriority"/>
    <Arg name="project" value="ref:project"/>
    <Arg name="source" value="ref:source"/>
    <Arg name="optimisticProvisioning" value="ref:optimisticProvisioning"/>
    <Arg name="plan" value="ref:plan"/>
    <Description>Recompile the provisioning project with the plan.
      The plan may contain modifications from the original plan if
      it was modified during the approval process.
      If you need to pass in provisioner options like "noFiltering"
      or "noRoleDeprovisioning" you must pass them as explicit
      arguments to the call.

      The evaluation options "requester" and "source" are commonly
      set here.

      You can also pass things into the Template and Field scripts by
      defining Args in this step.</Description>
    <Transition to="Provision"/>
  </Step>
  <Step icon="Task" monitored="true" name="Provision" posX="1014" posY="6">
    <Arg name="formTemplate" value="Identity Update"/>
    <Arg name="approvalScheme" value="ref:approvalScheme"/>
    <Arg name="identityName" value="ref:identityName"/>
    <Arg name="fallbackApprover" value="ref:fallbackApprover"/>
    <Arg name="approvalSet" value="ref:approvalSet"/>
    <Arg name="manualActionsEmailTemplate" value="Pending Manual Changes"/>
    <Arg name="workItemComments"/>
    <Arg name="workItemPriority" value="ref:workItemPriority"/>
    <Arg name="project" value="ref:project"/>
    <Arg name="policyViolations" value="ref:policyViolations"/>
    <Arg name="identityRequestId" value="ref:identityRequestId"/>
    <Arg name="policyScheme" value="ref:policyScheme"/>
    <Arg name="splitProvisioning"/>
    <Arg name="saveUnmanagedPlan"/>
    <Arg name="foregroundProvisioning" value="ref:foregroundProvisioning"/>
    <Arg name="noTriggers"/>
    <Arg name="identityDisplayName" value="ref:identityDisplayName"/>
    <Arg name="trace" value="ref:trace"/>
    <Arg name="saveUnmanagedPlan_WithProjectArgument"/>
    <Arg name="recompile" value="false"/>
    <Arg name="optimisticProvisioning" value="ref:optimisticProvisioning"/>
    <Arg name="plan"/>
    <Arg name="flow" value="ref:flow"/>
    <Arg name="launcher" value="ref:launcher"/>
    <Description>
      Call the standard subprocess that will process the
      approval decisions and do provisioning.  This
      includes calling any configured provisioning
      connectors and building manual actions.
    </Description>
    <Return name="project" to="project"/>
    <WorkflowRef>
      <Reference class="sailpoint.object.Workflow" id="7f00010196161e7781961660224c0319" name="Identity Request Provision"/>
    </WorkflowRef>
    <Transition to="Post Provision"/>
  </Step>
  <Step action="script:approvalSet.setAllProvisioned();" icon="Task" monitored="true" name="Post Provision" posX="1110" posY="7">
    <Description>
      Mark all of the items in the approvalset provisioned since these
      are all synchronous activities.
    </Description>
    <Transition to="Update Ticket Post Provision"/>
  </Step>
  <Step condition="script:(ticketManagementApplication != null)" icon="Task" monitored="true" name="Update Ticket Post Provision" posX="1111" posY="115">
    <Arg name="trace" value="ref:trace"/>
    <Arg name="ticketManagementApplication" value="ref:ticketManagementApplication"/>
    <Arg name="project" value="ref:project"/>
    <Arg name="action" value="postProvisioning"/>
    <Arg name="workItemPriority" value="ref:workItemPriority"/>
    <Arg name="identityRequestId" value="ref:identityRequestId"/>
    <Arg name="source" value="ref:source"/>
    <Arg name="ticketProject"/>
    <Arg name="ticketId"/>
    <Arg name="ticketDataGenerationRule"/>
    <Arg name="ticketPlan"/>
    <Description>
      Call a subprocess to update the ticket in the ticketManagementApplication is non-null.

      You can specify a specific 'ticketDataGenerationRule' here or you can also specify
      it on the application.  It'll be read from the argument first and fall back to the '
      application config.

    </Description>
    <WorkflowRef>
      <Reference class="sailpoint.object.Workflow" id="7f00010196161e778196165f34f90191" name="Manage Ticket"/>
    </WorkflowRef>
    <Transition to="Refresh Identity"/>
  </Step>
  <Step action="call:refreshIdentity" condition="ref:doRefresh" icon="Task" monitored="true" name="Refresh Identity" posX="954" posY="114">
    <Arg name="identityName" value="ref:identityName"/>
    <Arg name="provision" value="true"/>
    <Arg name="correlateEntitlements" value="true"/>
    <Arg name="synchronizeAttributes" value="true"/>
    <Description>
      Add arguments as necessary to enable refresh features.  Typically you only want this
      to correlate roles and possibly provision if we notice new assigned roles.
      Note that provisioning will be done in the Identity Refresh workflow so if there
      are any provisioning forms to display we won't feed them directly to the
      current user, they'll have to return to the inbox.
    </Description>
    <Transition to="Notify"/>
  </Step>
  <Step icon="Task" monitored="true" name="Notify" posX="830" posY="114">
    <Arg name="approvalScheme" value="ref:approvalScheme"/>
    <Arg name="identityName" value="ref:identityName"/>
    <Arg name="notificationScheme" value="ref:notificationScheme"/>
    <Arg name="userEmailTemplate" value="ref:userEmailTemplate"/>
    <Arg name="approvalSet" value="ref:approvalSet"/>
    <Arg name="policyViolations" value="ref:policyViolations"/>
    <Arg name="workItemPriority" value="ref:workItemPriority"/>
    <Arg name="source" value="ref:source"/>
    <Arg name="identityDisplayName" value="ref:identityDisplayName"/>
    <Arg name="trace" value="ref:trace"/>
    <Arg name="requesterEmailTemplate" value="ref:requesterEmailTemplate"/>
    <Arg name="securityOfficerName" value="ref:securityOfficerName"/>
    <Arg name="securityOfficerEmailTemplate" value="ref:securityOfficerEmailTemplate"/>
    <Arg name="plan" value="ref:plan"/>
    <Arg name="flow" value="ref:flow"/>
    <Arg name="managerEmailTemplate" value="ref:managerEmailTemplate"/>
    <Arg name="launcher" value="ref:launcher"/>
    <Description>
      Call the standard subprocess that will notify the various
      actors based on notification scheme.
    </Description>
    <WorkflowRef>
      <Reference class="sailpoint.object.Workflow" id="7f00010196161e778196166021f50318" name="Identity Request Notify"/>
    </WorkflowRef>
    <Transition to="end"/>
  </Step>
  <Step action="call:addMessage" monitored="true" name="Exit On Policy Violation" posX="250" posY="225">
    <Arg name="message" value="Failed due to policy violation(s)"/>
    <Arg name="type" value="Error"/>
    <Transition to="end"/>
  </Step>
  <Step action="call:addMessage" monitored="true" name="Exit On Manual Work Items" posX="280" posY="141">
    <Arg name="message" value="Failed due to manual work item(s)"/>
    <Arg name="type" value="Error"/>
    <Transition to="end"/>
  </Step>
  <Step action="call:addMessage" monitored="true" name="Exit On Provisioning Form" posX="361" posY="78">
    <Arg name="message" value="Failed due to provisioning form"/>
    <Arg name="type" value="Error"/>
    <Transition to="end"/>
  </Step>
  <Step catches="complete" icon="Catches" monitored="true" name="Finalize" posX="759" posY="284">
    <Arg name="trace" value="ref:trace"/>
    <Arg name="batchRequestItemId" value="ref:batchRequestItemId"/>
    <Arg name="identityName" value="ref:identityName"/>
    <Arg name="autoVerifyIdentityRequest"/>
    <Arg name="approvalSet" value="ref:approvalSet"/>
    <Arg name="ticketManagementApplication" value="ref:ticketManagementApplication"/>
    <Arg name="project" value="ref:project"/>
    <Arg name="workItemPriority" value="ref:workItemPriority"/>
    <Arg name="identityRequestId" value="ref:identityRequestId"/>
    <Arg name="ticketDataGenerationRule"/>
    <Description>
      Call the standard subprocess that can audit/finalize the request.
    </Description>
    <WorkflowRef>
      <Reference class="sailpoint.object.Workflow" id="7f00010196161e778196166022b7031a" name="Identity Request Finalize"/>
    </WorkflowRef>
    <Transition to="end"/>
  </Step>
  <Step icon="Stop" monitored="true" name="end" posX="830" posY="225"/>
  <Step action="script:System.out.println(&quot;Test Ja&quot;);" icon="Default" monitored="true" name="Generic Step" posX="71" posY="123">
    <Transition to="Initialize"/>
  </Step>
</Workflow>

This is my CSV file

operation,name,email,password,passwordConfirm
CreateIdentity,Test Account Batch,test@test.com,testtest007!,testtest007!
CreateIdentity,Test Account Batch 2,test@test.com,testtest007!,testtest007!
CreateIdentity,Test Account Batch 3,test@test.com,testtest007!,testtest007!
CreateIdentity,fa,test@test.com,testtest007!,testtest007!
CreateIdentity,Test Fail Email,test@test.com,testtest007!,testtest007!

And This is error what I got

2025-09-08T17:19:35,148 ERROR QuartzScheduler_Worker-1 org.apache.bsf.BSFManager:451 - Exception:
java.security.PrivilegedActionException: null
        at java.security.AccessController.doPrivileged(AccessController.java:573) ~[?:?]
        at org.apache.bsf.BSFManager.eval(BSFManager.java:442) [bsf.jar:?]
        at sailpoint.server.BSFRuleRunner.runScript(BSFRuleRunner.java:347) [identityiq.jar:8.4 Build bdd0ed4de58-20230919-192552]
        at sailpoint.server.InternalContext.runScript(InternalContext.java:1350) [identityiq.jar:8.4 Build bdd0ed4de58-20230919-192552]
        at sailpoint.server.ScriptletEvaluator.doScript(ScriptletEvaluator.java:263) [identityiq.jar:8.4 Build bdd0ed4de58-20230919-192552]
        at sailpoint.server.ScriptletEvaluator.evalSource(ScriptletEvaluator.java:71) [identityiq.jar:8.4 Build bdd0ed4de58-20230919-192552]
        at sailpoint.api.Workflower.evalSource(Workflower.java:5937) [identityiq.jar:8.4 Build bdd0ed4de58-20230919-192552]
        at sailpoint.api.Workflower.advanceStep(Workflower.java:5176) [identityiq.jar:8.4 Build bdd0ed4de58-20230919-192552]
        at sailpoint.api.Workflower.advance(Workflower.java:4563) [identityiq.jar:8.4 Build bdd0ed4de58-20230919-192552]
        at sailpoint.api.Workflower.startCase(Workflower.java:3149) [identityiq.jar:8.4 Build bdd0ed4de58-20230919-192552]
        at sailpoint.api.Workflower.launchSubcase(Workflower.java:5479) [identityiq.jar:8.4 Build bdd0ed4de58-20230919-192552]
        at sailpoint.api.Workflower.launchSubcases(Workflower.java:5372) [identityiq.jar:8.4 Build bdd0ed4de58-20230919-192552]
        at sailpoint.api.Workflower.advanceStep(Workflower.java:5163) [identityiq.jar:8.4 Build bdd0ed4de58-20230919-192552]
        at sailpoint.api.Workflower.advance(Workflower.java:4563) [identityiq.jar:8.4 Build bdd0ed4de58-20230919-192552]
        at sailpoint.api.Workflower.startCase(Workflower.java:3149) [identityiq.jar:8.4 Build bdd0ed4de58-20230919-192552]
        at sailpoint.api.Workflower.launchInner(Workflower.java:2818) [identityiq.jar:8.4 Build bdd0ed4de58-20230919-192552]
        at sailpoint.api.Workflower.launch(Workflower.java:2668) [identityiq.jar:8.4 Build bdd0ed4de58-20230919-192552]
        at sailpoint.api.Workflower.launchSession(Workflower.java:2538) [identityiq.jar:8.4 Build bdd0ed4de58-20230919-192552]
        at sailpoint.api.IdentityLifecycler.launchUpdate(IdentityLifecycler.java:144) [identityiq.jar:8.4 Build bdd0ed4de58-20230919-192552]
        at sailpoint.api.IdentityLifecycler.launchUpdate(IdentityLifecycler.java:164) [identityiq.jar:8.4 Build bdd0ed4de58-20230919-192552]
        at sailpoint.workflow.BatchRequestLibrary.runWorkflow(BatchRequestLibrary.java:409) [identityiq.jar:8.4 Build bdd0ed4de58-20230919-192552]
        at sailpoint.workflow.BatchRequestLibrary.launchBatchWorkflows(BatchRequestLibrary.java:368) [identityiq.jar:8.4 Build bdd0ed4de58-20230919-192552]
        at jdk.internal.reflect.GeneratedMethodAccessor2486.invoke(Unknown Source) ~[?:?]
        at jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:?]
        at java.lang.reflect.Method.invoke(Method.java:569) ~[?:?]
        at sailpoint.server.ScriptletEvaluator.doCall(ScriptletEvaluator.java:134) [identityiq.jar:8.4 Build bdd0ed4de58-20230919-192552]
        at sailpoint.server.ScriptletEvaluator.evalSource(ScriptletEvaluator.java:63) [identityiq.jar:8.4 Build bdd0ed4de58-20230919-192552]
        at sailpoint.api.Workflower.evalSource(Workflower.java:5937) [identityiq.jar:8.4 Build bdd0ed4de58-20230919-192552]
        at sailpoint.api.Workflower.advanceStep(Workflower.java:5176) [identityiq.jar:8.4 Build bdd0ed4de58-20230919-192552]
        at sailpoint.api.Workflower.advance(Workflower.java:4563) [identityiq.jar:8.4 Build bdd0ed4de58-20230919-192552]
        at sailpoint.api.Workflower.startCase(Workflower.java:3149) [identityiq.jar:8.4 Build bdd0ed4de58-20230919-192552]
        at sailpoint.api.Workflower.launchInner(Workflower.java:2818) [identityiq.jar:8.4 Build bdd0ed4de58-20230919-192552]
        at sailpoint.api.Workflower.launch(Workflower.java:2668) [identityiq.jar:8.4 Build bdd0ed4de58-20230919-192552]
        at sailpoint.api.Workflower.launchSession(Workflower.java:2538) [identityiq.jar:8.4 Build bdd0ed4de58-20230919-192552]
        at sailpoint.task.BatchRequestTaskExecutor.runWrapperWorkflow(BatchRequestTaskExecutor.java:533) [identityiq.jar:8.4 Build bdd0ed4de58-20230919-192552]
        at sailpoint.task.BatchRequestTaskExecutor.execute(BatchRequestTaskExecutor.java:284) [identityiq.jar:8.4 Build bdd0ed4de58-20230919-192552]
        at sailpoint.api.TaskManager.runSync(TaskManager.java:981) [identityiq.jar:8.4 Build bdd0ed4de58-20230919-192552]
        at sailpoint.api.TaskManager.runSync(TaskManager.java:764) [identityiq.jar:8.4 Build bdd0ed4de58-20230919-192552]
        at sailpoint.scheduler.JobAdapter.execute(JobAdapter.java:128) [identityiq.jar:8.4 Build bdd0ed4de58-20230919-192552]
        at org.quartz.core.JobRunShell.run(JobRunShell.java:202) [quartz-2.3.2.jar:?]
        at org.quartz.simpl.SimpleThreadPool$WorkerThread.run(SimpleThreadPool.java:573) [quartz-2.3.2.jar:?]
Caused by: org.apache.bsf.BSFException: BeanShell script error: bsh.ParseException: Parse error at line 47, column 12.  Encountered: , BSF info: script at line: 0 column: columnNo
        at bsh.util.BeanShellBSFEngine.eval(BeanShellBSFEngine.java:202) ~[bsh-2.1.8.jar:2.1.8 2018-10-02 08:36:04]
        at org.apache.bsf.BSFManager$5.run(BSFManager.java:445) ~[bsf.jar:?]
        at java.security.AccessController.doPrivileged(AccessController.java:569) ~[?:?]
        ... 40 more

I need your help, Thank you

Or maybe someone please give me the LCM Create and Update, that still don’t modify, just default one for me please, maybe I modified something wrong and it’s not working

Hi @fewthiraphat , can you send me the Script that you have added since as per the error there is syntax error in your script

Hi @fewthiraphat,
Please find the default “LCM Create and Update.xml” below

<?xml version='1.0' encoding='UTF-8'?>
<!DOCTYPE Workflow PUBLIC "sailpoint.dtd" "sailpoint.dtd">
<Workflow configForm="Provisioning Workflow Config Form" created="1707808616465" handler="sailpoint.api.StandardWorkflowHandler" id="7f0000018da111b0818da15370110037" libraries="Identity,BatchRequest" modified="1754303098239" name="LCM Create and Update" taskType="LCM" type="LCMIdentity">
  <Variable input="true" name="identityName">
    <Description>The name of the identity we're supposed to update.</Description>
  </Variable>
  <Variable initializer="script:(identityDisplayName != void) ? identityDisplayName : resolveDisplayName(identityName)" input="true" name="identityDisplayName">
    <Description>
      The displayName of the identity being updated.
      Query for this using a projection query and fall back to the name.
    </Description>
  </Variable>
  <Variable initializer="false" input="true" name="endOnManualWorkItems">
    <Description>Option to skip requests with manual work items.</Description>
  </Variable>
  <Variable initializer="false" input="true" name="endOnProvisioningForms">
    <Description>Option to skip requests with provisioning forms.</Description>
  </Variable>
  <Variable input="true" name="batchRequestItemId">
    <Description>
      Used by the batch interface to record back individual request item status. The specific item id for the individual request in the batch file.
    </Description>
  </Variable>
  <Variable input="true" name="plan">
    <Description>The provisioning plan ready to execute.</Description>
  </Variable>
  <Variable input="true" name="flow">
    <Description>
      The name of the LCM flow that launched this workflow.

      This is one of these two values:

      IdentityCreateRequest
      IdentityEditRequest
    </Description>
  </Variable>
  <Variable editable="true" name="optimisticProvisioning">
    <Description>
      Set to true to enable optimistic provisioning.  This will cause
      changes to the entitlements compiled from role assignments to be
      applied immediately to the identity cube rather than waiting
      for the next refresh/reaggregation after the provisioning system
      completes the request.
    </Description>
  </Variable>
  <Variable editable="true" initializer="true" name="foregroundProvisioning">
    <Description>
      Normally provisioning is done in a step that uses the "background"
      option to force the workflow to be suspend and be resumed in a
      background task thread.  This prevents the browser session from
      hanging since provision can sometimes take a long time.  For demos
      and testing it can be better to do this in the foreground so that
      provisioning will have been performed when control is returned to the
      user.  This prevents having to run the Perform Maintenance task to
      see the results of the request.
    </Description>
  </Variable>
  <Variable editable="true" name="doRefresh">
    <Description>
      Set to true to cause an identity refresh after the changes in the plan
      have been provisioned.  This is normally off, you might want this on
      if you want modification of identity or link attributes to result in
      an immediate re-evaluation of assigned and detected roles.
    </Description>
  </Variable>
  <Variable initializer="Normal" input="true" name="workItemPriority">
    <Description>
       The String version of a WorkItem.Priority. This variable is
       used to set the priority on all of the workitems generated
       as part of this workflow and also set on the IdentityRequest
       object.
    </Description>
  </Variable>
  <Variable initializer="user,requester" input="true" name="notificationScheme">
    <Description>
     A string that specifies who should be notified when the request has been complete.
     The value can be null or a csv of one or more of the following options.

     none or null
       disable notifications

     user
       Identity that is being update will be notified.

     manager
       The manager of the Identity that is being updated will be notified.

     requester
       The person that has requested the update will be notified.
    </Description>
  </Variable>
  <Variable initializer="LCM User Notification" input="true" name="userEmailTemplate">
    <Description>
     The email template to use for user notification.
    </Description>
  </Variable>
  <Variable initializer="LCM Requester Notification" input="true" name="requesterEmailTemplate">
    <Description>
     The email template to use for requester notification.
    </Description>
  </Variable>
  <Variable initializer="LCM Manager Notification" input="true" name="managerEmailTemplate">
    <Description>
     The email template to use for manager notification.
    </Description>
  </Variable>
  <Variable input="true" name="securityOfficerEmailTemplate">
    <Description>
     The email template to use for security officer notification.
    </Description>
  </Variable>
  <Variable initializer="serial" input="true" name="approvalMode">
    <Description>
     A string that specifies how we should handle the approvals.

     By default this is serial since most of these request with
     the exception of manager transfers will have only one approver.

     parallel
       Approvals are processed concurrently and there must be consensus,
       we wait for all approvers to approve.  The first approver that
       rejects terminates the entire approval.

     parallelPoll
       Approvals are processed concurrently but consensus is not required.
       All approvals will be processed, we don't stop if there are any
       rejections.

     serial
       Approvals are processed one at a time and there must be consensus.
       The first approver that rejects terminates the entire approval.

     serialPoll
       Approvals are processed in order but consensus is not required.
       All approvals will be processed, we don't stop if there are any
       rejections.  In effect we are "taking a poll" of the approvers.

     any
      Approvals are processed concurrently, the first approver to
      respond makes the decision for the group.
    </Description>
  </Variable>
  <Variable initializer="manager, newManager" input="true" name="approvalScheme">
    <Description>
      A String that specifies how approvals should be generated for
      this workflow there are three built-in modes

      none - disabled approvals

      manager - The user's current manager will get approvals

      newManager - The newly assigned manager will get approvals when
                   manager transfers occur. Otherwise the user's manager
                   current manager will be the approver.
    </Description>
  </Variable>
  <Variable initializer="spadmin" input="true" name="fallbackApprover">
    <Description>
      A String that specifies the name of the Identity that will
      be assigned any approvals where the owner of the approver
      can't be resolved. Example if the scheme is "owner" and the
      application doesn't specify and owner.
    </Description>
  </Variable>
  <Variable initializer="LCM Identity Update Approval" input="true" name="approvalEmailTemplate">
    <Description>
     The email template to use for approval notifications.
    </Description>
  </Variable>
  <Variable input="true" name="securityOfficerName">
    <Description>
       The name of the identity that will be sent approvals
       during security officer approvals.
    </Description>
  </Variable>
  <Variable initializer="continue" input="true" name="policyScheme">
    <Description>
      A String that specifies how policy checks effect the overall
      process.

      none - disabled policy checking

      fail -  fail and exit the workflow if any policy violations are found

      continue -  continue if policy violations are found
    </Description>
  </Variable>
  <Variable input="true" name="ticketManagementApplication">
    <Description>
      Name of the application that can handle ticket requests.
      When non-null the Manage Ticket Steps will be visited to open
      tickets during the workflow lifecycle.
    </Description>
  </Variable>
  <Variable name="ticketId">
    <Description>
      The id of the ticket that is generated by the ticketingManagementApplication.
      This is typically generated on the "open" call, and then used in subsequent
      calls.  It is also stored on the IdentityRequest object under the
      externalTicketId variable.
    </Description>
  </Variable>
  <Variable input="true" name="policiesToCheck">
    <Description>
      A List of policies that should be checked. If this list is
      empty all violations will be checked. Used in combination
      with policyScheme.
    </Description>
  </Variable>
  <Variable name="policyViolations">
    <Description>
       List of policy violations that were found during our initial policy scan.
       This list is passed into each work item so the approvers can see
       pending violations.
    </Description>
  </Variable>
  <Variable initializer="LCM" input="true" name="source">
    <Description>
      String version of sailpoint.object.Source to indicate
      where the request originated.  Defaults to LCM.
    </Description>
  </Variable>
  <Variable name="approvalSet">
    <Description>
       This attributes is set during the "Build Approval Set" step,
       which builds this list by going through the ProvisioningPlan
       to build the line items that need to be approved,

       This variable includes all ApprovalItems that are part of
       the request process and is updated during the AfterScript
       of the approval process by assimilating the decisions
       and comments from the Approvals copy of the ApprovalItem.
    </Description>
  </Variable>
  <Variable initializer="false" name="trace">
    <Description>
      Used for debugging this workflow and when set to true trace
      will be sent to stdout.
    </Description>
  </Variable>
  <Variable name="project">
    <Description>
      ProvisioningProject which is just a compiled version of the ProvisioningPlan.
    </Description>
  </Variable>
  <Variable name="approvalForm">
    <Description>
       The form that is generated based on the changes that were made.  This
       form will be sent into the workitem and allow editing of the
       requested values during the approval process. This is generated
       in "Build Approval Form" based on the passed-in plan.
    </Description>
  </Variable>
  <Variable name="identityRequestId" output="true">
    <Description>
       The sequence id of the Identity request object which is stored in
       the name field of the identity request.
    </Description>
  </Variable>
  <Variable input="true" name="approverElectronicSignature">
    <Description>
       The name of the electronic signature object that should be used when workitems
       are completed by the batch approver when performing batch operations.
    </Description>
  </Variable>
  <RuleLibraries>
    <Reference class="sailpoint.object.Rule" id="7f0000018d721eaa818d72ffde7c0194" name="Approval Library"/>
    <Reference class="sailpoint.object.Rule" id="7f0000018d74189f818d74bb77cd0018" name="LCM Workflow Library"/>
  </RuleLibraries>
  <Step icon="Start" name="Start" posX="14" posY="12">
    <Transition to="Build Approval Set"/>
  </Step>
  <Step action="rule:LCM Build Identity ApprovalSet" icon="Task" name="Build Approval Set" posX="98" posY="12" resultVariable="approvalSet">
    <Description>
       The rule will go through the plan and build an approvalItem for each AccountRequest,
       typically there is just one for the IIQ application requests.

       The rule will also annotate the plan with the previousValues so that they
       can be assimilated onto the Form that is build, which is used during the approval
       process for edits.

       Because this has some special handling keep it here in the workflow
       and pass the approval set into the initialization process.
    </Description>
    <Transition to="Initialize"/>
  </Step>
  <Step icon="Task" name="Initialize" posX="183" posY="12">
    <Arg name="approvalSet" value="ref:approvalSet"/>
    <Arg name="flow" value="ref:flow"/>
    <Arg name="identityName" value="ref:identityName"/>
    <Arg name="identityDisplayName" value="ref:identityDisplayName"/>
    <Arg name="launcher" value="ref:launcher"/>
    <Arg name="optimisticProvisioning" value="false"/>
    <Arg name="plan" value="ref:plan"/>
    <Arg name="policiesToCheck" value="ref:policiesToCheck"/>
    <Arg name="policyScheme" value="ref:policyScheme"/>
    <Arg name="workItemPriority" value="ref:workItemPriority"/>
    <Arg name="source" value="ref:source"/>
    <Arg name="trace" value="ref:trace"/>
    <Arg name="batchRequestItemId" value="ref:batchRequestItemId"/>
    <Arg name="endOnProvisioningForms" value="ref:endOnProvisioningForms"/>
    <Arg name="endOnManualWorkItems" value="ref:endOnManualWorkItems"/>
    <Description>
      Call the standard subprocess to initialize the request, this includes
      auditing, building the approvalset, compiling the plan into
      a project and checking policy violations.
    </Description>
    <Return name="policyViolations" to="policyViolations"/>
    <Return name="identityRequestId" to="identityRequestId"/>
    <Return name="project" to="project"/>
    <WorkflowRef>
      <Reference class="sailpoint.object.Workflow" id="7f0000018da111b0818da1536a6b002f" name="Identity Request Initialize"/>
    </WorkflowRef>
    <Transition to="Exit On Manual Work Items" when="script:(isTrue(endOnManualWorkItems) &amp;&amp; (project.getUnmanagedPlan() != null))"/>
    <Transition to="Exit On Provisioning Form" when="script:(isTrue(endOnProvisioningForms) &amp;&amp; (project.hasQuestions()))"/>
    <Transition to="Exit On Policy Violation" when="script:((size(policyViolations) > 0 ) &amp;&amp; (policyScheme.equals(&quot;fail&quot;)))"/>
    <Transition to="Create Ticket"/>
  </Step>
  <Step condition="script:(ticketManagementApplication != null)" icon="Task" name="Create Ticket" posX="403" posY="8">
    <Arg name="action" value="open"/>
    <Arg name="source" value="ref:source"/>
    <Arg name="workItemPriority" value="ref:workItemPriority"/>
    <Arg name="project" value="ref:project"/>
    <Arg name="ticketManagementApplication" value="ref:ticketManagementApplication"/>
    <Arg name="identityRequestId" value="ref:identityRequestId"/>
    <Arg name="ticketDataGenerationRule" value=""/>
    <Arg name="trace" value="ref:trace"/>
    <Description>
      Call a subprocess to create a ticket in the ticketManagementApplication is non-null.
      You can specify a specific 'ticketDataGenerationRule' here or you can also specify
      it on the application.  It'll be read from the argument first and fall back to the '
      application config.
    </Description>
    <Return name="ticketId" to="externalTicketId"/>
    <WorkflowRef>
      <Reference class="sailpoint.object.Workflow" id="7f0000018d721eaa818d72ffe5f0019b" name="Manage Ticket"/>
    </WorkflowRef>
    <Transition to="Approve"/>
  </Step>
  <Step icon="Task" name="Approve" posX="488" posY="8">
    <Arg name="approvalMode" value="ref:approvalMode"/>
    <Arg name="approvalScheme" value="ref:approvalScheme"/>
    <Arg name="requireCommentsForApproval" value="ref:requireCommentsForApproval"/>
    <Arg name="requireCommentsForDenial" value="ref:requireCommentsForDenial"/>
    <Arg name="approvalSet" value="ref:approvalSet"/>
    <Arg name="approvalEmailTemplate" value="ref:approvalEmailTemplate"/>
    <Arg name="approverElectronicSignature" value="ref:approverElectronicSignature"/>
    <Arg name="fallbackApprover" value="ref:fallbackApprover"/>
    <Arg name="securityOfficerName" value="ref:securityOfficerName"/>
    <Arg name="identityName" value="ref:identityName"/>
    <Arg name="identityDisplayName" value="ref:identityDisplayName"/>
    <Arg name="identityRequestId" value="ref:identityRequestId"/>
    <Arg name="launcher" value="ref:launcher"/>
    <Arg name="plan" value="ref:plan"/>
    <Arg name="policyViolations" value="ref:policyViolations"/>
    <Arg name="workItemPriority" value="ref:workItemPriority"/>
    <Arg name="trace" value="ref:trace"/>
    <Arg name="workItemComments"/>
    <Description>
      Call the standard subprocess that will handle the built-in
      owner, manager and security officer approval schemes.
    </Description>
    <Return name="approvalSet"/>
    <Return name="plan"/>
    <Return name="workItemComments"/>
    <WorkflowRef>
      <Reference class="sailpoint.object.Workflow" id="7f0000018da111b0818da1536cdc0034" name="Identity Request Approve Identity Changes"/>
    </WorkflowRef>
    <Transition to="Update Ticket Post Approval"/>
  </Step>
  <Step condition="script:(ticketManagementApplication != null)" icon="Task" name="Update Ticket Post Approval" posX="599" posY="8">
    <Arg name="action" value="postApproval"/>
    <Arg name="source" value="ref:source"/>
    <Arg name="workItemPriority" value="ref:workItemPriority"/>
    <Arg name="project" value="ref:project"/>
    <Arg name="ticketManagementApplication" value="ref:ticketManagementApplication"/>
    <Arg name="identityRequestId" value="ref:identityRequestId"/>
    <Arg name="ticketDataGenerationRule" value=""/>
    <Arg name="trace" value="ref:trace"/>
    <Description>
      Call a subprocess to update the ticket in the ticketManagementApplication is non-null.

      You can specify a specific 'ticketDataGenerationRule' here or you can also specify
      it on the application.  It'll be read from the argument first and fall back to the '
      application config.

    </Description>
    <WorkflowRef>
      <Reference class="sailpoint.object.Workflow" id="7f0000018d721eaa818d72ffe5f0019b" name="Manage Ticket"/>
    </WorkflowRef>
    <Transition to="Process Approval Decisions"/>
  </Step>
  <Step action="call:processPlanApprovalDecisions" icon="Task" name="Process Approval Decisions" posX="764" posY="9" resultVariable="plan">
    <Arg name="approvalSet" value="ref:approvalSet"/>
    <Arg name="plan" value="ref:plan"/>
    <Arg name="disableAudit" value="true"/>
    <Transition to="Notify" when="script:approvalSet.hasRejected()"/>
    <Transition to="Recompile Project"/>
  </Step>
  <Step action="call:recompileProvisioningProject" icon="Task" name="Recompile Project" posX="913" posY="5" resultVariable="project">
    <Arg name="identityName" value="ref:identityName"/>
    <Arg name="plan" value="ref:plan"/>
    <Arg name="workItemPriority" value="ref:workItemPriority"/>
    <Arg name="project" value="ref:project"/>
    <Arg name="requester" value="ref:launcher"/>
    <Arg name="source" value="ref:source"/>
    <Arg name="optimisticProvisioning" value="ref:optimisticProvisioning"/>
    <Description>Recompile the provisioning project with the plan.
      The plan may contain modifications from the original plan if
      it was modified during the approval process.
      If you need to pass in provisioner options like "noFiltering"
      or "noRoleDeprovisioning" you must pass them as explicit
      arguments to the call.

      The evaluation options "requester" and "source" are commonly
      set here.

      You can also pass things into the Template and Field scripts by
      defining Args in this step.</Description>
    <Transition to="Provision"/>
  </Step>
  <Step icon="Task" name="Provision" posX="1014" posY="6">
    <Arg name="approvalScheme" value="ref:approvalScheme"/>
    <Arg name="approvalSet" value="ref:approvalSet"/>
    <Arg name="fallbackApprover" value="ref:fallbackApprover"/>
    <Arg name="foregroundProvisioning" value="ref:foregroundProvisioning"/>
    <Arg name="formTemplate" value="Identity Update"/>
    <Arg name="flow" value="ref:flow"/>
    <Arg name="identityDisplayName" value="ref:identityDisplayName"/>
    <Arg name="identityName" value="ref:identityName"/>
    <Arg name="identityRequestId" value="ref:identityRequestId"/>
    <Arg name="launcher" value="ref:launcher"/>
    <Arg name="manualActionsEmailTemplate" value="Pending Manual Changes"/>
    <Arg name="optimisticProvisioning" value="ref:optimisticProvisioning"/>
    <Arg name="workItemPriority" value="ref:workItemPriority"/>
    <Arg name="project" value="ref:project"/>
    <Arg name="policyViolations" value="ref:policyViolations"/>
    <Arg name="policyScheme" value="ref:policyScheme"/>
    <Arg name="recompile" value="false"/>
    <Arg name="trace" value="ref:trace"/>
    <Description>
      Call the standard subprocess that will process the
      approval decisions and do provisioning.  This
      includes calling any configured provisioning
      connectors and building manual actions.
    </Description>
    <Return name="project" to="project"/>
    <WorkflowRef>
      <Reference class="sailpoint.object.Workflow" id="7f0000018da111b0818da1536bf80032" name="Identity Request Provision"/>
    </WorkflowRef>
    <Transition to="Post Provision"/>
  </Step>
  <Step action="script:approvalSet.setAllProvisioned();" icon="Task" name="Post Provision" posX="1110" posY="7">
    <Description>
      Mark all of the items in the approvalset provisioned since these
      are all synchronous activities.
    </Description>
    <Transition to="Update Ticket Post Provision"/>
  </Step>
  <Step condition="script:(ticketManagementApplication != null)" icon="Task" name="Update Ticket Post Provision" posX="1111" posY="115">
    <Arg name="action" value="postProvisioning"/>
    <Arg name="source" value="ref:source"/>
    <Arg name="workItemPriority" value="ref:workItemPriority"/>
    <Arg name="project" value="ref:project"/>
    <Arg name="ticketManagementApplication" value="ref:ticketManagementApplication"/>
    <Arg name="identityRequestId" value="ref:identityRequestId"/>
    <Arg name="ticketDataGenerationRule" value=""/>
    <Arg name="trace" value="ref:trace"/>
    <Description>
      Call a subprocess to update the ticket in the ticketManagementApplication is non-null.

      You can specify a specific 'ticketDataGenerationRule' here or you can also specify
      it on the application.  It'll be read from the argument first and fall back to the '
      application config.

    </Description>
    <WorkflowRef>
      <Reference class="sailpoint.object.Workflow" id="7f0000018d721eaa818d72ffe5f0019b" name="Manage Ticket"/>
    </WorkflowRef>
    <Transition to="Refresh Identity"/>
  </Step>
  <Step action="call:refreshIdentity" condition="ref:doRefresh" icon="Task" name="Refresh Identity" posX="954" posY="114">
    <Arg name="identityName" value="ref:identityName"/>
    <Arg name="correlateEntitlements" value="true"/>
    <Arg name="provision" value="true"/>
    <Arg name="synchronizeAttributes" value="true"/>
    <Description>
      Add arguments as necessary to enable refresh features.  Typically you only want this
      to correlate roles and possibly provision if we notice new assigned roles.
      Note that provisioning will be done in the Identity Refresh workflow so if there
      are any provisioning forms to display we won't feed them directly to the
      current user, they'll have to return to the inbox.
    </Description>
    <Transition to="Notify"/>
  </Step>
  <Step icon="Task" name="Notify" posX="830" posY="114">
    <Arg name="approvalScheme" value="ref:approvalScheme"/>
    <Arg name="approvalSet" value="ref:approvalSet"/>
    <Arg name="flow" value="ref:flow"/>
    <Arg name="identityDisplayName" value="ref:identityDisplayName"/>
    <Arg name="identityName" value="ref:identityName"/>
    <Arg name="launcher" value="ref:launcher"/>
    <Arg name="notificationScheme" value="ref:notificationScheme"/>
    <Arg name="userEmailTemplate" value="ref:userEmailTemplate"/>
    <Arg name="requesterEmailTemplate" value="ref:requesterEmailTemplate"/>
    <Arg name="managerEmailTemplate" value="ref:managerEmailTemplate"/>
    <Arg name="securityOfficerEmailTemplate" value="ref:securityOfficerEmailTemplate"/>
    <Arg name="securityOfficerName" value="ref:securityOfficerName"/>
    <Arg name="plan" value="ref:plan"/>
    <Arg name="policyViolations" value="ref:policyViolations"/>
    <Arg name="workItemPriority" value="ref:workItemPriority"/>
    <Arg name="trace" value="ref:trace"/>
    <Arg name="source" value="ref:source"/>
    <Description>
      Call the standard subprocess that will notify the various
      actors based on notification scheme.
    </Description>
    <WorkflowRef>
      <Reference class="sailpoint.object.Workflow" id="7f0000018da111b0818da1536b720031" name="Identity Request Notify"/>
    </WorkflowRef>
    <Transition to="end"/>
  </Step>
  <Step action="call:addMessage" name="Exit On Policy Violation" posX="250" posY="225">
    <Arg name="message" value="Failed due to policy violation(s)"/>
    <Arg name="type" value="Error"/>
    <Transition to="end"/>
  </Step>
  <Step action="call:addMessage" name="Exit On Manual Work Items" posX="280" posY="141">
    <Arg name="message" value="Failed due to manual work item(s)"/>
    <Arg name="type" value="Error"/>
    <Transition to="end"/>
  </Step>
  <Step action="call:addMessage" name="Exit On Provisioning Form" posX="361" posY="78">
    <Arg name="message" value="Failed due to provisioning form"/>
    <Arg name="type" value="Error"/>
    <Transition to="end"/>
  </Step>
  <Step catches="complete" icon="Catches" name="Finalize" posX="759" posY="284">
    <Arg name="project" value="ref:project"/>
    <Arg name="approvalSet" value="ref:approvalSet"/>
    <Arg name="trace" value="ref:trace"/>
    <Arg name="batchRequestItemId" value="ref:batchRequestItemId"/>
    <Arg name="identityRequestId" value="ref:identityRequestId"/>
    <Arg name="workItemPriority" value="ref:workItemPriority"/>
    <Arg name="ticketManagementApplication" value="ref:ticketManagementApplication"/>
    <Arg name="identityName" value="ref:identityName"/>
    <Description>
      Call the standard subprocess that can audit/finalize the request.
    </Description>
    <WorkflowRef>
      <Reference class="sailpoint.object.Workflow" id="7f0000018da111b0818da1536c800033" name="Identity Request Finalize"/>
    </WorkflowRef>
  </Step>
  <Step icon="Stop" name="end" posX="830" posY="225"/>
</Workflow>

This is the default workflow correct? I tried to execute it and I got this again

Did you update it in the Lifecycle manager?

Save the above xml file and modify like below

Gear → Lifecycle Manager → Business Process

Batch Create Identity = LCM Create and Update

1 Like

yes, i did, but it’s still error, not sure why

Can you please share your updated LCM Create and Update Workflow image?

This one, I renamed it to Default LCM Create and Update

Hi @fewthiraphat ,

I just checked you are workflow you have added the generic step, and, in that step, you have added one script in the Java syntax not in beanshell syntax if you want to print any value please use log.error(“value you want to print“);

By making these changes it will fix your error. Please mark it as solution if it works.

Please find ss for your reference

1 Like

It will execute the code. I already executed it. It executed Properly and created Identities.
Can you please share you Lifecycle Manager Configuration screenshot?

I deleted it, still got error :sad_but_relieved_face:

here it is, If you need more information, you can tell me

1 Like

Hi @fewthiraphat,
Can you please your Edit Identity Policy and Batch Request Page image?

Hi @Harikrishna_06 , here it is

Hi @fewthiraphat , i configured Create Identity Policy like below



My Batch Request Result is below

Modify like this.

Thanks,
Harikrishna.

1 Like

Hi @fewthiraphat ,
Below is the xml for LCM Create and Update Workflow
LCM_Create and Update Workflow.txt (26.3 KB)

1 Like

Wow @Harikrishna_06 , looks great! I will try that right now

Hi @Harikrishna_06 , I still got the error

I uploaded your workflow and configure it on Lifecycle Manager

image

Hi @fewthiraphat ,

Can you please delete all the preconfigured batch requests and create new batch request. It will work