# BeforeProvisioning Rule error

**URL:** <https://developer.sailpoint.com/discuss/t/beforeprovisioning-rule-error/180500>\
**Category:** SHF Discussion and Questions\
**Tags:** rules, sailpoint-identity-security, provisioning\
**Created:** [September 17, 2025, 4:48pm UTC](https://developer.sailpoint.com/discuss/t/beforeprovisioning-rule-error/180500 "2025-09-17T16:48:22Z")\
**Posts on this page:** 6\
**Page:** 1

<div class="post-metadata">

**Author:** ![JackSparrow](https://sea1.discourse-cdn.com/sailpoint/discuss/user_avatar/developer.sailpoint.com/jacksparrow/32/19685_2.png) [@JackSparrow](https://developer.sailpoint.com/discuss/u/JackSparrow)\
**Post date:** [September 17, 2025, 4:48pm UTC](https://developer.sailpoint.com/discuss/t/beforeprovisioning-rule-error/180500/1 "2025-09-17T16:48:22Z")

</div>

Hello experts,

I am getting below error on the rule execution. Not sure what is the issue. Appreciate your help here. Rule is not throwing any error for enable and disable operations but only for create and modify operations

 ![image](https://global.discourse-cdn.com/sailpoint/original/3X/e/e/ee3e7da1284459f2eb903d9105d4f7a31f24c039.png)

```java
import sailpoint.object.*;
import sailpoint.object.Identity;
import sailpoint.object.ProvisioningPlan;
import sailpoint.object.ProvisioningPlan.AccountRequest;
import sailpoint.object.ProvisioningPlan.AttributeRequest;
import sailpoint.object.ProvisioningPlan.Operation;
import sailpoint.tools.Util;

    if(plan != null){
        for(AccountRequest accountRequest : plan.getAccountRequests()){
            if(accountRequest != null){
                //Create Operation
                if (accountRequest.getOperation().equals(ProvisioningPlan.AccountRequest.Operation.Create)){
                    log.info("Create Operation is getting executed");
                    for(AttributeRequest attrRequest : accountRequest.getAttributeRequests()){
                        if(attrRequest.getName().equalsIgnoreCase("ProfileId")){
                             String ProfileIdName = (String) attrRequest.getValue();
                            if(ProfileIdName.equalsIgnoreCase("00e4600")){
                                log.info("Request is for admin role");
                                accountRequest.add(new AttributeRequest("PermissionSet", ProvisioningPlan.Operation.Set, "LightningConsole"));
                            }else{
                                log.info("Request is for non-admin role");
                                accountRequest.add(new AttributeRequest("PermissionSet", ProvisioningPlan.Operation.Set, "Lightning_Console"));
                            }
                        }
                    }
                    log.info("Exiting from create operation");
                }
                //Modify Operation
                else if(accountRequest.getOperation().equals(ProvisioningPlan.AccountRequest.Operation.Modify)){
                    boolean hasRemoveOperation = false;
                    log.info("Modify Operation is getting executed");
                    for(AttributeRequest attrRequest : accountRequest.getAttributeRequests()){
                        if(attrRequest != null){
                            ProvisioningPlan.Operation operation = attrRequest.getOperation();
                            if(operation.equals(ProvisioningPlan.Operation.Add) && attrRequest.getName().equalsIgnoreCase("ProfileId")){
                                log.info("Entering Modify Operation - Add attribute"); 
                                boolean isactive = idn.getAccountAttributeBool(accountRequest.getApplicationName(), accountRequest.getNativeIdentity(), "IsActive");
                                if(!isactive){
                                    accountRequest.add(new AttributeRequest("IsActive", ProvisioningPlan.Operation.Set, "true"));
                                }           
                                String valueExists = idn.getAccountAttribute(accountRequest.getApplicationName(), accountRequest.getNativeIdentity(), "ManagedPackage");
                                log.info("managedPackage value is" + valueExists);
                                if(valueExists == null || valueExists.isEmpty()){
                                    accountRequest.add(new AttributeRequest("ManagedPackage", ProvisioningPlan.Operation.Set, "0504600"));
                                }                     
                            }
                            else if((operation.equals(ProvisioningPlan.Operation.Remove) || operation.equals(ProvisioningPlan.Operation.Revoke)) && attrRequest.getName().equalsIgnoreCase("ProfileId")){
                                log.info("Entering Modify Operation - remove attribute");
                                hasRemoveOperation = true;
                                break;
                            }
                        }
                    }
                    if(hasRemoveOperation){
                        //Remove modify account request
                        plan.remove(accountRequest);
                    
                        //create and add a new disable request
                        //AccountRequest disableRequest = new AccountRequest();
                        //disableRequest.add(new AttributeRequest("ManagedPackage", ProvisioningPlan.Operation.Set, ""));
                        //disableRequest.setOperation(AccountRequest.Operation.Disable);
                        //disableRequest.setNativeIdentity(accountRequest.getNativeIdentity());
                        //plan.add(disableRequest);
                        accountRequest.add(new AttributeRequest("ManagedPackage", ProvisioningPlan.Operation.Set, ""));
                        accountRequest.setOperation(AccountRequest.Operation.Disable);
                    }

                }
                //Disable Operation
                else if(accountRequest.getOperation().equals(ProvisioningPlan.AccountRequest.Operation.Disable)){
                    log.info("Entering disable Operation");
                    accountRequest.add(new AttributeRequest("ManagedPackage", ProvisioningPlan.Operation.Set, ""));
                }
                //Enable Operation
                else if(accountRequest.getOperation().equals(ProvisioningPlan.AccountRequest.Operation.Enable)){
                    String valueExists = idn.getAccountAttribute(accountRequest.getApplicationName(), accountRequest.getNativeIdentity(), "ManagedPackage");
                    log.info("managedPackage value is" + valueExists);
                    if(valueExists == null || valueExists.isEmpty()){
                        accountRequest.add(new AttributeRequest("ManagedPackage", ProvisioningPlan.Operation.Set, "05046"));
                    }
                }
                else{
                    log.info("Other account request operation");
                }
            }
            else{
                log.error("AccountRequest is null");
            }
        }
    }
    else{
        log.error("ProvisioningPlan is null");
    }

```

---

<div class="post-metadata">

**Author:** ![ganesh-atikes](https://sea1.discourse-cdn.com/sailpoint/discuss/user_avatar/developer.sailpoint.com/ganesh-atikes/32/30093_2.png) [@ganesh-atikes](https://developer.sailpoint.com/discuss/u/ganesh-atikes)\
**Post date:** [September 17, 2025, 6:16pm UTC](https://developer.sailpoint.com/discuss/t/beforeprovisioning-rule-error/180500/2 "2025-09-17T18:16:33Z")

</div>

Please print the `plan` object immediately after the import statements and share the output here. You can sanitize or replace any account-specific information before sharing.

For example, you may add a line like:

```auto
log.error("Provisioning Plan XML: " +plan.toXml());

```

This will capture the full plan details for troubleshooting.

---

<div class="post-metadata">

**Author:** ![JackSparrow](https://sea1.discourse-cdn.com/sailpoint/discuss/user_avatar/developer.sailpoint.com/jacksparrow/32/19685_2.png) [@JackSparrow](https://developer.sailpoint.com/discuss/u/JackSparrow)\
**Post date:** [September 18, 2025, 11:06am UTC](https://developer.sailpoint.com/discuss/t/beforeprovisioning-rule-error/180500/3 "2025-09-18T11:06:23Z")

</div>

Hi @ganesh-atikes ,

For this I need to deploy the rule again which will cost. I know this will give us more info.

@tyler_mairose @colin_mckibben Is this something that you can help?

---

<div class="post-metadata">

**Author:** ![suresh4iam](https://sea1.discourse-cdn.com/sailpoint/discuss/user_avatar/developer.sailpoint.com/suresh4iam/32/29513_2.png) [@suresh4iam](https://developer.sailpoint.com/discuss/u/suresh4iam)\
**Post date:** [September 18, 2025, 11:32am UTC](https://developer.sailpoint.com/discuss/t/beforeprovisioning-rule-error/180500/4 "2025-09-18T11:32:39Z")

</div>

You can print the plan by using connector rule too.

---

<div class="post-metadata">

**Author:** ![JackSparrow](https://sea1.discourse-cdn.com/sailpoint/discuss/user_avatar/developer.sailpoint.com/jacksparrow/32/19685_2.png) [@JackSparrow](https://developer.sailpoint.com/discuss/u/JackSparrow)\
**Post date:** [September 18, 2025, 11:52am UTC](https://developer.sailpoint.com/discuss/t/beforeprovisioning-rule-error/180500/5 "2025-09-18T11:52:45Z")

</div>

HI @suresh4iam , can you brief it? Means creating connector rule and patching it to source just to see the plan?

Also, why the rule is not throwing any error for ENABLE and DISABLE operations and working fine?

---

<div class="post-metadata">

**Author:** ![system](https://global.discourse-cdn.com/sailpoint/original/2X/f/f2136700ed5e3703e0b85e02f6be799dacca7735.png) [@system](https://developer.sailpoint.com/discuss/u/system)\
**Post date:** [November 17, 2025, 11:52am UTC](https://developer.sailpoint.com/discuss/t/beforeprovisioning-rule-error/180500/6 "2025-11-17T11:52:59Z")

</div>

This topic was automatically closed 60 days after the last reply. New replies are no longer allowed.
