Skip to main content


class EnsLib.FTP.InboundAdapter extends EnsLib.File.InboundAdapter, EnsLib.FTP.Common

Adapter that receives files via the FTP protocol.

Property Inventory

Method Inventory


parameter DOMAIN = Ensemble;
Use our own domain for localization
parameter SETTINGS = RegistryID:Basic:selector?context={Ens.ServiceRegistry.External.ContextSearch/Services?Protocols_1=FTP},FilePath:Basic,DeleteFromServer:Basic,CheckModifiedBeforeDelete:Basic,FileSpecDelimiter:Basic,UseFileStream,-WorkPath,ServerListStyle,-SFTPFileAccessMode,-SFTPSetFileAccessModeByClient;
Inherited description: List of properties can be set as settings in the configuration file format is a comma separated list of property names


property %completeFileSpec as %String [ Transient ];
When multiple wildcards in the File Specification this contains the original File Specification setting value
Property methods: %completeFileSpecDisplayToLogical(), %completeFileSpecGet(), %completeFileSpecIsValid(), %completeFileSpecLogicalToDisplay(), %completeFileSpecLogicalToOdbc(), %completeFileSpecNormalize(), %completeFileSpecSet()
property %currentFileSpec as %String [ Transient ];
When multiple wildcards in the File Specification this is the current file specification being used
Property methods: %currentFileSpecDisplayToLogical(), %currentFileSpecGet(), %currentFileSpecIsValid(), %currentFileSpecLogicalToDisplay(), %currentFileSpecLogicalToOdbc(), %currentFileSpecNormalize(), %currentFileSpecSet()
property %fileSpecHasMulti as %Boolean [ InitialExpression = 0 , Transient ];
Internal flag to indicate multiple wild cards in FileSpec
Property methods: %fileSpecHasMultiDisplayToLogical(), %fileSpecHasMultiGet(), %fileSpecHasMultiIsValid(), %fileSpecHasMultiLogicalToDisplay(), %fileSpecHasMultiNormalize(), %fileSpecHasMultiSet()
property %multiFileSpec as %String [ MultiDimensional ];
Property methods: %multiFileSpecDisplayToLogical(), %multiFileSpecGet(), %multiFileSpecIsValid(), %multiFileSpecLogicalToDisplay(), %multiFileSpecLogicalToOdbc(), %multiFileSpecNormalize(), %multiFileSpecSet()
property AppendTimestamp as %String [ InitialExpression = 1 ];
Append a timestamp to Archive filenames in order to prevent possible name collisions on repeated processing of the same filename.

If this value is empty or 0, no timestamp will be appended. If it is 1, then the standard timestamped filename specification template '%f_%Q' will be used.

Any other value will be used directly as a timestamped filename specification template.

Property methods: AppendTimestampDisplayToLogical(), AppendTimestampGet(), AppendTimestampIsValid(), AppendTimestampLogicalToDisplay(), AppendTimestampLogicalToOdbc(), AppendTimestampNormalize(), AppendTimestampSet()
property ArchivePath as %String (MAXLEN = 1000);
Path on the InterSystems IRIS server to save a copy of each file received from the FTP server. If not given, the local copy of the file will be stored in a temporary location and then deleted after processing is completed. Note that the AppendTimestamp option must be used to avoid name collisions in the archive directory if the same filename will be retrieved repeatedly.
Property methods: ArchivePathDisplayToLogical(), ArchivePathGet(), ArchivePathIsValid(), ArchivePathLogicalToDisplay(), ArchivePathLogicalToOdbc(), ArchivePathNormalize()
property Charset as %String [ InitialExpression = "Binary" ];
FTP - Use the named Character encoding to translate characters from the file.
A * prepended to any of the charset names will cause a binary FTP transfer with the resulting data then translated using the specified encoding.
Note that Binary should be chosen for binary files and other cases when special characters such as line terminators must be preserved.
Other settings may be useful when transferring text documents via FTP.

Choices include:
Binary - binary transfer
Ascii - Ascii mode FTP transfer but no character encoding translation
Native - the default character encoding of the installed locale of the InterSystems IRIS server
latin1 - the ISO Latin1 8-bit encoding
ISO-8859-1 - the ISO Latin1 8-bit encoding
UTF-8 - the Unicode 8-bit encoding
Unicode - the Unicode 16-bit encoding (Little-Endian)
UnicodeBig - the Unicode 16-bit encoding (Big-Endian)
@<ttable> - <ttable> means a raw InterSystems character translation table name. A prefix of '@' means to use the named table.

