#InterSystems IRIS

19 Followers · 5.6K Posts

InterSystems IRIS is a Complete Data Platform
InterSystems IRIS gives you everything you need to capture, share, understand, and act upon your organization’s most valuable asset – your data.
As a complete platform, InterSystems IRIS eliminates the need to integrate multiple development technologies. Applications require less code, fewer system resources, and less maintenance.

New
Question Carl Deitrich · Feb 17

We are attempting to "Repoint" old class data to new class data to save disk space and data redundancy across multiple tables. This works to a point.  In essence the two classes are sharing the same data / Index / stream globals.  But if an ID in the Old_Class is opened, a property is modified, and saved the property that is in the New_Class (but not in the Old_Class) is NULLed / blanked.

Simplified explanation of data and what’s occurring.

Old Class Values   New Class Values
First_Name John   First_Name John
Middle_Initial Q   Middle_Initial Q
Last_Name P
10
0 81
New
Article Geet Kalra · Feb 18 6m read

Intersystems IRIS Productions provide a powerful framework for connecting disparate systems across various protocols and message formats in a reliable, observable, and scalable manner. intersystems_pyprod, short for InterSystems Python Productions, is a Python library that enables developers to build these interoperability components entirely in Python. Designed for flexibility, it supports a hybrid approach: you can seamlessly mix new Python-based components with existing ObjectScript-based ones, leveraging your established IRIS infrastructure. Once defined, these Python components are manage






0
3 145
New
Article Henry Pereira · Feb 16 15m read

Welcome to the finale of our journey in building MAIS.

  • In Part 1, we constructed the agnostic "Brain" using LiteLLM and IRIS.
  • In Part 2, we designed the "Persona", mastering Dynamic Prompt Engineering and the ReAct theory.

Now, the stage is set. Our agents are ready, defined, and eager to work. However, they remain frozen in time. They require a mechanism to drive the conversation, execute their requested tools, and pass the baton to one another.

Today, we will assemble the Nervous System. We are going to implement the Orchestrator using InterSystems BPL, creating a living, breathing loop t

0
1 94
New
Article Andrew Sklyarov · Feb 15 7m read

In this article, I aim to demonstrate a couple of methods for easily adding validation to REST APIs on InterSystems IRIS Data Platform. I believe a specification-first approach is an excellent idea for API development. IRIS already has features for generating an implementation stub from a specification and publishing that specification for external developers (use it with iris-web-swagger-ui for the best results). The remaining important thing not yet implemented in the platform is the request validator. Let's fix it!

0
0 45
New
Article Eduard Lebedyuk · Feb 13 2m read

Recent versions of IRIS come with Lite Terminal available from VSCode. It's a websocket server, with JSON messaging. Here's how to connect to it from Python:

import websocket
import argparse
import requests
import json


