An RFQ line says:
Customer part 42-1187 · drive-end bearing · same as order 77104 · quantity 4
NetSuite contains three plausible items. One matches the old customer part number. One has the same description but a different internal clearance. One is the replacement your product team approved last year.
A text search can find all three. Only one may be the item the customer requested.
That is the item-matching problem. The job is not to find a similar string. The job is to establish product identity, show the evidence and take the right action when the evidence does not settle the line.
For a simple catalog, NetSuite’s native item and customer-part-number records may handle most lines. For an industrial OEM receiving spreadsheets, drawings, old part numbers, descriptions and project references, the workflow also needs technical attributes, document revisions, units, approved replacements and a review queue. AI helps retrieve and compare candidates. It should not turn uncertainty into an exact match.
Decide what “matched” means before you automate it
Use five outcomes. Do not collapse them into a confidence score.
| Outcome | What you know | What happens next |
|---|---|---|
| Exact item | The request identifies one active NetSuite item in the correct customer and subsidiary context; required attributes and unit agree | Prepare the quote line |
| Exact configuration | The request supplies enough approved choices to create or select one valid configuration | Run the configuration rules, then prepare the line |
| Approved substitute | The requested item differs from the item you propose, and an approved relationship supports the replacement | Show the difference and obtain the required internal or customer approval |
| New or engineered item | The request describes something your current item master does not represent | Open configuration or engineering work before quote release |
| Unresolved | Two or more candidates remain, or a required fact is missing | Ask a specific question or send the line to its technical owner |
The distinction protects the quote. An approved substitute may be commercially useful, but it is not an exact match. A 92% text score does not change that.
What NetSuite can match natively
NetSuite has several records that can establish identity. They do different jobs.
Internal item identity
The item record owns the NetSuite item name or number, internal ID, item type and the transaction defaults tied to that item. Oracle’s item record field reference also documents fields such as UPC, display name, vendor name or code, subsidiary and primary units.
Use the internal ID for system-to-system writes. Names and display labels can change. The internal ID gives the integration a stable NetSuite target.
The item type matters. Inventory, assembly, kit, group, service and other-charge records do not behave the same way. A search result that says “seal kit” does not tell you whether the quote should carry one stock item, a kit, a configured assembly or a service line.
Customer part numbers
NetSuite’s Customer Part Number feature creates a customer-specific cross-reference on inventory and assembly items. Oracle says users can enter the customer’s part number on a sales order or invoice and let NetSuite populate the matching item.
This is the strongest native path when a customer sends its own stable code. It also has precise constraints:
- The feature comes through the Supply Chain Management SuiteApp.
- It supports inventory and assembly items.
- The customer-part-number and customer combination must be unique within a subsidiary.
- The item and customer must share the applicable subsidiary.
- An item record can hold up to 2,000 customer part numbers.
- Inactive customers, items and customer part numbers cannot be used.
- Changing the customer on a transaction does not automatically rematch existing lines.
Oracle documents these rules in Adding Customer Part Numbers to Item Records, Customer Part Numbers on Transactions and the feature overview.
A customer part number is a maintained relationship. It is not fuzzy search. If customer A calls an item 42-1187, that does not give customer B the same cross-reference.
Manufacturer, vendor and trade identifiers
An RFQ may contain a manufacturer part number, a vendor code or a GTIN/UPC instead of your item number. Store each identifier with its issuer and type. The string alone is not enough.
NetSuite item records include a UPC field and a vendor name or code. Oracle says the UPC can support transaction entry, search and reporting. A vendor name or code identifies the item on purchase forms. These fields help retrieval, but the workflow still needs to know whether the incoming value is a customer code, a manufacturer’s designation, a vendor catalog number or a barcode.
GS1 defines a GTIN as an identifier for a trade item that companies price, order or invoice. Its GTIN Management Standard also treats declared functionality, net content, dimensions, certification and pack quantity as changes that can affect product identity. That is why a barcode, pack and unit must travel together in the matching record.
Matrix children and configured products
A parent product family is not always a sellable line. NetSuite matrix items use subitems to represent option combinations. Oracle’s item types guide states that each matrix subitem tracks a specific set of options.
Likewise, NetSuite CPQ may place a base item, additional items or a newly created configured item on the transaction. If the request specifies voltage, material, size or another controlled option, matching the family name can stop one level too early. Send the line through the product-configuration path and resolve the transaction item after the approved choices are known.
Substitute items
NetSuite Item Substitution is separate from customer-part-number matching. Oracle lets companies assign substitute items to assembly and inventory item records and select a substitute on a sales order. The relationship is directional: adding item B as a substitute for item A does not make A a substitute for B. The original item remains visible on the sales order.
Oracle’s setup guide and sales-order instructions focus on stock availability during order entry. That is useful after identity is known. It does not prove technical interchangeability for a quoted application.
Build a matching record for every RFQ line
Do not write directly from extracted text into a quote line. Create a matching record that preserves the request and the decision.
| Field | Why it matters | Example |
|---|---|---|
| Customer and subsidiary | Scopes customer part numbers, commercial data and item availability | Northfield Europe · NL subsidiary |
| Source file and location | Lets the reviewer return to the exact evidence | RFQ_2048.xlsx · Sheet 2 · row 17 |
| Raw requested identifier | Preserves punctuation, case and suffixes | 6312/C3-V1 |
| Identifier type and issuer | Separates customer, manufacturer, vendor and internal codes | Manufacturer part number · supplier named in RFQ |
| Raw description | Preserves the customer’s words | Drive-end bearing, insulated |
| Quantity and requested unit | Prevents pack and conversion errors | 4 EA |
| Drawing or specification revision | Ties the line to the current technical baseline | Drawing B-204 · Rev G |
| Required attributes | Captures facts that distinguish candidates | Clearance C3 · insulated outer ring |
| Candidate NetSuite internal IDs | Gives the reviewer exact records | 1842, 6190, 9104 |
| Evidence for each candidate | Explains why it entered the set | Customer cross-reference, prior order, manufacturer code |
| Proposed outcome | Separates exact, substitute, configured, new and unresolved | Approved substitute |
| Reviewer and decision | Records who accepted the outcome and why | Product engineering · replacement bulletin RB-19 |
The raw values matter. You can create a normalized search key, but do not replace the source with it.
Use a matching hierarchy, not one blended score
Search broadly. Confirm narrowly.
1. Fix the business context first
Identify the legal customer, customer account and subsidiary before searching customer-specific records. If the request came from a distributor, decide whether the number belongs to the distributor, the end customer or a manufacturer.
Also establish the transaction context. A part used for service may differ from the item used to sell a new assembly. A procurement code may not be the sales item that belongs on the estimate.
2. Parse identifiers without destroying them
Extract the complete token and preserve it. Create separate search variants for differences that do not change identity in your domain, such as spaces or a known punctuation convention.
Do not apply a universal rule that strips punctuation and suffixes. In industrial designations, the suffix may encode the feature that decides fit. SKF’s bearing designation system uses code segments for material, clearance, seals, lubricant, surface treatment and oversize. Two strings can share the same base designation and describe different products.
Use the normalized value to retrieve candidates. Compare the complete designation before approval.
3. Check deterministic identifiers
Query in this order when the data exists:
- NetSuite internal item ID or exact item name supplied through a controlled channel
- customer part number for the identified customer and subsidiary
- manufacturer part number paired with manufacturer
- GTIN/UPC or another governed trade identifier
- approved legacy-to-current item cross-reference
- exact configuration identity
These paths can produce an exact candidate. They still need status, unit and technical checks.
4. Use history to retrieve candidates
“Same as last time” is useful, but it needs a reference. Search customer purchase orders, your sales orders, invoices, installed assets and prior quotes for the supplied project, order or line reference.
History proves what the company supplied. It does not prove that the current request has the same revision or that the old item remains active. Compare the current request with the old source before you reuse the item.
5. Use descriptions to find, never to certify
Free text helps when identifiers fail. Search item descriptions, aliases, product-family terms and approved technical attributes. Rank the candidates so the rep does not inspect thousands of records.
Then stop. Description similarity is candidate retrieval. Technical identity comes from the fields that distinguish the product.
For each product family, define those fields. A bearing may require bore, outside diameter, width, clearance, seal, cage and insulation. A motor may require power, voltage, frequency, frame, enclosure, mounting and hazardous-area certification. A valve may require size, pressure class, material, trim, end connection and actuation.
The same generic checklist should not govern all three.
6. Check revision and configuration
If the request points to a drawing, specification or customer configuration, compare its revision with the record that supported the candidate. A customer part number can stay constant while the controlled technical definition changes.
NIST’s Digital Thread for Manufacturing work explains why product data must remain connected across design and manufacturing systems: an incorrect or changed definition can produce a functionally different part. NetSuite may own the commercial item. PLM, PDM or an engineering record may own the technical definition that decides equivalence.
7. Check unit and packaging
Compare the requested unit, item sale unit, base unit and pack quantity. Four each, four boxes and four hundred feet can all appear as quantity 4.
Use the maintained conversion from NetSuite and make the commercial unit visible to the reviewer. Our NetSuite units-of-measure guide covers the transaction rules in detail.
8. Check status and scope
Confirm that the item is active, available to the transaction subsidiary and allowed for the relevant customer or channel. An inactive item can still be the historical identity. It cannot silently become the current quote line.
If the item is obsolete, look for an approved successor or substitute. Classify the result as a replacement, not an exact match.
9. Assign the outcome
Return one of the five outcomes at the start of this guide. Include the evidence and the specific unresolved fact.
Bad result:
84% match · please review
Useful result:
Two active candidates share customer part
42-1187. Item 1842 matches the prior order. Item 6190 matches the current drawing’s insulation requirement. Confirm whether drawing B-204 Rev G replaces the old order specification.
The second result tells the reviewer what changed and what answer will settle the line.
Work through a six-line industrial RFQ
Assume a customer sends six lines in a spreadsheet and attaches one revised drawing.
| RFQ line | Evidence found | Correct outcome | Reason |
|---|---|---|---|
NF-1004, qty 2 EA | Unique active customer part number for this customer and subsidiary; unit agrees | Exact item | The maintained cross-reference resolves to one item |
6312/C3, qty 4 EA | Exact manufacturer designation; two internal items share a shortened sales description | Exact item after attribute check | The complete designation and required attributes identify one item |
| “seal kit for compressor 750-1108” | Installed serial number resolves to an as-built configuration and current service kit | Exact item | Installed-base evidence identifies the compatible kit |
Obsolete internal code P-410 | Approved successor P-410B; changed connector called out in replacement bulletin | Approved substitute | The successor differs and the customer must see the change |
| “motor, 460 V, severe duty” | Three candidates remain because frame and hazardous-area class are missing | Unresolved | The workflow must ask for the two facts that distinguish the candidates |
| “custom skid per drawing D-92 Rev F” | No released item represents Rev F | New or engineered item | Engineering or configuration must define the sellable result |
This table is also a useful acceptance test. A matching system that forces every line into an existing item will fail the last three cases.
What can go wrong in NetSuite
The customer changes after the lines are entered
Oracle warns that changing the customer on a transaction does not automatically update lines that carry customer part numbers. If your process duplicates quotes or changes bill-to accounts, retest every customer-scoped line.
A CSV import overwrites the wrong item
Oracle’s transaction import guide says an invalid customer part number can fail the transaction import. It also warns that an incorrect item and customer-part-number combination can overwrite line details during an update.
Prepare the import only after identity review. Validate the customer part number, associated item and transaction-line internal ID together.
One internal item carries too many meanings
If teams reuse one generic item for products with different form, fit, function, certification or pack, the matcher cannot recover the missing identity. Fix the item master or use configuration records. A better search model cannot repair an ambiguous commercial record.
The most common result wins
Frequency helps rank candidates. It should not decide a safety, fit or contractual difference. The current source package outranks the most common historic selection.
Stock availability changes the match
Availability can influence the commercial offer after identity is clear. It should not turn an in-stock alternative into the requested product. NetSuite’s substitution feature makes the original and replacement visible for this reason.
The quote shows your item number only
Industrial buyers often need their reference on the proposal, acknowledgement, packing document or invoice. NetSuite supports printing customer part numbers through advanced PDF/HTML templates. Preserve both identities so the customer can reconcile the transaction.
What Bourne adds to NetSuite item matching
NetSuite can own the item, customer cross-reference, transaction and commercial defaults. Bourne handles the work required to reach a safe transaction line when the incoming request is not clean ERP data.
Bourne can:
- read line items from email, spreadsheets, PDFs and portal exports
- retain every raw identifier and source location
- identify the customer, site, installed asset and prior order
- query NetSuite by item, customer part number, manufacturer code and governed fields
- retrieve candidates from descriptions and historical work
- compare the family-specific technical attributes
- show current drawing or specification evidence beside the ERP candidate
- separate exact items, configurations, substitutes, new items and unresolved lines
- draft the question that would settle an unresolved match
- prepare the NetSuite estimate or sales-order data after approval
- write an approved customer cross-reference back under the right scope
The reviewer should see the customer line and the candidate together. They should not have to search NetSuite, an old quote, a drawing folder and a product bulletin to understand why the system proposed an item.
The final write must use the approved NetSuite internal ID. Store the decision record beside the quote so a later order review can distinguish “the customer requested this” from “we proposed this approved replacement.”
Decide what AI may approve
Start with rules that reflect evidence, not a single confidence threshold.
| Condition | Suggested action |
|---|---|
| Unique customer part number, correct customer/subsidiary, active item, matching unit, no conflicting revision or attribute | Prepare the line for normal quote review |
| Unique governed manufacturer code, issuer confirmed, active item, required attributes and unit agree | Prepare the line for normal quote review |
| Exact prior-order reference and unchanged current specification | Prepare the line and show the prior transaction |
| Description-only match | Show ranked candidates; require identity review |
| Approved substitute or successor | Require the defined product or customer approval |
| Configurable family | Run configuration; do not select the family parent as the final item |
| Two candidates differ on a required attribute | Keep unresolved and ask for that attribute |
| No candidate | Open new-item, configuration or engineering work |
Some companies may allow straight-through quote preparation for the first row after a proven pilot. That means the system prepares the line. It does not mean the company should hide the evidence or remove the quote’s normal approval controls.
Implement the workflow in six stages
1. Audit real RFQs and item records
Take 100 to 300 recent RFQ lines across product families, customers and subsidiaries. Record how the team resolved each line and which sources they used.
Measure the starting condition:
- share resolved by internal item number
- share resolved by customer part number
- share resolved by manufacturer or trade identifier
- share resolved through prior orders or installed assets
- share that required technical attributes
- share that produced a substitute, configuration or new item
- share left unresolved on the first pass
This tells you whether to invest first in customer cross-references, item-master repair, installed-base links or document extraction.
2. Repair deterministic mappings
Load confirmed customer part numbers into the NetSuite feature where it fits. Oracle supports direct entry, CSV import, scheduled scripts and web services. Respect the customer, subsidiary and item-type restrictions.
Do not import every historic description as a customer part number. A cross-reference should represent a maintained identity relationship.
3. Define attributes by product family
Ask product engineering which fields separate valid candidates. Use field names and values from the systems that own the definition. Make required attributes explicit.
Build the rule as a small table:
| Product family | Identity fields | Required comparison fields | Owner |
|---|---|---|---|
| Bearings | Manufacturer + full designation | Dimensions, clearance, seal, cage, insulation | Product engineering |
| Motors | Manufacturer + model | Power, voltage, frequency, frame, enclosure, mounting, area rating | Electrical engineering |
| Service kits | OEM kit ID or approved cross-reference | Installed model, serial range, revision, service interval | Aftermarket engineering |
| Configured assemblies | Configuration ID | Released option set and revision | Product configuration team |
This is more reliable than asking an AI model to decide which words look important on each line.
4. Separate retrieval from acceptance
Let retrieval be generous. Search normalized codes, descriptions, aliases, prior work and embeddings. Return enough candidates to avoid false negatives.
Make acceptance strict. Apply customer scope, identifier authority, technical attributes, unit, revision, status and substitution rules. Record which check removed each losing candidate.
5. Design the review around exceptions
The review screen needs:
- the original line and source file
- extracted identifier, description, quantity and unit
- top candidates with internal IDs and status
- attributes that agree and differ
- customer and manufacturer cross-references
- prior transactions or installed assets used as evidence
- the proposed outcome
- one clear reviewer action
Do not give the rep a search box and call that automation. The system should prepare the decision.
6. Test with known hard cases
Build a fixed test set before release.
| Test | Expected behavior |
|---|---|
| Same customer code under two subsidiaries | Use the transaction subsidiary; do not cross the boundary |
| Customer code belongs to another customer | Reject the cross-reference |
| Code differs only by meaningful suffix | Preserve both candidates until the suffix is resolved |
| Same item, different pack | Show the unit and conversion before line creation |
| Inactive exact item with approved successor | Return an approved substitute, not an exact item |
| Parent matrix item with one requested option set | Resolve the child or configuration |
| Prior order conflicts with current drawing | Follow the current controlled requirement and open a review |
| Description produces one high-scoring candidate but a required attribute differs | Reject automatic acceptance |
| Customer changes after draft line creation | Revalidate every customer-scoped mapping |
| CSV update contains mismatched item and customer part number | Block the write |
Run these tests against the complete path: extraction, retrieval, review, NetSuite write and printed quote.
Measure whether matching improved
Track rates and use volumes as context.
- exact-match rate by evidence type
- first-pass unresolved rate
- reviewer acceptance rate for each automated path
- wrong-item corrections before quote release
- wrong-item corrections after customer submission
- substitute rate and substitute-approval time
- unit or pack corrections
- new cross-references approved and reused
- median time from RFQ receipt to matched quote lines
Break the metrics down by product family and customer. A global 95% match rate can hide a weak technical family or a customer whose data needs repair.
The most important metric is not how many lines received an item ID. It is how often the workflow produced the right commercial identity without hiding an exception.
Frequently asked questions
Can NetSuite match a customer’s part number to our item?
Yes. The Customer Part Number feature can associate customer codes with inventory and assembly items and use those codes on sales orders and invoices. The feature requires the Supply Chain Management SuiteApp, role and form setup, and valid customer, item and subsidiary scope.
Can we match RFQs from descriptions alone?
Use descriptions to retrieve candidates. Do not confirm an item from description similarity unless your product owner has defined that description as a governed unique identifier. Compare the identifiers, family-specific attributes, revision and unit that establish identity.
Should AI automatically add customer part numbers to NetSuite?
Only after a controlled approval. A confirmed, reusable customer-to-item relationship can become a cross-reference. A one-off substitute, project-specific choice or manual correction should remain scoped to that decision.
What if the requested item is obsolete?
Return the obsolete item as the requested identity and show the approved successor separately. Compare the technical and commercial differences, follow the required approval path and make the replacement visible to the customer.
What if the customer sends a manufacturer part number?
Pair the number with the manufacturer, then query the maintained manufacturer or vendor cross-reference. Preserve the full designation, including suffixes. Check whether the resulting NetSuite item represents the same unit, pack and technical variant.
Does a prior order prove the match?
It proves what you supplied on that order. Confirm that the current request refers to the same product definition and revision. Retrieve current price, availability and terms separately.
Can Bourne write the matched lines into NetSuite?
Yes. Bourne can prepare or create the transaction through the available NetSuite integration after the workflow resolves item identity and completes the required review. We map the write to your item records, units, forms, subsidiaries and approval rules.
Where should product equivalence live?
NetSuite can store commercial item and substitution relationships. Engineering or product systems should own technical equivalence when it depends on form, fit, function, certification or controlled revisions. Bourne can bring both records into the quoting decision without pretending they are the same record.
Further reading
SKF: bearing basics
Bearing internal clearance, seals and designation suffixes. PDF.
Bourne for manufacturing
See what Bourne could do for your quoting team.
Bring a customer request and the steps your team takes to quote it. We’ll discuss the application, integrations and approvals you need.