2085 Errors

Reason code 2085—MQRC_UNKNOWN_OBJECT_NAME—is the error you get when IBM MQ cannot find the object your program named. The connection succeeded, authority might be fine, but PAY.IN or ORDERS.NEW simply is not on this queue manager—or you asked for a queue when the object is a topic. Developers swear the queue exists because it works in test; operations DISPLAY QLOCAL on production and finds PAY.IN on QM_PROD while the job connects to QM_PROD_DR with empty repository after a failed promotion. This tutorial explains how 2085 surfaces in MQOPEN and MQPUT, case and padding rules, alias and remote queue indirection, model and dynamic queues, cluster name resolution, DLH reason 2085 on dead letters, and a troubleshooting workflow that fixes typos before opening authority tickets.

MQOPEN and Object Type

MQOD ObjectName and ObjectType must match a defined object. Opening ORDERS.NEW as OT_Q with no QLOCAL OR QALIAS yields 2085. Opening ORDERS.NEW as OT_TOPIC when only a queue exists yields object type errors or unknown object depending on call sequence. JMS createQueue maps to queue open—wrong JNDI name causes 2085 wrapped in JMSException. Always log ObjectName, ObjectType, and queue manager name from the failing connection handle context.

2085 scenarios and fixes
ScenarioWhy 2085Fix
Typo PAY..IN double dotNo matching nameCorrect string; DEFINE if new
Queue on wrong QMObject not on connected QMPromotion or CONNAME fix
Use remote name locallyQREMOTE not definedDEFINE QREMOTE plus XMITQ path
Expired dynamic replyQueue deletedLonger expiry; faster reply
Cluster queue not visibleCluster repos or namelistCluster DEFINE and repos

Verification Commands

shell
1
2
3
4
5
6
7
DISPLAY QLOCAL('ORDERS.NEW') DISPLAY QALIAS('ORDERS.NEW') DISPLAY QREMOTE('ORDERS.NEW') * If all fail with not found, object is missing on this QM DEFINE QLOCAL('ORDERS.NEW') REPLACE + DESCR('Created after 2085 incident') MAXDEPTH(10000) REPLACE

Use DISPLAY with exact case. On distributed MQ, names are often case-sensitive. Mainframe conventions may pad names—verify COBOL copybooks do not truncate or pad with spaces differently than MQSC definitions.

Aliases and Indirection

Applications should open stable QALIAS names per environment; ALTDEF points to QM-specific base queue. 2085 after promotion often means alias missing on new queue manager while base queue was copied. Remote queues: applications must not MQOPEN a queue name that only exists on a remote queue manager unless a QREMOTE on the local QM defines routing. Put through QREMOTE does not require the application to open the remote name directly—architects clarify in standards.

Dynamic and Model Queues

Model queue DEFINE creates dynamic queues with prefix; if model missing, dynamic create fails with 2085-related errors. Dynamic queues expire after inactivity—reply queue gone before response PUT is a classic integration bug. Increase DEFPSIST and expiry attributes only after understanding memory and security implications of long-lived dynamic queues.

2085 on Dead Letter Header

Messages on the DLQ carry MQDLH with Reason 2085 when the original put targeted unknown object. Fix routing definition; requeue only after correcting destination name on a test queue. Teach support to read DLH Reason before requeue storms.

Troubleshooting Workflow

  1. Capture exact ObjectName from application log.
  2. DISPLAY object on queue manager the app connects to.
  3. Compare environment: host, QM name, channel, CCDT URL.
  4. Check QALIAS and QREMOTE indirection tables.
  5. DEFINE or promote missing object through change control.
  6. Retest; if 2035 appears next, switch to authority runbook.

Explainer: Wrong Address on Envelope

2085 is mailing a letter to an address where no building exists—the post office is open (queue manager up) but the street name is wrong.

Explain Like I'm Five: 2085 Errors

You tried to put marbles in a box name that does not exist in the room you are standing in.

Practice Exercises

Exercise 1

Given JMS queue ORDERS.NEW failing 2085, list DISPLAY commands for QLOCAL, QALIAS, QREMOTE in order.

Exercise 2

Explain request-reply dynamic queue expiry causing server-side 2085 on reply PUT.

Exercise 3

Write DEFINE QALIAS pattern for dev/test/prod using one application constant name.

Frequently Asked Questions

Frequently Asked Questions

Test Your Knowledge

Test Your Knowledge

1. 2085 means:

  • UNKNOWN_OBJECT_NAME
  • NOT_AUTHORIZED
  • Q_FULL
  • CONNECTION_BROKEN

2. First command to verify queue exists:

  • DISPLAY QLOCAL(name)
  • RESET CHANNEL
  • START LISTENER
  • CLEAR QLOCAL

3. Opening PAY.IN on QM_TEST when queue exists only on QM_PROD causes:

  • 2085 on QM_TEST
  • Higher MAXDEPTH
  • TLS error only
  • Automatic DEFINE

4. QALIAS requires:

  • DEFINE QALIAS pointing to base queue
  • Only client change
  • DELETE QLOCAL
  • Disable listener
Published
Read time20 min
AuthorMainframeMaster
Verified: IBM MQ 9.3 documentation