Hey everyone.
My team and I have a rare opportunity to start from scratch, and I am keen to know what things others that have gone through a similar process did differently. Obviously there's the immediate benefit of losing any technical debt that has built up over 10+ years of an ever changing environment along with many organisational changes and merges, but I'm thinking about the things that we can do to make life a lot easier for the next 10+ years.
Hi, we are trying to adapt the solution to use the IKO but we have problems deploying the webgateway on our company clusters, our clusters requires to have a specific definition on the securityContext due security concerns, it's possible to set those values trough the IrisCluster CRD? or we cannot use it from it? Should I open a WRC to handle this?

create Pod iris-webgateway-0 in StatefulSet iris-webgateway failed error: pods "iris-webgateway-0" is forbidden: ValidatingAdmissionPolicy 'prevent-root-run' with binding 'prevent-root-run' denied request: Containers should run with securityContext.runAsNonRoot or securityContext.runAsUser != 0. To learn more, check out the documentation: https://build.roche.com...InterSystems Kubernetes Operator (IKO) 3.9 is now Generally Available. IKO 3.9 adds new functionality along with numerous bug fixes and security updates. Highlights include:
- podTemplate initContainers can now specify volumeMounts
- computeAffinity allows compute nodes to move to the zone of your primary data node
Follow the Installation Guide for guidance on how to download, install, and get started with IKO. The complete IKO 3.9 documentation gives you more information about IKO and using it with InterSystems IRIS and InterSystems IRIS for Health.
Hi Community,
Enjoy the new video on InterSystems Developers YouTube:
⏯ Streamlined Source Control with Embedded Git on InterSystems @ Ready 2025
Are you ready to make a difference? Choose to work for one of the most trusted companies in Kansas.
Why Join Us?
- Make a Positive Impact: Your work will directly contribute to the health and well-being of Kansans.
- FamilyComes First: Total rewards package that promotes the idea of family first for all employees. Paid vacation and sick leave with paid maternity and paternity available immediately upon hire
- Professional Growth Opportunities: Advance your career with ongoing training and development programs.
HealthShare Unified Care Record Fundamentals – In Person* June 22-26, 2026
*Please review the important prerequisite requirements for this class prior to registering.
- Learn the architecture, configuration, and management of HealthShare Unified Care Record.
- This 5-day course teaches HealthShare Unified Care Record users and integrators the HealthShare Unified Care Record architecture and administration tasks.
- The course also includes how to install HealthShare Unified Care Record.
- This course is intended for HealthShare Unified Care Record developers, integrators, administrators and managers.
#InterSystems Demo Games entry
⏯️ Text-to-SQL and MQTT Monitoring
A text-to-sql demo on mqtt data analytics with RAG.
🗣Presenter: @Jeff Liu, Sales Engineer, InterSystems
In our previous article, we explored the basics of unit testing in IRIS and the ways to apply it to a REST API. We even figured out how to test logic before finalizing network configurations and authentication, allowing us to focus solely on testing the API contents. Today, we will build upon that foundation and elevate our unit testing strategy by using another tool: %Populate .
At first glance, the %Populate class appears to be very simple. You can create a class that extends both %Persistent and %Populate and inherit a Populate method designed to generate randomized records.
We have a long running InterSystems Engine with an Interface Development Team. We have implemented basic interface and code development processes using mostly manually created helper tasks and functions.
We are looking to upgrade these processes by installing and starting to use Embedded GIT in our DEV spaces first. We will not use it to deploy changes to PRODUCTION at first, keeping our same current process that the team is very comfortable with.
We plan to start by using the BASIC mode in GIT, to avoid confusion over multiple branches and other version control functions.
What tools or techniques do you use to debug a Production during development? I know the Management Portal shows the message queue and event log, but I'm wondering if there are better ways to trace a message through the full BS > BP > BO flow without relying only on logs.
Hello,
Looking for some additional help, maybe someone who has experience with this before, in setting up and configuring the Web Gateway with Kerberos.
Have read through the documentation (at the link below) and it's a good start but seems there are some details missing, or I'm not clear on.
Questions:
- Is there a external enterprise Kerberos server required, or is this set up contained within the local server?
- Is there a step-by-step instructions on what to do and configure to successfully complete this?
- Are there there config changes necessary for Apache?
Hello everyone, I am working with the VSCode extension by connecting to clients' IRIS servers remotely with my personal user (pdileo). However, one of the development environments was recently updated and my user was created for the second time with a different password.
I noticed that the VSCode extension no longer allows me to log in because the password has been changed, without asking me for a new one, only showing the 401 AxiosError.
Vector search is a retrieval method that converts text, images, audio, and other data into numeric vectors using an AI model, and then searches for items that are semantically close. It enables “semantic similarity search” from free text, which is difficult with keyword search alone.
However, in real use, I encountered cases where results that are “close in meaning” but logically the opposite appeared near the top of the search results.
This is a serious issue in situations where affirmation vs. negation matters. If the system returns the wrong answer, the impact can be significant, so we cannot ignore this problem.
This article does not propose a new algorithm. I wrote it to share a practical way I found useful when semantic search fails due to negation.
TL;DR: This article demonstrates how to run GraphRAG-style hybrid retrieval—combining vector similarity, graph traversal, and full-text search—entirely within InterSystems IRIS using the
iris-vector-graphpackage. We use a fraud detection scenario to show how graph patterns reveal what vector search alone would miss.
Why Fraud Detection Needs Graphs
Every year, businesses and consumers lose billions to fraud. In 2024 alone, consumers reported $12.5 billion lost—a 25% increase year over year. What makes modern fraud so difficult to detect is that fraudsters rarely work alone.
Hi Developers!
Here are the technology bonuses for the InterSystems Programming Contest: AI Agents for FHIR that will give you extra points in the voting:
- Implement suggested task - 5
- InterSystems FHIR Server usage - 2
- Vector Search usage - 4
- Embedded Python - 3
- LLM AI or LangChain usage: Chat GPT, Bard, and others - 3
- Docker container usage - 2
- ZPM Package deployment - 2
- Online Demo - 2
- Implement InterSystems Community Idea - 4
- Find a bug in Vector Search or Embedded Python - 2
- First Article on Developer Community - 2
- Second Article On DC - 1
- First Time Contribution - 3
- Video on YouTube - 3
Welcome back to a series of introductory articles on AI Hub, the new product feature currently in an early access program! (links: EAP Site for download, documentation)
In the last article, we covered how to create agents and agent tools directly in ObjectScript using the new %AI classes. However, sometimes, instead of creating a new agent, you just want to add some custom tools to an existing agent so you can ask your local claude code, codex, copilot or other agent of choice to query your data directly. This is where MCP Servers might come in.
Hi Community,
In traditional InterSystems SQL, I can use the %NOINDEX keyword during a bulk INSERT to improve performance and then run BUILD INDEX %ALL afterward to populate the indices.
I am looking to implement a similar strategy for an InterSystems FHIR Server.
- Is there a way to import/save FHIR resources while skipping the search table extraction (the FHIR version of
%NOINDEX)? - Once the data is loaded, what is the correct programmatic way to "rebuild" the search tables?
Thank you!
Hi Community,
Interoperability metrics were enabled for a production using ##class(Ens.Util.Statistics).EnableSAMForNamespace(). However, after running DisableSAMForNamespace() and DisableStatsForProduction(), the metrics continue to appear in the endpoint output.
Is there a way to completely stop these interoperability metrics from displaying in the API metrics stream? Is there an additional step or cache clear required?
I'm connecting to Intersystems Cache database using Intersystems JDBC Driver. There are several network interfaces on client host. I need to make all the Cache traffic to go through a particular interface. Is there a way to choose which network interface to use for Cache connection via JDBC Driver API or somehow via Java code? The approach to use ip route add is suitable but I'm looking for a Java-way like setLocalAddress() on some APIs or something.
I made a custom application metric, imported it to the USER namespace and used:
set status = ##class(SYS.Monitor.SAM.Config).Add.ApplicationClass("historymonitor.errorSensor", "USER")
to add it. When I do 'w status' it returns 1 so it is added but I still can't see the custom metric in the api/monitor/metrics endpoint. Even though I added %DB_USER in the application roles for api/monitor.
Does anyone know where the problem might be that the metrics endpoint still doesn't show my metric?
Hi community.
How do i count distinct values over cumulative date dimension?
I got calculated measure function defined in cube: COUNT([dimension].[H1].[dimension].Members, EXCLUDEEMPTY)
[dimension].[H1].[dimension] = non-unique numerical fields of ids
Then i got AGGREGATION function defined in Analyzer (that stored in ^DeepSee.CalcMbrs):
AGGREGATE(%TIMERANGE(TimeDimension.hierarchy.level,TimeDimension.hierarchy.level.CurrentMember),Measures.Measure)This return an error:
ERROR #5001: No member provider object found for member function: MEMBER(5)All syntax is correct. I checked it twice.
Hey Community,
We're pleased to invite everyone to the upcoming Kick-off Webinar for InterSystems Programming Contest: AI Agents for FHIR!
Date & Time: Tuesday, May 26 – 12 pm EDT | 6 pm CEST
Hi Community,
Enjoy the new video on InterSystems Developers YouTube:
⏯ Solving Supply Chain Challenges with Data-Driven Intelligence @ Ready 2025
With Embedded Python and the Native API, it is becoming increasingly natural to write part of IRIS application logic in Python. But one question quickly comes up: how can you manipulate IRIS persistent objects from Python without losing the connection to the native object model, class dictionary, indexes, storage, and SQL projections?

