Skip to main content

Sequence Generators

This guide explains how to create and manage sequence generators in Tagnet Enterprise & Cloud. Sequence generators automatically create unique identifiers for your items and RFID tags, ensuring consistency and preventing duplicates. They live on the Sequence Generators tab of the Items page, next to the item types that use them; create one from that page's Add menu.

Overview​

Every item and RFID tag in your system needs a unique identifier. Manually creating these IDs is error-prone and time-consuming. Sequence generators solve this by:

  • Automatically generating the next ID in a sequence
  • Enforcing consistency with configurable formats
  • Preventing duplicates through centralized control
  • Adding validation with check digits to catch data entry errors

Understanding Sequence Types​

Tagnet supports two types of sequences:

TypePurposeExample
Instance IDHuman-readable identifier for inventory itemsLAPTOP-0001234-7
Tag ID96-bit hexadecimal value written to RFID tags540010001000000000001A3

Instance IDs​

Instance IDs identify physical items in your inventory. They're designed to be:

  • Human-readable and easy to type
  • Printable on labels and barcodes
  • Searchable in the system

Tag IDs​

Tag IDs are written directly to RFID tags. They follow the EPC (Electronic Product Code) standard:

  • 96 bits = 24 hexadecimal characters
  • Optimized for RFID reader/writer operations
  • Can embed metadata like scope and partition codes

Encoding Schemes​

An encoding scheme defines the structure and format of generated IDs. Tagnet offers several built-in schemes plus a fully customizable option.

Scheme Comparison​

SchemeTypeFormatBest For
CustomBothUser-defined prefix + number + suffixLegacy system compatibility
Instance SimpleInstanceZero-padded numberEasy onboarding, simple tracking
Instance with Check DigitInstanceNumber + Luhn check digitError-resistant manual entry
Instance TypedInstanceType prefix + number + check digitMulti-category inventory
Instance DatedInstanceDate + number + check digitDate-based tracking
Instance PartitionedInstanceT + scope + serial + CRC-8Scope-aware with validation
Tag PartitionedTagHeader + scope + partition + serial + CRC-8Standard RFID tagging
Tag SignedTagPrefix + scope + serial + CRC-16Tamper-resistant tagging

Instance ID Schemes​

Instance Simple​

The simplest option: just a zero-padded sequential number with no additional formatting.

Structure: [Zero-Padded Number]

Example: 0000000001, 0000000002, 0000000003

Configuration:

SettingDescription
Max LengthTotal digits (default: 10)

Use Cases:

  • Getting started quickly
  • Simple sequential tracking
  • Environments where IDs are always scanned (no manual entry concerns)
  • When you just need unique numbers

This is the default scheme for new installations.


Custom​

The most flexible option. You define the format using prefix, suffix, and padding.

Structure: [Prefix][Padded Number][Suffix]

Example Configuration:

SettingValueResult
PrefixINV-
Max Length12
Start Value1INV-00000001

Use Cases:

  • Simple sequential numbering
  • Matching existing ID formats from legacy systems
  • Department-specific prefixes (e.g., IT-, MFG-, WHSE-)

Instance with Check Digit​

Adds a Luhn check digit to catch manual entry errors.

Structure: [Padded Number]-[Check Digit]

Example: 00012345-2

The check digit (the final 2) is mathematically calculated from the preceding numbers. If someone mistypes 00012345-2 as 00012346-2, the system will reject it because the check digit doesn't match.

Use Cases:

  • High-volume manual data entry
  • Barcode scanning with manual fallback
  • Environments where typos are costly (medical, financial)

How the Check Digit Works: The Luhn algorithm detects:

  • Single-digit errors (typing 5 instead of 6)
  • Transposition errors (typing 12 instead of 21)

This catches ~90% of common data entry mistakes.


Instance Typed​

Embeds a type code to identify the category at a glance.

Structure: [Type Prefix]-[Padded Number]-[Check Digit]

Example: LAPTOP-0001234-7

Configuration:

SettingDescription
Type PrefixCategory identifier (e.g., LAPTOP, TOOL, PALLET)
Total LengthOverall length including prefix and check digit

