# JDBC Provisioining Rule for create operation

**URL:** <https://developer.sailpoint.com/discuss/t/jdbc-provisioining-rule-for-create-operation/37980>\
**Category:** SHF Discussion and Questions\
**Tags:** jdbc-connector, identity-security-cloud\
**Created:** [March 27, 2024, 12:03pm UTC](https://developer.sailpoint.com/discuss/t/jdbc-provisioining-rule-for-create-operation/37980 "2024-03-27T12:03:31Z")\
**Posts on this page:** 4\
**Page:** 1

<div class="post-metadata">

**Author:** ![Manju22](https://avatars.discourse-cdn.com/v4/letter/m/45deac/32.png) [@Manju22](https://developer.sailpoint.com/discuss/u/Manju22)\
**Post date:** [March 27, 2024, 12:03pm UTC](https://developer.sailpoint.com/discuss/t/jdbc-provisioining-rule-for-create-operation/37980/1 "2024-03-27T12:03:31Z")

</div>

Hi,

How can we get AccountID in the provisioningPlan JDBC Provisioining Rule for create operation. Below is my code. “ID” has been used as AccountID of the source. I cant read that value using getAttributeRequestValue

```auto
   import java.sql.Connection;
  import java.sql.DriverManager;
  import java.sql.PreparedStatement;
  import java.sql.SQLException;
  import java.sql.Types;
  import java.util.List;
  import sailpoint.api.SailPointContext;
  import sailpoint.connector.JDBCConnector;
  import sailpoint.object.Application;
  import sailpoint.object.ProvisioningPlan;
  import sailpoint.object.ProvisioningPlan.AccountRequest;
  import sailpoint.object.ProvisioningPlan.AttributeRequest;
  import sailpoint.object.ProvisioningPlan.PermissionRequest;
  import sailpoint.object.ProvisioningResult;
  import sailpoint.object.Schema;
  
  public String getAttributeRequestValue(AccountRequest acctReq, String attribute) {

    if ( acctReq != null ) {
      AttributeRequest attrReq = acctReq.getAttributeRequest(attribute);
      if ( attrReq != null ) {
        return attrReq.getValue();
      }
    }
    return null;
  }

  ProvisioningResult result = new ProvisioningResult();
  PreparedStatement statement;

  if ( plan != null ) {

    List accounts = plan.getAccountRequests();
    if ( ( accounts != null ) && ( accounts.size() > 0 ) ) {
      for ( AccountRequest account : accounts ) {
        try {
          if ( AccountRequest.Operation.Create.equals( account.getOperation() ) ) {
        
            statement = connection.prepareStatement("insert into LDAPUsers (ID,Email,FirstName,LastName,CreatedDate) values (?,?,?,?,CURRENT_TIMESTAMP)" );
			statement.setString ( 1, getAttributeRequestValue(account,"ID") );
            statement.setString ( 2, getAttributeRequestValue(account,"Email") );
            statement.setString ( 3, getAttributeRequestValue(account,"FirstName") );
            statement.setString ( 4, getAttributeRequestValue(account,"LastName") );
            statement.executeUpdate();

            result.setStatus( ProvisioningResult.STATUS_COMMITTED );

          }  
        }
        catch( SQLException e ) {
          result.setStatus( ProvisioningResult.STATUS_FAILED );
          result.addError( e );
        }
        finally {
          if(statement != null) {
            statement.close();
          }
        }
      }
    }
  }

  return result;

```

---

<div class="post-metadata">

**Author:** ![vguleria](https://sea1.discourse-cdn.com/sailpoint/discuss/user_avatar/developer.sailpoint.com/vguleria/32/7884_2.png) [@vguleria](https://developer.sailpoint.com/discuss/u/vguleria)\
**Post date:** [March 27, 2024, 12:14pm UTC](https://developer.sailpoint.com/discuss/t/jdbc-provisioining-rule-for-create-operation/37980/2 "2024-03-27T12:14:53Z")

</div>

Hi Majula,

Can you please try like below

```auto
import java.sql.Connection;
  import java.sql.DriverManager;
  import java.sql.PreparedStatement;
  import java.sql.SQLException;
  import java.sql.Types;
  import java.util.List;
  import sailpoint.api.SailPointContext;
  import sailpoint.connector.JDBCConnector;
  import sailpoint.object.Application;
  import sailpoint.object.ProvisioningPlan;
  import sailpoint.object.ProvisioningPlan.AccountRequest;
  import sailpoint.object.ProvisioningPlan.AttributeRequest;
  import sailpoint.object.ProvisioningPlan.PermissionRequest;
  import sailpoint.object.ProvisioningResult;
  import sailpoint.object.Schema;
  
  public String getAttributeRequestValue(AccountRequest acctReq, String attribute) {

    if ( acctReq != null ) {
      AttributeRequest attrReq = acctReq.getAttributeRequest(attribute);
      if ( attrReq != null ) {
        return attrReq.getValue();
      }
    }
    return null;
  }

  ProvisioningResult result = new ProvisioningResult();
  PreparedStatement statement;

  if ( plan != null ) {

    List accounts = plan.getAccountRequests();
    if ( ( accounts != null ) && ( accounts.size() > 0 ) ) {
      for ( AccountRequest account : accounts ) {
        try {
          if ( AccountRequest.Operation.Create.equals( account.getOperation() ) ) {
        
            statement = connection.prepareStatement("insert into LDAPUsers (ID,Email,FirstName,LastName,CreatedDate) values (?,?,?,?,CURRENT_TIMESTAMP)" );
	    **statement.setString ( 1, account.getNativeIdentity() );**
            statement.setString ( 2, getAttributeRequestValue(account,"Email") );
            statement.setString ( 3, getAttributeRequestValue(account,"FirstName") );
            statement.setString ( 4, getAttributeRequestValue(account,"LastName") );
            statement.executeUpdate();

            result.setStatus( ProvisioningResult.STATUS_COMMITTED );

          }  
        }
        catch( SQLException e ) {
          result.setStatus( ProvisioningResult.STATUS_FAILED );
          result.addError( e );
        }
        finally {
          if(statement != null) {
            statement.close();
          }
        }
      }
    }
  }

  return result;

```

You may need to wrap the method account.getNativeIdentity() with (String ) depending upon your table schema.

Please let me know if that helps.

Thank You.  
Regards  
Vikas.

---

<div class="post-metadata">

**Author:** ![Manju22](https://avatars.discourse-cdn.com/v4/letter/m/45deac/32.png) [@Manju22](https://developer.sailpoint.com/discuss/u/Manju22)\
**Post date:** [March 27, 2024, 12:54pm UTC](https://developer.sailpoint.com/discuss/t/jdbc-provisioining-rule-for-create-operation/37980/3 "2024-03-27T12:54:40Z")

</div>

> [@vguleria](#):
>
> `statement.setString ( 1, account.getNativeIdentity() );`

Thanks Vikas… Working!!

---

<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:** [May 26, 2024, 12:55pm UTC](https://developer.sailpoint.com/discuss/t/jdbc-provisioining-rule-for-create-operation/37980/4 "2024-05-26T12:55:21Z")

</div>

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