
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.
InterSystems IRIS is a Complete Data Platform
InterSystems IRIS gives you everything you need to capture, share, understand, and act upon your organization’s most valuable asset – your data.
As a complete platform, InterSystems IRIS eliminates the need to integrate multiple development technologies. Applications require less code, fewer system resources, and less maintenance.

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.If 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.
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.
Jinja2 is a popular templating engine from the Python ecosystem that enables fully dynamic content generation.
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 have also see some spurious licensing issues when failover occurs and users are logging back in. So we were wondering if using a separate License server (possibly hosted on the Arbiter machine) would help alleviate these licensing issues?
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
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:
<WebApplication
Name="/${namespaceLower}/api"
NameSpace="${namespace}"
DispatchClass="pkg.isc.genai.rest.Handler"
MatchRoles=":%All"
AutheEnabled="#{$$$AutheDelegated}"
Recurse="1"
CookiePath="/${namespaceLower}/"
/>with the AutheEnabled field.

This will be a short article about Python dunder methods, also known as magic methods.
Dunder methods are special methods in Python that start and end with double underscores (__). They allow you to define the behavior of your objects for built-in operations, such as addition, subtraction, string representation, and more.
Some common dunder methods include:
__init__(self, ...): Called when an object is created.
%OnNew method in ObjectScript.__str__(self): Called by the str() built-in function and printHi Guys,
I'm running : IRIS for UNIX (Ubuntu Server LTS for x86-64 Containers) 2024.3 (Build 217U), and I have https web request call to connect and get data from external server ( https://myserver.com/api/gap/...etc)
Hi all,
I’m working on a data transformation in IRIS where I need to calculate the difference in hours between two timestamps stored as %TimeStamp.
Example:
Set startTime = "2024-07-12 08:30:00"
Set endTime = "2024-07-12 15:15:00"
I’d like to calculate the number of hours (with decimals, like 6.75) between them. What's the recommended way to do this in ObjectScript? I’ve seen examples using $ZDATETIME, but I’m not sure if that’s the cleanest approach.
Any suggestions or best practices would be appreciated!
Thanks,
Jhonn Marie
We encountered difficulties while attempting to establish a JDBC connection to Intersystems using AZURE Databricks, resulting in an inability to retrieve data. The JDBC version utilized was intersystems-jdbc-3.3.1.jar. If anyone has successfully employed Databricks for establishing a connection, we would appreciate information regarding the libraries you used
Error Message:
org.apache.spark.SparkException: Job aborted due to stage failure: Task 0 in stage 0.0 failed 4 times, most recent failure: Lost task 0.3 in stage 0.0 (TID 3) (10.140.70.71 executor driver): java.sql.
Hi Developers,
We are happy to announce the new InterSystems online programming contest dedicated to creating useful tools to make your fellow developers' lives easier:
🏆 InterSystems Developer Tools Contest 🏆
Duration: July 14 - August 3, 2025
Prize pool: $12,000
(1).jpg)
Those curious in exploring new GenerativeAI usecases.
Shares thoughts and rationale when training generative AI for pattern matching.
A developer aspires to conceive an elegant solution to requirements.
Pattern matches ( like regular expressions ) can be solved for in many ways. Which one is the better code solution?
Can an AI postulate an elegant pattern match solution for a range of simple-to-complex data samples?
Hey Developers,
Watch this video from our Tech Video Challenge to learn how to set up and work with the InterSystems IRIS Java External Language Gateway.
You can check the free disk space at any time using the system utility class: SYS.Database and query: FreeSpace.
Here's how to try it in the IRIS terminal (go to the %SYS namespace and then run it):
zn "%SYS"
set stmt=##class(%SQL.Statement).%New()
set st=stmt.%PrepareClassQuery("SYS.Database","FreeSpace")
set rset=stmt.%Execute()
do rset.%Display()The output result example is as follows:
*In the command execution example, all databases are located on the same disk, so the free disk space (DiskFreeSpace) returns the same value.
We are looking for experienced InterSystems IRIS for Health developers to join a long-term healthcare technology project. You must be USA-based and available to work full-time remotely.
Interested candidates can DM here or email on: ali.ceo@softhawker.com
Hello Community
I was running code in the terminal and attempted to interrupt its execution. During that process, I encountered an application error with a log entry dated 01/06/1841, the date seems unusual..png)
Error <INTERRUPT>ErrST+6^%ETN occurred within %ETN itself. Detailed information cannot be logged.
We have messages that are in a queued state for various reasons and when we do a manual shutdown of the instance, they are moved to a Suspended state. I thought I saw in the documentation somewhere a setting to make sure these messages stay in a queued state and not suspend them. Can someone confirm and point me in the correct location for that documentation, as I am trying to ensure that if we do have to manually shutdown a instance, someone doesn't have to remember to go back in and check for suspended messages and resubmit them?
Thanks

