Skip to main content

New Mexico NMS2S Lot and Batch Numbering

Why lot numbers matter more under NMS2S than they did in BioTrack, a recommended naming pattern for bulk and finished goods, and how to carry the lot into both systems during dual entry.

In BioTrack, the 16-digit barcode answered enough questions that a separate lot number never felt necessary. Most New Mexico operators either left the lot field blank or copied the state barcode into it. NMS2S does not fix this. It also lacks a real concept of a lot. That gap is where Flourish adds value, and the transition is the right time to implement a formal lot numbering system if one is not in place.

Why this matters now

  • Your state IDs changed systems, and they no longer hold still. Migrated inventory keeps its BioTrack barcode inside NMS2S, but everything created from here forward gets a new NMS2S-issued 16-digit ID, and NMS2S re-mints IDs constantly. A lot number is the only identifier you own.
  • You are running two systems. Until state inventory APIs ship, your team will match records between Flourish and the NMS2S portal every day. A 16-digit numeric ID is challenging to match by eye. A readable lot number shared across both systems turns a 22-second comparison into a 2-second one.
  • Recalls, audits, and GMP do not run on state IDs. A lot number bounds a recall to one production run and walks an auditor from a finished unit back to its inputs and COA.

To be clear about the rule: New Mexico's label requirement (16.8.3.9 NMAC) calls for the state track-and-trace identifier, the manufacturing date, and an unalterable expiration date on finished product labels. A lot number is not mandated. This is an operational control you choose to have.

What the lot number field actually does in Flourish

Behavior

What it means for you

Defaults blank

Flourish never fills it in. Every lot number in your system is one somebody typed.

Not required

Nothing stops you saving a package without one. A blank lot on a finished good is a traceability gap with no warning attached.

Not validated

The field accepts any user input. What you type is what prints on the label.

Not enforced unique

The same lot number can land on hundreds of unrelated products, silently. Neither BioTrack nor NMS2S will stop it either. Your convention is the only control that exists. It is expected that many package IDs could share one lot number, assuming they all belong to the lot.

Agree on what a lot is before you name it

A lot is a quantity of product produced from a common input under uniform conditions in a defined production run. A new run is a new lot even if the input is the same. A new input is a new lot even if the run is continuous.

One New Mexico-specific note: do not put a harvest name in a lot number. A packaged lot routinely draws on more than one harvest, and the NMS2S testing model attaches results to the item in its final form. Lineage lives on the record, not in the name.

Bulk and in-process material: date first

Use YYMMDD-[ITEM CODE]-[STRAIN CODE]-[SEQ] when the item carries a strain, and YYMMDD-[ITEM CODE]-[SEQ] when it does not.

  • 260908-CURE-RUNT-01 — cured flower, run 1 on Sep 8
  • 260908-CURE-RUNT-02 — second run, same day, same cultivar
  • 260908-DIST-01 — distillate, a strainless item, so no strain token

Token

Rule

YYMMDD

Six digits, no separators. Date-first makes alphabetical sort equal chronological sort in every grid and export.

ITEM CODE

3–5 characters from your item code table. Item codes carry form and size, never cultivar.

STRAIN CODE

3–4 characters from your strain code table. Present when the item record carries a strain, absent when it does not. The item master decides, not the person typing.

SEQ

Two digits, starts at 01, resets daily per item and cultivar. This is what keeps a same-day second run from doubling your recall scope.

Hyphen

One delimiter, used one way, no spaces.

Extraction and other multi-input runs take a leading X and a process token: X-260908-ROSN-01. A multi-harvest run never carries a strain code unless the run is genuinely single-cultivar.

Finished goods: product first

Anything read on a shelf or a jar leads with the product: [ITEM CODE]-[STRAIN CODE]-YYMMDD-[SEQ].

  • FLW35-RUNT-260908-01 — packaged eighth
  • GUM10-260908-01 — 10 mg gummy, strainless

Same tokens, same information, only the lead changes. Bulk is read in a sorted grid, so date-first wins. Finished goods are read on a label, and date-first would make every package produced that day identical through six characters. Product-first makes two products differ inside the first few characters a person actually reads.

This is a deliberate two-pattern system. If you want one pattern everywhere, use date-first everywhere and accept the shelf cost. Do not use product-first everywhere. It destroys the chronological sort that makes the bulk grid work.

Anything that leaves your walls: lead with your company code

Lot numbers are only unique inside one company. Two operators using this convention will both produce a FLW35-RUNT-260908-01 eventually, and if they trade with each other both strings land in one inventory.

Use [COMPANY CODE]-[ITEM CODE]-[STRAIN CODE]-YYMMDD-[SEQ] for finished goods and any bulk product sold B2B, for example ABC-FLW35-RUNT-260908-01.

