Skip to the lesson
CivOps AI Academy · M14Product Lifecycle (PLM): Parts, Bills of Materials and Engineering Change as Controlled Records
0%

Chapter 1 · Purpose, scope and standards

Parts, revisions and the lifecycle

A product is defined by data: which parts exist, which revision of each is current, and what state each is in. This chapter says what the product lifecycle module holds, what it leaves to other tools and modules, and the one rule that makes the rest trustworthy: a released revision never changes.

25 min6 part states5 revision states3 tiers: MVP, STD, BIC

By the end of this chapter you can

  • Say what the module is the system of record for, and what it never replaces (CAD authoring).
  • Name the six lifecycle states of a part and the five states of a revision, and say which move needs a change order.
  • Tell a part from a revision, and choose a revision scheme and a make, buy or phantom setting for a real part.

What the module is for

The module is the system of record for how products are defined and changed: parts and revisions with lifecycle states, multi-level bills of materials with effectivity, CAD and specification files, formal change control from request to order to notice with where-used impact, approved manufacturers, product compliance declarations, requirements traceability and stage gates for new product introduction (NPI). It replaces the product lifecycle management (PLM), product data management (PDM) and bill-of-materials tools a business usually pays for, such as Siemens Teamcenter, PTC Windchill, Dassault 3DEXPERIENCE (ENOVIA), Arena, Propel, Autodesk Fusion Manage, Duro, OpenBOM and PDXpert; for formulated products the specification also names Siemens Opcenter RD&L and Specright. One vendor's own list of what such a tool must do is a useful comparison [1]; so are the buyer-side comparisons [2][3].

What it does not replace is the design tool. CAD authoring stays where it is. The module holds the files that CAD produces, one set per revision, and the data around them: which revision is current, which assemblies use it, who approved the last change.

What is in, and what is not

The edge of Product lifecycleInside: parts and revisions, multi-level bills of materials, effectivity, the files vault, change control and approved manufacturers with compliance. Outside, each with its owner: CAD authoring stays in the design tool, routings and execution recipes belong to M04, quality change control to M08. INSIDE PRODUCT LIFECYCLE (M14)Parts and revisionsMulti-level BOMsEffectivityFiles vaultChange controlAML and complianceOUTSIDE, WITH ITS OWNERCAD authoringnever replaced; stays your design toolRoutings, execution recipesowned by M04; uses released dataQuality change controlowned by M08; an ECO links to it
The edge of the module. Inside: parts and revisions, multi-level BOMs, effectivity, the files vault, change control and the approved manufacturer list with compliance. Outside, each with its owner: CAD authoring (never replaced), routings and execution recipes (M04, which consumes released definitions) and quality change control for processes (M08; an ECO links to it).
  • In: the part master extension with revision schemes and lifecycle states; engineering, manufacturing and service bills of materials with effectivity, substitutes and where-used; the CAD and neutral file vault and specifications; ECR, ECO and ECN with change board approvals and stock and work-in-progress disposition; approved manufacturers and compliance declarations (RoHS, REACH, Prop 65, PFAS); requirements and traceability; NPI and APQP gates; process formulas.
  • Out: CAD authoring; routings and execution recipes (M04 reads released definitions from here); quality change control for processes (M08 owns it, and a change order here carries a soft link to it).

Eleven capabilities in three tiers

Each capability carries a tier. MVP must exist for a small or mid-size business to cancel the incumbent subscription with confidence. STD is parity with mainstream tools, what a buyer expects in a demo. BIC marks best-in-class work. This course builds the MVP capabilities of part and revision control, bills of materials with where-used and a BOM compare, the file vault by fingerprint, and change management, plus effectivity, the approved manufacturer list and declarations; the cost roll-up, check-in and check-out, the mBOM derivation, compliance roll-up, NPI gates, requirements and formulation are added later the same way.

CapabilityWhat it doesTier
Part and revision controlPart numbers, revision schemes, lifecycle states, make, buy or phantom, attributes by classMVP
Multi-level BOMFind numbers, reference designators, quantities, alternates and substitutes; compare; where-used; cost roll-upMVP
Files and vaultNative CAD and neutral formats (STEP, 3MF, PDF, DXF) per revision; check-in and check-out; viewer linksMVP
Change managementECR intake, ECO with affected items, where-used impact, change board approvals with e-signatures, effectivity and disposition, ECN distributionMVP
EffectivityDate, serial and lot effectivity; use-up of old stockSTD
eBOM to mBOMDerive the manufacturing BOM (phantoms, packaging, consumables) and hand it to M04 operation materials and M12 MRPSTD
AML and AVLApproved manufacturer parts with lifecycle risk (active, NRND, EOL)STD
Product complianceDeclarations per part or manufacturer part; roll-up to assemblies; certificate evidenceSTD
NPI and APQPProjects with phase gates and deliverables (links to M20)STD
Requirements and traceabilityA requirements tree with verification method and trace links to parts, tests and documentsBIC
FormulationFormulas with ingredient percentages and scaling; the ISA-88 recipe hierarchy handing master recipes to M04BIC

