Article John Murray · Oct 9, 2025 2m read

In my previous article introducing gj :: configExplorer I flagged up how an apparent bug in the Windows elements of the Native API for Node.js means it's not currently available to run in VS Code on a Windows desktop. In a comment on that article I offered a workaround, but this requires a Docker-equipped Linux host you can SSH to.

If you don't have a suitable target it's now possible to leverage your local Windows Docker Desktop. Here's how:

  1. Open a new VS Code window.
1
0 39
Announcement Derek Gervais · Oct 9, 2025

Hey Community,

The InterSystems team put on our monthly Developer Meetup with a triumphant return to CIC's Venture Café, the crowd including both new and familiar faces. Despite the shakeup in both location and topic, we had a full house of folks ready to listen, learn, and have discussions about health tech innovation!

0
0 32
Question Touggourt · Oct 9, 2025

Hi Guys,

I've created Business service with MQTT Inbound Adapter and here is my settings, BTW I'm using an IP with port not sure if it must be a url?

and this is my class:

Class SX3.Production.MQTTService Extends Ens.BusinessService
{Parameter ADAPTER = "EnsLib.MQTT.Adapter.Inbound";Method OnProcessInput(pInput As %RegisteredObject, Output pOutput As %RegisteredObject) As %Status
{set tsc=$$$OK
   set ^messageContent = pInput.StringValue
   
   Quit tsc
}}
 

But I'm getting the below error, not sure what I'm doing wrong?

Thanks

1
0 34
Article Steve Lubars · Sep 22, 2025 10m read

Background

For a variety of reasons, users may wish to mount a persistent volume on two or more pods spanning multiple availability zones. One such use case is to make data stored outside of IRIS available to both mirror members in case of failover.

Unfortunately the built-in storage classes in most Kubernetes implementations (whether cloud or on-prem) do not provide this capability:

  • Does not support access mode "ReadWriteMany"
  • Does not support being mounted on more than one pod at a time
  • Does not support access across availability zones
2
3 149
Announcement Anastasia Dyubaylo · Oct 9, 2025

Hello Community,

Alongside the InterSystems Open Exchange application gallery, the InterSystems Community GitHub hosts examples, libraries, and demos built with InterSystems technologies.

🔹 InterSystems Community GitHub (github.com/intersystems-community)

It includes:

  • Example applications and templates
  • Libraries and connectors
  • Experimental projects and demos

These repositories are not officially supported by InterSystems, but they can be useful for learning and exploring InterSystems technologies.

You’re welcome to explore the repositories and use them as a reference for your own projects.

0
0 67
Announcement Olga Zavrazhnova · Oct 9, 2025

You’ve probably already seen that the October Article Bountyis live on Global Masters! 🍁🚀

Submit a brand-new article on one of the announced topics and earn a bounty of 🏆 5,000 Global Masters points once it’s approved! 🎉

Here’s the list of October topics:

1. Comparison of when direct access via global is faster than access via class/SQL
2. A comparison matrix of connectivity methods to InterSystems IRIS to help developers choose the best option for their use case
3. Monitoring and Observability in InterSystems IRIS (with Dashboards & Tools) Guides
4. Beginner’s Guide: Using SQL in InterSystems IRIS
5. Unit Tests Tutorials
6. Practical code examples for ObjectScript Beginners
7. Securing Your InterSystems IRIS Deployment with SSL/TLS: Configuration Tips & Gotchas
8. Large Data handling
9. JSON transformations in DTL (Data Transformation Language)
10. Working with Stream Objects in InterSystems IRIS
11. Best Practices for Data Migration in InterSystems IRIS (Guide / Tips)

Rules to follow: 

0
0 32
Question Colin Brough · Sep 16, 2025

For historic reasons we've got a mix of ADT feeds coming out of our PAS (TrakCare) to a wide range of downstream systems. In particular, there are some that are direct from TrakCare to the downstream systems, and many more that pass through Ensemble as our integration engine.

