0 Followers · 62 Posts

File Transport Protocol (FTP) is a standard network protocol used for the transfer of computer files between a client and a server on a computer network.

Learn more.

Question Masayuki Tada · Aug 23, 2022

Hi,

I try SFTP connect by ObjectScript.
But occurred this error. Can't connect by SFTP key-pair authentication.

:ERROR #7510: SSH Error '-18': SSH Error [80101012]: Username/PublicKey combination invalid [80101012] at Session.cpp:458,0

Key pair was generate this way.
ssh-keygen -m pem -f ~/.ssh/id_rsa
"id_rsa" and "id_rsa.pub" is generated.
Passphrase is empty.

sftp command is connect successful.
ex.
sftp -i .ssh/id_rsa sftpuser@localhost

And other SFTP client is connect successful too.
ex. Fillezilla.

And password authentication is successful too.

ObjectScript code is this.

11
0 2053
Question Token Ibragimov · Jun 11, 2020

Hello,

I'm trying to upload file to SFTP server.  

I have access to SFTP server . 
My code is bellow 

Try {
Set sftp = ##class(%Net.SSH.Session).%New()

Set sc = sftp.AuthenticateWithUsername(username,password)
if 'sftp.Connect(host){
            Set status = $$$ERROR($$$GeneralError,"Cannot connect to sftp  ")
            Quit       
}
Set sc = sftp.OpenSFTP(.t)

If 'sftp.Disconnect() Write "Failed to logout",!

} Catch ex {
Set status=$$$ERROR($$$GeneralError,$ZE)
Quit
}