Use Cases:

  • Mixed inventory where visual identification helps
  • Warehouse operations (staff can see item type without scanning)
  • Reporting and filtering by category

Examples by Industry:

IndustryType Prefixes
IT AssetsLAPTOP, MONITOR, DOCK, PHONE
ToolsDRILL, SAW, METER, WRENCH
MedicalPUMP, BED, CART, SCOPE

Instance Dated​

Embeds the creation date for time-based tracking.

Structure: [YYYYMMDD]-[Padded Number]-[Check Digit]

Example: 20260122-00001-3

The date portion uses the current date when the ID is generated.

Use Cases:

  • Batch tracking in manufacturing
  • Warranty tracking (date of entry = date of receipt)
  • Seasonal inventory management
  • Compliance requiring date traceability

Instance Partitioned​

Human-readable equivalent to Tag Partitioned. Embeds scope information with CRC-8 validation.

Structure:

┌────────┬───────┬─────────┬───────┐
│ Prefix │ Scope │ Serial │ CRC-8 │
│ T │ 0001 │ 0000001 │ A3 │
│ (1) │ (4) │ (7) │ (2) │
└────────┴───────┴─────────┴───────┘
Example: T0001-0000001-A3
SegmentLengthDescription
Prefix1Fixed "T" for Tagnet
Scope4Auto-filled from assigned access scope (decimal)
SerialVariableSequential number (based on max length)
CRC-82Checksum for error detection (hex)

Configuration:

SettingDescription
Total LengthOverall length including all segments (default: 16)

Use Cases:

  • Multi-site operations where scope identification matters
  • Environments needing both human readability and validation
  • When you want the benefits of Tag Partitioned but for instance IDs
  • Scenarios where IDs may be manually entered but need error detection

Tag ID Schemes​

Tag ID schemes generate 96-bit (24 hex character) identifiers suitable for writing to RFID tags.

Custom (Tag)​

Same as Instance Custom, but outputs hexadecimal and defaults to 24 characters.

Use Cases:

  • Matching existing tag formats
  • Simple sequential hex numbering

Tag Partitioned​

A structured 96-bit format with embedded metadata and error detection.

Structure:

┌────────┬───────┬───────────┬───────────────┬───────┐
│ Header │ Scope │ Partition │ Serial │ CRC-8 │
│ 54 │ 001 │ 0001 │ 0000000000001 │ A3 │
│ (2) │ (3) │ (4) │ (13) │ (2) │
└────────┴───────┴───────────┴───────────────┴───────┘
Total: 24 hex characters (96 bits)
SegmentLengthDescription
Header2Fixed identifier (54 = Tagnet)
Scope3Auto-filled from assigned access scope
Partition4User-defined category code
Serial13Sequential number (~4.5 quadrillion values)
CRC-82Checksum for error detection

Configuration:

SettingDescription
Partition Code4 hex characters to categorize tags (e.g., 0001 for raw materials, 0002 for finished goods)

Use Cases:

  • Standard RFID deployments
  • Multi-site operations (scope identifies origin)
  • Category-based filtering at the tag level

Example Partition Strategy:

PartitionCategory
0001Raw Materials
0002Work in Progress
0003Finished Goods
0004Equipment

Tag Signed​

Similar to Partitioned, but uses a stronger checksum with a secret salt for tamper resistance.

Structure:

┌────────┬───────┬─────────────────┬─────────┐
│ Prefix │ Scope │ Serial │ CRC-16 │
│ A0 │ 001 │ 000000000000001 │ B2F4 │
│ (2) │ (3) │ (15) │ (4) │
└────────┴───────┴─────────────────┴─────────┘
Total: 24 hex characters (96 bits)
SegmentLengthDescription
Prefix2Configurable identifier (default: A0)
Scope3Auto-filled from assigned access scope
Serial15Sequential number (~1 quadrillion values)
CRC-164Salted checksum for tamper detection

How the Salt Works: A secret salt (auto-generated when you create the generator) is used when calculating the CRC-16. This means:

  • Only your system can generate valid tag IDs
  • You can verify if a tag was created by your system
  • Forged tags will fail validation