Property methods: CharsetDisplayToLogical(), CharsetGet(), CharsetIsValid(), CharsetLogicalToDisplay(), CharsetLogicalToOdbc(), CharsetNormalize()
property CheckModifiedBeforeDelete as %String (DISPLAYLIST = ",Never,Deferred,Always", VALUELIST = ",0,1,2") [ InitialExpression = 1 ];
When DeleteFromServer is enabled, this optional flag can be used to influence checking whether a file has been modified since initial listing for download and then processing This Switch is applied when both of the following conditions are true:
  • Setting "DeleteFromServer" is enabled
  • Setting ConfirmComplete is by "Size"
The Size check captures the latest current modified datetime during the download of a file. Note: The precision on a file modified time is limited to minutes. This is used in combination with the Size to decern whether a file has changed on the FTP server since download. ie: Should be deleted, and should be processed as new content. In the case of large files that are syncronously processed (ArchivePath is empty) significant time may elapse between the download and attempt to delete the file. Additionally the delete from FTP server could be deferred due to network inturuption. This feature may meet sufficiently, the data file transfer requirements of some integrations. Note: If there are limitations in the FTP Server view, where modified date is unreliable, then this option should not be enabled, to avoid reprocessing content. Meaning of setting options:
  • No - Never Check. Just attempt to delete.
  • Deferred - If the delete gets deferred then check the modified value (Default).
  • Yes - Always check if modified before an attempt to delete.
Property methods: CheckModifiedBeforeDeleteDisplayToLogical(), CheckModifiedBeforeDeleteGet(), CheckModifiedBeforeDeleteIsValid(), CheckModifiedBeforeDeleteLogicalToDisplay(), CheckModifiedBeforeDeleteLogicalToOdbc(), CheckModifiedBeforeDeleteNormalize(), CheckModifiedBeforeDeleteSet()
property ConfirmComplete as %Integer (DISPLAYLIST = ",None,Size,Rename,Size & Rename", VALUELIST = ",0,1,2,3") [ InitialExpression = "1" ];
Confirm complete receipt of file if possible, in case it is not completely available on the server at the time downloading begins.

'None' offers the fastest performance for small files because no extra FTP directory listing needs to be retrieved for each file download attempt

'Size' means keep reading more data for a file until the file size reported by the server directory listing does not increase
This option is only reliable for Charset='binary' transfers (In text mode the file position used for downloading may get corrupted by the insertion or removal of Linefeed characters)
This option alone may not be sufficient if the FTP server or source application is sluggish. If the server reports the same
size for the file 2 times in a row, 2 seconds apart, then InterSystems IRIS will consider the download complete. Therefore the 'Size & Rename' setting is preferable if the server supports 'Rename'.
This option relies on correct results from the Adapter.SizeExpression string set in the OnInit() method of the Business Service.

'Rename' means keep trying to read more data for a file until the server allows us to rename it
This option will only work if the FTP server grants Rename privilege to InterSystems IRIS for the download directory, using the Credentials
configured on this adapter, and if the file permissions on the file itself are set so that the FTP server has privilege to rename it.
If not then the Rename attempt will always fail and the InterSystems IRIS download will never complete