The output : $lb(5001,"Cannot connect to sftp "

What i'm doing wrong ?

10
1 2044
Question Mikael Toivonen · Aug 17, 2017

My issue is that I don't know why Ensemble processes incoming data in the wrong encoding.

Update: Issue was solved, I think, see my answer below.

our customer uploads UTF-8 encoded CSV files to our sFTP server. When I view the files on the server side, the scandinavian characters Ä and Ö (A and O with two dots on top of themselves, respectively) display correctly in the source file. When Ensemble downloads the files using a FTP Service, the characters display incorrectly in Ensemble. 

I am unable to pinpoint the reason for this behavior and I was hoping this is easily solvable.

8
0 9777
Question Roger Merchberger · Jan 10, 2020

TL;DR: If I set an Ensemble  Production Service based on EnsLib.File.PassthroughService to a Binary charset encoding, it breaks the file handling. Any ideas?

Full long post:

All,

I set up an Ensemble production to transfer files via SFTP, which works fine sending the files to my Linux server. Then I was informed that we needed to save a hash of the file, for comparison with the destination to verify the file arrived unmodified.

8
0 511
Question Leon Wilson · Mar 4, 2022

Good Afternoon My InterSystems IRIS Peers,

I have the following issue that I need help with, I tried all possibilities that I know of, therefore I am reaching out to the community for some insight.

I have a SFTP service that pulling 2.5.1 DFT HL7 messages from our SFTP file server. The issue is that IRIS is transforming patients names and addresses that contain special chars UTF-8 to ANSI.

Examples:

è = è
é = é
í = í-  .......etc

7
0 1852
Question Michael Derr · Apr 6, 2020

Hello!

This may seem a bit strange, but I'd like to make a business operation which would put a file via SFTP and then confirm that the filesize on the remote server is consistent with expectations.  I am thinking either of a custom copy or extension of the adapter (right now it is using EnsLib.FTP.OutboundAdapter) that overwrites method PutStream, or a version of the FTP.PassThroughOperation with a customized method OnMessage that does the check after the PutStream completes OK-- but I am uncertain of how exactly to modify either method to make the check.

7
0 1244
Question Scott Beeson · Jan 14, 2016

I have a service named FTP_In that is of class EnsLib.HL7.Service.FTPService.   It picks up files from multiple subfolders and sends them to an EnsLib.HL7.MsgRouter.RoutingEngine.   What I want to do is somehow capture the subfolder as a variable for use in the routing rules.  Is this possible?

Let's say I have the following files and directory structure on my FTP Server

/incoming/green/apple.dat
/incoming/yellow/banana.dat

I want the Routing Rule to be able to send anything that came from the /green/ folder to one operation and from /yellow/ to another.

6
0 704
Question Güvenal · Oct 4, 2017

Hello!
We want an Integration that should be moving files from a FTP server in a DMZ zone into another FTP server on our local network.
I tried using EnsLib.FTP.PassthroughService(EnsLib.FTP.InboundAdapter, EnsLib.FTP.OutboundAdapter)
Using this approach ensamble write data to the database, causing the CACHE.DAT to grow for every file that is moved.
Looks like the entire file is written to the database, is this the case?
We are not really interested in storing any file content information in ensamble in this particular case.

6
0 1033
Article Slava Rahmatoulin · Nov 5, 2016 9m read

This article will provide tips and tricks on customizing Ensemble business hosts with configurable settings.

Ensemble production Settings are configurable values that control the behavior of a production and its hosts.

The documentation for adding and removing Settings and specifying categories and controls for Settings is provided at the link:

http://docs.intersystems.com/latest/csp/docbook/DocBook.UI.Page.cls?

6
4 4968
Question Scott Roth · Jun 9, 2017

I have a case where I am creating a PDF file from an Encoded String, and I need to transfer this file over to another server. I was wondering since this is PDF file if I could just invoke the FTP.OutboundAdapter within my Object script that is creating the PDF from the encoded string. Is this possible? Does anyone have an examples of using EnsLib.FTP.OutboundAdpater within their Object Script?

Thanks

Scott Roth

Integration - Interfaces

The Ohio State University Wexner Medical Center

5
0 688
Question William Proctor · May 2, 2019

Thanks for all replies in advance.  We have a security vulnerability that we have to get rid of.  We use Putty software to connect to cache as a terminal allowing several users to do maintenance work in cache.  this uses telnet Plain text.  I know that we can configure telnet to be encrypted using the super server service and I'm looking for software that can work like Putty as a terminal using encryption compatible with cache telnet encryption.

5
0 964
Question Larry Pinsky · Mar 22, 2017

We have many sFTP business operations that work successfully.  I just modified an existing one to point to a new IP and Port, as well as use new credentials (username and password only).  When I attempt to sFTP a file, I receive the following error.

ERROR <Ens>ErrFailureTimeout: FailureTimeout of 15 seconds exceeded in EnsLib.FTP.PassthroughOperation; status from last attempt was ERROR <Ens>ErrOutConnectFailed: SFTP Connect failed for sftp.pmpclearinghouse.net:22/OARRS PMP/SSL='!

5
0 2833
Question Token Ibragimov · Dec 10, 2018

Hello!

I'm trying to get files from FTP server.  Bellow my code:

Set sc=$$$OK
    set ftp = ##class(%Net.FtpSession).%New()
    set ftp.Timeout = 5
    set host="speedtest.tele2.net"
    set port = 21
    
    If 'ftp.Connect(host,"USER","USER",port) Write ftp.ReturnMessage,! Quit sc
    Write "Ftp server messsage:",!,ftp.ReturnMessage,!
Set stream=##class(%GlobalCharacterStream).%New()
If 'ftp.Binary() Write "Can not swap to binary mode",! Quit sc
Write "Mode now: ",ftp.Type,!
If 'ftp.Retrieve("512KB.zip",stream) Write "Failed to get file",! Quit sc
Write "Length of file received: ",stream.Size,!
If 'ftp.

5
0 1732
Question Tim Miller · Sep 5, 2019

So we are in the midst of setting up a bunch of sFTP operations where we will have Ensemble send files to our various customers.

My questions about the set up are these:

1) For a simple test, I set up an Operation using EnsLib.FTP.PassthroughOperation.  Is this the one I should be using?

2) if the receiving system has a username and password, then all I have to do is put that username and password into a Credential and assign that credential to my operation correct?

3) if the receiving system's directory is just the root directory, do I need to put anything in File Path?

