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
- 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.
| Capability | What it does | Tier |
|---|---|---|
| Part and revision control | Part numbers, revision schemes, lifecycle states, make, buy or phantom, attributes by class | MVP |
| Multi-level BOM | Find numbers, reference designators, quantities, alternates and substitutes; compare; where-used; cost roll-up | MVP |
| Files and vault | Native CAD and neutral formats (STEP, 3MF, PDF, DXF) per revision; check-in and check-out; viewer links | MVP |
| Change management | ECR intake, ECO with affected items, where-used impact, change board approvals with e-signatures, effectivity and disposition, ECN distribution | MVP |
| Effectivity | Date, serial and lot effectivity; use-up of old stock | STD |
| eBOM to mBOM | Derive the manufacturing BOM (phantoms, packaging, consumables) and hand it to M04 operation materials and M12 MRP | STD |
| AML and AVL | Approved manufacturer parts with lifecycle risk (active, NRND, EOL) | STD |
| Product compliance | Declarations per part or manufacturer part; roll-up to assemblies; certificate evidence | STD |
| NPI and APQP | Projects with phase gates and deliverables (links to M20) | STD |
| Requirements and traceability | A requirements tree with verification method and trace links to parts, tests and documents | BIC |
| Formulation | Formulas with ingredient percentages and scaling; the ISA-88 recipe hierarchy handing master recipes to M04 | BIC |
The standards, and what each one is used for
| Standard | Used 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.5 | Drawing revision practices; geometric dimensioning and tolerancing |
| ISO 10007:2017 and SAE EIA-649C | Configuration management: knowing what a product is at any point, and controlling changes to it |
| IPC-1752A | Materials declaration data exchange with suppliers |
| EU RoHS 2011/65/EU [4], REACH EC 1907/2006 [5], California Prop 65 [6], TSCA PFAS reporting | Substance 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_state | concept, in_design, prototype, released, deprecated, obsolete |
| revision_scheme | alpha (A, B, C), numeric (1, 2, 3) or alpha_numeric |
| make_buy | make, buy or phantom (an assembly that is never stocked; its parts pass straight through to its parent) |
| owner_id | The person (core_person) responsible for the part |
| On the revision (plm_part_revision) | What it holds |
|---|---|
| revision_label | A, B, C or 1, 2, 3, matching the part's scheme |
| state | in_work, in_review, released, superseded, obsolete |
| released_at, released_by_eco_id | When it was released and by which change order |
| cost_rollup | The 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
- Arena: key PLM capabilities. https://www.arenasolutions.com/what-is-plm/key-plm-capabilities/
- SoftwareConnect: product lifecycle management software comparison. https://softwareconnect.com/product-lifecycle-management/
- Rajesh Kumar: top PLM tools and evaluation criteria. https://www.rajeshkumar.xyz/blog/product-lifecycle-management-plm/
- 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
- EUR-Lex: Regulation (EC) No 1907/2006 (REACH). https://eur-lex.europa.eu/eli/reg/2006/1907/oj
- California OEHHA: Proposition 65. https://oehha.ca.gov/proposition-65
- 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.
| Field | What it means |
|---|---|
| bom_view | engineering (as designed), manufacturing (as built, with phantoms, packaging and consumables) or service (what a field technician orders) |
| status | in_work, released or superseded. Only an in-work BOM can be edited |
| find_no | The position number on the drawing and the BOM, such as 10, 20, 30 |
| child_part_id, qty, uom_id | The component, how many, and in which unit (core_uom) |
| revision_rule | specific pins the line to one child revision (child_revision_id is then required); latest_released follows the child's newest released revision |
| ref_designators | For electronics, the board positions the quantity covers, such as R1, R2, R3 |
| alternate_group, plm_substitute | Parts 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_to | When, 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.
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.
| Question | Answer for one PLM-1000 | Working |
|---|---|---|
| Bearings (PLM-5000) | 3 | 2 through the phantom shaft, plus 1 through the cover |
| Fasteners (PLM-4100) | 12 | 8 on the rotor, plus 4 on the cover |
| Rows in the explosion | 9 | One 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.
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.
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.
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.
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.
| Table | Holds | Columns: type, req = required |
|---|---|---|
| plm_part | The PLM extension of a spine item | item_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_revision | One revision of a part | part_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_bom | A BOM header per parent revision and view | parent_revision_id → plm_part_revision req; bom_view text req: engineering, manufacturing or service; status text req: in_work, released or superseded |
| plm_bom_line | One line of a BOM, with its effectivity | bom_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_substitute | An approved substitute for a BOM line | bom_line_id → plm_bom_line req; substitute_part_id → plm_part req; priority int req; note text |
| plm_manufacturer_part | An approved manufacturer list (AML) entry | part_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_file | A CAD or specification file of a revision | part_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_ecr | An engineering change request | ecr_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_eco | An engineering change order | eco_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_link | The ECRs an ECO addresses | eco_id → plm_eco req; ecr_id → plm_ecr req |
| plm_eco_affected_item | One revision transition within an ECO | eco_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_approval | One change board approval | eco_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_declaration | Substance compliance of a part or a manufacturer part | part_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
- Arena: key PLM capabilities. https://www.arenasolutions.com/what-is-plm/key-plm-capabilities/
- SoftwareConnect: product lifecycle management software comparison. https://softwareconnect.com/product-lifecycle-management/
- 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].
| Status | Of | What is true at this point |
|---|---|---|
| open, evaluating | ECR | Someone has raised it with a reason and a priority (low, medium, high or urgent); it is being looked at |
| approved, rejected | ECR | The board has decided whether it is worth a change order |
| converted | ECR | An ECO now addresses it, through the link table plm_eco_ecr_link |
| draft | ECO | Affected items are being listed: part, from revision, to revision, and what changes |
| impact_analysis | ECO | Where-used has been run for every affected part and the result is recorded |
| ccb_review | ECO | The change control board (CCB) is reviewing; nothing on the order may change now |
| approved | ECO | Every approval row is approved and carries a signature |
| implemented | ECO | The new revisions are released and effective; the ECN is published |
| cancelled | ECO | Stopped 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.
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.
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.
| Role | Its job in the module | Screens |
|---|---|---|
| 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:
- Units (core_uom).
- Manufacturers (core_party).
- Items (core_item), reusing one another module already made.
- Parts (plm_part).
- Each part's current revision, in_work, flagged as a baseline.
- Files (core_attachment and plm_file), before the release, because a released revision is frozen.
- The release of the revisions.
- BOMs, in_work, with their lines.
- The release of each BOM whose children all resolve to a released revision.
- Manufacturer parts (plm_manufacturer_part).
- Declarations (plm_compliance_declaration).
- 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.
| Measure | Definition |
|---|---|
| ECO cycle time | Median days from the ECR opening to the ECO being implemented |
| Changes per released part | ECOs divided by released parts, for a period |
| Compliance coverage | Bought parts with a current declaration (compliant or exempt, and not past its valid_until date) divided by bought parts |
| BOM accuracy at release | Post-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.
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
- Guideflow: engineering change management software. https://www.guideflow.com/blog/engineering-change-management-software
- EUR-Lex: Directive 2011/65/EU (RoHS). https://eur-lex.europa.eu/eli/dir/2011/65/oj
- EUR-Lex: Regulation (EC) No 1907/2006 (REACH). https://eur-lex.europa.eu/eli/reg/2006/1907/oj
- California OEHHA: Proposition 65. https://oehha.ca.gov/proposition-65
- 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
Your result
CivOps AI Academy
Product Lifecycle (PLM): Parts, Bills of Materials and Engineering Change as Controlled Records
Element M14 complete · Learner
Your LMS records this completion. For the CivOps Foundation certificate, finish the Foundation Course at https://civops.io/learn.