Article Piyush Adhikari · Dec 24, 2025 6m read

InterSystems API Manager (IAM) is a core component of the InterSystems IRIS Data Platform, offering centralized API management with a strong emphasis on security. IAM simplifies the entire API lifecycle, from creation to retirement, and provides a developer portal for easy API discovery and integration. Access control features allow administrators to define precise permissions, and IAM seamlessly integrates with the IRIS Data Platform, enhancing data management and integration capabilities.

Features of IAM include:

  • API Gateway: Centralized API management and security hub.
  • API Lifecycle
0
0 78
Article Tani Frankel · Dec 24, 2025 2m read

You send an HTTP request and get back an HTTP error but with an HTML error page which you didn't expect... what's happening?... 🤔

Specifically for example, perhaps you tried to READ a FHIR Resource (e.g. /Patient/123) and you get back a 404 error page, even though with other Patient IDs, you get back the Resource payload, so "the page" definitely does exist... why should you be getting a 404 error page? 🙄

0
0 110
Article Vachan C Rannore · Oct 21, 2025 3m read

Hello!!!

Data migration often sounds like a simple "move data from A to B task" until you actually do it. In reality, it is a complex process that blends planning, validation, testing, and technical precision.

Over several projects where I handled data migration into a HIS which runs on IRIS (TrakCare), I realized that success comes from a mix of discipline and automation.

Here are a few points which I want to highlight.

1. Start with a Defined Data Format.

Before you even open your first file, make sure everyone, especially data providers, clearly understands the exact data format you expect. Defining templates early avoids unnecessary bank-and-forth and rework later. 

While Excel or CSV formats are common, I personally feel using a tab-delimited text file (.txt) for data upload is best. It's lightweight, consistent, and avoids issues with commas inside text fields. 

PatID   DOB Gender  AdmDate
10001   2000-01-02  M   2025-10-01
10002   1998-01-05  F   2025-10-05
10005   1980-08-23  M   2025-10-15

Make sure that the date formats given in the file is correct and constant throughout the file because all these files are usually converted from an Excel file and an Basic excel user might make mistakes while giving you the date formats wrong. Wrong date formats can irritate you while converting into horolog.

12
2 225
Article Karthickraja S · Dec 18, 2025 2m read

The Power of Indexing in Database Tables

When working with databases, most developers understand the concept of an index and why it's used: to speed up data retrieval. But the real impact of indexing often becomes clear only when you compare scenarios with and without it.

Do you Know what Happens Without an Index?
Imagine a table with three columns: Name, Age, and MobileNumber.


Now, consider this query:

If the Age column does not have an index, the database engine will:

  • Check if the WHERE condition field has an index.
  • If not, it will scan the entire table (a full table scan).
  • For each row, it
3
2 112
Announcement Irène Mykhailova · Nov 13, 2025

Hi Community,

We’d like to remind everyone of the value your feedback and observations bring to improving InterSystems products. Our customer support is world-famous, but if you're not a formal customer yet it can be confusing how to engage with us. We have now filled that gap.

Every time you notice an issue - whether it’s a broken feature, a UI glitch, or something that just doesn’t work as expected - the Ideas Portal is now also the way to submit bug reports.

***REMEMBER: If you have access to WRC, please submit the report via WRC as usual!***

Here’s how it works:

1. Go to the Ideas Portal and click Add a new idea

2. Provide the title, short description, choose “Bug reports” in the category field, and click Next

18
1 240
Article Tani Frankel · Dec 22, 2025 1m read

Looking at my database I see I have a very big ^rINDEXSQL global? Why is that? 😬

In the Management Portal SQL page, under "SQL Statements" I see a 'Clean stale' button - what does this do? 🤔

In the list of Statements some have a 'Location' value and some don't? How is that? 🤨

0
1 87
Question Nimisha Joseph · Dec 19, 2025

We have created a CSP application in the path /csp/ourapp. Due to some session handling issues, we created a new web application /csp/ourapp/hl7mapping that points to the sane namespace, and we now access the CSP pages using this new URL. This works fine in the local system.

After deploying the app to server, we are facing issues around compiling CSP pages.

We noticed that following compilation command works for CSP files located under the physical path /csp/ourapp, but it does not compile the CSP files placed under /CSP/ourapp/hl7mapping.

do $SYSTEM.CSP.LoadPageDir("/CSP/ourapp/","ck")

Because

2
0 89
Question Ashok Kumar T · Dec 15, 2025

Hello Community,

What is the correct way to import and compile .dfi files when using zpm load? Do .dfi files need to be defined in module.xml?

