SFTP/FTPS LogicApps internal connector contract/behavior need to be reviewed
During our project development stage, we have realized that the LogicApps basic FTP, SFTP connectors doesn't behave in accordance with the FTP protocol itself.
Normally the standard FTP status codes 2xx etc would determine the status and completion or failure of the FTP commands like GET and PUT etc.
Here, though the FTP server sends back 2xx status code, the LogicApp connector does additional checks like MDTM, SIZE and few other optional commands afterwards. These commands are not always supported or allowed by all FTP servers and results in LogicApps connector error even though the actual file transfer operation is completed successfully.
When the FTP server has a process to sweep/move files immediately after the file transfer is completed, the connector behavior makes the situation even worse as the LogicApps connector tries to do more operations on a file which doesn't exist in FTP server anymore.
Finally we ended up writing custom code instead of using LogicApps out of the box features just because of this reason. Custom code will work, however writing such custom code for a basic connector defeats the whole purpose of using easy to use/readily available LogicApps features/operations itself. Also custom codes makes the product support and version upgrades etc harder to do manage.
We have escalated this Microsoft product team and we sincerely hope that Microsoft would fix this soon.