BOM Revision API
Manage BOM version control and revisions for engineering change management. BOM revisions track changes to bills of materials over time, enabling historical tracking and effective date management.
Endpoints
| Method | Endpoint | Description |
|---|---|---|
| GET | /record/v1/bomRevision | Retrieve list of BOM revisions |
| GET | /record/v1/bomRevision/{id} | Retrieve specific BOM revision |
| POST | /record/v1/bomRevision | Create new BOM revision |
| PATCH | /record/v1/bomRevision/{id} | Update existing BOM revision |
| DELETE | /record/v1/bomRevision/{id} | Delete BOM revision |
Key Fields
Header Fields
| Field | Type | Description | Required |
|---|---|---|---|
| name | String | Revision name/identifier (e.g., "Rev A", "2.0") | Yes |
| billOfMaterials | Object | Reference to the parent BOM | Yes |
| effectiveStartDate | Date | Date when revision becomes effective | No |
| effectiveEndDate | Date | Date when revision becomes obsolete | No |
| memo | String | Description of changes in this revision | No |
| isInactive | Boolean | Whether revision is inactive | No |
| customForm | Object | Custom form reference | No |
| createdDate | DateTime | Date revision was created | Read-only |
| lastModifiedDate | DateTime | Date revision was last modified | Read-only |
Sublist: Component (component)
| Field | Type | Description | Required |
|---|---|---|---|
| item | Object | Component item reference | Yes |
| quantity | Number | Quantity required per assembly | Yes |
| bomQuantity | Number | Quantity for BOM calculations | No |
| units | Object | Unit of measure | No |
| componentYield | Number | Expected yield percentage | No |
| effectiveDate | Date | Component effective date | No |
| obsoleteDate | Date | Component obsolete date | No |
| description | String | Component description or notes | No |
Example: Create BOM Revision
Request
POST /record/v1/bomRevision
Content-Type: application/json
{
"name": "REV-2.0",
"billOfMaterials": {
"id": "100"
},
"effectiveStartDate": "2026-01-01",
"memo": "Updated component specifications - Engineering Change Order ECO-2025-042",
"component": {
"items": [
{
"item": {
"id": "789"
},
"quantity": 2.5,
"bomQuantity": 2.5,
"componentYield": 98,
"description": "Upgraded component - higher capacity"
},
{
"item": {
"id": "790"
},
"quantity": 1,
"bomQuantity": 1,
"componentYield": 100,
"description": "Standard component - unchanged"
},
{
"item": {
"id": "793"
},
"quantity": 2,
"bomQuantity": 2,
"componentYield": 100,
"description": "New component - replaces item 791"
}
]
}
}
Response
{
"id": "201",
"name": "REV-2.0",
"billOfMaterials": {
"id": "100",
"refName": "Widget-BOM-v1"
},
"effectiveStartDate": "2026-01-01",
"memo": "Updated component specifications - Engineering Change Order ECO-2025-042",
"isInactive": false,
"createdDate": "2025-12-25T10:00:00Z",
"lastModifiedDate": "2025-12-25T10:00:00Z",
"component": {
"items": [
{
"item": {
"id": "789",
"refName": "Component Part A"
},
"quantity": 2.5,
"bomQuantity": 2.5,
"componentYield": 98,
"units": {
"id": "1",
"refName": "Each"
},
"description": "Upgraded component - higher capacity"
},
{
"item": {
"id": "790",
"refName": "Component Part B"
},
"quantity": 1,
"bomQuantity": 1,
"componentYield": 100,
"units": {
"id": "1",
"refName": "Each"
},
"description": "Standard component - unchanged"
},
{
"item": {
"id": "793",
"refName": "Component Part C-New"
},
"quantity": 2,
"bomQuantity": 2,
"componentYield": 100,
"units": {
"id": "1",
"refName": "Each"
},
"description": "New component - replaces item 791"
}
]
},
"links": [
{
"rel": "self",
"href": "https://your-account.suitetalk.api.netsuite.com/services/rest/record/v1/bomRevision/201"
}
]
}
Example: Create Revision with Effectivity Range
Request
POST /record/v1/bomRevision
Content-Type: application/json
{
"name": "REV-1.5-TEMP",
"billOfMaterials": {
"id": "100"
},
"effectiveStartDate": "2025-06-01",
"effectiveEndDate": "2025-12-31",
"memo": "Temporary revision during component shortage - use alternate supplier",
"component": {
"items": [
{
"item": {
"id": "789"
},
"quantity": 2,
"componentYield": 95,
"description": "Alternate supplier - lower yield"
},
{
"item": {
"id": "790"
},
"quantity": 1,
"componentYield": 100
}
]
}
}
Response
{
"id": "202",
"name": "REV-1.5-TEMP",
"billOfMaterials": {
"id": "100",
"refName": "Widget-BOM-v1"
},
"effectiveStartDate": "2025-06-01",
"effectiveEndDate": "2025-12-31",
"memo": "Temporary revision during component shortage - use alternate supplier",
"component": {
"items": [
{
"item": {
"id": "789",
"refName": "Component Part A"
},
"quantity": 2,
"componentYield": 95,
"description": "Alternate supplier - lower yield"
},
{
"item": {
"id": "790",
"refName": "Component Part B"
},
"quantity": 1,
"componentYield": 100
}
]
},
"links": [
{
"rel": "self",
"href": "https://your-account.suitetalk.api.netsuite.com/services/rest/record/v1/bomRevision/202"
}
]
}
Example: Update BOM Revision
Request
PATCH /record/v1/bomRevision/201
Content-Type: application/json
{
"memo": "Updated component specifications - ECO-2025-042 (Corrected yield values)",
"component": {
"items": [
{
"item": {
"id": "789"
},
"quantity": 2.5,
"bomQuantity": 2.5,
"componentYield": 97,
"description": "Upgraded component - adjusted yield after testing"
},
{
"item": {
"id": "790"
},
"quantity": 1,
"bomQuantity": 1,
"componentYield": 100
},
{
"item": {
"id": "793"
},
"quantity": 2,
"bomQuantity": 2,
"componentYield": 99,
"description": "New component - yield updated after production trials"
}
]
}
}
Response
{
"id": "201",
"memo": "Updated component specifications - ECO-2025-042 (Corrected yield values)",
"lastModifiedDate": "2025-12-25T14:00:00Z",
"component": {
"items": [
{
"item": {
"id": "789",
"refName": "Component Part A"
},
"quantity": 2.5,
"componentYield": 97,
"description": "Upgraded component - adjusted yield after testing"
},
{
"item": {
"id": "790",
"refName": "Component Part B"
},
"quantity": 1,
"componentYield": 100
},
{
"item": {
"id": "793",
"refName": "Component Part C-New"
},
"quantity": 2,
"componentYield": 99,
"description": "New component - yield updated after production trials"
}
]
},
"links": [
{
"rel": "self",
"href": "https://your-account.suitetalk.api.netsuite.com/services/rest/record/v1/bomRevision/201"
}
]
}
Sublists and Components
Component Items (component)
The component sublist defines the components for this specific BOM revision.
Fields:
item: Reference to the component itemquantity: Quantity required per assembly unitbomQuantity: Quantity for BOM calculationscomponentYield: Expected yield percentageeffectiveDate: When this component becomes effective within the revisionobsoleteDate: When this component becomes obsolete within the revisiondescription: Notes about the component or changes
Example:
"component": {
"items": [
{
"item": {"id": "789"},
"quantity": 2.5,
"componentYield": 98,
"description": "Upgraded to higher capacity"
}
]
}
Query Filters
Filter by Revision Name
GET /record/v1/bomRevision?q=name LIKE 'REV%'
Filter by Parent BOM
GET /record/v1/bomRevision?q=billOfMaterials EQUAL 100
Filter by Effective Date
GET /record/v1/bomRevision?q=effectiveStartDate EQUAL '2026-01-01'
Filter Active Revisions
GET /record/v1/bomRevision?q=isInactive EQUAL false
Filter by Date Range
GET /record/v1/bomRevision?q=effectiveStartDate BETWEEN '2025-01-01' AND '2025-12-31'
Expand Related Records
GET /record/v1/bomRevision/201?expandSubResources=true
BOM Revision Concepts
Why Use BOM Revisions?
BOM revisions provide:
- Version Control: Track changes to BOMs over time
- Engineering Changes: Document ECO (Engineering Change Orders)
- Date Effectivity: Automatically use correct BOM based on date
- Historical Record: Maintain complete change history
- Compliance: Meet regulatory requirements for traceability
Revision Lifecycle
- Create: New revision created for upcoming changes
- Review: Engineering review and approval
- Activate: Set effective start date
- Production: Used for manufacturing
- Supersede: Replaced by newer revision
- Archive: Marked inactive but retained for history
Important Notes
-
Parent BOM Relationship:
- Each revision must reference a parent BOM
- Multiple revisions can exist for one BOM
- Only one revision is typically active at a time
-
Effective Date Management:
effectiveStartDate: When revision becomes activeeffectiveEndDate: When revision is superseded- System automatically selects correct revision based on transaction date
- Overlapping dates are typically not allowed
-
Component Changes:
- Revisions can add, remove, or modify components
- Component quantities and yields can be adjusted
- Complete component list must be provided (not just changes)
-
Naming Conventions:
- Use clear, sequential naming (Rev A, Rev B, Rev 1.0, Rev 2.0)
- Include version numbers or dates
- Consider company standards for engineering documents
-
Memo Field Usage:
- Document reason for revision
- Reference Engineering Change Orders (ECO)
- Note key component changes
- Include approval information
-
Work Order Integration:
- Work orders can specify which BOM revision to use
- Default to current effective revision
- Historical work orders maintain their original revision
-
Assembly Build Integration:
- Assembly builds use the revision effective on transaction date
- Can manually select specific revision if needed
- Ensures consistency in manufacturing
-
Inactive Revisions:
- Inactive revisions cannot be selected for new work orders
- Existing work orders using inactive revision continue
- Use for canceled or abandoned revisions
-
Date Gaps:
- Gaps between revision dates are allowed
- System may fall back to base BOM if no revision is effective
- Consider continuous effective date coverage
-
Component Effectivity within Revision:
- Individual components can have effective/obsolete dates
- Allows phased component changes within a revision
- Useful for running changes
-
Multi-Subsidiary:
- Revisions inherit subsidiary from parent BOM
- Different subsidiaries can have different revision strategies
- Useful for regional manufacturing variations
-
Costing Impact:
- Each revision can have different component costs
- Cost rollups based on revision effective date
- Standard costing may update with new revisions
-
Engineering Change Orders (ECO):
- Link revisions to ECO numbers in memo
- Provides audit trail for changes
- Supports compliance requirements
-
Revision Approval:
- Use custom fields for approval workflows
- Track who approved and when
- Maintain approval documentation
-
Component Traceability:
- Revisions maintain full component history
- Critical for regulated industries
- Supports product recalls and quality investigations
-
Custom Forms: Custom revision forms may include fields for ECO numbers, approvers, test results, etc.
-
Permissions: Requires "BOM Revision" permission with appropriate access level.
-
Best Practices:
- Create new revision for all engineering changes
- Document all changes in memo field
- Use effective dates to control implementation
- Archive superseded revisions (don't delete)
- Maintain continuous revision history
-
Reporting:
- Revision history reports show all changes over time
- Component where-used can filter by revision
- Effective revision reports for specific dates
-
Integration:
- PLM systems may create/update revisions via API
- ECO systems can trigger revision creation
- Quality systems may reference specific revisions
-
Compliance:
- ISO 9001 requires change control documentation
- FDA regulations require BOM traceability
- Aerospace/Defense standards mandate revision control
-
Migration Strategy:
- When implementing, create initial revision for current BOM
- Backfill historical revisions if needed for compliance
- Plan effective dates for smooth transitions