Running Cluster Channel Commands in MO71

Our graphical administration tool for IBM MQ, MO71, allows you to issue all sorts of IBM MQ administrative commands. This blog post is going to specifically take a look at cluster channel commands.

As an MQ administrator, you are probably aware that not all channels that might be running on your queue manager, have channel objects. This is true for those automatically installed cluster sender channels that get created based on the cluster-receiver template from another queue manager.

Even though they don’t have the traditional channel object, you might still want to run commands against them. Some of those commands you might want to run require that the channel is not currently running, for example a START CHANNEL command! Yes, it is perfectly reasonable to want to manually start a cluster-sender channel, even though you know that they get automatically started when messages need to flow.

How then, can you issue a command against a cluster channel when it doesn’t show up in the channel object list, or even the channel status list?

In MO71, this is handled from the “Cluster Queue Manager List” dialog, an example of which is shown below. The “Cluster Queue Manager List” dialog uses the data from the DISPLAY CLUSQMGR or Inquire Cluster Queue Manager MQ administrative commands.

View and manage your MQ Cluster channels from this list dialog

This is a very useful display to use when managing an MQ cluster, showing a combination of cluster information, such as the name of the cluster, and the role the queue manager plays in the cluster, for example is it a full repository; all the channel definition attributes, such a heartbeat interval; and the channel status. If you’re not familiar with all the information available through this command, and this list dialog, I encourage you to get to know it.

You may also find the MO71 Network view useful when getting to know a cluster. It gives a very good at-a-glance view of the cluster, and who does what, and allows you to drill down into the objects. In addition, all queue manager icons, as elsewhere in MO71, have a right-mouse-click context menu for commands just like the main window.

View your MQ cluster using the MO71 Network view

The Network view allows you to create a diagram of your clustered queue manager (as seen above), and it pictorially shows you the status of your channels. In addition, in the verify view on the left, you can drill down to see all object types (including cluster objects) and any problems detected in the objects in your queue manager. See the “Mini-Health Check for your Queue Manager” blog post for more details about MO71 problem checking.

See the resolution of objects, and detected problems

If you don’t have a licence and would like to try out MO71 then send an email to and a 1-month trial licence will be sent to you.

I was prompted to write this blog post as a result of a discussion about a recently raised MQ RFE.

Does MO71 log the commands it issues?

This is a question that we get asked quite regularly, so we thought it worth writing up the answer as a blog post.

If you’re asking this question, there are two reasons that immediately come to mind that might be behind your question:-

  • You just want some sort of documentary log, a history of what you have done to look back on.
  • You need a log of commands issued for audit reasons.

However, applications logging their own activity have a number of disadvantages. For example, if the log file were on your own machine, then you have to manage those files, house-keep them as they get old enough to delete, etc. Flat log files are not very easy to search through, say to find out what happened last weekend, or all the activity associated with a particular object.

If you want something for audit reasons, using a log file on the user machine has a number of additional problems:-

  • Firstly, it is not audit proof because
    • It is easy to circumvent
    • It is incomplete since other tools might be used to issue commands to the queue manager
    • The user could switch off the logging feature in their tool, or install a new version of it to avoid the logging configuration
  • Secondly, it is hard to collect the logs from all the different users’ machines to have the complete picture.
  • Thirdly, if individual applications are creating the log file, e.g MO71, runmqsc, MQ Explorer and so on, then you get a myriad of different log file formats.

To solve all of the above, IBM MQ Queue Managers have a feature called Command Events. When enabled these result in an event message being emitted by the queue manager for any command issued (with a tweak to avoid DISPLAY commands if you wish – see EVENT Switches). This is a far better solution than logging in the user-facing tool (e.g. MO71), for reasons such as:-

  • Central collection is better because it is easier to obtain a complete record, since the records are not segregated across many user machines
  • It cannot be subverted by non-privileged users
  • The format is consistent regardless of the tool used by the user
  • No updates are required to any tool, the logging capability is available immediately for all applications

If all you want is something to pass an audit, command and configuration events might be enough. But if you want a record for diagnostic purposes there are other things you might wish to add to the record of what happened, such as:-

