Skip to main content

Designing labels

Zebra Designer is free Windows-based WYSIWYG software offering basic barcode label design and print features.

Designing a new label

Prepare the label layout in Zebra Designer using static text labels and values. In label design please consider the following:

  1. Give enough space to the QR, Datamatrix, or other barcode: the bigger, the better.
  2. Use only ZEBRA fonts. Other font types are converted to graphics and can only be used for text that appears on all labels.
  3. Consider what text must be printed on the label. Our eyes can't read QR codes just yet. Space is limited! Keep the label informative, but not overloaded with text and graphics.
  4. Save your design files so you can update them later, or share them with others.
tip

Do not include data that is subject to change. If you print the location of the inventory on the label, will you have to print a new label when its location is reassigned?

You can always look up inventory data by scanning the QR code on the label!

Export as ZPL

  1. Use Save to file option in the label print dialog.
  2. Select the destination folder and file name.
  3. Open the file in a text editor and inspect the generated ZPL.

Convert to a label template

  1. Open the file in a text editor.
  2. Replace static text with appropriate variable placeholders
  3. Add the label to GGCE

Variable placeholders

GGCE will process the ZPL template and populate the variable placeholders with actual data.

Placeholders are in the form {{{variable.name}}}. The variables depend on the type of label. Variables for inventory labels are different than those for viability tests.

Inventory labels

The following variables are available for Inventory labels.

Variable nameExampleDescription
{{{inventory...}}}...Any inventory field. See Inventory data model below.
{{{inventory.barcode}}}I:654332The barcode value assigned to the inventory. Use this variable for QR and other barcodes.
{{{inventory.inventoryNumber}}}INTRO 4421 SDHuman-readable inventory number.
{{{accession...}}}...Any accession field. Accession data model below.
{{{accession.accessionNumber}}}TMp-419The accession number.
{{{taxon}}}Hordeum vulgareThe full taxonomic name of the accession.
Other variables

See the Data model below for other available variables!

Order request item labels

Variable nameExampleDescription
{{{orderRequestItem...}}}Any propery of the request item. See OrderRequestItem data model below.
{{{orderRequestItem.sequenceNumber}}}3The number of the item in the order.
{{{orderRequest...}}}Any property of the request. See OrderRequest data model below.
{{{orderRequest.localNumber}}}The local number of the request.
{{{inventory...}}}Any field of the inventory of the item. See Inventory data model below.
{{{inventory.inventoryNumber}}}The inventory of the item. See Inventory data model below.
{{{inventory.accession...}}}Any field of the accession of the inventory. See Accession data model below.
{{{inventory.accession.accessionNumber}}}TMp-419The accession number of the inventory
{{{withdrawnInventory...}}}Any field of the withdrawn inventory of the item. See Inventory data model below.
{{{item}}}Deprecated Use orderRequestItem.sequenceNumber instead.
{{{requestItem...}}}...Deprecated Use orderRequestItem instead.

Seed viability labels

Variable nameExampleDescription
{{{replicate}}}1The number of the replicate
{{{inventoryViability...}}}See InventoryViability data model
{{{inventory...}}}Any property of the inventory being tested. See Inventory model below
{{{accession...}}}Any property of the accession. See Accession data model below
{{{inventoryViabilityRule....}}}Any propery of the viability rule. See InventoryViabilityRule data model
{{{_counter}}}1Deprecated The number of the replicate

Formatting dates