The standards, and what each one is used for

StandardUsed in this module for
ISO 10303-242 (STEP AP242)Neutral 3D model and product manufacturing information exchange: the format the vault keeps next to native CAD
ASME Y14.35 and Y14.5Drawing revision practices; geometric dimensioning and tolerancing
ISO 10007:2017 and SAE EIA-649CConfiguration management: knowing what a product is at any point, and controlling changes to it
IPC-1752AMaterials declaration data exchange with suppliers
EU RoHS 2011/65/EU [4], REACH EC 1907/2006 [5], California Prop 65 [6], TSCA PFAS reportingSubstance compliance obligations behind the declarations in chapter 3
AIAG APQP (3rd edition) [7]Product quality planning phases and gates
ISA-88 (IEC 61512)The recipe hierarchy for formulated products: general, then site, then master recipe

A part and its revisions

A part is the thing: a pump assembly, a bearing, a fastener pack. A revision is one version of its definition: revision A, then revision B after a change. The module keeps them in two tables. plm_part extends a spine item (item_id points at core_item), so there is one item list for the whole business and no second part master. plm_part_revision holds each revision of a part, and the part's current_revision_id says which is current. The revision lives only in plm_part_revision, never also on the item, so there is one place to look.

On the part (plm_part)Allowed values
lifecycle_stateconcept, in_design, prototype, released, deprecated, obsolete
revision_schemealpha (A, B, C), numeric (1, 2, 3) or alpha_numeric
make_buymake, buy or phantom (an assembly that is never stocked; its parts pass straight through to its parent)
owner_idThe person (core_person) responsible for the part
Part and revision statesTwo rows of states. A part moves from concept to in_design to prototype to released to deprecated to obsolete. A revision moves from in_work to in_review to released to superseded to obsolete. An engineering change order releases a revision. PART · plm_part.lifecycle_stateconceptin_designprototypereleaseddeprecatedobsoleteREVISION · plm_part_revision.statein_workin_reviewreleasedsupersededobsoletean ECO releases itReleased is a one-way door: after it, a revision changes state only to superseded or obsolete.
Two lifecycles. A part moves from concept through in design and prototype to released, and later to deprecated and obsolete. Each of its revisions moves from in work through in review to released, then superseded when a newer revision is released, and finally obsolete. An engineering change order is what releases a revision.
On the revision (plm_part_revision)What it holds
revision_labelA, B, C or 1, 2, 3, matching the part's scheme
statein_work, in_review, released, superseded, obsolete
released_at, released_by_eco_idWhen it was released and by which change order
cost_rollupThe cost of the revision rolled up from its bill of materials

A part can be on its first revision for years, and a revision outlives a lifecycle change: a part is deprecated (do not use it in new designs) while its last released revision is still being built. Release is the moment a definition becomes something other modules may depend on: it publishes plm.part.released, and from then on manufacturing and purchasing can plan against it.

Knowledge check

Which statement about the module and CAD is right?

Knowledge check

A design needs a correction after revision A of a bearing has been released. What is the right move?

References

  1. Arena: key PLM capabilities. https://www.arenasolutions.com/what-is-plm/key-plm-capabilities/
  2. SoftwareConnect: product lifecycle management software comparison. https://softwareconnect.com/product-lifecycle-management/
  3. Rajesh Kumar: top PLM tools and evaluation criteria. https://www.rajeshkumar.xyz/blog/product-lifecycle-management-plm/
  4. EUR-Lex: Directive 2011/65/EU (RoHS), restriction of hazardous substances in electrical and electronic equipment. https://eur-lex.europa.eu/eli/dir/2011/65/oj
  5. EUR-Lex: Regulation (EC) No 1907/2006 (REACH). https://eur-lex.europa.eu/eli/reg/2006/1907/oj
  6. California OEHHA: Proposition 65. https://oehha.ca.gov/proposition-65
  7. AIAG: quality core tools (including APQP). https://www.aiag.org/expertise-areas/quality/quality-core-tools

Chapter 2 · Structure and resolution

Bills of materials, where-used and effectivity

A bill of materials (BOM) says what goes into an assembly. Read downward it explodes into every part and quantity; read upward it answers where-used. Effectivity says which revision applies on which date or for which serial number. Together they must give one answer to the question every other module asks: which revision, right now?

