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" &mdash; 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:



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.