We have been recommending using Command (and Configuration) events rather than logging at the user-side MQ administration tool, for many years. Previously the problem with this recommendation was the collection and searching of the event data. However, we have recently released a new product, MQEV, which will help you in this regard. MQEV will collect, process and store your event data, and make searching and report building very simple. You can now easily get the information from the event messages that your IBM MQ queue manager is designed to emit. If required you can process the events real-time, and make changes immediately, or even raise alerts to your MQ administrators for follow-up.

Lumberjack image courtesy of vectorolie at

Lots of viewers of MQ status data

Lyn Elkins recently published a post about the costs of object creation/deletion, and specifically the cost of using temporary dynamic queues with monitoring tools looking at a queue manager on z/OS. Read her blog post here:-

MQ SMF – Data Manager Object totals

She mentions lots of people watching a problem and constantly refreshing their MQ screens to see if the problem goes away, causing more work on the queue manager, and thus not helping the poor CPU constrained queue manager in the process.

This sort of scenario is where MO71’s web interface becomes very useful. A single instance of MO71, and therefore a single connection to the queue manager, with a single reply queue, can serve up the web pages showing MQ status pages, which then lots of people can be refreshing to their hearts content. Regardless of how many people are refreshing the webpage, or how often, MO71 will only request new data from the command server at a sensible request interval (which you can configure in MO71’s preferences).

Here’s a video showing the Web Access capabilities of MO71, with the start time set to show an automatically refreshing department display example on a smart TV – which of course could also be shown on a department monitor, or everybody’s own machine. Earlier in the video it also demonstrates how the data contents can be incorporated into any webpage of your own choosing so the queue list data can be amongst your own department style webpages with links to other content or MQ displays.

P.S. All our monitoring tools have the choice of whether to use a temporary reply queue or a pre-defined one.

Considerations for running MO71 in a shared environment

MO71 Shared EnvironmentMO71 is run by a number of our customers in a shared environment, that is any setup where multiple users in a department want to ensure they are using the same version of the executable, similar queue manager configuration, and share any resources that would make their lives easier. Over the years we have added a number of features to make this kind of collaboration easier.

  • MO71 executable size

    It is probably worth saying right up front, that the MO71 executable is small enough that loading it from a network drive is not onerous. We have many of our customers successfully doing this without any problems. It is only around 3MB in size, and thus small enough to easily run from a USB key if you wanted to.

  • Location of the MQMON.CFG file

    The MQMON.CFG contains all your hardened configuration from the details of where your queue managers are, to the colour scheme you want to see on all your dialogs. By default the MQMON.CFG file will be written in the same directory as your executable. If the executable is stored in a shared directory, you may not want your MQMON.CFG file to be stored there too. You can choose a different location by starting the mqmonntp.exe with the -f parameter to give a different directory name for your configuration to be stored in.

    While it is possible to have numerous users all running from one MQMON.CFG file, you would have to put up with a consensus on colour schemes, column arrangements, dialog screen positions, fonts, histories and more, and of course everyone’s changes would be applied to the same file. Instead we recommend having your own version of the MQMON.CFG file. There is some data that is useful to have centralised, and for that we suggest using a Master Config file – more in a moment.

  • MQGem Licence File
    • Location

      All the MQGem Software products are licensed by means of an mqgem.lic file, which by default is located in the same directory as the executable (even if you have used the -f parameter to change where your configuration is stored). If your department has purchased a Diamond or Enterprise licence, then it makes sense for that licence file to also be stored centrally with the executable. However, if you have an individual Emerald licence, then you have a choice; you could either store it locally, and you can change the location MO71 will search by setting the MQGEML environment variable to point to a different directory, or you could combine all the Emerald licences together into one mqgem.lic file, and store that centrally. This would have the advantage that updating the licences could be done centrally without the individual users being aware.

    • Renewal and reminders

      When using central licence management (see above) it may not be appropriate for every single user to be notified when the licence is running out. By default MO71 will start reminding you when there are 30 days left on your licence. One model might be to have most users tune down these notifications by setting the MQGEMLR environment variable to a small number of days, say 7. Then one or two system administrators, perhaps the ones with control over the shared drives where the executable and licence files are kept, are responsible for renewing the licences and they keep the notifications on, and perhaps even set it to a longer time frame such as 90 days. Remember, you don’t have to wait until there is only 30 days left before renewing your licence. You can renew at any time, and you don’t lose any time, your new licence file will simply extend the current licence by whatever period has been purchased. In fact we would recommend that you renew your licences well before the expiry period to avoid any unexpected outage as a result of a sluggish Purchasing Department 😉

    • Licence Command

      When using licences that are renewed on your behalf, you may prefer to have a local copy, and MO71 provides a licence command, configured on the General tab of the Preferences dialog, where you can add a command to copy a new version of your licence file from a central location once MO71 detects you have MQGEMLR days left. This means that you don’t have to personally remember to go a take a new copy, since MO71 does this automatically for you.

  • Master Configuration File

    One of the reasons some MO71 users previously chose to have a centralised (and thus shared) MQMON.CFG file, was because they wanted the details of the queue managers to be centralised. This led us to add a feature to MO71 where you can provide a master configuration file which contains the common queue manager details, but you still have your own configuration for all the personalised things we mentioned earlier. Each time MO71 starts up, it compares the queue managers configured in your setup against those in the master configuration file, and adds, or changes, any locations in the master file to bring your configuration up-to-date. Note that you can still have your own queue manager definitions in addition to those in the master file. To specify a master configuration file to use, you point to the file with the -j parameter.

  • Shared Filters

    MO71 has a very powerful filtering language, and many of our users have written very useful, and often complex filters. Using the Filter Manager makes it easier to create filters when they start to be complex, and beyond what can be seen on a single line. Each filter is given a name in the Filter Manager. You can share these filters with all your colleagues with a Shared Filter file which they can import in a similar manner to the Master Config file above. At startup of MO71 the filters in the file are merged into the local configuration to ensure you have the latest set of definitions.

