Skip to main content

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

MethodEndpointDescription
GET/record/v1/bomRevisionRetrieve list of BOM revisions
GET/record/v1/bomRevision/{id}Retrieve specific BOM revision
POST/record/v1/bomRevisionCreate new BOM revision
PATCH/record/v1/bomRevision/{id}Update existing BOM revision
DELETE/record/v1/bomRevision/{id}Delete BOM revision

Key Fields

Header Fields

FieldTypeDescriptionRequired
nameStringRevision name/identifier (e.g., "Rev A", "2.0")Yes
billOfMaterialsObjectReference to the parent BOMYes
effectiveStartDateDateDate when revision becomes effectiveNo
effectiveEndDateDateDate when revision becomes obsoleteNo
memoStringDescription of changes in this revisionNo
isInactiveBooleanWhether revision is inactiveNo
customFormObjectCustom form referenceNo
createdDateDateTimeDate revision was createdRead-only
lastModifiedDateDateTimeDate revision was last modifiedRead-only

Sublist: Component (component)

FieldTypeDescriptionRequired
itemObjectComponent item referenceYes
quantityNumberQuantity required per assemblyYes
bomQuantityNumberQuantity for BOM calculationsNo
unitsObjectUnit of measureNo
componentYieldNumberExpected yield percentageNo
effectiveDateDateComponent effective dateNo
obsoleteDateDateComponent obsolete dateNo
descriptionStringComponent description or notesNo

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 item
  • quantity: Quantity required per assembly unit
  • bomQuantity: Quantity for BOM calculations
  • componentYield: Expected yield percentage
  • effectiveDate: When this component becomes effective within the revision
  • obsoleteDate: When this component becomes obsolete within the revision
  • description: 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'
GET /record/v1/bomRevision/201?expandSubResources=true

BOM Revision Concepts

Why Use BOM Revisions?

BOM revisions provide:

  1. Version Control: Track changes to BOMs over time
  2. Engineering Changes: Document ECO (Engineering Change Orders)
  3. Date Effectivity: Automatically use correct BOM based on date
  4. Historical Record: Maintain complete change history
  5. Compliance: Meet regulatory requirements for traceability

Revision Lifecycle

  1. Create: New revision created for upcoming changes
  2. Review: Engineering review and approval
  3. Activate: Set effective start date
  4. Production: Used for manufacturing
  5. Supersede: Replaced by newer revision
  6. Archive: Marked inactive but retained for history

Important Notes

  1. 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
  2. Effective Date Management:

    • effectiveStartDate: When revision becomes active
    • effectiveEndDate: When revision is superseded
    • System automatically selects correct revision based on transaction date
    • Overlapping dates are typically not allowed
  3. 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)
  4. 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
  5. Memo Field Usage:

    • Document reason for revision
    • Reference Engineering Change Orders (ECO)
    • Note key component changes
    • Include approval information
  6. Work Order Integration:

    • Work orders can specify which BOM revision to use
    • Default to current effective revision
    • Historical work orders maintain their original revision
  7. Assembly Build Integration:

    • Assembly builds use the revision effective on transaction date
    • Can manually select specific revision if needed
    • Ensures consistency in manufacturing
  8. Inactive Revisions:

    • Inactive revisions cannot be selected for new work orders
    • Existing work orders using inactive revision continue
    • Use for canceled or abandoned revisions
  9. 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
  10. Component Effectivity within Revision:

    • Individual components can have effective/obsolete dates
    • Allows phased component changes within a revision
    • Useful for running changes
  11. Multi-Subsidiary:

    • Revisions inherit subsidiary from parent BOM
    • Different subsidiaries can have different revision strategies
    • Useful for regional manufacturing variations
  12. Costing Impact:

    • Each revision can have different component costs
    • Cost rollups based on revision effective date
    • Standard costing may update with new revisions
  13. Engineering Change Orders (ECO):

    • Link revisions to ECO numbers in memo
    • Provides audit trail for changes
    • Supports compliance requirements
  14. Revision Approval:

    • Use custom fields for approval workflows
    • Track who approved and when
    • Maintain approval documentation
  15. Component Traceability:

    • Revisions maintain full component history
    • Critical for regulated industries
    • Supports product recalls and quality investigations
  16. Custom Forms: Custom revision forms may include fields for ECO numbers, approvers, test results, etc.

  17. Permissions: Requires "BOM Revision" permission with appropriate access level.

  18. 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
  19. Reporting:

    • Revision history reports show all changes over time
    • Component where-used can filter by revision
    • Effective revision reports for specific dates
  20. Integration:

    • PLM systems may create/update revisions via API
    • ECO systems can trigger revision creation
    • Quality systems may reference specific revisions
  21. Compliance:

    • ISO 9001 requires change control documentation
    • FDA regulations require BOM traceability
    • Aerospace/Defense standards mandate revision control
  22. Migration Strategy:

    • When implementing, create initial revision for current BOM
    • Backfill historical revisions if needed for compliance
    • Plan effective dates for smooth transitions