Oracle NetSuite
Connector name |
|
Connector type | Python script, |
Type (UI field value) | Oracle NetSuite |
Connector status / support | Bravura Security-Verified This connector has been tested and is fully supported by Bravura Security. |
Installation / setup | The NetSuite connector includes an py -m pip install -r agtnetsuite_requirements.txt |
Bravura Security Fabric utilizes the agtpython connector to manage Oracle NetSuite employee accounts, roles, and related identity data. This connector uses NetSuite's REST API with OAuth 2.0 authentication for all operations.
The following Bravura Security Fabric operations are supported by the Oracle NetSuite connector:
get server information
list accounts
list attributes
list groups
list members
list account attributes
user change password
administrator reset password
check account enabled
enable account
disable account
create account
delete account
update attributes
rename account
For a full list and explanation of each connector operation, see connector operations.
Preparation
Before you can target Oracle NetSuite, you must:
Set up NetSuite OAuth 2.0 authentication
Install Python dependencies
Configure the target system in Bravura Security Fabric.
Set up NetSuite OAuth 2.0 authentication
Create an integration record
You must create an integration record in NetSuite to enable OAuth 2.0 authentication:
Navigate to Setup > Integration > Manage Integrations > New.
Configure the integration:
Name:
Bravura Security Fabric IntegrationState: Enabled
OAuth 2.0: Checked
Authorization Code Grant: Unchecked
Client Credentials Grant: Checked
Scope: Select
REST WEB SERVICES
Save and note the Client ID and Client Secret.
Create service account
Create a dedicated service account in NetSuite with appropriate permissions:
Navigate to Lists > Employees > Employees > New.
Configure the employee:
Name:
Bravura Service AccountEmail:
bravura-service@<yourdomain.com>Give Access: Checked
Role:
Administrator
Save the employee record.
Generate and upload OAuth certificates
Generate a public/private key pair for OAuth 2.0 authentication:
Option 1: Standard RSA Certificate (Recommended)
# Generate private key openssl genrsa -out netsuite_private.pem 4096 # Generate public certificate (valid for 1 year) openssl req -new -x509 -key netsuite_private.pem -out netsuite_public.pem -days 365
Option 2: RSA Certificate with PSS Padding
# Generate private key and certificate in one command with PSS padding (valid for 1 year) openssl req -new -x509 -newkey rsa:4096 -keyout netsuite_private.pem \ -sigopt rsa_padding_mode:pss -sha256 -sigopt rsa_pss_saltlen:64 \ -out netsuite_public.pem -nodes -days 365
Note
Both options work with NetSuite and create certificates valid for 1 year (365 days). Option 1 is simpler and uses standard RSA signatures. Option 2 uses PSS (Probabilistic Signature Scheme) padding, which provides additional security properties. Choose the option that matches your organization's security requirements.
Upload the certificate to NetSuite:
In NetSuite, navigate to Setup > Integration > OAuth 2.0 Client Credentials (M2M) Setup.
Click Create New.
Configure the OAuth 2.0 Client Credentials:
APPLICATION: Select your integration (Bravura Security Fabric Integration).
ENTITY (USER): Select the service account (Bravura Service Account).
ROLE: Select the role assigned to the service account (Administrator).
CERTIFICATE: Click Choose File and
upload netsuite_public.pem.
Click Save.
Note the
CERTIFICATE IDthat NetSuite assigns (displayed in the list after saving).
Important
Keep the private key file (netsuite_private.pem) secure and accessible to Bravura Security Fabric. You will need to specify its full path in the Bravura address attributes.
Targeting Oracle NetSuite
For each NetSuite system, add a target system in Bravura Security Fabric (Manage the system > Resources > Target systems):
Type is Oracle NetSuite
In the Type dropdown menu, Oracle NetSuite is located under the Customer Relationship Management Systems category.
Address uses options described in the table below:
Option | Description |
|---|---|
URL | The NetSuite API server URL (e.g., |
Account ID | NetSuite account ID (e.g., |
Client ID | OAuth 2.0 client ID from the NetSuite integration record (Consumer Key) |
Certificate ID | Certificate ID assigned by NetSuite when you upload the public certificate |
Private key | Full path to the private key file (e.g., |
Signature Algorithm | JWT signature algorithm (e.g., |
The full list of target system parameters is explained in Target System Options .
Setting the administrator credentials
The NetSuite connector uses OAuth 2.0 with JWT bearer tokens for authentication. No traditional username/password credentials are required. The connector will automatically obtain and refresh access tokens using the configured address attributes (Client ID, Certificate ID, and Private Key).
Required: You must configure placeholder credentials to prevent warning messages:
Navigate to the Credentials tab
Set Administrator ID to:
oauthSet Password to:
not-used
These placeholder credentials are not validated or used by the connector, but are required to prevent warning messages about missing credentials. All authentication is handled through OAuth 2.0 using the address attributes configured above.
Handling account attributes
You can view the complete list of attributes that Bravura Security Fabric can manage, including native and pseudo-attributes, using the Manage the system (PSA) module. To do this, select Oracle NetSuite from the Manage the system > Resources > Account attributes > Target system type menu.
The following NetSuite attributes are automatically loaded and mapped to profile attributes by the connector:
First name (
firstname)Last name (
lastname)Email (
email)
Additional supported NetSuite attributes that can be managed by Bravura Security Fabric:
Bravura Attribute | NetSuite Field | Type | Description |
|---|---|---|---|
|
| String | Employee internal ID (primary key) |
|
| String | Employee email address |
|
| String | Employee entity ID (username) |
|
| String | External system ID |
|
| String | First name |
|
| Boolean | Access enabled flag |
|
| Boolean | Inactive status flag |
|
| String | Last name |
|
| String | Middle name |
|
| String | Supervisor employee ID |
|
| String | Job title |
|
| String | Department name |
|
| String | Subsidiary name |
Template accounts
Bravura Security Fabric uses template accounts as models or "blueprints" for creating new accounts in NetSuite. Template accounts define default settings and role assignments that will be copied to newly created accounts.
To create a template account:
In NetSuite, navigate to Lists > Employees > Employees > New.
Create an employee record with the desired default attributes.
Configure the employee with standard role assignments.
Important
The template account must have at least one role assigned.
The template account must be active (not marked as inactive).
Save the employee record.
Account creation process
When Bravura Security Fabric creates a new account:
Required Attributes: The following attributes must be provided:
Email: Employee email address (used as the account identifier)
First name: Employee first name
Last name: Employee last name
Subsidiary: The NetSuite subsidiary the employee belongs to
Password: Initial password for the account
Optional Attributes: Additional attributes can be specified:
Middle name
Job title
Department
Supervisor
External ID
Role Assignment:
The connector automatically copies all role assignments from the template account
The new account will have the same roles as the template
The template account must have at least one role assigned
Duplicate Prevention: The connector checks if an account with the same email address already exists before creating a new account
Account Identifiers: After creation, the account is assigned:
Internal ID: NetSuite's internal employee ID (used as stable ID and long ID)
Email: Used as the short ID in Bravura Security Fabric
Entity ID: Auto-generated by NetSuite (read-only)
Troubleshooting
Authentication failures
Symptom: "Could not obtain a token" or "Failed to get token" error
Causes:
Invalid certificate ID or client ID
Private key doesn't match public certificate
Integration record not enabled
Incorrect signature algorithm
Time synchronization issue: The time between the NetSuite server and Bravura Security Fabric server may be out of sync
Resolution:
Verify server time synchronization (ensure both servers have accurate system time)
Verify certificate ID and client ID are correct
Ensure the certificate and private key are a matching pair
Ensure integration record is enabled in NetSuite
See the Token troubleshooting section below for additional steps
Missing dependencies
Symptom: "Failed to import a required module" error
Causes: PyJWT or requests library not installed
Resolution: From the agent directory, run py -m pip install -r agtnetsuite_requirements.txt
Permission errors
Symptom: HTTP 403 Forbidden errors
Causes: Service account lacks required permissions
Resolution: Verify service account has Administrator role or custom role with REST API permissions
Account creation failures
Symptom: "Cannot create account" error
Causes:
Template account is inactive
Template account has no roles assigned
Password requirements not met
Required attributes missing
Resolution:
Ensure the template account is active (not marked as inactive)
Verify the template account has at least one role assigned
Check that the template account ID is correctly configured in Bravura Security Fabric target settings
Ensure password meets NetSuite requirements (complexity, length, etc.)
Verify all required attributes are provided (email, first name, last name, subsidiary, password)
Token troubleshooting
If you encounter authentication issues, verify the following:
Certificate Configuration:
Public certificate uploaded to NetSuite integration record
Private key file accessible to Bravura Security Fabric
Certificate and key are a matching pair
Certificate ID matches the ID assigned by NetSuite
Integration Record:
Integration is enabled
OAuth 2.0 is checked
Client Credentials Grant is checked
Scope includes REST WEB SERVICES
Address Attributes:
Client ID is correct (matches integration record)
Certificate ID is correct (matches NetSuite-assigned ID)
Private key path is correct and file is accessible
Account ID format is correct (case-sensitive)
Signature algorithm matches key type (PS* for RSA, ES* for ECDSA)
Service Account:
Account has "Give Access" enabled
Account has appropriate role permissions
Account is not inactive
Network Connectivity:
Bravura Security Fabric can reach NetSuite API endpoint
No firewall blocking HTTPS traffic
DNS resolution working correctly
Time Synchronization:
Ensure both servers have accurate system time synchronized via NTP
JWT tokens include timestamps and may be rejected if time is significantly out of sync
Document Version: 1.0
Last Updated: February 11, 2026
Connector Version: 1.0 (custom)
Tested with NetSuite: 2025.2 (Edition: United States)
Tested with Bravura Security Fabric: 12.9.1.41114
Note: Steps and menu locations may vary depending on your NetSuite version and edition.