Integration guideOrganisation library

NetSuite

Bring NetSuite BOM revisions, order headers and vendors into batch and supplier work in Seal.

Illustration of a seal beside a benchtop bioreactor and a laptop displaying culture trends.

1Connect the NetSuite revision, its component lines and the batch.

Start with one assembly, its selected BOM revision and one component. Seal’s NetSuite connector reads the revision, and Seal keeps that definition beside the material use recorded in the batch, so a review can explain both what was required and what happened. Reads make no changes in NetSuite. The only supported write is a new inactive BOM revision through the separately enabled BOM API.

2Choose the source route.

Read the selected revision

Oracle exposes the REST record type bomRevision when Advanced Bill of Materials is enabled. A revision can be retrieved at /services/rest/record/v1/bomRevision/{id}.⁠¹

In Seal: Select the revision by its numeric internal ID. The capture includes the parent BOM, revision name, inactive state, effective dates when returned and expanded component item IDs, quantities and unit IDs. Keep that capture with the receiving batch.

Establish the quantity and effective context

The revision carries components and BOM quantities. Oracle documents component units and allows gaps between revision dates, while disallowing overlap.⁠²

In Seal: Resolve the actual selected revision for the batch date and applicable manufacturing context. A missing applicable revision is a selection problem; do not substitute whichever record was most recently retrieved.

Propose a new inactive revision, if needed

NetSuite manages changes to a bill of materials as new revisions with their own effective dates.⁠²

In Seal: With ERP BOM transfers enabled and an explicit writer grant, a Script can preview and submit a new inactive revision under the selected BOM. It does not activate or overwrite revisions, update orders, move inventory or record consumption.

3Retrieve one complete BOM revision before setting up the exchange.

Use a sandbox BOM that the manufacturing owner can also open in NetSuite. Connect it through Seal’s guided NetSuite connector; reads make no changes in NetSuite. The first useful result is a captured revision whose components and quantity basis agree with the source. Then connect it to one Seal batch and test how the receiving record behaves when the definition changes.

Download the first-run procedure and receiving checks

  1. Identify the account, record and manufacturing basis

    Record the sandbox account, selected BOM ID, revision ID, assembly, planned finished quantity and unit. Open the revision at Lists → Supply Chain → Bills of Materials. Confirm Advanced Bill of Materials is enabled. Separately check REST Web Services under Setup → Company → Enable Features → SuiteCloud.

    Check: Have the source owner show the chosen revision and its components. A displayed BOM name alone is insufficient to identify the revision your request will retrieve.³⁴

  2. Connect with the guided NetSuite connector

    In NetSuite, enable REST Web Services and OAuth 2.0 and create an integration record with the Client Credentials (Machine to Machine) grant. Give a dedicated role REST Web Services access and only the View permissions needed, including the BOM revisions, components, items and units. Register an RSA certificate under OAuth 2.0 Client Credentials (M2M) Setup, mapping the integration, entity and role. Then open Settings → Integrations → NetSuite, enter the SuiteTalk host from Company Information → Company URLs, the client ID and certificate ID, upload the private key and choose Test and connect.

    Check: The client ID, certificate, role and host all belong to the intended sandbox; sandbox mappings and certificates are configured separately from production. Do not use an administrator role. Keep the private key out of evidence files.⁴⁵⁶

  3. Select the revision and compare its components

    Choose BOM revisions and enter the revision’s numeric internal ID; a BOM name or displayed number will not match. Inspect the capture: parent BOM, revision name, inactive state, effective dates when returned and each component’s item ID, quantity and unit ID.

    Check: Match every captured component to the revision the source owner showed you. Record the number of components and the unit and scaling evidence used to interpret each quantity. Order lines, lot balances and custom fields are outside the capture, so do not infer them.¹

  4. Locate the request evidence before changing the mapping

    Open Setup → Integration → Manage Integrations, select the integration record, then Execution Log → REST Web Services. Compare the request URL, method, status and response with the receiving log. NetSuite displays the request time in its server time zone.

    Check: A missing component, a rejected request and a successful request sent to the wrong environment need different fixes. Capture the actual response and time-zone context so another engineer can reproduce the investigation.⁷

Choose the next action from the actual response

Oracle’s error body can contain several entries in o:errorDetails. Keep the machine-readable code and any supplied path with the response. The actions below are a proposed approach for this read-first evaluation.⁸

