Hello Michael,

I'll post this on Li's original post as well, but if this is on Windows I suspect this is an issue with using the default SYSTEM account. See the following doc:

Installing InterSystems IRIS on Microsoft Windows > Windows User Accounts

"When installing InterSystems IRIS, you must choose the Windows user account to run the InterSystems service. There are two options:

The default SYSTEM account (Windows Local System account). This is used in Minimal security installations.

A defined Windows user account.

Running the Windows InterSystems service under the default SYSTEM account is appropriate for many installations, but in some cases can cause issues relating to file permissions and network security access. If you anticipate potential problems in these areas for an InterSystems IRIS instance, for example due to your network configuration or security arrangements, specify an account for the Windows InterSystems service that has the needed privileges and/or access, such as a domain administrator account.

For instructions on how to change the service account after installation, see the Managing Windows User Access to the InterSystems IRIS Instance section."

Changing the InterSystems Service Account

<install-dir>\bin\IRISinstall.exe setserviceusername <instance-name> <username> <password>

Hello Rob,

Which part of this are you having trouble with? If the files are local you can set up a file service and point it to your SFTP operations. There are built-in HL7 classes that you can use for this (in HealthShare Unified Care Record, Health Connect, and IRIS for Health).

For picking files up hourly, here are some possibilities. 

https://docs.intersystems.com/irislatest/csp/docbook/Doc.View.cls?KEY=ECONFIG_reusable#ECONFIG_settings_sched_strings_limits

"You can configure your business service to use an inbound adapter with the implemented OnTask() method where you call the business service. InterSystems IRIS provides classes for many types of inbound adapters. See the Ens.InboundAdapterOpens in a new window entry in the Class Reference and the books in the Application Development: Using Adapters and Gateways in Productions set for details.

If you do not want to use an adapter, you can call the business service programmatically and schedule it to run using the System Operations > Task Manager page in the Management Portal. This gives you finer control in situations such as the system being down at 1:00 a.m.

The recommended approach is to configure the business service with Pool Size = 0 and then use the Task Manager to launch a task that calls CreateBusinessService() on it and invokes ProcessInput() on the resulting service instance object. The advantage of calling a business service this way is that you call it at the time you want and it runs only once. If InterSystems IRIS happens to be down at that time, your task can register an error."

Nigel,

Julian is correct about freeze and thaw. Here is another great article that I would suggest as a reference covering the topic of external backups:

https://community.intersystems.com/post/intersystems-data-platforms-and-performance-%E2%80%93-vm-backups-and-cach%C3%A9-freezethaw-scripts

edit: External Backup docs are linked here. Using external backup is a best practice.

To elaborate a bit more on this and add to the other comments - when you restarted Caché the contents of cachetemp are cleared out, so you won't be able to find out what was in there anymore. It would have been good to investigate prior to restarting, but now there's no direct record of what was in the database, unless you can determine indirectly what was happening on the DR to cause this.

Though the database is empty on startup, the database size on the OS level won't have changed. Cachetemp doesn't automatically truncate because once it expands to a certain size, it doesn't know if it will need to expand to that size again. To enforce what you think the appropriate size for cachetemp would be based on your environment, as Dmitry says, you can delete it to have it be recreated and reexpanded as necessary.

There is also a cpf parameter that limits cachetemp size at startup, MaxCacheTempSizeAtStart:

https://docs.intersystems.com/latest/csp/docbook/DocBook.UI.Page.cls?KEY=RCPF_MaxCacheTempSizeAtStart

Hello Mike,

I don't have a sample for scripting it, but if you haven't seen it already, the IRIS server migration guide contains a list of items and methods for exporting them. I think it's a good reference for keeping in mind the things you might want to bring over.

https://docs.intersystems.com/irislatest/csp/docbook/DocBook.UI.Page.cls?KEY=AMIG

Also, I might agree with Armin that doing a multi-stage upgrade could be easier - perhaps you've already identified a reason why it won't work for you though.

Hello Dustin,

You could try SFTP debugging in terminal (I also linked this in your other post):

https://community.intersystems.com/post/using-and-debugging-netsshsession-ssh-connections

I kind of suspect this may be a permissions issue on the target system; since you're placing the file, it shouldn't need to exist before it gets "Put". It is a bit weird that the file extension is written twice but I don't think that is a problem; can you see anywhere in your configuration (file path / name) that may be triggering that?

Hello Dustin,

There are a few things you can try to find out more about this.

1. Making an SFTP connection in terminal so you add additional debugging - https://community.intersystems.com/post/using-and-debugging-netsshsession-ssh-connections

2. Trying a different SFTP client - this will help identify if there's a problem connecting between the servers (network / firewall change, for example). If no SFTP client works, then you likely want to involve your network team / the downstream's network team (or potentially security team, different orgs might label the relevant party differently).

3. If the SFTP connection was working earlier, but nothing was changed in Ensemble, then it seems pretty apparent that something changed outside of Ensemble. You could see when the problem started and ask around internally / externally to see what might have changed.

Hello Nikhil,

What problem are you trying to solve or what exactly are you trying to do? See the below docs:

"The maximum length of a subscript is 511 encoded bytes (the corresponding number of characters depends on the characters in the subscript and the current locale)"

https://docs.intersystems.com/latest/csp/docbook/DocBook.UI.Page.cls?KEY=GCOS_variables#GCOS_variables_subscripts

Maximum Length of a Global Reference

You can use $length to get the length of a string, but depending on what you want to do, that may determine how you can get the value of the subscript.

https://docs.intersystems.com/latest/csp/docbook/DocBook.UI.Page.cls?KEY=RSQL_d_length

Jen,

Perhaps more details would be helpful, and you may want to reach out to the WRC or your InterSystems rep to discuss. My thought is that this might be a matter of setting up the server-side to require TLS (as covered by the documentation linked in the article).

"System-wide Security Parameters page (System Administration > Security > System Security > System-wide Security Parameters) > Superserver SSL/TLS Support"

I was asking if it was a BPL or a router, mainly. Looks like a BPL. I think it would definitely take some looking at the code to figure out where the connection's coming from. I think if you looked at the class in Studio you could probably try to find in files to see where the reference is, might be easier than looking through the BPL in the portal.