Use Cases:

  • Environments where tag authenticity matters
  • Supply chain anti-counterfeiting
  • High-security asset tracking
  • Situations where tags might be read by untrusted parties

Creating a Sequence Generator​

  1. Open the Items page and choose its Sequence Generators tab
  2. Choose Sequence Generator from the Add menu in the page header
  3. Fill in the configuration (see below)
  4. Review the ID Structure Preview to verify the format
  5. Click Create

Configuration Fields​

Basic Settings​

SettingDescription
NameDescriptive name (e.g., "IT Asset Instance IDs")
DescriptionOptional notes about usage
Sequence TypeInstance ID or Tag ID
Encoding SchemeFormat structure (see schemes above)
Access ScopeWhich scope owns this generator. By default this routes to the shared system scope with no prompt; if your deployment enables the Scoping > Site Catalog policy (disabled by default, see Policies), this becomes an Availability choice so a site can own its own generator. See Access Scopes.

Sequence Settings​

SettingDescriptionDefault
Start ValueFirst number in the sequence1
IncrementStep between values1

Scheme-Specific Settings​

Depending on the selected scheme, additional fields appear:

SchemeAdditional Settings
CustomPrefix, Suffix, Max Length, Output Type (Decimal/Hex)
Instance with Check DigitTotal Length
Instance TypedType Prefix, Total Length
Instance DatedTotal Length
Tag PartitionedPartition Code
Tag SignedPrefix

Setting a Default Generator​

Check Set as default generator for this type and scope to make this generator the automatic choice for new items in the specified scope.

Each scope can have one default generator per sequence type (Instance ID and Tag ID).


Collision Warnings​

As you configure a generator's format (scheme, prefix, suffix, partition code, access scope, salt), Tagnet checks it against every other generator of the same sequence type (Instance ID or Tag ID) and shows inline warnings in the Format section of the create and edit forms:

SeverityMeaning
🔴 HighTwo generators can mint identical values right now, or their counter ranges are close enough (within roughly 10 million generated values) that they will start colliding soon.
🟡 MediumTwo generators share a value space in a way that isn't an immediate risk, for example the same scheme and length with far-apart counter positions, or two Tag Partitioned generators that differ only in salt. Overlapping values are skipped at mint time rather than reused, but they still waste sequence capacity.

The check looks at what actually gets rendered into the value, not just whether the scheme name matches, and compares text case-insensitively (a prefix of abc counts as the same as ABC). Generators with distinct prefixes, partition codes, or access scopes don't warn even when they share a scheme, because those differences make the rendered values structurally incapable of colliding, for example a Tag Partitioned generator's scope and partition code are embedded directly in every value it mints, so two generators in different scopes (or with different partition codes) can never produce the same value. Two Tag Partitioned generators that share a scope and partition but carry different salts get a Medium warning instead: only the check digit differs between them, so roughly 1 in 256 serials overlaps (a copied generator gets a fresh salt automatically and lands in this category until you change its partition). Two generators with an identical rendered format only warn when their counter ranges sit within roughly 10 million generated values of each other; the distance accounts for each generator's Increment, and ranges staggered far enough apart are treated as practically unreachable and stay silent.

If warnings are still showing when you save, Tagnet asks you to confirm, listing every warning and its severity, before creating or updating the generator. This applies to both create and edit; it does not block the save.


Using Generators​

Generators are assigned at the Item Type level, not on individual catalog items. Every item of a given type inherits that type's strategy and generator. To change which generator is used, edit the Item Type on the Item Types tab of the Items page.

Scope Default Resolution​

When an inventory item is commissioned or created for an item type that uses the Sequence Generator strategy, Tagnet resolves the generator to use in this order:

  1. Pinned generator. If the item type has a specific generator selected (not Scope default), that generator is always used, regardless of which scope the inventory item is created in.
  2. Scope default. If the item type's selection is left on Scope default, Tagnet uses the default generator for that sequence type (Instance ID or Tag ID) in the new inventory item's own access scope, the site or scope the item is actually being created or commissioned into. This is not necessarily the item type's own access scope.
  3. The next value is atomically generated and assigned, preventing duplicates even under concurrent creates.

