Michael,

What's the use case? You might be able to design something with SQL triggers but that feels ripe for complications. You can find people discussing this kind of solution (using triggers) for other databases online, and from what I can tell people generally agree this is a messy option.

If the idea is that people are accidentally executing improper SQL commands, perhaps I would tackle this from a training perspective, or by restricting SQL commands to a more limited audience.

Hello Michael,

If the Ensemble log reports an arbiter loss of connection, Ensemble doesn't really have more logs that can explain why that happened. These messages are just reporting the underlying condition that Ensemble experiences.

Confirming the cause of connection losses is really more a matter of reviewing network/other logging in the environment.

Hello Herb,

Have you checked the connectivity since the error is a timeout?

Can you make an SFTP connection outside of IRIS using a third party application or the command line?

You can debug the SSH portion of the connection via:

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

Hope that helps.

On top of Robert's answer, I would add - why are you copying from another namespace at all? If you just need the standard interoperability mappings, those get generated from the "enable namespace for Interoperability productions" checkbox.

You can't run 2 productions (even if you assign 2 namespaces) from the same databases simultaneously, so I would probably avoid "copy from" in general, particularly because you are trying to use EnsLib code.

There are probably specific cases where you might want to copy a namespace from another one, but I'd be cautious and make sure that copying is what you actually want.

edit: I am unsure whether using "copy from" on HSSYS is a good idea. Personally, I haven't done that, but I would be concerned that you might have similar issues to copying from %SYS, as HSSYS is a shipped database.

Hello Michel,

Ens.Config.Item has a Category property. Is that what you are looking for?

sample:

TEST>s item=##class(Ens.Config.Item).%OpenId(244)                            

TEST>zw item
item=4@Ens.Config.Item  ; <OREF>
+----------------- general information ---------------
|      oref value: 4
|      class name: Ens.Config.Item
|           %%OID: $lb("244","Ens.Config.Item")
| reference count: 2
+----------------- attribute values ------------------
|       %Concurrency = 1  <Set>
|        AlertGroups = ""  <Get>
|           Category = "test.cat"
|          ClassName = "Ens.Enterprise.MsgBankOperation"  <Set>
|            Comment = ""
|  DisableErrorTraps = ""
|            Enabled = 0
|         Foreground = 0
|     LogTraceEvents = 0
|               Name = "Ens.Enterprise.MsgBankOperation"  <Get>
|           PoolSize = 1
|           Schedule = ""
+----------------- swizzled references ---------------
| i%ModifiedSettings = ""  <Set>
| r%ModifiedSettings = ""  <Set>
|       i%Production = "TESTPKG.FoundationProduction"
|       r%Production = ""
|         i%Settings = ""
|      i%Settings(1) = $lb($lb("IPAddress","Adapter","127.0.0.1"))
|      i%Settings(2) = $lb($lb("LocalInterface","Adapter",""))
|      i%Settings(3) = $lb($lb("Port","Adapter","9192"))
|      i%Settings(4) = $lb($lb("EnableArchiving","Host","1"))
|      i%Settings(5) = $lb($lb("StayConnected","Adapter","3"))
|         r%Settings = ""  <Set>
|  i%VirtualSettings = ""  <Set>
|  r%VirtualSettings = ""  <Set>
+--------------- calculated references ---------------
| CommentOrClassname   <Get>
|  InactivityTimeout   <Get,Set>
+-----------------------------------------------------

TEST>w item.Category
"test.cat"

Lionel,

Check out the following article:

https://community.intersystems.com/post/handling-date-and-time-operations-cach%C3%A9

You might want to try something like:

%SYS>s time=$PIECE($horolog,",",1)-1_","_$PIECE($horolog,",",2)

%SYS>zw time
time="66014,35176"

%SYS>w $zdatetime(time,3)
2021-09-27 09:46:16

When you just do $horolog-1, you're truncating the time off of $horolog. $PIECE lets you modify and combine the date/time segments of $horolog independently.

Hello,

Additional context on what exactly you need to do would probably be helpful.

If this is something critical, I would consider reaching out to the WRC for assistance.

Otherwise, the ^JRNRESTO documentation is where I'd start:

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

You can restore a backup and then choose what subset of journals to restore.

Hello Garin,

Differing free vs available memory is a natural occurrence for Linux. The buff/cache is what's being used by the OS for memory and can be relinquished to applications as necessary.

I would check underlying items like OS logs and whether the OS version is supported. error 22 is presumably error 22 invalid argument - not sure what exactly that indicates though.

Hi Niko,

I'm not sure I understand what you mean by "linking that query into a process", but you can run SQL from Object Script code using either dynamic or embedded SQL:

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

I hope that helps. If you are looking for other general guidance for this, feel free to reply.

Actually, reviewing more closely, it looks like your version string is for Unified Care Record / Patient Index. That has a different set of requirements than the basic IRIS migration. I'd recommend closely reviewing the HealthShare documentation - I'm not personally very familiar with the HealthShare side of things, but I'm fairly certain there is a version plateau for HealthShare to allow for the move to IRIS.

edit:

this doc page at least is relevant:

Unified Care Record Installation and Migration Guide > Preparing for an Upgrade Installation

https://docs.intersystems.com/hs20211/csp/docbook/DocBook.UI.Page.cls?KEY=HEINS_prep#HEINS_prep_considerations

"If you are upgrading from a Caché-based Unified Care Record or Information Exchange system earlier than version 2019.1, you must first upgrade to the plateau version 2019.1 before upgrading to this release."

Now that you mention it, I think you have not followed a supported migration path. You can find details in the IRIS migration guides available in the WRC distributions page's documents section, but the minimum version to migrate in-place from is 2016.2.x, and it can be used to go to IRIS 2019.1.1+ or 2020.1. It does not support migration directly to 2021.1.

Augusto,

Ens.Director definitely still exists in IRIS. That error means the "%Library.CacheStorage" class doesn't exist. I don't know why that class would be called, however, as it has been replaced by %Library.Persistent by comparing CE / IRIS docs.

Are you sure your in-place migration completed successfully? I assume Ens.Director should try to use the corresponding class in IRIS. I think this is a candidate for WRC investigation.

Sai,

By folder, do you mean moving a class to a different package? It's okay if the class name overlaps, because the package will still differentiate the "full name" of the class.

ex, the following can coexist. 

package1.class

package2.class

You could also use subpackages such as package1.subpackage.class.

Some of the built in class divisions might be helpful for you to compare with - for example, on IRIS for Health, the following packages exist:

EnsLib.HL7.Operation

EnsLib.HL7.Service

etc., for each type of business component.

I certainly agree that having Git / source control set up is a good practice. You may also find the built-in production deployment functionality useful:
https://docs.intersystems.com/irislatest/csp/docbook/DocBook.UI.Page.cls?KEY=EGDV_deploying