Skip to main content

Other Record Fields (SuiteBuilder)

Comprehensive guide to creating and configuring custom fields for supporting records such as messages, notes, folders, files, and custom record types.


Overview​

Other Record Fields extend NetSuite's supporting records beyond the main entity, item, and transaction types. These include system records and custom record types you create.

OTHER RECORD FIELD SCOPE
═══════════════════════════════════════════════════════════════════════════════

Custom Other Record Field
│
▼
┌───────────────────────────────────────────────────────────────────────────┐
│ APPLIES TO (select one or more): │
│ │
│ COMMUNICATION SYSTEM │
│ ☐ Message ☐ Folder │
│ ☐ Note ☐ File │
│ │
│ CUSTOM RECORDS │
│ ☑ Vehicle (customrecord_vehicle) │
│ ☐ Maintenance Log (customrecord_maint_log) │
│ ☐ Quality Check (customrecord_qc) │
│ │
└───────────────────────────────────────────────────────────────────────────┘

Creating Other Record Fields​

Customization → Lists, Records, & Fields → Other Record Fields → New

Or, for custom records:

Customization → Lists, Records, & Fields → Record Types → [Select Record] → Fields

Configuration Options​

OTHER RECORD FIELD CONFIGURATION
═══════════════════════════════════════════════════════════════════════════════

┌─────────────────────────────────────────────────────────────────────────────┐
│ BASIC SETTINGS │
├─────────────────────────────────────────────────────────────────────────────┤
│ │
│ Label*: [Inspection Result ] │
│ ID*: [custrecord_qc_result ] │
│ Type: [List/Record ▾] │
│ List/Record: [QC Result Status ▾] │
│ │
│ Description: [Final inspection result for the │
│ quality check record ] │
│ │
└─────────────────────────────────────────────────────────────────────────────┘

┌─────────────────────────────────────────────────────────────────────────────┐
│ APPLIES TO │
├─────────────────────────────────────────────────────────────────────────────┤
│ │
│ Select Record Type: │
│ ☑ Quality Check (customrecord_qc) │
│ │
└─────────────────────────────────────────────────────────────────────────────┘

Fields for Custom Record Types​

Adding Fields to Custom Records​

When creating custom records, add fields via:

  1. Fields subtab on the record type definition
  2. Other Record Fields menu (applies to multiple records)
CUSTOM RECORD FIELDS EXAMPLE
═══════════════════════════════════════════════════════════════════════════════

Custom Record: Quality Check (customrecord_qc)

┌──────────────────────────────────────────────────────────────────────────────┐
│ Label │ Type │ Internal ID │ Mandatory │
├──────────────────────────────────────────────────────────────────────────────┤
│ Name │ Free-Form │ name (built-in) │ Yes │
│ Item │ List/Record │ custrecord_qc_item │ Yes │
│ Lot Number │ Text │ custrecord_qc_lot │ No │
│ Inspector │ List/Record │ custrecord_qc_inspector │ Yes │
│ Inspection Date │ Date │ custrecord_qc_date │ Yes │
│ Result │ List │ custrecord_qc_result │ Yes │
│ Defects Found │ Integer │ custrecord_qc_defects │ No │
│ Notes │ Text Area │ custrecord_qc_notes │ No │
│ Related Transaction │ List/Record │ custrecord_qc_trans │ No │
│ Attachment │ Document │ custrecord_qc_doc │ No │
└──────────────────────────────────────────────────────────────────────────────┘

Common Use Cases​

Custom Record Field Patterns​

Record TypeCommon Fields
Configuration/LookupCode, Description, Active, Sort Order
Log/AuditDate, User, Action, Before/After Values
Junction/LinkRecord A Reference, Record B Reference, Relationship Type
Workflow DataStatus, Assigned To, Due Date, Approval Notes
Master DataName, Category, Effective Dates, Is Active

System Record Fields​

Record TypeCommon Custom Fields
MessageCategory, Priority, Auto-Response Flag
NoteNote Type, Related Project, Visibility Level
FileDocument Type, Review Date, Owner
FolderAccess Level, Department Owner

Field Type Selection​

FIELD TYPES FOR CUSTOM RECORDS
═══════════════════════════════════════════════════════════════════════════════

IDENTIFIERS & CODES
─────────────────
Free-Form Text Codes, IDs, short text
Text Area Long descriptions, JSON data
Integer Sequence numbers, counts
Auto-Number System-generated numbers

RELATIONSHIPS
─────────────────
List/Record Link to NetSuite records (Customer, Item, etc.)
Link to other custom records
Multiple Select Many-to-many relationships

STATUS & CLASSIFICATION
─────────────────
List Dropdown from custom list
Checkbox Boolean flags
Radio Button Single selection from options

DATES & TIMES
─────────────────
Date Dates without time
Date/Time Full timestamp
Time of Day Time only

DOCUMENTS & MEDIA
─────────────────
Document File attachments
Image Image attachments
Rich Text HTML formatted content