There is no fallback to the system scope. If a type is left on Scope default and the inventory item's scope has no default generator for that sequence type, creating the item fails: the create form shows an error, a Commission API row fails with a message naming the missing generator, and generating a tag from the item's tag action returns an error. See Shared Catalog with Scope Default below for how to set this up correctly across sites.

Choosing a Generator on an Item Type​

When creating or editing an Item Type, select Sequence Generator as the Instance ID Strategy (or Tag ID Strategy). A generator dropdown appears with Scope default as the first option, followed by the generators available in the item type's own access scope plus the system scope. This strategy is selectable even if no generators exist yet in scope.

  • Scope default (the default selection): no generator is pinned. Each inventory item resolves its generator from the default generator of its own scope at creation time, as described above.
  • A specific generator: every inventory item of this type always uses that one generator, no matter which scope the inventory item is created in.

Note: The dropdown only lists generators from the item type's own access scope and the system scope, it never lists another site's generators. To have a single item type resolve a different generator per site, leave the selection on Scope default and give each site its own default generator, rather than trying to pin one from this dropdown.

Generating Values​

Values are generated when:

  • An inventory item is commissioned via the Commission API
  • A new inventory item is created manually
  • Bulk operations create multiple inventory items

Each generation atomically increments the counter, preventing duplicates even under high concurrency.


Managing Generators​

The Sequence Generators list can be filtered by Sequence Type (Instance ID or Tag ID) in addition to the search box, useful once you have generators for both kinds of identifier in the same scope.

Viewing Generator Details​

Click a generator to open its detail page at a stable, shareable URL. The Overview tab is a stack of sections:

SectionShows
BasicsName, sequence type, encoding scheme, whether it's the scope default, and the description
FormatOutput type, length, prefix, suffix, and partition code
NumberingStart value, increment, the last value generated, and how many values the generator has produced so far
Used byEvery item type that pins this generator by name and which strategy it's pinned for (Instance ID, Tag ID, or both), each linking to that item type's own page

If the generator is a scope default, a note under Used by clarifies that it also serves item types left on Scope default in that scope, in addition to the item types listed as explicit pins.

The Preview tab shows the ID structure, the next value, its total length, and how many more values the format can hold (Available), then the Upcoming values the generator would produce next: 10 by default, with a Show dropdown for 25, 50, or 100, and Copy all to put them on the clipboard. Previewed values are not reserved or used up.

Editing a Generator​

Click Edit from the generator's actions menu (or from its detail page) to open an edit page pre-filled with its current values, with a section navigation rail and a sticky footer showing unsaved-changes state. You can modify:

  • Name and description
  • Start value and increment
  • Scheme-specific settings (prefix, partition code, etc.)
  • Default status

Caution: Changing format settings (prefix, scheme, etc.) on a generator that's already in use may create inconsistent IDs in your system. See Collision Warnings above for how Tagnet flags configurations that risk overlapping with another generator.

Deleting a Generator​

Generators can only be deleted if no items are using them. If items reference a generator, you must:

  1. Reassign those items to a different generator, or
  2. Delete the items first

Best Practices​

Planning Your ID Strategy​

Before creating generators:

  1. Map your categories - List all item types you'll track
  2. Choose consistency - Use the same scheme across similar items
  3. Plan for growth - Ensure sufficient serial number length
  4. Consider operations - Will staff read IDs visually? Use typed schemes.
Use CaseSequence TypeRecommended Scheme
Getting started / simple trackingInstanceInstance Simple
Manual data entry environmentsInstanceInstance with Check Digit
Multi-category inventoryInstanceInstance Typed
Manufacturing batchesInstanceInstance Dated
Multi-site with validationInstanceInstance Partitioned
Standard RFID tagsTagTag Partitioned
High-security applicationsTagTag Signed
Legacy system compatibilityBothCustom

Naming Conventions​

DoDon't
IT Assets - LaptopsGen1
Warehouse A - PalletsPallet generator
Manufacturing - WIP Tagstags

Include the scope/location and purpose in the name.

Scope Strategy​