I hope these points help you when thinking about using MO71 in a shared environment. If you have any questions, or extra points to consider, please don’t hesitate to get in touch, either with a comment below, or through any of the usual channels.

If you don’t have a licence and would like to try out MO71 then send an email to and a 1-month trial licence will be sent to you.

MO71 User Columns enhanced in V9.1.2

The status output from IBM MQ contains a number of fields which steadily increase as things happen. The table below contains a few examples of these. I’m sure you have used a number of these to determine whether, for example, “is this channel actually doing anything?”, by hitting refresh on a GUI screen or repeatedly issuing an MQSC command to see if the numbers are changing.

Status Field Name MQSC Keyword
Channel No. of messages MSGS
Bytes sent BYTSSENT
Bytes received BYTSRCVD
Buffers sent BUFSSENT
Buffers received BUFSRCVD

In the latest version of MO71, the user columns feature has been enhanced to allow you to turn these fields into a rate field. Here’s how…

I’m going to use the Bytes Sent and No. of Messages status fields on a channel, to determine the transfer rate (bytes/second) and the message rate (messages/second) of my channel. I’ll start with the No. of Messages field. My filter on a Channel Status List will look like this:-

usrcol("Message rate", MSGS, text+diff+rate);TRUE

Filters, as you may already know, are a boolean expression, so just in case my user column has a value of zero (which would result in the row not being displayed), I finish off my filter with “TRUE” just to ensure each row is always displayed, even if there is a zero value.

I have used two new options on my user column – the ‘diff’ option and the ‘rate’ option. These will often go hand-in-hand. The ‘diff’ option instructs MO71 to calculate the difference between this value and the previous value – handy when using these numbers that just steadily increase. If you combined the use of ‘diff’ with the auto-refresh option on list dialogs, you would have some semblance of a rate. However, also adding the ‘rate’ option instructs MO71 to calculate the rate for you using the time period since the last refresh of the dialog (so you don’t have to use auto-refresh).

Note: While most of the time you will likely use ‘diff’ and ‘rate’ together, there are some instances where you might only need one. For example, the output from RESET QSTATS is already showing you the difference from last time, so in that case all you would need is the ‘rate’ option.

I also want the transfer rate, so I’ll add another very similar user column to my filter. Here’s the addition:-