35 min3 BOM views5 levels in the seed1 revision per date

By the end of this chapter you can

  • Describe a BOM header and its lines, and say what find number, revision rule, alternate and substitute mean.
  • Explode a multi-level BOM by hand, multiplying quantities down each branch and passing phantoms through.
  • Answer where-used for a part, and explain why effectivity must resolve exactly one revision for any part and date or serial.

A header and its lines

A BOM is stored in two tables. plm_bom is the header: it belongs to one parent revision (parent_revision_id), has a bom_view and a status. plm_bom_line is one component of it, with the quantity and unit, the position, and the dates and serial numbers it applies to. A BOM is attached to a revision, not to a part: revision B of a pump has its own BOM, which may differ from revision A's.

FieldWhat it means
bom_viewengineering (as designed), manufacturing (as built, with phantoms, packaging and consumables) or service (what a field technician orders)
statusin_work, released or superseded. Only an in-work BOM can be edited
find_noThe position number on the drawing and the BOM, such as 10, 20, 30
child_part_id, qty, uom_idThe component, how many, and in which unit (core_uom)
revision_rulespecific pins the line to one child revision (child_revision_id is then required); latest_released follows the child's newest released revision
ref_designatorsFor electronics, the board positions the quantity covers, such as R1, R2, R3
alternate_group, plm_substituteParts that may stand in for a line: alternates in a group, substitutes with a priority and a note
effectivity_from, effectivity_to, serial_from, serial_toWhen, or for which serial numbers, the line applies

These fields are what to check in your current tool: a feature list that says 'BOM management' does not tell you whether it has a revision rule, effectivity columns and separate views. The sources the specification lists for this capability are [1][2][3].

Exploding a multi-level BOM

The course seed is a small pump, drawn here. Each box is a part; the number after the name is the quantity per one of its parent. The shaft assembly is a phantom: it is never stocked, so its components pass straight through to the parent.

A five-level bill of materialsThe seed product: a pump assembly, PLM-1000, with a motor and a housing below it, then a rotor and a cover, then a phantom shaft, fasteners and bearings, five levels deep. Quantities are shown on each line. Level 1Level 2Level 3Level 4Level 5PLM-1000PumpPLM-2000Motor ×1PLM-3000Rotor ×1PLM-4000Phantom shaft ×1PLM-5000Bearing ×2PLM-4100Fasteners ×8PLM-2100Housing ×1PLM-3100Cover ×1PLM-5000Bearing ×1PLM-4100Fasteners ×4makephantombuyQuantities multiply down each branch.
The seed product, five levels deep. PLM-1000 Pump uses one PLM-2000 Motor and one PLM-2100 Housing. The motor uses a PLM-3000 Rotor, the housing a PLM-3100 Cover. The rotor uses one PLM-4000 Shaft (a phantom) and eight PLM-4100 Fasteners; the cover uses one PLM-5000 Bearing and four fasteners; the shaft uses two bearings.

To find how many of a part one finished pump needs, multiply the quantities along each branch from the top to that part, then add the branches. The bearing PLM-5000 appears twice: through the shaft it is 1 × 1 × 1 × 2 = 2 (pump to motor to rotor to shaft to bearing), and through the cover it is 1 × 1 × 1 = 1. One pump needs 3 bearings. The fasteners PLM-4100 appear through the rotor (8) and the cover (4): 12 fasteners. Done by hand once, this is what the database function must return; done by a program only, you cannot tell whether it is right.

QuestionAnswer for one PLM-1000Working
Bearings (PLM-5000)32 through the phantom shaft, plus 1 through the cover
Fasteners (PLM-4100)128 on the rotor, plus 4 on the cover
Rows in the explosion9One per BOM line, reaching level 5 when the pump is level 1

Views: engineering to manufacturing

The engineering BOM (eBOM) is what the designer drew. The manufacturing BOM (mBOM) is how it is built: phantoms are made transparent, packaging and consumables are added, and the lines match how material is issued on the floor. The module will derive the mBOM from the eBOM and hand it on, to M04 as operation materials and to M12 as demand for planning; that derivation is added later, and in this course the manufacturing engineer enters a manufacturing BOM by hand. Deriving it, not retyping it, is the point: a retyped second BOM drifts from the first.

Where-used: reading the BOM upward

Where-used asks which assemblies contain a part, at every level above it. It is the question behind every change: before you change a bearing you need to know every product that carries it. It is also the reason a BOM is stored as rows, not as a drawing.

