Reg: Sender File Adapter - Picking the files serially

Hi Folks
I have a requirement where I require help from you with you valuable suggestions/solutions. Requirement is :
1.  Two different folders(folder1 & Folder2) at sender system, PI has to pick the files from Folder 1 and needs to process to target.
2. Exactly after 30min duration PI has to pick the files from the second folder i.e., from Folder 2.
Conditions are :
i)  Only after processing the files from Folder 1 PI should process the files from Folder2(after 30min).
ii) We might have many files(approx 10 - 15files) in each folder, PI must poll all the file in the folder in a single poll(i.e., without any delay).
Please suggest me what could be the best solution for this, either to create two communication channels or can we handle it using a single communication channel.
Kindly suggest.

Hi Suman,
The easieiet way is to use single communication channel to pick up all the files from the first folder.  Then run a unix script in after processing column where it will check for any files to be picked by xi in folder1 and then proceed with transferring files from folder2 to target.
By this, you are making the scenario simple and realistic.
There are other alternatives like using two communication channels and the only hurdle will be the timing to check whether the folder1 files have been completely picked up or not.
Regards
Krish.

Similar Messages

  • Sender File Adapter picking the same file twice

    We are facing a weird issue with File Sender Adapter
    We are using PI File Adapter ( NFS ) to read files for a NFS folder and
    processing those in PI.Normally it works fine. But for a scenario we
    are noticing it sometimes process the same file twice before archiving,
    thus duplicating the financial postings.
    What we have is :
    File Sender Adapter - NFS, Polling interval 60 secs, and Processign
    mdoe Archive. File name includes Wildcards - JE_Upload*.txt
    what we are noticing is that :
    when it picks up a file, it immediately polls again to check for
    another file, and sometimes the file is not yet archived so it picks up
    and reprocess the same file.
    If you see the message below, both belong to the same file, and it
    picked up the same file again in 12 secs after processing it the first
    time
       Successful 02.11.2009 15:01:00 02.11.2009 15:01:01   APMANUAL     urn:bl:i2g:003:100
    SI_SKF_FIDOC_OB XI Message
       Successful 02.11.2009 15:00:49 02.11.2009 15:00:50   APMANUAL     urn:bl:i2g:003:100
    SI_SKF_FIDOC_OB XI Message
    Anyone seen this behavior before?

    Hi,
    Please check the script which creates file in source NFS Folders. There is possibility that script is making change in file when PI is picking up the file.
    When PI picks the file first time it creates one message ID in system. After that if script is making any change in file without file name change (This need not necessary data change), for PI it becomes new file and new message gets generated in PI for same file.
    This error normally comes when File adapter is not able to archive file succesfully. For eg. file with same name alredy exists in Archive folder.
    File adapter generates the new message id whenfile get modified(eg.change in its length or data change) even though
    the file name is same and when file get change ,XI file adapter thinks that its new file and hence generate the new message id for same file.
    If file has same name and notmodified then XI adapter will not generate new message id and will keep on throw the error till you remove that file with same name from the
    archieve directory.
    -Warm Regards,
    Gouri

  • Email attachment name in sender mail adapter to the receiver file adapter

    HI ,
    Ths is regarding email to file scenario. I am trying to create file (in rceiver file adapter) with the same name as the email attachment that i read from mail sender adapter. I want ro use adapter module for this. I could find from blogs that there is module - GetAttachmentName - available that i can use for this in sender mail adapter.
    Can you please let me know what whetehr i neeed to mention any module key and parameters for this.
    I assume , i need to do following steps :Please confirm.
    1. i can use this module - after payload swap module and before standard mail adapter module in sender mail adapter
    2. select ASMA option in advanced tab in sender mail adapter
    3. In receiver file adapter select ASMA option in advanced tab in sender mail adapter
    4. Also select file name option in ASMA in sender mail adapter
    Thanks,
    Vamsi

    Hi Vamsi,
    your scenario is also described here: Re: sender mail adapter - attachment name
    If you use the Module getAttachmentName, which is described here,
    http://wiki.sdn.sap.com/wiki/display/XI/AdapterModulePI7.0GetAttachmentName
    your scenario should work as you described it.
    You just need to make sure that the Attachment Name that you read in the first place, is mapped to the Filename Attribute of the
    Fileadapter (http://sap.com/xi/XI/System/File/FileName).
    regards,
    Daniel

  • Need help reg sender JDBC adapter

    Hi,
    I am having a requirement like, i need to fetch the data from two data base tables. and after fetching the data, i need to update those two tables.
    For selecting the data from two tables, two select statements i need to write, how i can give two select statements in sender JDBC comm channel.
    In sender JDBC channel, only one update query we can give...how i can update two tables?
    Regards,
    Venkata Ramana.

    Hello Venkat,
    For your requirement, go for stored procedure and find the below thread.
    Fetching data from JDBC without using JDBC sender adapter
    Re: Executing an Oracle Stored Procedure from Sender JDBC adapter
    Re: Sender JDBC adapter not picking up data
    Re: Retrive data from two diffirent tables
    hope this will help you
    Thanks,
    Venky

  • Sender JMS Adapter error: The JMS provider gave the error message as Not permitted, and the error code is null

    I am trying to connect tibcoems with PI using a Sender jms adapter.After successfully installing the drivers , the sender adapter goes into error.
    "The JMS Provider gave the error message as Not permitted, and the error code is null"
    The Transport protocol is 'Access JMS Provider with JNDI' and i have been given the required parameters from the tibco guys.
    Your input are highly appreciated.
    Shyam

    Hi AQmit,
    Thanks for the reply.
    Please find the screenshots of what i am trying to do.
    Also, Can u direct me how to check the right logs?

  • Sender File adapter - DataTime stamp at the end of aarchived file name

    Hello,
    I am archiving the file once PI file sender adapter picks the file from source directory.
    The file is archived in the archive directory as <Date-Time-SSS_>FileName.
    I need to append the value <Date-Time-SSS_> after the file name.
    So archived file looks like FileName_<Date-Time-SSS>
    How can I achieve this? Appreciate your help for valuable suggestions.
    Thanks,
    Namadev

    Hi Namdev,
    Generally when we archive file then in sender CC we just put the processing mode as Archive and specify the Archived directory name in Archive Directory section. in that case when the Communication channel pick the source file then after picking it it remove it from source directory and put it into Archived directory without making any change in the file name.
    so if the file name is A.txt then in Archived directory also its name will be A.txt . However if you want to make any change in the name of the source file in the archived directory then you have two write Unix or DOC scrpt( depending upon your soure server )
    if your source server is Unix then write shell script otherwise dos scriprt
    .after wrtting the shell script just place in the archived directory or your source directory and call it in by mentioning it in Coomand Line section of your sender CC. You can easily search and get the required  shell script .
    Regards,
    Saurabh

  • Picking file in sequence/Queuing   in  sender SFTP adapter.

    Hi Experts,
    I am using SFTP adapter in sender side, it has no option of quality of service ( EOIO)  and queue name as we have in  FTP adapter configuration .Is there any  predefined  module provided by Sap which i use in the modules Tab in communication channel configuration to get the functionality of queuing ? just like we use  strictXMlto plain bean etc.
    I have 3 files which needs to  proccess in a sequence one after another in order.I CANT USE BPM or Even FTP because of Security reasons.
    please share you ideas.
    Regards,
    Anika

    Hi all,
    I have tried using AF_Modules/DynamicConfigurationBean in module tab present is the sender SFTP adapter with the attribute qualityOfService.
      parameter name                  Parameter value
         key.0                         insert http://sap.com/xi/XI/System/Messaging  qualityOfService
        value.0                        ExactlyOnceInOrder
    But in Moni i dont see the 3 messages didnt go in the same queue.But when i double click and open the dynamic configuration present in the soap header section i can see the values which i given in the module parameter.
    Is there any way i can change the quality of service to EOIO at runtime ? how to change the default EO to EOIO.
    Regards,
    Anika

  • Sender File Adapter - Dynamic Filename?

    Dear All,
    I have a simple requirement to retrieve a file named "XXX_ddmmyy" from an FTP site. The FTP site administrator will place a new file everyday. The date is part of the filename.
    I can find a lot of information on how to set the Filename for a "Receiver File Adapter", but none about dynamically setting of the filename for a "Sender File Adapter".
    Can you help please?
    Kind Regards
    Farshad

    Hi,
    You have mentioned over here that the requirement is to get the file "XXX_ddmmyy" from an FTP site.
    Is that site strictly for keeping files related to your requirement only or lot of other files are also being placed???
    If its strictly related to your requirement then you can use the filename "*.extension" and set the processing mode as "delete" so that once the File Adapter picks the file it will be automatically deleted.
    But here disadvantage is that the file wont be no longer present in FTP site once it is picked by File adapter.
    Thanks,
    Lekshmi.

  • Sender File adapter problem

    Hi,
    I have File to JDBC sceanrio,  File is on FTP server and data is added in file in every 15 mint.  while adding data to file its takes some time.
    My problem : when data is being  added to file, sender adapter picks the file when addition of data is not completed. so it picks incomplete file and send to target.
    What  can be the possible solution to be used for this problem or what configurtaion can be done in CC required.
    Thanks
    Laxmi Bhushan

    Hi Laxmi,
    is PI picking file in NFS mode or FTP mode?
    With NFS mode, you can use setting wait for file modification check. Same setting is available for FTP but it doesnt not work for FTP.
    Another option could be ask Source system to generate file with a temporary name & rename once file is writen completely.
    Regards
    Sushil

  • Sender File adapter with nested structure

    friends,
    Source structure is looks like below
    <mt_details>
    <header>
       <key> </key>
       <id > </id>
       <name> </name>
       <contact>    
          <key> </key>
          <pno> </pno>
       </contact>
    </header>
    </mt_details>
    If both the nodes i.e <header>&<contact> are at same level then the sender adapter picking the file as requried.But in this case the <contact> node is subnode of <header> Please help how in configuring the sender file adpter(Fixed file).
    Sample file :
    HDRE100testname
    PHO999999999
    Ravi Pal

    Hi Ravi,
    I dont think this is possible, Just read the following link,
    http://help.sap.com/saphelp_nw04/helpdata/en/2c/181077dd7d6b4ea6a8029b20bf7e55/content.htm
    and the content under FILE STRUCUTRE says,
    <i>The structure of these substructures must be fixed and corresponds to the description of the row structure logic in the table below.</i>
    The strcuture that you want is not supported.
    Regards,
    Bhavesh

  • FCC Send File Adapter - missingLastFields not working

    Hi
    I have a flat file to capture using the sender File adapter
    Parameter as follows:
    Header_fieldNames : Key,Name,StaffID,Telephone
    Header_fieldFixedLengths :  2,12,10,8
    Header_endSeparator : 'nl'
    Line_fieldNames : Key,Address,Company,LineText
    Line_fieldFixedLengths :  2,20,20,40
    However there are times where last field come in missing.
    Hence I use the Header_missingLastFields : error
                              Line_missingLastFields : error
    However it does not seem to be working as the adapter fails to pick the file from the FTP folder
    but if I  replace error with ignore, the sender adapter picked the files and process and send to the receiver adapter.
    I need to flagged error in sxmb_moni if last field or last few fields are missing....any advise how could this be achieve ?
    Regards
    Fred

    Hi Freddy,
    I think you might like to specify missingLastFields = add. then it will add the missing fields as empty. you can further check if these are empty in mapping and then fail the message or create an alert.
    If you specify "ignore" then you will not get those fields in your structure and if you specify "error" then the file will not be picked up.
    have a look here
    http://help.sap.com/saphelp_nw04/helpdata/en/2c/181077dd7d6b4ea6a8029b20bf7e55/content.htm
    missingLastfields
    If the inbound structure has less fields than specified in the configuration then the XML outbound structure is created as follows:
    ○       ignore
    Outbound structure only contains the fields in the inbound structure
    ○       add
    Outbound structure contains all fields from the configuration; the fields missing in the inbound structure are empty.
    ○       error
    Conversion is terminated due to the incomplete inbound structure. An error message is displayed
    regards,
    francis

  • Sender RFC Adapter , Sender File Adapter  - Payload Compression

    Sender RFC Adapter or the Sender File Adapter compress the payload of any spaces in between the tags or remove any spaces at the start and end of the payload.
    We need to pass the spaces as is in the message payload to the receiving system?
    Is there a way to do it in PI 7.1.

    Hi Vikrant,
    Preserving white spaces while reading a file from FTP
    NameA.fieldContentFormatting
    - Enter trim to remove all the leading and subsequent blanks for a value found. This is the default.
    - Specify nothing to ensure that the value remains unaltered.
    For RFC you need to check your payload to see whether spaces are coming from R/3 itself or not.
    Regards
    joel

  • TWO SENDER FILE CHANNELS POLLING SAME DIRECTORY

    I have a requirement to send a single file from a single FTP location to two different Target FTP locations as a passthrough interfaces. PI version 7.31
    I thought of doing it through two different interfaces, both FTP to FTP keeping source same and destination differently
    For First target (T1)Created dummy interfaces(Out/inbound) in ESR, created a configuration scenarion ,Sender and reciver FILE channels in ID, created an ICO.
    For the second Target(T2) : can i use the same dummy interfaces as used in first while creating Sender channel?
    can i use the same Sender channel as in first scenario to the ICO of  Interface for second Target(T2)--> it gave error, same sender channel(IF FILE) channel can't be used to different Sender Agreements/Integrated Configuration Objects. So i copied the sender channel with a different name and used it in second Interface.
    Reciever File channel obviously different for both cases with different server details and direcories.
    My fear is, if i can go with this set up as we have two sender FTP channels polling on the same FTP directory, so possibility of lock issue and channel are operational on a mapping of one hour(first one 8to10 and second one 9to12, so 9 to 10 both channles poll simultaneously).
    Please suggest any better way of handling this, or to resolve the lock issue ?could clusterSyncMode=lock help here?

    Hello,
    I think u are getting confused.
    >>My query was, if we could use two recievers(service) inside a single ICO, without giving any condition. Answer it please in YES or NO?
    Yes, indeed u can do it.
    IF YES, then how would  the message dynamically determine the correct/specific reciever out of the two recievers configured in ICO?
    >>Since u want to send same message to two different FTP servers so u don't have to worry about dynamically determining receivers. As soon as file sender adapter picks the file it will route the message to both the receivers and eventually send the same request message to two different FTP servers.
    Hence i assume, for every file kept on source direcory, there would be two messages( 2 files) going to be created on two different targets? YES or NO?
    >>YES
    Thanks
    Amit Srivastava

  • Sender FTP Adapter not working with certain name

    Hello,
    We're facing the next problem within XI.
    We configured a sender FTP adapter within the central adapter engine. This adapter is configured correctly however for some reason it is not picking up any file from the FTP server.
    Changing status to inactive-> active again all kinds of modes and configs we tested.
    However when copying this non-working adapter to a new one with a different name (Configuration is exactly the same!!!!!) and use this one in the sender agreement it worked immediately.
    Somebody else faced similar problems and managed to solve it because for this error we don't want to adjust our naming conventions....
    Thanks,
    Emile

    Hi Emile,
    This could happen when AE cache is not getting updated.
    Goto SXI_CACHE.
    Click "Goto" -> AE Cache and check if you get a green symbol with a message saying " Cache contents are up-to-date".
    Regards,
    Anish

  • Sender Mail Adapter Configuration - Process Multiple Attachments

    Dear sirs,
    I need to process several attachments at the same mail message as individual payloads.
    In default configuration of sender mail adapter only the body of message is used as payload.
    So I added PayloadSwapBean Module at Processing Sequence and it processed the attachment I set in Module Configuration.  I'm not able to process all attachments available, just one attachment is sent to PI pipeline.
    How can I process all attachments of a single mail message?
    Thank you in advance.
    Fabio Purcino

    Hi Jose,
    We are trying to implement reading multiple attachment in sender mail adapter. 
    Our Requirement is : Reading a mail having multiple .xls files. This should be read and converted to payload .
    package multiswap;
    //import com.sap.aii.adapter.xi.ms.XIMessage;
    import com.sap.aii.af.lib.mp.module.*;
    import com.sap.aii.af.lib.trace.Trace;
    import com.sap.aii.af.sdk.xi.mo.Message;
    import com.sap.aii.af.sdk.xi.mo.MessageContext;
    import com.sap.aii.af.sdk.xi.mo.xmb.XMBMessageOperator;
    import com.sap.aii.af.sdk.xi.mo.xmb.XMBPayload;
    import com.sap.aii.af.sdk.xi.util.PayloadType;
    import com.sap.aii.af.service.auditlog.Audit;
    import com.sap.aii.af.service.cpa.*;
    import com.sap.engine.interfaces.messaging.api.MessageDirection;
    import com.sap.engine.interfaces.messaging.api.MessageKey;
    import com.sap.engine.interfaces.messaging.api.Payload;
    import com.sap.engine.interfaces.messaging.api.auditlog.AuditLogStatus;
    import java.util.Hashtable;
    import java.util.Iterator;
    import java.util.Locale;
    import javax.ejb.*;
    public class MultiSwapRead
        implements SessionBean, Module
        private static final String VERSION_ID = "$Id: //tc/xpi.af/NW731EXT_07_REL/src/_af_application_ejb_module/ejbm/api/com/sap" +
    "/aii/af/app/modules/PayloadSwapBean.java#1 $"
        private static final Trace TRACE = new Trace("$Id: //tc/xpi.af/NW731EXT_07_REL/src/_af_application_ejb_module/ejbm/api/com/sap" +
    "/aii/af/app/modules/PayloadSwapBean.java#1 $"
        private static final String SIGNATURE_PROCESS = "process(ModuleContext , ModuleData)";
        protected Hashtable cachedChannels;
        protected SessionContext myContext;
        public MultiSwapRead()
            cachedChannels = new Hashtable();
        public void ejbRemove()
        public void ejbActivate()
        public void ejbPassivate()
        public void setSessionContext(SessionContext context)
            myContext = context;
        public void ejbCreate()
            throws CreateException
        public ModuleData process(ModuleContext moduleContext, ModuleData inputModuleData)
            throws ModuleException
            if(TRACE.beLogged(200))
                TRACE.entering("process(ModuleContext , ModuleData)", new Object[] {
                    moduleContext, inputModuleData
            ModuleData outputModuleData;
            Iterator itr;
            outputModuleData = inputModuleData;
            String chid = moduleContext.getChannelID();
            TRACE.infoT("process(ModuleContext , ModuleData)", ModuleCategories.SAP_MODULE_ROOT, (new StringBuilder()).append("performing payload swap for channel ").append(chid).toString());
            LookupManager lman = LookupManager.getInstance();
            Channel chan = null;
      try {
      chan = (Channel)LookupManager.getInstance().getCPAObject(CPAObjectType.CHANNEL, chid);
      } catch (CPAObjectNotFoundException e1) {
      // TODO Auto-generated catch block
      e1.printStackTrace();
      } catch (CPAException e1) {
      // TODO Auto-generated catch block
      e1.printStackTrace();
            Direction direction = chan.getDirection();
            String swapkey = moduleContext.getContextData("swap.keyName");
            String keyvalue = moduleContext.getContextData("swap.keyValue");
            Object obj = inputModuleData.getPrincipalData();
            Object pivotedObj = inputModuleData.getSupplementalData("mp.pivoted");
            boolean pivoted = pivotedObj == null || !(pivotedObj instanceof Boolean) ? false : ((Boolean)pivotedObj).booleanValue();
            Message mo = null;
            if(obj instanceof com.sap.engine.interfaces.messaging.api.Message)
                mo = (Message)((com.sap.engine.interfaces.messaging.api.Message)obj);
            } else
            if(obj instanceof MessageContext)
                mo = ((MessageContext)obj).getMessage();
            } else
                TRACE.warningT("process(ModuleContext , ModuleData)", ModuleCategories.SAP_MODULE_ROOT, "no message found");
            if(mo != null && XMBMessageOperator.numberOfPayloads(mo) > 0)
               // String midstr = XMBMessageOperator.getMessageId(mo).toString();
                MessageKey auditkey = new MessageKey(((com.sap.engine.interfaces.messaging.api.Message) mo).getMessageId(), com.sap.engine.interfaces.messaging.api.MessageDirection.INBOUND);
                itr = (Iterator) mo.getAttachments();
                if(swapkey != null && keyvalue != null)
                    StringBuffer textSwappingbyBuf = new StringBuffer();
                    textSwappingbyBuf.append("Swap: swapping by '").append(swapkey).append("' ? '").append(keyvalue).append("'");
                    String textSwappingby = textSwappingbyBuf.toString();
                    TRACE.infoT("process(ModuleContext , ModuleData)", ModuleCategories.SAP_MODULE_ROOT, textSwappingby);
                    Audit.addAuditLogEntry(auditkey, AuditLogStatus.SUCCESS, textSwappingby);
                   while (itr.hasNext()){
                    boolean swappedp = swapPayloads(mo, swapkey, keyvalue);
                    String swappedStatus = swappedp ? "Swap: successfully swapped" : "Swap: no matching payload found";
                    Audit.addAuditLogEntry(auditkey, AuditLogStatus.SUCCESS, swappedStatus);
                } else
                    StringBuffer textInvalidBuf = new StringBuffer();
                    textInvalidBuf.append("Swap: parameter missing ");
                    if(swapkey == null)
                        textInvalidBuf.append("swap.keyName");
                    if(swapkey == null && keyvalue == null)
                        textInvalidBuf.append(" and ");
                    if(keyvalue == null)
                        textInvalidBuf.append("swap.keyValue");
                    String textInvalid = textInvalidBuf.toString();
                    TRACE.warningT("process(ModuleContext , ModuleData)", ModuleCategories.SAP_MODULE_ROOT, textInvalid);
                    Audit.addAuditLogEntry(auditkey, AuditLogStatus.WARNING, textInvalid);
            } else
                String messageEmpty = "Swap: message is empty or has no payload";
                TRACE.infoT("process(ModuleContext , ModuleData)", ModuleCategories.SAP_MODULE_ROOT, messageEmpty);
            return outputModuleData;
        private static boolean swapPayloads(Message mo, String swapkey, String keyvalue)
            swapkey = swapkey.toUpperCase(Locale.ENGLISH);
            keyvalue = keyvalue.toUpperCase(Locale.ENGLISH);
            int ifound = -1;
            for(int i = 0; i < XMBMessageOperator.numberOfPayloads(mo); i++)
                XMBPayload pldi = XMBMessageOperator.getPayload(mo, i);
                String pldivalue = null;
                if(swapkey.equals("PAYLOAD-DESCRIPTION"))
                    pldivalue = pldi.getPayloadDescription();
                } else
                if(swapkey.equals("PAYLOAD-NAME"))
                    pldivalue = pldi.getPayloadName();
                } else
                    pldivalue = pldi.getContentAttribute(swapkey);
                if(pldivalue == null)
                    continue;
                pldivalue = pldivalue.toUpperCase(Locale.ENGLISH);
                if(pldivalue.indexOf(keyvalue) < 0)
                    continue;
                ifound = i;
                break;
            if(ifound >= 0)
                XMBPayload pldfound = XMBMessageOperator.getPayload(mo, ifound);
                if(pldfound.getPayloadType() != PayloadType.APPLICATION)
                    XMBPayload pldapp = XMBMessageOperator.getApplicationPayload(mo);
                    if(pldapp == null)
                        pldfound.setPayloadType(PayloadType.APPLICATION);
                    } else
                        pldapp.setPayloadType(PayloadType.APPLICATION_ATTACHMENT);
                        pldfound.setPayloadType(PayloadType.APPLICATION);
                    TRACE.infoT("process(ModuleContext , ModuleData)", ModuleCategories.SAP_MODULE_ROOT, "successfully swapped");
                return true;
            } else
                TRACE.warningT("process(ModuleContext , ModuleData)", ModuleCategories.SAP_MODULE_ROOT, "no matching found");
                return false;
    We couldn't go further. Please have a look in highlighted code.
    Regards,
    Kesava.

Maybe you are looking for

  • How to improve the performance of socket ?

    how to improve the performance of socket ? . allocation and deallocation of buffer ?

  • How to get California ees and their supervisors in a report?

    HEllo, I am using IT 0208 to identify California ees but among those ees how do I identify who are the supervisors. I was thinking something like this -           get CA ees using 0208, run a report using SE16 u2013 HRP1001 and use relationship A 002

  • HT5438 Stuck on setting date and time

    Apple TV stuck on setting date and time

  • Strange outputs while parsing String to Double

    Hi All, I am writing a simple MIDlet on MIDP 2.0 and CLDC 1.1, where I need to convert two strings into Double calculate their difference and then display the result back on the screen. The code I am using is:     double difference = Double.parseDoub

  • Minor annoyan

    st of all... why doesn't my Zen support video with no audio? Surely that's expected?! Secondly, when playing an AVI (DIVX encoded) it always stops playing 5 seconds before it should with every file i have... My model is the creative Zen 4GB with late