I have code that imports the .dfi file successfully; however, when I run
zpm "load /home/irisowner/dev/ -v"

I get the message: Unknown file type. Skipping file: .pivot.DFI

    zpm "install isc-dev"do##class(dev.code).workdir(dir)
    do##class(dev.code).import("*.DFI")

Thank you!

30
0 215
Article José Pereira · Dec 7, 2025 16m read

Project Overview / Introduction

Developing and testing REST APIs in InterSystems IRIS often requires a significant amount of boilerplate code. While ObjectScript provides powerful tools for building APIs, writing consistent and repeatable tests can be time‑consuming. This is where IrisOASTestGen comes in.

IrisOASTestGen is a utility designed to generate the structure of test classes and the supporting utility code directly from an OpenAPI 2.0 specification. It leverages the OpenAPITools openapi‑generator under the hood to scaffold test stubs and helper methods that make it easier to interact

2
0 107
Article Dmitrij Vladimirov · Dec 1, 2025 5m read

In this article, we will discuss all the debugging tools included in the Microsoft Visual Studio Code IDE.

What will be covered:

  • Breakpoints
  • Watch window
  • Call Stack

Let's start by learning about debugging requirements!

Prerequisites

There are two plugins (extensions) for debugging ObjectScript:

The first is part of the InterSystems ObjectScript Extension Pack. The second is Serenji, a standalone plugin that provides an editor, file manager, and debugging functionality. Both plugins can be installed from the plugin store. To activate key functionality, Serenji requires a license. For this article, we'll use the InterSystems ObjectScript Extension Pack to reduce the learning curve. After you've mastered the basics, you can consider purchasing a paid license for Serenji.

2
5 272
Announcement Anastasia Dyubaylo · Dec 16, 2025

As part of our 10-year celebration, we are pleased to recognize certain members whose long-standing contributions have significantly shaped the InterSystems Developer Community.

Over the past decade, these individuals have shared knowledge, supported peers, and helped strengthen the collaborative spirit that defines our Community.

To honor their impact, we are introducing a special set of 10th Anniversary Edition awards and Global Masters badges:

17
0 372
Article Stav Bendarsky · Feb 3, 2025 6m read

Monitoring your IRIS deployment is crucial. With the deprecation of System Alert and Monitoring (SAM), a modern, scalable solution is necessary for real-time insights, early issue detection, and operational efficiency. This guide covers setting up Prometheus and Grafana in Kubernetes to monitor InterSystems IRIS effectively. 

This guide assumes you already have an IRIS cluster deployed using the InterSystems Kubernetes Operator (IKO), which simplifies deployment, integration and mangement.

 


Why Prometheus and Grafana?

Prometheus and Grafana are widely adopted tools for cloud-native monitoring

11
15 870
Question Dmitrii Baranov · Dec 19, 2025

I am experimenting with OpenTelemetry and recently connected all IRIS instances to telemetry servers. I'm not interested in emitting custom metrics since IRIS does it fine, regarding tracing - we can use %Trace classes to emit custom traces, but what about logging?

I see that IRIS is able to send system log messages to the OpenTelemetry servers:

{
  "when": "2025-12-10 10:46:25.185",
  "pid": "11852",
  "level": "SEVERE",
  "event": "Generic.Event",
  "text": "ISCLOG: CSPServer  Error displaying login page $ZE= ns=TEST rtn=%SYS.cspServer ...(repeated 2 times)"
}

Is this possible to send custom

0
0 65
Question Alan Nguyen · Dec 10, 2025

Hi,

I have Cache 2024.1.  I attached the process ID from my terminal to the Cache Studio for Debugger.  When I click on  "Call Stack" tab I only see first 500 shown.  Anyone know how to extend so I can see the rest of the information when i click on "Call Stack" tab?  Thank you very much.

Second question:  Using Cache Studio Debugger, anyone know how to expand the value of this variable when it display F,...

3
0 86
Article Megumi Kakechi · Dec 18, 2025 1m read

InterSystems FAQ rubric

If you try to kill a global that is mapped at the subscript level from the top node, you will get a <SLMSPAN> error and it will not be deleted. This is because the kill command for subscript-level mapped globals cannot be used across mappings.

// Suppose subscript-mapped globals exist in different databases, as shown below:^TEST(A*~K*) -> database A
^TEST(L*~Z*) -> database B

// Trying to kill from the top level will result in a <SLMSPAN> error.
NAMESPACE>Kill^TEST
<SLMSPAN> <- This error is output.

To delete only the global in the current namespace (database),

