To exchange (in/out) ObjectScript collections (arrays/lists) and streams to/from Java using the new $system.external interface you use the "magical undocumented" %getall() and %setall() methods.

You can get some sample code of using it in the Open Exchange project samples-dynamicgateway-java.

For example for streams you can try something like:

        w !,"TRY #"_$I(TEST)
        #Dim argc As %Stream.GlobalCharacter = ##Class(%Stream.GlobalCharacter).%New()
        do argc.Write($C(40))
        do argc.Write($C(41))
		Set bytesArrayIn=javaGate.new("byte["_argc.Size_"]")
		Do bytesArrayIn.%setall(argc)
        do test.testByteArr(bytesArrayIn)

To my knowledge there is no Action to log an entry in the Interoperability Event Log, but it can be achieved using a custom function.

What you can do is implementing a function as documented in Defining Custom Utility Functions. 

Something like:

Class MyPackage.CustomFunctions Extends Ens.Rule.FunctionSet
{
/// Log an INFO type message in the Iteroperability Event Log
ClassMethod LogInfo(Message as %String) As %String
{
    $$$LOGINFO(Message)
    Quit Message
}
}

Then in your Rule add a Debug action that call/use the function:

Then, in the Business Process where the Rule is used, add the "d" flag to the RuleLogging settings:

This
way you will have your message logged in the event log AND in the rule log.

As @Chandrasekar Angaiah pointed out you need to create a new class that extends EnsLib.SQL.InboundAdapter and then you use the new class instead of EnsLib.SQL.InboundAdapter.

Within that new class override OnInit(), something like:

Class My.SQL.InboundAdapter Extends EnsLib.SQL.InboundAdapter
{
Method OnInit() As %Status
{
    Set sc=##super()
    If $$$ISOK(sc) Set ..%Row.MaxRowsToGet=-1
    Quit sc
}
}

Ciao Fabrizio,

access to the HealthShare Management portal section (also known as HS Navigation app) can be granted using the %HSAdmin_NavAppConfigurationManagement resource or the %HS_NavigationApp role.

Once your user has that role or resource it can access the HS Navigation app page.

Within that page there are many"functionality" and they have their own permissions/resources associated that the user must have to perform the functionality. So, with only access to HS Navigation app (and no other role/resource) you see an empty page.

It's not clear what functionality you need/want to enable and if you need read/write permissions.

Long story short, I suggest to create a new role, during creation copy from %HS_Administrator role and then remove resources you don't need (there maybe many you don't need/want) and the modify R/W permissions for the resource.

Remember, what you write in/from that method is javascript.

I think the simplest solution for debugging is using javascript alert(), another option can be injecting your debug info into page html/dom using javascript (this depend on page structure).
For simple alert() you can:

Set sc = sftp.Get(remoteFile, localFile, "0666")
If $$$ISERR(sc) {
    &js< alert(#(..QuoteJS("Error downloading file: "_fileName_" -> "_$system.Status.GetErrorText(sc)))#);>
} else {
   &js< alert(#(..QuoteJS("File Successfully Downloaded"_fileName))#);>
}

Hi @Andreas Schneider,

you can create a SQLGateway connection using ObjectScript code, if you create it using SQL then, as you discovered,  you have an issue with the password because using ObjectScript the password is "processed" before saving it.

If you want/need a pure SQL solution without (directly) coding/using ObjectScript you can define and use a Stored Procedure (that use ObjectScript 😉) to change the password, something like:

CREATE PROCEDURE Community_SqlGw.SetPassword(ConnectionName VARCHAR(50), NewPassword VARCHAR(50))
RETURNS BIT
LANGUAGE OBJECTSCRIPT
{
 New gw,sc
 Set gw=##class(%SQLConnection).NameIndexOpen(ConnectionName)
 If gw="" Quit 0
 Set gw.pwd=NewPassword
 Set sc=gw.%Save()
 Quit (sc=1)
}

Then, after creating the GW Connection, change the password:

select Community_SqlGw.SetPassword('MyGwConnectionName','MyGwPassword') 

Is return supposed to return a boolean (0/1) or the non empty value of check1?

I'm asking because you write "will return false even for non-empty strings (due to conversion to integers for string prefixes)".

In general to check for not empty string (check1'="") is used.

If you need to return a boolean depending of empty/not empty, then you can use:

return (check1'="") 

To debug your issue I suggest to enable SOAP logging setting this two global node:

Set ^ISCSOAP("LogFile")="/path/to/yourlog/filename.log"
Set ^ISCSOAP("Log")="ios"

Values for ^ISCSOAP("Log") are:
"i" — Log inbound messages
"o" — Log outbound messages
"s" — Log security information.

Then call your SOAP service and check the log file for hints on the actual issue.

When finished debugging remember to turn it off with Set ^ISCSOAP("Log")="" or Kill ^ISCSOAP("Log")

In error handling code, when using SOAP and a <ZSOAP> error in triggered, the actual error status is contained in %objlasterror variable, so:

Set displayString = ex.DisplayString()
If displayString [ "<ZSOAP>" {
    Set displayString=$system.Status.GetErrorText(%objlasterror)
}

It's all documented, I cannot post documentation links because the documentation site it's not working for me at the moment.

The time Veeam create a snapshot should be measured in seconds, not minutes!

If your server does not use/need any application guest processing (Oracle etc.), then in Veeam you can be disabled in "Application-Aware Processing Options" in the Backup Job configuration for your Suse IRIS server , "Disable application processing":

As @Timo Lindenschmid pointed out, you may consider backing up the secondary server.

In case you want to backup the primary, make sure to set mirror QoS appropriately.