ETC PLM — Product Lifecycle
ET
ETC PLM
PRODUCT LIFECYCLE · plm.etcos.ca
Signed in as {{ authEmail }} — this account is not authorized for ETC PLM. Use your @etcorp.ca Microsoft account.
{{ authErr }}
Single sign-on with your ETC Microsoft 365 account — same login as ETCOS
ET
ETC PLM PRODUCT LIFECYCLE
/
{{ r.kind }} {{ r.id }} {{ r.name }} {{ r.meta }}
No matches for “{{ search }}”
↑↓ navigate↵ openesc close
PROD
{{ userInitials }}
Loading product dataset…

Control Room

Live operational status across the portfolio · every alert is one click from its fix
All connectors live
{{ k.label }}
{{ k.value }}
{{ k.trend }}vs last wk
Awaiting approval{{ crApprovals.length }}
View all →
{{ e.id }}{{ e.state }}
{{ e.title }}
{{ e.meta }}
{{ e.age }}
Release blockers{{ crBlockers.length }}
View all →
{{ p.pn }}
{{ p.name }}
{{ p.ready }}% {{ p.exc }} open
BOM ⇄ NetSuite issues{{ crNsIssues.length }}
Reconcile →
{{ r.pn }} {{ r.name }} {{ r.label }}
All items in sync
Exceptions by category
Open queue →
{{ c.label }}
{{ c.count }}
IDC-4000{{ prod.lifecycle }}
Integrated Drive Controller
{{ twinRingPct }}
EBOM
All
Elec
Mech
Next issue ⇢
{{ rv.done }} / {{ rv.total }} verified
Next unverified ⇢ Reset
j / k movev verifyn next unverifiedi next issueprogress saved locally
Part / description Type Rev Qty NetSuite
{{ b.checkGlyph }}{{ b.caret }}{{ b.pn }}{{ b.name }}
{{ b.type }} {{ b.rev }} {{ b.qty }} {{ b.nsLabel }}
{{ twinHead.pn }}{{ twinHead.name }}{{ twinHead.type }}{{ twinHead.life }}{{ twinHead.nsLabel }}
3D model
Documents{{ twinDocCount }}
NetSuite
Detail
{{ d.kind }}{{ d.name }}
{{ twinDoc.kind }}
{{ twinDoc.name }}
Download to open in native app
No documents linked to {{ twinHead.pn }}
+ Attach a drawing, datasheet or test report
NetSuite item{{ twinNs.item }}
{{ twinNs.label }}
FieldPLM (Rev C)NetSuiteMatch
{{ f.label }}{{ f.plm }}{{ f.ns }}{{ f.badge }}
Read-back from NetSuite Advanced BOM
{{ twinNs.action }}
{{ twinHead.pn }}{{ twinHead.life }}
{{ twinHead.name }}
{{ d.k }}
{{ d.v }}

Product Portfolio