usrcol("Transfer rate", BYTSSENT, text+diff+rate+bytes)

This looks almost identical to my first user column. The one difference is the ‘bytes’ option. This marks the new user column to have a unit of Bytes, and the new Units feature of MO71 kicks in and labels it according to your preferences for units.

Here’s a screenshot of both user columns in action.

MO71 User Column Rates

Channel Status List Dialog with rates in user columns

Another set of status fields output by IBM MQ includes counts of things that, rather than steadily increase, tend to waver around. Some examples of these types of fields are shown in the table below.

Status Field Name MQSC Keyword
Queue Queue Depth CURDEPTH
Open Input Count IPPROCS
Open Output Count OPPROCS
Oldest Message Age MSGAGE

Fields like these, and of course also your rate fields from the first half of this post, can be averaged using new user column features in the latest version of MO71.

To demonstrate, here’s a filter to create a user column showing the average queue depth.

usrcol("Average Depth", CURDEPTH, text+avgl);TRUE

In the same way that IBM MQ indicator fields have a short term and a long term rolling average, MO71 user column averages use a similar concept. You can choose a short term average, ‘avgs’, or a long term average, ‘avgl’, depending on how you want spikes in the numbers to be shown – do you want anomalies to be “forgotten” by the average number fairly quickly, or to affect the average number shown for a longer period.

I’m also going to add another filter to calculate the average message age.

usrcol("Average Age", MSGAGE, text+secs+avgl);

Adding these to my queue status display gives me a way to tell that there had been a spike of messages on my queues, even though everything is all good now, the long term average takes a while to forget about the spike and allows me to see a past problem.

MO71 User Column Averages

Queue Status list dialog with some User Columns displaying averages

Of course, the beauty of these user columns is that you are only limited by your imagination. See what you can come up with.

The new version can be downloaded from the MO71 Download Page. Any current licensed users of MO71 can run the new version on their existing licence. If you don’t have a licence and would like to try out MO71 then send an email to and a 1-month trial licence will be sent to you.

Field Units in MO71

As an MQ administrator you are no doubt painfully aware that not every time based field in MQ is in seconds, and that not every size based field in MQ is in bytes. How many times have you forgotten that expiry is measured in tenths of a second?

The latest version of MO71 has made a number of changes to aid you in your endeavours when reading or entering the many and varied numbers that form part of your queue manager configuration.

Unit Labels on Field and List Titles

The first, and perhaps simplest, aid to your memory is that all fields which have some sort of unit, have this unit appended to the end of the field and list titles. This screenshot shows full length unit names on the labels on the left of the screen, but you also have the choice of short names and abbreviations (more later).

MO71 Unit Field Labels

MO71 dialog showing units on field labels

You can also choose to have these labels on your list dialogs, next to the field titles in the column headings. Again, you can choose between full length unit names, short names or abbreviations. This screenshot shows the short form unit names in the titles.

MO71 Unit List Title Labels

MO71 list dialog with unit labels in the column titles

Unit Labels on Field and List Values

In addition to unit labels on titles, you can also (or instead) have the values annotated with units. There are various different patterns you can choose to display with your values, and you can choose a different pattern for values which represent a size, values which represent a time and percentage values. Each style can be set to “Auto” which allows MO71 to display them the best way. But you can choose other display types – experiment with them and see which suits you best.

The screenshot below shows an example of each:

  • Time fields
    • HB Int: showing the values as minutes which is easier to understand than having to think about 300 seconds
    • Comp Time: showing an indicator which works in microseconds
  • A size field, Bytes sent: showing some values in bytes (B) and some larger values as kilobytes (KB)
  • A percent field, Comp Rate: showing an indicator which works in percentages.
MO71 Unit values

An MO71 list dialog showing a selection of Unit values

Label choices

As noted earlier, you have some choices in the types of labels you can use. The table below shows some examples without providing the full set – the pattern should be clear from this subset.

Unit Type Full Short Abbreviation
Time Seconds Secs s
Size Kilobytes KB KB
The difference between Short and Abbreviation here is the space between the number and the unit
Percent Percent (only on titles) % (used everywhere else)

