When building a Production, should I create separate message classes for each integration flow, or is it acceptable to reuse generic request/response classes across different Business Operations? I'm trying to understand how to keep things organized as the number of integrations grows.
What is the recommended way to handle errors inside a Business Process in IRIS? Should I use Try/Catch within the BPL, return error responses to the caller, or rely on the built-in retry mechanism of the Production? Looking for guidance on what's considered good practice.
What is the recommended approach for handling upgrades in an InterSystems IRIS Kubernetes environment?
For example, if we deploy version 1.0.0 of our product and subsequently need to upgrade to 1.0.1, and this upgrade requires changes to SQL tables containing customer data.
The quickest solution that comes to mind is creating an 'upgrade method' that runs on startup to check if any data migration actions are required. However, I'm wondering if there are better solutions or established best practices for this.
Thanks in advance!

Hey Community,
Here are the bonuses for participants' articles that take part in the InterSystems Technical Article Contest 2026:
Hello Community,
What is the most efficient, memory-safe way to get the names of the corrupted indexes on very large tables for a rebuild. However, if an index has millions of corrupted rows, the .errors array in %ValidateIndices grows too large and throws a errorerror.
I recently started using Cursor/VSCode with an IRIS container for development rather than Studio/Terminal.
I've noticed that whenever I use %G (so basically all the time), when I exit %G, the terminal window simply closes, rather than returning me to my usual namespace prompt.
%G also does not retain the command stack like it does in old school terminal, so I'm forced to constantly retype every global reference.
Anyone figured out a solution to this? It's a relatively minor problem in the grand scheme of things, but a time consuming and irritating one.

When developing Python applications with InterSystems IRIS, you can quickly end up with several execution contexts:
- Python launched directly by IRIS with Embedded Python;
- a regular
python3process that loads the Embedded Python libraries from a local IRIS installation; - an external Python application that connects to IRIS through the official native driver.
These three cases are useful, but they do not behave exactly the same way for imports, system configuration, object APIs, and SQL access.
What was your READY experience like? 🎉
We’ve put together a bingo card — check out how many squares match your experience!
Mark the moments that happened to you or share them in the comments below.
And if you had a memorable READY moment that’s not on the card, tell us about it — we’d love to hear your story ✨

Hi everyone,
I’m thrilled to share that after several years of deep diving into the InterSystems IRIS data platform, I have finally summarized my project experiences into a new book IRIS (Data Platform) Programming Technical Guide. It is published by Beihang University Press, a prestigious central-level comprehensive publisher renowned for its leading role in aerospace, science, and technology publishing.
Writing this book was a significant engineering challenge for me. My goal was to bridge the gap between "understanding the syntax" and "building a production-ready project.
In v2026.1 we introduced support for a more robust and real-life secure authorization for your FHIR endpoints.
This is achieved by using SMART on FHIR v2 fine-grained scopes.

Focus - Not SMART in general, rather, the fine-grained scopes; Hands-on easy sample
Hey Community,
Round 1 of the Community Bounty Program "Idea to Application" is officially open. Three ideas from the Ideas Portal are ready to be implemented — pick one or more, build it, publish it on Open Exchange, and earn Global Masters points.
🏅Every qualifying submission earns a Credly badge, Global Masters badge, and 10k+ points. Implement all ideas this round and unlock Tier 2 rewards.

Redoc is an Open Source solution capable of rendering API specifications in OpenAPI 2.0 or 3.0+ as very beautiful and functional web portals. Currently, to have something similar, we need the ZPM SwaggerUI extension or we need to install IAM - InterSystems API Manager and then configure the IAM Developer Portal. Well, now the community has one more option, iris-redoc. This solution installs a web application on your IRIS instance that uses Redoc to present a beautiful web portal for your REST APIs:

For those who learned Caché ObjectScript from scratch: what kind of personal or practice projects did you build to get comfortable with the language? I come from a C# background and I'm looking for project ideas that are small enough to be feasible but meaningful enough to actually teach the core COS concepts.
Hello Community!
We’re excited to invite you to our upcoming Hebrew webinar, presented by @Keren Skubach, an InterSystems Senior Sales Engineer:
👉A Practical Guide to Leveraging AWS Adapters and APIs 👈
📅 Date & time: June 2nd, 3:00 PM IDT
Discover how to accelerate cloud-based integration with InterSystems' native AWS adapters for S3, SQS, SNS, and CloudWatch.
This session provides a practical look at building modern interoperability workflows — from secure file ingestion and asynchronous messaging to automated notifications and centralized monitoring.
Recently, a question on the Community was asked by @Vermon Ferre about storing data from inherited classes in different globals. So, I decided to simulate the following behavior: I created a superclass called Article.MainClass and two subclasses, Article.Class1 and Article.Class2. By default, when each class extends %Persistent IRIS creates independent storage structures for them. This will work as intended if the first class in the list of superclasses is %Persistent. But it also means that if there are any parameters in the main class, they will be lost, because only parameters from the first class in the list get inherited.