Dates in ZPL label templates can be formatted with {{#formatDate}}...{{/formatDate}} tag. The syntax requires that the formatting pattern and the date value are separated by a single whitespace character.

The following are a few examples you can choose from:

FormatSyntaxResult
Year only{{#year}}{{{inventory.propagationDate}}}{{/year}}
is shorthand for yyyy pattern below.
2024
Year only{{#formatDate}}yyyy {{{inventory.propagationDate}}}{{/formatDate}}2024
Year and month{{#formatDate}}yyyy-M {{{inventory.propagationDate}}}{{/formatDate}}2024-5
Year and two digit month{{#formatDate}}yyyy-MM {{{inventory.propagationDate}}}{{/formatDate}}2024-05
Date/month/year{{#formatDate}}d/M/yyyy {{{inventory.propagationDate}}}{{/formatDate}}1/5/2024
Date/month/year{{#formatDate}}dd/MM/yyyy {{{inventory.propagationDate}}}{{/formatDate}}01/05/2024
Short month{{#formatDate}}d MMM yyyy {{{inventory.propagationDate}}}{{/formatDate}}1 AUG 2024
Long month{{#formatDate}}d MMM yyyy {{{inventory.propagationDate}}}{{/formatDate}}1 August 2024

Applying {{#year}}{{{inventory.propagationDate}}}{{/year}} will print only the year of the propagation date of the inventory:

image

Add label template to GGCE

Once you have your design worked out and have applied variables to the ZPL code it is time to add the label to GGCE.

Your label template will be registered as an Application setting in GGCE Admin tools:

Registering a label template

  1. Open Application settings menu in Admin tools.
  2. Add a new setting with category LABEL and the Name:
    • For inventory labels use INVENTORYITEM
    • For viability test labels use INVENTORYVIABILITY_REPLICATE
    • For distribution labels use REQUESTITEM
  3. Since you'll have more than one design you should specify a unique Sort order number starting from 1. Other label designs of the same type will use different numbers.
  4. Add the ZPL to the Value field and hit Save.

Friendly names for your designs

The names and descriptions of the designs are managed in the BARCODE_LABEL vocabulary.

To give a friendly name to INVENTORYITEM label with Sort order 1 you need to:

  1. Navigate to Code values menu in Admin tools.
  2. Hit the + action button to open the form to add a new code value.
  3. Fill out the form:
    • Group: must be BARCODE_LABEL.
    • Code: is INVENTORYITEM_1 for label of type INVENTORYITEM with Sort order 1.
    • Title: enter a user-friendly and short name for this label.
    • Description: add an explanation when this label should be used (e.g. "For 10x5 labels on printer B").
  4. Hit Submit.

Data model

createdBy
integer <int64>
createdDate
string <date-time>
modifiedBy
integer <int64>
modifiedDate
required
string <date-time> (Last modified date)

Maintained by the server, original value must be included in all update and delete operations.

object (AclSid)
ownedDate
string <date-time>
id
integer <int64>
required
object (Accession)
object (Site)
availabilityEndDate
string <date-time>
availabilityStartDate
string <date-time>
availabilityStatusCode
required
string [ 0 .. 30 ] characters
availabilityStatusNote
string
availabilityReasonCode
string [ 0 .. 30 ] characters
distributionCriticalQuantity
number <double> >= 0
distributionDefaultFormCode
string [ 0 .. 30 ] characters
distributionDefaultQuantity
number <double> >= 0
distributionUnitCode
string [ 0 .. 30 ] characters
formTypeCode
required
string [ 0 .. 30 ] characters
hundredSeedWeight
number <double>
inventoryNumber
string [ 0 .. 128 ] characters
inventoryNumberPart1
required
string [ 0 .. 50 ] characters
inventoryNumberPart2
integer <int64>
inventoryNumberPart3
string [ 0 .. 50 ] characters
isAutoDeducted
required
string [ 0 .. 1 ] characters
isAvailable
required
string [ 0 .. 1 ] characters
isDistributable
required
string [ 0 .. 1 ] characters
latitude
number <double>
longitude
number <double>
note
string
pathogenStatusCode
string [ 0 .. 30 ] characters
plantSexCode
string [ 0 .. 30 ] characters
pollinationMethodCode
string [ 0 .. 30 ] characters
pollinationVectorCode
string [ 0 .. 30 ] characters
propagationDate
string <date-time>
propagationDateCode
string [ 0 .. 30 ] characters
quantityOnHand
number <double> >= 0
quantityOnHandUnitCode
string [ 0 .. 30 ] characters
regenerationCriticalQuantity
number <double> >= 0
rootstock
string
barcode
string [ 0 .. 100 ] characters
storageLocationPart1
string [ 0 .. 20 ] characters
storageLocationPart2
string [ 0 .. 20 ] characters
storageLocationPart3
string [ 0 .. 20 ] characters
storageLocationPart4
string [ 0 .. 20 ] characters
webAvailabilityNote
string
containerTypeCode
string [ 0 .. 30 ] characters
preferredName
string
Array of objects (AccessionInvName)
object (InventoryExtra)
doi
string^10\.[0-9]+(\.[0-9]+)*/.+
generation
integer <int64>
distributionRank
integer <int32>
object (Geography)
systemInventory
boolean
{
  • "createdBy": 0,
  • "createdDate": "2019-08-24T14:15:22Z",
  • "modifiedBy": 0,
  • "modifiedDate": "2019-08-24T14:15:22Z",
  • "ownedBy": {
    },
  • "ownedDate": "2019-08-24T14:15:22Z",
  • "id": 0,
  • "accession": {
    },
  • "site": {
    },
  • "availabilityEndDate": "2019-08-24T14:15:22Z",
  • "availabilityStartDate": "2019-08-24T14:15:22Z",
  • "availabilityStatusCode": "string",
  • "availabilityStatusNote": "string",
  • "availabilityReasonCode": "string",
  • "distributionCriticalQuantity": 0.1,
  • "distributionDefaultFormCode": "string",
  • "distributionDefaultQuantity": 0.1,
  • "distributionUnitCode": "string",
  • "formTypeCode": "string",
  • "hundredSeedWeight": 0.1,
  • "inventoryNumber": "string",
  • "inventoryNumberPart1": "string",
  • "inventoryNumberPart2": 0,
  • "inventoryNumberPart3": "string",
  • "isAutoDeducted": "s",
  • "isAvailable": "s",
  • "isDistributable": "s",
  • "latitude": 0.1,
  • "longitude": 0.1,
  • "note": "string",
  • "pathogenStatusCode": "string",
  • "plantSexCode": "string",
  • "pollinationMethodCode": "string",
  • "pollinationVectorCode": "string",
  • "propagationDate": "2019-08-24T14:15:22Z",
  • "propagationDateCode": "string",
  • "quantityOnHand": 0.1,
  • "quantityOnHandUnitCode": "string",
  • "regenerationCriticalQuantity": 0.1,
  • "rootstock": "string",
  • "barcode": "string",
  • "storageLocationPart1": "string",
  • "storageLocationPart2": "string",
  • "storageLocationPart3": "string",
  • "storageLocationPart4": "string",
  • "webAvailabilityNote": "string",
  • "containerTypeCode": "string",
  • "preferredName": "string",
  • "names": [
    ],
  • "extra": {
    },
  • "doi": "string",
  • "generation": 0,
  • "distributionRank": 0,
  • "productionLocationGeography": {
    },
  • "systemInventory": true
}