Skip to content

ShopFloor - Glossary

Domain vocabulary used throughout CTLShopFloor. Read this first — every other document assumes these terms.

Items marked ⚠️ Assumption are inferred from code and need confirmation by someone with operational/business knowledge.


These are the seven coarse-grained phases a unit moves through. Every StationType belongs to exactly one. Defined in CTLShopFloor.Core.Domain/StationCategoryEnum.cs.

PhaseIDMeaning
Forecast6Planning / expected inbound; unit not yet physically present. ⚠️ Assumption — usage in code is sparse.
Receiving7Truck arrival, dock check-in, debox, initial sort.
WIP (Work-In-Progress)8Active processing — cleaning, grading, imaging, testing, kitting.
Pre-FGI9Pre-packaged, ready to be palletized for finished-goods inventory.
FGI (Finished Goods Inventory)10Sealed and on a closed outbound pallet, ready for sale.
Post-FGI11Sold, picked, shipped, fulfilled.
Outside-Process12Off the main happy path — Repair Center, Quarantine, BER, Harvesting, Scrap.

TermDefinition
WorkTrackingThe per-serial-number system of record. One row per physical unit, from receiving until it leaves the building. Tracks current StationID, grade, pallet membership, dates, sales status, and a JSON blob of captured system specs. Effectively the unit’s state machine row.
WorkOrderA batch of units expected together — usually one inbound BOL / pre-alert / RMA shipment. Carries a RouteID (which defines what stations its units must pass through) and a BOLFileIdentifier. Marked IsRMA=true for returns.
WorkTrackingOperationsAudit log of station-to-station movements per unit. ⚠️ Assumption — actual write path not fully verified.
WorkTrackingDetailsPer-scan supplementary data tied to a WorkTracking row at a specific Station. ⚠️ Assumption — exact usage varies by station service.

TermDefinition
RouteAn ordered template defining which StationTypes a unit must visit. Scoped to a ProductLineCategory.
RouteFlowA single ordered step inside a Route — (RouteID, StationTypeID, ScanOrder). The scan dispatcher uses ScanOrder to determine “what station can come next.”
ProductionFlowA physical instantiation of a Route inside a Project. Multiple ProductionFlows can share a Route. Stations belong to ProductionFlows.
StationA physical workstation (a scanner + a person + a screen). Has a StationTypeID (its role) and a ProductionFlowID (which line it sits on).
StationTypeThe kind of station (Dock, Triage, Grading, Packing, etc.) — defines behavior. Has a StationCategoryID mapping it to one of the seven lifecycle phases.
StationCategoryOne of the seven phases above (Forecast, Receiving, WIP, etc.).
ProjectA logical “tenant within a tenant” — a customer program or business unit. Most entities are scoped to a ProjectID.
ProductLineCategoryClassification of product families (e.g., laptops vs. desktops vs. monitors). Routes are scoped to it.

The codebase distinguishes several SKU fields. This is a frequent source of confusion.

FieldMeaning
ArrivedSKUSKU as printed on the unit / pre-alert when it arrived. Immutable.
SKUThe current “working” SKU — may change as the unit is regraded, reconfigured, or relabeled.
LabelSKUThe SKU printed on the final outbound label. May differ from SKU for BER/RMA marker suffixes (e.g., a BER unit gets a BER marker appended — see RepairCenterStationControllerService.sendToBER lines 955–999).
RegionalSKURegion-specific variant (US/EU/etc.). ⚠️ Assumption — exact derivation rule unclear.
SKUCTOConfigure-To-Order SKU. ⚠️ Assumption — used when the unit is reconfigured (e.g., RAM swap, drive replacement) into a different sellable spec.

TermDefinition
BOMHeaderThe product model definition — one row per laptop/desktop model the facility processes. Holds default specs, manufacturer, etc.
BOMHeaderDetailsSpec breakdown for a BOMHeader. ⚠️ Assumption — exact relationship with BOMHeaderCategory is not fully traced.
BOMHeaderByProjectPer-project availability/configuration of a BOMHeader.
BOMHeaderCategoryClassification of BOMHeaders. ⚠️ Assumption — relationship to ProductLineCategory unclear.
KittingBOMWhat accessories (power adapter, dock, manual) ship with each BOMHeader. Used by the Kitting station.
PendingPartsCatalogNot a “parts to order” list, despite the name — it’s a BOMHeader-linked reference catalog of keyparts required for a product family. ⚠️ Refactor finding: name is misleading.