Modules what a topic! We don't have this notion in ObjectScript, but it's a fundamental concept in Python. Let's discover it together.
I see modules as an intermediate layer between classes and packages. Let see it by example.
A bad example :
# MyClass.py
class MyClass:
def my_method(self):
print("Hello from MyClass!")
When you try to use this class in another script, you would do:
# class_usage.py
from MyClass import MyClass # weird, right?
my_instance = MyClass()
my_instance.my_method()
Why this is a bad example?
Hi,
I tried to create a client for Google Cloud Storage using a private endpoint.
like this:
S client=##class(%Net.Cloud.Storage.Client).%New()
S sc=client.CreateClient("",2,credentialsFile,"",.out,privateEndpoint)
But privateEndpoint seems not to be used when trying to send blob from a file:
D sc.UploadBlobFromFile(bucketname,blobname,filename)
We can see at the firewall that the client still tries to use the public endpoint for GCS.
Even if the private endpoint is definitely reachable.
When we allow the public endpoint in the firewall then it is working as expected.
Is that a bug?
The 2025.1.1 maintenance releases of InterSystems IRIS® data platform,InterSystems IRIS® for HealthTM, and HealthShare® Health Connect are now Generally Available (GA). Please share your feedback through the Developer Community so we can build a better product together.
You can find the detailed change lists & upgrade checklists on these pages:
There are many EAPs available now. Check out this page and register to those you are interested.
Users of the %UnitTest framework can now get test coverage information inside VS Code by combining the latest release (v2.0.0) of the InterSystems Testing Manager extension with @Timothy Leavitt's impressive Test Coverage Tool.

Above you can see the Test Coverage pane, which I have moved to the secondary sidebar on the right so it can more easily be explored in conjunction with the Test Explorer on the left.
Notice how the most recent test run (of all Test Coverage Tool's own unit tests) covered the BitValue method of TestCoverage.Procedures but not the BitCount method (nor 6 other methods).
InterSystems is pleased to announce the General Availability (GA) of the 2025.2 release of InterSystems IRIS® data platform. This is a Continuous Delivery (CD) release. Please note that the GA versions of InterSystems IRIS for Health™ and HealthShare® Health Connect™ 2025.2 are currently withheld due to mirroring limitations introduced by security updates (details below).
This release introduces impactful enhancements across security, developer experience, operations, and interoperability. Notable new features include:
1.
Working on wrapping an IRIS Cache ObjectScript method that runs for a few seconds. Trying to get UI updates to show BEFORE the method runs in an async/await function. But it seems to be running synchronously rather than asynchronously . So my question is does IRIS/ObjectScript CSP pages support futures with JavaScript or does it run all synchronously.
InterSystems Reports version 25.1 is now available from the InterSystems Software Distribution site in the Components section. The software is labeled InterSystems Reports Designer and InterSystems Reports Server and is available for Mac OSX, Windows and Linux operating systems.
This new release brings along enhancements and fixes from our partner, insightsoftware. InterSystems Reports 25.1 is powered by Logi Report Version 25.