Built-to-stock products · {{ pfCount }} active
{{ s.label }}
{{ s.value }} {{ s.sub }}
All products
Has exceptions
Not released
Needs sync
Product Line Rev Lifecycle ECOs Exceptions Release readiness NetSuite Updated
{{ r.dot }}
{{ r.pn }}
{{ r.name }}
{{ r.line }} {{ r.rev }} {{ r.life }} {{ r.ecos }} {{ r.exc }}
{{ r.ready }}%
{{ r.nsNote }}
{{ r.updated }}
Portfolio/{{ prod.pn }}
{{ prod.pn }}{{ prod.lifecycle }}
{{ prod.name }}
{{ prod.family }} · Owner {{ prod.owner }} · ERP {{ prod.nsItem }}
Revision
{{ rv.rev }}{{ rv.state }}
Readiness · {{ prod.readyLabel }}
{{ prod.ready }}
{{ prod.rPass }} passed
{{ prod.rFail }} blocking
Lifecycle baselines {{ g.glyph }}{{ g.gate }}· {{ g.baseline }}{{ g.date }} {{ gateStrip.ccNote }}
Overview
EBOM
Documents
3D model
NetSuite
Change orders
Release
{{ lite.title }}
{{ lite.msg }}
{{ s.label }}
Product definition
{{ f.k }}
{{ f.v }}
Revision history
Rev {{ t.rev }}{{ t.state }}{{ t.date }}
{{ t.note }}
Governing changedrives Rev C
{{ eco.id }}{{ eco.state }}Rev {{ eco.from }} → {{ eco.to }}
{{ eco.title }}
{{ eco.appDone }}/{{ eco.appTotal }} approvals
Release readiness{{ prod.ready }}%
{{ c.glyph }}
{{ c.label }}
{{ c.note }}
{{ c.gate }}
Open exceptions{{ excCount }}
{{ x.title }}
{{ x.detail }}
{{ x.part }}
Unified EBOM
All
Mechanical
Electrical
Hardware
⚠ Issues only
Δ vs Rev B
Expand all
Collapse
CSV ↓
Review twin ⇄
{{ bomCount }} shown · {{ bomIssueCount }} issues
{{ revBanner.text }} {{ revBanner.actLabel }}
Find Part / description Type Source Rev Qty Ref des Lifecycle NetSuite Unit $ Ext $ Vendor Lead Docs
{{ b.find }}
{{ b.caret }} {{ b.pn }} {{ b.name }} {{ b.diffLabel }}
{{ b.type }} {{ b.src }} {{ b.rev }} {{ b.qty }} {{ b.ref }} {{ b.life }} {{ b.nsLabel }} {{ b.unit }} {{ b.ext }} {{ b.vendor }}{{ b.avlMore }} {{ b.lead }} {{ b.docCount }}
Rolled-up material cost{{ bomTotal }}
Bill of Information{{ docCount }} documents
{{ d.kind }}
{{ d.name }}
{{ d.cat }} · Rev {{ d.rev }} · {{ d.size }}
{{ d.status }}
{{ doc.kind }}
{{ doc.name }}
{{ doc.id }} · Rev {{ doc.rev }} · {{ doc.src }}
{{ doc.status }}
{{ doc.kind }}
{{ doc.name }}
Native preview via SolidWorks PDM / Office · Download to open
Linked parts {{ p.id }} Owner {{ doc.owner }} · {{ doc.date }}
Assembly modelSTEP · Rev CLinked to EBOM · click a part in the model or the list
Model parts
{{ m.pn }}
{{ m.name }}
{{ m.src }}
Selected part
{{ selDetail.pn }}{{ selDetail.life }}
{{ selDetail.name }}
Source
{{ selDetail.source }}
Qty
{{ selDetail.qty }}
Unit cost
{{ selDetail.cost }}
Lead time
{{ selDetail.lead }}
Vendor
{{ selDetail.vendor }}
NetSuite
{{ selDetail.nsLabel }}
PLM ⇄ NetSuite reconciliation Rev C EBOM vs ERP item master · last sync {{ recon.lastSync }}
{{ t.label }}
{{ t.value }}
Item Qty Unit cost Vendor Lead Rev Reconcile Action
{{ c.pn }}{{ c.name }}
{{ c.nsItem }}
{{ c.qty.v }}NS {{ c.qty.ns }} {{ c.cost.v }}NS {{ c.cost.ns }} {{ c.vendor.v }}NS {{ c.vendor.ns }} {{ c.lead.v }}NS {{ c.lead.ns }} {{ c.rev.v }}NS {{ c.rev.ns }} {{ c.nsLabel }} {{ c.action.label }}
ECR · {{ chg.ecrN }}
ECO · {{ chg.ecoN }}
ECN · {{ chg.ecnN }}
{{ chg.title }}{{ chg.count }}
{{ e.id }}{{ e.state }}{{ e.from }}→{{ e.to }}
{{ e.title }}
{{ e.priority }}
{{ r.id }}{{ r.state }}
{{ r.title }}
{{ r.sub }}vet due {{ r.due }}
{{ n.id }}{{ n.released }}
{{ n.title }}
{{ n.comms }}{{ n.training }}
No change notices yet — an ECN is issued automatically when an ECO releases with its impact scope complete.
No change orders for this product yet.
Start with + New ECO, or convert an accepted ECR.
{{ ecoD.id }}{{ ecoD.state }}{{ ecoD.clsLabel }}{{ ecoD.priority }} priority
Rev {{ ecoD.from }} → {{ ecoD.to }}
{{ ecoD.title }}
Owner {{ ecoD.owner }}Created {{ ecoD.created }}Target {{ ecoD.due }}Cost impact {{ ecoD.cost }}Origin {{ ecoD.ecrId }} →
Classification {{ f.glyph }} {{ f.label }}
{{ ecoD.cls.label }}
{{ ecoD.cls.reasons }} {{ ecoD.cls.cost }} est $/unit — no BOM line deltas yet
{{ ecoD.cls.depth }} · {{ ecoD.cls.note }}
Reason for change
{{ ecoD.reason }}
Line changes
Change Part Field Before → After
{{ c.kindLabel }} {{ c.part }}
{{ c.name }}
{{ c.field }} {{ c.before }} {{ c.after }}
Impact assessment — linked scope {{ ecoD.imp.summary }}
{{ ecoD.imp.lockNote }}
Suggested documents — auto-derived from part → document links · confirm or exclude so scope stays deliberate
{{ sg.id }} {{ sg.name }} {{ sg.tag }}
+ Add to scope Exclude
Item Rev Owner Est h Due Status Evidence
{{ i.doneGlyph }}
{{ i.kindLabel }}{{ i.id }}{{ i.name }}evidence invalidated → re-test
{{ i.from }} {{ i.waiveLabel }}
The ECO cannot reach implementation-complete / ECN until every linked item is at its target rev or explicitly waived
Approval workflow{{ ecoD.appDone }} of {{ ecoD.appTotal }} approved
{{ a.icon }}
{{ a.role }}
{{ a.name }}
{{ a.status }} {{ a.date }}
Roles for this changedefaults from Company settings · overrides apply to this ECO only
VETTER · default· inherited from ECR
IMPLEMENTER · default
{{ g.gate }}
default: {{ g.defaultLabel }}
System notes{{ ecoD.sysCount }} entries · append-only
{{ n.when }} {{ n.actor }} {{ n.line }} {{ n.src }}
No changes recorded for this ECO yet
No change requests for this product yet.
Raise one with + New ECR — it enters vetting as New.
{{ ecrD.id }}{{ ecrD.state }}{{ ecrD.subtype }}
vet due {{ ecrD.vetDue }}
{{ ecrD.title }}
Requester {{ ecrD.requester }}Raised {{ ecrD.created }}Product {{ ecrD.product }}
Entry criteria {{ c.glyph }} {{ c.label }} at least one impact type must apply to enter change control
Request
{{ ecrD.desc }}
Information loop
Vetter asked: {{ ecrD.infoRequest }}
{{ ecrD.infoBy }} replied: {{ ecrD.infoResponse }}
Vetting decision
{{ ecrD.decision }}
by {{ ecrD.decidedBy }} · {{ ecrD.decided }}
Converted to {{ ecrD.ecoId }} → {{ ecrD.ecoState }} bidirectional link — the ECO carries this ECR as its origin
VETTER · default pool
acting: {{ ecrD.vetterWho }} · Admin reassigns per request
DECISION PATH
New → Under Review → (Awaiting Info ⇄) → Converted to ECO / Rejected. Decisions use canned reasons + free text, recorded on the request.
{{ ecrD.lockNote }}
{{ ecrD.lockNote }}
{{ ecnD.id }}Released
closure {{ ecnD.closure }} / 4
{{ ecnD.title }}
ECO {{ ecnD.ecoId }} → Origin {{ ecnD.ecrId }} → Product {{ ecnD.product }} Released {{ ecnD.released }} Effectivity
{{ ecnD.commsLabel }} {{ ecnD.trainingLabel }} {{ ecnD.lockNote }}
Outcome — what actually changed
Effectiveness evidence
Lessons learned — feeds the design backlog
Affected items — from the ECO impact scope
{{ p.id }} {{ d.id }}
{{ g.gate }}{{ g.sub }} · FORM-051{{ g.pass }} / {{ g.total }} clear
{{ c.glyph }}
{{ c.label }}
{{ c.note }}
{{ c.gate }}
{{ prod.ready }}%
{{ rel.title }}
{{ rel.sub }}
Blocking issues
{{ b.label }}
{{ b.note }}
Fix →
No blocking issues — ready to release
Product baseline {{ baseline.rel }} will capture
EBOM CIs (frozen){{ baseline.items }}
Controlled documents{{ baseline.docs }}
Non-CIs excluded{{ baseline.nonCi }}
Governing ECO{{ baseline.eco }}
3D + drawing packagelinked
Release baselines are revisions of the Product baseline (declared at DRR) — SOP-018 §6.2
Configuration audit · {{ audit.form }}{{ audit.result }}
Baseline audited{{ audit.baseline }}
FCA — functional{{ audit.fca }}
PCA — physical{{ audit.pca }}
Audited by{{ audit.by }}
Recorded{{ audit.when }}
Waivers on record
{{ w.audit }}
{{ w.label }}
{{ w.note }}
CI Register FORM-049 · {{ ciReg.count }} configuration items · {{ ciReg.nonCount }} non-CI
All
CIs ({{ ciReg.count }})
Non-CI ({{ ciReg.nonCount }})
Formal configuration items change only through an ECO once their governing baseline is set. Non-CIs — tooling, jigs, working files, catalog/COTS parts, vendor reference — stay out of change control and iterate freely.
IDNameKindRevClassCIChange control
{{ r.id }} {{ r.name }} {{ r.kind }} {{ r.rev }} {{ r.cls }} {{ r.ciLabel }} {{ r.note }}

