Hi Basem,

Yes, you can do that, but you need to make sure that you do not change anything in original Message Header. You should only use message header to retrieve message body.

Status, sessions etc are stored in message header, with message body class name and message body ID.

So in Ensemble, you can create a Webservices which will accept request. And request may contain message body class name, source and Target. Now you will query in Ens.MessageHeader with this params and get message body IDs, and you already know class name. From message body IDs you can get all the messages and can construct a response for your Webservice.

Your Vendor can call this Webservice, whenever he wants to PULL all the details of queued up messages.

I understand, a bit of coding involved doing this, but this how I think you can achieve the requirements.

Please let me know if you find any better way doing so.

Regards,

Sourabh

Hi Jimmy,

For such scenario, we should $$$Trace.

We can covert HTTP request to string and pass it in trace. $$$Trace can take string or anything inherited from ens.message.

In Production, in the corresponding Business Operation, find Enable trace setting. 

Then for next transaction, you can see the httprequest in trace.

Don't forget to disable the trace option once you are done, as we should try this only for debugging purpose.

Regards

Sourabh

/// pStr - Complete string that require to split
/// pByLen - Length you want in each part
/// arrObx - passed by reference to store each OBx in array

ClassMethod SplitByLen(pStr As %String, pByLen As %Integer, ByRef arrObx) As %Status
{
   Set (startPos,obxCntr)=0
   for 
   {
      Quit:'(startPos < $L(pStr))
      Set arrObx($I(obxCntr)) = $E(pStr,$I(startPos),startPos+pByLen-1)
      Set startPos = startPos + pByLen
   }
   Quit $$$OK
}