Where-used of one bearingWhere-used reads a bill of materials upward. The bearing PLM-5000 is used by the shaft and the cover, which are used by the rotor and the housing. The rotor is in the motor; the housing and the motor are both in the pump PLM-1000, reached by two routes and counted once at its nearest level, three levels up. PLM-5000BearingPLM-4000ShaftPLM-3100CoverPLM-3000RotorPLM-2100HousingPLM-2000MotorPLM-1000Pumpvia the motorThe partLevel up 1Level up 2Level up 3Six distinct assemblies use the bearing (shaft, cover, rotor, housing, motor, pump).The pump is reached by two routes, at level 3 through the housing and 4 through the motor; it counts once, at level 3.
Where-used of the bearing PLM-5000. Directly it is in the shaft (PLM-4000) and the cover (PLM-3100). Climbing: the shaft is in the rotor, the cover in the housing; the rotor is in the motor; the motor and the housing are both in the pump. Six distinct assemblies. The pump is reached by two routes, three levels up through the housing and four through the motor, and counts once, at its nearest level, 3.

The query climbs one level at a time until nothing is above. A recursive query is a query that feeds its own result back in; here each pass adds the parents of the previous pass. A part must never be its own ancestor, so a loop is a data error to be found before it hangs a screen. The sample carries the path it has climbed and never steps into a part already on it, so even a loop in the data cannot make it run forever; your own function should go further and stop with an error naming the part. Each assembly is returned once, at its nearest level.

Where-used of one part ($1), released engineering BOMs only
WITH RECURSIVE up AS (
  SELECT r.part_id AS parent_part_id, 1 AS level_up,
         ARRAY[$1::uuid, r.part_id] AS path
  FROM plm_bom_line l
  JOIN plm_bom b ON b.id = l.bom_id
       AND b.status = 'released' AND b.bom_view = 'engineering'
  JOIN plm_part_revision r ON r.id = b.parent_revision_id
  WHERE l.child_part_id = $1
  UNION ALL
  SELECT r.part_id, up.level_up + 1, up.path || r.part_id
  FROM up
  JOIN plm_bom_line l ON l.child_part_id = up.parent_part_id
  JOIN plm_bom b ON b.id = l.bom_id
       AND b.status = 'released' AND b.bom_view = 'engineering'
  JOIN plm_part_revision r ON r.id = b.parent_revision_id
  WHERE r.part_id <> ALL (up.path)  -- never climb into a part already on this path
)
SELECT parent_part_id, min(level_up) AS level_up  -- nearest level
FROM up GROUP BY parent_part_id;

Knowledge check

In the seed product, one PLM-1000 needs how many PLM-4100 fasteners?

Knowledge check

What does where-used return for a part?

Effectivity: which revision, when

A part may have several released revisions over its life, and the factory may build two of them in the same month: new stock after a date, old stock until it runs out, new serial numbers from a number onward. Effectivity is the rule that says which revision applies. It comes in four kinds: date, serial, lot, and use-up, where old stock is consumed first and the new revision starts only when it is gone; effective_at is the planned date the old stock runs out. An immediate change applies from the day it is implemented.

The compliance rule of the module is blunt: effectivity must be unambiguous, so MES and MRP always resolve exactly one revision. How you store the dates decides whether that is true.

Revision effectivity, to scaleA year drawn to scale from January to December 2026. With start dates only, revision A applies until revision B starts on 1 July, so one revision answers every day. With explicit end dates, two revisions can both apply in July, or none can between 16 and 30 June. The dates are an example. JanFebMarAprMayJunJulAugSepOctNovDecStart dates only: A applies until B startsRevision A · from 5 JanRevision B · from 1 JulExplicit end dates can overlapRevision A · to 31 JulRevision B · from 1 JulTwo resolve hereExplicit end dates can leave a gapRevision A · to 15 JunRevision B · from 1 JulNone resolves
One revision on every day. Top: store only the date each revision starts; revision A then applies until B starts, so exactly one answers every day. Middle and bottom: store a start and an explicit end for each, and a typing slip makes both revisions apply for a month, or leaves a month with none. The dates are an example.

This course stores the date a revision starts and lets the next start end the previous one. A resolver then returns, for a part and a date (and a serial number where the change is by serial), the single revision that applies, and refuses with an error if it cannot. A part that mixes date effectivity with serial or lot effectivity across its revisions is refused too, because then the same unit could match two rules.

A BOM line carries its own effectivity as well (effectivity_from, effectivity_to, serial_from, serial_to). The explosion applies it: it skips a line whose effectivity_from is after the date, whose effectivity_to is before it, or whose serial range excludes the serial asked about. An empty bound does not limit, and a query without a serial ignores the serial range. Where-used ignores line effectivity, so a change is assessed against every line that may use the part.