Exception Management

Cross-product data-integrity queue · {{ excTotal }} open
Clear filter
{{ c.count }}
{{ c.label }}
Severity Category Part Issue Owner Age Action
{{ x.sevLabel }} {{ x.cat }} {{ x.part }}
{{ x.title }}
{{ x.detail }}
{{ x.owner }} {{ x.age }} Resolve →
Exception queue clear — all data-integrity checks pass

Integration & Mapping

System connectors and cross-system identifier mapping · admin only
{{ c.name }}{{ c.status }}
{{ c.role }}
{{ c.count }}
Synced {{ c.sync }}Sync now
Identifier mappingMaps PLM part number → source-system identifiers → ERP item
PLM part Type SolidWorks PDM Altium 365 NetSuite item Mapping
{{ m.pn }} {{ m.name }} {{ m.type }} {{ m.pdm }} {{ m.alt }} {{ m.ns }} {{ m.statusLabel }}
Roles & RACI
Accountability for the PLM process — assignments here drive who can approve ECOs, apply reconciliation fixes and release baselines
SYSTEM ROLES — PERMISSION-BASED, WHOLE PLM
{{ rr.role }}YOU
{{ rr.seat }}
{{ p.initials }}{{ p.name }}
Unassigned — {{ rr.demo }}
WORKFLOW ROLES — PER CHANGE, ASSIGNED ON THE WORKFLOW PAGE
{{ rr.role }}YOU
{{ rr.seat }}
{{ p.initials }}{{ p.name }}
No default pool — {{ rr.demo }}
Process {{ h.label }}
{{ r.process }} {{ c.letter }}
R Responsible — does the work A Accountable — final owner C Consulted I Informed Assigned roles are enforced in-app · unassigned roles stay open until named
Company settings
Global role & permission configuration — system roles, workflow defaults, fallback policies and the RACI matrix. Per-change assignments live on each change order.
{{ set.adminNote }}
{{ set.sync.head }} — {{ set.sync.text }} · Customized — this browser has local overrides.
People directory
Everyone assignable to a role. SSO enforces @etcorp.ca at sign-in.
{{ p.initials }} {{ p.name }} {{ p.email }} ×
System roles — permission-based, apply to the whole PLM
{{ sr.label }}
{{ sr.desc }}
{{ m.name }}×
Workflow defaults — pre-fill each new change; override per change on its workflow page
DEFAULT APPROVER CHAIN
{{ g.gate }}
unassigned → “{{ g.demo }}”
ROLE POOLS
{{ pl.label }}
{{ pl.hint }}
{{ m.name }}×
Fallback policies — what happens when no one is assigned
{{ pol.label }} · {{ pol.hint }}
{{ pol.stateLabel }}
Change classification — Major/Minor derives from form·fit·function·certification flags + this cost threshold (CM workshop decision #5)
BOM-cost-impact threshold · an ECO at/above this per-unit impact is forced Major (full CCB chain) even with all flags clear; below it the Minor path — Lead Engineer sign-off — stays available
$ /unit
{{ set.thresholdNote }}
RACI matrix — click a cell to cycle — → R → A → A/R → C → I
Process {{ h.label }}
{{ r.process }} {{ c.letter }}

Activity Log

Full audit trail — field-level system notes + workflow events · {{ actTotal }} entries
{{ f.label }}
When Actor Category Event Target
{{ a.time }} {{ a.actor }} {{ a.cat }} {{ a.action }} {{ a.target }}
No events match this filter.
System notes are captured automatically on every data change (old → new value, actor, timestamp, source) and persist in this browser — append-only, no delete path. Production enforces capture at the data layer; see issue #25.

RFQ Packages

Frozen supplier packages assembled from released baselines — design, manufacturing and commercial layers · no internal costs ever leave PLM
{{ rp.baseNote }}
No RFQ packages yet
Assemble a supplier package from a released baseline — pick the BOM scope, then the documents for the design, manufacturing and commercial layers. The package pins to the baseline id, so suppliers only ever see a frozen configuration.
Packages{{ rp.count }} total
{{ p.id }}{{ p.status }}{{ p.baseId }}
{{ p.name }}
{{ p.meta }}
{{ rpD.id }}{{ rpD.status }}⚓ {{ rpD.pin }}
Created {{ rpD.created }} · Published {{ rpD.published }}
{{ rpD.name }}
Supplier {{ rpD.supplier }}Quote due {{ rpD.due }}Volumes {{ rpD.volumes }}
Completeness check{{ rpD.checkSummary }}
{{ c.glyph }}
{{ c.label }}
{{ c.note }}
{{ c.gate }}
{{ L.label }}{{ L.count }} documents
{{ d.kind }}
{{ d.name }}
{{ d.meta }}
{{ d.status }}
No documents in this layer — edit the package scope
BOM scope{{ rpD.bomN }} lines · quantities & revisions frozen at {{ rpD.baseId }} · costs, vendors & lead times never included
Find Part / description Rev Qty Ref des
{{ b.find }}
{{ b.pn }}{{ b.name }}
{{ b.rev }} {{ b.qty }} {{ b.ref }}
Quotes receivedsimulated uploads · stored in this browser
{{ q.supplier }}
{{ q.file }}{{ q.note }}
{{ q.total }}
{{ q.meta }}
{{ rpD.noQuotesMsg }}

Supplier RFQ Portal

PHASE 2 · CONCEPT
Planned extension — outside the MVP workflow. Shown here to reserve the information architecture.
{{ s.n }}
{{ s.title }}
{{ s.desc }}
Open RFQsillustrative data
RFQ Part Invited Responses Best quote Status
{{ r.id }} {{ r.part }} {{ r.name }} {{ r.invited }} {{ r.responses }} {{ r.best }} {{ r.status }}
New engineering change order
{{ mEco.sub }}
{{ s.label }}
Title *
Priority
{{ p.label }}
Classification flags — form · fit · function · certification
{{ c.label }}
est $/unit{{ mEco.clsLabel }}
{{ mEco.clsNote }}
Reason for change *
Product
{{ mEco.product }}
Revision
{{ mEco.revs }}
Owner
M. Alvarez
{{ p.tick }} {{ p.pn }} {{ p.name }} {{ p.type }}
{{ mEco.selNote }}
{{ mEco.newId }}{{ mEco.prioVal }}{{ mEco.revs }}
{{ mEco.title }}
{{ mEco.reason }}
Affected parts · {{ mEco.selCount }}
{{ p.pn }}
Created as Draft, owned by M. Alvarez. Submit it for approval from the change-order screen when ready.
New engineering change request
{{ mEcr.sub }}
Subtype — pre-fills intake metadata
{{ s.label }}
{{ mEcr.subHint }}
Title *
Request — problem & evidence *
Entry criteria * — gates submission
{{ c.glyph }}{{ c.label }}
At least one impact type must apply — requests with no doc / physical / firmware impact are handled outside change control (CAPA / NCR).
Vetter
{{ mEcr.vetterHint }}
Vetting due
Requester
{{ mEcr.requester }}
Product
{{ mEcr.product }}
Starts as
New → vetting
New product
Creates the product master — sources are mapped afterwards
Part number *
{{ mProd.pnHint }}
Name *
Product line
Owner
Starts at Rev A · Draft with no ERP mapping. Connect SolidWorks PDM / Altium 365 / NetSuite from Integration & mapping to populate the EBOM.
Attach document
Links a controlled document into the Bill of Information
Document name *
Kind
{{ k.label }}
Category
Linked part
Enters the BOI as Draft · Rev —, source Manual. The file itself uploads in production; the prototype records metadata only.
Release IDC-4000 · Rev C
Freezes the Product baseline, records the FCA/PCA audit and pushes released state to NetSuite
Product baseline
REL-C-001
Effective
2026-07-05
EBOM items frozen
{{ mRel.items }}
BOI documents
{{ mRel.docs }}
Governing ECO
ECO-2041 · Approved
ERP push
NetSuite item + BOM revision
Configuration audit
FCA + PCA recorded · FORM-051
Audited by
{{ mRel.auditBy }}
{{ mRel.warnCount }} open warnings → released as waivers
!
{{ w.label }}
{{ w.note }}
{{ w.audit }}
{{ mRel.ackTick }} I acknowledge these waivers — recorded against my name in the configuration-audit record
{{ mRfq.title }}
Bundle a frozen baseline into a supplier-facing package — BOM scope + design / manufacturing / commercial documents
{{ s.label }}
Package name *
Supplier *
Released baseline * — the package pins to this frozen configuration
{{ b.id }}Rev {{ b.rev }} · released {{ b.date }} · {{ b.eco }}
Only released baselines can be packaged — working revisions are never supplier-visible. Release a revision to make it available here.
Quote due
Volumes
Timeline
All None
{{ p.tick }} {{ p.pn }} {{ p.name }} Rev {{ p.rev }} {{ p.qty }}
{{ mRfq.selNote }} — quantities and revisions come frozen from {{ mRfq.baseSel }}
{{ L.label }}{{ L.hint }}
{{ d.tick }} {{ d.kind }} {{ d.name }} {{ d.cat }} {{ d.status }}
Costed exports (e.g. BOM-XLS) are excluded from supplier packages by policy. The completeness check runs on the package page — required document per category, everything at Released.
ET
ETC Supplier Portal
EXTREME TELEMATICS · RFQ COLLABORATION
{{ sp.id }} ⚓ frozen · {{ sp.pin }}
{{ sp.supplierLine }}
{{ sp.banner }}
{{ sp.name }}
Request for quotation — build-to-print · {{ sp.product }} · configuration {{ sp.pin }}
{{ m.k }}
{{ m.v }}
{{ sp.zipNote }}
Package documentsclick a document to review it inline · ↓ downloads the file
{{ L.label }}
{{ d.kind }}
{{ d.name }}
{{ d.meta }}
{{ sp.doc.kind }}
{{ sp.doc.name }}
{{ sp.doc.hint }}
Bill of materials — {{ sp.bomN }} linesquantities & revisions frozen at {{ sp.pin }}
Find Part number Rev Description Qty UOM Ref des
{{ b.find }} {{ b.pn }} {{ b.rev }} {{ b.name }} {{ b.qty }} {{ b.uom }} {{ b.ref }}
Submit your quoteline-item pricing per the quote template · simulated upload
🔒Quote submission opens when the package is published — this is an internal draft preview.
Quote received — {{ q.supplier }}
{{ q.file }}{{ q.note }}
{{ q.total }}
{{ q.meta }}
Company *
Quote file (metadata only)
Note
Part Description Qty Unit price $ * MOQ Lead (wk)
{{ l.pn }} {{ l.name }} {{ l.qty }}
{{ sp.q.summary }}
Extended total (priced lines × frozen qty) {{ sp.q.total }}
{{ toast.msg }} Undo