SFTP in PI 7.3

Hi,
Does PI 7.3 support SFTP,PGP?  If so does it come with the box or do we need to apply for separate license.
Also if decided to use PI 7.1, what are the other options to use SFTP and PGP.
Regards
Krish

Hi,
PI supports PGP encryption
http://www.sdn.sap.com/irj/scn/go/portal/prtroot/docs/library/uuid/307deff5-a5ed-2e10-e3b2-96770ee3ad17?QuickLink=index&overridelayout=true
For PI 7.3
http://www.aedaptive.com/index.php/solutions/pgp-for-sap-netweaver
For PI 7.0/7.1
https://www.advantco.com/product/solution/pgp
By default we don't have SFTP adapter in PI, so we have to go to 3rd party adapters like Seeburger SFTP or Advantco SFTP.
Regards,
Venkata Ramesh

Similar Messages

  • Using secure FTP (SFTP) with XI 3.0.

    Hi,
    I must bring a document with SFTP protocol.
    Is it possible use SFTP with XI 3.0. What must I do use SFTP with XI. Is it necessary to install some component to XI or it needs some 3hrd party components?
    Thanks

    Hi Cemil,
    Right now, XI does not have the feature of communicating with SFTP. You can extend the functionality of the File Adapter by writing some adapter modules to enable it to communicate with SFTP.
    Regards,
    Hari.

  • Java SFTP API/Sample application

    I'm looking for either sample java code of how to send files via sftp or a java api to do this. Jscape looks to be the standard for doing this although it costs quite a bit, wondering if there is free code out there?
    Thanks for any help in advance!!!

    Check out JCraft's Java Secure Channel (JSch) project -- it's an implementation of SSH (with scp, sftp, etc.) in Java -- with some examples that might get you started: http://www.jcraft.com/jsch/
    The code is distributed free under a BSD-style license which is described on the site.
    Greg

  • Cannot login via ssh/sftp from certain clients

    Hi Guys,
    Strange issue here. I have a machine running 10.7.4 that I want to be able to access via sftp/ssh.
    I can login into the machine in terminal using either ssh or sftp.
    I cannot however login to the machine from finder via sftp. I am just told the username/password is wrong.
    Equally I cannot login to the machine from certain clients on my android phone (the main reason I need sftp)
    I can however login from cyberduck on the other machines I have, and from some clients on my android phone.
    When a mac is denied access it gives authentication failed as the reason, when a android client is denied access it gives network communtaction issues as its reason for failing, not authentication.
    From memory these issues started when smb broke for me in 10.7.3.
    Can any one shed any light on this?
    Cheers

    bump

  • Trigger File Option in SFTP Advantco Sender Adapter

    Hi ,
    What is the purpose of Trigger file option in sender SFTP adapter?When i enabled Advance selection for source file we have this functionality.Can i use this option to delete the multiple files in the same directory instead of using File Name Mask.
    We have scenario to delete 4 files from application server in that only one file should be sent to partner and the rest should be delete from application server.
    Actual solution is to use to use script to delete the rest of the files do we have any other alternative.
    Thanks

    Hi,
    Another alternativet is to write your own customer adapter module and using java programming you can delete remaining 3 files. This is bit complex comapre to script writing but one advantage is with adapter module is that, you can provide the deteted file names with time stamp in the audit log of XI message, which will help in troublshooting if some issue happens.
    Regards,
    RK

  • Sftp batch job with password?

    Hi folks.
    We're trying to develop scripts to automate the transfer of files from various Windows machines to a Linux server.  Because the job involves moving multiple files to multiple directories, I wanted to use sftp's -B batchfile option to transfer the files instead of having to reauthenticate every time we transfer files to a different location.  However, the man page says:
    Batch mode. Reads commands from a file instead of standard input. Since this mode is intended for scripts, SFTP2 will not try to interact with the user, which means that only passwordless authentication methods will work.
    I would love to use keys to get this done but unfortunately, the type of authentication on the server is out of our control and not likely to change (it's straight password).  So, is there any way I can do this in batch mode with password authentication?  I thought about using scp but, as far as I can tell, it doesn't have great support for delivering multiple local files (in different locations) to multiple remote locations.  One would have to re-authenticate for every scp command, right?
    Any help would be appreciated.  Thanks.

    Thanks for the recommendation, Endperform, but after reading up on expect and autoexpect, I realized I'd rather not have usernames and passwords hard coded into the script.
    After much research, I think I've found a solution.  It's a little odd but the Maverick Ant library does exactly what I need it to do.  It can actually read an ssh profile, perform multiple transfers without having to re-authenticate and execute multiple remote commands without having to reauthenticate.  The native Ant libraries can't do this.  There is no sftp Ant task and the scp and sshexec tasks are lacking to say the least.
    If anyone else runs into a similar situation, I highly recommend the Maverick tool.

  • How to open a non-default port for sftp?

    My MacMini at work used to listen on port 12345 for sFTP for close to 9 months but then something (probably a power cut...) messed all things Remote up with the office setup. So I tried to reset things. It didn't work. What do you think I'm doing wrong? The MacMini is running Tiger (10.4.10). Here's what I've done so far:
    1. Drilled a hole for port 12345 on my Thomson (Alcatel SpeedTouch 780) modem/router, and disabled its Firewall and Parental Controls;
    2. In System Prefs>Sharing>Firewall I have enabled the Firewall after making sure I've added a service for port 12345;
    3. Also in System Prefs I've enabled Remote Login, to make sure the sftp daemon is running;
    4. Back on the Thomson modem/router, I've set up a service to forward port 12345 of the router to port 12345 of my MacMini (I selected it by clicking on its MAC address in the appropriate drop down menu in the modem/router config page).
    STILL: when I try to sftp to my MacMini from outside the office, I get a timeout error. Back at the MacMini, I run Network Utility and ask it to check at IP (the MacMini IP) for ports 12345 to 12345, and it doesn't report it as 'open' (it does for port 22).
    I am bummed. What am I missing? I am also 100 miles away from the office on any given day, so it's not exactly easy to pop over and try various troubleshooting things. I have to kill this once and for all next I'm at the office, some time in the weekend!
    As always, thanks, people.
    < Edited by Host >

    It sounds to me like the port forwarding is setup, so that's not the issue.
    The issue is how to change sshd to listen on port 12345 rather than port 22. However, I'm not sure that you need to.
    If you're trying to hide your server from the public, why not just setup your port forwarding to forward publicIP:12345 to privateIP:22.
    That way you connect to port 12345 from your remote location, but don't have to change the server configuration at all.
    The only reason why this wouldn't work would be if your router doesn't support different internal and external ports (e.g. it always maps to the same internal port number).
    If that's the case then you need to change launchd to listen on port 12345. How you do that depends on whether you want to move the entire SSH service to port 12345, or whether you want SSH to support 22 and 12345 at the same time.
    If the former, just edit /System/Library/LaunchDaemons/ssh.plist and change the lines:
    <key>SockServiceName</key>
    <string>ssh</string>
    to:
    <key>SockServiceName</key>
    <string>italk</string>
    (italk is the registered service for port 12345).
    Then either reboot or unload/reload the ssh.plist to make the change active.
    If you want ssh to run on both port 22 and 12345 then you should copy /System/Library/LaunchDaemons/ssh.plist to /Library/LaunchDaemons/ssh-12345.plist then make three changes to the new .plist file:
    First, change the <Label> parameter to something unique (i.e. not 'com.openssh.sshd').
    Second, remove the <Bonjour> array
    Third, edit the SockServiceName as indicated above.
    Once you've done that, reboot and you should be set.

  • Sftp is taking much time to execute

    Hi,
    I am working on SFTP .
    SFTP is working but while executing, sftp is taking 8min to execute.
    Do i need to set properties regarding time ?
    Regards,
    Divya.

    Hi,
    Use smaller polling interval for high throughput scenarios where the message size is not very large
    Regards
    Abhi

  • File not found error in SFTP channel

    Hi All,
    We are getting a "file not found error " while using a SFTP sender channel .
    Our Scenario :
    We are using SFTP as the source adapter .Presently we are using  two nodes for load balancing for all the sender channels.
    One of the node's of the  SFTP channel is picking the file , while the other node at the same time is throwing a "File not found error".
    The file is being picked and is placed at the target, but the channels are in error state as one of the nodes is in error state.
    Please let me know, if we did any mistake while configuring the adapter.
    Thanks,
    Yamunan

    Hi,
    Could you please check if you have provided right path in your sender communication channel...to pick the file from...
    Regards,
    Naveen.

  • [Solved for me]Distinguishing SSH and SFTP (for QoS purposes)

    Hi there,
    I'm thinking about shutting down the FTP on my homeserver and use SFTP instead. There is only one thing I couldn't solve so far: In my router I have QoS-rules that make FTP low priority traffic so my normal activities don't get affected by the file transfers. I would like to have the same setup for the SFTP. Now the problem is this: SFTP and SSH are both coming from the same ssh server, listening on port 22. So there is no way of distinguishing them on a ip/port basis. Is there any way of distinguishing SFTP and SSH? Like using iptables to tag one of them and then doing QoS based on the tag or something along those lines? I don't want to slow down my ssh-connections together with the sftp. If anyone has an idea how to accomplish this I would be really glad to hear about it.
    Thanks in advance
    seiichiro0185
    Last edited by seiichiro0185 (2010-08-22 11:27:32)

    briest wrote:Well, a simple, though definitely not bulletproof solution: define multiple ports in sshd_config, then use one of them for sftp, and another for ssh?
    Thanks for this hint, I didn't know that ssh could listen on multiple ports. Its not totally bulletproof, but good enough for my case. The only people who will have access to the server are trustworthy and won't fiddle with the settings to circumvent my restrictions.
    Thanks to all of you for your suggestions.

  • How to delete zip file in sftp server

    Hi Gurus,
    I am having one .zip file with data files inside on the sftp server. Can you please how to delete the .zip files in the sftp server. I am able to delete normal files by using 'rm' on sftp.
    And one more request my sftp is prompting for the password everytime, then i need to enter the password manually. Can any one suggest how to write in shell script to accept that.
    Thanks in advance.
    Regards
    Nagendra

    You might want to look into user equivalence and configure a certificate for ssh so it does not prompt for a password.
    It will also allow you to use sftp without a prompt for a password.
    On the server side:
    Edit /etc/ssh/sshd_config and remove the # from the following:
    RSAAuthentication yes
    PubkeyAuthentication yes
    AuthorizedKeysFile .ssh/authorized_keys
    Then restart the ssh server:
    /etc/init.d/sshd restart
    Login as the user for whom this is for:
    su - <username>
    mkdir .ssh
    chmod 700 .ssh
    On the client side:
    Run the following command:
    ssh-keygen -t rsa (omit password)
    Then use the following to copy the public key from the client to the
    corresponding login .ssh directory on the server side;
    scp .ssh/id_rsa.pub username@remote_host:.ssh/authorized_keys

  • Can't establish a sftp connection with the finder

    Hi, I'm trying to establish a sftp connection with the finder (using the "Connect to server" feature) between my (recently purchased) Mac Mini (mid 2011: i5, 2.3 GHz, 2 GB, running 10.7.3) and a Debian Testing box and I can't, I get the following error:
    'There was a problem connecting to the server "ip.address"
    This file server will not allow any additional users to log on. Try to connect again later.'
    However if I try establishing a connection from the terminal (either ssh or sftp) it works flawlessly:
    SSH:
    victoria:~ RonIn$ ssh [email protected]
    [email protected]'s password:
    Linux clementine 3.0.0-1-486 #1 Sat Aug 27 15:56:48 UTC 2011 i686
    The programs included with the Debian GNU/Linux system are free software;
    the exact distribution terms for each program are described in the
    individual files in /usr/share/doc/*/copyright.
    Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
    permitted by applicable law.
    You have new mail.
    Last login: Sat Apr 28 21:52:18 2012 from ukamy.local
    ronin@clementine:~$
    SFTP:
    victoria:~ RonIn$ sftp [email protected]
    [email protected]'s password:
    Connected to ip.address.
    sftp>
    I've searched for a fix or alternative on the internet and I haven't found one that works; The one that keeps coming up is to try: "ftps" as the protocol instead of "sftp" with the remaining information the same (it doesn't work, it gets the same error message afterwards).
    The IP address and login information works (corroborated by the fact that I can log in from the terminal from the Mac Mini) so the only issue is with the finder capabilities for establishing the connection. I have looked for apple related documentation or How Tos but I haven't found anything useful.
    I don't want to use any third party app or tweak because of the sensitive information that is going to be transfered, I would like to be using strictly the tools from the OS.
    If you need any more information please let me know, any help is deeply appreciated.

    I have the same issue although i kind of fixed it. I have two admin accounts and one of the account's safari did the same thing as yours, except, it was the startpage and everypage i tried to visit. I reseted safari, as in the erase all data safari in the toolbar, safari-Reset Safari... But safari still didn't work. I logged out and went to my other account and opened safari. Now it works fine on both accounts. This meant safari had to logout before actually working better. I have this a few times these days.

  • How can I set up SFTP into a Mac if I do not have access to its network's router?

    Title says it all. My Mac is at work. I cannot change the work's router settings. Is there a way to set up SFTP access to the Mac or am I out of luck?

    data.
    At least your query seems to get data where MODIFIED_BY IS NULL, doesn't it?
    So if the reccount is>0 there is a reason to inform your employees.
    Bye, Olaf.
    Olaf Doschke - TMN Systemberatung GmbH
    http://www.tmn-systemberatung.de

  • Error while putting file in sftp location.

    Hi All,
    One of my BPEL process is using flow activity which has 5 flow in parallel, each flow has sftp invoke and we are writing file (put) to SFTP server. sometime bpel process is failing with below error message.
    Is someone has any idea to remove this error?
    Thanks in Advance.
    </part><part name="summary"><summary>file:/gembin/oracle/product/10.1.3/SOA/bpel/domains/gemptm/tmp/.bpel_SyncPlanDataASCPReqABCS_1.0_5678626ccda718f92a73c5656.tmp/plPutBookOrderTransit.wsdl [ Put_ptt::Put(Root-Element) ] - WSIF JCA Execute of operation 'Put' failed due to: Error sending file to FTP Server.
    Unable to send file to server. [Caused by: Unexpected termination: Connection reset]
    ; nested exception is:
    ORABPEL-11429
    Error sending file to FTP Server.
    Unable to send file to server. [Caused by: Unexpected termination: Connection reset]
    Please ensure 1. Specified remote output Dir has write permission 2. Output filename has not exceeded the max chararters allowed by the OS and 3. Remote File System has enough space.

    Hi,
    I have got the same error, and late figured out why it is coming...actually i am appending the records to a file in remote server, the file was kept open by someone on their Desktop. Later after they closed the file, the error is not coming again.
    Hope this helps someone.
    Thanks,
    N

  • FTP to SFTP.

    Hi,
    My application is using ftp to connect to the server. but now it is going to change to sftp. For that I am not able to get what are the things in need to change in my ftp program to make it support for sftp. The following is the ftpbean class and the methods of the class are used by other classes. sftp is already installed and the environment is ready now. but I am not able to proceed where to modify the java..Please help.
    import java.beans.PropertyChangeListener;
    import java.beans.PropertyChangeSupport;
    import java.io.*;
    import java.net.Socket;
    import java.net.ServerSocket;
    import java.util.StringTokenizer;
    import java.util.Vector;
    public class FtpBean
    private String server = ""; // server name
    private String user = ""; // user name
    private String replyMessage = ""; // reply message from server
    private String reply = ""; // reply to the command
    private Socket socket; // Socket for FTP connection
    private BufferedReader in; // Input for FTP connection
    private PrintWriter out; // Output for FTP connection
    private int port = 21; // FTP port number, default 21
    private boolean passive = true; // Passive mode transfer, default true
    // Needed for thread safety
    private int[] lock = new int[0]; // For synchronized locking
    private boolean acquired = false; // Count the number of acquire
    private Vector threadSpool = new Vector(); // Spool for the waiting threads
    // Needed for some Visual tools
    private PropertyChangeSupport pcs; // PropertyChangeSupport for visual tools
    final private boolean DEBUG = false; // True to turn on debug mode
    * Constructor
    public FtpBean()
    pcs = new PropertyChangeSupport(this);
    * Add PropertyChangeListener
    public void addPropertyChangeListener(PropertyChangeListener listener)
    pcs.addPropertyChangeListener(listener);
    * removePropertyChangeListener
    public void removePropertyChangeListener(PropertyChangeListener listener)
    pcs.removePropertyChangeListener(listener);
    * Connect to FTP server and login.
    * @param server Name of server
    * @param user User name for login
    * @param password Password for login
    * @exception FtpException if a ftp error occur (eg. Login fail in this case).
    * @exception IOException if an I/O error occur
    public void ftpConnect(String server, String user, String password)
    throws IOException, FtpException
    if (DEBUG) // Debug message
    System.out.println("FtpBean: Connecting to server " + server);
    acquire(); // Acquire the object
    // Set server name & user name
    setServerName(server);
    setUserName(user);
    try {
    // Create socket, get input & output stream
    socket = new Socket(server, port);
    in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
    out = new PrintWriter(socket.getOutputStream(), true);
    // Read reply code when get connected
    getRespond();
    if (DEBUG) // Debug message
    System.out.println("FtpBean: Connected");
    // Login
    ftpLogin(user, password); // check if login success
    finally {
    release(); // Release the object
    * Close FTP connection.
    * @exception IOException if an I/O error occur
    * @exception FtpException if a ftp error occur
    public void close()
    throws IOException, FtpException
    if (out == null)
    return;
    acquire(); // Acquire the object
    try {
    ftpCommand("QUIT");
    if (!reply.startsWith("221"))
    throw new FtpException(reply);
    closeSocket();
    // Set server name & user name to ""
    setServerName("");
    setUserName("");
    finally {
    release(); // Release the object
    * Delete a file at the FTP server.
    * @param filename Name of the file to be deleted.
    * @exception FtpException if a ftp error occur. (eg. no such file in this case)
    * @exception IOException if an I/O error occur.
    public void fileDelete(String fileName)
    throws IOException, FtpException
    acquire(); // Acquire the object
    try {
    ftpCommand("DELE " + fileName);
    if (!reply.startsWith("250"))
    throw new FtpException(reply);
    finally {
    release(); // Release the object
    * Rename a file at the FTP server.
    * @param oldFileName The name of the file to be renamed
    * @param newFileName The new name of the file
    * @exception FtpException if a ftp error occur. (eg. A file named the new file name already in this case.)
    * @exception IOException if an I/O error occur.
    public void fileRename(String oldFileName, String newFileName)
    throws IOException, FtpException
    acquire(); // Acquire this object
    try {
    ftpCommand("RNFR " + oldFileName);
    if (!reply.startsWith("350"))
    throw new FtpException(reply);
    ftpCommand("RNTO " + newFileName);
    if (!reply.startsWith("250"))
    throw new FtpException(reply);
    finally {
    release(); // Release the object
    private boolean isSameSystem()
    throws IOException, FtpException
    String sysType = getSystemType();
    return (sysType.toUpperCase().indexOf("WINDOWS") < 0);
    * @param ftpFile Name of file to be get from the ftp server, can be in full path.
    * @param localFile File name of local file
    * @exception FtpException if a ftp error occur. (eg. No such file in this case)
    * @exception IOException if an I/O error occur.
    * @see FtpObserver
    public void getAsciiFile(String ftpFile, String localFile)
    throws IOException, FtpException
    getAsciiFile(ftpFile, localFile, null);
    * @param ftpFile Name of file to be get from the ftp server, can be in full path.
    * @param localFile File name of local file
    * @param observer The FtpObserver which monitor this downloading progress
    * @exception FtpException if a ftp error occur. (eg. No such file in this case)
    * @exception IOException if an I/O error occur.
    * @see FtpObserver
    public void getAsciiFile(String ftpFile, String localFile, FtpObserver observer)
    throws IOException, FtpException
    if (isSameSystem()) {
    getBinaryFile(ftpFile, localFile, observer);
    return;
    acquire(); // Acquire the object
    setTransferType(true); // Set transfer type to ascii
    Socket sock = null;
    try {
    sock = getDataSocket("RETR " + ftpFile, 0);
    // Read bytes from server and write to file.
    BufferedReader din = new BufferedReader(new InputStreamReader(sock.getInputStream()));
    PrintWriter dout = new PrintWriter(new BufferedWriter(new FileWriter(localFile)));
    char[] cbuf = new char[2048];
    int n;
    while ((n = din.read(cbuf, 0, cbuf.length)) != -1) {
    if (skipLineSepFilter())
    dout.write(cbuf, 0, n);
    else {
    // filter DOS line-sep to UNIX line-sep
    String data = filterLineSep(cbuf, n);
    dout.write(data, 0, data.length());
    if (observer != null)
    observer.byteRead(n);
    String data = null;
    while ((data = din.readLine()) != null) {
    dout.println(data);
    if (observer != null)
    observer.byteRead(data.length() + 1);
    din.close();
    dout.close();
    sock.close();
    getRespond();
    if (!reply.startsWith("226"))
    throw new FtpException(reply); // transfer incomplete
    finally {
    release(); // Release the object
    public void putAsciiFile(String localFile, String remoteFile, FtpObserver observer)
    throws IOException, FtpException
    acquire(); // Acquire the object
    setTransferType(true);
    // if file is to be transferred to MF, without slash, exec quote site cmd
    if (!remoteFile.startsWith("/"))
    setQuoteSite();
    Socket sock = null;
    try {
    // Read bytes from local file and write to a server.
    BufferedReader din = new BufferedReader(new FileReader(localFile));
    sock = getDataSocket("STOR " + remoteFile, 0);
    PrintWriter dout = new PrintWriter(new BufferedWriter(new OutputStreamWriter(sock.getOutputStream())));
    String data = null;
    while ((data = din.readLine()) != null) {
    //dout.println(data);
    dout.write(data);
    dout.write("\r\n");
    if (observer != null)
    observer.byteWrite(data.length() + 1);
    din.close();
    dout.close();
    sock.close();
    getRespond();
    if (DEBUG) // Debug message
    System.out.println("FtpBean: Reply is " + reply);
    putAsciiFile()
    Changed manner of checking if transfer is complete by checking the
    string Transfer Complete in the reply.
    For UNIX: Reply is 226 Transfer complete.
    For MF: Reply is 250 Transfer completed successfully.
    //if (!reply.startsWith("226"))
    int m = 0;
    if ((m = reply.indexOf("Transfer complete")) < 0)
    throw new FtpException(reply); // transfer incomplete
    finally {
    release(); // Release the object
    * Read file from ftp server and write to a file in local hard disk.
    * This method is much faster than those method which return a byte array<br>
    * if the network is fast enough.<br>
    * <br>Remark:<br>
    * Cannot be used in unsigned applet.
    * @param ftpFile Name of file to be get from the ftp server, can be in full path.
    * @param localFile Name of local file to be write, can be in full path.
    * @exception FtpException if a ftp error occur. (eg. No such file in this case)
    * @exception IOException if an I/O error occur.
    public void getBinaryFile(String ftpFile, String localFile)
    throws IOException, FtpException
    getBinaryFile(ftpFile, localFile, 0, null);
    * Read file from ftp server and write to a file in local hard disk.
    * This method is much faster than those method which return a byte array<br>
    * if the network is fast enough.<br>
    * <br>Remark:<br>
    * Cannot be used in unsigned applet.
    * @param ftpFile Name of file to be get from the ftp server, can be in full path.
    * @param localFile Name of local file to be write, can be in full path.
    * @param restart Restarting point
    * @exception FtpException if a ftp error occur. (eg. No such file in this case)
    * @exception IOException if an I/O error occur.
    public void getBinaryFile(String ftpFile, String localFile, long restart)
    throws IOException, FtpException
    getBinaryFile(ftpFile, localFile, restart, null);
    * Read file from ftp server and write to a file in local hard disk.
    * This method is much faster than those method which return a byte array<br>
    * if the network is fast enough.<br>
    * <br>Remark:<br>
    * Cannot be used in unsigned applet.
    * @param ftpFile Name of file to be get from the ftp server, can be in full path.
    * @param localFile Name of local file to be write, can be in full path.
    * @param observer The FtpObserver which monitor this downloading progress
    * @exception FtpException if a ftp error occur. (eg. No such file in this case)
    * @exception IOException if an I/O error occur.
    * @see FtpObserver
    public void getBinaryFile(String ftpFile, String localFile, FtpObserver observer)
    throws IOException, FtpException
    getBinaryFile(ftpFile, localFile, 0, observer);
    * Read from a ftp file and restart at a specific point.
    * This method is much faster than those method which return a byte array<br>
    * if the network is fast enough.<br>
    * Remark:<br>
    * Cannot be used in unsigned applet.
    * @param ftpFile Name of file to be get from the ftp server, can be in full path.
    * @param localFile File name of local file
    * @param restart Restarting point, ignored if equal or less than zero.
    * @param observer The FtpObserver which monitor this downloading progress
    * @exception FtpException if a ftp error occur. (eg. No such file in this case)
    * @exception IOException if an I/O error occur.
    * @see FtpObserver
    public void getBinaryFile(String ftpFile, String localFile, long restart, FtpObserver observer)
    throws IOException, FtpException
    acquire(); // Acquire the object
    setTransferType(false); // Set transfer type to binary
    Socket sock = null;
    try {
    sock = getDataSocket("RETR " + ftpFile, restart);
    // Read bytes from server and write to file.
    BufferedInputStream din = new BufferedInputStream(sock.getInputStream());
    RandomAccessFile dout = new RandomAccessFile(localFile, "rw");
    dout.seek(restart);
    byte[] data = new byte[1024];
    int n;
    while ((n = din.read(data)) != -1) {
    dout.write(data, 0, n);
    if (observer != null)
    observer.byteRead(n);
    din.close();
    dout.close();
    sock.close();
    getRespond();
    if (!reply.startsWith("226"))
    throw new FtpException(reply); // transfer incomplete
    finally {
    release(); // Release the object
    * Read a file from local hard disk and write to the server.
    * <br>Remark:<br>
    * <br>Cannot be used in unsigned applet.
    * @param local_file Name of local file, can be in full path.
    * @param remoteFile Name of file in the ftp server, can be in full path.
    * @exception FtpException if a ftp error occur. (eg. permission denied)
    * @exception IOException if an I/O error occur.
    public void putBinaryFile(String localFile, String remoteFile)
    throws IOException, FtpException
    putBinaryFile(localFile, remoteFile, 0, null);
    * Read a file from local hard disk and write to the server.
    * <br>Remark:<br>
    * <br>Cannot be used in unsigned applet.
    * @param localFile Name of local file, can be in full path.
    * @param remoteFile Name of file in the ftp server, can be in full path.
    * @param observer The FtpObserver which monitor this uploading progress.
    * @exception FtpException if a ftp error occur. (eg. permission denied)
    * @exception IOException if an I/O error occur.
    public void putBinaryFile(String localFile, String remoteFile, FtpObserver observer)
    throws IOException, FtpException
    putBinaryFile(localFile, remoteFile, 0, observer);
    * Read a file from local hard disk and write to the server with restarting point.
    * Remark:<br>
    * Cannot be used in unsigned applet.
    * @param localFile Name of local file, can be in full path.
    * @param remoteFile Name of file in the ftp server, can be in full path.
    * @param restart The restarting point, ignored if less than or greater than zero.
    * @exception FtpException if a ftp error occur. (eg. permission denied)
    * @exception IOException if an I/O error occur.
    public void putBinaryFile(String localFile, String remoteFile, long restart)
    throws IOException, FtpException
    putBinaryFile(localFile, remoteFile, restart, null);
    * Read a file from local hard disk and write to the server with restarting point.
    * Remark:<br>
    * Cannot be used in unsigned applet.
    * @param localFile Name of local file, can be in full path.
    * @param remoteFile Name of file in the ftp server, can be in full path.
    * @param observer The FtpObserver which monitor this uploading progress
    * @exception FtpException if a ftp error occur. (eg. permission denied)
    * @exception IOException if an I/O error occur.
    public void putBinaryFile(String localFile, String remoteFile, long restart, FtpObserver observer)
    throws IOException, FtpException
    acquire(); // Acquire the object
    setTransferType(false);
    Socket sock = null;
    try {
    RandomAccessFile din = new RandomAccessFile(localFile, "r");
    sock = getDataSocket("STOR " + remoteFile, restart);
    if (restart > 0)
    din.seek(restart);
    DataOutputStream dout = new DataOutputStream(sock.getOutputStream());
    byte[] data = new byte[1024];
    int n;
    while ((n = din.read(data)) != -1) {
    dout.write(data, 0, n);
    if (observer != null)
    observer.byteWrite(n);
    din.close();
    dout.close();
    sock.close();
    getRespond();
    putBinaryFile()
    Changed manner of checking if transfer is complete by checking the
    string Transfer Complete in the reply.
    For UNIX: Reply is 226 Transfer complete.
    For MF: Reply is 250 Transfer completed successfully.
    //if (!reply.startsWith("226"))
    int m = 0;
    if ((m = reply.indexOf("Transfer complete")) < 0)
    throw new FtpException(reply); // transfer incomplete
    finally {
    release(); // Release the object
    * Get current directory name.
    * @return The name of the current directory.
    * @exception FtpException if a ftp error occur.
    * @exception IOException if an I/O error occur.
    public String getDirectory()
    throws IOException, FtpException
    acquire(); // Acquire the object
    try {
    ftpCommand("PWD");
    if (!reply.startsWith("257"))
    throw new FtpException(reply);
    int first = reply.indexOf("\"");
    int last = reply.lastIndexOf("\"");
    return reply.substring(first + 1, last);
    finally {
    release(); // Release the object
    * Change directory.
    * @param directory Name of directory
    * @exception FtpException if a ftp error occur. (eg. permission denied in this case)
    * @exception IOException if an I/O error occur.
    public void setDirectory(String directory)
    throws IOException, FtpException
    acquire(); // Acquire the object
    try {
    ftpCommand("CWD " + directory);
    if (!reply.startsWith("250"))
    throw new FtpException(reply);
    finally {
    release(); // Release the object
    * Change to parent directory.
    * @exception FtpException if a ftp error occur. (eg. permission denied in this case)
    * @exception IOException if an I/O error occur.
    public void toParentDirectory()
    throws IOException, FtpException
    acquire(); // Acquire the object
    try {
    ftpCommand("CDUP");
    if (!reply.startsWith("250"))
    throw new FtpException(reply);
    finally {
    release(); // Release the object
    * Get the content of current directory
    * @return A FtpListResult object, return null if it is not connected.
    * @exception FtpException if a ftp error occur. (eg. permission denied in this case)
    * @exception IOException if an I/O error occur.
    * @see FtpListResult
    public FtpListResult getDirectoryContent()
    throws IOException, FtpException
    String strList = getDirectoryContentAsString();
    FtpListResult ftpList = new FtpListResult();
    ftpList.parseList(strList, getSystemType());
    return ftpList;
    * Get the content of current directory.
    * @return A list of directories, files and links in the current directory.
    * @exception FtpException if a ftp error occur. (eg. permission denied in this case)
    * @exception IOException if an I/O error occur.
    public String getDirectoryContentAsString()
    throws IOException, FtpException
    StringBuffer list = new StringBuffer(""); // Directory list
    Socket sock = null; // Socket to establish data connection
    acquire(); // Acquire the object
    try {
    // get DataSocket for the LIST command.
    // As no restarting point, send 0.
    sock = getDataSocket("LIST", 0);
    BufferedReader din = new BufferedReader(new InputStreamReader(sock.getInputStream()));
    // Read bytes from server.
    String line;
    while ((line = din.readLine()) != null)
    list.append(line).append("\n");
    din.close();
    sock.close();
    getRespond();
    if (!reply.startsWith("226"))
    throw new FtpException(reply);
    finally {
    release(); // Release the object
    return list.toString();
    * Make a directory in the server.
    * @param directory The name of directory to be made.
    * @exception FtpException if a ftp error occur. (eg. permission denied in this case)
    * @exception IOException if an I/O error occur.
    public void makeDirectory(String directory)
    throws IOException, FtpException
    acquire(); // Acquire the object
    try {
    ftpCommand("MKD " + directory);
    if (!reply.startsWith("257"))
    throw new FtpException(reply);
    finally {
    release(); // Release the object
    * Remove a directory in the server
    * @param directory The name of directory to be removed
    * @exception FtpException if a ftp error occur. (eg. permission denied in this case)
    * @exception IOException if an I/O error occur.
    public void removeDirectory(String directory)
    throws IOException, FtpException
    acquire(); // Acquire the object
    try {
    ftpCommand("RMD " + directory);
    if (!reply.startsWith("250"))
    throw new FtpException(reply);
    finally {
    release(); // Release the object
    * Execute a command using ftp.
    * e.g. chmod 700 file
    * @param exec The command to execute.
    * @exception FtpException if a ftp error occur. (eg. command not understood)
    * @exception IOException if an I/O error occur.
    public void execute(String exec)
    throws IOException, FtpException
    acquire(); // Acquire the object
    try {
    ftpCommand("SITE " + exec);
    if (!reply.startsWith("200"))
    throw new FtpException(reply);
    finally {
    release(); // Release the object
    private String _ftpSystemType = null;
    * Get the type of operating system of the server.
    * Return null if it is not currently connected to any ftp server.
    * @return Name of the operating system.
    public String getSystemType()
    throws IOException, FtpException
    if (_ftpSystemType != null)
    return _ftpSystemType;
    acquire(); // Acquire the object
    try {
    ftpCommand("SYST");
    if (!reply.startsWith("215"))
    throw new FtpException(reply);
    _ftpSystemType = reply.substring(4);
    return _ftpSystemType;
    finally {
    release(); // Release the object
    * Return the port number
    public int getPort()
    return port;
    * Set port number if the port number of ftp is not 21
    public void setPort(int port)
    acquire(); // Acquire the object
    pcs.firePropertyChange("port", new Integer(this.port), new Integer(port));
    this.port = port;
    release(); // Release the object
    * Return the server name. Return "" if it is not connected to any server.
    public String getServerName()
    return server;
    * Return the user name. Return "" if it is not connected to any server.
    public String getUserName()
    return user;
    * Get reply of the last command.
    * @return Reply of the last comomand<br>for example: 250 CWD command successful
    public String getReply()
    return reply;
    * Get reply message of the last command.
    * @return Reply message of the last command<br>for example:<br>
    * 250-Please read the file README<br>
    * 250-it was last modified on Wed Feb 10 21:51:00 1999 - 268 days ago
    public String getReplyMessage()
    return replyMessage;
    * Return true if it is using passive transfer mode.
    public boolean isPassiveModeTransfer()
    return passive;
    * Set passive transfer mode. Default is true.
    * @param passive Using passive transfer if true.
    public void setPassiveModeTransfer(boolean passive)
    acquire(); // Acquire the object
    pcs.firePropertyChange("passiveModeTransfer", new Boolean(this.passive), new Boolean(passive));
    this.passive = passive;
    if (DEBUG) // debug message
    System.out.println("FtpBean: Set passive transfer - " + passive);
    release(); // Release the object
    * Close the Socket, input and output stream
    private void closeSocket()
    throws IOException
    _ftpSystemType = null;
    in.close();
    out.close();
    socket.close();
    in = null;
    out = null;
    socket = null;
    * Read the respond message from the server's inputstream and assign to replyMessage
    private void getRespond()
    throws IOException
    String line = "";
    String replyMessage = "";
    while (true) {
    // Problem.....
    line = in.readLine();
    if (!checkReply(line))
    break;
    replyMessage = replyMessage.concat(line).concat("\n");
    setReplyMessage(replyMessage);
    setReply(line);
    * Login to server, using FTP commands "USER" and "PASS"
    * @param user FTP username
    * @param password FTP Password
    private void ftpLogin(String user, String password)
    throws IOException, FtpException
    ftpCommand("USER " + user); // send user name
    ftpCommand("PASS " + password); // send password
    if (!reply.startsWith("230")) {
    closeSocket();
    throw new FtpException(reply);
    * Send FTP command to the server.
    * @param command The command to be sent
    private void ftpCommand(String command)
    throws IOException
    if (DEBUG) {  // Debug message
    if (command.startsWith("PASS"))
    System.out.println("FtpBean: Send password");
    else
    System.out.println("FtpBean: Send command \"" + command + "\"");
    out.print(command + "\r\n"); // Send command
    out.flush();
    getRespond();
    * Establish data connection for transfer
    private Socket getDataSocket(String command, long restart)
    throws IOException, FtpException
    Socket sock = null;
    ServerSocket ssock = null;
    // Establish data conncetion using passive or active mode.
    if (passive)
    sock = getPassiveDataSocket();
    else
    ssock = getActiveDataSocket();
    // Send the restart command if it is greater than zero
    if (restart > 0) {
    ftpCommand("REST " + restart);
    if (!reply.startsWith("350"))
    throw new FtpException(reply);
    // Send commands like LIST, RETR and STOR
    // These commands will return 125 or 150 when success.
    ftpCommand(command);
    if (!(reply.startsWith("125") || reply.startsWith("150")))
    throw new FtpException(reply); // command file
    // Get Socket object for active mode.
    if (!passive)
    sock = ssock.accept();
    return sock;
    * Establish data connection in passive mode using "PASV" command
    * Change the server to passive mode.
    * by the command "PASV", it will return its address
    * and port number that it will listen to.
    * Create a Socket object to that address and port number.
    * Then return the Socket object.
    private Socket getPassiveDataSocket()
    throws IOException, FtpException
    ftpCommand("PASV");
    if (!reply.startsWith("227"))
    throw new FtpException(reply);
    // array that holds the outputed address and port number.
    String[] address = new String[6];
    // put the 'reply' to the array 'address'
    StringTokenizer t = new StringTokenizer(reply, ",");
    for (int i = 0; i < 6; i++)
    address[i] = t.nextToken();
    // Get port number.
    // Erase all other characters except the port number
    // which is at the beginning of the string
    String lastPort = "";
    int num = 3;
    if (address[5].length() < 3)
    num = address[5].length();
    for (int i = 0; i < num; i++) {
    if (Character.isDigit(address[5].charAt(i)))
    lastPort = lastPort + address[5].charAt(i);
    // assign last port number to address[5]
    address[5] = lastPort;
    // Get the port number
    // Left shift the first number by 8
    int newPort = (Integer.parseInt(address[4]) << 8) + Integer.parseInt(address[5]);
    // Create a new socket object
    Socket sock = new Socket(getServerName(), newPort);
    return sock;
    * Establish data connection in active mode using "PORT" command.
    * It create a ServerSocket object to listen for a port number in local machine.
    * Use port command to tell the server which port the local machine is listenning.
    * Return the ServerSocket object.
    private ServerSocket getActiveDataSocket()
    throws IOException, FtpException
    int[] portNumbers = new int[6]; // Array that contains
    // Get ip address of local machine. ip address and port numbers
    String localAddr = socket.getLocalAddress().getHostAddress();
    // Assign the ip address of local machine to the array.
    StringTokenizer st = new StringTokenizer(localAddr, ".");
    for (int i = 0; i < 4; i++)
    portNumbers[i] = Integer.parseInt(st.nextToken());
    ServerSocket ssocket = new ServerSocket(0); // ServerSocket to listen to a random free port number
    int localPort = ssocket.getLocalPort(); // The port number it is listenning to
    // Assign port numbers the array
    portNumbers[4] = ((localPort & 0xff00) >> 8);
    portNumbers[5] = (localPort & 0x00ff);
    // Send "PORT" command to s

    You would have to pick a library to do that. There are several commercial libraries. Out of the open source ones, the most mature one seems to be Ganymed SSH-2.

  • AIP-51505:  General Validation Error - SFTP transport - validation disabled

    Configuration :
    internal DC with SFTP
    external DC with SFTP (via proxy)
    Business Protocol          Custom Document over Generic Exchange
    MLR 12? (patch 8703404)
    3 environments have the same tip.properties
    2 environments pick up and send all files successfully.
    I cannot see a difference between the deployments that is causing the validation error.
    [also in all three B2B's are an ebXML and AS2 trading partner configuration]
    The 3rd generates validation errors for all files (14) in the b2b.log and sends some (1-7).
    Note that the sent ones change, if a failed one is retried in the source directory, sometimes it is sent successfully.
    In the failing/validating deployment there is no validation for (cut and pasted from UI screens) :
    Document Protocol Revision Details = Translation Enabled False Validation Enabled False
    Document Types (Document Definition Details for each document def) = Is Translation Enabled False Is Validation Enabled     False
    tip.properties (environment where error occurs) :
    #valid valudes for DiagnosticLevel:
    #DEBUG, INFORMATION, WARNING, ERROR, FATAL.
    #default logging level
    oracle.tip.DiagnosticLevel = ERROR
    #default component log level for B2B Engine
    b2b.oracle.tip.DiagnosticLevel = ERROR
    # following logging properties to be set back to false after resolving Sequence 98
    # oracle.tip.adapter.b2b.logPayload = true
    # oracle.tip.adapter.b2b.packaging.logDecryptMessage = true
    b2b.oracle.tip.DiagnosticLevel.Repository = ERROR
    b2b.oracle.tip.DiagnosticLevel.BusinessLogicLayer
    b2b.oracle.tip.DiagnosticLevel.B2B
    b2b.oracle.tip.DiagnosticLevel.ModelValidation
    b2b.oracle.tip.DiagnosticLevel.ValidationRule
    b2b.oracle.tip.DiagnosticLevel.TechStack
    b2b.oracle.tip.DiagnosticLevel.Deployment
    b2b.oracle.tip.DiagnosticLevel.Reports
    b2b.oracle.tip.DiagnosticLevel.UI
    #default component level logging for UI
    ui.oracle.tip.DiagnosticLevel = ERROR
    #specify component log leel to override default;
    ui.oracle.tip.DiagnosticLevel.Repository = ERROR
    ui.oracle.tip.DiagnosticLevel.BusinessLogicLayer
    ui.oracle.tip.DiagnosticLevel.B2B
    ui.oracle.tip.DiagnosticLevel.ModelValidation
    ui.oracle.tip.DiagnosticLevel.ValidationRule
    ui.oracle.tip.DiagnosticLevel.TechStack
    ui.oracle.tip.DiagnosticLevel.Deployment
    ui.oracle.tip.DiagnosticLevel.Reports
    ui.oracle.tip.DiagnosticLevel.UI
    oracle.tip.adapter.b2b.encoding=UTF-8
    # Diagnostic Service defaults
    oracle.core.ojdl.OrganizationId = oracle.com
    oracle.core.ojdl.ComponentId = tip
    oracle.core.ojdl.HostingClientId = beta
    oracle.core.ojdl.BufferSize = 100000
    oracle.core.ojdl.FlushInterval = 5000
    # Specific diagnostic settings
    oracle.tip.LogDirectory = /space/sw/oracle/products/ias/b2b/ip/log
    oracle.tip.LogMaxSegmentSize = 10000000
    oracle.tip.LogType = text
    # option to save old log when rebounding the service
    oracle.tip.LogSave = true
    # B2B Info
    oracle.tip.adapter.b2b.NumOfWFListeners = 1
    oracle.tip.adapter.b2b.NumOfIPListeners = 1
    oracle.tip.adapter.b2b.WFAgentName = OUTAGENT
    oracle.tip.adapter.b2b.RMIPort = 5111
    oracle.tip.adapter.b2b.RMIInstance = IP
    #oracle.tip.adapter.b2b.WalletLocation = file:/etc/ORACLE/WALLETS/oracle/ora_wallet.txt
    oracle.tip.adapter.b2b.ContinueValidationOnError = true
    oracle.tip.adapter.b2b.MultipleIdentifications=false
    oracle.tip.adapter.b2b.allTPInOneDirectory=true
    oracle.tip.adapter.b2b.DocumentRouting=false
    #oracle.tip.adapter.b2b.edi.identifyFromTP = Interchange | Group | Exchange
    #oracle.tip.adapter.b2b.transportTrace = /space/sw/oracle/products/ias/b2b/ip/log/transport.trc
    #oracle.tip.adapter.b2b.edi.ignoreValidation=InterchangeReceiverID,InterchangeSenderID,GroupReceiverID,GroupSenderID,GroupSenderQual,GroupReceiverQual,InterchangeSenderQual,InterchangeReceiverQual
    #report Certificate validation as ERROR or WARNING; default value is ERROR
    #oracle.tip.adapter.b2b.tpa.validateCertificate= ERROR | WARNING
    #oracle.tip.adapter.b2b.document.NoValidation = inbound | outbound
    # HTTP Proxy Host and Proxy Port
    oracle.tip.adapter.b2b.ProxyHost =
    oracle.tip.adapter.b2b.ProxyPort =
    # MaxCachedSessions is set to 0 means no ExecutionContext
    # is stored in HTTP session (IP cache is empty).Line below overwrites default
    # value equals to 5 when 5 concurrent users could store context in their sessions
    # By commenting that line you might turn IP cache on.
    oracle.tip.ui.MaxCachedSessions = 0
    # Suppression of Validation Warnings
    oracle.tip.buslogic.validation.SuppressWarnings=false
    # Callout directory
    oracle.tip.callout.directory=%s_calloutDirectory%
    # persistence directory
    oracle.tip.runtime.persistence.dirName=%s_persistenceDir%
    # enable ONS reverse ping
    enableONS=true
    # Optional property which user can set to specify saved report encoding e.g. UTF-8, UTF-16LE etc
    # By default this property is not set, in this case the saved report csv file
    # will be generated by using the native encoding
    # Users can set this parameter to change the encoding of the generated saved report csv file
    #savedReportEncoding=UTF-8
    # Please don't modify the following properties
    # Connection Info
    username=%s_intgDBUser%
    password=%s_intgDBPasswd%
    #connect=jdbc:oracle:thin:@%s_intgDBHost%:%s_intgDBPort%:%s_intgDBSid%
    drivertype = thin
    tnsentry = inst1
    host = %s_intgDBHost%
    port = %s_intgDBPort%
    sid = %s_intgDBSid%
    oracle.tip.connection.useRepositoryAPI=on
    oracle.tip.connection.oraclehome=/space/sw/oracle/products/ias/b2b
    # property specific to Deployment
    oracle.tip.deploy.workflow_username=%s_wfUsername%
    oracle.tip.deploy.workflow_passwd=%s_wfPasswd%
    oracle.tip.deploy.workflow_tnsname=%s_wfTnsname%
    # UI user authorization
    authorization = true
    # encryption key used for securing secrets in the schema.
    oracle.tip.security.key=Be8ejb7yOX3rSefEr5pxBl49WLc0Iej9VeI8jykdjRfv
    ##oracle.tip.adapter.b2b.WalletLocation = /sw/oracle/products/ias/b2b/Apache/Apache/conf/ssl.wlt/default/b2bwallet
    #oracle.tip.adapter.b2b.WalletLocation = /sw/oracle/products/ias/101202/ib/Apache/Apache/conf/ssl.wlt/default/b2bwallet
    oracle.tip.adapter.b2b.WalletLocation =file:/sw/oracle/products/ias/b2b/Apache/Apache/conf/ssl.wlt/default/b2bwallet/ewallet.txt
    # performance best practices
    oracle.tip.adapter.b2b.sleepTimeout=1
    oracle.tip.repos.RowSize=100
    oracle.tip.adapter.b2b.receiveTimeout=1
    oracle.tip.adapter.b2b.TPACache=true
    The b2b.log from the failing environment has some lines not seen in the other two environments (the lines referring to MimePackaging:unpack) :
    2010.04.29 at 19:07:14:295: Thread-11: B2B - (DEBUG)
    Protocol = SFTP
    Version = 2.0
    Transport Header
    filename:SA_ENVSTATUSES.txt
    filesize:1
    file_ext:.txt
    filename_format:%TO_PARTY%_%DOCTYPE_NAME%_%TIMESTAMP%.txt
    fullpath:/mnt/maximage_prd/sa_transfer/SA_ENVSTATUSES.txt
    timestamp:Thu Jan 15 09:29:53 PST 1970
    2010.04.29 at 19:07:14:295: Thread-11: BusinessLogicLayer - (DEBUG) New ExecutionContext has been created
    2010.04.29 at 19:07:14:296: Thread-11: BusinessLogicLayer - (DEBUG) setRuntimeActiveandQuiescing()
    2010.04.29 at 19:07:14:296: Thread-11: BusinessLogicLayer - (DEBUG) Recieve a new PersistencyService
    2010.04.29 at 19:07:14:299: Thread-11: BusinessLogicLayer - (DEBUG) Authorization disabled. UserBootstrapped:false, useAuthorization:true, configType:Design
    2010.04.29 at 19:07:14:300: Thread-11: BusinessLogicLayer - (DEBUG) Push Stack: queryConfiguration
    2010.04.29 at 19:07:14:300: Thread-11: BusinessLogicLayer - (DEBUG) Pop Stack: queryConfiguration
    2010.04.29 at 19:07:14:300: Thread-11: BusinessLogicLayer - (DEBUG) A new PersistencyService is created
    2010.04.29 at 19:07:14:340: Thread-11: BusinessLogicLayer - (DEBUG) setRuntimeActiveandQuiescing()
    2010.04.29 at 19:07:14:341: Thread-11: B2B - (DEBUG) DBContext beginTransaction: Enter
    2010.04.29 at 19:07:14:341: Thread-11: B2B - (DEBUG) DBContext beginTransaction: Transaction.begin()
    2010.04.29 at 19:07:14:341: Thread-11: B2B - (DEBUG) DBContext beginTransaction: Leave
    2010.04.29 at 19:07:14:341: Thread-11: B2B - (DEBUG) InterfaceListener:onMessage - Invoke inbound callout - null - null
    2010.04.29 at 19:07:14:341: Thread-11: B2B - (DEBUG) InterfaceListenersyncAckEBMSchecking header names
    2010.04.29 at 19:07:14:341: Thread-11: B2B - (DEBUG) oracle.tip.adapter.b2b.msgproc.DbAccess:DbAccess:insertNativeEvtTblRow(2 params) Enter
    2010.04.29 at 19:07:14:342: Thread-11: BusinessLogicLayer - (DEBUG) Authorization disabled. UserBootstrapped:false, useAuthorization:true, configType:null
    2010.04.29 at 19:07:14:343: Thread-11: BusinessLogicLayer - (DEBUG) Push Stack: createDataStorage
    2010.04.29 at 19:07:14:345: Thread-11: BusinessLogicLayer - (DEBUG) Pop Stack: createDataStorage
    2010.04.29 at 19:07:14:346: Thread-11: BusinessLogicLayer - (DEBUG) Authorization disabled. UserBootstrapped:false, useAuthorization:true, configType:null
    2010.04.29 at 19:07:14:346: Thread-11: BusinessLogicLayer - (DEBUG) Push Stack: createWireMessage
    2010.04.29 at 19:07:14:348: Thread-11: BusinessLogicLayer - (DEBUG) Pop Stack: createWireMessage
    2010.04.29 at 19:07:14:348: Thread-11: B2B - (DEBUG) oracle.tip.adapter.b2b.msgproc.DbAccess:DbAccess:insertNativeEvtTblRow(2 params) Exit
    2010.04.29 at 19:07:14:348: Thread-11: B2B - (DEBUG) oracle.tip.adapter.b2b.transport.InterfaceListener:onMessage sendEventtrue
    2010.04.29 at 19:07:14:359: Thread-11: B2B - (DEBUG) DBContext commit: Enter
    2010.04.29 at 19:07:14:362: Thread-10: B2B - (DEBUG) oracle.tip.adapter.b2b.data.MsgListener:onMessage Enter
    2010.04.29 at 19:07:14:362: Thread-10: B2B - (DEBUG) DBContext beginTransaction: Enter
    2010.04.29 at 19:07:14:362: Thread-10: B2B - (DEBUG) DBContext beginTransaction: Transaction.begin()
    2010.04.29 at 19:07:14:363: Thread-10: B2B - (DEBUG) DBContext beginTransaction: Leave
    2010.04.29 at 19:07:14:363: Thread-10: BusinessLogicLayer - (DEBUG) setRuntimeActiveandQuiescing()
    2010.04.29 at 19:07:14:363: Thread-10: B2B - (INFORMATION) oracle.tip.adapter.b2b.engine.Engine:processEvents Enter
    2010.04.29 at 19:07:14:363: Thread-10: B2B - (DEBUG) oracle.tip.adapter.b2b.engine.Engine:processEvents begin transaction
    2010.04.29 at 19:07:14:363: Thread-10: B2B - (DEBUG) DBContext beginTransaction: Enter
    2010.04.29 at 19:07:14:363: Thread-10: B2B - (DEBUG) DBContext beginTransaction: Leave
    2010.04.29 at 19:07:14:363: Thread-10: B2B - (DEBUG) oracle.tip.adapter.b2b.engine.Engine:handleMessageEvent Enter
    2010.04.29 at 19:07:14:363: Thread-10: B2B - (DEBUG) oracle.tip.adapter.b2b.engine.Engine:incomingContinueProcess Enter
    2010.04.29 at 19:07:14:363: Thread-10: B2B - (DEBUG) oracle.tip.adapter.b2b.msgproc.DbAccess:DbAccess:getWireMessage Enter
    2010.04.29 at 19:07:14:364: Thread-10: BusinessLogicLayer - (DEBUG) Authorization disabled. UserBootstrapped:false, useAuthorization:true, configType:null
    2010.04.29 at 19:07:14:364: Thread-10: BusinessLogicLayer - (DEBUG) Push Stack: queryWireMessage
    2010.04.29 at 19:07:14:364: Thread-11: B2B - (DEBUG) DBContext commit: Transaction.commit()
    2010.04.29 at 19:07:14:364: Thread-11: B2B - (DEBUG) DBContext commit: Leave
    2010.04.29 at 19:07:14:365: Thread-10: BusinessLogicLayer - (DEBUG) Pop Stack: queryWireMessage
    2010.04.29 at 19:07:14:365: Thread-10: B2B - (DEBUG) oracle.tip.adapter.b2b.msgproc.DbAccess:DbAccess:getWireMessage Exit
    2010.04.29 at 19:07:14:366: Thread-10: B2B - (DEBUG) oracle.tip.adapter.b2b.msgproc.DbAccess:formTransportMessage Enter
    2010.04.29 at 19:07:14:367: Thread-10: B2B - (DEBUG) oracle.tip.adapter.b2b.msgproc.DbAccess:formTransportMessage Exit
    2010.04.29 at 19:07:14:367: Thread-10: B2B - (INFORMATION) oracle.tip.adapter.b2b.engine.Engine:processIncomingMessage Enter
    2010.04.29 at 19:07:14:369: Thread-10: B2B - (DEBUG) oracle.tip.adapter.b2b.engine.Engine:processIncomingMessage Identify Business Protocol
    2010.04.29 at 19:07:14:370: Thread-10: B2B - (DEBUG) oracle.tip.adapter.b2b.exchange.as2.AS2ExchangePlugin:AS2ExchangePlugin:identifyExchange Enter
    2010.04.29 at 19:07:14:370: Thread-10: B2B - (DEBUG) oracle.tip.adapter.b2b.exchange.as2.AS2ExchangePlugin:AS2ExchangePlugin:identifyExchange Exit
    2010.04.29 at 19:07:14:370: Thread-10: B2B - (DEBUG) oracle.tip.adapter.b2b.exchange.ebms.EBMSExchangePlugin:identifyExchange Enter
    2010.04.29 at 19:07:14:370: Thread-10: B2B - (DEBUG) oracle.tip.adapter.b2b.exchange.ebms.EBMSExchangePlugin:identifyExchange SOAPAction is [null]
    2010.04.29 at 19:07:14:370: Thread-10: B2B - (DEBUG) oracle.tip.adapter.b2b.engine.Engine:processIncomingMessage Do Unpack using the BP specific package class
    2010.04.29 at 19:07:14:370: Thread-10: B2B - (DEBUG) MimePackaging:unpack:Enter
    2010.04.29 at 19:07:14:370: Thread-10: B2B - (DEBUG) MimePackaging:doUnpack:Enter
    2010.04.29 at 19:07:14:371: Thread-10: B2B - (DEBUG) MimePackaging:unpackNonMimeMessage:Enter
    2010.04.29 at 19:07:14:371: Thread-10: B2B - (DEBUG) MimePackaging:unpackNonMimeMessage:encoding = UTF-8
    2010.04.29 at 19:07:14:371: Thread-10: B2B - (DEBUG) MimePackaging:unpackNonMimeMessage:oracle.tip.adapter.b2b.packaging.Component@391da0
    2010.04.29 at 19:07:14:371: Thread-10: B2B - (DEBUG) MimePackaging:unpackNonMimeMessage:Exit
    2010.04.29 at 19:07:14:371: Thread-10: B2B - (DEBUG) MimePackaging:unpack:Exit
    2010.04.29 at 19:07:14:371: Thread-10: B2B - (DEBUG) oracle.tip.adapter.b2b.engine.Engine:processIncomingMessage Decode the Incoming Message into B2B Message
    2010.04.29 at 19:07:14:371: Thread-10: B2B - (DEBUG) oracle.tip.adapter.b2b.exchange.generic.GenericExchangePlugin:GenericExchangePlugin:decodeIncomingMessage Enter
    2010.04.29 at 19:07:14:372: Thread-10: B2B - (DEBUG) oracle.tip.adapter.b2b.exchange.generic.GenericExchangePlugin:GenericExchangePlugin:decodeIncomingMessage Number of Components = 1
    2010.04.29 at 19:07:14:372: Thread-10: B2B - (DEBUG) oracle.tip.adapter.b2b.exchange.generic.GenericExchangePlugin:decodeIncomingMessage Transport Protocol = {SFTP}
    2010.04.29 at 19:07:14:372: Thread-10: B2B - (DEBUG) oracle.tip.adapter.b2b.exchange.generic.GenericExchangePlugin:decodeIncomingMessage filename = SA_ENVSTATUSES.txt
    2010.04.29 at 19:07:14:372: Thread-10: B2B - (DEBUG) oracle.tip.adapter.b2b.exchange.generic.GenericExchangePlugin:decodeIncomingMessage FILE_FORMAT = TO_PARTY - SA
    2010.04.29 at 19:07:14:372: Thread-10: B2B - (DEBUG) oracle.tip.adapter.b2b.exchange.generic.GenericExchangePlugin:decodeIncomingMessage FILE_FORMAT = DOCTYPE_NAME - ENVSTATUSES
    2010.04.29 at 19:07:14:373: Thread-10: B2B - (ERROR) Error -: AIP-51505: General Validation Error
         at oracle.tip.adapter.b2b.exchange.generic.GenericExchangePlugin.decodeIncomingMessage(GenericExchangePlugin.java:408)
         at oracle.tip.adapter.b2b.engine.Engine.processIncomingMessage(Engine.java:1477)
         at oracle.tip.adapter.b2b.engine.Engine.incomingContinueProcess(Engine.java:2576)
         at oracle.tip.adapter.b2b.engine.Engine.handleMessageEvent(Engine.java:2446)
         at oracle.tip.adapter.b2b.engine.Engine.processEvents(Engine.java:2401)
         at oracle.tip.adapter.b2b.data.MsgListener.onMessage(MsgListener.java:527)
         at oracle.tip.adapter.b2b.data.MsgListener.run(MsgListener.java:374)
         at java.lang.Thread.run(Thread.java:534)
    2010.04.29 at 19:07:14:373: Thread-10: B2B - (DEBUG) oracle.tip.adapter.b2b.engine.Engine:handleExceptionBeforeIncomingTPA Enter
    2010.04.29 at 19:07:14:373: Thread-10: B2B - (DEBUG) oracle.tip.adapter.b2b.engine.Engine:XXX: handleInboundException Enter
    2010.04.29 at 19:07:14:373: Thread-10: B2B - (DEBUG) oracle.tip.adapter.b2b.engine.Engine:XXX: handleInboundException Error message is Error -: AIP-51505: General Validation Error
    2010.04.29 at 19:07:14:373: Thread-10: B2B - (DEBUG) oracle.tip.adapter.b2b.engine.Engine:XXX: isFARequired Enter
    2010.04.29 at 19:07:14:373: Thread-10: B2B - (DEBUG) oracle.tip.adapter.b2b.engine.Engine:XXX: isFARequired {filename=SA_ENVSTATUSES.txt, filesize=1, file_ext=.txt, filename_format=%TO_PARTY%_%DOCTYPE_NAME%_%TIMESTAMP%.txt, fullpath=/mnt/maximage_prd/sa_transfer/SA_ENVSTATUSES.txt, timestamp=Thu Jan 15 09:29:53 PST 1970}
    2010.04.29 at 19:07:14:374: Thread-10: B2B - (DEBUG) oracle.tip.adapter.b2b.engine.Engine:XXX: isFARequired returning false
    2010.04.29 at 19:07:14:374: Thread-10: B2B - (DEBUG) oracle.tip.adapter.b2b.engine.Engine:XXX: handleInboundException FA not required
    2010.04.29 at 19:07:14:374: Thread-10: B2B - (DEBUG) oracle.tip.adapter.b2b.engine.Engine:handleInboundException Updating Error Message: Error -: AIP-51505: General Validation Error
    2010.04.29 at 19:07:14:374: Thread-10: B2B - (DEBUG) oracle.tip.adapter.b2b.msgproc.DbAccess:updateWireBusinessToErrorState Enter
    2010.04.29 at 19:07:14:374: Thread-10: B2B - (DEBUG) oracle.tip.adapter.b2b.msgproc.DbAccess:updateWireBusinessToErrorState Wire message found
    2010.04.29 at 19:07:14:374: Thread-10: B2B - (DEBUG) oracle.tip.adapter.b2b.msgproc.DbAccess:updateWireBusinessToErrorState Creating new b2berror object
    2010.04.29 at 19:07:14:375: Thread-10: B2B - (DEBUG) oracle.tip.adapter.b2b.msgproc.DbAccess:updateWireBusinessToErrorState enum0 not null
    2010.04.29 at 19:07:14:375: Thread-10: B2B - (DEBUG) oracle.tip.adapter.b2b.msgproc.DbAccess:updateWireBusinessToErrorState Updating wire message error information

    Thank you for the suggestion, unfortunately, I cannot get it to work.
    I've updated the IDC transport server to 3 different filename_formats, and tried the corresponding files, with correct names to match the filename_format.
    After updating the IDC I validated the trading partner (host).
    I then updated the agreement using the updated IDC, and validated the agreement.
    I then validated the host again.
    Then I created a new deployment.
    And still received the error.
    I then deleted the old IDC and created a new IDC and new agreement and new deployment, trying 3 different "Internal delivery channel filename format" values (updating and validating the agreement and host trading partner each time).
    And still received the error.
    No matter what I set EITHER the IDC "filename format" OR "Internal delivery channel filename format", the b2b.log always reports :
    filename_format = %TO_PARTY%_%DOCTYPE_NAME%_%TIMESTAMP%.txt
    e.g.
    2010.05.16 at 18:05:02:758: Thread-15: B2B - (DEBUG)
    Protocol = SFTP
    Version = 2.0
    Transport Header
    filename:SA_DRUGS_10.txt
    filesize:1
    file_ext:.txt
    filename_format:%TO_PARTY%_%DOCTYPE_NAME%_%TIMESTAMP%.txt
    fullpath:/mnt/maximage_prd/sa_transfer/SA_DRUGS_10.txt
    timestamp:Thu Jan 15 09:54:18 PST 1970
    When I try a file with a revision number, e.g. SA_DRUGS_10.txt the log shows :
    2010.05.16 at 18:05:03:602: Thread-14: B2B - (DEBUG) oracle.tip.adapter.b2b.exchange.generic.GenericExchangePlugin:decodeIncomingMessage FILE_FORMAT = TO_PARTY - SA
    2010.05.16 at 18:05:03:603: Thread-14: B2B - (DEBUG) oracle.tip.adapter.b2b.exchange.generic.GenericExchangePlugin:decodeIncomingMessage FILE_FORMAT = DOCTYPE_NAME - DRUGS
    2010.05.16 at 18:05:03:603: Thread-14: B2B - (DEBUG) oracle.tip.adapter.b2b.exchange.generic.GenericExchangePlugin:decodeIncomingMessage FILE_FORMAT = TIMESTAMP - 10
    2010.05.16 at 18:05:03:895: Thread-14: B2B - (ERROR) Error -: AIP-51505: General Validation Error
    which makes sense as "10" is not a timestamp.
    If I exclude the revision, using SA_DRUGS.txt the log shows :
    2010.05.16 at 18:27:03:543: Thread-14: B2B - (DEBUG) oracle.tip.adapter.b2b.exchange.generic.GenericExchangePlugin:decodeIncomingMessage Transport Protocol = {SFTP}
    2010.05.16 at 18:27:03:544: Thread-14: B2B - (DEBUG) oracle.tip.adapter.b2b.exchange.generic.GenericExchangePlugin:decodeIncomingMessage filename = SA_DRUGS.txt
    2010.05.16 at 18:27:03:544: Thread-14: B2B - (DEBUG) oracle.tip.adapter.b2b.exchange.generic.GenericExchangePlugin:decodeIncomingMessage FILE_FORMAT = TO_PARTY - SA
    2010.05.16 at 18:27:03:544: Thread-14: B2B - (DEBUG) oracle.tip.adapter.b2b.exchange.generic.GenericExchangePlugin:decodeIncomingMessage FILE_FORMAT = DOCTYPE_NAME - DRUGS
    2010.05.16 at 18:27:03:545: Thread-14: B2B - (ERROR) Error -: AIP-51505: General Validation Error
    So, the timestamp gets ignored (as there is no "_" delimiter), but it still fails, probably because there is no timestamp in the filename.
    So, why won't the UI correctly set the IDC filename_format or Internal filename_format ?

Maybe you are looking for

  • TYPE of HUNTING in UCCX

    We use Contact Center for our Helpdesk. When calls come in, they always seem to land on the same guys desk first if he is not on the phone. If he's idle, calls always seem to go to him first even when there are two other available support personnel.

  • COND_A01 IDOC

    Hello, I am trying to Load pricing conditions into VB23 using the IDOC COND_A01. It is working fine when I try to create a new record but when I tried to modify the dates on an existing record it is creating an additional entry in table Axxx, which i

  • Problem facing in saving the workflow

    Hi all, I have done some changes to the existing workflow..and i have save the workflow in the data base as using save as option in workflow builder...but the modification are not refllected in the work flow after saving.. what might be the reason ..

  • DMS Migration Advice

    Hi Everyone, This is the scenario: I have one SAP Instance, with DIR's being stored into 15 different Content Servers. I have written a program to download all document data to a spreadsheet, including the storage categories, etc et al. I have writte

  • Usage rights

    Please can someone help me?  This is driving me nuts!  I have designed a form using Adobe Livecycle ES4.  I want users to be able to save and email filled out forms. I understand that I have to apply usage rights but I cannot see how to do this.  For