CALCULATED
─────────────────
Currency Money values
Decimal Precise numbers
Percent Percentage values

Custom Record Relationships​

One-to-Many with Sublist​

PARENT-CHILD RELATIONSHIP
═══════════════════════════════════════════════════════════════════════════════

Parent: Vehicle (customrecord_vehicle)
┌───────────────────────────────────────┐
│ VEH-00001: 2024 Toyota Camry │
│ │
│ [Main] [Maintenance History] [Costs] │
├───────────────────────────────────────┤
│ MAINTENANCE HISTORY SUBLIST │
│ │
│ Date │ Service │ Cost │
│ ───────────┼────────────────┼─────────│
│ 2026-01-15 │ Oil Change │ $75 │
│ 2026-02-01 │ Tire Rotation │ $50 │
│ 2026-02-15 │ Brake Service │ $250 │
│ │
└───────────────────────────────────────┘

Implementation:
1. Create Parent record type (Vehicle)
2. Create Child record type (Maintenance Log)
3. Add List/Record field on Child → Parent
4. Configure sublist on Parent form

Lookup Relationships​

LOOKUP FIELD PATTERN
═══════════════════════════════════════════════════════════════════════════════

Custom Record: Price Rule (customrecord_price_rule)
┌─────────────────────────────────────────────────────────────────────────────┐
│ Name: Electronics Discount │
│ │
│ Item Category: [Electronics ▾] ← List/Record to Category │
│ Customer Tier: [Gold ▾] ← List/Record to Tier List │
│ Discount %: [15] │
│ Effective From: [2026-01-01] │
│ Effective To: [2026-12-31] │
│ Is Active: [✓] │
└─────────────────────────────────────────────────────────────────────────────┘

Usage: Scripts lookup this record to apply discounts automatically

Field Visibility and Security​

Record-Level Permissions​

Custom record permissions control overall access:

CUSTOM RECORD PERMISSIONS
═══════════════════════════════════════════════════════════════════════════════

Record: Quality Check (customrecord_qc)

Permission Level: Use Permission List

Role Level
───────────────────── ─────────────────
Quality Manager Full
Quality Inspector Edit
Production Staff Create
All Other Roles View

Field-Level Access​

For sensitive fields within a custom record:

FIELD-LEVEL ACCESS CONTROL
═══════════════════════════════════════════════════════════════════════════════

Field: Inspector Override Notes (custrecord_qc_override)

Role Access:
┌─────────────────────────────────────────────────────────────────────────────┐
│ Role Access Display Type │
├─────────────────────────────────────────────────────────────────────────────┤
│ Quality Manager Edit Normal │
│ Quality Inspector View Disabled │
│ Production Staff None Hidden │
└─────────────────────────────────────────────────────────────────────────────┘

Scripting with Other Record Fields​

Creating Custom Records​

// Create a quality check record
var qcRecord = record.create({
type: 'customrecord_qc'
});

qcRecord.setValue('name', 'QC-2026-0001');
qcRecord.setValue('custrecord_qc_item', itemId);
qcRecord.setValue('custrecord_qc_lot', lotNumber);
qcRecord.setValue('custrecord_qc_inspector', employeeId);
qcRecord.setValue('custrecord_qc_date', new Date());
qcRecord.setValue('custrecord_qc_result', 1); // Pass

var recordId = qcRecord.save();

Searching Custom Records​

// Search quality checks
var qcSearch = search.create({
type: 'customrecord_qc',
filters: [
['custrecord_qc_result', 'anyof', 2], // Fail
'AND',
['custrecord_qc_date', 'within', 'lastmonth']
],
columns: [
'name',
'custrecord_qc_item',
'custrecord_qc_defects',
'custrecord_qc_notes'
]
});

SuiteQL for Custom Records​

-- Query custom record with related data
SELECT
qc.name AS check_number,
BUILTIN.DF(qc.custrecord_qc_item) AS item_name,
qc.custrecord_qc_lot AS lot_number,
BUILTIN.DF(qc.custrecord_qc_inspector) AS inspector,
qc.custrecord_qc_date AS inspection_date,
BUILTIN.DF(qc.custrecord_qc_result) AS result,
qc.custrecord_qc_defects AS defects_found
FROM
customrecord_qc qc
WHERE
qc.isinactive = 'F'
ORDER BY
qc.custrecord_qc_date DESC

Best Practices​

Naming Conventions​

ElementConventionExample
Record IDcustomrecord_[prefix]_[name]customrecord_qc_check
Field IDcustrecord_[prefix]_[field]custrecord_qc_result
Prefix2-4 character codeqc, veh, hr

Design Checklist​

ConsiderationRecommendation
Record TypeChoose record vs. list appropriately
FieldsOnly essential fields (avoid bloat)
RelationshipsUse List/Record for lookups
PermissionsSet role-based access
FormsCreate default entry form
SearchesBuild standard saved searches
ScriptsEnable scripting if needed