EbXML Header Properties to JMS properties

Hi,
We are using the ebXML protocol(ebMS) and using JMS integration to set up the Internal Delivery Channel. We are not using Oracle AQ instead using BEA JMS.
For inbound messages, we noticed that when the ebXML message gets enqueued on the JMS Queue but we dont get all the ebXML header properties in the JMS properties of the message. Looks like only those properties which are needed by Oracle B2B are coming into the JMS properties.
In our current architecture, we will be needing some more of the ebxml headers (like Conversation Id, From Role, To Role, Receiver Routing Id,Sender Routing Id, Service etc).
Similarly for the Outbound messages, some of the JMS properties that is being set by the mid tier layer which enqueues the message on the Queue is being overridden by Oracle B2B. Looks like the message id is being overwritten and also this mid tier layer explicitly sets the conversation id, To Role, Receiver Routing Id, Sender Routing Id and Ref To Msg Id etc.
We are looking at these details as we will need to migrate to Oracle B2B without much impact on the other mid tier components.
Please give your thoughts.
Thanks
Kavitha

Hi Sinkar, Nandagopal,
The following is the message we are trying to send:
<mes:message transport="async" acknowledgeRequired="true"
xsi:schemaLocation="http://www.bt.com/btgs/solutions/message ../../Schemas/messageV3.01.xsd"
xmlns:mes="http://www.bt.com/btgs/solutions/message"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
     <mes:messageSequenceID>1166429678cRY</mes:messageSequenceID>
     <mes:messageType>incident</mes:messageType>
     <mes:messageAction>event</mes:messageAction>
     <mes:messageDateTime>2006-12-18T08:14:40.005Z</mes:messageDateTime>
     <mes:routingDataItem>
          <mes:param>source</mes:param>
          <mes:value>Expedio IM</mes:value>
          <mes:param>destination</mes:param>
          <mes:value>TP BT MOM Bridge</mes:value>
     </mes:routingDataItem>
     <mes:payload>
          <inc:incident xmlns:inc="http://www.bt.com/btgs/solutions/message/incident"
                    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" majorVersion="1" minorVersion="1"
          xsi:schemaLocation="http://www.bt.com/btgs/solutions/message/incident ../../Schemas/IncidentV1.01.xsd">
               <inc:sourceSystem type="Remedy" name="Expedio IM"/>
               <inc:targetSystem type="TP" name="TP BT MOM Bridge"/>
               <inc:incidentHeader supplierTicketRef="XF02958950" customerTicketRef="NA" masterTicketRef="unknown" supplierTicketCreateDate="2006-12-18T07:00:55.000Z">
               <inc:customerDetails contactNumber="609-252-6596" customerContact="Jo Bloggs" customerContract="ABC123" customerID="23558" customerName="ENCO"/>
               <inc:incidentContact>          
                    <inc:role>Prime Contact </inc:role>          
                    <inc:firstName>GCS Helpdesk </inc:firstName>          
                    <inc:lastName>GCS Helpdesk </inc:lastName>          
                    <inc:telephone>0800 282820 </inc:telephone>          
               </inc:incidentContact>          
                    <inc:product xsi:type="inc:CPEproductType" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
                         <inc:elementID>3212435</inc:elementID>
                         <inc:productID>67</inc:productID>
                         <inc:productType>Routers</inc:productType>
                         <inc:productName>Cisco 7204</inc:productName>
                         <inc:productDescription >Unknown</inc:productDescription>
                         <inc:aEndSite>
                              <inc:siteName>RUSSIA:MOSCOW;17; BUILDING 1;KRYLATSKAYA STREET;121614</inc:siteName>
                              <inc:siteReference>TMPRUS-01</inc:siteReference>
                              <inc:siteID>390075</inc:siteID>
                              <inc:city>MOSCOW</inc:city>
                              <inc:country>RUSSIAN FEDERATION</inc:country>
                              <inc:postcode>121614</inc:postcode>
                              <inc:location>
                                   <inc:subPremise>BUILDING</inc:subPremise>
                              </inc:location>
                         </inc:aEndSite>
                         <inc:hostname>INB_RU_MOS01_RTR_01</inc:hostname>
                         <inc:serialNumber>74223995</inc:serialNumber>
                    </inc:product>
                    <inc:incidentTitle>Network Unreachable</inc:incidentTitle>
               </inc:incidentHeader>
               <inc:incidentBody>
                    <inc:incidentAction incidentAction="attribute change" incidentType="fault"/>
                    <inc:incidentPriority>2</inc:incidentPriority>
                    <inc:incidentSeverity>2</inc:incidentSeverity>
                    <inc:incidentStatus>in-progress</inc:incidentStatus>
                    <inc:logNotes>
                         <inc:noteLine timestamp="2006-12-18T08:14:38.000Z" author="macenadf">INITIAL VALUES:Element reported is INB_RU_MOS01_RTR_01 at RUSSIA:MOSCOW;17; BUILDING 1;KRYLATSKAYA STREET;121614.Assigned to Douglas Macena.Status set to WORK IN PROGRESS.Severity set to 2.Ticket submitted at 18/12/2006 07:00:55.</inc:noteLine>
                    </inc:logNotes>
               </inc:incidentBody>
          </inc:incident>
     </mes:payload>