You can choose exactly which units you wish to be displayed in the various different places in the Units tab of the preferences dialog; including, if you wish, to turn them all off. There is different configuration for normal dialogs, exported reports and HTTP output, as with different uses you may, or may not want units added to these.

MO71 Unit Preferences

The Preferences tab in MO71 to control how units are used

Transient Status fields

When looking at configuration fields, it is probably important to see the full detail. So for example, if you have a queue with a Max Msg Length of 32,762 bytes that will be displayed as 31KB 1018B (that’s 6 bytes short of 32KB). However you could choose to display sizes with the “One Decimal” option, and then it would be shown as 31.99 KB. You’ve lost a little detail here with than choice of display.

However, there are some fields, that we’ve called transient status fields, that are output only, and regularly changing, where such a display would actually be completely appropriate. So, you can choose “Auto” or “Parts” for most of your fields, but set “One Decimal” for your transient fields. The list of fields we consider to be transient are marked in the tables here, which lists all the fields in MO71 that have units.

Entering values

Finally a word on entering values for fields with units. If you have a field that is a time field, like Heartbeat interval, you can type in “300” or “5 mins” and MO71 will interpret it for you and send the appropriate number to the command server. This could be very handy the next time you need to set MaxMsgLength to 100MB – no longer do you need to calculate what that is, just type in “100MB” in the entry field in MO71 and it will do it for you.

You also have a choice whether the entry field shows the formatted version of the value, e.g. “100MB” or the actual number that MQ provides. Select the “Units Entry Field” option in the preferences to choose between the two behaviours.

Here at MQGem, we hope these changes will help in those moments where you are unsure of the unit, and save you from interpreting MQ output in a way that is out by a factor of 1000 – “was that microseconds or milliseconds?”

The new version can be downloaded from the MO71 Download Page. Any current licensed users of MO71 can run the new version on their existing licence. If you don’t have a licence and would like to try out MO71 then send an email to and a 1-month trial licence will be sent to you.

Working with MQ Dates and Times in MO71

The administrative commands in IBM MQ contain a number of date and time fields, for example when a channel was started, or when an object was altered. These are returned as a pair of fields, one for the date and one for the time.

Previously, if you wanted to sort a list of items into date order you could use MO71’s secondary sort to help with this. First click on the date column to sort by date first, and then hold down the Alt key and click on the time column to add that as a secondary sort. You’ll see a big arrow and a little arrow in the column headings to show the primary and secondary sorting fields. You can also see the sorting fields and change them through the “Alter List…” dialog.

MO71 Dates Sorted Two Fields

MO71 queue list dialog sorted into time order using the two MQ provided fields

However, this did mean that you couldn’t do any further sorting because you had used up the secondary sort field on getting the list in time order. The new version of MO71 provides a combined date and time field for each of these MQ field pairs, which means you can sort into time order with a single column heading click, and in addition you can sort on another attribute as well if you need to. Just use the “Alter List…” dialog to switch out the original two MQ date and time fields, for the combined one provided by MO71, and click on the column heading to sort by that new column.

MO71 Dates Sorted Single Field

MO71 queue list dialog sorted using a combined date/time field

There are some other advantages to this combined date/time field. One of these is the format. In the example above you can see the date is formatted a little differently to how MQ provides it. As the MO71 user, you can control the format of this field. You can use a format that isn’t even string sortable and MO71 will still ensure that it is sorted in date order for you (as illustrated by the above screenshot). This means that if your preference is to swap round the day and month, the column will still sort correctly into date order. The format of these combined date/time fields is controlled in MO71 Preferences, under the Time tab. You can choose from a number of provided formats from the “Time Sample” drop down, or edit the “Time Format” field to create your own using the various substitutions available. To make recent activities pop-out more from a list, you can have additional formats for things that happened today and yesterday, or in the last 24/48 hours, by adding formats to those fields too. For example, to omit the date or add the string “Today” instead of the date. Whatever catches your eye the best.

MO71 Dates Preferences Formatted Time

MO71 Preferences, Time Tab allows you control of the Formatted Time

Viewing multiple Queue Managers