Choose the next action from the actual response
Response evidenceWhat to inspectNext action
401 / INVALID_LOGINToken, account and role; Login Audit TrailCorrect authentication before retrying the same read.
404 / NONEXISTENT_IDRecord type, internal ID and environmentVerify the selected source record. Do not turn the failure into an empty component list.
400 / INVALID_CONTENTdetail and o:errorPath, when suppliedRepair the indicated field or reference; retain the rejected request for comparison.
429 / CONCURRENCY_LIMIT_EXCEEDEDConcurrent requests sharing the accountReduce concurrency and retry with a bounded delay; do not change material identities to work around throttling.
No response after submitting a new BOM revisionThe transfer ID and its saved receiptRun the same transfer again to reconcile. A new transfer ID can create a duplicate revision.

An optional request to check the source response

Seal’s connector handles authentication, so you do not need this request to connect. Use it only to compare NetSuite’s own response with the capture: replace the placeholders with your sandbox SuiteTalk hostname, the revision and an access token issued to your API client. Revision 215 is the fictional record used below; the proposed Seal JSON further down is a receiving design, not a NetSuite request body.

GET https://<account-host>.suitetalk.api.netsuite.com/services/rest/record/v1/bomRevision/215
Authorization: Bearer <access-token>
Accept: application/json

A successful read is only the first checkpoint. Confirm that the component data was retrieved, the IDs match the intended source account and revision, and the quantity basis is known before calculating a batch requirement.

4Component line 7 refers to item 870; neither is revision 215.

Fictional projection of documented BOM revision fields for one planned finished unit. The quantity basis is supplied separately from the confirmed BOM/item configuration. The destination is a proposed Seal record design, not an API request or a captured customer response.

Source-to-record mapping
Source informationExample identity or valueWhy it stays distinct
Revision identity215, scoped to the NetSuite accountIdentifies the selected manufacturing definition; it is not the BOM identity.
BOM identity410Groups the definition’s revisions. Preserve the revision actually selected for this batch.
Component line and itemLine 7 → item 870The line identifies an entry within the revision; the item identifies the material master. Neither establishes an inventory lot.
bomQuantity and quantity basis2.50 kg per finished unit in this exampleResolve units and scaling rules before deriving batch requirements. Actual use has its own source event.

The planned 2.50 kg remains in the definition. The 2.40 kg execution event is separate evidence; the 0.10 kg variance can be reviewed without editing the source requirement. Refreshing the definition must not replace the physical-use event or its container reference.

Inspect the source and proposed destination records

Source example

{
  "revision": {
    "id": "215",
    "billOfMaterials": {
      "id": "410"
    },
    "component": {
      "items": [
        {
          "id": "7",
          "item": {
            "id": "870"
          },
          "bomQuantity": 2.5
        }
      ]
    }
  },
  "confirmedQuantityBasis": {
    "unit": "kg",
    "perFinishedUnit": 1
  }
}

Proposed Seal records

{
  "batch": "B-610",
  "definition": {
    "source": "NetSuite",
    "bom": "410",
    "revision": "215"
  },
  "component": {
    "sourceLine": "7",
    "item": "870",
    "plannedQuantity": 2.5,
    "unit": "kg",
    "basis": "per finished unit"
  },
  "actualUse": {
    "event": "USE-610-007",
    "container": "C-610-04",
    "quantity": 2.4,
    "unit": "kg"
  }
}

Download both sides of the mapping

5Run these cases against the proposed Seal mapping.

These are worked test inputs and expected outcomes to verify in your configured connection.

Scale the requirement without changing the source

Input: Use the example requirement of 2.50 kg per finished unit for a batch planning four finished units. Record 9.60 kg actual use across two separate container-use events.

Expected: The proposed Seal batch shows 10.00 kg planned, 9.60 kg used and a 0.40 kg shortfall for review. Both use events retain their containers. NetSuite’s per-unit requirement remains 2.50 kg.

Read the same revision twice

Input: Repeat the same successful read with unchanged component evidence.

Expected: The batch still has one selected definition and its existing component requirements. The second retrieval is recorded as another observation; it does not create another material-use event.

Change the source after the batch has started

Input: In the test fixture, replace the component requirement with 2.60 kg and keep the original 2.50 kg snapshot for the started batch.

Expected: The comparison identifies the changed requirement and affected component. The running batch does not silently acquire a new requirement. A reviewed decision records whether the change applies and preserves the earlier definition.

Search by the displayed number

Input: Try to select a work order by its displayed order number instead of its internal ID.

