Dynamic AS2 subject from XI payload

Hi,
My interface has to send data to a third party system through the Seeburger AS2 adapter.
The AS2 subject has to be dynamic and depends on a particular node in the incoming message
I kknow I can use dynamic configuration for setting the subject but my mapping is 1 to N mapping and hence cant use dynamic configuration
Any suggestions on how the AS2 subject can be set dyanmically from the payload itself in stead of setting the dynamic configuratio parameters??
Thanks
Bharath

Use the AttribMapper which comes with your AS2 delivery (see the modules manual). If you add the AttribMapper to your communication channel (receiver) right before your AS2 adapter, you can set the subject dynamically by using
key: http://seeburger.com/xi/AS2/dtSubject
value: "MySubject"
-> for a fixed value
or take it from another dynamic attribute:
value: http://sap.com/xi/XI/System/File/FileName
(as an example)
If you are using the SEEBURGER BIC module to map from XML<->EDI you may use this module to extract the desired value and add it to the XI Message as dynamic configuration property using the mapping output parameter.
Edited by: Frederic Bitsch on Sep 25, 2009 1:47 PM

Similar Messages

  • Dynamic file name from input payload (RFC 2 flat file)

    Hi,
    I have an RFC to flat file scenario. The output flat file has not an XML structure, it's just a plain text file generated with abap mapping.
    In my source interface (RFC), I have a field called <FILENAME>, I want to use the value of that field to create the target file using dynamic file name. But if  in variable substitution I use payload:ZRFC_NAME,1,FILENAME,1 It doesn't work because the dynamic variable substitution try to access to output payload, not the source one...
    What can I do?

    Hi Marshal,
           You can add a extra node to your target strucutre like
    FileName- Node
    --FileName - Element.
    do the mapping from the field filename of RFC to FileName field in u r target strucure. And use this  field path at Refrence in variable subtituion.
    In the Content converison add the Name & Values as below
    FileName.fileldNames -- FileName
    FileName.fieldFixedLengths -- 0
    FileName.fixedLengthTooShortHandling -- Cut
    So the extra field in u r target structure would not populate in u r target text file.
    Cheers
    Veera

  • Dynamic file name from messsage payload

    Hi Friends,
    My requirement is to read one .xml file , which has  Purchase Order deatails and place .html file on receiver side, we are using XSLT for mapping.
    The file name should be "POnumber.html " , i've gone through below but couldn't get much
    http://help.sap.com/saphelp_nw04/helpdata/en/43/03612cdecc6e76e10000000a422035/content.htm
    Can any one send the that code , and steps to add that code in side XSLT.
    Thanks
    John

    Hi,
    With above links
    /people/jayakrishnan.nair/blog/2005/06/20/dynamic-file-name-using-xi-30-sp12-part--i - Dynamic File Name Part 1
    /people/jayakrishnan.nair/blog/2005/06/28/dynamic-file-namexslt-mapping-with-java-enhancement-using-xi-30-sp12-part-ii - Dynamic File Name Part 2
    See in the below Michal blog , how to conver the file as html , take that part only.
    /people/michal.krawczyk2/blog/2005/11/23/xi-html-e-mails-from-the-receiver-mail-adapter
    Regards
    Chilla

  • File Receiver - Dynamically create filename from data in payload

    Hi there.
    Can anyone tell me the approach I need to take to be able to use the data in one field to determine the filename in the file receiver adaptor.
    I have a requirement that requires that I save a file with the following mask:
    xxxx_xxx<b><date extracted from field in payload></b>.csv
    I would appreciate any help on this.
    Thanks in advance.
    Mick.

    Hi Mick,
    you just need to use adapter specific parameters
    and you will be able to set the name in your mapping
    (from your payload)
    /people/william.li/blog/2006/04/18/dynamic-configuration-of-some-communication-channel-parameters-using-message-mapping
    Regards,
    michal
    <a href="/people/michal.krawczyk2/blog/2005/06/28/xipi-faq-frequently-asked-questions"><b>XI / PI FAQ - Frequently Asked Questions</b></a>

  • Seeburger AS2: dynamic message subject

    Hi guys,
    I'm using and developing an AS2 scenario with the Seeburger Adapter.
    I've read Deepthi Thread relating having the AS2 subject build dynamically but there is no suggestion, and the manual is not clear about this.
    In the situation of getting one message sent by an external partner, we need to have the message subject placed as * and then replace the * by a field sent on the message or even by a static text.
    Have you guys faced this kind of problem?

    Hi,
    > Can anyone please me how to identify different messagetype (like order response,ASN and invoice) without using message subject in AS2 sender adapter
    When message comes to PI, initially it goes to seeburger workbench, here based on the EDI type (ANSI X12 or EDIFACT or...), EDI Version (4010 or 4020 or...) and Signal (850 or 810 or ....) it determines the respective mapping (E2X or X2E) program, this is done by Classifier.
    When we are sending outbound scenarios and using MDN option then message subject plays an important role. Once we send the outbound signal we can get the ack(997) signal, based on AS2ID and message subject it identifies the respective 997 inbouns scenario.
    > I cant use splitter because my sender is sending XCBL data and splitter we can use when we go for EDI.
    Seeburger is used if you are handling the EDI data but here you are using XCBL so you no need to use the seeburger adapters.
    Regards,
    Venkata Ramesh

  • Help on how to read the content of an XML file from the payload

    I have a receiver channel / mail adapter, that sends e-mails with a XML attachment.
    I’m trying to write a Bean, that should make it possible to rename the attached XML file dynamically.
    In the Bean I want to read the content of the attached XML file, it could be the “order number”.
    The filename should then be “Order number”.XML.
    <u><i>Can anyone help me with how to read the content of the XML file from the payload.</i></u>
    <i><b>Frank</b></i>

    hi,
    check this: http://jakarta.apache.org/poi/

  • How to run business services as dynamically generated Subject?

    Hi experts,
    I have configured a business service which puts a message on a JMS queue in a weblogic container other than ALSB's weblogic container.The queue is configured with a security policy [say a 'MessagePublisher' role], so that only users with role of 'MessagePublisher' can send message to that queue.
    We have different partners SFTPing messages(xml/csv/excel format) to us, of which only few of them would have a role of 'Message Publisher'. I have configured a proxy to read these files from a directory, however sender of some of these messages may not have a role of 'Message Publisher'.
    I am expecting the senders' credentials to be appended to the message by some process on SFTP server. How can I generate a 'Subject' within a proxy using these credentials and do a run as on the business service, so that only users with the role of 'MessagePublisher' succeed in sending message to the queue.
    I probably can configure my business service to run as a user account who has the relevant role, but I do not want to hard code the UserAccount within business service and obtain a user account using sender's credentials.
    Is ALSB not supposed to be used as suggested above?Would highly appreciate any thoughts on this..
    Regards.

    The JMS business service can use only a static service account. I think this has an undesirable implication that the business service cannot be invoked as a dynamically generated subject.
    Only way I know of to enforce role based access control in this scenario is to have an extra proxy service in front of JMS business service. Enforce access control over this extra proxy service.
    To invoke this extra proxy service with credentials embedded embedded in the message, I think you need to look at "custom authentication" option under message level security. I am not sure how this would work. May be someone here can explain that.

  • EmailNotification- passing dynamic value to From address

    hi,
    on configuring email activity,
    we are passing the from address dynamically.
    From address is taked from the payload.
    but when the email is triggered, the email comes from the address which we have configured in the UMS in the server side..
    why does this happens.. ??

    i am referring to From Account name only..
    configured the From account name in the server UMS (for eg: [email protected])
    but, i need this to be passed dynamically from the payload..
    in the Email assign activity, From account name is mapped to the payload From address..
    but its not taking that address from the payload..
    the account name configured n the server is taken as default..
    what should be done for dis?

  • How to display a dynamic image file from url?

    Hey,I want to display a dynamic image file from url in applet.For example,a jpg file which from one video camera server,store one frame pictur for ever.My java file looks like here:
    //PlayJpg.java:
    import java.awt.*;
    import java.applet.*;
    import java.net.*;
    public class PlayJpg extends Applet implements Runnable {
    public static void main(String args[]) {
    Frame F=new Frame("My Applet/Application Window");
    F.setSize(480, 240);
    PlayJpg A = new PlayJpg();
    F.add(A);
    A.start(); // Web browser calls start() automatically
    // A.init(); - we skip calling it this time
    // because it contains only Applet specific tasks.
    F.setVisible(true);
    Thread count = null;
    String urlStr = null;
    int sleepTime = 0;
    Image image = null;
    // called only for an applet - unless called explicitely by an appliaction
    public void init() {
                   sleepTime = Integer.parseInt(getParameter("refreshTime"));
              urlStr = getParameter("jpgFile");
    // called only for an applet - unless called explicitely by an appliaction
    public void start() {
    count=(new Thread(this));
    count.start();
    // called only for applet when the browser leaves the web page
    public void stop() {
    count=null;
    public void paint(Graphics g) {
    try{
    URL location=new URL(urlStr);
    image = getToolkit().getImage(location);
    }catch (MalformedURLException mue) {
                   showStatus (mue.toString());
              }catch(Exception e){
              System.out.println("Sorry. System Caught Exception in paint().");
              System.out.println("e.getMessage():" + e.getMessage());
              System.out.println("e.toString():" + e.toString());
              System.out.println("e.printStackTrace():" );
              e.printStackTrace();
    if (image!=null) g.drawImage(image,1,1,320,240,this);
    // called each time the display needs to be repainted
    public void run() {
    while (count==Thread.currentThread()) {
    try {
    Thread.currentThread().sleep(sleepTime*1000);
    } catch(Exception e) {}
    repaint(); // forces update of the screen
    // end of PlayJpg.java
    My Html file looks like here:
    <html>
    <applet code="PlayJpg.class" width=320 height=240>
    <param name=jpgFile value="http://Localhost/playjpg/snapshot0.jpg">
    <param name=refreshTime value="1">
    </applet>
    </html>
    I only get the first frame picture for ever by my html.But the jpg file is dynamic.
    Why?
    Can you help me?
    Thanks.
    Joe

    Hi,
    Add this line inside your run() method, right before your call to repaint():
    if (image != null) {image.flush();}Hope this helps,
    Kurt.

  • Dynamic Error Message from a Bundle Showed in a rich:fileUpload

    Hello.
    There is a way to show a dynamic error message from a bundle (i.e, There is a problem in the word {0} in line {1}.) in a rich:fileUpload after the Managed Bean method in fileUploadListener="#{MyManagedBean.myMethod}" attribute was performed? That's because the error message parameters are discovered only after the MyManagedBean.myMethod execution.
    As far I know, I'm able only to show a static message with transferErrorLabel="#{myBundle.myErrorMessage}" attribute.
    Here is my rich:fileUpload component code:
      <rich:fileUpload id="upload"   
         fileUploadListener="#{PlanilhaManagedBean.importar}"  
         maxFilesQuantity="100" 
         immediateUpload="true" listHeight="130" acceptedTypes="xls"  
         addControlLabel="#{bundle.geralProcurarArquivo}" 
         ontyperejected="alert('#{bundle.geralExtensaoInvalida}')"    
         cancelEntryControlLabel="#{bundle.geralCancelar}" 
         clearAllControlLabel="#{bundle.geralLimparTudo}"     
         clearControlLabel="#{bundle.geralLimpar}" 
         doneLabel="#{bundle.geralArquivoTransferidoComSucesso}"  
         progressLabel="#{bundle.geralTransferindoArquivo}" 
         stopControlLabel="#{bundle.geralParar}"  
         stopEntryControlLabel="#{bundle.geralParar}" 
         transferErrorLabel="#{bundle.geralErroNaTransferenciaDoArquivo}" /> Any idea?
    Thanks in advance.

    Hi, BalusC. Thanks for your reply.
    I already tried that. I put a navigation-rule in faces-config.xml to the same page of the rich:fileUpload, but the rich:fileUpload component doesn't starts a get or a post request. So the navigation-rule is ignored and the page wasn't rendered again.
    I also tried to put the <a4j:support ...> in the rich:fileUpload to re-render the <h:messages ...> component, but didn't work too. The <h:messages ...> wasn't re-render.
    Thanks in advance.
    Edited by: reolca on May 10, 2009 5:40 AM

  • How to remove namespace prefix from target payload when using HTTP in PI7.0

    Hi,
    i have a requirement to remove namespace prefix from target payload when receiver receives the payload by an HTTP request.
    i am not able to use XML Anonymizer Bean as in HTTP channel its not possiile.
    Target structure after mapping now is:
    <?xml version="1.0" encoding="UTF-8"?>
    <ns3:Order xmlns:ns3="urn:xxx-com:pi:project">
    fields
    </ns3:Order>
    i need the target structure after mapping should look like:
    <?xml version="1.0" encoding="UTF-8"?>
    <Order xmlns:="urn:xxx-com:pi:project">
    fields
    <Order>
    i removed namespace from source and target Message Type of message mapping but still getting "ns3" prefix. My requirement is to just have this ns3 removed.
    Please reply if anyone has solved this problem before.
    Thanks

    Hi ,
    >>>i removed namespace from source and target Message Type of message mapping but still getting "ns3" prefix. My requirement is to just have this ns3 removed.
    Which process you've used for removing namespace...java/xslt mapping. In case of java mapping plese remove ns3 while creating the target element. Please go through the below blog it may help you.
    Quick Tips: Dealing with Namespaces in XI/PI
    Regards,
    Priyanka

  • Get the ID of a dynamically created symbol from library, INSIDE another symbol.

    Hi everyone,
    I'm trying to get the id from a dynamic created symbol from library.
    When dynamically creating the symbol directly on the stage (or composition level), there's no problem.
    But I just can't get it to work when creating the symbol inside another symbol. 
    Below some examples using both "getChildSymbols()" and "aSymbolInstances" 
    // USING "getChildSymbols()" ///////////////////////////////////////////////////////////////////////// 
    // ON THE STAGE 
    var m_item = sym.createChildSymbol("m_item","Stage");
    var symbolChildren = sym.getChildSymbols(); 
    console.log(symbolChildren[0].getSymbolElement().attr('id')); // ok eid_1391853893203
    // INSIDE ANOTHER SYMBOL
    var m_item = sym.createChildSymbol("m_item", sym.getSymbol("holder").getSymbolElement()); 
    var symbolChildren = sym.getSymbol("holder").getChildSymbols(); // Am i using this wrong maybe?
    console.log(symbolChildren.length) // returns 0 so can't get no ID either
    // USING "aSymbolInstances"" ////////////////////////////////////////////////////////////////////////// 
    // ON THE STAGE
    var m_item = sym.createChildSymbol("m_item","Stage"); 
    console.log(sym.aSymbolInstances[0]); // ok (i guess) x.fn.x.init[1] 0: div#eid_1391854141436
    // INSIDE ANOTHER SYMBOL
    var m_item = sym.createChildSymbol("m_item", sym.getSymbol("holder").getSymbolElement());
    console.log(sym.getSymbol("holder").aSymbolInstances[0]); // Javascript error in event handler! Event Type = element 
    In this post http://forums.adobe.com/message/5691824 is written: "mySym.aSymbolInstances will give you an array with all "names" when you create symbols"
    Could it be this only works on the stage/ composition level only and not inside a symbol? 
    The following methods to achieve the same are indeed possible, but i simply DON'T want to use them in this case:
    1) Storing a reference of the created symbol in an array and call it later by index.
    2) Giving the items an ID manually on creation and use document.getElementById() afterwards.
    I can't believe this isn't possible. I am probably missing something here.
    Forgive me I am a newbie using Adobe Edge!
    I really hope someone can help me out here.
    Anyway, thnx in advance people!
    Kind Regards,
    Lester.

    Hi,
    Thanks for the quick response!
    True this is also a possibility. But this method is almost the same of "Giving the items an ID manually on creation and use document.getElementById() afterwards".
    In this way (correct me if i'm wrong) you have to give it an unique ID yourself. In a (very) big project this isn't the most practical way.
    Although I know it is possible.
    Now when Edge creates a symbol dynamically on the Stage (or composition level) or inside another symbol it always gives the symbol an ID like "eid_1391853893203".
    I want to reuse this (unique) ID given by Edge after creation.
    If created on the stage directly you can get this ID very easy. Like this;
    var m_item = sym.createChildSymbol("m_item","Stage");
    var symbolChildren = sym.getChildSymbols(); 
    console.log(symbolChildren[0].getSymbolElement().attr('id')); // ok eid_1391853893203
    I want to do exactly the same when created INSIDE another symbol.
    var m_item = sym.createChildSymbol("m_item", sym.getSymbol("holder").getSymbolElement());
    Now how can I accomplish this? How can I get the Id of a dynamically created symbol INSIDE another symbol instead of created directly on the stage?
    This is what i'm after.
    Thnx in advance!

  • Dynamic parameter selection from infoview not storing the sql password

    We are having the problem of dynamic parameter selection from infoview not storing the sql password as it does for the actual report. We are using Crystal Reports XI Release 2 version 11.5.3.438 (Not sure of SP level, asked in separate thread).
    To be more specific.
    We have created a report that dynamically populates the parameters of the report by pulling the records from the Informix sql database and allowing selection from there.
    In the Central Management Console for the report object we have set as follows:
    Process - Database:
    Use original database logon information from the report - the sql username and pw etc
    Use same database logon as when report is run
    Process - Parameters
    In selecting a default selection there is the option to put in the sql password, however, this does not stick and clears after update.
    As such the end result is that every time this report is run from infoview and a user chooses a parameter (there are 5), crystal goes through some timeout for about a minute or so and then requests the sql password, if a user then selects the next parameter, the same timeout and password dialog appears.
    We need the crystal report to handle to the sql password for fetching the parameters as well as for the database section of running the report, however, the parameters insists on the end user always putting the password in.
    This is 100% replicatable on our system.
    Any way that we can fix this?
    Will an update fix this issue? If so could you please advise which one?
    Thanks

    Hi,
    I am having the exact same problem. Any help?
    And what does "Use same database logon as when report is run" mean? For me that would be that no prompt is needed for getting values in a dynamic parameter...
    Regards
    Magnus

  • Dynamically read data from a txt document

    I try to dynamically read data from a txt document
    in swf
    stop ();
    var pafh=this;
    import flash.events.*;
    var Araray_id:Array =new Array();
    var v_length:Number;
    var myTextLoader:URLLoader = new URLLoader();
    myTextLoader.dataFormat=URLLoaderDataFormat.VARIABLES;
    myTextLoader.addEventListener(Event.COMPLETE, onLoaded);
    function onLoaded(e:Event):void {
            Araray_id = e.target.data.araray_id.split(",");
            trace("Araray_id: "+Araray_id);
            v_length=Araray_id.length;
            trace("v_length: "+v_length);
            for (var i:Number=0;i<v_length;i++){
                pafh["Id_"+i]=new Array();
                trace("pafh[Id_+i]: "+pafh["Id_"+i]);
                var v_help:Object="id_"+i;
                trace("v_help: "+v_help);
                //pafh["Id_"+i]= e.target.data.v_help.split(",");????? Here stops the script
                //pafh["Id_"+i]= e.target.data.(v_help).split(",");????Here stops the script
                //pafh["Id_"+i]= e.target.data.[v_help].split(","); ????Here stops the script
            play();
    myTextLoader.load(new URLRequest("myText1.txt"));
    in text
    araray_id=aa,bb,cc,dd,ee,ff
    &id_0=aa1,aa2,aa3,aa4
    &id_1=bb1,bb2,bb3,bb4,bb5
    &id_2=cc1,cc2,cc3
    &id_3=dd1,dd2,dd3,dd4,dd5,dd6
    &id_4=ee1,ee2
    &id_5=ff1,ff2
    output
    Araray_id: aa,bb,cc,dd,ee,ff
    v_length: 6
    pafh[Id_+i]:
    v_help: id_0
    TypeError: Error #1010: A term is undefined and has no properties.
        at skuskaceatarraybiforas3fromtext_fla::MainTimeline/onLoaded()
        at flash.events::EventDispatcher/dispatchEventFunction()
        at flash.events::EventDispatcher/dispatchEvent()
        at flash.net::URLLoader/onComplete()
    Can you help me with this problem

    More suggestions.
    1. If you align naming conventions between data and your application - reading data could be practically a one-liner.
    If you write pafh["id_" + i] (with small case i) instead of pafh["Id_" + i] (with capital case I) the function can be just:
    function onLoaded(e:Event):void
              for (var prop:String in e.target.data)
                        pafh[prop] = e.target.data[prop].split(",");
              play();
    2. If changing conventions is not feasible, here is another thing you can do:
    function onLoaded(e:Event):void
              for (var prop:String in e.target.data)
                        pafh[prop.replace(/^\w/, String(prop.match(/^\w/)).toUpperCase())] = e.target.data[prop].split(",");
              play();

  • How to out Dynamic ref cursor from Procedure to Forms

    Hi
    I am trying to out Dynamic ref cursor from Procedure to Forms, But I am unable to do so. however cursor return the value within procedure but I am failed to capture the same in Forms
    Pl advice suggestion if any, Here I am attaching full procedure for reference
    CREATE PACKAGE winepkg
    IS
    TYPE wine IS RECORD ( mynumber number);
    /* Define the REF CURSOR type. */
    TYPE wine_type IS REF CURSOR RETURN wine;
    END winepkg;
    CREATE procedure find_wine
    (col1_in in number,
    c1 out winepkg.wine_type) as
    vsql varchar2(1000);
    cur sys_refcursor;
    x number;
    BEGIN
    vsql:='select bo_id from bo_details where bo_details.bo_id = '||col1_in ;
    open cur for vsql;
    c1:=cur;
    --fetch c1 into x;
    --dbms_output.put_line(x);
    END find_wine;
    In front end forms
    Declare
    TYPE F is REF CURSOR;
    CUR_F F;
    rec number;
    Begin
    break;
    find_wine( 1601480000011078,cur_f ) ;
    Loop
    fetch cur_f into rec ;
    Message(rec ) ;pause;
    exit when cur_f%notfound ;
    End loop ;
    exception
    when others then
    Message(sqlerrm) ;pause;
    End ;

    yo can use
    declare
    c_cursor EXEC_SQL.CursType;
    v_stmt varchar2(2000) = 'select a, b, c from mytab where cond1'; -- you can create this value dynamically
    begin
    c_cursor := Exec_SQL.Open_cursor;
    EXEC_SQL.PARSE(c_articulos, v_stmt);
    EXEC_SQL.DEFINE_COLUMN(c_articulos,1, v_colchar1, 30);
    EXEC_SQL.DEFINE_COLUMN(c_articulos,2, v_colchar2, 15);
    EXEC_SQL.DEFINE_COLUMN(c_articulos,3, v_colchar3, 30);
    v_exec := EXEC_SQL.EXECUTE(c_cursor);
    WHILE EXEC_SQL.FETCH_ROWS(c_cursor) > 0 LOOP
    EXEC_SQL.COLUMN_VALUE(c_cursor,1,v_colchar1);
    EXEC_SQL.COLUMN_VALUE(c_c_cursor,2,v_colchar2);
    EXEC_SQL.COLUMN_VALUE(c_c_cursor,3,v_colchar3);
    assign_values_to_block;
    END LOOP;
    EXEC_SQL.CLOSE_CURSOR(c_cursor);
    end;
    and WORKS IN FORMS 6

Maybe you are looking for