TermDefinition
DockReceiving entry station. Unit’s serial is scanned, matched against pre-alert / inbound pallet, and a WorkTracking row is created (or reset, for RMA).
TriageQuality assessment station. Two evaluations are submitted per unit: Cosmetic and Functional. Each gets a 0–100 score that maps to a letter grade (A–D) via TriageEvaluationGradesScore. Outcome routes the unit to Imaging, Repair Center, Quarantine, or marks it ineligible. See TriageEvaluationService.cs.
DeboxUnboxing / segregation.
SortingRoutes units by destination type (normal vs AS-IS vs IMC vs FLIP).
CleaningPhysical wipe / inspection. Verifies test-result uploads exist before allowing advance.
Imaging / Image DownloadWindows OS is installed and a Digital Product Key is injected. Performed off the shop floor on a separate “Windows Test System.” See Windows Test System below.
Windows Test SystemExternal (not shop-floor-station) system that installs Windows, captures system specs into the SystemInformation + Engineering* tables, and uploads results via WindowsTestResultsUpload.
MoveFromWindowsTestSystemThe re-entry station after Imaging completes; brings the unit back into shop-floor flow with embedded test results.
PromoteImageDownloadUnitThe “release from Image Download queue” station. ⚠️ Refactor finding: name is misleading — it’s really just ReintegrateFromImaging.
GradingOperator assigns a GradingTypeID (Grade A, B, C, AS-IS, IMC, FLIP, etc.). Optional SubGradingID adds a sub-classification.
KittingAccessories from the unit’s KittingBOM are scanned and matched. A KittingLog row is created per scan.
PackingUnit is sealed in its outbound box. Validates that GradingID is set if Project.GradingValidation == true.
QAFinal inspection before pallet placement. ⚠️ Assumption — exact rules per project not traced.
Pallet StationAssigns the unit to an OutboundPallet.
Finished Good (FG)Closes the outbound pallet (IsOpen=false, CloseDate set). The unit is now FGI.
Sales InventoryPost-FGI staging for sale.
Repair Center (RC)Off-route diagnostic + repair station. Technician logs errors to RepairCenterError and RepairCenter, swaps parts (logged in RCReplacementParts), and either marks the unit repaired or re-attempts. After 3 failed attempts on the same error, the unit is auto-sent to BER.
BER (Beyond Economical Repair)Terminal repair outcome. Unit is graded “TYPE BER,” the LabelSKU is marked, and the unit moves to the BER station. From here it typically goes to Harvesting or is scrapped (the latter handled outside this system).
HarvestingCannibalization station. Parts are extracted from a BER/scrap unit and added to Part inventory with Source="Harvesting". High-value parts get unique serials (format T{yyMMdd}A{00000}).
Recovery⚠️ Unclear — RecoveryEvent exists alongside HarvestingEvent with similar shape but ties to a WarehouseID instead of a HarvestingID. May be legacy or warehouse-level stock-in. Confirm before refactor.
QuarantineHold area for problem units (RTV flagged, suspect SKU mismatch, etc.).
As-Is ShipmentsPath for units shipped without refurbishment.

TermDefinition
BasePalletAbstract base for the other pallet types. Holds Warehouse + WarehouseLocation.
InboundPalletsTruck arrival pallet. Has an InboundPalletIdentifier string referenced by every unit on it.
OutboundPalletsFinished-good shipping pallet. Auto-named via PalletPrefix (e.g., OB000001). Has IsOpen and CloseDate.
BoxPalletA sub-pallet inside an OutboundPallet — used for 5M-style scenarios where one outbound pallet contains multiple labeled boxes (see ref SF-220).
StandByPalletsPer-ProductionFlow holding/buffer pallets — used to park units mid-flow (e.g., waiting for repair). The isPallet flag distinguishes a real pallet from a holding area.

TermDefinition
RMA (Return Merchandise Authorization)A return shipment from a customer.
RmaHeaderThe shipment-level record (tracking number, LPN, RmaType, register date).
RmaItemsRelationPer-serial link: RmaHeaderWorkTracking. One row per returned unit.
RmaTypesPer-project classification (e.g., “DOA”, “Warranty”).
In-system RMAThe returned unit’s serial is already in WorkTracking (previously shipped from this facility). WorkTracking.StationID is reset to Dock and dates are cleared; the unit re-enters the normal route.
Out-of-system RMAThe returned unit’s serial does not exist in WorkTracking. Pre-alert data is staged in RmaNotInsystemPreAlert, a new WorkOrder (with IsRMA=true) is created, and new WorkTracking rows are generated.
RmaNotInsystemPreAlertStaging table for out-of-system RMA pre-alert rows pending validation.
RCImages / RCNotes / RCReplacementPartsPer-repair audit trail attached to a RepairCenter record.

TermDefinition
KeypartsNumberMaster catalog of part types (specific RAM module, specific battery, etc.).
KeypartsCategoryClassification of keyparts.
PartA physical unit of inventory. Has Source = "PO" (purchased) or "Harvesting". High-value parts get a PartSerialNumber; standard parts are aggregate-tracked.
PartLocationWhere a part currently is.
InventoryTransactionLedger entry: IN (receipt) or, by design, OUT (consumption).
InventoryTrackerAggregate on-hand counts. ⚠️ Refactor finding: the OUT/consumption path appears incomplete — see refactor findings.
PurchaseOrder / PurchaseOrderItemProcurement of parts from vendors. Receipt creates Part rows with Source="PO".
ConsumptionRequest / ConsumptionRequestItemsMechanism for requesting parts for use in a repair. ⚠️ Refactor finding: write-down of inventory on consumption is not fully wired.
RCReplacementPartsRecords which parts were used in which repair. ⚠️ Notable smell: HarvastingSN (sic) is a string, not an FK.
HarvestingEventA harvest operation — produces Part rows from a donor unit.
RecoveryEvent⚠️ Unclear distinction from HarvestingEvent — see Recovery in stations table above.