This is complicating management of the integrations, and so we'd like everything to go through the integration engine. In other words move from the flow in the top of the diagram to the flow in the bottom of the diagram:

6
0 120
Question PaulSomebody · Oct 3, 2025

How do you assign a property in a RUL (not a DTL or BPL) from a function value?  I've tried with the package/classname, without, with .., without and even looked all the way down to the parser but still can't see how.  There is no examples and the documentation doesn't help

So this works

<assign property="RuleActionUserData" value="&quot;A01&quot;"></assign>
 

This doesn't complile

<assign property="RuleActionUserData" value="##class(SomePackage.SomeClass).EventTypeToHL7Type(Document)"></assign>

SomePackage.SomeClass extends EnsRules and the method is a classmethod and final

2
0 58
Article Guilherme Tonelotti · Sep 25, 2025 2m read

When we need to integrate Caché/IRIS with other relational databases, one common question arises: “How do I set up the JDBC connection?”.
The official documentation doesn’t always provide a straightforward step-by-step guide, which can be frustrating, especially for beginners.

In this article, I’ll walk you through the entire process of configuring a JDBC connection with MySQL, from downloading the connector to linking tables in Caché/IRIS.

1
0 65
Article sween · Sep 10, 2025 6m read

A step by step implementation path to a cross regional stretched IrisCluster with Mirroring using the Intersystems Kubernetes Operator (IKO), Google Cloud Platform, and Tailscale.

I am giving this distraction the code name "Compliment Sandwich" for a reason yet to be realized, but I'd rather the community go right for the jugular shooting holes in a solution that implements wireguard based connectivity for our workloads in general, as I would like to refine it as a fall project leading up to KubeCon in Atlanta and if I miss the mark, Ill get it done before Amsterdam. 


1
1 101
Article Ariel Glikman · Sep 16, 2025 14m read

One of the recommendations when deploying InterSystems Technologies for production is to set up High Availability. The recommended API Manager for these InterSystems Technologies is the InterSystems API Manager (IAM). IAM (essentially Kong Gateway) has multiple deployment topologies.

If you are looking for high availability you could use:

a) Kong Traditional Mode: Multiple Node Clusters

b) Hybrid Mode

c) DB-less Mode

Before we break them down let's first understand the out of the box deployment that is provided by InterSystems: Installing IAM Version 3.10.

Kong Traditional Mode

2
3 112
Announcement Olga Zavrazhnova · Oct 8, 2025

It’s time to bring some spotlight to the authors and participants of our September Article Bounty! A big thank-you to everyone who took part💙

Special shout-out to those who took the time to write brand-new articles and share their expertise (each received 5,000 points 🎉):

@Robert Cemper >> "IRIS in Docker for beginners"
@sween  >> "IKO Plus: Stretched Cross Regional IrisCluster with Tailscale on Google Cloud Platform"
@Ariel Glikman >> "High Availability IAM"
@Pietro Di Leo >> "Running InterSystems IRIS with Docker: A Step-by-Step Guide - Part 1: From the Basics to Custom Dockerfile"
@Guilherme Tonelotti  >> "Create a JDBC connection with Mysql Cache"
@Vachan C Rannore >> "From "Oops" to "Aha!" - Avoiding Beginner Mistakes in ObjectScript"

And also to those who joined the challenge and helped us in the search for interesting articles (each received 30 points 🙌):

0
1 36
Article Robert Cemper · Sep 4, 2025 4m read

The article was motivated by the 2025 September Article Bounty
***************************************************************

The principle of Docker is just convincing to me.

  • Get a sandbox where you play and try whatever you want/need to do
  • Once done. You drop it without leaving traces in your working environment

This was the technical base for me to run about 700 reviews in OEX 
with almost no side effects  (except those caused by myself).

For beginners, I'll start with straight pure IRIS, no *health, *ML, *whatever

3
5 150
Question Gopal Mani · Oct 7, 2025

