fewthiraphat
(Thiraphat Itamonchai)
October 15, 2025, 3:21am
1
Version 8.4
I would like to ask about the behavior of the Provisioning Form. Currently, I’m working on creating an update form for one of my entitlements called Support Group , which requires certain data before creation.
However, I’ve noticed that the form always appears whenever I perform an account update, such as removing an entitlement or submitting an access request for a different entitlement.
Is there a way to conditionally skip this form in certain scenarios? For example, is there a variable or configuration setting that allows bypassing the form under specific conditions?
We have attribute as required or review required. Did you try unchecking those variable and gave a try??
1 Like
fewthiraphat
(Thiraphat Itamonchai)
October 15, 2025, 4:32am
3
Hi @naveenkumar3 , yes it is, I tried to uncheck the field, and now it’s bypass even I want to show it on adding support group casae
Thiraphat Itamonchai:
I would like to ask about the behavior of the Provisioning Form. Currently, I’m working on creating an update form for one of my entitlements called Support Group , which requires certain data before creation.
However, I’ve noticed that the form always appears whenever I perform an account update, such as removing an entitlement or submitting an access request for a different entitlement.
Is there a way to conditionally skip this form in certain scenarios? For example, is there a variable or configuration setting that allows bypassing the form under specific conditions?
you can add a condition rule to your provisioning form, to skip. Something like this below?? can you try
<Form name="YourProvisioningForm">
<Section>
<Field displayName="Field1">
<Attributes>
<Map>
<entry key="hidden">
<value>
<Script>
// Check if it's a remove operation
return "Remove".equals(op);
</Script>
</value>
</entry>
</Map>
</Attributes>
</Field>
</Section>
</Form>
1 Like
fewthiraphat
(Thiraphat Itamonchai)
October 15, 2025, 4:55am
5
Hi @naveenkumar3 , I tried and I got this error
Caused by: org.apache.bsf.BSFException: BeanShell script error: bsh.EvalError: Sourced file: inline evaluation of: ``return "Remove".equals(op);'' : Undefined argument: op : at Line: 1 : in file: inline evaluation of: ``return "Remove".equals(op);'' : ( op )
I just gave an example to you. don’t use it like that. Give me your form code/xml, I will make the changes, and share it to you.
fewthiraphat
(Thiraphat Itamonchai)
October 15, 2025, 5:06am
7
Hi @naveenkumar3 , Sorry for my misunderstand, this is my example field, I don’t know how can I use any variable or how to code to get the operation that we are doing right now, If I know how to check it maybe I can go to the next step
<Field displayName="Name" dynamic="true" multi="true" name="name" postBack="true" required="true" type="string">
<Attributes>
<Map>
<entry key="hidden"/>
<entry key="readOnly" value="true"/>
</Map>
</Attributes>
</Field>
Thiraphat Itamonchai:
1 : in file: in
can you use the below code and try it.
<Field displayName="Name" dynamic="true" multi="true" name="name" postBack="true" required="true" type="string">
<Attributes>
<Map>
<entry key="hidden">
<value>
<Script>
import sailpoint.object.ProvisioningPlan;
import sailpoint.object.ProvisioningPlan.AccountRequest;
if (plan != null) {
for (AccountRequest accReq : plan.getAccountRequests()) {
if (ProvisioningPlan.AccountRequest.Operation.Remove.equals(accReq.getOperation())) {
return true;
}
}
}
return false;
</Script>
</value>
</entry>
<entry key="readOnly" value="true"/>
</Map>
</Attributes>
</Field>
fewthiraphat
(Thiraphat Itamonchai)
October 15, 2025, 6:31am
9
Hi @naveenkumar3 , I tried your code, but still got this error, the error told me plan is undefined variable
Caused by: org.apache.bsf.BSFException: BeanShell script error: bsh.EvalError: Sourced file: inline evaluation of: ``import sailpoint.object.ProvisioningPlan; import sailpoi . . . '' : Attempt to resolve method: getAccountRequests() on undefined variable or class name: plan : at Line: 5 : in file: inline evaluation of: ``import sailpoint.object.ProvisioningPlan; import sailpoi . . . '' : plan .getAccountRequests ( )
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) ~[?:?]
... 90 more
2025-10-15T14:29:34,860 ERROR http-nio-0.0.0.0-8080-exec-6 rest.ui.jaxrs.GeneralExceptionMapper:29 - Uncaught JAX-RS exception.
sailpoint.tools.GeneralException: Attempt to resolve method: getAccountRequests() on undefined variable or class name: plan : at Line: 5
msingh900
(Manish Singh)
October 15, 2025, 6:37am
10
@fewthiraphat
Add an empty check also when checking for null. And before that, try to print the plan in loggers and check how the plan looks.
Thiraphat Itamonchai:
Caused by: org.apache.bsf.BSFException: BeanShell script error: bsh.EvalError: Sourced file: inline evaluation of: ``import sailpoint.object.ProvisioningPlan; import sailpoi . . . '' : Attempt to resolve method: getAccountRequests() on undefined variable or class name: plan : at Line: 5 : in file: inline evaluation of: ``import sailpoint.object.ProvisioningPlan; import sailpoi . . . '' : plan .getAccountRequests ( )
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) ~[?:?]
... 90 more
2025-10-15T14:29:34,860 ERROR http-nio-0.0.0.0-8080-exec-6 rest.ui.jaxrs.GeneralExceptionMapper:29 - Uncaught JAX-RS exception.
The error is due to , beacuse plan is not directly available or is not a ProvisioningPlan object in the form field context. Let’s try this by accessing it through the project .
Can you try this one, try to add loggers as well,.
<Field displayName="Name" dynamic="true" multi="true" name="name" postBack="true" required="true" type="string">
<Attributes>
<Map>
<entry key="hidden">
<value>
<Script>
import sailpoint.object.ProvisioningPlan;
import sailpoint.object.ProvisioningPlan.AccountRequest;
if (project != null && project.getMasterPlan() != null) {
ProvisioningPlan masterPlan = project.getMasterPlan();
if (masterPlan.getAccountRequests() != null) {
for (AccountRequest accReq : masterPlan.getAccountRequests()) {
if (ProvisioningPlan.AccountRequest.Operation.Remove.equals(accReq.getOperation())) {
return true;
}
}
}
}
return false;
</Script>
</value>
</entry>
<entry key="readOnly" value="true"/>
</Map>
</Attributes>
</Field>
fewthiraphat
(Thiraphat Itamonchai)
October 15, 2025, 7:33am
12
Hi @naveenkumar3 , I tried and still got the error, I tried to log and found the project variable also be null
can you share me the logger, what it is printing?? I want to see it, if I know what is is printing, it’s very easy to put it in the code.
I think the issue is that it is not able to find project or plan variable which is causing the issue and is throwing error. I will suggest the 2 solutions 2 you , use it and tell me which one worked.
<Field displayName="Test Show" multi="true" name="testShow" postBack="true" required="true" type="string">
<Attributes>
<Map>
<entry key="hidden" value="false"/>
<entry key="readOnly" value="true"/>
</Map>
</Attributes>
</Field>
2nd one is below in the workflow before your form step
<Step name="Check Operation">
<Script>
<Source>
import sailpoint.object.ProvisioningPlan;
boolean skipForm = false;
if (plan != null && plan.getAccountRequests() != null) {
for (AccountRequest req : plan.getAccountRequests()) {
if ("Remove".equals(req.getOperation().toString())) {
skipForm = true;
break;
}
}
}
workflow.put("skipProvisioningForm", skipForm);
</Source>
```
```
system
(system)
Closed
December 15, 2025, 9:03am
15
This topic was automatically closed 60 days after the last reply. New replies are no longer allowed.