SQL injection remains one of the most critical vulnerabilities in database-driven applications, allowing attackers to manipulate queries and potentially access or compromise sensitive data. In InterSystems IRIS, developers have access to both Dynamic SQL and Embedded SQL, each with distinct characteristics. Understanding how to use them securely is essential for preventing SQL injection.
Hi everyone,
I’m working with an existing InterSystems IRIS server that hosts several web applications and namespace-specific code and data. I’d like to reverse-engineer the current environment into a %Installer.Manifest file so I can store it in Git and manage its changes.
My goal is to:
- Track the application setup and configuration in version control
- Rebuild environments consistently (namespaces, CSP apps, security roles, etc.)
- Possibly automate deployments later on
Overview I'm excited to announce the release of testcontainers-iris-node, a Node.js library that makes it easy to spin up temporary InterSystems IRIS containers for integration and E2E testing. This project is a natural addition to the existing family of Testcontainers adapters for IRIS, including testcontainers-iris-python and testcontainers-iris-java.
Why testcontainers-iris-node? As a Node.js developer working with InterSystems IRIS, I often faced challenges when setting up test environments that mimic production. testcontainers-iris-node solves this by leveraging the testcontainers-node framework to create isolated IRIS environments on-demand.
This is particularly valuable for:
- Integration testing with IRIS databases
- Testing data pipelines or microservices
- Automating test environments in CI pipelines
Features
- Launches IRIS in Docker containers using Testcontainers
- Supports custom Docker images and configuration
- Wait strategies to ensure IRIS is ready before tests begin
- Clean teardown between test runs
Why Randomization is Key When Splitting Data for Machine Learning
Post:
Essentially, Machine Learning is about learning from data. Having "good" data leads to better models, and more importantly, the quality of the information being used plays a crucial role in improving prediction accuracy.
One critical step in the process is how we separate our data into training and validation sets. If this isn’t done properly, we risk introducing bias, overfitting, or unrealistic performance expectations for the model.
In this article, we’ll explore:
Well... It's time for testing. We know that often, it's already over. So, what now? Can I improve the quality of my development?
The answer is: YES. Yes, you can. The Toolqa tool aims to do just that. It's a facilitator. What's its goal?
To ensure that APIs meet pre-established business requirements, while also protecting against <sarcasm> future failed attempts </sarcasm> to destroy your application, website, app, or anything else that uses your API.
Now you might be wondering, how does this happen? Where's the magic?
Hey Community!
We're happy to share the next video in the "Code to Care" series on our InterSystems Developers YouTube:
Hi everybody,
A customer would like to connect an IRIS database to Metabase BI. But Metabase does not have a connector that supports the IRIS database.
Metabase only supports these databases:
- Amazon Athena
- BigQuery (Google Cloud Platform)
- Druid
- MongoDB (recommend version 4.2 or higher)
- MySQL (recommend version 8.0.33 or higher, as well as MariaDB version 10.4 or higher)
- Oracle
- PostgreSQL
- Presto
- Redshift (Amazon Web Services)
- Snowflake
- SparkSQL
- SQL Server
- SQLite
- Vertica
And a few others.
Sometimes your client may request documentation of your BI or interoperability project in a formal document. In this case, MS Word is a good alternative, as it has an advanced editor that allows you to generate professional documentation. Now it's possible!
The iris4word app has this functionality!
| Final MS Word Document | Word Template |
![]() |
![]() |
![]() |
![]() |
iris4word business logic
Hello everyone,
I would like to ask whether it is possible to run InterSystems API manager (IAM) on OpenShift. Is there some documentation describing how to do it? I was searching the forum as well as the internet and I have not found much unfortunately.
Any hints would be highly appreciated.
Best regards
Martin Zukal