Hi Community,
I’m trying to execute a directory query in InterSystems IRIS using %SQL.Statement, but encountering an unexpected error.

Details:
The following command confirms that the directory exists:

Set dirPath="\\MYNETWORK_DRIVE\DFS-Shared_Product\GXM"
Write ##class(%File).DirectoryExists(dirPath)

It returns 1, meaning the path is valid and accessible.

However, when I try to execute this SQL query:

Set File=##Class(%SQL.Statement).%New()
Set Status=File.%PrepareClassQuery("%File","FileSet")
Set Result=File.%Execute(dirPath)
If Result.%SQLCODE {
    Write Result.%Message
}

I get the error:

3
0 62
Article Dmitry Maslennikov · Oct 7, 2025 31m read

Since we reached two important milestones for Go developers working with InterSystems IRIS:

Now it’s time to see everything working together.

To demonstrate how easily Go developers can adopt InterSystems IRIS, I took an existing production-grade open-source project — the RealWorld Example App — which showcases a full-stack Medium.com-style clone implemented with Go Fiber, GORM, and SQLite.

RealWorld Example App

With just a few configuration tweaks, I swapped out SQLite for gorm-iris, keeping everything else unchanged. The result?
A fully functional Go + Fiber application powered by InterSystems IRIS — no code rewrites, no ORM gymnastics, just a different database backend.

You can find the complete working demo here: github.com/caretdev/golang-fiber-iris-realworld-example-app

1
1 73
Article Anastasia Dyubaylo · Sep 23, 2025 3m read

Every thriving community has members whose energy, creativity, and commitment help shape it into something extraordinary. In the InterSystems Developer Community, one such member is @Henry Pereira — a developer, open-source contributor, contest winner, and true believer in the power of collaboration.

👏 Let’s take a closer look at Henry’s remarkable journey and his continuing legacy in the InterSystems ecosystem.

41
0 331
Article Robert Cemper · Sep 14, 2020 3m read

It seems to me that for some reason this didn't make its way to the official documentation
and seems to be rather unknown though implemented already in IRIS 2020.1

Thanks to @Dan Pasco I got a hint on the classes involved.
I used the recommended sequence of how to use it. 
it is all directly taken from Class Reference and I just collected it to create a first overview.

4
2 850
Article Eric Fortenberry · Oct 7, 2025 3m read

While working with external languages for IRIS (such as Python and Node.js), one of the first things you must accomplish is making a connection to an IRIS instance.