iris-persistence explores that question. The project provides a Python object persistence layer for InterSystems IRIS, inspired by %Persistent
We’re introducing a brand-new badge line on Global Masters for participants of the Community Bounty Program “Idea to Application” 🎉
This program turns ideas from the Ideas Portal into real applications published on Open Exchange while rewarding developers with points, badges, visibility, and recognition across the ecosystem 🚀
I am working on a cache database query. Since the cache database doesn't support CTE I am using joins to calculate data. The issue is that aggregated data is only calculated for one where the condition for each row in the union. For eg. only the 'Prop decisioned' row is calculated others are always 0. There are many more case conditions.
Hello everyone,
As part of our recent initiative to modernize our observability stack, we have successfully transitioned our InterSystems IRIS logging framework to a structured JSON format. Now we need to dynamically enrich these logs with business-critical metadata specifically, theTenant ID.
We have this configmap to enable Json logs:
apiVersion: v1
kind: ConfigMap
metadata:
name: iris-cpf-merge
namespace: {{ .Release.Namespace }}
data:
merge.cpf: |
[Logging]
ChildProcessLaunchCommand=/usr/irissys/bin/irislogd -f /tmp/messages.json
Format=JSON
Enabled=1I’m exploring deployment options for InterSystems IRIS in cloud environments such as AWS or Azure.
What deployment architectures, scaling strategies, or infrastructure best practices are commonly recommended by the community? I’d also appreciate guidance regarding high availability, backups, and monitoring in cloud-based deployments.
IRIS is installed and running in an Ubuntu VM.
Visual Studio Code is being used in the host Windows OS and is connected to the IRIS server.
When attempting to execute commands with sudo from the InterSystems Lite Terminal in VSCode using $ZF(-100), error code 127 is returned.
I tried configuring Ubuntu to avoid password prompts by adding the following line to /etc/sudoers.tmp:
However, the above configuration did not work.
Is there a way to execute sudo commands from InterSystems IRIS Production ObjectScript code in Ubuntu?

