ASG
IBM
Zystems
Cressida
Icon
Netflexity
 
  MQSeries.net
Search  Search       Tech Exchange      Education      Certifications      Library      Info Center      SupportPacs      LinkedIn  Search  Search                                                                   FAQ  FAQ   Usergroups  Usergroups
 
Register  ::  Log in Log in to check your private messages
 
RSS Feed - WebSphere MQ Support RSS Feed - Message Broker Support

MQSeries.net Forum IndexMainframe, CICS, TXSeriesMQ OTMA Bridge versus IMS MQ Triggering - Pros / Cons

Post new topicReply to topic
MQ OTMA Bridge versus IMS MQ Triggering - Pros / Cons View previous topic :: View next topic
Author Message
PeterPotkay
PostPosted: Thu Mar 14, 2013 7:26 am Post subject: MQ OTMA Bridge versus IMS MQ Triggering - Pros / Cons Reply with quote

Poobah

Joined: 15 May 2001
Posts: 7716

Is there on online reference for getting messages into IMS via MQ from the mid tier, comparing the pros and cons of the OTMA bridge versus MQ Triggering?
Some things I’m thinking of….
1. If the existing mainframe application can’t or won’t change to become MQ aware, the OTMA Bridge will allow the integration, while MQ Triggering will not. An MQ Triggered app need MQ API calls.

2. If you need to execute the IMS transactions using the UserID in the MQMD of the incoming message, the OTMA bridge will allow this, while MQ Triggering will (apparently) not. So IF you trust the MQMD User Identity (a separate topic, let’s not go down that rat hole here), the bridge will carry this identity into the IMS transaction.

3. If you are dealing with extremely high volumes (that’s a relative term), I suppose the OTMA Bridge is a more efficient method as it’s constantly watching the MQ app queues and transferring the messages directly into the IMS queue, while the MQ Trigger model involves the extra overhead of trigger messages into init queues. If the app is going to only do a one and done, that could be a lot of trigger messages all day every day as app messages arrive all day every day.

4. One OTMA queue can invoke any number of TCODES, without needing separate MQ queues and process definitions for each. But you can set up multiple MQ queues feeding the same OTMA if you want more granularity for MQ Statistics or Alerting and Monitoring

5. It seems simpler from the MQ Infrastructure side for the OTMA method. Just create a new MQ queue, map it to the right storage class, and tell the IMS guys to do their part. But I don’t know how complex the IMS set up is.

6. For an MQ guy, the Mq Triggering method seems more straight forward. There’s some under the covers magic happening in the OTMA link that is a black box. Who do you call when things go wrong there. But I suppose all of this IT stuff is magic when you get down to it – eventually you gotta trust the stuff works. It would help to have a good DeveloperWorks article with pictures on this topic.

7. MQ Triggering will allow triggering by depth, while the OTAM bridge deals with the messages immediately as they arrive. Playing around with GET Inhibit and Get Enable jobs and some monitoring script to watch the input queue might be a way to simulate depth triggering for the OTMA queue method.

8. If you are MQ Triggering, the triggered app is MQ aware and thus has the ability to use all the MQ Options and MQMD fields the way it sees fit. I don’t think the OTMA Bridge is as flexible in this regard, although it has gotten better since MQ 5.3 (it can now respect Expiry on the reply message as it relates to the Request message, for example)

9. The front end app will likely have an easier time building the input message if its destined for an MQ Triggered queue instead of an OTMA queue – no need to mess with building an IIH header. (Note to self: Research if WMB or DataPower XI52 has any built in functionality to make building an IIH header easier. Any Support Pack for helping regular MQ Clients, kinda like the XMS pack helps building RFH2 headers (back before Message Properties)).

Bottom line question: If you have a green field and everything is new (front end app and backend app), do we go for the MQ OTMA bridge method or the MQ Triggering method? I know, I know – “It Depends.” But do you have any corrections or additions to the above list to help make the call?
_________________
Peter Potkay
Keep Calm and MQ On
Back to top
View user's profile Send private message
Mr Butcher
PostPosted: Mon Mar 18, 2013 2:14 am Post subject: Reply with quote

Padawan

Joined: 23 May 2005
Posts: 1716