We are all aware that the times stored in MQ messages are in UTC, but all the other time fields in the MQ administrative interfaces are returned in the local time of the queue manager. Some of you are lucky enough to work in the same time zone where your queue managers reside, but for the rest, you need to be aware of the time zone of the queue manager when you are viewing data that includes dates and times. Looking at the screenshot below which shows three international queue managers in different time zones, you might initially be forgiven for thinking that they had all been started at the same time.

MO71 Dates Queue Manager List Start Times

An MO71 Queue Manager List showing Start Times

However, this assumption does not take into account their timezones. In the new version of MO71, with the combined date/time field, you are able to see any of the date and time fields returned by the queue manager converted from the known timezone of the queue manager into your own local timezone. IBM MQ does not have a way for a remote administrator to know what timezone a queue manager is in, so on the MO71 Location Dialog you can select a timezone for your queue manager if it is different to your own timezone.

MO71 Dates Queue Manager Timezone

MO71 Location dialog – set the Queue Manager Timezone

Once you have set the timezone, you can see these new combined date/time fields taking into account their timezone, and the above display can now look as follows. In addition this screenshot illustrates that the chosen timezone from the location dialog can be added to this display which acts as a handy reminder of where this queue manager is, especially if your queue manager names don’t make it as obvious as my example ones do!

MO71 Dates Queue Manager List Timezone

An MO71 Queue Manager List showing the Timezone of the QMgr and start dates converted to local time.

With this mechanism it is now very simple to sort date/time fields across multiple queue managers so that they are displayed in the order that things happened, rather than just the time that it happened in that location.

The relative times that events happen can be important to notice when looking for cause and effect in problem diagnosis. This new version of MO71 now makes this easy to do, even across multiple time zones.

The new version can be downloaded from the MO71 Download Page. Any current licensed users of MO71 can run the new version on their existing licence. If you don’t have a licence and would like to try out MO71 then send an email to and a 1-month trial licence will be sent to you.

MO71 version 9.1.2 is released

MQGem Software is pleased to announce that a new version of MO71, our GUI Administrative tool for IBM MQ, is now available.

The main features of the release are as follows:-

Combined Date/Time Fields

There are many places where MQ outputs a pair of fields to show the date and time something happened; a queue created, a channel started, alteration of any object. Using these fields is simpler now that MO71 has combined them into a single field, and allowed you to format them as you please. Read more about this feature in a separate blog post here.

Field Units

Many of the MQ configuration and status values are sizes, time intervals or percentage values. Sometimes we don’t remember which units are in use – was that milliseconds or microseconds? MO71 helps your memory by labelling field titles and values, to show the units in use. Further, MO71 allows you type in values using unit labels, for example, next time you need to change the Max Msg Length to 100MB, just type that into MO71 and let it calculate the number for you. Read more about this feature in a separate blog post here.

Understanding Remote Product

When a channel connects to your queue manager, MQ allows you to see what product is at the other end of the channel, i.e. the type of queue manager (z/OS or Distributed), or the type of client (‘C’, Java, XMS and so on). There are a number of 4-character codes to identify each one. Read more about this MQ output field here. MO71 will show you the meaning of this 4-character code to make it easier to understand.


MO71 Channel Status list showing Remote Product field

Making MO71 filters easier to read

The filters in MO71 are one of its most powerful features. You can learn more about these filters in this video about them. One small change in this release that makes filters easier to use is that you can now use AND, OR and NOT operators in place of ‘&’, ‘|’ and ‘!’.

MO71 Filters AND OR NOT

MO71 Filters can now use AND OR and NOT in place of &, | and !

MO71 Show Hide options

MO71 list dialog Show/Hide options

Show/Hide Column Filters

Just as you can show or hide the buttons, toolbar, filter bar and fields on a list dialog in MO71, you can now also show or hide the column filters. All in the right-mouse context menu.

Location Dialog updates

The location dialog has gained a few buttons with useful actions that you need when first setting up your location settings for a queue manager. You can connect and disconnect directly from this dialog, and also view the local INI file and local error log – very helpful if your connection fails and you need to quickly look at the reason.

MO71 Location Dialog new buttons

The MO71 Location Dialog has new buttons

Main Window group status