Purely internal lots that never leave your license can skip the prefix, since the two-pattern grammar already keeps internal date-first lots visually distinct from inbound product-first lots.

Never re-lot inbound product. Record the supplier's lot exactly as it arrives. Their prefix is the namespace that keeps their lot from colliding with yours, and preserving the string verbatim is what lets a recall notice from them match your records.

Across company lines the compliance join key is still the NMS2S 16-digit ID, which is globally unique. The company code carries no compliance weight, it just keeps human-readable lots unambiguous between trading partners.

If you want to keep the barcode habit, fence it

Some operators want the lot to point at the state record because that is where the COA lives. The disciplined version is [LAST 6 OF THE TESTED SOURCE ITEM'S STATE ID]-YYMMDD-[SEQ], for example 026815-260908-01.

The anchor is the state ID of the tested source item — the package the COA was issued against — not the new package's own ID. That way the lot genuinely groups, and it answers "what else came from the material that failed testing?" directly. Six characters stays label-legible; the full ID stays on the record.

Two cautions. It cannot isolate a downstream failure, since a bad fill run shares its lot with every other run from the same source. And if one tested source feeds months of production, a recall on that lot pulls all of it. The date-first pattern above is the default recommendation; this variant is for teams who will genuinely maintain the source discipline.

Carry the lot number into NMS2S?

This is the New Mexico payoff, but it needs further validation. We will update this help doc if this position changes. NMS2S lets you set a free-text Product Name on any inventory item (open the item, then Add/Change Product Name). When you replay a Flourish production run into NMS2S during dual entry, put the Flourish lot number at the front of the NMS2S product name.

The NMS2S room grid and the Flourish package list can then be matched by eye, with no 16-digit comparisons. Daily-close reconciliation gets faster, dual-entry error rates drop, and when the state's inventory API ships, the crosswalk is already sitting in your data.

Field

Holds

Job

Flourish lot number

Your authored lot

Groups the run, prints on your label, matches by eye

Flourish ref_field_1

The NMS2S 16-digit ID (post-cutover packages; pre-cutover packages already carry the BioTrack barcode as their package ID)

Compliance identity, required by the dual-entry process

NMS2S Product Name

Your lot number

Makes the state grid readable and matchable

On labels: the state's Zebra label carries the NMS2S ID, and your finished-product label must carry the state identifier, manufacturing date, and expiration date. Adding the lot number is optional and recommended anyway. It is the only identifier on the package a person can read, compare, and call in.

What stays out of the lot number

The lot number identifies the run. It does not describe it. Everything below has a proper field in Flourish, and putting it in the lot number makes the lot both wrong and unreadable.

Do not encode

Put it here instead

The 16-digit state ID

ref_field_1 on the package

Potency

Lab result on the package. It changes on retest and identifies nothing.

Price

Price fields. It changes weekly and groups shelf tiers, not production.

Strain description

Strain record. The 3–4 character strain code belongs in the lot; prose never did.

Harvest name

The record carries lineage. A packaged lot can draw on several harvests.

Room, freezer, or vault

Area on the package. Material moves.

Free-text notes

ref_field_2 and ref_field_3, the open reference fields most teams do not know exist. In New Mexico, ref_field_1 is reserved for the NMS2S ID.

Placeholders such as a dot, NA, or TBD

Nothing. Worse than blank, because a placeholder defeats every completeness check.

The test for any token you are tempted to add: is it already a field in Flourish, and can it change after today? Yes to both means it comes out.

Three settings to turn on first

Setting

Why

Lot Tracked on cannabis items

Makes Flourish prompt for a lot number where it matters. Turning it on later does not retroactively lot-code existing inventory, so do it at the start of NMS2S life.

Sell By Lot on wholesale finished goods

Lets your sales and allocation flows key off the lot.

Your implementation contact can set these in bulk. Migrated inventory keeps whatever lot values it had, which in New Mexico is mostly blank. The convention applies from your first post-migration production run forward. Renumbering history is optional and usually not worth it; a clean starting line is.

Rollout and spot-check

  1. Confirm the lot definition, then the pattern, in that order.
  2. Turn on Lot Tracked and Sell By Lot, and populate strains on the item master.
  3. Publish the item and strain code tables where packaging staff can see them, and register your company code with Flourish.
  4. Use the new pattern on your first post-migration production run, and carry it into the NMS2S Product Name the same day.

Spot-check at two weeks and again at 30 days for blank lots on finished goods, more than one format in use, and any lot number attached to more than one item. These are cheap to fix at two weeks and effectively permanent by month three.

How did we do?

New Mexico NMS2S Non-Retail Receiving

New Mexico NMS2S Testing, COAs, and Label QR Codes

Contact