Specifying BOM substitutions / alternatives with Contract Manufacturer (CM)

This is exactly why a BOM doesn't normally specify a manufacturer and part number directly. Instead, the BOM references in-house part numbers, and each in-house part number has an AVL (approved vendors list) associated with it. This level of indirection allows you to add (or remove, if necessary) manufacturers and their specific part numbers to the in-house number without having to update every BOM that uses that part. And it allows your purchasing department (or that of a CM) to pick the vendor that they prefer for whatever reason from that list.


You asked about a sample of AVL data. This is a function that can be provided by any good MIS (Manufacturing Information System) or ERP (Enterprise Resource Planning) software. I'm a one-man consulting shop, so I don't use a commercial system; instead, I came up with my own tools that I use to support clients.

They're based on a simple database. Here's a snippet of a dump of that database showing some relevant records:

A: Enpoint 6001-0221 - "2x10 2mm female IDC"
C: Enpoint 6001-0221 FCI 89947-720LF                    # (keyed, in tube)
C: FCI 89947-720LF Digi-Key 609-2740
C: Enpoint 6001-0221 Sullins SFH21-PPPN-D10-ID-BK-M181  # (no key, bulk)
C: Sullins SFH21-PPPN-D10-ID-BK-M181 Digi-Key S9078

An "A" record simply describes a part. The fields are:

  • Manufacturer
  • Part number
  • Revision
  • Description

In this case, the "manufacturer" is a code for my client, and the part number is my internal house part number.

A "C" record maps one part number to another. The fields are:

  • Manufacturer
  • Part number
  • Manufacturer
  • Part number

(The # and anything after it are just comments.) In this case, there are two different mappings for "Enpoint 6001-0221" — one to "FCI 89947-720LF" and one to "Sullins SFH21-PPPN-D10-ID-BK-M181". Either of these parts would be acceptable wherever I use "6001-0221" in a design.

As it happens, both of these are available from Digi-Key, so there's an additional record for each of those parts that maps it to the corresponding Digi-Key part number. This allows me to easily generate a Digi-Key order when I need to restock.

The database has additional record types. "B" records describe the BOM itself, which is usually imported from schematic capture, and "G" records capture price data, including quantity price breaks. This allows me to then generate a "costed BOM" that looks like this:

sample of costed BOM

Hmm. I now see that there are errors in this BOM. But that's OK, since this is a prototype assembly that was long ago replaced by a custom flat-flex cable.


For critical components (and obvious for unique components) I provide the manufacturer, manufacturer's part numbers and also provide Farnell/Mouser numbers (since i already used those making the prototypes) and other info, but still inform the CM the manufacturer and manufacturer's part numbers are leading.
For some components I also provide alternatives, still using manufacturer + manufacturer's part numbers.

For less relevant components, like standard decoupling caps, resistors etc, I only provide their value, tolerance being smaller than X, voltage rating being greater than X, and package size, and inform the CM that are free to pick components within these constraints.

I conclude my mail with an explicit statement that their suggestions for alternatives for any component are very welcome, but that these are only approved by a written confirmation (and updated BOM which contains that alternative as well).