Your queue manager groups on the main window can now display several pieces of information (in a format of your choosing). The data that can be displayed includes; number of queue managers in the group; number connected, failed and with unknown state and the group name. With the following Group Text set in my preferences dialog:-

%n (Total:%t{ Connected:%c}{ Failed:%f}{ Unknown:%u})

I see the following on my main window. You can of course configure it to exactly what you want to show.

MO71 Main Window Group Title

MO71 Main Window showing Group Titles

Exporting Objects – keeping track

If you automatically download your object definitions using MO71, you may find it useful to be able to see when the last download was actually done. This is now displayed on the Export tab in the Location dialog.

MO71 Export status

See the status of your automatic object exports in the Location dialog

Also, if you exported a list of objects from a list dialog, it is handy to know in your exported report if that list was filtered and didn’t show everything. You can now add the filter and fields from the top of the list dialog to your exported report.

MO71 Export Headings

Add the field and filter contents as headings to your exported report

Averages, rates and units in User Columns

User columns were added in an early version of MO71, and have been enhanced in V9.1.2 to give you the ability to generate numbers which are rate or averages. In addition, your user columns can have units just like the MQ values in your dialogs. Read more about this feature in a separate blog post here.

The new version can be downloaded from the MO71 Download Page. Any current licensed users of MO71 can run the new version on their existing licence. If you don’t have a licence and would like to try out MO71 then send an email to and a 1-month trial licence will be sent to you.

MO71 User Columns

In the latest version of MO71, released mid-April, a new feature was added to list dialog filters.

