naz00
(Nazrul Syahmi)
May 25, 2026, 10:55am
1
Which IIQ version are you inquiring about?
8.4p3
Please share any images or screenshots, if relevant.
[Please insert images here, otherwise delete this section]
Please share any other relevant files that may be required (for example, logs).
WorkItem XML:
<?xml version='1.0' encoding='UTF-8'?>
<!DOCTYPE WorkItem PUBLIC "sailpoint.dtd" "sailpoint.dtd">
<WorkItem created="1779705409903" handler="sailpoint.api.Workflower" id="a9fef4d99e5e1535819e5eb5716f031a" identityRequestId="0000021336" level="Normal" modified="1779705409919" name="0000049271" renderer="lcmManualActionsRenderer.xhtml" significantModified="1779705409919" targetClass="sailpoint.object.Identity" targetId="a9fe8e16958b12c68195a1dbf91140f8" targetName="target1" type="ManualAction">
<Attributes>
<Map>
<entry key="approvalSet">
<value>
<ApprovalSet>
<ApprovalItem application="app" id="741df101f76a40639d3199ef70fb4d1f" nativeIdentity="target1" operation="Share group to namespace: CPFB_UDP_NPRD" value="Operation: Create group | GroupName: some_group"/>
</ApprovalSet>
</value>
</entry>
<entry key="handler" value="sailpoint.api.Workflower"/>
<entry key="identityName" value="target1"/>
<entry key="identityRequestId" value="0000021336"/>
<entry key="level" value="Normal"/>
<entry key="requester" value="target1"/>
<entry key="groupName"/>
<entry key="workItemRequester"/>
</Map>
</Attributes>
<Description>dummy description</Description>
<Owner>
<Reference class="sailpoint.object.Identity" id="a9fef4d992471c5d81926f4439fa6a46" name="Operator"/>
</Owner>
<Requester>
<Reference class="sailpoint.object.Identity" id="a9fe8e16958b12c68195a1dbf91140f8" name="target1"/>
</Requester>
<WorkflowCaseRef>
<Reference class="sailpoint.object.WorkflowCase" id="a9fef4d99e5e1535819e5eb5035f02f2" name="QuickLink Launch for identity target1- 407"/>
</WorkflowCaseRef>
</WorkItem>
Workflow Step that generates this WorkItem:
<Step icon="Task" name="Create group creation work item for operator" posX="161" posY="41">
<Approval mode="serial" owner="Operator" renderer="lcmManualActionsRenderer.xhtml" send="approvalSet,groupName,identityName">
<Arg name="requester" value="ref:launcher"/>
<Arg name="identityRequestId" value="ref:identityRequestId"/>
<Arg name="approvalSet">
<Script>
<Source>
import sailpoint.object.ApprovalItem;
import sailpoint.object.ApprovalSet;
import sailpoint.object.Identity;
import sailpoint.object.IdentityRequest;
import sailpoint.object.IdentityRequestItem;
import sailpoint.object.ProvisioningPlan.AccountRequest;
import sailpoint.object.ProvisioningPlan.AccountRequest.Operation;
import sailpoint.object.ProvisioningPlan.AttributeRequest;
import sailpoint.object.ManagedAttribute;
import sailpoint.object.Link;
import sailpoint.object.Attributes;
import sailpoint.object.QueryOptions;
import sailpoint.object.Filter;
import java.util.Map;
import java.util.List;
import java.util.ArrayList;
import java.util.Arrays;
log.error("workflow log: Create group creation work item for operator");
private void processGroupCreationRequest(String groupName, String selectedNamespace, Identity identity, ApprovalSet approvalSet) {
String applicationName = "app";
String accountRequestOperation = "Create group in " + selectedNamespace;
String approvalItemValue = String.format("Operation: %s | GroupName: %s", accountRequestOperation, groupName);
if (identityName == null) {
log.error("workflow log: identityName is null");
}
log.error("workflow log: identityName = " + identityName);
ApprovalItem approvalItem = new ApprovalItem();
approvalItem.setApplication(applicationName);
approvalItem.setNativeIdentity(identityName);
approvalItem.setOperation(accountRequestOperation);
approvalItem.setValue(approvalItemValue);
approvalSet.add(approvalItem);
return;
}
IdentityRequest identityRequest = context.getObjectByName(IdentityRequest.class, identityRequestId);
if (identityRequest == null) {
log.error("workflow log: identityRequest is NULL");
return;
}
String requesterDisplayName = identityRequest.getRequesterDisplayName();
Identity identity = context.getObjectByName(Identity.class, identityName);
if (identity == null) {
log.error("workflow log: identity is NULL");
return;
}
String identityName = identity.getName();
ApprovalSet approvalSet = new ApprovalSet();
String selectedNamespace = (String) identityModel.get("selectedNamespace");
String groupName = (String) identityModel.get("groupName");
processGroupCreationRequest(groupName, selectedNamespace, identity, approvalSet);
return approvalSet;
</Source>
</Script>
</Arg>
<Arg name="workItemDescription" value="Group creation requested for group: $(groupNameForWorkitemDescription)"/>
<Arg name="workItemType" value="ManualAction"/>
<Arg name="workItemRequester" value="$(requesterDisplayName)"/>
<Arg name="workItemTargetName" value="$(identityName)"/>
<Arg name="workItemTargetClass" value="sailpoint.object.Identity"/>
<Arg name="level" value="Normal"/>
<Arg name="handler" value="sailpoint.api.Workflower"/>
</Approval>
<Description>dummy description</Description>
<Transition to="end"/>
</Step>
Share all details about your problem, including any error messages you may have received.
Hi all, I am facing an issue where the generated workitem does not show any information under the details page. I have attached a screenshot, the workitem XML object, and the workflow step that generates this workitem as part of a group creation request. Has anyone else faced a similar issue or knows how to troubleshoot this? Thank you.
The workflow step is trying to use variables like groupName, selectedNamespace, and requesterDisplayName in two places — inside the ApprovalSet script and also in the Approval-level args like workItemDescription and workItemRequester. The problem is these variables are being resolved locally inside the script but the Approval args reference them as workflow-level variables using $(variableName)`syntax. Since they were never set at the workflow scope, they come through as empty — which is exactly what you see in the WorkItem XML with groupName and workItemRequester both blank.
Fix:
Add a dedicated step before this approval step that reads from identityModel and sets groupName, selectedNamespace, and requesterDisplayName as proper workflow variables. Once those are set at workflow scope, both the ApprovalSet script and the Approval args will resolve them correctly, the WorkItem will carry the right values, and the details page will render properly.
Try it and let me know me know if you are able to put a fix, else i will assist.
msingh900
(Manish Singh)
May 25, 2026, 8:01pm
4
@naz00 Please try the steps updated by @naveenkumar3 . This would fix your workflow.
Thanks
Manish Singh
Nazrul Syahmi:
<Step icon="Task" name="Create group creation work item for operator" posX="161" posY="41">
<Approval mode="serial" owner="Operator" renderer="lcmManualActionsRenderer.xhtml" send="approvalSet,groupName,identityName">
<Arg name="requester" value="ref:launcher"/>
<Arg name="identityRequestId" value="ref:identityRequestId"/>
<Arg name="approvalSet">
<Script>
<Source>
import sailpoint.object.ApprovalItem;
import sailpoint.object.ApprovalSet;
import sailpoint.object.Identity;
import sailpoint.object.IdentityRequest;
import sailpoint.object.IdentityRequestItem;
import sailpoint.object.ProvisioningPlan.AccountRequest;
import sailpoint.object.ProvisioningPlan.AccountRequest.Operation;
import sailpoint.object.ProvisioningPlan.AttributeRequest;
import sailpoint.object.ManagedAttribute;
import sailpoint.object.Link;
import sailpoint.object.Attributes;
import sailpoint.object.QueryOptions;
import sailpoint.object.Filter;
import java.util.Map;
import java.util.List;
import java.util.ArrayList;
import java.util.Arrays;
log.error("workflow log: Create group creation work item for operator");
private void processGroupCreationRequest(String groupName, String selectedNamespace, Identity identity, ApprovalSet approvalSet) {
String applicationName = "app";
String accountRequestOperation = "Create group in " + selectedNamespace;
String approvalItemValue = String.format("Operation: %s | GroupName: %s", accountRequestOperation, groupName);
if (identityName == null) {
log.error("workflow log: identityName is null");
}
log.error("workflow log: identityName = " + identityName);
ApprovalItem approvalItem = new ApprovalItem();
approvalItem.setApplication(applicationName);
approvalItem.setNativeIdentity(identityName);
approvalItem.setOperation(accountRequestOperation);
approvalItem.setValue(approvalItemValue);
approvalSet.add(approvalItem);
return;
}
IdentityRequest identityRequest = context.getObjectByName(IdentityRequest.class, identityRequestId);
if (identityRequest == null) {
log.error("workflow log: identityRequest is NULL");
return;
}
String requesterDisplayName = identityRequest.getRequesterDisplayName();
Identity identity = context.getObjectByName(Identity.class, identityName);
if (identity == null) {
log.error("workflow log: identity is NULL");
return;
}
String identityName = identity.getName();
ApprovalSet approvalSet = new ApprovalSet();
String selectedNamespace = (String) identityModel.get("selectedNamespace");
String groupName = (String) identityModel.get("groupName");
processGroupCreationRequest(groupName, selectedNamespace, identity, approvalSet);
return approvalSet;
</Source>
</Script>
</Arg>
<Arg name="workItemDescription" value="Group creation requested for group: $(groupNameForWorkitemDescription)"/>
<Arg name="workItemType" value="ManualAction"/>
<Arg name="workItemRequester" value="$(requesterDisplayName)"/>
<Arg name="workItemTargetName" value="$(identityName)"/>
<Arg name="workItemTargetClass" value="sailpoint.object.Identity"/>
<Arg name="level" value="Normal"/>
<Arg name="handler" value="sailpoint.api.Workflower"/>
</Approval>
<Description>dummy description</Description>
<Transition to="end"/>
</Step>
Share all details about your problem, including any error messages you may have received.
Hi all, I am facing an issue where the generated workitem does not show any information under the details page. I have attached a screenshot, the workitem XML object, and the workflow step that generates this workitem as part of a group creation request. Has anyone else faced a similar issue or knows how to troubleshoot this
Hi @msingh900 ,
Can you please try below code
<Arg name="requester" value="ref:launcher"/>
<Arg name="approvalSet">
<Script>
<Source>
import sailpoint.object.ApprovalItem;
import sailpoint.object.ApprovalSet;
import sailpoint.object.Identity;
import sailpoint.object.IdentityRequest;
import java.util.Map;
import java.util.List;
log.error("workflow log: Create group creation work item for operator started");
// 1. Declare method with all parameters explicitly in scope
private void processGroupCreationRequest(String groupName, String selectedNamespace, String idName, ApprovalSet approvalSet) {
String applicationName = "app";
String accountRequestOperation = "Create group in " + selectedNamespace;
String approvalItemValue = String.format("Operation: %s | GroupName: %s", accountRequestOperation, groupName);
ApprovalItem approvalItem = new ApprovalItem();
approvalItem.setApplication(applicationName);
approvalItem.setNativeIdentity(idName); // Fixed scoping error
approvalItem.setOperation(accountRequestOperation);
approvalItem.setValue(approvalItemValue);
approvalItem.setState(sailpoint.object.WorkItem.State.Pending);
approvalSet.add(approvalItem);
}
// 2. Safely retrieve the Request Object
IdentityRequest identityRequest = context.getObjectByName(IdentityRequest.class, identityRequestId);
if (identityRequest == null) {
log.error("workflow log: identityRequest is NULL");
return null;
}
String requesterDisplayName = identityRequest.getRequesterDisplayName();
// 3. Safely retrieve the Identity Object
Identity identity = context.getObjectByName(Identity.class, identityName);
if (identity == null) {
log.error("workflow log: identity is NULL");
return null;
}
String resolvedIdentityName = identity.getName();
// 4. Extract data from identityModel BEFORE running the method
ApprovalSet approvalSet = new ApprovalSet();
String selectedNamespace = "";
String groupName = "";
if (identityModel != null) {
selectedNamespace = (String) identityModel.get("selectedNamespace");
groupName = (String) identityModel.get("groupName");
} else {
log.error("workflow log: identityModel map is NULL");
}
// 5. Execute processing method with fully resolved data
processGroupCreationRequest(groupName, selectedNamespace, resolvedIdentityName, approvalSet);
return approvalSet;
</Source>
</Script>
</Arg>
<Arg name="workItemDescription" value="Group creation requested for group: $(groupNameForWorkitemDescription)"/>
<Arg name="workItemType" value="ManualAction"/>
<Arg name="workItemRequester" value="$(requesterDisplayName)"/>
<Arg name="level" value="Normal"/>
<Arg name="handler" value="sailpoint.api.Workflower"/>
dummy description
neel193
(Neelmadhav Panda)
June 1, 2026, 12:22pm
6
@naz00 In case your issue is resolved, please consider marking your post as resolved and also share how did you fix it to help fellow sailors facing the similar issue.