</mes:message>
Do the header properties have to be modified here?
Further no other details were obtained in the B2B opmn server logs besides Start and Stop OPMN
Is there a stub we can run from WLI that can put a message on the JMS, that can be read by B2B?
With Thanks & Regards,
Suhas.

Similar Messages

  • JMS header properties are null

    Hi all,
    At sending messages to the internal WLI event queue from a client application
    I get the following problem:
    I set a application specific jms header property via the setStringProperty method.
    An event node in the receiving workflow extracts the property with EventAttribute.
    The event node gets the message but the header property is always null. I tried
    various sorts of property names, none of them works. Only the real jms header
    names which are set by the send method give non null values, but I cannot set
    these in the client application.
    Any ideas?

    Hi All,
    I have got it working here is how i did it.
    - transport header add a user defined name and value, it get added to outbound transport header.
    - at receiving end. retrieve it using for/each loop for inbound header user properties.
    Regards,
    Amit

  • Message Selector and Setting JMS Header Properties PL/SQL Enqueue

    Currently I am attempting to use the Message selector functionality. I just know know exactly how we need to set the property in PL/SQL when enqueuing. I also want to verify the syntax that I should use in the event that I am doing this incorrectly...
    The code I am using to test the enqueue is
    declare
    enqueue_options dbms_aq.enqueue_options_t;
    message_properties dbms_aq.message_properties_t;
    message_handle RAW(16);
    agent sys.aq$_agent := sys.aq$_agent('', null, null);
    message sys.aq$_jms_text_message;
    recipients DBMS_AQ.aq$_recipient_list_t;
    BEGIN
    message := sys.aq$_jms_text_message.construct;
    message.set_text('<ORDER><HEADER_ID>16992531</HEADER_ID></ORDER>');
    message.header.set_string_property('bamfilter','ORDER_ENTRY');
    dbms_aq.enqueue(queue_name => 'XX_OM_MONITOR_Q',
    enqueue_options => enqueue_options,
    message_properties => message_properties,
    payload => message,
    msgid => message_handle);
    COMMIT;
    END;
    we have tried a few other methods, but still to no avail...
    the syntax I believe for the selector in the ems should be bamfilter='ORDER_ENTRY'
    Any help would be great.
    The DB the Queue is locate is on 10g if that makes any difference...

    Yes
    I am able to specify JMS Header and JMS Properties when producing a message. However I am not able to user "Message Selector" to filter messages based on JMS Properties information when consuming messages.
    In the link you provide, there is an example on how to use Message Selector:
    # (a copy from the link)
    Message Selector
    ...for example, you can enter logic, such as:
    * JMSType = 'car' AND color = 'blue' AND weight > 2500
    * Country in ('UK', 'US', 'France')
    I believe the example with "Country" is exactly what I need, but I can´t get it work.
    I create the same example above, setting a property named "Country" in the JMSHeader, sending the message to a JMS Queue (BPEL Process #1) and try to comsume it on the Message Selector (BPEL Process#2), but JMSAdapter never consumes the message.
    Thanks for your help.

  • How to set MQ message header properties using JMS adapter? (10.1.2)

    Hello,
    I am trying to send MQ messages from a BPEL process. We are using OAS 10.1.2 and JMS MQ adapter. Could you please let me know how to set the message descriptors like message format, type, report and reply to queue properties and queue open options (in jmsAdapterOutboundHeader).
    Regards,
    Geratayya

    put something like this
    <activationAgents>
          <activationAgent className="oracle.tip.adapter.fw.agent.jca.JCAActivationAgent" partnerLink="PARNERLINKNAME">
            <property name="clusterGroupId">SOMEUNIQUEVALUE</property>
            <property name="portType">PARTNERLINK_PORTTYPE</property>
          </activationAgent>
        </activationAgents>

  • Creating Mediator header properties or Mediator variables.

    I want to store values obtained from the synchronous reply from the service to some mediator properties or variables, so that next sequential service call can utilize the values from those variables.
    How do I add such a variable.?

    You need to store this value outside mediator, ex file and retrieve values. Mediator is not intended to store any values.

  • How to set ApplIndentityData header field in JMS adapter

    Hi Guys ,
        I have one requirement for update the field in SAP JMS header. I am using transport protocol for IBM Websphere MQ in JMS adapter.
    While sending data to IBM Websphere MQ Queue via JMS Adapter, need to set the field called ApplIndentityData with the appropriate value which is populate to a MQHRF2 header of a message.
    So, regarding that where will do it? Means JMS receiver adapter or IBM MQ level. If JMS receiver adapter, I think using ASMA, So please guide me how to set this filed value in JMS adapter or share any document you have.
    Thanks & regards
    Vijaykumar S

    Hi RejaSekar,
           I reffered your blog and did the below settings in JMS module and ASMA settings. 
    1) Changed the mode for u201CJMS-Complaintu201D instead of u201CWebsphere MQ(non JMS)u201D
    2) Additional JMS message properties tab created below property name and java type.
           LocalName    --> String
           Partname      -->  String
    3) In module parameter tab added the below module name and key
        AF_Modules/DynamicConfigurationBean   -->  LocalEnterpriseBean  -->  RFH2HEADER
    4) Under parameter Tab
         RFH2HEADER       -->   key.0      -->     insert http://sap.com/XI/System/JMS  DCJMSMessageProperty0
         RFH2HEADER       -->   key.1      -->     insert http://sap.com/XI/System/JMS  DCJMSMessageProperty0
         RFH2HEADER      -->  value.0    -->    LocalName
         RFH2HEADER      -->  value.1    -->    PartnerName
    Kindly check the above settings whether this is correct or wrong. If anything wrong please let me know what we need to change JMS receiver adapter.
    Actually my requirement is need to set these parameters and set the value to that parameters and pass in to /usr folder of a WebsphereMQ message.
    Kindly check and help me out.
    Thanks & regards
    Vijayakumar S

  • How to remove header data from JMS Queue while sending by jms adapter

    Hi.
    I have a problem regarding the MQ-series JMS adapter.
    When writing the file the JMS adaptor putting  some additional tags.
    Actually we are converting idoc-xml to flat file by using ABAP mapping which is available in SAP document. We are using JMS Receiver adapter, whiel sending flat file to JMS QUEUE,  it is displaying some extra xml tags. I think this is the header data available in IDoc XML. Can any body help me in removing header data.
    There must be some way for XI's JMS adaptor to not include these information.
    My example looks like this:
    RFH Ø  
    ¸MQSTR
    ¸ " is junk that I really dont need in the file.
    How can you setup the JMS adaptor not to put in these information?
    Thanks & Regards,
    Madhusudhan

    not related

  • JMS Adapter setting the header data of MQ message

    Hi All,
    I need to set the properties in JMS adapter for setting the header data of MQ message.
    JMS_IBM_MQMD_Format = MQFMT_NONE.
    Thanks in advance
    Ravijeet

    Hi All,
    I am stuck in a typical XI issue.......I have a scenario where my input to XI is IDoc and output is xml message going to IBM MQ.
    The IDoc is sending some chineese character which is fine is SXMB_MONI Integration server and also fine in the payload of message monitoring, so feel the message is going fine from XI to MQ.
    But the receiver EDI system which is picking the message from MQ queue says the chinese characters are getting corrupted. They say that you need to set the additional properties in MQ header data
    JMS_IBM_MQMD_Format = MQFMT_NONE.
    How do I do this in communication channel for jms adapter ? How to I set the MQ header data in jms communication channel ?
    Thanks in advance
    Ravijeet
    Edited by: RAVIJEET DAS on May 12, 2009 8:27 AM
    Edited by: RAVIJEET DAS on May 12, 2009 8:27 AM

  • Dynamic Partnerlink Properties?

    I am doing a HTTP Post "web service" call - and setting up some necessary HTTP header properties by adding them in my bpel.xml as custom partnerLink properties...
    <partnerLinkBinding name="MyHTTPWebService">
    <property name="From">DIATOCCD</property>
    <property name="MessageName">D8_REQ_CREATE</property>
    <property name="OrigUser">MyUsername</property>
    <property name="Password">MyPassword</property>
    </partnerLinkBinding>
    This works fine. These properties come across in the HTTP Post as HTTP Headers. Now the customer wants me to add a new HTTP Header - and make the value dynamic at run-time. As far as I can tell, this is not possible. But maybe I'm missing something obvious. So they'd want something like this ...
    <partnerLinkBinding name="MyHTTPWebService">
    <property name="From">DIATOCCD</property>
    <property name="MessageName">D8_REQ_CREATE</property>
    <property name="OrigUser">MyUsername</property>
    <property name="Password">MyPassword</property>
    <property name="TransactionID">10001</property> (this value would be determined at run-time)
    </partnerLinkBinding>
    Any ideas?
    Thanks!
    Rod

    I am now attacking this a bit differently. I have abandoned the WSIF method of doing HTTP Binding - and am writing some Java code in a Java Embedding component to do the HTTP POST "manually". Not pretty - but it allows me to dynamically set my HTTP Headers in the Java code. Does anyone know what disadvantages this may cause (performance, robustness, etc.)?
    Thanks for any help.
    Rod

  • Extract SOAP Header from JMS Adapter PartnerLink

    Hi Chintan,
    I have next problem:
    I have a JMS queue. The message in this queue are "SOAP Message" with Body and SOAP Header.
    I have developed a "BPEL JMS service" with a JMS Adapter PartnerLink.I need extract SOAP Header from PartnetLink JMS Adapter, but with headerVariable into "Receive activity" it´s not work OK.
    Could anybody help me with this problems?
    Thanks a lot.
    Regards.

    HI,
    Try your luck at this link
    http://orasoa.blogspot.com/2007/09/using-custom-headers-in-bpel.html

  • Passing Idoc Control Record information  to JMS header

    Hi All,
    We have a requirement where we need to pass the 'MESCOD' and 'MESFCT" in the EDIDC_40 - Control record for the idoc to the Header of a JMS message.
    Basically we are trying to pass IDOC Control segment to the JMS header.
    I was looking at the options we have in the JMS adapter, and i am not sure how can this be achieved.
    Would appreciate any info on how this can be done.
    Thanks,
    Karthik

    Hi Karthik,
    As suggested by Ravi, you can hardcode this values in XI mapping before pushing data to JMS.
    Otherway round would be...check for User Exit where you can populate EDIDC_40 with MESCOD and MESFCT.
    Nilesh

  • Not all JMS consumers are created equal

    Hi,
    I am experiencing a very strange problem with weblogic 9.2 JMS.
    I am using JMS as flow control in an application that allows our users to import data into our application.
    the data to be imported varies in size from 100's of records to many hundred thousands of records.
    JMS feed a MDB that takes the request and imports the data. The DD allows to 10 concurrent MDB's to service the requests.
    The problem arises when the 11'th and 12th request comes in. Instead of waiting for the first availibe MDB to service the requests they seems to be put into the queue of the MDB that was started first. If this MDB is in the process of importing a very large file request 11 and 12 will sit and wait until the large one is done even though there are other MDB's that are idle.
    I am hoping that there is an easy fix for this, but for the life of me, I cant seem to find it.
    The DD for the MDB looks as follows
    <weblogic-enterprise-bean>
    <ejb-name>RuleEngineMDB</ejb-name>
    <message-driven-descriptor>
    <pool>
    <max-beans-in-free-pool>10</max-beans-in-free-pool>
    <initial-beans-in-free-pool>10</initial-beans-in-free-pool>
    </pool>
    <destination-jndi-name>com.company.product.RuleEngineRequestQueue</destination-jndi-name>
    </message-driven-descriptor>
    </weblogic-enterprise-bean>
    the queue is defined in Weblog as
    <queue name="RuleEngineReque
    stQueue">
    <sub-deployment-name>MyJMSServer</sub-deployment-name>
    <delivery-params-overrides>
    <delivery-mode>Non-Persistent</delivery-mode>
    </delivery-params-overrides>
    <message-logging-params>
    <message-logging-enabled>true</message-logging-enabled>
    <message-logging-format>%header%,%properties%,%body%</message-logging-format>
    </message-logging-params>
    <jndi-name>com.company.product.RuleEngineRequestQueue</jndi-name>
    </queue>
    regards,
    Lars Hansson
    CTO Compost Marketing AB.

    A little more detail: You will need to configure and target a custom conection factory with "message maximum" set to 1 (the default is 10), and then modify the MDB descriptor to reference the JNDI name of the custom connection factory. The connection factory should be targeted to the entire cluster, and must be targeted to the same cluster that hosts distributed queue. If the MDB is transactional, ensure that that the custom connection factory is also "xa enabled".
    Edited by: TomB on Mar 2, 2010 2:44 PM

  • A basic query with respect to using Message Selectors in JMS

    Hi
    When i am going MEssage Selectors topic in web , it seems very confusing for me .
    I have written a simple JMS Application based on Weblogic as my Queue .
    I have two Java Files one for Message Producer and another file acting as Message Consumer using MDB
    I have a basic TextMessage with some header properties in my Producer file .
    Please tell me in what file should i put MessageSelector ??.
    Thanks for reading .
    Please clarify my query on this .

    Thank you very much .
    I found the code of a MDB making useage of a Selector .
    *<message-driven>*
    *     <message-selector>shirtType = 'polo'</message-selector>*
    *     </message-driven>*
    Assume that i written a MDB that listens to particular type of Messages (Polo in this case ) .
    Please tell me what happens to other messages in the Queue that were never listened by the MDB .
    Thank you .

  • JMS Unit-Of-Work in OSB Proxy Service

    I'm trying to create a JMS Unit-of-Work OSB Service by populating the JMS transport user properties:
    JMS_BEA_UnitOfWork
    JMS_BEA_UnitOfWorkSequenceNumber
    JMS_BEA_IsUnitOfWorkEnd
    However, after publishing all of the messages to the Queue, JMS is not recognizing the end of the UOW.
    When I publish the last message in the UOW, I set 'JMS_BEA_IsUnitOfWorkEnd' in the transport header properties to true(). However, when I look at the last message in the queue, it shows correctly that the JMS Properties Key is 'JMS_BEA_IsUnitOfWorkEnd', the Value is 'true', but the type is 'java.lang.String.' I believe the problem could be that the type is incorrect - it should be a java.lang.Boolean. However, I cannot figure out how to make it a boolean. Can you help? Do I need a boolean here? How do I assign a boolen to the transport header? I've tried 'true', 'true()', and xs:boolean('true') and they all wind up be java.lang.String!
    Thanks.

    string value for JMS_BEA_IsUnitOfWorkEnd should work just fine.
    Make sure all messages in the same group has the same JMS_BEA_UnitOfWork value.
    you can use OSB to produce unit of work messages.
    for the consumer, you need to create a jms proxy using java type, then use a java callout to convert the message array list into xml that you can then process in a for loop.
    Edited by: jerry.sy on May 13, 2011 1:38 PM
    Edited by: jerry.sy on May 13, 2011 1:40 PM

  • BC4J send messaging adapter gets JMS exception

    Running a 9i standalone application based on BC4J. The following code is trying to send a single VO to an 8i queue. Note: prior to entering this routine, I have already called the .writeXML() method on the same VO and looked at the text and the XML all looks great.
    AdapterMessage[] msgs = new AdapterMessage[1];
    try {
    // set up queue connection
    msgs[0] = AdapterMessage.newViewObjectMessage( vo );
    sendMessage( msgs );
    public void sendMessage( AdapterMessage[] messages)
    try
    ApplicationModule am = QWsetup.ApplicationModule();
    BC4JSendingAdapter adapter = new BC4JSendingAdapter();
    adapter.setShowTrace(true);
    adapter.sendMessage( am, messages);
    catch(AdapterFailureException e)
    System.err.println("sendMessage error: "+e.getMessage()+"\n"+
    e.getOriginalException());
    e.printStackTrace();
    I step into the adapter.sendMessage line and get the following in my message window...
    [2] Creating JDBC Connection...
    [3] oracle.jdbc.driver.OracleDriver
    [4] jdbc:oracle:thin:@pgia05.pginw.com:1521:qmpgit
    [5] Creating Topic Connection...
    [6] Creating Topic Session...
    [7] Creating Topic...
    [8] Publishing message...
    [9] Done.
    sendMessage error: JMS exception while processing message
    java.lang.NullPointerException

    Hi Roger,
    I've been looking into your error message: JMS Exception while processing message.
    I was able to reproduce this error message. In my case I was trying to send a BESAdapter message without setting its mandatory properties. My code was:
    BESAdapterMessage a = (BESAdapterMessage)BESAdapterMessage.newViewObjectMessage(empvo);
    BESAdapterMessage[] messages = new BESAdapterMessage[] {a};
    try
    am.sendMessage(messages);
    There are two mandatory properies of the adapter that must be set that I forgot. I found the answer in the help. If you do a search for BESAdapterMessage you will find page Using the Adapter Message class for message payloads. Scroll down this page to the section: Using the BESAdapterMessage Subclass.
    Although you are using the adapter classes without the modeler you may find some of the other help topics in the UML Modeling Help useful. Look under Modeling Activities for e-business Integration -> Creating Messaging Adapters.
    I have raised a bug to put more validation in so that the error message will specify that properties have not been sent. Here is the abstract from help:
    The BESAdapterMessage class (oracle.bm.ebiadapters.BESAdapterMessage) is a subclass of AdapterMessage. It provides additional functionality which is needed by the e-business integration generators to achieve full integration. In addition to setting the payload, the BESAdapterMessage class allows you to set metadata properties which are mapped to JMS header fields. Some of these properties are mandatory and some are optional. For example, the setEventName(String eventName) and setEventKey(String eventKey) methods can be used to set the mandatory Event Name and Event Key properties. Once set, these properties are mapped to JMS header properties to allow the JMS messages to be correctly propagated between Oracle AQ queues.
    I've also raised a doc. bug to look again at the doc in this area.
    Thank you very much for taking the time to report on this problem. We are reliant on input from people like you to continue to improve our product.
    Rgds
    Susan

Maybe you are looking for