Provisioning error

Which IIQ version are you inquiring about?

Version 8.4

Share all details related to your problem, including any error messages you may have received.

Hello Team,
I am trying to trigger the joiner life cycle event I am getting this error

( Exception occurred while executing the RPCRequest: Errors returned from IQService. "A device attached to the system is not functioning. 00000523: SysErr: DSID-031A1242, problem 22 (Invalid argument), data 0 . HRESULT:[0x8007001F]" )

If anyone knows the answer to this error please share the solution.
Thank you

@SecurityConsultant123

Did you check this already

Exception during AD provisioning - “A Device Attached to the system is not functioning” - Compass (sailpoint.com)

Most probably there is some attribute in your provisioning causing the violations at AD end.

Please do recheck once.

Ok Satish i am agree with your point. i am provisioning the user from hrms (JDBC) application to AD application so i am facing the same error. I have checked every script but again i am facing same error.
Note: ( HRMS user data is masked and encrypted )
Can you share me your input on this please

@SecurityConsultant123 if possible then post your provisioning plan here.

Hello Kumar Ranjan,
This is the Provisioning plan i wrote for Joiner.

import sailpoint.object.Identity;
import sailpoint.api.Provisioner;
import sailpoint.object.ProvisioningPlan;
import sailpoint.object.ProvisioningPlan.AccountRequest;
import sailpoint.object.ProvisioningPlan.AccountRequest.Operation;
import sailpoint.object.ProvisioningPlan.AttributeRequest;

    if(identityName!=null) {

    Identity identityObj=context.getObjectByName(Identity.class,identityName);

    System.out.println("Identity Name ------>>>>>"+identityObj);

    ProvisioningPlan plan = new ProvisioningPlan();

    System.out.println("Plan Name is AD Plan Create (Joiner)------>>>>>Plan:  "+plan.toXml());

    if(identityObj!=null) {

    plan.setIdentity(identityObj);
    String userId = (String) identityObj.getAttribute("userId");
    String FinalDn= "cn="+userId+",************************" ; 
    AccountRequest ADAccReq=new AccountRequest();

    ADAccReq.setApplication("ActiveDirectory");
    ADAccReq.setOperation(ProvisioningPlan.AccountRequest.Operation.Create);
    ADAccReq.setNativeIdentity(FinalDn);


    AttributeRequest AttrReq = new AttributeRequest("memberOf", ProvisioningPlan.Operation.Add,"CN= ********** ");
    ADAccReq.add(AttrReq);

    plan.add(ADAccReq);

    System.out.println("Plan :- "+   plan.toXml()); 
    /*
    Provisioner p=new Provisioner(context);
    p.compile(plan);
    p.execute();
    */
    } 
    return plan;
    }  

But now i am getting this error (Account created but some attribute are not updated property)

I have auto populated all the values of identity with this script method ( identity.getAttribute(“Department”); ) why it is failed to get those values. if anyone knows the answer kindly drop your solution.

Hi and Hello,

Here are the changes made to your code.

  1. Added Debug Statements:
  • Added System.out.println statements to log the values of key attributes (identityObj, userId, FinalDn, Department). This will help identify where the issue might be.
  1. Checking and Logging Attributes:
  • Added logging for the Department value before adding it to the attribute request.
  1. Null Check for identityObj:
  • Added a check to ensure identityObj is not null, with an appropriate debug message.
  1. Final DN Construction:
  • Logged the value of FinalDn for debugging.

Here is the updated code with comments explaining the changes:

import sailpoint.object.Identity;
import sailpoint.api.Provisioner;
import sailpoint.object.ProvisioningPlan;
import sailpoint.object.ProvisioningPlan.AccountRequest;
import sailpoint.object.ProvisioningPlan.AccountRequest.Operation;
import sailpoint.object.ProvisioningPlan.AttributeRequest;

if(identityName != null) {
// Retrieve the identity object based on the name
Identity identityObj = context.getObjectByName(Identity.class, identityName);
System.out.println("Identity Name ------>>>>> " + identityObj);

if(identityObj != null) {
    ProvisioningPlan plan = new ProvisioningPlan();
    plan.setIdentity(identityObj);

    // Retrieve the userId attribute from the identity object
    String userId = (String) identityObj.getAttribute("userId");
    System.out.println("User ID: " + userId);

    // Construct the final DN
    String FinalDn = "cn=" + userId + ",************************";
    System.out.println("Final DN: " + FinalDn);

    // Create account request for Active Directory
    AccountRequest ADAccReq = new AccountRequest();
    ADAccReq.setApplication("ActiveDirectory");
    ADAccReq.setOperation(ProvisioningPlan.AccountRequest.Operation.Create);
    ADAccReq.setNativeIdentity(FinalDn);

    // Check and log the value of the department attribute
    String department = (String) identityObj.getAttribute("Department");
    System.out.println("Department: " + department);

    // Add attribute request for memberOf
    AttributeRequest AttrReq = new AttributeRequest("memberOf", ProvisioningPlan.Operation.Add, "CN= ********** ");
    ADAccReq.add(AttrReq);

    // Add more attributes if needed
    // ADAccReq.add(new AttributeRequest("anotherAttribute", ProvisioningPlan.Operation.Set, value));

    plan.add(ADAccReq);

    // Log the provisioning plan for debugging
    System.out.println("Plan :- " + plan.toXml());

    // Uncomment these lines to execute the plan
    /*
    Provisioner p = new Provisioner(context);
    p.compile(plan);
    p.execute();
    */

    return plan;
} else {
    System.out.println("Identity object is null.");
}

} else {
System.out.println(“Identity name is null.”);
}

return null;

These changes should help you identify where the issue lies with updating attributes in the provisioning process.

Regards,
Adam

1 Like

Thank you Adam Waszak

No problemo,
Give update.

Regards,
Adam

Still working on it i will update you once it is completed Adam thank for your support

regards
Adam

@SecurityConsultant123 pls try to execute like below

Provisioner p = new Provisioner(context);
    ProvisioningProject proj = p.compile(plan);
    p.execute(proj); 

Rest As Suggested by Adam, you can put some logs for troubleshooting for null values.

I appreciate your support @pravin_ranjan

I will check and will let you know

Thank you for your support

Regards,
Security Consultant.

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