Its sometimes not that easy to tell customers (if messages are coming in form "outside" to add a proper header to the message data (LLZZ / txcode / ....) for OTMA

IMHO there are length restrictions for OTMA. You have to sue segmented messages from a specific length on....

Customers also get confused sometimes when receiving a MQIMSVS type message.... we remove the LLZZ and make the message MQSTR by exit.

OTMA puts all it can not deal with to the DLQ, e.g. tx abends

IMHO, queueing is "cheaper" and "less dangerous" in MQ as in IMS (e.g. queueing 10.000.000 messages in MQ is "just" a space issue, but having the same amount of messages on anb IMS messagequeue?!?

just a little brainstorming without putting too much pro / contra in it.
_________________
Regards, Butcher
Back to top
View user's profile Send private message
PeterPotkay
PostPosted: Tue Mar 26, 2013 4:51 am Post subject: Reply with quote

Poobah

Joined: 15 May 2001
Posts: 7716

Mr Butcher wrote:

Customers also get confused sometimes when receiving a MQIMSVS type message.... we remove the LLZZ and make the message MQSTR by exit.

You mean on the outgoing reply message leaving OTMA and destined for some MQ enabled non IMS app?
_________________
Peter Potkay
Keep Calm and MQ On
Back to top
View user's profile Send private message
PeterPotkay
PostPosted: Tue Mar 26, 2013 4:55 am Post subject: Reply with quote

Poobah

Joined: 15 May 2001
Posts: 7716

From Lyn Elkins on the the List Server.....

Quote:
This could be a pro or a con depending on your perception (smile), but the OTMA bridges does not produce SMF116 data. This is not usually a problem, until you are trying to investigate a performance problem.

_________________
Peter Potkay
Keep Calm and MQ On
Back to top
View user's profile Send private message
Mr Butcher
PostPosted: Tue Mar 26, 2013 5:04 am Post subject: Reply with quote

Padawan

Joined: 23 May 2005
Posts: 1716

PeterPotkay wrote:
Mr Butcher wrote:

Customers also get confused sometimes when receiving a MQIMSVS type message.... we remove the LLZZ and make the message MQSTR by exit.

You mean on the outgoing reply message leaving OTMA and destined for some MQ enabled non IMS app?


yes, exactly, and afaik you can not get-convert messages with MQIMSVS header on most distributed plattforms.

Thats also why OTMA abort messages (e.g. caused by stopped transaction) will hit your local DLQ when the sender channel is defined with CONVERT(YES). The abend message is destigned to the replytoq / replytoqmgr, and format is MQIMSVS, but the sending MCA is not able to convert it into the receiving MQ code page, so it will hit your local DLQ with RC 2110....

correction - format is DFSMO1 in that case

There is one more thing for the "MQ Triggering"... you need to define and start the IMS MQ subsystem communication. We recently had the issue that MQ was restarted for maintenance, but IMS was not, and the subsystem communication was established only at IMS start (wrong defined in system automation), so the communication was not started ..... so we had some issues after application start .... its not a pro or con issue, but something that should be known ....
_________________
Regards, Butcher
Back to top
View user's profile Send private message
cicsprog
PostPosted: Tue Apr 09, 2013 12:15 pm Post subject: Reply with quote

Partisan

Joined: 27 Jan 2002
Posts: 314

We are a big legacy IMS shop (along with lots of CICS and DB2). So using OTMA was a easy way to reuse all those IMS transactions w/o modification. So, we went down the OTMA road for those vary reasons. If you don't want the expense of new IMS code, reuse of the old transactions via OTMA is a good idea and can be developed and deployed quickly even with the special msg payload parameters "The Butcher" mentioned.

If you go down the OTMA road, you can copy and paste this doc in a TXT file and pin it to you desktop. Makes find the return codes for OTMA and MQ a quick ref:

Here are some common codes I have seen:
291 = MQFB_DATA_LENGTH_ZERO
Data length zero.
A segment length was zero in the application data of the message.

292 = MQFB_DATA_LENGTH_NEGATIVE
Data length negative.
A segment length was negative in the application data of the message.

293 = MQFB_DATA_LENGTH_TOO_BIG
Data length too big.
A segment length was too big in the application data of the message.

294 = MQFB_BUFFER_OVERFLOW
Buffer overflow.
The value of one of the length fields would cause the data to overflow the
message buffer.

295 = MQFB_LENGTH_OFF_BY_ONE
Length in error by one.
The value of one of the length fields was one byte too short.

296 = MQFB_IIH_ERROR
MQIIH structure not valid or missing.
The Format field in MQMD specifies MQFMT_IMS, but the message does not
begin
with a valid MQIIH structure.

298 = MQFB_NOT_AUTHORIZED_FOR_IMS
Userid not authorized for use in IMS.
The user ID contained in the message descriptor MQMD, or the password
contained in the Authenticator field in the MQIIH structure, failed the
validation performed by the IMS bridge. As a result the message was not
passed to IMS.

300 = MQFB_IMS_ERROR
Unexpected error returned by IMS.
An unexpected error was returned by IMS. Consult the MQSeries error log on
the system on which the IMS bridge resides for more information about the
error. .

301 = MQFB_IMS_FIRST
Lowest value for IMS-generated feedback.

325 = VALID TCODE STOPPED
Although a valid TCODE was specified, the TCODE in question has been
stopped
in IMS.

326 = INVALID TCODE
The TCODE specified in the IIH header is not a valid TCODE.

399 = MQFB_IMS_LAST
Highest value for IMS-generated feedback.


4) OTMA Sense Codes for NAK Messages
Sense Code: 001A
Reason Codes:
_____________________________________________________________
Hex: Decimal: Explanation:
______________________________________________________________
x'03' 03 RACF INIT failure (DFSYTIB0)
x'15' 21 Msg segment length error
(see apar PQ32402)
x'1F' 31 Error with conversation. A RC greater
than 4 was returned for a call to
DFSCON00

X'16' 22 Invalid security option specified in the
message prefix.
X'17' 23 Invalid command from an OTMA client.
See DFS1285E.
X'18' 24 Transaction currently not available for
use. See DFS3470E.
X'19' 25 SMB transaction/LTERM is stopped.
See DFS065.
X'1A' 26 Invalid CPIC transaction. See
DFS1286E.
X'1B' 27 Invalid remote destination (RCNT). See
DFS1287E.
X'1C' 28 Invalid CNT name specified. See
DFS1288E.
X'1D' 29 SMB not found. See DFS064.
X'1E' 30 Invalid security. See DFS1292E.
X'1F' 31 System error requested.
X'20' 32 System error message.
X'21' 33 User error message.
X'22' 34 Single-segment message. See
DFS1290E.
X'23' 35 All messages discarded. See DFS249.
X'24' 36 Null segment sent. See DFS249. One
cause for this error maybe the length
specified on the MSGLEN key
parameter of the IXCMSGO macro
does not match the length of the
OTMA data. No extra or null data can
be padded at the end of the application
data section.
X'25' 37 Queue overflow as unsuccessful insert.
X'26' 38 Commit mode 0 not allowed for IMS
conversational or Fast Path
transaction. See DFS1291E.
X'27' 39 IMS conversation is stopped, similar to
an /EXIT command.
X'28' 40 DFSNPRT0 requested that a message
be rerouted to a remote system, but
failed. See DFS064.
X'29' 41 DFSNPRT0 requested that a message
be rerouted to a remote system, but
failed. See DFS070.
X'32' 50 The length specified in the application
data section or the segment length for
multi-segment input data exceeds the
length specified on the MSGLEN key
parameter of the XCF IXCMSGO
macro.

DFS064 08:31:04 DESTINATION CAN NOT BE FOUND OR CREATED
– Explanation: The first eight characters of the input are not recognized as a
valid transaction, logical terminal name, or command.
– Usual cause: The transaction name specified in the input request is not
recognized by the target IMS system.
Back to top
View user's profile Send private message
Display posts from previous:
Post new topicReply to topic Page 1 of 1

MQSeries.net Forum IndexMainframe, CICS, TXSeriesMQ OTMA Bridge versus IMS MQ Triggering - Pros / Cons
Jump to:



You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum
Protected by Anti-Spam ACP


Theme by Dustin Baccetti
Powered by phpBB 2001, 2002 phpBB Group

Copyright MQSeries.net. All rights reserved.