title: Abstracting Batch Process SFTP Multiple Destination & Automatic Retries
body: <p>I do a lot of batch processing work using an in house Java framework. One of the activities that is particularly troublesome for us is SFTP where we run into two problems: </p>
  
  <ol>
  <li>Sending files to multiple destinations, where if one destination is unavailable the entire process stops.</li>
  <li>No automatic retries, where some network hiccup causes the batch process to stop. </li>
  </ol>
  
  <p>Currently, we use Control-M for storing all of the SFTP related information:</p>
  
  <ol>
  <li>Host &amp; Path of From &amp; To</li>
  <li>PGP key information </li>
  <li>Username &amp; password </li>
  </ol>
  
  <p>While it's certainly possible to do something with Control-M to solve these problems, I find it a cumbersome beast. I am looking for suggestions on a way of abstracting file transfer so that a batch process can generate a file, put it into some local folder, and decouple the transfer to the destination(s) in a robust fashion, whilst providing alerting/reporting when things go wrong without stopping. </p>
  
  <p>In particular I am looking for anything that does this off the shelf as opposed to having to write such a tool myself. </p>
  
  <p><strong>Environment</strong></p>
  
  <ul>
  <li>Solaris 10 </li>
  <li>Java 6 </li>
  <li>Oracle 11</li>
  <li>Control-M 7</li>
  </ul>