TermDefinition
SystemInformationThe structured spec record for a unit (CPU, BIOS, RAM total, display res, OS, color, etc.). Populated by the Windows Test System. Has child rows in SystemInformationDisk and SystemInformationGraphic.
SystemInformationBlobA JSON blob of the raw captured spec on WorkTracking. May be unsynced (IsSystemInformationBlobSynced=false) if it could not be parsed into the structured tables.
Engineering tables*Per-component captured detail: EngineeringCpuData, EngineeringBatteryData, EngineeringDiskData, EngineeringDisplayData, EngineeringGpuData, EngineeringMemoryData, EngineeringNetworkData, EngineeringWebcamData.
SystemInformationVarianceCode / SystemVarianceCodeAssignmentFlags when a captured spec doesn’t match the expected SKU configuration.
TestSnResults / TestFilesResultsTest outcomes per serial.
WindowsTestResultsUploadUpload record from the Windows Test System back into the database.
WindowsDeviceHashWindows device hardware hash (for Autopilot enrollment).
ImagingAndTestingLogAudit log of imaging/testing events.
DPK (Digital Product Key)Microsoft Windows license key. Stored in DigitalProductKey with AssignedSerialNumber linking it to the unit it was injected into. Format validated as XXXXX-XXXXX-XXXXX-XXXXX-XXXXX.
DpkSkusSpecifiedCatalogMaps which SKUs require which Windows editions.

TermDefinition
Cosmetic evaluationTriage questionnaire scoring physical appearance defects. Score 0–100.
Functional evaluationTriage questionnaire scoring operational defects. Score 0–100.
TriageEvaluationCategory → Question → OptionHierarchy of the questionnaire. Each option has a ScoreValue and optional flags.
Auto-failAn option flagged autoFail=true — selecting it forces the evaluation to a failure grade regardless of total score.
RTV (Return To Vendor)An option flagged isRTV=true — triggers Quarantine routing instead of Repair Center.
TriageErrorRecordsPer-error rows written when a unit goes from Triage to Repair Center — captures the specific error codes that triggered the route.
TriageEvaluationGradesScoreThe score-to-grade mapping (e.g., 0–9 → A, 10–20 → B, 21–45 → C, 46+ → D). Per evaluation type.
TriageEvaluationSubmissionThe submitted questionnaire response — includes the full Q&A serialized as JSON, the final score, the grade, and flags like needRepair, needPaint, needRelam.

TermDefinition
GradingTypesThe set of valid grades for a Project (e.g., “Grade A”, “Grade B”, “AS-IS”, “IMC”, “FLIP”). Each has a GradingTextOnLabel (e.g., “A”, “AS”).
SubGradingOptional sub-classification under a GradingTypes.
AS-ISUnit shipped without refurbishment. ⚠️ Assumption — auto-assigned at Dock for certain inbound types per DockStationControllerService lines 91–169.
IMC⚠️ Operational meaning not derivable from code. Need confirmation.
FLIP⚠️ Operational meaning not derivable from code. Need confirmation.
TYPE BERThe grade applied automatically when a unit reaches BER.

TermDefinition
FishbowlExternal inventory ERP integrated via FishbowlDbContext (MySQL). Synced via FishBowlInventoryIntegrationService.
HPPCB APIHP-specific external service in CTLShopFloor.Services.HPPCBApi. ⚠️ Assumption — used for HP serial/warranty lookups.
BOL (Bill of Lading)The shipping document. BOLFileIdentifier on WorkOrder ties units to the original truck-arrival document.
Pre-AlertAdvance shipping notice — a spreadsheet/file delivered before the truck arrives, used to seed expected receivables and BOMHeader entries. Both standard (PrealertBol, PreAlertBolDetails) and RMA-specific (KtyPrealertBol, KtyPreAlertBolDetails) variants exist.
LPNLicense Plate Number — shipment tracking identifier on RmaHeader.
TenantFinbuckle multi-tenant identity (e.g., “Dallas SL”, “Mexicali”). Stored in TenantDbContext; many behaviors branch on tenant.
HangfireBackground-job framework. Most jobs gated by JOBS:allowJobsExecution config flag.
Audit.NET → MongoDBAudit log sink for entity changes.
Azure Blob StorageUsed for images and uploaded files (AzureBlobStorageContainers enumerates the containers).

AcronymExpansion
BERBeyond Economical Repair
BOMBill of Materials
BOLBill of Lading
CTOConfigure To Order
DPKDigital Product Key (Windows license)
FGIFinished Goods Inventory
FGFinished Good
LPNLicense Plate Number
MESManufacturing Execution System
OEMOriginal Equipment Manufacturer
POPurchase Order
QAQuality Assurance
RCRepair Center
RMAReturn Merchandise Authorization
RTVReturn To Vendor
SKUStock Keeping Unit
SNSerial Number
WIPWork In Progress
WMSWarehouse Management System