Find Reference missing form

After Group aggregation NCD fails with form is null error.How do i find the forms thats are missing ..

java.lang.NullPointerException: Cannot invoke “sailpoint.object.Form.toXml()” because “form” is null
at sailpoint.api.nativeidentitychange.NativeIdentityChangeRolePropagatorCorrelationModel$RoleFilter.hasMatchingForms(NativeIdentityChangeRolePropagatorCorrelationModel.java:93)
at sailpoint.api.nativeidentitychange.NativeIdentityChangeRolePropagatorCorrelationModel$RoleFilter.test(NativeIdentityChangeRolePropagatorCorrelationModel.java:81)
at sailpoint.api.nativeidentitychange.NativeIdentityChangeRolePropagatorCorrelationModel$RoleFilter.test(NativeIdentityChangeRolePropagatorCorrelationModel.java:66)

Hi @autorun6464,

Did you create provisioning policy form in Role configuration?

should i grab through bundle class???

Class: Role not found in namespace : at Line: 14 : in file: inline evaluation of: ``import sailpoint.object.Application; import sailpoint.object.Role;

Try this instead—no extra imports needed:


List roles = context.getObjects("Role", null);
System.out.println("Roles missing a form:");
for (Object o : roles) {
    sailpoint.object.Role r = (sailpoint.object.Role) o;
    if (r.getForm() == null) {
        System.out.println(" - " + r.getName());
    }
}

What it does:

  • context.getObjects("Role", null) fetches all Role objects.

  • We cast each to sailpoint.object.Role inline.

  • Print any with getForm() == null.

No need to import—this runs straight in the IIQ console.

nope it still threw error

Code:
import sailpoint.object.Application;
import sailpoint.object.Role;
import sailpoint.object.Link;
import org.apache.log4j.Logger;
import java.util.Iterator;
import java.util.ArrayList;
import sailpoint.api.SailPointContext;
import sailpoint.object.*;

Logger logger = Logger.getLogger(“Rules”);
logger.debug(“Starting Form Check for Application”);

List roles = context.getObjects(“Role”, null);
logger.debug(“Roles missing a Form:”);
for (Object o : roles) {
sailpoint.object.Role r = (sailpoint.object.Role) o;
if (r.getForm() == null) {
logger.debug(" - " + r.getName());
}
}

Error: : Error in method invocation: Method getObjects(java.lang.String, null) not found in class’sailpoint.server.InternalContext’ : at Line: 13 :

Old Code :

import sailpoint.object.Application;
import sailpoint.object.Role;
import sailpoint.object.Link;
import org.apache.log4j.Logger;
import java.util.Iterator;
import java.util.ArrayList;
import sailpoint.api.SailPointContext;
import sailpoint.object.Role;

Logger logger = Logger.getLogger(“Rules”);
logger.debug(“Starting Form Check for Application”);

List roles = context.getObjects(Bundle.class);
logger.debug(“Roles missing a Form:”);

for (Bundle r : roles) {
if (r.getForm() == null) {
logger.debug(" - " + r.getName());
}
}

Error: Method getForm() not found in class’sailpoint.object.Bundle’ : at Line: 18 : in file: inline evaluation of:

can you try this one

import sailpoint.object.Role;
import sailpoint.object.Bundle;
import org.apache.log4j.Logger;

Logger logger = Logger.getLogger("Rules");
logger.debug("Starting Form Check for Roles");

// Correct method - use Role.class, not string
List roles = context.getObjects(Role.class);

logger.debug("Roles missing a Form:");
for (Role r : roles) {
    if (r.getForm() == null) {
        logger.debug(" - " + r.getName());
    }
}

yup tried this at first error says Role class not found

Error: Typed variable declaration : Class: Role not found in namespace : at Line: 14 : in file: inline evaluation of: ``

Found the issue. In SailPoint IIQ, Roles are actually Bundle objects, not Role objects.

import sailpoint.object.Bundle;
import org.apache.log4j.Logger;

Logger logger = Logger.getLogger("Rules");
logger.debug("Starting Form Check for Roles");

// Use Bundle.class for roles in IIQ
List bundles = context.getObjects(Bundle.class);

logger.debug("Roles missing a Form:");
for (Bundle bundle : bundles) {
    if (bundle.getForm() == null) {
        logger.debug(" - " + bundle.getName());
    }
}

but the issue with bundles class is there is no getForm() method.

Error: Method getForm() not found in class’sailpoint.object.Bundle’ : at Line: 18 : in file: inline evaluation of:

Hi @autorun6464,

Use below code, it will works

import sailpoint.object.Bundle;

  List bundles = context.getObjects(Bundle.class);
  List bundlesList = new ArrayList();

  for (Bundle bundle : bundles) {
    List forms = bundle.getProvisioningForms();
    if (forms != null){
      log.warn(" Role name is :" + bundle.getName());
      bundlesList.add(bundle.getName());
    } else {
      log.warn("No form found");
    }
  }
  return bundlesList;

it does give me back forms and disable all the roles that contains form for that application but it still giving me form is null error for ncd