InterSystems is pleased to announce that version 3.0.5 of the VS Code - ObjectScript extension has been released. This release includes many bug fixes, as well as changes to the telemetry data we collect. Collecting more product usage data helps InterSystems identify and prioritize fixes and enhancements that will have the most positive impact for you, our users. Personally identifiable information (PII) will never be collected, and telemetry can be disabled using the telemetry.telemetryLevel setting. The full list of data points that are collected can be found here. Thank you for using our
I am trying to catch an exception and write it to the Application Error Log, but cant find any details on how to do this in IRIS health.
Catch ex {Set logger = ##class(%Logger).%GetLogger("MyApp")Do logger.Error($ZError)}Cant seem to find the %Logger class either.
I'm following this guide as well as the sample.cs file and getting an error message on this linecache_connection.Connect();
The error is:Caught GlobalsException: lc_conn::connect_device returned Db_err: source: lc_conn::connect() message: lc_conn::connect: CacheSecureStart returned -15: <ACCESSDENIED>
I've tried many variations of Namespace + Username + Password and they all result in that error, even though I can connect to the namespace just fine using other means.

This will be a short article about PEP 8, the Python style guide.
What is PEP 8?
In a nutshell, PEP 8 provides guidelines and best practices on how to write Python code.
- variable names should be in
snake_case - class names should be in
CamelCase - function names should be in
snake_case - constants should be in
UPPER_CASE - indentation should be 4 spaces (no tabs)
- private variables/functions should start with an underscore (
_)- because in Python private variables and fonctions doesn't exist, it's just a convention
- your script should not run when imported
- remember that when you import a script, the
I need to implement a retry policy for an incoming message queue containing thousands of relatively small messages.
Successfully processed messages should be immediately removed from the queue.
If an error occurs while processing a message, the message should be sent back at the end of the queue, and the pause before re-processing this message should increase geometrically (1-2-4-8-16 seconds, and so on).In languages that support the async/await pattern, I'd simply create a delayed timer that triggers a fire-and-forget task.This would prevent blocking the main thread.
Hi,
I have a mirrored database called ROUTER.
I have a primary server T1 and a "Disaster Recovery" server T2.
When I activate ROUTER database on T2, I get the error it says the "Database could not be mounted".
I went to the audit database and it shows "Attempt to access a protected database".
T2 in mirror monintor shows "Connected" "Caught up" "Warning! Some databases need attention"
T2 show the ROUTER database as being "Mounted/R"
Both T1 & T2 are Linux servers. The ROUTER database file IRIS.DAT have the same Linux permissions
All productions on T1/T2 are not running.
What causes the error "Attempt
I am trying to create users who only have `%SQL` Role for the INSTANCE. But I am unable to find any documentation on the `Security.Users` class.
See:
// Instantiate the Security.Users objectSet userObj = ##class(Security.Users).%New()// Set the username and passwordSet userObj.Name = userNameSet userObj.FullName = userFullNameSet userObj.Namespace = "USER"Set userObj.Roles = "%SQL" Set sc = userObj.ChangePassword(passwd)// Save the user to the databaseSet ss = userObj.%Save()
I cant figure out the "Namespace" property for this
Hi InterSystems Community! I'm Sidd one of the interns at the Singapore office and I recently had the chance to develop to develop a driver to connect IRIS to Metabase to help some of the Sales Engineers here. I was encouraged to share it here so that if any others have a similar issue they can use the driver and as well as get some feedback on potential improvements. The full GitHub repo with the quick start step, brief overview and the driver building process can be found here. The main purpose of this post will be to go more into detail into the main driver code and talk about ideas on how
Until now i used $ZF(-1), in older Caché versión, now I try to use $ZF(-100), i do:
REST>w $ZV Cache for Windows (x86-64) 2018.1.4 (Build 505_1) Thu May 28 2020 10:12:49 EDT REST>s a=$zf(-100,"/SHELL","dir") S a=$ZF(-100,"/SHELL","dir") ^ <NOTOPEN>
What is wrong?
Thanks in advance
Hi Community,
If you've decided to leave the InterSystems Developer Community, we're sorry to see you go! This guide will walk you through the steps to permanently delete your account.
⚠️ Before you begin: please note that deleting your account is irreversible. If you simply want to stop receiving notifications, consider updating your notification settings.
How to request account deletion:
🛠️ Managing InterSystems InterSystems API Manager (IAM = Kong Gateway) configurations in CI/CD
🔍 Context: InterSystems IAM configurations
As part of integrating InterSystems IRIS into a secure and controlled environment, InterSystems IAM relies on Kong Gateway to manage exposed APIs.
Kong acts as a modern API Gateway, capable of handling authentication, security, traffic management, plugins, and more.
However, maintaining consistent Kong configurations (routes, services, plugins, etc.) across different environments (development, testing, production) is a major challenge. This is where tools like
Our goal on the Developer Community is to foster a high-quality, trustworthy, and original body of technical content created by and for developers. While AI tools like ChatGPT can be helpful in the writing process, we expect all published content to reflect authentic expertise and personal understanding. If you have any questions or wish to discuss your coding problem with an AI, consider using our Developer Community AI chat.
Acceptable Use of AI
We recognize that AI tools can assist with editing and clarity. You may use them in the following ways:
- To fix grammar, spelling, and punctuation.
- T
Hi Community,
Enjoy the new video on InterSystems Developers YouTube:
⏯ From Idea to Impact: The InterSystems Approach @ Global Summit 2024
Hi,
After converting from Ensemble 2018 to IRIS 2024 I noticed that HTML tag is not recognized?
.png)
I just copied & pasted this same from Ensemble to IRIS and in Ensemble looks fine!?
.png)
Thanks
Hello Community!
We have this json payload for an api request we are making.
{
"fromDirectAddress" : "john@meda.com",
"toDirectAddress" : "smith@domain.com",
"emailAttachmentList" : [
{
"attachmentClass" : "application/xml",
"attachmentContent" : "PHRlc3Q+TWVkQWxsaWVzPC90ZXN0Pg==",
"attachmentTitle" : "MR-Lumbar Spine without contrast_1",
"attachmentFileName" : "ClinicalDocument"
},
"messageId" : "urn:uuid:a2d59543-91f4-45a4-99ef-72d70da1e454"
}
I created two classes (see below) but I am having issues with setting the emailAttachm
Hello everyone,
I'm using EnsLib.TCP.TextLineOutboundAdapter to communicate with a third-party system over TCP/IP. The issue is that the system sends back only an integer (e.g. 1001 or -1) without any terminator (like $c(10)).
The adapter expects a terminator and always times out with ErrTCPTerminatedReadTimeoutExpired, even though the correct data is received. Here an example of an error:
[TCPSender] Errore nell'invio: ERROR <Ens>ErrTCPTerminatedReadTimeoutExpired: TCP Read timeout (15) expired waiting for terminator 0, data received ='1005'
Trying different terminators (e.g. $c(0), $c(13))did
I'm trying to print from Cache and I have setup the device, but keep getting a message that someone else is using it. this is RHEL 7.9. I have cups running and I can print from the command line. I have also issued this command: lpadmin -p KM501L -u allow:all
what am I missing
thanks
Paul
Hey Community,
Last week, the InterSystems team held our monthly Developer Meetup in a new venue for the first time ever! In the AWS Boston office location in the Seaport, over 71 attendees showed up to chat, network, and listen to talks from two amazing speakers. The event was a huge success; we had a packed house, tons of engagement and questions, and attendees lining up to chat with our speakers afterwards!

Jayesh presents on Testing Frameworks for Agentic Systems to a full house
InterSystems IRIS 2025.2 introduces the IRISSECURITY database, the new home for security data. Unlike IRISSYS, the previous home for security data, IRISSECURITY can be encrypted, which secures your sensitive data at rest. In a future version, IRISSECURITY will be mirrorable.
This version also introduces the %SecurityAdministrator role for general security administration tasks.
The changes described here affect both continuous delivery (CD) and extended maintenance (EM) release tracks.
Hello Community
The InterSystems IRIS Community License for Iris version 2024.1 is about to expire. I would like to know if there’s a way to extend this license, or if I need to upgrade to the latest version of Iris.
Thanks!
Hi Community!
We’re pleased to announce that several Early Access Programs (EAPs) are now open for registration. These programs provide developers with the opportunity to explore upcoming features and technologies from InterSystems before their general release.
By joining an EAP, you can:
- Evaluate and test new functionality
- Provide direct feedback to product teams
- Help shape the future direction of InterSystems platforms
If you're interested in contributing to the evolution of our tools and getting early insight into what's coming next, we encourage you to review the following available programs and sign up:
At hackathons that InterSystems participated and I supported, many students were asking how all their teammates could use the same IRIS database that they spun up in a container. I suggested using ngrok to expose their localhost IRIS and realized we don't have documentation on that. Hence, I thought this would be great to let more people knwo about this powerful technique for enhancing collaboration during development and testing.
Step-by-Step Guide to Exposing InterSystems IRIS with ngrok
This guide will walk you through the process of exposing your local InterSystems IRIS instance using ngrok.

This will be an introduction to Python programming in the context of IRIS.
Before anything I will cover an important topic: How python works, this will help you understand some issues and limitations you may encounter when working with Python in IRIS.
All the articles and examples can be found in this git repository: iris-python-article
How Python works
Interpreted Language
Python is an interpreted language, which means that the code is executed line by line at runtime even when you import a script.
What does this mean ? Let's take a look at the following code:
# introduction.py
def my_function():Hello Again,
InterSystems Certification is still looking for people to beta test the InterSystems IRIS SQL Professional Certification exam. This is a great way to earn the certification for free! We have extended the deadline of the beta test to October 30, 2025.
Please note, only candidates with the pre-existing InterSystems IRIS SQL Specialist certification are eligible to take the beta. For details, see the original announcement.
Thank you!
Hey Community!
We're happy to share the next video in the "Code to Care" series on our InterSystems Developers YouTube:
⏯ Agentic AI in Action: Building a Decision-Making Loop with LLMs
Faced with the enormous and evergrowing amounts of data being generated in the world today, software architects need to pay special attention to the scalability of their solutions. They must also design systems that can, when needed, handle many thousands of concurrent users. It’s not easy, but designing for massive scalability is an absolute necessity.

Software architects have several options for designing scalable systems. They can scale vertically by using bigger machines with dozens of cores. They can use data distribution (replication) techniques to scale horizontally for increasing numbers of users. And they can scale data volume horizontally through the use of a data partitioning strategy. In practice, software architects will employ several of these techniques, trading off hardware costs, code complexity, and ease of deployment to suit their particular needs.
This article will discuss how InterSystems IRIS Data Platform supports vertical scalability and horizontal scalability of both user and data volumes. It will outline several options for distributing and partitioning data and/or user volume, giving scenarios in which each option would be particularly useful. Finally, this paper will talk about how InterSystems IRIS helps simplify the configuration and provisioning of distributed systems.
As foreign tables are behind a paywall (booo); we have a external cache system using the intersystems ODBC driver or usually a .jar CacheDB.jar.
The requirement is :
"Create a copy of the external table once a day to perform comparisons to detect changes"
We could go full code and this is what we will do but trying the following should ideally work
CREATETABLE Sample.YoungPeopletwo ASSELECT *
FROM Pennine_TIE_Clinicom_Link.PMISPECIALREGNCA
WITH STORAGETYPE = COLUMNARThis resulted in
[SQLCODE: <-400>:<Fatal error occurred>]
[%msg: <Exception caught during dSQL statement %Execute:Hello,
I need to expose InterSystems HealthInsight dashboards over the internet to external operators. The authentication flow is managed externally. When a user is authenticated, our system receives an HTTP request with specific headers (e.g., operator’s fiscal code and hospital identifier) that we need to extract in order to:
- Authorize the user to access the dashboards.
- Apply row-level security on the dashboards, filtering the data by hospital and user role.
I created a new Web Application on IRIS as shown in the screenshot:

I follow this page of the documentation for the settings: https://
Hi,
Using the below code to connect and get data from a server:
Class SX3.Production.HTTP.AdvCredenials Extends (%RegisteredObject, %Net.WebSocket.ICredentials)
{Method GetUsername() As %String
{
quit ""
}/// Returns the password to use for authentication with the web socket
/// @API.Overrideable
Method GetPassword() As %String
{
quit ""
}Method GetSSLConfiguration() As %String
{
q "RTLS"
}}
Class SX3.Production.HTTP.AdvListener Extends (%RegisteredObject, %Net.WebSocket.IEventListener)
{Method OnOpen()
{
S ^badis("mess",3)=1
if $increment(%ct("O")) set io=$io use 0 write "OPEN",! break:$get(%b) use io
}/
So I would like to start a production with a service that has an SQL trigger for after and INSERT. Then I would like it to start a process. Could someone help me in the direction of a solution, please and thanks.