PatternSetup
CentralizedOne generator in the system scope for all sites
DistributedEach site has its own generator in its scope
HybridSystem scope defaults with site-specific overrides

Centralized ensures unique IDs across your entire organization. Distributed allows sites to operate independently (useful for offline scenarios).

Note: The Distributed and Hybrid patterns place generators in individual site scopes, which requires the Scoping > Site Catalog policy. That policy is disabled by default, so new generators route to the shared system scope with no scope prompt until an administrator enables it (see Policies).

Shared Catalog with Scope Default​

A common multi-site pattern combines one shared item type with a per-site default generator, so you don't need to duplicate item types just to get site-specific sequences:

  1. Create the item type once, in the system scope, with Instance ID Strategy and/or Tag ID Strategy set to Sequence Generator and the generator selection left on Scope default.
  2. In each site scope, create a generator for the sequence type(s) you need and check Set as default generator for this type and scope.
  3. As each site creates or commissions inventory items of that type, Tagnet automatically mints from that site's own default generator, no per-site item types required.

Give each site's default generator a distinct prefix, type prefix, or partition code (for example, a site code like DC1-, DC2-). Instance IDs and Tag IDs must be unique across your entire Tagnet instance, so if two sites' default generators produce identically formatted values, they will eventually collide on the same values.


Validation and Error Detection​

Check Digits (Instance Schemes)​

The Luhn check digit catches:

  • Single digit errors (~90% detection)
  • Adjacent transposition errors

When someone enters an ID manually, the system validates the check digit and rejects invalid entries.

CRC Checksums (Tag Schemes)​

SchemeChecksumDetection Rate
Tag PartitionedCRC-8~99.6% of random errors
Tag SignedCRC-16~99.998% of random errors

CRCs detect:

  • Bit errors from RF interference
  • Corrupted reads
  • Truncated data

Validating Tag Authenticity (Tag Signed)​

For Tag Signed scheme only:

  • The system can verify if a scanned tag was generated by your system
  • Tags with invalid CRCs are flagged as potentially counterfeit or corrupted
  • This requires the generator's salt, which is only stored in your system

Frequently Asked Questions​

Q: Can I change a generator's scheme after creation? A: Yes, but this only affects newly generated IDs. Existing items keep their current IDs.

Q: What happens if a generator reaches its maximum value? A: The system will show an error and refuse to generate more values. You'll need to create a new generator with a larger capacity. You can see this coming on the generator's detail page: once a generator is exhausted, the Preview tab's Next value reads "Exhausted (maximum reached)" instead of a value, and Upcoming values stops early with a message explaining how many more values (if any) remain before the format's capacity runs out.

Q: Can two generators produce the same ID? A: Yes, if they render to the same format and their counter ranges are close enough to overlap. See Collision Warnings for how Tagnet detects and flags this. To ensure uniqueness, use different prefixes, partition codes, salts, or access scopes, or use a single centralized generator.

Q: How do I migrate from a legacy ID system? A: Create a Custom scheme generator matching your existing format, and set the Start Value to continue from your last used number.

Q: Can I reset a generator's counter? A: Administrators can reset the current value, but this risks creating duplicate IDs if previous values were already assigned to items.

Q: Why can't I delete a generator? A: Generators with items assigned to them cannot be deleted. Reassign or delete the items first.

Q: Why did creating or commissioning an inventory item fail with an error about a missing default generator? A: The item type's Instance ID or Tag ID strategy mints from a generator (Sequence Generator, or Sequence Generator with supplied Tag ID wins for a row that supplied no Tag ID) with the selection left on Scope default, and the scope you're creating the item in has no default generator for that sequence type. Create a generator in that scope and check Set as default generator for this type and scope (see Shared Catalog with Scope Default), or pin a specific generator on the item type instead.

Q: What's the difference between CRC-8 and CRC-16? A: CRC-16 provides stronger error detection and, when combined with a salt, provides basic tamper resistance. Use CRC-16 (Tag Signed) when tag authenticity matters.

Q: Do I need different generators for different item types? A: Not necessarily. You can use:

  • One generator with a neutral prefix for all items
  • Instance Typed scheme with the type embedded in each ID
  • Separate generators per category for complete isolation