5
1 2761
Question Scott Beeson · Feb 2, 2016

I'm designing a workflow for PHR via FTP.  What I've done is create a single FTP adapter to pick up files from multiple customers.  A router then accesses a lookup table and determines if a particular customer is allowed to send a particular message type to the state.  If not, the message doesn't go out.  It seems like everyone is against this approach (other than my CEO, thankfully), including Intersystems:

Our recommendation though is to create separate interfaces to retrieve PHR data from individual
participants. This configuration .
5
0 409
Question Yone Moreno · Jul 4, 2024

Hello,

First of all thanks for your time reading this question, and thank you for your help.

🎯 We would need to create an Ensemble HealthShare Operation to read files from a FTP / SFTP server.

We have coded:

Class Operaciones.FTP.ConsultaPDFv01r001 Extends Ens.BusinessOperation [ ProcedureBlock ]
{

Parameter ADAPTER = "EnsLib.FTP.InboundAdapter";

Method ConsultarDocumentoPDF(pRequest As Mensajes.Request.ConsultaPDFRequestv01r00, Output pResponse As Mensajes.Response.RecuperarDocumentoPDFv01r00) As %Library.Status
{
	set ftp = ##class(%Net.FtpSession).%New()
	
	set isConnected =  ftp.
5
0 250
Article Katherine Reid · Apr 24, 2019 5m read

The %Net.SSH.Session class lets you connect to servers using SSH. It's most commonly used with SFTP, especially in the FTP inbound and outbound adaptors.

In this article, I'm going to give a quick example of how to connect to an SSH server using the class, describe your options for authenticating, and how to debug when things go wrong.

Here's an example of making the connection:

Set SSH = ##class(%Net.SSH.Session).%New()
Set return=SSH.Connect("ftp.intersystems.com")​

This creates a new connection, and then connects to the ftp.intersystems.com SFTP server on the default port.

4
2 6852
Question Kurro Lopez · Jan 4, 2017

Hi all,

I've a problem with EnsLib.FTP.OutboundAdapter

I've configured this adapter using a SFTP connection, it has been working the first time but now its raising the following error message:

ERROR <Ens>ErrFTPPutFailed: FTP: error al colocar archivo '1600000107279008930.pdf' (mensaje='Error in SFTP Put('C:\stream\QhFaDm4L1Jrgbg.stream','mypath/1600000107279008930.pdf') ERROR #7500: Error SSH '-2146430933': SSH Error [8010102B]: Unable to send FXP_OPEN* [8010102b] at SFTP.cpp:539,0',código=0)

This is part of my code:

    try {
        set name = pRequest.FileName
        set .
4
0 3167
Question Stuart Byrne · Jun 23, 2020

Dear Community,

I need to collect a file from an FTP server over FTPS.

I have the :

  • credentials saved correctly
  • correct host and port informatoin
  • correct filepath I am trying to collect from
  • I have setup the SSL configuration in  System > Security Management > SSL/TLS Configurations and this tests sucessfully

When I run the business service to connect it connects, but soon after connecting it fails to open the directory:


Type Time Text  ID
Error 2020-06-23 14:42:06.542 ERROR <Ens>ErrFTPListFailed: FTP: Failed List for *.
4
0 531
Question Kurro Lopez · Oct 30, 2018

Hi all,

I have a FTP.Inbounding service that read a file and move it to a other folder when it is processed. The problem is that is not working fine in SFTP server.

The code is coppied from How to - Customize Ensemble Settings article.

// begin customization code
// get the Filename, attach the time stamp to it and move the file into the Archive directory
// the Rename method below is using RNFR and RNTO FTP commands (RFC 959), effectively moving the file into the new directory
Set tSource=pInput.Attributes("Filename")
Set tArchive=..Adapter.CreateTimestamp(tSource,"%f_%Q")
set fullPath 
4
0 2007
Question Jimmy Christian · Dec 18, 2019

Hello community,

I am receiving a HL7 message over TCP connection.

I have to set up  a process/operation to produce a daily file with this HL7 messages to be created in a directory using EnsLib.File.OutboundAdapter
and EnsLib.HL7.Operation.FileOperation. The file needs to have a header line added each time it is created and a footer .I did not find any standard class file under File Adapter which will create header/footer. 

Any suggestion will be greatly appreciated.

Thanks,

Jimmy Christian

4
0 966
Question Kurro Lopez · Sep 4, 2019

Hello everyone,

We have a process that is listening to an FTP service to collect some CSV files and process them. The process works correctly and when it ends it clears the directory waiting for it to enter some other file.

We have been receiving the following error message for a long time:

ERROR <Ens>ErrGeneral: Error in SFTP Dir() ERROR #7500: Error DirEnum SSH '-2146430967': 'SSH Error [80101009]: Would block waiting for status message [80101009] at SFTP.cpp:150,0

This happens when there are no files to process and appears from time to time, maybe every 20 minutes.

4
0 1034
Question barry dellinger · Nov 8, 2017

I am using Cache FTP classes to download from a FTP site files, that include zip files.

I can retrieve the whole file into a stream, but it contains a lot garbage.

Sample:

PKvªZK!—XÃ×$¯²4rNDDF Plus DB/Counseling Messages/CMM 1.0/RCMMD0_DESCNUnNUCX4NDDF Plus DB/Counseling Messages/CMM 1.0/RCMMD0_DESC´½[“ÛH’.ø¾fûð²ê*›¬ï—Q[›©n]²î®Ò–ª§Ï>‚$Hbؑ)ÊâÇ÷Ï=¸P™9gmlª•„‡.~ý|4Íñ)>$Uôîòäú6K“2Jó(ù¼MªŠþ2»¢J*ócåÅ%ºÄIt*JúO²K·iž˜Ë1Σ´ŠÊd[œNI¾Kvÿ÷ÿ5&faìÛ]|Nñçh_”Ñö˜f»2ÉMg4A´KiÜ%ÙE›+Qo/Ei~-d0VQl˜s ;­¢š¦)£ñ$º–˜lj>]xL|‰Ê¢8E—ätNÊøR—‰‰ŸxdI¿V4iz8^^Dþ3óþ±Hwî©«h[ä—8ÍÓüUñ)1ô’.&ùå›ê[¥.

4
0 1649
Question Gevorg Arutiunian · Apr 22, 2020

Hi community,

I am now working with an ftp adapter. I have no problem connecting to the FTP server, but there are problems with interacting with files. Has anyone had any experience with an FTP adapter, such as getting/modifying/deleting files?

4
0 709
Question Kurro Lopez · Aug 29, 2018

Hi community,

I've created a BS that uses FTP InboundAdapter. It works, read the file and process it.

The problem is when there not any file in the FTP folder, it raises the following error:

 ERROR <Ens>ErrFTPListFailed: FTP: error en List para *.csv (mensaje='No-transfer-time exceeded. Closing control connection.',código=421)

I think it is something about the configuration, but I don't find what is the problem.

Any idea?

Best regards,

Francisco Lopez

4
0 866
Question Jordan Everett · Aug 18, 2023

Hello!

I'm currently trying to setup a SFTP Ensemble production to handle all of my SFTP transactions. It's been going well, but I'm currently running into an issue where it is saying it is unable to exchange encryption keys. Error Below:

Unable to exchange encryption keys [80101005] at Session.cpp:238,0' matched ReplyCodeAction 1 : 'E=R' resulting in Action code R

Any advice on getting around this would be appreciated.

3
0 584
Question Kurro Lopez · Sep 5, 2025

Hello community.

I have a request from a client who wants to do the following.
Currently, they have a data upload process via FTP in which they have implemented a RecordMap to store the information of the CSV files that are uploaded to the FTP directory.
Now they want to have another directory so that it is ONLY executed through an external instruction, not when the file is uploaded to the directory.

Is it possible to create a process that reads the FTP directory on demand? That is, ONLY executes the EnsLib.FTP.InboundAdapter service when we tell it to.

3
0 131