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
Navigation
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:
- Fields subtab on the record type definition
- 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 Type | Common Fields |
|---|---|
| Configuration/Lookup | Code, Description, Active, Sort Order |
| Log/Audit | Date, User, Action, Before/After Values |
| Junction/Link | Record A Reference, Record B Reference, Relationship Type |
| Workflow Data | Status, Assigned To, Due Date, Approval Notes |
| Master Data | Name, Category, Effective Dates, Is Active |
System Record Fields
| Record Type | Common Custom Fields |
|---|---|
| Message | Category, Priority, Auto-Response Flag |
| Note | Note Type, Related Project, Visibility Level |
| File | Document Type, Review Date, Owner |
| Folder | Access 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
| Element | Convention | Example |
|---|---|---|
| Record ID | customrecord_[prefix]_[name] | customrecord_qc_check |
| Field ID | custrecord_[prefix]_[field] | custrecord_qc_result |
| Prefix | 2-4 character code | qc, veh, hr |
Design Checklist
| Consideration | Recommendation |
|---|---|
| Record Type | Choose record vs. list appropriately |
| Fields | Only essential fields (avoid bloat) |
| Relationships | Use List/Record for lookups |
| Permissions | Set role-based access |
| Forms | Create default entry form |
| Searches | Build standard saved searches |
| Scripts | Enable scripting if needed |