In this section, we will explore how to use Python as the primary language in IRIS, allowing you to write your application logic in Python while still leveraging the power of IRIS.
Word documents are widely used in the market. Users frequently create contracts, memos, resumes, reports, analyses, and other documents that may require data from or captured by InterSystems IRIS. However, IRIS does not have an API, SDK, library, or adapter for this. This limitation no longer exists.
The new Open Exchange library iris4word (https://openexchange.intersystems.com/package/iris4word) delivers an ObjectScript SDK where the developer passes any %DynamicObject as a parameter, a Word file template and then receives a ready document, with the structure and formatting defined in its template.
.png)
Let's start with a simple motivating question: over the past 14 days, what are my most common errors in the Application Error Log?
Answering this through the management portal or terminal is an annoying manual process - we should just be able to use SQL. Fortunately, there are a few class queries to help with this in the SYS.ApplicationError class in the %SYS namespace. You can answer the question for a single date with something like:
select"Error message",count(*)
from SYS.ApplicationError_ErrorList('CCR','12/16/2024')
groupby"Error message"orderby2descIf you are investigating complex structured Globals this can become
a rather boring typing exercise. Different from Global Explorer in
System Management Portal Global-Inspector allows a kind of drill-down
to dig deeper and deeper by subscript levels.
You also have the option to see the stored content or to show only
the subscript structures.
Globals storing SQL Tables are probably not so thrilling, but in SYSTEM
space you find real trees with completely different branches and twigs.
Global-Inspector can run in browser or from terminal command line.
required input
Hi, I'm wondering what are the diferences between a method or classmethod with the language set at tsql and a querry writen in sql.
If anyone know if there is some difference and what they are, I would be glad to learn. 😊
Hi,
I have a code that copy a method to another class for analysis purpose.
I also want this method to appear first in the source code to easily use it in VSCode with the classmethod debug button and not search it in the numerous method of the modified class.
Is there a way to do such a thing?
I tried the placeAfter keyword but I can't find a way to make it really work as I want. Is their other ways to control the order of methods?
Hi Community!
Welcome to Issue #23 of the InterSystems Ideas newsletter! These have been very busy two months, so let's look at the latest news from the Ideas Portal, such as:
✓ General Statistics
✓ Results of InterSystems Ideas Contest
✓ Community Opportunity Ideas
.png)
Imagine you’re walking down the street on a nice summer’s day, and someone walks up to you and says “Hey, you work at InterSystems, right? I’ve been hearing more and more about InterSystems IRIS lately. I know IRIS has its own programing language called ObjectBook? or InstaScript? OK, I admit it, I know it’s called ObjectScript! I know IRIS also supports Python. I’m a Python developer, so that sounds great to me. But I’m also interested in ObjectScript. For example, Python and other languages support collections. Does ObjectScript support collections?”
You’d answer “Of course!”
And then your new friend might get excited and start firing off more questions:
- How many kinds of collections does ObjectScript support?
- Can ObjectScript use Python collections?
- Can Python use ObjectScript collections?
- Which collection is best?
How would you answer? Well, you don’t have to worry about answering. All you’d have to do is send your new friend the URL of this long page.
The new version of InterSystems Testing Manager which I released last week brings @Timothy Leavitt's cool
Test Coverage Tool to VS Code, and is my entry for the 2025 Developer Tools contest.
Here's a teaser screenshot showing how the unit tests of the IPM project don't yet cover a feature that apparently allows an IPM repository to override its sort order.


