Maximo Open Forum

 View Only

 How to setup Zebra printer with Maximo to print barcode with item numbers, asset numbers.

Jump to  Best Answer
  • Everything Maximo
krastina brunson's profile image
krastina brunson posted 06-10-2026 12:43

I am currently researching the best implementation path for barcode label printing and scanning in Maximo Manage 9.1. I have been reviewing IBM’s online documentation but am looking for practical guidance from the community on the following:

  1. Label Generation & Printing: What is the recommended method in Maximo 9.1 to print barcode labels containing Item Numbers and/or Asset Numbers? (native Automation Scripts utilizing ZPL, BIRT report templates, or third-party utilities?)

  2. Scanner Integration: What configurations are required to ensure these generated barcodes are successfully recognized and parsed by standard scanners within the native Maximo Desktop framework?

Any documentation links, architecture advice, or real-world examples of how you have set this up in 9.1 would be highly appreciated!

Nikolaus Despain's profile image
Nikolaus Despain  Best Answer

I have used a simple method with MS Word & Excel…

Create a new Inventory Application Screen (or use your default) - filter the items you want and download the list view (it downloads as an excel file) - Set up a Mail Merge in Word using Label, identify your Barcode Font, select your fields and save as a Template - Use the Template to connect to the Excel file you downloaded and print your labels… Next time you want to do more, download the items to the same Excel file format and simply use it in your Word Mail merge Template…

Works fast and with any label size or printer connected to Word.

~Nikolaus Despain CRL

Christopher Winston's profile image
Christopher Winston

https://moremaximo.com/question/how-to-setup-ide-for-custom-java-extension-development-for-mas9#9319431d-b7ec-4095-b12e-0195d837297b

Bill Steudler's profile image
Bill Steudler

I have looked at this recently. The critical concept is the generation of zpl code which is sent to the Zebra printer. I have developed POC for the following options, each option contains a function that concatenates static zpl components such a font, position, type of data with variable data (asset number/ Item number/etc.):

BIRT Report - Within the sql select content of the Open create a sql result that does the concatenation. When the report is executed the resulting output is exported as a .csv file. The exported file is then opened using a text editor such as notepad and sent to the Zebra printer. Below is a grab of the code in the report design file.

sqlText = "SELECT  "
+ "  '^XA^FO5,5^A0N,25,25^FB600,2,,^FD'  || INVENTORY.ITEMNUM || ' - ' ||  ITEM.DESCRIPTION || '^FS' || "
+ "  '^FO203,30^B3N,N,100,N,N^FD' || INVENTORY.ITEMNUM || '^FS' || "
+ "  '^FO5,135^A0N,20,20^FDPhysical Bin: ' || COALESCE(INVBALANCES.BINNUM, '') || '^FS' || "
+ "  '^FO406,135^A0N,20,20^FDRotating Item?: ' || CASE WHEN ITEM.ROTATING = 1 THEN 'Y' ELSE 'N' END || '^FS' || "
+ "  '^FO5,155^A0N,20,20^FDDefault Bin: ' || COALESCE(INVENTORY.BINNUM, '') || '^FS' || "
+ "  '^FO406,155^A0N,20,20^FDStoreroom: ' || COALESCE(INVENTORY.LOCATION, '') || '^FS^XZ' as zpldata "

Automation Script - The zpl code is created using both static and variable data. Once the code is created, the zpl is sent to the Zebra print from the automation script using open socket connection to the printer IP and Port. This option is useful if there is a need to print a label automatically such as an object launch point on the matrectrans object to create a label for the item just received.

# Create ZPL Body
zplData = "^XA"
zplData += "^FO50,50^A0N,40,40^FDItem: " + itemnum + "^FS"
zplData += "^FO50,100^A0N,30,30^FD" + desc + "^FS"
zplData += "^FO50,150^BY2^BCN,100,Y,N,N^FD" + itemnum + "^FS"
zplData += "^FO50,275^A0N,30,30^FDPO Num: " + ponum + "^FS"
zplData += "^FO50,325^A0N,30,30^FDPO Line Num: " + polinenum + "^FS"
zplData += "^PQ" + qtyrec
zplData += "^XZ"

Node Red - Similar to Nikolaus's contribution. Function node within the Node-Red "program" that creates a zpl string from a csv file of variable data with static context.

itamar finish's profile image
itamar finish

hi 

My solution is combine from maximo and new table + bartender software automation suite

From Maximo, we create the records, and from Bratender, we design the label and automate the print throw differnt printer 

part 1 - is maximo

I created a new label app, a simple table with the field I need to print on the label, add some special fields, the name of the user, and the quantity 

I created an automation script to add records from the receiving or inventory application,

------------------------------------------

from psdi.server import MXServer
from psdi.mbo import MboConstants
from java.util import Calendar
from java.util import Date
#Get all selected Items
selectedMBOs = mbo.getMboSet("POMATRECTRANS_LABEL")
selectedMBOs.resetWithSelection()
 
#Return the first selected ITEM
selectedMbo = selectedMBOs.moveFirst()
label_lines = mbo.getMboSet("EZ_LABELADMIN")
#Loop through all Items Lines which were selected on the Dialog
while selectedMbo != None :
newLine = label_lines.add() 
#Copy details from the selected line to the new line
newLine.setValue("ORGID", selectedMbo.getString("ORGID"))
newLine.setValue("SITEID", selectedMbo.getString("SITEID"))
newLine.setValue("LOCATION", selectedMbo.getString("STORELOC"))
newLine.setValue("ITEMNUM", selectedMbo.getString("ITEMNUM"))
# newLine.setValue("BINNUM", selectedMbo.getString("PO.POLINE.INVENTORY.BINNUM"))
newLine.setValue("BINNUM", selectedMbo.getString("MATRECTRANS_TOBIN.TOBIN"))
newLine.setValue("CONDITIONCODE", selectedMbo.getString("CONDITIONCODE"))
newLine.setValue("DESCRIPTION",selectedMbo.getString("DESCRIPTION"))
# newLine.setValue("MANUFACTURER", selectedMbo.getString("MANUFACTURER"))
# newLine.setValue("MODELNUM", selectedMbo.getString("MODELNUM"))
newLine.setValue("CATALOGCODE", selectedMbo.getString("CATALOGCODE"))
newLine.setValue("PONUM", selectedMbo.getString("PONUM"))
newLine.setValue("POREVNUM", selectedMbo.getString("REVISIONNUM"))
# newLine.setValue("LABEL_PRINTQTY", selectedMbo.getString("po.poline.inventory.LABEL_PRINTQTY"))
# newLine.setValue("EZ_QRCODE", selectedMbo.getString("SITEID")+"_"+selectedMbo.getString("STORELOC")+"_"+selectedMbo.getString("ITEMNUM")+"_"+selectedMbo.getString("MATRECTRANS_TOBIN.TOBIN")+"_"+selectedMbo.getString("CONDITIONCODE"))
newLine.setValue("EZ_QRCODE", selectedMbo.getString("ITEMNUM"))
newLine.setValue("CREATEDATE", MXServer.getMXServer().getDate())
newLine.setValue("ORIG_APP","RECEIVING")
#Move onto next selected line
selectedMbo = selectedMBOs.moveNext()
-----------------------------------------------------------------------
part 2 - bartender automation
First, you need to design your label with reference to the field in the table from the item master and inventory. Here, there is a lot of information on the web or AI tool will guide you.
after that
Automation builder runs through this new table and populates the fields, and the condition can decide which printer to print and update the record that has been printed with some flag
br itamar

sun kim's profile image
sun kim

https://github.com/naviam-io/zebra-label