Exercise · Explode and climb the pilot BOM20 minutes

You need: The pilot product family from Session 1 (or the seed in this chapter), pencil and paper, and your AI coding agent

Do the arithmetic by hand first. A program that has not been checked against a hand count is a guess.

Outcome: A hand-worked explosion quantity and where-used list for a real part, matched against a query on your own data, with the result of the in-place edit written down.

Knowledge check

Why does this course store only the date each revision starts, not an explicit end date?

The thirteen tables, column by column

This is the table Session 2 builds from. Every table also has the standard columns of the spine (id, tenant_id, created_at, created_by, updated_at, updated_by, row_version, archived_at and ext), which are not repeated here. An arrow (→) is a foreign key to the table named. The types: text, int, bool, date, ts (a timestamp with time zone), json, uuid, qty (numeric(18,6)) and money (numeric(18,4)). req means required (not null); a list after a colon is the only values allowed. The specification also lists plm_requirement, plm_trace_link, plm_formula and plm_formula_line, which this course does not build.

TableHoldsColumns: type, req = required
plm_partThe PLM extension of a spine itemitem_id → core_item req, unique per tenant; lifecycle_state text req: concept, in_design, prototype, released, deprecated or obsolete; revision_scheme text req: alpha, numeric or alpha_numeric; make_buy text req: make, buy or phantom; current_revision_id uuid (no foreign key); owner_id → core_person; part_class_attributes json
plm_part_revisionOne revision of a partpart_id → plm_part req; revision_label text req; state text req: in_work, in_review, released, superseded or obsolete; description text; attributes json; released_at ts; released_by_eco_id uuid; cost_rollup money
plm_bomA BOM header per parent revision and viewparent_revision_id → plm_part_revision req; bom_view text req: engineering, manufacturing or service; status text req: in_work, released or superseded
plm_bom_lineOne line of a BOM, with its effectivitybom_id → plm_bom req; find_no int req; child_part_id → plm_part req; revision_rule text req: specific or latest_released; child_revision_id → plm_part_revision; qty qty req; uom_id → core_uom req; ref_designators text; effectivity_from date; effectivity_to date; serial_from text; serial_to text; alternate_group text
plm_substituteAn approved substitute for a BOM linebom_line_id → plm_bom_line req; substitute_part_id → plm_part req; priority int req; note text
plm_manufacturer_partAn approved manufacturer list (AML) entrypart_id → plm_part req; manufacturer_party_id → core_party req; mpn text req; status text req: approved, preferred, restricted or obsolete; lifecycle text: active, nrnd, eol, obsolete or unknown
plm_fileA CAD or specification file of a revisionpart_revision_id → plm_part_revision req; attachment_id → core_attachment req; file_format text req: native_cad, step, iges, stl, 3mf, pdf, dxf, spec or other; cad_system text; is_primary bool
plm_ecrAn engineering change requestecr_no text req, unique per tenant; title text req; reason text req; requested_by → core_person req; priority text req: low, medium, high or urgent; source_type text; source_id uuid; status text req: open, evaluating, approved, rejected or converted
plm_ecoAn engineering change ordereco_no text req, unique per tenant; title text req; change_type text req: design, bom, document, supplier, cost or compliance; status text req: draft, impact_analysis, ccb_review, approved, implemented or cancelled; effectivity_type text req: immediate, date, serial, lot or use_up; effective_at date; wip_disposition text: use_as_is, rework, scrap or na; stock_disposition text: use_as_is, rework, scrap, return or na; field_action text: none, on_failure, retrofit or recall; implemented_at ts; quality_change_ref uuid (a soft link to the quality module's change control, no foreign key)
plm_eco_ecr_linkThe ECRs an ECO addresseseco_id → plm_eco req; ecr_id → plm_ecr req
plm_eco_affected_itemOne revision transition within an ECOeco_id → plm_eco req; part_id → plm_part req; from_revision_id → plm_part_revision; to_revision_id → plm_part_revision; change_description text req
plm_eco_approvalOne change board approvaleco_id → plm_eco req; role text req; approver_id → core_person req; decision text req: pending, approved or rejected; decided_at ts; signature_id → core_e_signature
plm_compliance_declarationSubstance compliance of a part or a manufacturer partpart_id → plm_part; manufacturer_part_id → plm_manufacturer_part; regulation text req: rohs, reach_svhc, prop65, tsca_pfas, conflict_minerals or other; status text req: compliant, non_compliant, exempt or unknown; substances json; evidence_attachment_id → core_attachment; source text req: supplier, test or engineering; valid_until date

References

  1. Arena: key PLM capabilities. https://www.arenasolutions.com/what-is-plm/key-plm-capabilities/
  2. SoftwareConnect: product lifecycle management software comparison. https://softwareconnect.com/product-lifecycle-management/
  3. Rajesh Kumar: top PLM tools and evaluation criteria. https://www.rajeshkumar.xyz/blog/product-lifecycle-management-plm/

Chapter 3 · Change control

Engineering change, approved makers and compliance

Released data is frozen, so change has to be a process: a request, an order with a list of affected items and their impact, approvals that are signed, a date it takes effect, and a decision about the stock already made. This chapter follows one change end to end, then adds the two lists that decide whether a bought part can be used: approved manufacturers and substance declarations.

30 minECR to ECO to ECNAll signatures first4 KPIs

By the end of this chapter you can

  • Follow a change from engineering change request to order to notice, and name the status of each step.
  • Say what a change order records: affected items, effectivity, disposition of work in progress, stock and field, and who must sign.
  • Explain the approved manufacturer list and how compliance declarations roll up to an assembly, and name the four measures that tell you the module works.

Request, order, notice

Three documents carry a change. The engineering change request (ECR) is the problem or idea: anyone with a reason can raise one. The engineering change order (ECO) is the controlled change: which parts change, from which revision to which, and when. The engineering change notice (ECN) tells everyone who needs to know that it is now in force. A vendor guide to engineering change management software is listed among the specification's sources [1].

From request to noticeAn engineering change request moves from open to evaluating to approved to converted. An engineering change order moves from draft to impact analysis to change board review to approved to implemented, and the change notice goes to manufacturing and purchasing; in the course build the notice is the ECO page, and suppliers come later. Implementation needs every signature. ECR · plm_ecr.statusopenanyone raises itevaluatingbeing assessedapprovedor rejectedconvertedbecomes an ECOan ECO addresses the ECR through plm_eco_ecr_linkECO · plm_eco.statusdraftaffected itemsimpact_analysiswhere-usedccb_reviewboard signsapprovedall signedimplementedgoes into effectECN to manufacturing, purchasingin the course build: the ECO page; suppliers laterRule: no implementation without every signaturethe last step is refused otherwise
One change, end to end. An ECR is open, then evaluating, then approved or rejected, then converted. The ECO it becomes goes through draft, impact analysis, change board review, approved and implemented. The ECN tells manufacturing and purchasing; in the course build it is the ECO page itself, and suppliers are added later. The last step is refused unless every board approval is signed.
StatusOfWhat is true at this point
open, evaluatingECRSomeone has raised it with a reason and a priority (low, medium, high or urgent); it is being looked at
approved, rejectedECRThe board has decided whether it is worth a change order
convertedECRAn ECO now addresses it, through the link table plm_eco_ecr_link
draftECOAffected items are being listed: part, from revision, to revision, and what changes
impact_analysisECOWhere-used has been run for every affected part and the result is recorded
ccb_reviewECOThe change control board (CCB) is reviewing; nothing on the order may change now
approvedECOEvery approval row is approved and carries a signature
implementedECOThe new revisions are released and effective; the ECN is published
cancelledECOStopped before it was implemented; never reopened

An ECO also has a change type (design, bom, document, supplier, cost or compliance), an effectivity type (immediate, date, serial, lot or use-up) with an effective date when it needs one, and three decisions about what already exists: what to do with work in progress (use as is, rework, scrap), with stock (use as is, rework, scrap, return) and with products in the field (none, on failure, retrofit, recall). A change order that does not say what happens to the parts already made is incomplete, because the factory will decide it on the floor, differently on each shift.

Approvals that mean something

The board's decision is a row per approver in plm_eco_approval: a role (engineering, manufacturing, purchasing), the person, a decision (pending, approved or rejected), the time, and a link to an electronic signature in the spine (core_e_signature), which records who signed, what the signature meant, and a hash of the record signed. A tick box is not a signature: the signature is tied to the exact content approved, so it cannot be moved to a later edit.

The change tablesAn ECR is linked to an ECO through a link table. The ECO has affected items, which point at part revisions, and approvals, which point at a person and at an e-signature. The ECR records who requested it. plm_ecrplm_eco_ecr_linkplm_ecocore_personplm_eco_approvalplm_eco_affected_itemcore_e_signatureplm_part_revisionecr_ideco_ideco_ideco_idrequested_byapprover_idsignature_idfrom_revision_idto_revision_id
The change tables. An ECR is linked to an ECO through plm_eco_ecr_link. The ECO has affected items, each pointing at a from and a to part revision, and approvals, each pointing at a person and at a signature.

Two further rules keep the order honest. After the board review starts, the order's fields and affected items cannot change, so what was approved is what is implemented. And before a change is implemented, a check confirms that the new effective date does not fall on or before the start of the revision being replaced. Implementing publishes plm.eco.implemented; approval publishes plm.eco.approved. Other modules consume qms.capa_action, svc.ticket.problem and mes.parameter.out_of_spec and turn them into change requests, so a field problem or an out-of-spec reading can start a change without anyone retyping it.

Knowledge check

An ECO has two of three board approvals signed. What should happen when someone tries to implement it?

Approved manufacturers and their risk

A bought part is not bought from just anyone. The approved manufacturer list (AML) records, for each part, the manufacturers and manufacturer part numbers (MPN) you may buy it from. Each entry in plm_manufacturer_part has a status (approved, preferred, restricted or obsolete) and a lifecycle (active, NRND, EOL, obsolete or unknown). NRND means not recommended for new designs; EOL means end of life. Lifecycle is the manufacturer's word about the part, the status is your decision about the manufacturer, and they are separate columns because they change independently.

Compliance declarations and roll-up

A declaration says whether a part, or a manufacturer's part, meets a substance rule. plm_compliance_declaration holds a regulation (RoHS, REACH substances of very high concern, Prop 65, TSCA PFAS, conflict minerals or other), a status (compliant, non_compliant, exempt or unknown), the substances found, the evidence (a certificate, kept as an attachment), where the information came from (supplier, test or engineering), and a date it is valid until. RoHS restricts certain hazardous substances in electrical and electronic equipment [2]; REACH is the EU chemicals regulation [3]; California Prop 65 requires warnings for listed chemicals [4]. A declaration without evidence, or past its date, is a claim, not a record.

Compliance rolls up the bill of materialsA pump assembly rolls up the declarations of the bought parts below it. The bearing has a current RoHS declaration, the fastener pack has none, so the pump is unknown for RoHS. REACH is unknown for the bearing, so unknown for the pump. PLM-1000 Pump assemblyRoHS: unknown (PLM-4100 has none)REACH: unknownPLM-5000 BearingRoHS: compliant, valid until 2027-06-30REACH: unknown (engineering note only)PLM-4100 Fastener packRoHS: no declarationREACH: no declarationrolls upAn assembly is compliant only if every bought part below it is compliant or exempt.One non_compliant part makes every assembly above it non_compliant (its event is added later).
Compliance rolls up the bill of materials. The bearing has a current RoHS declaration but only an engineering note for REACH; the fastener pack has none. The pump assembly is therefore unknown for both. If a part were non_compliant, every assembly above it would be too; publishing the event plm.compliance.non_compliant for it is added later.

Roll-up is where-used again, applied to a status: the status of an assembly is the worst status found among the bought parts below it. This course uses one rule, kept simple on purpose: compliant only if every bought part is compliant or exempt, non_compliant if any is non_compliant, otherwise unknown. Whether a rule is enough for your market is a question for whoever signs your declarations; the module's job is to make the answer visible rather than to make it for you.

Knowledge check

What does NRND mean on an approved manufacturer entry?

Roles and screens

Four jobs work in the module, each a core_job_role row. Session 3 writes their rights into the Role and Exposure Matrix; everyone else only looks, and a supplier contact or contractor has no role and sees nothing.

RoleIts job in the moduleScreens
Design engineer (DESIGN_ENG)Creates parts, in-work revisions, engineering and service BOMs and files; raises ECRs and ECOs, records the where-used impact, submits an ECO to the board and releases it/plm/parts, /plm/changes, /plm/bom
Change board member (CCB_MEMBER)Decides change requests and signs or rejects change orders, one member each for engineering, manufacturing and purchasing/plm/changes (signs), /plm/bom
Manufacturing engineer (MFG_ENG)Keeps manufacturing BOMs; sets an ECO's effectivity, work-in-progress disposition and field action/plm/parts (manufacturing BOMs), /plm/changes, /plm/bom
Buyer (BUYER)Keeps approved manufacturers and compliance declarations; sets an ECO's stock disposition; raises change requests/plm/changes, /plm/bom
  • /plm/parts, the desk screen: the part and BOM editor. A released revision shows read-only, with the words "change by ECO".
  • /plm/changes, the review screen: change requests and change orders by status, one at a time with affected items, dispositions and approvals; the board signs here.
  • /plm/bom, the floor and manager screen: the released BOM, one level at a time, with no edit control anywhere.

Behind the screens are routes, each with its own narrow account: eco-submit (/api/plm/submit), eco-release (/api/plm/release), plm-loader (/api/plm/import, closed at cut-over) and plm-resolve (/api/plm/resolve, for MRP and MES), plus the read-only plm-check account for the checks. Signing (/api/plm/sign) runs as the signed-in board member.

Import order

Real data comes in parts first, as the specification recommends: the current released revision of each part and its BOMs, then approved manufacturers, declarations and files, and change history only where an auditor or customer requires it. The loader writes in this order, because each step needs the one before it:

  1. Units (core_uom).
  2. Manufacturers (core_party).
  3. Items (core_item), reusing one another module already made.
  4. Parts (plm_part).
  5. Each part's current revision, in_work, flagged as a baseline.
  6. Files (core_attachment and plm_file), before the release, because a released revision is frozen.
  7. The release of the revisions.
  8. BOMs, in_work, with their lines.
  9. The release of each BOM whose children all resolve to a released revision.
  10. Manufacturer parts (plm_manufacturer_part).
  11. Declarations (plm_compliance_declaration).
  12. Closed ECOs for the history you must keep, already implemented and flagged as imported.

Checks before cut-over

Nothing replaces the old tool until these hold at zero exceptions, on your own data:

  • Every part in released or deprecated lifecycle points at a released revision of itself as its current revision, and every part in concept, in design or prototype has none.
  • No released BOM has a line whose child part lacks a released revision.
  • Exactly one revision resolves for every part with a released revision, on a date long past, today, a date years ahead, and the day of every change's effective date and the day before it.
  • No part is its own ancestor.
  • The three promises of the module: a released revision and its BOM cannot be edited in place; an ECO cannot be implemented without every board approval signed; exactly one revision resolves for any part and date or serial.

Four measures, and what comes after

Four measures tell you whether the module works, all computed from its own tables. The checks script in Session 6 reports the first three; the fourth needs a record of post-release corrections that you add later.

MeasureDefinition
ECO cycle timeMedian days from the ECR opening to the ECO being implemented
Changes per released partECOs divided by released parts, for a period
Compliance coverageBought parts with a current declaration (compliant or exempt, and not past its valid_until date) divided by bought parts
BOM accuracy at releasePost-release BOM corrections divided by releases

Beyond this course the module goes further: a requirements tree with verification methods and trace links to parts, tests and documents; NPI projects with phase gates, following the planning and gate structure of AIAG's APQP [5]; and formulation for process industries, where a recipe moves from general to site to master level under ISA-88. You add them the same way you add everything: a table, a rule the database enforces, a screen and a test.

Exercise · Walk one change on paper, then in your data20 minutes

You need: The pilot family from Session 1, the median-days list you wrote there, and your AI coding agent

Choose a real change made in the last year, or invent one on a bought part. Write it out before any database is involved.

Outcome: A one-page change record for a real part, with its affected items, effectivity, dispositions and approvals, and a set of sample rows your agent generated that you checked against the rules.

Knowledge check

Which statement is a correct reading of the compliance roll-up rule used in this course?

References

  1. Guideflow: engineering change management software. https://www.guideflow.com/blog/engineering-change-management-software
  2. EUR-Lex: Directive 2011/65/EU (RoHS). https://eur-lex.europa.eu/eli/dir/2011/65/oj
  3. EUR-Lex: Regulation (EC) No 1907/2006 (REACH). https://eur-lex.europa.eu/eli/reg/2006/1907/oj
  4. California OEHHA: Proposition 65. https://oehha.ca.gov/proposition-65
  5. AIAG: quality core tools (including APQP). https://www.aiag.org/expertise-areas/quality/quality-core-tools

Chapter 4 · 12 questions · 80% passes

Final assessment

Twelve questions across the element. Score 80% (10 of 12) to pass. Your LMS records your score and each answer; you can review the chapters and try again.

15 min12 questions≈ 15 minutesRetake allowed

Choose one answer for each question, then submit. You will see the right answer and why for every question.

1. What is the product lifecycle module the system of record for, and what does it leave alone?
2. Which list is the allowed lifecycle states of a part (plm_part.lifecycle_state)?
3. Revision A of a part is released and a quantity on its BOM is wrong. What is the right path?
4. In the seed pump, the rotor uses 8 PLM-4100 fasteners and the cover uses 4. How many does one PLM-1000 need?
5. What does where-used return for a part?
6. What is a phantom assembly?
7. Why must effectivity resolve exactly one revision for any part and date?
8. In which order do the statuses of an engineering change order run?
9. What must be true before an ECO can be implemented?
10. On an approved manufacturer entry the lifecycle is NRND. What does that tell the buyer?
11. A pump assembly has one bought part with a current RoHS declaration and one with none, and nothing is non_compliant. What is the assembly's RoHS status under this course's rule?
12. How is the measure ECO cycle time defined?