Hi Dmitrii,

The automated export of changed files can be handled by %Studio.SourceControl.File, this would export any changed file on save and import the latest from disk on checkout.

To automate import on a target system you can create a scheduled task that executes $system.OBJ.LoadDir regularly, this also per default compiles on load.

Hi, without knowing a bit more about what you are trying to achieve its difficult to advise.

To export and reinstate a data structure including content you would need to export the storage class definition.

After that you then can export the Global data and index storage defined by the storage class.
To export you can use $system.OBJ.Export from a terminal/iris session. Then reimport using $system.OBJ.Load

Hi Marykutty,

depending on your use case. Usually, I would suggest going with Primary and BACKUP mirror plus arbiter for the optimal HA resilience. A webgateway on a dedicated IIS can serve both your application and the SMP. I usually would though consider having 2 webservers running so your single webserver is not the single point of failure.
Also just to be aware webgateway is mirror aware and does not need a VIP to automatic redirect connections to the correct mirror. (refer documentation on mirroring )

Completely silent install an application can only happen during IRIS upgrade/install or by being creative with scheduled tasks.

First step would be to automate installation of you application using a %Installer script refer to Documentation

Fully automating it could involve a scheduled task checking a folder on the filesystem for the installer manifest and importing it.

The better approach here, if you don't want to use SystemDefaults.

Is to add a global mapping for your global config variable ^ehrIP to the %ALL namespace pointing it to a config database. This will point the ^ehrIP global in each namespace to the same storage location.

Then you can access this global via ^ehrIP as usual. I would not use % globals as they are saved in the %SYS namespace and application code/data should not be living in the %SYS namespace.

couple of options:

1. $order the global checking the list content as others have already mentioned

2. if there is a SQLIndex defined for the field. You can check the index location directly via objectscript, this would save you ordering through possibly billions of lines of data
3. define the SQL column to for Reference to use columnar storage, also single global retrieve to get a $list of rowids.

ahh now your question is getting a bit clearer.

If you look for a better management for your API endpoints might be worth looking into ISC API manager: InterSystems API Manager | InterSystems Components and Tools

Else you can use delegated auth to validate incoming IP addresses, also you can make use of Apache's virtual server config to server different content on different ports using Apache access controls for additional filtering and redirecting, which is essentially what you suggest here. 

Hi Anna,

this would iterate through a file line by line checking if the line contains a keyword and then outputting the line. also it will continue outputting until another condition resets the found variable to 0.

    Set stream=##class(%FileCharacterStream).%New()
    Set stream.Filename="c:\myfile.txt"
    set keyword="MyTestWord"
    set found=0
    While 'stream.AtEnd {
        Set line=stream.ReadLine()
        if (line [ keyword) {
            // the line contains the keyword out put line
            w !,line
            set found=1
            continue
        }
        if (found=1) {
            // keyword was previously found so continue outputting line
            w !,line
        }
    }

Hi,

This sounds like a misconfiguration on the webgateway.

PWG get configured automatically by IRIS for all web applications. Not sure if this happens for the external webgateway.

There also could be an issue with webgateway integration into external apache.

Also worth to check audit database in IRIS. To see if any errors get logged.

Hope this helps.

Best Regards

Timo

Hi,

using zf will always be difficult as IRIS is not running a root. You will need to configure the OS to allow privilege escalation for the irisusr, which open quite a big door.

Or allow irisusr to start/stop httpd, which might be the safer way.

The other options is, if this is only about the application via webgateway contacting the correct primary.

1. set web gateways to be mirror aware

2. configure a VIP address in the mirror and point the cspgateways to this ip address.

So just looking at your SQL,. You got 2 parameters in your where clause.

Select IDName from MSDS_Common.ComponentSub

 Where 

    (is null or %UPPER(Component)[%UPPER(?))

    and Active=1

If the first dropdown is null this will always be true if Active is 1

Try changing the where clause to

 Where 

    (is null AND ( %UPPER(Component)[%UPPER(?))

    and Active=1

This will check if first parameter is empty and if subcomponent contains the second parameter and if its active.