Object promotion is how IBM MQ definitions travel from the environment where developers experiment to the environment where tonight's payment batch must not fail. A queue name PAYMENT.IN might exist in DEV, TEST, and PROD with the same spelling so application code needs no change, while the sender channel CONNAME in DEV points at a lab host and in PROD points at the partner's production IP with stricter TLS. Promotion is not copying messages—it is copying or regenerating DEFINE statements under change control, with diffs reviewed like application code and applied by pipeline or runmqsc batch jobs. Beginners export entire queue managers and replay in prod, bringing dev passwords and wrong hostnames with them. This tutorial covers export tools, sanitizing and templating MQSC, per-environment overlays, promotion order when objects depend on each other, high-risk auth and channel attributes, pairing promotion with automated deployments, rollback when ALTER fails, and audit evidence for regulators who ask what changed on the payments queue manager last Tuesday.
| Object | Differs per env | Risk if wrong |
|---|---|---|
| QLocal / QAlias | Max depth, trigger | Depth trigger fires wrong app |
| Channel | CONNAME, SSL | Traffic to wrong system |
| AUTHINFO / CHLAUTH | IDs, certificates | Lockout or open access |
| Listener | Port, bind | Clients cannot connect |
dumpmqcfg or runmqsc DISPLAY commands produce text baselines. Store in Git with version tags matching application releases. Strip PASSWORD fields and replace with placeholders filled at deploy from vault. Compare exports with diff tools in pull requests so reviewers see new queues and changed MAXDEPTH clearly.
1234# Illustrative — verify commands for your MQ version dmpmqcfg -m QM_DEV -a > qm-dev-baseline.txt # Review file; remove secrets; commit to Git mq/config/dev/ # Promotion job applies templated MQSC to QM_TEST, then QM_PROD
Use variables in Ansible Jinja2, Helm, or simple sed replacements for HOST_PROD, PORT, and CERT_LABEL. One template generates three MQSC files. Never maintain three diverging copies by hand—they drift within weeks. Document mandatory substitutions in README for operations.
Promotion is the same recipe card used in the practice kitchen (DEV) and the restaurant kitchen (PROD), but the restaurant uses the real oven temperature and supplier addresses (CONNAME, TLS)—not the practice room's toy oven.
CAB or peer review checks business owner, security, and operations. Automated policy: no promotion Friday 16:00 without executive approval. Pair MQ admin with application team sign-off when new queues carry new message formats.
Pipelines run runmqsc < promoted.mqsc against QM_TEST. Smoke tests verify. Same artifact hash promotes to PROD—no rebuild from different branch. If DEFINE fails because object exists, use ALTER sections in idempotent scripts or split into create versus update files per release.
Keep previous Git tag MQSC export. Re-apply ALTER to revert attributes or DELETE only objects introduced in failed change—never DELETE shared legacy queues without impact analysis. Channel changes may need partner coordination to revert CONNAME simultaneously.
Object promotion is copying the list of mailbox rules from practice school to real school, but changing the street address on the list so letters go to the right building.
Export DEV config; redact secrets; open PR with diff.
List five attributes that must differ between DEV and PROD for one channel.
Write promotion order for new payment queue plus sender channel.
1. Object promotion moves:
2. CONNAME in prod should:
3. CHLAUTH promotion needs:
4. dumpmqcfg is for: