Traceability and Serialization
Manufacturing & Traceability Guide
Manage serial number series, generate traceable identifiers, and track manufacturing data with full audit capabilities.
Table of Contents
- Overview
- Understanding Serial Number Series
- Creating a Series
- Format String Tokens
- Base Types & Encoding
- Reset Rules
- Generating Serial Numbers
- Records & Tracking
- Script Engine Integration
- Best Practices
1. Overview
The Traceability Management system provides enterprise-grade serial number generation and tracking for manufacturing environments. It supports:
- Configurable Formats — Build serial numbers with date tokens, sequences, and custom prefixes
- Multiple Base Types — Numeric, alphanumeric, hexadecimal, or alpha-only encoding
- Automatic Reset — Reset sequences daily, weekly, monthly, yearly, or per shift
- Global Uniqueness — Enforce company-wide uniqueness across all series
- Full Audit Trail — Track when, where, and why each serial was generated
- High Capacity — Support billions of unique identifiers per series
Use Cases:
- Product serial numbers
- Batch/lot identifiers
- Work order numbers
- Document numbers
- Asset tags
- Shipping labels
2. Understanding Serial Number Series
A Series defines how serial numbers are formatted and generated. Each series has:
ComponentDescriptionNameHuman-readable identifierFormat StringTemplate with tokens for building serial numbersBase TypeNumeric, alphanumeric, hex, or alpha encodingReset RuleWhen to reset the sequence counterCurrent ValueThe last sequence number usedIncrementHow much to increase sequence each timeMin LengthMinimum digits/characters for sequence portionGlobalWhether to enforce company-wide uniqueness
3. Creating a Series
Step 1: Open Traceability Management
Navigate to Manufacturing → Traceability.
Step 2: Click "Add Series"
Click the Add Series button in the series panel.
Step 3: Configure the Series
Basic Settings:
FieldDescriptionExampleSeries NameDescriptive nameProduct Serial NumbersFormat StringTemplate with tokensSN-{YYYY}{JJJ}-{####}
Sequence Settings:
FieldDescriptionDefaultStarting ValueFirst sequence number0Increment ByStep between numbers1Min LengthMinimum sequence digits4
Advanced Settings:
FieldDescriptionBase TypeEncoding system (see Section 5)Reset RuleWhen to reset (see Section 6)Global SeriesCompany-wide uniqueness check
Step 4: Preview and Create
The live preview shows what generated serials will look like. Click Create Series when ready.
4. Format String Tokens
Build your serial number format using these tokens:
Date & Time Tokens
TokenDescriptionExample{YYYY}4-digit year2025{YY}2-digit year25{MM}Month (01-12)06{DD}Day (01-31)15{JJJ}Julian day (001-366)166{WW}Week of year (01-53)24{HH}Hour (00-23)14{NN}Minutes (00-59)30{SS}Seconds (00-59)45
Sequence Tokens
TokenDescriptionExample{SEQUENCE}Sequence number0042{####}Sequence (alias)0042
Context Tokens (Set in Label Designer)
TokenDescription{SHIFT}Current shift (A/B/C){LINE}Production line{PLANT}Plant/facility code{BATCH}Batch identifier{PART}Part number
Format String Examples
Standard Product Serial:
SN-{YYYY}{JJJ}-{####}
Result: SN-2025166-0042
Date-Stamped with Shift:
{YY}{MM}{DD}{SHIFT}-{SEQUENCE}
Result: 250615B-00123
Alphanumeric Compact:
P{YY}{WW}-{####}
Result: P2524-001A (with alphanumeric base type)
Manufacturing Batch:
LOT-{YYYY}{MM}{DD}-{LINE}-{####}
Result: LOT-20250615-L1-0001
5. Base Types & Encoding
Choose how the sequence portion is encoded:
Numeric (Default)
Characters: 0-9
| Capacity (4 digits) | 10,000 | | Example | 0001, 0042, 9999 |
Best for: Standard serial numbers, traditional systems
Alphanumeric (Base36)
Characters: 0-9, A-Z
| Capacity (4 digits) | 1,679,616 | | Example | 0001, 00A1, ZZZZ |
Best for: High-volume, compact identifiers
Hexadecimal (Base16)
Characters: 0-9, A-F
| Capacity (4 digits) | 65,536 | | Example | 0001, 00FF, FFFF |
Best for: Systems expecting hex values, electronics
Alpha Only (Base26)
Characters: A-Z
| Capacity (4 digits) | 456,976 | | Example | AAAA, ABCD, ZZZZ |
Best for: Letter-only requirements, avoiding number confusion
Capacity Comparison
Base Type4 Chars6 Chars8 CharsNumeric10K1M100MAlphanumeric1.7M2.2B2.8THexadecimal65K16.8M4.3BAlpha Only457K309M209B
6. Reset Rules
Control when the sequence counter resets to the starting value.
Never (Default)
The sequence continues indefinitely until capacity is reached.
Use for: Product serials that must always be unique
Daily
Resets at midnight (server time).
Use for: Daily batch numbers, shift logs
Example:
- Day 1:
0001,0002,0003 - Day 2:
0001,0002,0003
Weekly
Resets Monday at midnight.
Use for: Weekly production batches
Monthly
Resets on the 1st of each month.
Use for: Monthly document numbering
Yearly
Resets January 1st.
Use for: Annual document series (invoices, POs)
Per Shift
Resets every 8 hours (3 shifts per day).
Use for: Shift-specific tracking
7. Generating Serial Numbers
From the UI
- Select a series in the series panel
- Click Generate Serial
- Optionally enter Work Order and Part Number
- Set quantity (1-100)
- Click Generate
Batch Generation
Generate multiple serials at once by setting Quantity > 1:
- Up to 100 serials per request
- All serials linked to same Work Order (optional)
- Returns list of generated serials
From Scripts
function main(context) {
// Generate single serial
const serial = manufacturing.generateSerial("Product Serial Numbers");
// Generate with context
const batchSerial = manufacturing.generateSerial("Batch Numbers", {
workOrder: context.workOrderNumber,
partNumber: context.partNumber,
metadata: {
operator: context.operatorId,
station: context.workstationId,
},
});
// Generate multiple
const serials = manufacturing.generateSerials("Labels", 10, {
workOrder: "WO-12345",
});
return {
serial: serial,
batchSerial: batchSerial,
labelSerials: serials,
};
}
8. Records & Tracking
Every generated serial is tracked in the records explorer.
Viewing Records
- Select a series to see its records
- Or search across all series using the search box
Record Fields
FieldDescriptionSerial NumberThe generated identifierGenerated AtTimestamp of creationWork OrderAssociated work orderPart NumberAssociated part numberStatusCurrent status (generated, printed, in_progress, completed)Context DataAdditional metadata
Status Values
StatusDescriptiongeneratedSerial created but not yet usedprintedLabel printedin_progressItem in productioncompletedProduction finished
Record Details
Click the eye icon on any record to view full details including context data.
9. Script Engine Integration
Manufacturing API
The Script Engine provides full access to traceability functions:
Generate Serial:
// Basic generation
const serial = manufacturing.generateSerial("Series Name");
// With options
const serial = manufacturing.generateSerial("Series Name", {
workOrder: "WO-12345",
partNumber: "PART-001",
metadata: {
operator: "John Smith",
line: "Assembly-3",
},
});
Generate Multiple:
// Generate batch of serials
const serials = manufacturing.generateSerials("Series Name", quantity, options);
Query Records:
// Get records by work order
const records = manufacturing.getRecordsByWorkOrder("WO-12345");
// Get record by serial
const record = manufacturing.getRecordBySerial("SN-2025166-0042");
Update Status:
// Update record status
manufacturing.updateRecordStatus(serialNumber, "completed", {
completedBy: context.operator,
completedAt: new Date().toISOString(),
});
Example: Complete Manufacturing Flow
function main(context) {
const { workOrder, partNumber, quantity } = context;
// Generate serials for production batch
const serials = manufacturing.generateSerials("Product Serials", quantity, {
workOrder: workOrder,
partNumber: partNumber,
});
// Generate labels for each serial
for (const serial of serials) {
documents.generate("Product Label", {
serialNumber: serial,
partNumber: partNumber,
date: new Date().toISOString(),
});
}
// Update status to printed
for (const serial of serials) {
manufacturing.updateRecordStatus(serial, "printed");
}
return {
success: true,
serialsGenerated: serials.length,
serials: serials,
};
}
10. Best Practices
Format Design
- Include date elements — Makes serials sortable and debuggable
- Use Julian day for compactness —
{JJJ}instead of{MM}{DD} - Match industry standards — Some industries have specific requirements
- Plan for capacity — Consider future growth when setting min length
Series Organization
- One series per use case — Don't mix product serials with document numbers
- Descriptive names —
Product Serial - Widget AnotSeries 1 - Document purpose — Record what each series is for
Global vs. Local Uniqueness
Use Global when:
- Serials must be unique across your entire company
- Multiple series might generate similar formats
- Regulatory compliance requires absolute uniqueness
Use Local (default) when:
- Serials are part-specific
- Different series have clearly different formats
- Performance is critical (local checks are faster)
Reset Rule Selection
Use CaseRecommended ResetProduct serialsNeverDaily production logsDailyWeekly batch numbersWeeklyInvoice numbersNever or YearlyShift labelsPer Shift
Capacity Planning
- Calculate annual volume — How many serials per year?
- Add safety margin — Plan for 3-5x expected volume
- Consider format lifespan — Will this format last 10+ years?
- Test with high volumes — Verify performance at scale
Audit Trail
- Always include Work Order — Links serials to production context
- Add metadata — Operator, station, shift for compliance
- Regular exports — Back up traceability data periodically
Screenshots Summary
Please capture the following screenshots to complete this documentation:
- Traceability Management main interface - Series panel and records explorer
- Series panel - List of configured series with details
- Add Series modal - All configuration fields
- Available Tokens section - Clickable token buttons
- Reset Rule dropdown - All options with descriptions
- Generate Serial modal - Work order and quantity fields
- Records Explorer - List of generated serials
- Record Details modal - Full record with context data