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.
Hi Community,
Please welcome the new video on InterSystems Developers YouTube, recorded by @Stefan Wittmann:
⏯ Supporting All Tools for Development in InterSystems IRIS

AnalyzeThis is a tool for getting a personalized preview of your own data inside of InterSystems BI. This allows you to get first hand experience with InterSystems BI and understand the power and value it can bring to your organization. In addition to getting a personalized preview of InterSystems BI through an import of a CSV file with your data, Classes and SQL Queries are now supported as Data Sources in v1.1.0!
Hello Community,
Thank you all for your continued feedback and support of our ad hoc reporting platform, VDM. There's been some questions around setting up a non-ODBC connection for InterSystems platforms. We published a new YouTube video showing the steps necessary to connect to InterSystems Caché and InterSystems IRIS with BridgeWorks VDM.
When do implicit assumptions in code and arithmetic operators pose a real danger, and how can this danger be overcome?

Constantinople in the 5th century AD
(It was possible for people to build grandiose buildings and vehicles without the use of computers and robots 1,600 years ago.)
If you assign dimensionless numbers to physical parameters in your code, you risk misunderstandings and errors when calculating and converting between units of measurement.
Hi Community,
New video, recorded by @Raj Singh, is available on InterSystems Developers YouTube:
⏯ What Keeps Developers Up at Nigh
Hi,
I have two namespaces
- In the first one, I have defined a class which Extends (%Persistent, Ens.Util.MessageBodyMethods), we'll call it NSOne.Msg.Req
- In the second namespace NSTwo, I want to use the previous class with something like SET pInput = ##class(NSOne.Msg.Req).%New()
I mapped the NSOne.Msg.Req package in namespace NSOne. In Atelier, I can see NSOne.Msg.Req in my NSOne. But, when I try to execute line 2 above, it tells me :
{
"status": {
"errors": [
{
"error": "ERROR #5002: ObjectScript error: <PROTECT>^NStwo.Api.1Hi,
we're planning some work on our SQL Query Plan functionality for a future release of InterSystems IRIS and are interested to hear how you're using them today, or what'd keep you from using them. Rather than try and fit everything in a rigid survey, I thought a simple thread on our beloved DC might also reveal some use patterns that we support or could do a better job on.
Hi All - I want to share with the community a project I recently posted in OpenExchange, that extends on the Business Activity Monitoring features available with InterSystems IRIS’s integration framework. I have called this REST Business Activity Monitoring, and is implemented via a set of zaux.rBAM.* classes.
Background: Default IRIS Business Activity Monitoring functionality:
First - some background for newcomers: For some time, IRIS (and previous products like Ensemble), provided developers with the ability to define classes that could expose metrics about the data flowing
DeepSeeButtons is available on Open Exchange! This tool will generate a diagnostic report of your DeepSee environment.
The report consists of multiple sections. These sections range from System Details to Caché/InterSystems IRIS logs to Cube information. In addition to simply providing information about the environment, some common recommended configurations are checked. If a recommended configuration is not used, an alert is displayed highlighting that the environment configuration does not match the recommended configuration.
Many of these alerts have corresponding solutions in the DeepSee
Hi,
On a persistent class, I have defined an %OnNew method that validate some properties with appropriate status code for each kind of error. Question is: how do you catch the specific error when %New is called on this class?
Surrounding %New method with a try-catch not seems to work.
Thanks
I'm trying to tie IRIS (2019.1) into our Concord Fax cloud-based email-to-fax workflow. We have some sites that require a fax be sent to multiple locations based upon certain data (ie Radiology and Emergency departments). Unfortunately, CC-ing does not work with Concord Fax so I need a way to send the email, change the recipient, and then send it again if certain criteria are met. Is this possible? Do I need to duplicate and rename the method, calling the second one in the MessageMap?
Here's what my code currently looks like:
Code
Hi Community!
New "Coding Talk" video is already on InterSystems Developers YouTube:
⏯ How to Install and Use ObjectScript Package Manager with InterSystems IRIS
I have a large amount of classes in several XML namespaces.
Is there a way to generate all XSDs automatically?
I've read the docs but it seems like it's a manual class-by-class process.
Intro
For many in today's interoperability landscape, REST reigns supreme. With the overabundance of tools and approaches to REST API development, what tools do you choose and what do you need to plan for before writing any code? This article focuses on design patterns and considerations that allow you to build highly robust, adaptive, and consistent REST APIs. Viable approaches to challenges of CORS support and authentication management will be discussed, along with various tips and tricks and best tools for all stages of REST API development. Learn about the open-source REST APIs available for InterSystems IRIS Data Platform and how they tackle the challenge of ever-increasing API complexity. The article is a write-up for a recent webinar on the same topic.
Hi Community,
New video, recorded by @Benjamin De Boe, is available on InterSystems Developers YouTube:
⏯ What Developers Love About InterSystems IRIS
InterSystems IRIS ML Toolkit adds the power of InterSystems IntegratedMLto further extend convergent scenario coverage into the area of automated feature and model type/parameter selection. The previous "manual" pipelines now collaborate within the same analytic process with "auto" pipelines that are based on automation frameworks, such as H2O.

Do you ever have the desire to optimize your code as much as possible?
Do you have any cases where every nanosecond matters?
Do you use If statements?
This quick tip can help your code run slightly faster with no additional code.
I need to convert a JSON payload to a custom object type. Currently, I'm converting the JSON object to a %Library.DynamicObject object and need to proceed from here.
As of now, these are my options
1. Using an external library talked about in this link:
https://community.intersystems.com/post/binding-regular-cache-object-dynamicobject-and-vice-versa
Downside: Could be buggy (as admitted by the creator) + some other design concerns brought up in its the discussion thread
2.
Updated 1/30/2020
*** The affected product versions have changed ***
*** The affected versions are Caché and Ensemble beginning with 2016.2.0. ***
*** Caché and Ensemble 2016.1.0 is not at risk for this defect ***
InterSystems has corrected a defect that can cause database degradation in extremely rare circumstances. Associated problems may include, but are not limited to, incorrect or missing application data and system hangs.
This defect affects:
- All versions of InterSystems IRIS and IRIS for Health
- Caché/Ensemble versions beginning with 2016.2.0
- All HealthShare products based on the above
Hi Community,
New video, recorded by @Eduard Lebedyuk, is available on InterSystems Developers YouTube:
⏯ Python Gateway: Jupyter Support - extended
Hi Developers!
Recently we published on Docker Hub images for InterSystems IRIS Community Edition and InterSystems IRIS Community for Health containers.
What is that?
There is a repository that publishes it, and in fact, it is the same container IRIS Community Edition containers you have on official InterSystems listing which have the pre-loaded ObjectScript Package Manager (ZPM) client.
So if you run this container with IRIS CE or IRIC CE for Health you can immediately start using ZPM and install packages from Community Registry or any others.
What does this mean for you?
It means, that anyone can deploy any of your InterSystems ObjectScript application in 3 commands:
- run IRIS container;
- open terminal;
- install your application as ZPM package.
It is safe, fast and cross-platform.
It's really handy if you want to test a new interesting ZPM package and not harm any of your systems.
Suppose, you have docker-desktop installed. You can run the image, which wiil pull the latest container if you don't have it locally:
Hi Developers!
Many of you are looking for samples on how to work with InterSystems IRIS Analytics, formerly known as DeepSee.
There is a Samples BI module with Patients and Holefoods examples which is available on Github with source code. The installation steps are clear but take time.
Recently we added the option to run IRIS Community Edition containers with ObjectScript Package Manager (ZPM) on board. This simplifies the installation to the "run-one-command" step for the modules submitted to ZPM Community Registry. And thus we can benefit the Samples BI installation with ZPM.
And here is how you can run it on your laptop. Let's go!
Happy new year! I’m Raj Singh, InterSystems’ product manager for Developer Experience and I’d love your feedback on how you use IDEs today and your thoughts for the future.
We understand you depend on a solid, intuitive and flexible IDE from InterSystems - whether you are an ObjectScript expert or new to it; whether ObjectScript is at the core of your applications, or you develop more in Java, Python, C# or Node.js.
Hi Developers,
New video, recorded by @Benjamin De Boe, is already on InterSystems Developers YouTube:
⏯ Python and InterSystems IRIS
Beginning with InterSystems IRIS 2020.1, the minimum required version for AIX is AIX 7.1 TL4.
The InterSystems IRIS installer will detect if the required IBM XL C filesets are installed before continuing
with the installation.
This series of articles would cover Python Gateway for InterSystems Data Platforms. Execute Python code and more from InterSystems IRIS. This project brings you the power of Python right into your InterSystems IRIS environment:
- Execute arbitrary Python code
- Seamlessly transfer data from InterSystems IRIS into Python
- Build intelligent Interoperability business processes with Python Interoperability Adapter
- Save, examine, modify and restore Python context from InterSystems IRIS
Other articles
The plan for the series so far (subject to change).
- Part I: Overview, Landscape, and Introduction
- Part II: Installation and Troubleshooting
- Part III: Basic functionality
- Part IV: Interoperability Adapter
- Part V: Execute function
- Part VI: Jupyter Notebook <-- you're here
- Part VII: Dynamic Gateway
- Part VIII: Proxy Gateway
- Part IX: Use cases and ML Toolkit
Intro
The Jupyter Notebook is an open-source web application that allows you to create and share documents that contain live code, equations, visualizations and narrative text.
This extension allows you to browse and edit InterSystems IRIS BPL processes as jupyter notebooks.
How do I rename class programmatically?
This discussion touches on data move which, is not a concern in my case (BPL renames).
I also don't care about external references.
The best I got is:
- Get class text as string
- Replace class name in this string
- Save new string as new class
- Open new class as object
- Delete storage
- Compile class
Are there any better alternatives?
Also found this discussion.
Hi Community,
2019 was a great year full of video content for InterSystems Developers. Already 200 Videos on our InterSystems Developers YouTube Channel, and the number of subscribers has doubled since the previous year!
Almost 57K Views and 5,1K hours of Watch Time in 2019! Thank you, our dear subscribers, so we understand that our video channel is valuable to you!
Now let's take a closer look at the most popular videos on InterSystems Data Platforms over the past year.
| Top 10 Videos by Views in 2019 | |||
| № | Video | Views | Watch Time (hours) |
| 1 | 12 988 | 778,7 | |
| 2 | SMART on FHIR: The Basics | 6 807 | 1 134,9 |
| 3 | Building Modern Web Applications | 6 733 | 570,5 |
| 4 | Developing with FHIR - REST APIs | 2 072 | 225,6 |
| 5 | Create Your First InterSystems ObjectScript Code with IRIS Community, GitHub, Docker and VSCode | 1 093 | 53,8 |
| 6 | Sizing and Capacity Planning | 1 019 | 92,4 |
| 7 | REST API Design and Development | 890 | 84,4 |
| 8 | InterSystems Developer Community and Global Masters | 886 | 7,1 |
| 9 | Editing and Compiling ObjectScript using VSCode | 698 | 22,8 |
| 10 | Introducing InterSystems IRIS Data Platform | 674 | 90,8 |
When I tried to migrate one of ZEN applications to IRIS from 2018.1 I'm faced with the issue with Login Page, in this case used some ZEN page, completely customized. But when a user tries to get access, he gets the error like below.
The requested URL /csp/user/User.Login.cls was not found on this server.
I tried to test it with a fresh just created login page class
Class User.Login Extends %CSP.Page
{
ClassMethod OnPage() As %Status
{
&html<<h1>Hello</1>>
Quit $$$OK
}
}Set it to /csp/user application as Login page, and
$ curl http://localhost:32784/csp/user/menu.csp <HTML><HEAD>