In older versions of MO71, you could add an additional column to the list dialog by creating a user variable in a filter. In the example filter below, a user integer variable (using the ‘@’ symbol) called ‘fullness’ is created, and is shown as a column (using the ‘#’ symbol).


This would result in a column with heading ‘fullness’ containing the calculated value.

MO71 User Column Traditional

A user column using a user variable marked with ‘#’ symbol

With the new User Column feature, there are now many more things you can do with your own created columns. Let’s make the same column with the new feature first, and then build on it.


The first thing to note is the heading of the column (parameter 1) is a quoted string, rather than just being the name of the variable. This means that you can have spaces in the heading title. So I’ll change it to “Queue Fullness” just to take advantage of that. Parameter 2 of the usrcol() function is the same expression we previously assigned to our user variable. Parameter 3 is left-aligned text – hinting that there might be other displays instead of text. Let’s try one now.

usrcol("Queue Fullness",curdepth/maxdepth*100,bar)

You’ll see we have a bar graph instead of the text now. We can change the colour it is displayed in, but I’ll come back to that in a moment.

MO71 User Column basic bar

A basic bar chart with user columns

In the above example, we’ve calculated the percentage of current depth to maximum depth ourselves with the expression curdepth/maxdepth*100. However, using the usrcol() function, we can let it do the work. The fourth parameter gives the maximum value to be used with a chart, which defaults to 100 if not supplied. Let’s re-write our filter as follows:-

usrcol("Queue Fullness",curdepth,bar,maxdepth)

The fifth parameter to the usrcol() function is the colour of the graph, so let’s liven up this chart a bit. Colours can be specified as one of a selection of fixed colour names, as an RGB value, or as any of the colours in your colour scheme, including four new user colours (go to menu View->Set Colours… and scroll to the bottom to see these). I’m going to use my 3rd user colour.

usrcol("Queue Fullness",curdepth,bar,maxdepth,CLR3)
MO71 User Column coloured bar

Colouring a user column bar chart

If you like bar graphs to get a good at-a-glance view of what is going on, but still want to see the numbers as well, you can combine both the bar and text options together. In this graph I’m more interested in the percentage value used for the graph since I already have the current depth shown in another column, so I’ll make my filter as follows:-

usrcol("Queue Fullness",curdepth,bar+text+percent,maxdepth,CLR3)

I’m tempted also to make the text a little smaller in the chart, and position it on the left (I have the choice of left, centre or right; and top or bottom for positioning text).

usrcol("Queue Fullness",curdepth,bar+text+percent+left+small,maxdepth,CLR3)
MO71 User Column with percentage

User column with a bar chart and overlaid smaller text

I’ve got quite a small dialog window here, but in practice you might have many more columns and thus less space assigned to your bar chart column. While you can of course alter the width of the column manually, you can also use one of the width options to show you want it to be wider and more striking on your display.

usrcol("Queue Fullness",curdepth,bar+text+percent+left+small+w40,maxdepth,CLR3)

In this example my bar graph is just on the end of the columns that were already there, but it is also possible to position your user column using the existing showcol() function. For example, I could update my filter to the following:-

showcol("Queue Fullness",2);usrcol("Queue Fullness",curdepth,bar+text+percent+left+small+w40,maxdepth,CLR3)
MO71 User Column in Position 2

User columns can be moved using the showcol() function

There’s lots more you can do with User Columns – more than can fit into one blog post, so watch this space, or if you can’t wait, take a peek at the MO71 User Manual where there’s a large section about them.

The new version can be downloaded from the MO71 Download Page. Any current licensed users of MO71 can run the new version on their existing licence. If you don’t have a licence and would like to try out MO71 then send an email to and a 1-month trial licence will be sent to you.

MO71 recent changes

There have been a number of mini-features added to MO71 over the last few months. We have mentioned a few in passing in our monthly newsletter, but it’s time to take a look at them in a little more detail.

Search Fields added to Alter List Dialog

Some dialog lists, I’m thinking channels and queue managers specifically, have large numbers of fields and it can be hard to find the particular field you are looking for in order to change the columns shown in the list dialog. Both lists in the “Alter List” dialog now have a search field below them to allow you to filter the list and find what you are looking for.

MO71 Alter List Search Filter

A Search Filter box below each list

Multiple fields can be moved in the Alter List Dialog

Staying with the “Alter List” dialog, another change is that you can now select multiple fields to move up and down in the list at once instead of having to move one field at a time. You have the flexibility to make your MO71 List Dialogs look exactly how you need them to look with ease.

MO71 Alter List Multiple Move

Move multiple fields together instead of one at a time

3 Monitor support

MO71 will now remember the dialog positions and sizes for a 1, 2 or 3 monitor set-up.

MO71 Three Monitors

Spread your MO71 dialogs across three monitors if you need to

Command Level 911 and 912 support

MO71 supports the newest command levels provided by IBM MQ. See What’s in Command Levels 91x for details.

HTTP Proxy Support

You can now configure MO71 to make HTTP connections via an HTTP Proxy. This might be necessary for retrieving latest versions of IBM MQ or the latest versions of MO71 from your work location.

MO71 Preferences HTTP tab

Set HTTP Proxy details in Preference

Progress Dialogs

MO71 will now report on its progress as it is moving, copying or deleting large numbers of messages. You will see these only when your action takes longer than 3 seconds (by default), from both the message list dialog and the QLOAD dialog.

MO71 Progress Bar

You’ll see a progress bar for message manipulation actions that take a while

Topic Strings with leading or trailing spaces

MO71 Topic String WarningMost MQ string fields, whether object names or attributes, are not allowed to start with a blank and trailing spaces are insignificant. The queue manager will let you know with an error if you try to have spaces at the beginning. There are one or two fields, such as exit data attributes that allow them, but mainly MO71 would strip leading and trailing spaces before sending to the command server. The topic string attribute is different from many MQ string attributes in that it is legitimate to have leading and/or trailing spaces, and those spaces are significant. A topic string that only differs due to a leading or trailing space from another is a valid and different point in the topic tree.

MO71 allows you to have these leading and/or trailing spaces because if it didn’t you could not look at topic strings that had them, but it also warns you if you try to create one with a leading or trailing space because in all likelihood you did not intend to.

In addition, the problems that MO71 attempts to detect if you run a health check against your queue manager will report any topic strings that contain leading or trailing spaces. If you deliberately have topics that use such a pattern, you can remove these from the list of problems that are detected.

MO71 Topic String Healthcheck

Do you have any topics lurking with extra spaces?

The new version can be downloaded from the MO71 Download Page. Any current licensed users of MO71 can run the new version on their existing licence. If you don’t have a licence and would like to try out MO71 then send an email to and a 1-month trial licence will be sent to you.