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
Parents
  • v2.2.1 Release Notes
    • Support For Passive FTP Connections in Send File Over FTP Smart Service
    • Added the following parameters EnterLocalActiveMode and BinaryFileType in Send File
    • Over FTP Smart Service
    1. EnterLocalActiveMode - True Indicates FTP Connection in Active Mode , False indicates Passive Mode.Default Value is False.
    2. BinaryFileType - False indicates Ascii mode ftp file transfer , True indicates Binary Mode File Transfer
    3. Added the output parameters Error and Status in following smart services to denote the status of the smart service file operation performed.

  • Hi,

    What all possible values are being returned by output parameters 'Error' and 'Status'?
    I found datatype for both these parameters is TEXT. So it will be helpful if you can enlist all possible values returned by these 2 output parameters.

    Thank you!

  • Remote FIle Path has to be configured as a directory .Eg:/opt or /home/ubuntu where home and ubuntu are directories file name has to be configured in the parameter file name. We suspect Compass_" & text(now(),"MM_DD_YYYY") & ".zip" is a file name and it cannot be configured as a remote file path hence the error is thrown



  • Please check following (input: value):
    External System Key: appian-merlin-sftp
    Use Per User Credentials: False
    Private Key: Merlin Identity (details at end of the message)
    Server Hostname: test-secureftp.cna.com
    Server Port: 22
    Remote File Path: "Compass_" & text(now(),"MM_DD_YYYY") & ".zip"


    Merlin Identity file:

    -----BEGIN RSA PRIVATE KEY-----
    Proc-Type: 4,ENCRYPTED
    DEK-Info: AES-128-CBC,2FF74BC9B27D3222AD7BF30470ABF1F2

    KIgxvkwHuzXCwHO2ivNEWAtJK3vaDVHDWGnBkjV6WxJHDjCDW6hBYHJzF5fYxhyv
    Oze6K8A+x+fskeZUogE0LRS4+GSjH4r1bjfvPKwvi9PrHyiEzVe9fRlMmLoAKVFs
    C2XpyrHnDs7XbP2Jv4WATOKemtMzYSIJgGef5iJPkqqvQINGd3jFW/AsXMkZPcHM
    jJgP4e+AQxg28bWRhod3W5wIJEUDYB49hPzFzDbBFSOUSymTn00buMhxS+IzNAcp
    tr9mKJ0AdbRBF0KFsdeRp4fPy5OzkxCk3hUYcThbJ0ilBt8NaqoxQ9ieZPBeQH7K
    osG1Hp8cwKbVm4Lj6nwuEBkqfzbM61Iya3InRPMunK5TWX9qNuPodO6kUZdkW/vx
    4x9wGH72S4j1nTxOjrLs9t9t8RCyYxw/VYHkqC8v3iUc/1NNfpl33D4CsIyQZB4z
    KN7ghBn1XxeaH9rd7cnUt2Or9WqP36TchUDAaxVW8EvGUgG2LYr0sl64K5AEZQlK
    Jt3uPBhG8UZaRJIP3hC+fNLvPlvSzRfYVfU0sjC7dcIA6It0N6oLmNf4IgsKOTt0
    ihNkFKTKz8SxrUmKTdsCy4Ux8K4Cbe7bRaCDKUQlaZZQuqWl3z2xZ9AaJYOLfDXO
    j+DvMNPzjhRYyrKXQxFJHxrr7DU2rSuEBcXvmCcRKyMrAXmOYT8hxE8njwBTGvHY
    YkQ1VYlRWR1D5lETZo+opYWvnko5tfY8p128m6HIEBO3dMaUHNhIVayJXpvqG5mV
    J80/jgS5OSR/Iac/qiPp7/6GSbcZcSoMNm6g/9Oded2BhDhkehyBZmT1rn2l+XrE
    TRNL87APeLFT3BdhX9HbFLPPzP2ayhoBGmcekRK4taFu4zoggavbKneIVRDoykwK
    CmmH7Px/kvfxPhcEs+MlqPYPTIagcxjef7VoTGhMTbTCbQzi4X7ol0vmusSsp/Y7
    9Det8/0h+H79KFKLJSzSvBIummDkEfH98uJspsUfgy520FczkUNvqzirPApn9bad
    fO2isDib1TMUge60e5KMO4M12k4YJDC4lzmc4p76Ih+17R3jkqawT/oJVjPxwOYC
    2EyO+iMp4N1tqpiV2Pab4En2T1V+1u038E5OwhWxWMAO2uQdTJaxWevWEV+t30Aa
    WkXgN4EoR+5zGodFZKMpjd/ts6+nVs+eNx/mXjf/yWXxOt61/ICHlzh+d4fwasWA
    wm7YhEE7PmIJyI7jG/RHjTfzLPWth0qhuwycHlWQtPerimpAIYgI493tFWpFjzu3
    xxYH4FjgR+6rV6NEDAbSFpB1agheeOA8DU53YPjIZj0JL+pZqoVx0Q9sxwEBtijA
    UbQ1SeJxtyEPQ/kkDs0edPbqNx7GLOvjjVIV5EEu+TQZtomPVVWmGHQHIjP0RnLX
    gtheba5RjUf0MSENkGcLouKNRKB+YnitOysHOhoerPP35RtBeQA3IL9/nuZWkkMR
    kGQ4ORoYoCaz0hew9dxoKsebFOZ2R2+PE26KXbCvWrX7hT2rewo5pvrkVMY5qAkk
    ZZHZoOultL4SEZI3Z1cUPqKYxFvi9+IWLGdEwPM9cDEMdxEAirEUwUSHkFMvJoO+
    -----END RSA PRIVATE KEY-----

  • The above-mentiioned node is supported in the plugin and works perfectly in our environment. Please share with us the configured inputs for the nodes for all the input parameters like remote file path and file name



  • I'm sorry I didn't quite get that. Would you please rephrase?

    This is what current node type is I'm trying to use:
    Send File Over SFTP (com.appiancorp.a2.process.runtime.activities.sftp.SendFileOverSFTPwithSCSUsernameAndPasswordV3)

  • Please share us with our configurations on the node.In case of deprecated instances We have handled the code only after 2.0.0 versions, our plugin keys are SendFileOverSFTPwithSCSUsernameAndPasswordV3 and SendFileOverSFTPwithSCSUsernameAndPasswordV2.If you are referencing any other plugin keys ,for older instances please raise a support ticket with Appian to revert the plugin to the older 1.6.2 version


  • PFA log file as you requested.

    2021-09-03 12:33:49,943 [Appian Work Item - 18897 - execution02 : UnattendedJavaActivityRequest] ERROR com.appian.ps.plugins.sftpsmartservices.SendFileOverSFTP - Error transferring file to SFTP server 
    2: The system cannot find the path specified. 
    at com.jcraft.jsch.ChannelSftp.throwStatusError(ChannelSftp.java:2873)
    at com.jcraft.jsch.ChannelSftp._put(ChannelSftp.java:594)
    at com.jcraft.jsch.ChannelSftp.put(ChannelSftp.java:540)
    at com.jcraft.jsch.ChannelSftp.put(ChannelSftp.java:492)
    at com.appian.ps.plugins.sftpsmartservices.SendFileOverSFTP.run(SendFileOverSFTP.java:150)
    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:27)
    at com.appiancorp.process.runtime.framework.DefaultActivityExecutor.execute(DefaultActivityExecutor.java:125)
    at com.appiancorp.process.engine.UnattendedJavaActivityRequest.execute(UnattendedJavaActivityRequest.java:88)
    at com.appiancorp.process.engine.UnattendedJavaActivityRequestResponseCreator.getJavaActivityResultResponse(UnattendedJavaActivityRequestResponseCreator.java:21)
    at com.appiancorp.process.engine.UnattendedJavaActivityRequest.getJavaActivityResultResponse(UnattendedJavaActivityRequest.java:67)
    at com.appiancorp.process.engine.UnattendedJavaActivityRequest.execute0(UnattendedJavaActivityRequest.java:55)
    at com.appiancorp.common.persistence.data.AppianDataUserContextProvider.executeWithConsistentDataReads(AppianDataUserContextProvider.java:116)
    at com.appiancorp.process.engine.ProcessContinuationRequest.executeOuter(ProcessContinuationRequest.java:68)
    at com.appiancorp.process.engine.ContinuationRequest.execute(ContinuationRequest.java:123)
    at com.appiancorp.process.workpoller.UnattendedRequestHandlerBean.onMessage(UnattendedRequestHandlerBean.java:36)
    at com.appiancorp.process.workpoller.WorkItem.run(WorkItem.java:94)
    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)
    2021-09-03 12:37:31,431 [Timer-4] INFO  com.appiancorp.cache.DatabaseAuxiliaryCache - Removing expired entries from db cache: uiState-auxiliary
    2021-09-03 12:38:10,939 [Appian Timer - 1] WARN  com.appiancorp.common.ObjectSynchronizer - 1 services were missing users.
    2021-09-03 12:38:51,209 [Appian Work Item - 18898 - execution02 : UnattendedJavaActivityRequest] ERROR com.appian.ps.plugins.sftpsmartservices.SendFileOverSFTP - Error transferring file to SFTP server
    2: The system cannot find the path specified. 
    at com.jcraft.jsch.ChannelSftp.throwStatusError(ChannelSftp.java:2873)
    at com.jcraft.jsch.ChannelSftp._put(ChannelSftp.java:594)
    at com.jcraft.jsch.ChannelSftp.put(ChannelSftp.java:540)
    at com.jcraft.jsch.ChannelSftp.put(ChannelSftp.java:492)
    at com.appian.ps.plugins.sftpsmartservices.SendFileOverSFTP.run(SendFileOverSFTP.java:150)
    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:27)
    at com.appiancorp.process.runtime.framework.DefaultActivityExecutor.execute(DefaultActivityExecutor.java:125)
    at com.appiancorp.process.engine.UnattendedJavaActivityRequest.execute(UnattendedJavaActivityRequest.java:88)
    at com.appiancorp.process.engine.UnattendedJavaActivityRequestResponseCreator.getJavaActivityResultResponse(UnattendedJavaActivityRequestResponseCreator.java:21)
    at com.appiancorp.process.engine.UnattendedJavaActivityRequest.getJavaActivityResultResponse(UnattendedJavaActivityRequest.java:67)
    at com.appiancorp.process.engine.UnattendedJavaActivityRequest.execute0(UnattendedJavaActivityRequest.java:55)
    at com.appiancorp.common.persistence.data.AppianDataUserContextProvider.executeWithConsistentDataReads(AppianDataUserContextProvider.java:116)
    at com.appiancorp.process.engine.ProcessContinuationRequest.executeOuter(ProcessContinuationRequest.java:68)
    at com.appiancorp.process.engine.ContinuationRequest.execute(ContinuationRequest.java:123)
    at com.appiancorp.process.workpoller.UnattendedRequestHandlerBean.onMessage(UnattendedRequestHandlerBean.java:36)
    at com.appiancorp.process.workpoller.WorkItem.run(WorkItem.java:94)
    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)

  • SFTP node has been configured correctly as it was with earlier version. It had been working fine.

    Also, being able to file over SFTP via SecureFX.

    Need help urgently please.

  • The error means the file path configured is either not reachable/user does not have enough permissions to access the remote server location.Please check if you are able to send the file over SFTP from WinSCP and if the issues still persist please share with us the configuration of the node and the server log file

  • Thank you.

    After upgrade to 2.2.1 and using new nodes to connect to SFTP I’ve started getting following error: “The system cannot find the path specified”.

    Earlier(before upgrading) it’s been working fine with all same data fed to input parameters of deprecated nodes.

    Any leads, please?

  • The status will have either - FAILED, SUCCESS

    Error-Will have value only if some exceptions  occur in code, will have the corresponding exception message as text

Comment Children