SFTP Smart Services

Overview

Contains multiple Smart Services for interacting with a remote file server via SFTP, FTP, or SCP.  Using these services, an Appian application can be configured to send and receive files, folders, and metadata in a process.  Features support for zlib compression.

Key Features & Functionality

Smart Services included:

  • SFTP:
    • Remove Directory Over SFTP (Basic Credentials)
    • Send File Over SFTP
    • Send File Over SFTP (Basic Credentials)
    • Receive File Over SFTP
    • Receive File Over SFTP (Basic Credentials)
    • Rename File Over SFTP
    • Get Remote Directory Contents Over SFTP
    • Get Remote Directory Contents Over SFTP (Basic Credentials)
    • Create Directory Over SFTP
    • Create Directory Over SFTP (Basic Credentials)
  • SCP:
    • Send File Over SCP
    • Receive File Over SCP
  • FTP:
    • Send File Over FTP
    • Receive File Over FTP
    • Receive Folder Over FTP
  • FTPS
    • Receive Folder Over FTPS
    • Send File Over FTPS (Basic Credentials)

All smart services in the package use Secure Credentials Store.

Anonymous
  • I see that there is a single Send File over FTP, but there doesn't seem to be a smart service for sending a single file over FTPS.  This would most likely have to be an enhancement to the plugin.

  • I'm also running into same issue 

    2020-10-12 17:52:03,309 [Appian Work Item - 10843 - execution01 : UnattendedJavaActivityRequest] ERROR com.appiancorp.process.engine.UnattendedJavaActivityRequest - An error occurred while executing activity: id=268465328, classname=com.appian.ps.plugins.sftpsmartservices.ReceiveFileOverSFTPBasic
    java.lang.StringIndexOutOfBoundsException: String index out of range: -1
    at java.lang.String.substring(String.java:1927)
    at com.appian.ps.plugins.sftpsmartservices.ReceiveFileOverSFTPBasic.run(ReceiveFileOverSFTPBasic.java:103)
    at com.appiancorp.process.runtime.framework.DefaultActivityExecutor$1.lambda$call$0(DefaultActivityExecutor.java:131)
    at com.appiancorp.plugins.PluginUsageLogger.runWithPluginInformation(PluginUsageLogger.java:52)
    at com.appiancorp.process.runtime.framework.DefaultActivityExecutor$1.call(DefaultActivityExecutor.java:131)
    at com.appiancorp.process.runtime.framework.DefaultActivityExecutor$1.call(DefaultActivityExecutor.java:125)
    at com.appiancorp.common.ContextClassLoaderSwitcher.runInContext(ContextClassLoaderSwitcher.java:25)
    at com.appiancorp.process.runtime.framework.DefaultActivityExecutor.execute(DefaultActivityExecutor.java:125)
    at com.appiancorp.process.engine.UnattendedJavaActivityRequest.execute(UnattendedJavaActivityRequest.java:83)
    at com.appiancorp.process.engine.UnattendedJavaActivityRequest.execute0(UnattendedJavaActivityRequest.java:55)
    at com.appiancorp.process.engine.ContinuationRequest.executeOuter(ContinuationRequest.java:71)
    at com.appiancorp.process.engine.ContinuationRequest.execute(ContinuationRequest.java:100)
    at com.appiancorp.process.workpoller.UnattendedRequestHandlerBean.onMessage(UnattendedRequestHandlerBean.java:36)
    at com.appiancorp.process.workpoller.WorkItem.run(WorkItem.java:93)
    at org.springframework.jca.work.SimpleTaskWorkManager$DelegatingWorkAdapter.run(SimpleTaskWorkManager.java:239)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
    at java.lang.Thread.run(Thread.java:748)

    Code at 103: ReceiveFileOverSFTPBasic

    if (documentName.lastIndexOf('.') == -1)
    documentName += remote_filename.substring(remote_filename
    .lastIndexOf('.'));

  • It seems like there is an invalid filename. What are the sftpServerFilePath and documentName parameters you are passing in?

    Are you perhaps trying to pull a file that doesn't have an extension?

  • while using the latest version 2.0.0  for this plugin, my existing process is getting failed with the error message ---Error copying the Appian document to the remote server. See the application server log for more details. Error Message: No such file or directory and this working as expected on the 1.7.0 version.
    kindly, lets us know, how to resolve this kind of issue.

  • can you please reply , how we can resolve this above issue, i am using send file over SFTP smart service, and after version updation to 2.0.0, it is failing

  • Hi Lokesh,

    While we tried to resolve the issue, we found that the file path would be wrong in your case. You should include the '\' to denote the parent folder or you can include any folder location here. If you still have the issue, please forward the steps to reproduce with inputs.

  • - have already done that, this version is not supporting and also existing processes are failing.

  • Hi Team

    We notice that the SFTP single file download appears to have some issues when downloading small files, we are using v2.0.0

    When downloading files (using 'receive File Over SFTP') it seems that the file size is set to 0 for some reason.
    In Appian, it shows as '<1kb' but the contents are still there (checked by downloading the file and opening outside of appian)

    With some trial & error I found out that this happens for files below ~10kb size. (CSV files in our case)

    In our setup, this impacts the process, because this file needs to be uploaded to a sharepoint, and that Smart Service depends on the filesize metadata, rendering the uploaded file corrupt.

    Please let me know if you need more information reproducing this issue.

  • Which Receive node are you using? The one that you provide credentials in secure credentials store or directly in the node?