Now that we have a good understanding of Python and its features, let's explore how we can leverage Python within IRIS.
Sending emails is a common requirement in integration scenarios — whether for client reminders, automatic reports, or transaction confirmations. Static messages quickly become hard to maintain and personalize. This is where the templated_email module comes in, combining InterSystems IRIS Interoperability with the power of Jinja2 templates.
Why Jinja2 for Emails
Jinja2 is a popular templating engine from the Python ecosystem that enables fully dynamic content generation. It supports:
We are attempting to update some old FTP interfaces to use FTPS and having an issue with an outbound operation to a FileZilla server.
The connection to the the server works, however it fails to transfer files with the error "TLS session of data connection not resumed."
It appears that "TLS session resumption" is no longer optional in FileZilla Server, and I cannot find any details in the IRIS documentation about it.
Does IRIS support TLS session resumption, or know how to set up FTPS to a recent install of FileZilla Server?
With Intersystems indicating ZEN pages are being deprecated, I'm looking to find out how to add custom configuration pages for the management portal using the new method similar to the new Rules editor.
From what I can tell the new method uses rest pages using JWT Authentication, and has a mechanism to use the session cookie to generate the JWT token.
I've gotten the REST part done as per:
Creating a REST API with JWT Authentication in ObjectScript | InterSystems
Here are the technology bonuses for the InterSystems Developer Tools Contest 2025 that will give you extra points in the voting:
- IRIS Vector Search usage -3
- Embedded Python usage -3
- InterSystems Interoperability - 3
- InterSystems IRIS BI - 3
- VSCode Plugin - 3
- FHIR Tools - 3
- Docker container usage -2
- ZPM Package Deployment - 2
- Implement InterSystems Community Idea - 4
- Find a bug in Embedded Python - 2
- Article on Developer Community - 2
- The second article on Developer Community - 1
- Video on YouTube - 3
- First Time Contribution - 3
See the details below.
Hi all,
Just wondering if anyone has any experience with licensing in an HA mirroring environment. We have mirror setup with 2 DB servers (Primary and Backup), and a separate Arbiter using ISCAgent. We currently don't have a license server setup so users using our web app get interruptions and have to log in again if failover occurs.
We’re building out a data lake in IRIS 2025.1 that aggregates data across multiple business systems and departments. I’m trying to establish best practices for schema design and separation.
Right now, I’m thinking of using a separate schema for each distinct system of record feeding into the data lake - for example, one schema per upstream source system, rather than splitting based on function (e.g. staging, raw, curated). The idea is that this would make it easier to manage source ownership, auditing, and pipeline logic, especially when multiple domains are contributing data.
#InterSystems Demo Games entry
⏯️ IRIS As Healthcare Data Infrastructure
Data, as a new type of production resource, has received increasing attention. The current economic development situation has raised many new demands for how to create usable value from data at scale. In reality, siloed systems, inconsistent data semantics, and difficulties in data deployment have greatly hindered the development of the data economy. InterSystems IRIS, as an integrated data platform, provides many capabilities to help enterprises and healthcare institutions open up data and leverage data value. In this demonstration, we will describe what challenges the data economy poses for data production, and how IRIS addresses these issues using its rich and powerful features.
Presenters:
🗣 @Nicky Zhu, Senior Sales Engineer, InterSystems
🗣 @Qiao Peng, Regional Sales Engineer Manager, InterSystems
I am trying to set up a web application with Delegated Authentication via IPM. It is possible to give a specific application Delegated Authentication:
<WebApplicationName="/${namespaceLower}/api"NameSpace="${namespace}"DispatchClass="pkg.isc.genai.rest.Handler"MatchRoles=":%All"AutheEnabled="#{$$$AutheDelegated}"Recurse="1"CookiePath="/${namespaceLower}/"
/>What is the minimum version to use the DTL AI Generator
One of the business operations recently errored out, and keeps spitting this message:
ERROR <Ens>ErrFailureTimeout: FailureTimeout of 15 seconds exceeded in EnsLib.FTP.PassthroughOperation; status from last attempt was
ERROR <Ens>ErrOutConnectFailed: SFTP Connect failed for ftp.[censored].com:2222/[censored]/SSL='!SFTP'/PubKey='C:\InterSystems\HealthShare\Keys\pub\[censored]'/PrivKey='C:\InterSystems\HealthShare\Keys\priv\[censored].pem'
with error ERROR #7500: SSH Connect Error '-2146430963': SSH Error [8010100D]: Failed getting banner [8010100d] at Session.cpp:238,0 (alert request ID=45956)
Alex Koblov posted today a #CachéHaiku:
Full command names Make your code more readable Than compact versions
My haiku:
Caché Globals Shows you keys to the value If you $order it
Your variant? ;)
.png)
.png)
.png)
.png)

