We need to authenticate users via Azure AD or Okta. What are the best practices to implement federated authentication using OAuth2/OIDC or SAML in IRIS Management Portal or custom web apps?
For geographically distributed nodes using async mirroring or ECP, how can I detect and resolve data conflicts manually (custom logic) while maintaining eventual consistency?
I’m using recursive CTEs for hierarchical data, but the planner seems to produce inefficient plans. Can I influence or extend the query optimizer behavior in IRIS?
We are using IRIS with a sharded architecture. Complex SQL queries (with joins, aggregates, and subqueries) are performing slowly. How can I design queries or indexes to optimize distributed execution across shards?
Instead of default storage classes, I want to implement my own SQL storage mapping for a persistent class (e.g., denormalized or sparse matrix structures). How do I define and manage custom storage definitions?
Deploying new IRIS instances can be a time-consuming task, especially when setting up multiple environments with mirrored configurations.
I’ve encountered this issue many times and want to share my experience and recommendations for using Ansible to streamline the IRIS installation process. My approach also includes handling additional tasks typically performed before and after installing IRIS.
This guide assumes you have a basic understanding of how Ansible works, so I won’t go into much detail on its fundamentals.
To manage the accumulation of production data, InterSystems IRIS enables users to manage the database size by periodically purging the data. This purge can apply to messages, logs, business processes, and managed alerts.
Please check the documentation for more details on the settings of the purge task:
https://docs.intersystems.com/irislatest/csp/docbook/DocBook.UI.Page.cls?KEY=EGMG_purge#EGMG_purge_settings
An issue that many users ran into is still finding old messages after running the purge task for messages. For example, a user has a purge task for messages that has NumberOfDaysToKeep=45.
This code provide the configured production items with enabled or disabled status.
Include (Ensemble, EnsUI, EnsUtil)
Class Test.ProductionConfig
{
ClassMethod GetConfigItems() As %Status
{
Set tStatement = ##class(%SQL.Statement).%New()
Set tSC = tStatement.%PrepareClassQuery("Ens.Config.Production","EnumerateConfigItems")
Write tSC,!
Write "ConfigItemName"," ","Enabled",!
#Dim exp As %Exception.SystemException
#Dim rset As %SQL.StatementResult
Set rset = tStatement.%Execute()
Write rset,!
Write rset.%SQLCODE,!
While rset.%Next() {
Try {
Set tConfigName = rset.%GetData(1)
Set tEnabled = rset.
I am creating a class to validate JSON body of requests. When I use the method %ValidateObject to check errors in the object, if I define some properties with %DynamicObject or %DynamicArray and use the Required parameter, this method does not work, it ignores validation, only works with properties %String, %Integer etc.
ClassExtendsIntroduction
Since InterSystems has recently announced the discontinuation of support for InterSystems Studio starting from version 2023.2 in favor of exclusive development of extensions for the Visual Studio Code (VSC) IDE, believing that the latter offers a superior experience compared to Studio, many of us developers have switched or are beginning to use VSC. Many may have wondered how to open the Terminal to perform operations, as VSC does not have an Output panel like Studio did, nor an integrated feature to open the IRIS terminal, except by downloading the plugins developed by InterSystems.
Hi Community,
It seems our Developer Community AI has decided to take a coffee break ☕️ (probably after answering one too many tricky ObjectScript questions).

For now, it’s gone mysteriously silent and refuses to generate answers. We suspect it might be rethinking its life choices after reading one too many deeply philosophical ObjectScript questions.
We’ll let you know as soon as our digital colleague is back online, refreshed, and ready to assist you again. In the meantime, if you notice it suddenly waking up and replying again, please do let us know in the comments before it changes its mind.
I know the next ones:
1. Place all different settings in environment variables. You have a different .env file for each environment, and you must add some code to Production for reading and setting these values. It's good for deploying into containers, but challenging for management when we have a large production. I mean, we have many settings that can vary depending on the environment: active flag, pool size, timeouts, and so on. Not only endpoints.
2. My own case.
This one's for those of you who feel that InterSystems tech makes your life easier... whether you’re working on integration projects, building innovative solutions, or evolving existing ones.
With the rapid adoption of telemedicine, remote consultations, and digital dictation, healthcare professionals are communicating more through voice than ever before. Patients engaging in virtual conversations generate vast amounts of unstructured audio data, so how can clinicians or administrators search and extract information from hours of voice recordings?
Enter IRIS Audio Query - a full-stack application that transforms audio into a searchable knowledge base. With it, you can:
- Upload and store clinical conversations, consultation recordings, or dictations
- Perform natural language queries (e.
It's about an example for the External Languages Contest 2025
You get almost any information about your databases in IRIS using
the System Management Portal. After passing several levels, you often
get a wide list of items, but the interesting ones are hard to find.
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!
Hi, Community!
🌤 Wondering about the potential benefits of moving to the cloud? Hear from our experts about:
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?
.png)
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
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.
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.
Hi Developers!
Here are the technology bonuses for the InterSystems .Net, Java, Python, and JavaScript Contest that will give you extra points in the voting:
- XEP API for Java, .NET - 2
- Native SDK for Java, .NET, Python, node.js - 2
- PEX Interoperability for Java, .NET, Python - 3
- Java persister - 2
- ADONET and .
You’ve probably already seen that the October Article Bounty is 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:
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.
Hey Community!
We're happy to share the next video in the "Code to Care" series on our InterSystems Developers YouTube:
⏯ Before the Lightbulb: Understanding the First Phase of the AI Revolution in Medicine
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=""A01""></assign>
This doesn't complile
SomePackage.SomeClass extends EnsRules and the method is a classmethod and final
.png)
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.
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 🙌):
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
}
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— 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.
(3).jpg)
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.