IRIS 2026.1 provided Partitioned Tables as a new option for large data sets
It's a great improvement as it offers standardization of this feature.
Though:
It was possible also before, matching requirements and leaving room for creativity.
less elegant with a bit more coding and fewer automatisms.
Hi Community!
Welcome to Issue #29 of the InterSystems Ideas newsletter! Let's look at the latest news from the Ideas Portal, such as:
✓ General Statistics
✓ Results of the sweepstakes asking for topics for tutorials
✓ New Community Bounty Program "Idea to Application"

Hi Community!
We are excited to announce that the Hospitals On FHIR Meetup will take place during SantExpo 2026!
📅 Date: May 20, 2026, starting at 6:30 PM CEST
📌 Location: HIFE Paris Issy, 15 Rue Guynemer, 92130 Issy-les-Moulineaux, France

Hi Community,
Enjoy the new video on InterSystems Developers YouTube:
⏯ Learning InterSystems Reports - A Real World Use Case @ Ready 2025
Welcome to another installment of the Platforms Update. A few notables to highlight:
- Ubuntu 26.04 has been released, and corresponding IRIS support is coming soon.
- IRIS 2026.2 will bring an end to support for Ubuntu 22.04 and Windows 10.
- Revised minimum CPU specifications are in effect for 2025.3+
For those newly acquainted with these communications, this update provides details about recent enhancements as well as anticipated changes based on current information; however, future projections remain uncertain and the content should not be interpreted as a definitive product roadmap.
Introduction
Today, coding assistants like Claude, GitHub Copilot and Cursor have transformed the way developers write code. However, these tools are limited by being isolated from the systems and data sources that developers work with daily. This limitation can be overcome through the Model Context Protocol (MCP), an open standard designed to connect AI assistants to external data sources and tools in a secure and standardized way.
In this review article, we'll explore the current state-of-the-art regarding the MCP within the InterSystems ecosystem.
- VS Code version 1.60.0 and above
-
install below 3 extensions

- Ctrl + Shift + P show all commands
- InterSystems: Connect to Server
-
input connection details
IP:localhost
Port: 52773
choose global & http connection method
Input username and password of Intersystems management portal
screenshot for success connection:
At READY 2026, for the very first time, we held a customer hackathon — and it was an amazing experience!
The hackathon took place on the pre-event day at 9 am. Some participants, like me, arrived early due to jet lag—but that actually helped us connect with fellow hackers before the event kicked off.

The Beginning
This article presents a straightforward approach to automatically and efficiently tune hyperparameters for machine learning models using Optuna as the optimisation framework. We explore how to use both Optuna’s native storage options and InterSystems IRIS as a database backend to track the progress of hyperparameter searches. We also show how MLflow can be used to monitor experiments and manage models through its tracking and model registry UI.
This article is based on this Kaggle Notebook, which you can run and directly edit yourself.
Key Responsibilities & Requirements
Core Infrastructure & Cloud Management
- Full-Stack Administration: Maintain and optimize both Linux (Ubuntu/RHEL) and Windows Server environments.
- Cloud Orchestration: Take full ownership of VM cloud infrastructure, including provisioning, health monitoring, backup and resource scaling.
- Policy Governance: Design and enforce comprehensive SysAdmin and Deployment policies (CI/CD pipelines, automated provisioning, and security hardening).
InterSystems Database Administration
- Platform Expertise: Expert-level administration of both InterSystems IRIS and Caché.
Hi Community,
Enjoy the new video on InterSystems Developers YouTube:
⏯ Advanced InterSystems IRIS Automation Using Ansible @ Ready 2025
Data privacy regulations such as GDPR, LGPD, and HIPAA demand that organizations know exactly where Personally Identifiable Information (PII) lives inside their databases. Yet in practice, most teams rely on manual inventories, tribal knowledge, or external scanning tools that require data to leave the database engine — a process that itself creates privacy and security risks.
This article presents an MVP that takes a different approach: it runs PII detection inside InterSystems IRIS using Embedded Python, analyzing data where it lives and never exporting it to an external process.
What is wrong with the *inc file code below:
#define ArrayToString(%array,%out,%del) set %out="" for { ##continue
set key=$order(%array("")) quit:key="" ##continue
set %out=%out_%del_key ##continue
} quit
Compilation at calling classmethod as : Set tQStr = $$$ArrayToString(pQArray,tQStr,"##") brings error as:

Hi Community,
Enjoy the new video on InterSystems Developers YouTube:
⏯ Productive Data Science with InterSystems IRIS and Python @ Ready 2025
I need to analyse and improve the performance on some old SQL statements.
One statement uses NVL in the WHERE clause (no wonder why it's slow) but I still have to improve the performance and the data really needs to be the same when returned.
SELECT *
FROM TOURHead, TOURFIND, SGNRFIND, TNRHead
WHERE TOURHead.cl = '123'
AND TOURHead.cl = TOURFIND.cl
AND TOURHead.TOURNR = TOURFIND.TOURNR
AND TOURFIND.cl =* SGNRFIND.cl
AND TOURFIND.SGNR =* SGNRFIND.SGNR
AND TOURFIND.cl = TNRHead.cl
AND NVL(TOURFIND.TNR, SGNRFIND.TNR) = TNRHead.TNR;
Really hope someone can help me with this one.