defterminal(host, port, namespace, username, password, command, secure):
    session = requests.Session()
    r = session.get(f"http{"s"if secure else""}://{host}:{port}/api/atelier/", auth=(username, password))
    cookies = session.cookies.get_dict()
    ws = websocket.WebSocket()
    ws.connect(f"ws{"s"if secure else""}://{host}:{port}/api/atelier/v8/%25SYS
0
0 65
Question prashanth ponugoti · Feb 7, 2022

Hi Community,

Here we have requirement to process messages min 10 sec delay. Current time it is taking my businessProcess is less than 1 sec.

To implement this requirement , I need to sleep 10 sec in business process custom code.

Could somebody help me to implement delay in BusinessProcess.

Thanks,

Prashanth

9
0 1051
Question Evgeny Shvarov · Feb 5

Hi developers!

In a method I need to return a result as a dynamic object aka JSON Object. And here is my logic:

Classmethod Planets() as%DynamicObject {

 set val1="Jupiter"
 set val2="Mars"// this doesn't work! cannot compile
 return {"value1":val1, "value2":val2}

}

So I need to do the following:

Classmethod Planets() as%DynamicObject {

 set val1="Jupiter"
 set val2="Mars"
 set result={}

 set result.value1=val1

 set result.value2=val2

 return result

}

The second case works. Maybe I'm preparing the Dynamic Object in the wrong way? Can we just use variables insi

20
0 183
New
Question joseph caroè · Feb 11

Hello everyone. I'm currently working on how to implement a solution that makes it possible to include within the response of a BusinessOperation the "RetryCount" for each message.
For Example, we have this message that was retried twice:
This is an HL7.message going through a specific business operation, we did not create a custom one: we used the default implementation EnsLib.HL7.Operation.TCPOperation. This operation should automatically handle retries (infinetely waiting on a response). I found out each Business Operation has this property :

Can we retrieve this information AFTER the messag

1
0 35
New
Announcement Ronnie Hershkovitz · Feb 11

Hi Community,

We're pleased to invite you to the upcoming webinar in Hebrew:

👉 Debugging InterSystems IRIS & Health Connect: From VS Code Breakpoints to Interoperability Traces 👈

📅 Date & time: Feb 18th, 3:00 PM IDT

 

When production issues arise, speed and precision matter. This webinar is a practical, tool-driven walkthrough of debugging in InterSystems IRIS (including IRIS for Health) and Health Connect - starting with code-level debugging in VS Code and extending into platform and interoperability diagnostics. We will cover core logging as well as tracing techniques. Attendees will l

0
0 40
Question Jainam Shah · Feb 7

Hello Team,

I am trying to duplicate the production flow in the Ensemble 2018 but after doing all the steps (like copying same class file, adapter file, process class file) as production, still the flow is not working. The error is that it is not reaching the operation (which is supposed to store the data), it gets stuck in the processes. Additionally, I am also trying to add a logic where in OUL message if the value of code 20061 > 30mg, it should automatically send another order back to service (OML). So the flow will be, Device -> Service->Processes->Operation(DB Store)->Process(ACK and di

2
0 51
Question Lynton Blair · Feb 9

in C++ program with #include iris-callin.h..  The program terminateswhen it tries to execute IRISSECURESTARTA with exit code -1073741515.

const char *username="user", *password="xyz",*exename="Test_Callin";
int termflag = IRIS_PROGMODE|IRIS_TTNONE|IRIS_TTNEVER;

rc = IRISSECURESTARTA(&pusername, &ppassword, &pexename, termflag, timeout, NULL, NULL);

Note: the %Service_Callin setting is Enabled.

»  
10
0 69
Article Richard Rael · Jan 22, 2024 7m read

IRIS can use a KMS (Key Managment Service) as of release 2023.3.  Intersystems documentation is a good resource on KMS implementation but does not go into details of the KMS set up on the system, nor provide an easily followable example of how one might set this up for basic testing.

The purpose of this article is to supplement the docs with a brief explanation of KMS, an example of its use in IRIS, and notes for setup of a testing system on AWS EC2 RedHat Linux system using the AWS KMS.  It is assumed in this document that the reader/implementor already has access/knowledge to set up an AWS EC2 Linux system running IRIS (2023.3 or later), and that they have proper authority to access the AWS KMS and AWS IAM (for creating roles and polices), or that they will be able to get this access either on their own or via their organizations Security contact in charge of their AWS access.

2
1 375
InterSystems Official Daniel Palevski · Feb 9

The 2025.1.3 maintenance releases of InterSystems IRIS® data platform, InterSystems IRIS® for HealthTM, and HealthShare® Health Connect are now Generally Available (GA). These releases include the fixes for a number of recently issued alerts and advisories, including the following: 

Please share your feedback through the Ideas Portal using the category Post-Release Feedback so we can b

0
0 77
Question Scott Roth · Feb 5

I have always struggled with Iterating through a JSON response to pull out certain fields into a Data Class Structure to use to populate fields in a DTL. So I defined the whole structure for the following JSON, with the base structure extending Ens.Response, %XML.Adaptor, and %JSON.Adaptor.

{
    "status": {
        "message": "success",
        "code": 200
    },
    "data": {
        "client": "xxxxxxxxxxxxxxxxxxxxxxxx",
        "entities": [
            {
                "id": "xxxxxxxxxxxxxxxxxx`",
                "name": "xxxxxxxxxxxxxxxxx",
                "totalCommentCount"
5
0 57
Article Jonathan Card · Jan 25 5m read

There seems to be a generous use of ClassMethods in ObjectScript code generally. I hope my own experiences aren't representative, but I bet they are. Forgive me for giving away the ending of this article, but in short: don't use them. Unless you can make a pretty convincing case that you have to, just never use them.1

What is a ClassMethod? In an ObjectScript class, you can define methods in two different ways: in a Method, you must instantiate an instance of the class to call the method, and in a ClassMethod, you can call the method without instantiating the class. Of course, in a ClassMethod, you don't have access to any properties of the object (because there's no object), but you can access globals (they are global, after all) and Parameters (which are class constants).

3
0 33
InterSystems Official Daniel Palevski · Feb 3

The third developer previews of InterSystems IRIS® data platform, InterSystems IRIS® for Health, and HealthShare® Health Connect 2026.1 have been posted to the WRC developer preview site.  Containers can be found on our container registry and are tagged latest-preview.

These developer previews includes the dropping of Mac Intel support starting from 2026.1.0, and the adding back of Windows Server 2019 support to 2026.1.0.

Initial documentation can be found at these links below:

4
0 135
Article Gabriel Ing · Feb 6 8m read

TL;DR This article explains how to deploy InterSystems IRIS Community Edition on Azure using the Azure Marketplace and a Virtual Machine. It covers prerequisites, instance selection, authentication, SSH access, first verification steps, and how to delete resources to avoid charges. The deployment can typically be done using Azure free credits and is suitable for developers who want to quickly start working with IRIS in the cloud.

Who this guide is for. This guide is intended for developers, solution architects, and DevOps engineers who want to deploy InterSystems IRIS Community Edition on Microsoft Azure. No prior Azure automation experience is required, but basic familiarity with the Azure Portal and SSH is helpful.

After following this guide, you will be able to:

  • Launch InterSystems IRIS Community Edition from the Azure Marketplace
  • Configure a small, secure Azure VM
  • Connect to IRIS using SSH and the Management Portal
  • Reset the default IRIS password and verify that IRIS is running

Prerequisites

  • An active Azure subscription (new accounts may have free credits)
  • Permissions to create resource groups, VMs, and networking resources
  • An SSH client and a private key (.pem) you can store securely
  • Basic knowledge of Linux command line

Deployment overview

  • Open the IRIS Community Edition listing in Azure Marketplace and click Get it now
  • In Azure Portal, choose Start with a pre-set configuration (or Create)
  • Configure Basics: subscription, resource group, VM name, region, image, and size (a small VM is usually sufficient)
  • Choose SSH key authentication and generate/download the key if needed
  • Review + Create, accept terms, and deploy; then Go to resource → Connect → SSH
  • First SSH login: run iris password to change _SYSTEM/SYS; start a session with iris session iris
  • Management Portal: http://YOUR_VM_IP:52773/csp/sys/UtilHome.csp
0
0 50
Article Eduard Lebedyuk · Sep 27, 2023 2m read

If you work with Productions, highlighting connections between Business Hosts is a very convenient feature, allowing developers to get a visual representation of a data flow.

This feature works by default with all system Business Hosts. If a user writes their own Business Services, Processes, or Operations, they must implement the OnGetConnections method for this functionality to work with their custom Business Hosts (or use Ens.DataType.ConfigName properties for connections).
That said, the SMP shows only the first layer of connections of the selected Business Host. Sometimes, we need to get connections of connections recursively to build a complete data flow graph. Or we might need this connection information to check which downstream systems might be affected by a change upstream.

6
1 458
Article Eduard Lebedyuk · Feb 5 3m read

PEP 578 added Python Audit hooks. A rich variety of events (module load, os interactions and so on) triggers audit events which you can subscribe to.

Here's how to do that. First create an embedded python hook:

Class User.Python
{

/// do ##class(User.Python).Audit()ClassMethod Audit() [ Language = python ]
{
import sys
import time
def logger(event,args):
     if event=='import':
        module = args[0]
        print(f"Loading {module}")
        if module == "numpy":
            print(f"Module {module} forbidden. Terminating process in 3.")
            time.sleep(3)
        
0
1 53
Article Luis Angel Pérez Ramos · Apr 18, 2025 3m read

Who hasn't been developing a beautiful example using a Docker IRIS image and had the image generation process fail in the Dockerfile because the license under which the image was created doesn't contain certain privileges?

In my case, what I was deploying in Docker is a small application that uses the Vector data type. With the Community version, this isn't a problem because it already includes Vector Search and vector storage. However, when I changed the IRIS image to a conventional IRIS (the latest-cd), I found that when I built the image, including the classes it had generated, it returned this error:

6
1 346
Article Henry Pereira · Feb 4 11m read

In Part 1, we laid the technical foundation of MAIS (Multi-Agent Interoperability Systems). We have successfully wired up the 'Brain', built a robust Adapter using LiteLLM, locked down our API keys with IRIS Credentials, and finally cracked the trick code on the Python interoperability puzzle.

However, right now our system is merely a raw pipe to an LLM. It processes text, but it lacks identity.

Today, in Part 2, we will define the Anatomy of an Agent. We will move from simple API calls to structured Personas. We will learn how to wrap the LLM in a layer of business logic, giving it a name, a

0
0 125
Question Pietro Di Leo · Jan 17, 2024

Hi everyone, 

Does anyone know how to export projects via VSC? 

I opened the project through the "InterSystems Tools" plugin (command is "Edit Code in Project") and I can correctly work on it.

However, when I try using the "ObjectScript" plugin to export the project (right click on the project -> "Export Project Contents")

This message appears and it is not possible to export the project:

I've tried also to open a new window, then a folder and finally the project, but nothing changes. 

This is an example of my workspace: 


Anyone knows how to do it? 

Thank you! 

14
0 3299
Article Mikhail Khomenko · Jan 20 18m read

As applications grow, every database eventually hits scaling limits. Whether it's storage capacity, concurrent users, query throughput, or I/O bandwidth, single-server architectures have inherent constraints. This guide explains fundamental approaches to database scalability and shows how InterSystems IRIS implements these patterns to support enterprise-scale workloads.

We'll explore two complementary scaling strategies: horizontal scaling for user volume (distributing computational load) and sharding for data volume (partitioning datasets). Understanding the general principles behind these approaches will help you make informed decisions about when and how to scale your IRIS applications.

The examples in this guide use InterSystems IRIS in Docker containers.

4
5 225
InterSystems Official Dominic Chui · Jan 15

IPM version 0.10.5 has been released on January 15, 2026. This new version contains a ton of improvements and bug fixes so be sure to check it out either directly from the GitHub page or from the Community Registry!

The big changes include the following:

  • A rewrite of dependency resolution that drastically improves performance, including a 200x speed increase in very complicated cases
  • A History Log that tracks the IPM installs, loads, updates, and uninstalls that can be viewed using zpm "log" 
  • System expressions, like ${namespace}, and $$$ macros are now evaluated in CPF merge files allow
3
0 112
New
Article Evgeny Shvarov · Feb 16 5m read

How I Vibecoded a Backend (and Frontend) on InterSystems IRIS

I wanted to try vibecoding a real backend + frontend setup on InterSystems IRIS, ideally using something realistic rather than a toy example. The goal was simple: take an existing, well-known persistent package in IRIS and quickly build a usable UI and API around it — letting AI handle as much of the boilerplate as possible. Here is the result of the experiments.

2
1 171
Question Jainam Shah · Jan 25

I've modified the class file, but messages still arrive as a single line (e.g., "H|.../rQ|.../rL") instead of separate lines in the ASTM service. The <ENQ>..<EOT> header looks correct, logs show no errors, and the service receives messages fine. Is there an Ensemble 2018.1 engine setting (like line terminator handling or TCP framing) to fix the line splitting? ​

4
0 73