go to post Tey Kitthajaroenchai · Jun 22, 2020 Received reply from WRC - In the OnProcessInput method, you can extract the FileLocation from the FTP.Inbound Adapter by using <inputstream>.Attributes("FTPDir").
go to post Tey Kitthajaroenchai · Oct 14, 2019 Worked with the WRC and we identified the following configurations/changes were required to resolve this issue: Specify the SSLConfig setting in Ensemble Had to include a * in the setting for legacy FTPS (otherwise it would not connect at all) Ensemble does not support session resumption (if required by the vendor hosting the server). Reached out to vendor for them to disable it. Additionally there were two FTP commands that needed to be sent PBSZ 0 (Protection Buffer Size) and PROT P (Protection Data Channel). These need to be run after the connection is made but before the write/save of the file on the server. do ..Adapter.Connect() do ..Adapter.FTP.sendCommand("PBSZ 0") do ..Adapter.FTP.sendCommand("PROT P") Thanks
go to post Tey Kitthajaroenchai · Sep 18, 2019 Hey Eduard,Thanks so much for the quick response! #1. It looks like creating a new App.FTP.InboundAdapter class extending the EnsLib version and removing the adapter settings in there worked. I also removed those property/SETTINGS from my App.FTP.InboundService Class as mentioned.#2. $classname(..Adapter.FTP) was returning the FTPInboundAdapter but using ..Adapter.FTP.%sftpSession.MkDir() did work.Thanks!
go to post Tey Kitthajaroenchai · Sep 16, 2019 Thanks for the great article. I have a few questions/issues and would appreciate some help.1. I'm trying to remove the DeleteFromServer and ArchivePath properties but they still appear in the Production even though I've added the - to the Parameter SETTINGS. Parameter SETTINGS = "-DeleteFromServer, -ArchivePath, RemoteArchive, TargetConfigNames";2. For the Remote Archive, I can get the rename to work but that assumes the archive path exists. I wanted to do some checking to see if the path exists (if not create) but can't seem to get the method calls right. Am I reading the documentation incorrectly since I thought doing ..Adapter.FTP then references the FTP session object (%Net.FtpSession, or for SFTP %Net.SSH.SFTP) then method MakeDirectory or MkDir would be accessible. So my call looks like ..Adapter.FTP.MakeDirectory(.RemoteArchivePath) but it errors with METHOD DOES NOT EXIST.
go to post Tey Kitthajaroenchai · Sep 3, 2019 Thanks for the explanation Eduard. This is helpful as I found the documentation a bit sparse.
go to post Tey Kitthajaroenchai · Aug 30, 2019 Yes, it works now with the updates mentioned previously. Although I must admit I'm not entirely sure what all the parameters for the methods mean:(Output pCaption As %String, Output pTopResults, Output pResults, ByRef pParms As %String, pSearchKey As %String = "")
go to post Tey Kitthajaroenchai · Aug 30, 2019 Hi Eduard,Thanks for the response, yes you mentioned this in a similar thread: https://community.intersystems.com/post/set-value-propertys-displaylist-valuelist but I could not get it to work until now. I've modified my code as follows:This is the new class: Class JMH.EnsSearchUtils Extends Ens.ContextSearch { ClassMethod GetKeyLookup(Output pCaption As %String, Output pTopResults, Output pResults, ByRef pParms As %String, pSearchKey As %String = "") As %Status { set tStatus = $$$OK kill pResults, pTopResults set pCaption = "" set tStatement = ##class(%SQL.Statement).%New() set strSQL="SELECT DataValue FROM Ens_Util.LookupTable WHERE TableName = 'KeyLUT' order by DataValue" set tStatus = tStatement.%Prepare(strSQL) if tStatus '= 1 Quit $$$ERROR($$$GeneralError, "No SQL Tables found") set rset = tStatement.%Execute() while rset.%Next(.tStatus) { set pResults($i(pResults)) = rset.%Get("DataValue") } quit tStatus } } In the Business Operation. 1. Still declare the property like so 'Property KeyLookup; ' 2. In the Parameter SETTINGS: "KeyLookup:Additional:selector?context={JMH.EnsSearchUtils/GetKeyLookup}"; To break this down: KeyLookup is the property name Additional is the Additional Settings Category area of the Business Operation where this property will be displayed in the Portal The rest is used to call the ContextSearch class and method to return the result values for the property.