Expected: No match is returned. Selecting the numeric internal record ID finds the intended record.

What to bring to the implementation review

Bring the account and role identifiers, one complete revision capture, component and unit evidence, and the planned-versus-actual batch comparison. With those records, Seal’s implementation team can define the receiving model without guessing from a BOM name. Order updates, inventory movements and manufacturing activation are outside the NetSuite connector.

6Diagnose the failure from the source evidence.

The BOM revision record is unavailable

The account may not have Advanced Bill of Materials enabled, or the selected role/interface may not expose the record.⁠¹

Establish feature availability and the permitted REST record before designing a parser around an assumed response.

A component appears to change identity after a save

Oracle documents updates to component internal IDs in the AM BOM Operations field when a BOM revision is saved.⁠²

Reconcile a changed revision as a source change. Retain prior line mappings and verify the new component population; a line identifier should not be assumed immutable across every edit.

A new revision may have been submitted twice after a timeout

The BOM API uses the transfer ID as NetSuite’s idempotency key. Submitting the same proposal under a new ID can create a duplicate revision.⁠

Reuse the same transfer ID and run the transfer again to reconcile its outcome. Confirm that only one revision exists before preparing a replacement.

7Apply this to your records

Use this with the NetSuite BOM revision first-run procedure. Retain the actual configuration and evidence, then record what happened in each receiving exercise. Expected behaviour is printed as a prompt; your observed result starts blank.

Download the blank working review

Write your working notes here

Notes stay in this tab and are not submitted. Download them before leaving to keep a copy. Use record references to identify your evidence.

Record the sandbox account, SuiteTalk host, enabled REST and Advanced BOM features, integration record, role and certificate ID used by the guided connector. Note the successful connection test without recording the private key.

Identify the BOM, exact revision and component item IDs. Compare the captured component population with the source revision. Note effective dates and any gaps relevant to the batch.

State the assembly/output basis and each component’s unit and planned quantity. Show the scaling to the planned batch and compare separately with supported actual use. Record the request/error evidence for a missing or conflicting component.

Input: Use the example requirement of 2.50 kg per finished unit for a batch planning four finished units. Record 9.60 kg actual use across two separate container-use events. Expected: The proposed Seal batch shows 10.00 kg planned, 9.60 kg used and a 0.40 kg shortfall for review. Both use events retain their containers. NetSuite’s per-unit requirement remains 2.50 kg. Record the actual input/evidence references, observed result, whether it matches the expectation and any unresolved issue.

Input: Repeat the same successful read with unchanged component evidence. Expected: The batch still has one selected definition and its existing component requirements. The second retrieval is recorded as another observation; it does not create another material-use event. Record the actual input/evidence references, observed result, whether it matches the expectation and any unresolved issue.

Input: In the test fixture, replace the component requirement with 2.60 kg and keep the original 2.50 kg snapshot for the started batch. Expected: The comparison identifies the changed requirement and affected component. The running batch does not silently acquire a new requirement. A reviewed decision records whether the change applies and preserves the earlier definition. Record the actual input/evidence references, observed result, whether it matches the expectation and any unresolved issue.

Input: Try to select a work order by its displayed order number instead of its internal ID. Expected: No match is returned. Selecting the numeric internal record ID finds the intended record. Record the actual input/evidence references, observed result, whether it matches the expectation and any unresolved issue.

Identify the configuration/mapping revision tested, reviewer, open issues and owner for each next action. Cite the retained source and destination evidence. A filled note is not itself an accepted test; record the review decision through your actual process.

Unanswered sections remain marked ‘Not recorded’ in the download.

Evidence needed to finish

The retained revision has the expected component population, each planned quantity has an explicit unit and scaling basis, and the receiving batch points to that definition. Test outcomes identify missing records, permission problems and revision changes. The connector records no consumption in NetSuite.

8Use the connected evidence in a review.

With the selected BOM, component requirement and actual-use event linked to B-610, ask Neil to explain the 0.10 kg variance and identify the supporting source records. The review should keep the 2.50 kg requirement and the 2.40 kg observation separate.

Select an effective BOM revision for the batch →

References

  1. 1Oracle: BOM Revision REST record.
  2. 2Oracle: Creating BOM Revisions.
  3. 3Oracle: BOM revision availability and UI location.
  4. 4Oracle: REST prerequisites.
  5. 5Oracle: authentication setup.
  6. 6Oracle: account URL location.
  7. 7Oracle: REST execution log.
  8. 8Oracle: REST error codes and details.