0
0 75
Article Keren Skubach · May 5, 2025 4m read

An extension “extends” or enhances a FHIR resource or a data element in a custom way. The extension can be added to the root of a resource, such as “Patient.ethnicity” in US Core profile, and they can be added to individual elements such as HumanName, Address or Identifier.

Did you know that you can also add an extension to a primitive data type?

Primitives usually store a single item and are the most basic element in FHIR. For example: "Keren", false, 1234, 12/08/2024 etc.

For example, the patient resources might look like this:

The gender, birthDateor family elements are primitive elements,

2
2 364
Announcement Anastasia Dyubaylo · Dec 17, 2025

Hello Community,

✨ As we wrap up another incredible year on the Developer Community, it’s time to look back at everything you accomplished in 2025! Your personal 2025 Recap is now live — a tailored snapshot of your activity, milestones, and the value you brought to the community this year.

From the articles you shared to the discussions you sparked, your contributions helped shape the knowledge and collaboration on our platform. Now you can revisit all of it in one place!

2
0 64
Article Kurro Lopez · Dec 18, 2025 2m read

Hi everyone.

I'm going to give you a quick tip on how to implement an AI agent to search the Intersystems documentation integrated into Teams.

Yes, I know the documentation page has its own AI search engine and it's quite effective, but this way we'd have faster access, especially if Teams is your company's corporate tool.

You can also create another AI agent to search articles published in the developer community (which also has its own integrated AI search engine).

0
1 74
Question Matthew Cummings · Oct 14, 2021

Hello all,

First time post and newer to Cache/ObjectScript in general, please keep it in mind! 

Some background: I need to build part of a production whose goal is to send patients emails based on appointment status as a daemon-based approach. I have to use Microsoft Graph to accomplish this, which you need an access token to use. To get the access token, I have to go through the OAuth2.0 client credentials grant flow, which involves the creation of a signed JWT assertion using the RS256 algorithm.  
I was looking at the %OAuth2.JWT class to accomplish this, via its ObjectToJWT() method.

10
1 1537
InterSystems Official Benjamin De Boe · Mar 12, 2025

Hi,

We’re launching an Early Access Program for an upcoming Table Partitioning feature that will help IRIS customers manage very large tables, and distribute row data and associated indices across databases and storage tiers. Table Partitioning cuts deep into the core of IRIS relational data management, so we want to make sure we get things right through working with a few engaged customers who can provide feedback on the initial deliverables, and fine-tune as needed.

If you are working with very large relational datasets, looking for more operational efficiency, and willing to roll up your

12
1 357
Question Scott Roth · Dec 17, 2025

I want to extract data from IRIS (Health Share Provider Directory) and write the data out to a file that I can use within an external system. Using EnsLib.SQL.Service.GenericService do I need to supply Credentials if I am querying IRIS locally? I have always used JDBC to connect externally when creating Services and Operations to read/write SQL data from external Databases, but never internally. Normally I would just use sql or code to pull the data within a Process or DTC. But in this case, I want the Service to drive the workflow, and query the data from Local Tables

1
0 62
Question Scott Roth · Dec 17, 2025

Using a Workflow Task within HealthShare Provider Directory, when a user clicks on Resubmit message within my Business Process, I check the status of the response. If the response is "Resend Message", I have my Business Process executing the following...

set tSC = ##class(Ens.MessageHeader).ResendDuplicatedMessage(context.SessionID)
 if$$$ISERR(tSC) $$$LOGSTATUS(tSC)

the context.SessionID is the Session ID of the message as it is being pass thru the Business Process. Does anyone see why that would not work off hand?

3
0 59
Question Kurro Lopez · Dec 16, 2025

Hello everyone.

I have a question regarding the priority when applying a default configuration.

I have several Business Services that use the same class, so I want them all to have a common "Schedule" configuration.

However, there's one that I don't want this default configuration applied to, so I've tried setting the Schedule value to empty for that element based on its name:

In this case, the elements that use the class Kurro.BS.SFTP.Marca have the default value "CargaFicheros".

However, one of the elements (Kurro.BS.SFTP.Special) should not have this configuration, so I have created an entry

2
0 56
Question Eduard Lebedyuk · Mar 4, 2025

I have an Embedded Python method, which is essentially a call to one third-party module.

Most of the time, the method takes <0.1 seconds to execute, but sometimes it takes 30 or 60 seconds.

The server is relatively idle (20-30% CPU load).

How can I debug this issue further? Ideally, I want to know where this library spends the time. The library is mainly Python code (it's boto3, so it's not a Python C API proxy library).

4
0 192