Property methods: ConfirmCompleteDisplayToLogical(), ConfirmCompleteGet(), ConfirmCompleteIsValid(), ConfirmCompleteLogicalToDisplay(), ConfirmCompleteNormalize(), ConfirmCompleteSet()
property DeleteFromServer as %Boolean [ InitialExpression = 1 ];
Specifies whether or not to delete files from the FTP server after successful processing
If not deleted, the adapter will ignore files already processed until something else removes them from the FTP server.
Property methods: DeleteFromServerDisplayToLogical(), DeleteFromServerGet(), DeleteFromServerIsValid(), DeleteFromServerLogicalToDisplay(), DeleteFromServerNormalize(), DeleteFromServerSet()
property FilePath as %String (MAXLEN = 1000) [ Required ];
Directory on the FTP server in which to effect FTP operations.
This setting cannot be blank if SubdirectoryLevels is greater than 0.
Property methods: FilePathDisplayToLogical(), FilePathGet(), FilePathIsValid(), FilePathLogicalToDisplay(), FilePathLogicalToOdbc(), FilePathNormalize()
property FileSpec as %String (MAXLEN = 2000);
Filename or wildcard file specification for file(s) to retrieve from the FTP server Multiple file specifications can be entered separated by a delimiter. It is necessary to enter the delimiter used in the File Specification Delimiter setting. Enter the FileSpec as one line. Maximum length is 2000 characters.
This setting must be given and not be blank.
Property methods: FileSpecDisplayToLogical(), FileSpecGet(), FileSpecIsValid(), FileSpecLogicalToDisplay(), FileSpecLogicalToOdbc(), FileSpecNormalize(), FileSpecSet()
property FileSpecDelimiter as %String;
If this is non empty then it will be used as the delimiter to split the File Specification setting into multiple filename/wild card searches.
Property methods: FileSpecDelimiterDisplayToLogical(), FileSpecDelimiterGet(), FileSpecDelimiterIsValid(), FileSpecDelimiterLogicalToDisplay(), FileSpecDelimiterLogicalToOdbc(), FileSpecDelimiterNormalize(), FileSpecDelimiterSet()
property FilenameExpression as %String;
Expression for extracting the filename portion of a line of the FTP directory listing (%line)
Property methods: FilenameExpressionDisplayToLogical(), FilenameExpressionGet(), FilenameExpressionIsValid(), FilenameExpressionLogicalToDisplay(), FilenameExpressionLogicalToOdbc(), FilenameExpressionNormalize(), FilenameExpressionSet()
property IsDirExpression as %String;
Expression for extracting the is-a-directory flag from the FTP directory listing (%line)
Property methods: IsDirExpressionDisplayToLogical(), IsDirExpressionGet(), IsDirExpressionIsValid(), IsDirExpressionLogicalToDisplay(), IsDirExpressionLogicalToOdbc(), IsDirExpressionNormalize(), IsDirExpressionSet()
property ServerListStyle as %String (VALUELIST = ",Unix,MSDOS,AS/400,VMS,VMSAllVersions,NetWare") [ InitialExpression = "Unix" ];
Type of listing format returned by the FTP server.

'VMSAllVersions' means on VMS FTP servers, retrieve all versions listed, not only the latest VMS version of the file
This value is not pertinent if the protocol is SFTP.

Property methods: ServerListStyleDisplayToLogical(), ServerListStyleGet(), ServerListStyleIsValid(), ServerListStyleLogicalToDisplay(), ServerListStyleLogicalToOdbc(), ServerListStyleNormalize(), ServerListStyleSet()
property SizeExpression as %String;
Expression for extracting the file size from the FTP directory listing (%line); if present used for detecting download complete status
Property methods: SizeExpressionDisplayToLogical(), SizeExpressionGet(), SizeExpressionIsValid(), SizeExpressionLogicalToDisplay(), SizeExpressionLogicalToOdbc(), SizeExpressionNormalize(), SizeExpressionSet()
property StayConnected as %Numeric (MINVAL = -1, VALUELIST = ",0,-1") [ InitialExpression = -1 ];
If zero, disconnect from the remote FTP server between attempts to retrieve a directory listing. A value of -1 means never disconnect.
Property methods: StayConnectedDisplayToLogical(), StayConnectedGet(), StayConnectedIsValid(), StayConnectedLogicalToDisplay(), StayConnectedNormalize(), StayConnectedSet()
property TimestampExpression as %String;
Expression for extracting the timestamp portion of a line of the FTP directory listing (%line)
Property methods: TimestampExpressionDisplayToLogical(), TimestampExpressionGet(), TimestampExpressionIsValid(), TimestampExpressionLogicalToDisplay(), TimestampExpressionLogicalToOdbc(), TimestampExpressionNormalize(), TimestampExpressionSet()
property UseFileStream as %Boolean [ InitialExpression = 0 ];
Should the adapter construct a FileStream or a GlobalStream for data received?
Note that regardless of this setting a FileStream will be used if ArchivePath or ArchiveIO is set.
Property methods: UseFileStreamDisplayToLogical(), UseFileStreamGet(), UseFileStreamIsValid(), UseFileStreamLogicalToDisplay(), UseFileStreamNormalize(), UseFileStreamSet()


classmethod TakeFromCol(s, col)
method delete(pFilename As %String, pFileDir As %String) as %Boolean
method isDeleteStillNeeded(pFilename As %String, pFileDir As %String, pModifiedTimeAtDownload As %String, checkLevel As %Integer, ByRef defer As %Boolean, retry=0) as %Boolean
Checks whether a file should still be deleted based on testing for changed modified datetime of file on FTP Server Recursive check to cater for disconnect via Retry parameter
method rename(pFilename As %String, pNewFilename As %String, pFileDir As %String) as %Boolean
method retrieveFile(pFilename As %String, pStream As %AbstractStream, pFileDir As %String, pRetry As %Boolean) as %Status
method testPaths(pOnInit As %Boolean = 1) as %Status

Inherited Members

Inherited Properties

Inherited Methods

FeedbackOpens in a new tab