For instance, to make a connection in python (from https://pypi.org/project/intersystems-irispython/):

import iris

# Open a connection to the server
args = {
	'hostname':'127.0.0.1', 
	'port': 1972,
	'namespace':'USER', 
	'username':'username', 
	'password':'password'
}
conn = iris.connect(**args)

# Create an iris object
irispy = iris.createIRIS(conn)

# Create a global array in the USER namespace on the server
irispy.set("myGlobal", "hello world!") 

To establish a connection, you must either hard-code connection information in your script or you must prompt the user for the information.

To help manage these IRIS connections in my own projects, I created irisconns on Open Exchange.

irisconns allows you to decouple your connection information from your project/code by allowing you to save that connection information into files that are separate from your code. (Think "DSN" and "ODBC" for your IRIS Native SDK connections.)

Getting Started

To get started with irisconns, create either an irisconns or .irisconns file in your project's working directory, any parent directory to your working directory, or your home directory. Populate your irisconns file with connection information in an INI file format:

# 'default' is the connection returned if no name is provided.
[default]
hostname = localhost
port = 1972
namespace = USER
username = _SYSTEM
# confirm password? true or false?
confirm = false

# This connection name is "TEST".
[TEST]
hostname = test-server
port = 1972
namespace = USER
username = _SYSTEM
# confirm password? true or false?
confirm = false

# This connection name is "PROD".
[PROD]
hostname = prod-server
port = 1972
namespace = %SYS
username = _SYSTEM
# confirm password? true or false?
confirm = false

You will also need to copy the associated irisconns.py or irisconns.js libraries into your project so that you can import the irisconns module from your code. (Currently, only Python and Node.js libraries exist.) You also need to install the IRIS native packages for your programming language:

# Install Dependencies for Python
cp /path/to/irisconns/irisconns.py ./irisconns.py
pip install intersystems-irispython

# Install Dependencies for Node.js
cp /path/to/irisconns/irisconns.js ./irisconns.js
npm install @intersystems/intersystems-iris-native

Using "irisconns"

Once installed, you should be able to use/prompt for your connection configuration:

# Python Connection Example
import irisconns

# default connection
irispy = irisconns.get_irispy()

# named connection
irispy = irisconns.get_irispy('TEST')

# usage
irispy.set('hello world!', 'test', 1)
// Javascript Connection Example

// Import the package
const irisconns = require('./irisconns.js');

// Wrap in an async function so we can await the connection...
(async () => {
  // 'default' connection
  const iris = await irisconns.get_iris();

  // named (i.e. "PROD") connection
  // const iris = await irisconns.get_iris('PROD');

  // usage
  iris.set('hello world!','test',1);
})()

The above code will produce prompts, similar to the following:

# Connecting to default
Hostname    : localhost (default)
Port        : 11972
Namespace   : USER (default)
Username    : _SYSTEM
Password    : [hidden]
Confirm     : [hidden]

Closing

You can find more information about irisconns on the Open Exchange page. Hopefully you will find it useful!

Thanks!

0
0 33
Article Dmitry Maslennikov · Oct 5, 2025 3m read

If you thought native Go support for IRIS was exciting, wait until you see what happens when GORM enters the mix.


Just recently, we welcomed native GoLang support for InterSystems IRIS with the release of go-irisnative. That was just the beginning. Now, we’re kicking things up a notch with the launch of gorm-iris — a GORM driver designed to bring the power of Object Relational Mapping (ORM) to your IRIS + Go stack.

Why GORM?

GORM is one of the most popular ORM libraries in the Go ecosystem. It makes it easy to interact with databases using Go structs instead of writing raw SQL. With features like auto migrations, associations, and query building, GORM simplifies backend development significantly.

So naturally, the next step after enabling Go to talk natively with IRIS was to make GORM work seamlessly with it. That’s exactly what gorm-iris does.

4
1 95
Question Mark Sharman · Sep 30, 2025

At the moment, we have 10 HealthShare instance servers (5 x mirrored pairs), where we implement an External Backup approach, using the freeze/thaw commands against whichever server of the pair is the backup mirror member, to complete a VM level backup. These backups are stored to a disk within our control, to purge as required. This approach allows us to deliver a zero downtime backup approach.

2
0 65
Question Ditmar Tybussek · Feb 21, 2025

Hi,

I do have the problem to send mails to outlook after getting the new OAUTH2 token. 

 I have no problem getting the token, but after I got the token I try to send the mail thru smtp but authorization failed , please see my try to send the token thru the %Net.Authenticator mechanism %Net.SASL.XOAUTH2

Is this ok?

Or is there an other method to authenticate using the needed bearer method instead of user/pwd with the authenticator? 

 ....code to get the token is working..

1
0 97
Question Touggourt · Oct 6, 2025

Hi Guys,

I'm looking to setup an MQTT adapter that also acts as broker to connect directly to an MQTT clients, is there an IRIS adapter or client that can be used as Broker as well?

Thanks

1
0 38
Article Robert Cemper · Oct 6, 2025 1m read

If one of your packages on OEX receives a review, you get notified by OEX only of YOUR own package.   
The rating reflects the experience of the reviewer with the status found at the time of review.   
It is kind of a snapshot and might have changed meanwhile.   
Reviews by other members of the community are marked by * in the last column.

I also placed a bunch of Pull Requests on GitHub when I found a problem I could fix.    
Some were accepted and merged, and some were just ignored.     
So if you made a major change and expect a changed review, just let me know.

0
0 30