4 Followers · 345 Posts

Caché Server Pages (CSP) is both an architecture and toolset used to build an interactive web applications with the InterSystems Data Platform.

Question David Saunders · Aug 12, 2025

I am trying to use upload.csp as a template for choosing a CDV file to process. I am calling it from a zen page using this:
<button caption="Import Client Consultation Extract" 
       controlStyle="width:500px; height:100px; font-size:1.5em;"
         onclick="zenPage.importExtract();"/>

ClientMethod importExtract() [ Language = javascript ]
{
    // Open CSP popup to upload the CSV
    //alert('importExtract called.');
    zenPage.launchPopupWindow(zenLink('Upload.

8
0 186
Question David Saunders · Aug 8, 2025

I am writing a little app where I press a button on a Zen form. It calls a ZenMethod that uses zenPage.launchPopupWindow() to provide me a way to choose a file. I then click on an upload button that calls a csp cache language script file that runs on the server, that grabs the contents of the file and stuffs it into a global. I want it then close and return to the parent window to continue processing the contents of the file.

1
0 106
Question Yone Moreno Jiménez · Aug 5, 2025

Hello, how are you?

First of all thanks for your time reading this question.

We are investigating how to validate the indexes of a global. We have read:

https://docs.intersystems.com/irisforhealth20251/csp/docbook/DocBook.UI…

And:

https://docs.intersystems.com/irisforhealth20251/csp/documatic/%25CSP.D…

We want to validate the inxedes of the global titled "Ens.Util.LogD". We have executed on the ObjectScript terminal, on the desired namespace:

ESBSSCC>set tSC = $SYSTEM.OBJ.

2
0 129
Article Harshitha · Aug 3, 2025 2m read

Working in healthcare IT as a young developer, especially on InterSystems TrakCare, you quickly realize one thing: it’s not just about HL7 messages or backend integrations. A huge part of making TrakCare work smoothly for hospitals comes down to how it’s configured, customized, and supported on the application side.

That’s where people like me come in—techno-functional developers who understand both the tech and how it impacts actual hospital workflows.

We’re Not Just Techies (or Functional Consultants)

Our role sits right in the middle.

1
2 143
Question André-Claude Gendron · Jul 31, 2025

Hi everyone,

I’m working with an existing InterSystems IRIS server that hosts several web applications and namespace-specific code and data. I’d like to reverse-engineer the current environment into a %Installer.Manifest file so I can store it in Git and manage its changes.

My goal is to:

  • Track the application setup and configuration in version control
  • Rebuild environments consistently (namespaces, CSP apps, security roles, etc.)
  • Possibly automate deployments later on

I understand that %Installer is declarative and wasn’t necessarily designed to reflect a running system.

1
2 114
Article Guillaume Rongier · Jul 24, 2025 5m read

img

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.

What is a Module?

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?

0
3 201
Question Ronaldo Nascimento · Jul 22, 2025

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.

2
0 141
Question Riccardo Villa · Jul 15, 2025

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.
2
0 139
Question Yone Moreno Jiménez · Feb 28, 2025

Good morning,

We need your help:

We wonder if there is a way to filter EnsLib.DICOM.Document, by using its DataSet properties on the Message Viewer.

For example, we would like to find the following DICOM.Document which DataSet.AccessionNumber is SR115985013100

By using the Message Viewer Filter we have tried the following:



FixedDataSet.AccessionNumber = SR115985013100

Because when we look fod a Body Property of the EnsLib.DICOM.Document it shows this drop down menu:

However, it replies with an error:

ERROR #5540: SQLCODE: Message -29: Field 'ENSLIB_DICOM.DOCUMENT.

3
0 189
Question Ronaldo Nascimento · Jul 9, 2025

I am trying to get the value of a Submit button on a CSP object page.

<input type="Submit" value="Assign" name="action" id="action">

I tried getting it thru $GET(%Request.Data("action")), but it throws an Undefined error. Isnt $GET supposed to handle it if its undefined anyway?

How do I get the "value" of the button pushed when the form is set to POST?

5
1 110
Question Cristiano Silva · Jun 26, 2025

VSCode version:

Version: 1.101.2 (user setup)
Commit: 2901c5ac6db8a986a5666c3af51ff804d05af0d4
Date: 2025-06-24T20:27:15.391Z
Electron: 35.5.1
ElectronBuildId: 11727614
Chromium: 134.0.6998.205
Node.js: 22.15.1
V8: 13.4.114.21-electron.0
OS: Windows_NT x64 10.0.26100

-----------------------
I'm working with a CSP legacy system. 

When a csp file is newer in Caché them my local version, I try to do a compare with the server and receive the error in VSCode

Looking the Windows Log a I see the message:
2025-06-26 10:57:13.

2
1 111
Question Colin Brough · Jun 26, 2025

I am attempting to follow the tutorial at Publishing Web Services Using Caché | Caché Web Services QuickStart Tutorial | Caché & Ensemble 2018.1.4 – 2018.1.11 to build a toy SOAP web-service using Cache but am running into what I suspect are permissions issues, or perhaps setting up the "plumbing" to get an incoming request to call the web-service methods.

Ensemble instance running on local laptop. Only the Ensemble private web-server installed on the machine (no IIS or Apache).

0
0 77
Question Yone Moreno Jiménez · Jun 23, 2025

Hello, good morning, thank you so much for reading this question. ☺️🙂👍

We are developing a code to get information about our Production's items: services, processes and operations.

We know we can get various configurations of a given item: Category, Port, Enabled...

But we wonder how we could get the date time of the last mesage (most recent) received in an item.

To give a code snippet a small section of the code we have developed (and tested), it looks like:

[...]

For i=1:1:tProduction.Items.Count() {
    #dim item as Ens.Config.Item
    set item = tProduction.
2
0 132
Article Guillaume Rongier · Jul 8, 2024 6m read

Flask_logo

Description

This is a template for a Flask application that can be deployed in IRIS as an native Web Application.

Installation

  1. Clone the repository
  2. Create a virtual environment
  3. Install the requirements
  4. Run the docker-compose file
git clone
cd iris-flask-template
python3 -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt
docker-compose up

Usage

The base URL is http://localhost:53795/flask/.

Endpoints

  • /iris - Returns a JSON object with the top 10 classes present in the IRISAPP namespace.
  • /interop - A ping endpoint to test the interoperability framework of IRIS.
4
1 577
Question Thembelani Mlalazi · May 29, 2025

I am trying to log in to the Web Gateway Management and I have missed placed the password to access the system I have tried 

changing the password under local settings in the CSP.ini  and that has managed to change the password to access the gateway but cannot log me into the management area I have followed a post here and read here and I seem not to get the answers that actual explain how I can get to the web gateway management.

3
1 242
Question Patrik Spisak · May 24, 2025

Hi,

How do I create CSP page in IIS to be loaded from the class? 

Im able to open my index.html but I have class webapp.init.cls which extends %CSP.Page which should generate html. If I write localhost/myapp/webapp.init.cls I just got an error Invalid action.

In IIS Handler Mappings I did setup for *.cls and *.csp files. 

I followed this

https://docs.intersystems.com/irislatest/csp/docbook/DocBook.UI.Page.cl…

When I created index.csp my IIS just return NOT FOUND. With the old APACHE server I had no issue with all, but Im trying to migrate to IIS.

1
0 113
Question Paul Coviello · Nov 6, 2023

We have a machine that serves 4 instances of Cache on VMS systems, one of them is password protected and works fine as they all do. we decided we wanted something beefier and copied it to a server, well all but the one you have to login to works so 3 of the 4 do.  and the odd part is I can no longer get to the management page from anywhere on any machine, http://localhost/csp/bin/Systems/Module.cxw&nbsp; I get a 404.8 error, I have tried adjusting security and same thing. and a server availability error.

I think it something on the new machine/server that is missing but why only 1 of the 4.

5
0 398
Question Fabio Care · Feb 7, 2025

Windows 10/Windows Server 2016:

I am currently monitoring our license use with a new rest-service I am implementing when I noticed my licenses on my instance being consumed and never released by Visual Studio Code.

For this I restarted my Instance, watched the licenses for a while, which remained at 1 during idle (I am guessing my MMGT Portal session uses 1) 
But when I connect to my Instance using Visual Studio Code (with my Instance setup in the extension already), suddenly 2 licenses are used.

4
2 261
Question Evgeny Shvarov · Apr 26, 2025

Hi developers!

While developing web apps the security practice I consider safe and convenient is to create a special Role (e.g. equal application name) which contains security resources which application will need (SQL tables, priviledges, database access, etc) and assign it to the Web Application.
So the user gets this role once it loggs in to the application (via password, no password or delegated).

Convenient, right?

So, the question is, when I deploy the app as an IPM module what should I put as a database access?

4
0 153
Article Roy Leonov · Mar 12, 2024 5m read

As an IT and cloud team manager with 18 years of experience with InterSystems technologies, I recently led our team in the transformation of our traditional on-premises ERP system to a cloud-based solution. We embarked on deploying InterSystems IRIS within a Kubernetes environment on AWS EKS, aiming to achieve a scalable, performant, and secure system. Central to this endeavor was the utilization of the AWS Application Load Balancer (ALB) as our ingress controller.

3
9 777
Question Lucas Galdino · Mar 16, 2025

Hi experts,
Please, do you know steps to analyse and correct this alarm?
This message was registered in messages.log

03/16/25-13:46:42:066 (21596) 2 [Utility.Event] ISCLOG: WebSocket [SendAsyncMessage] Error with OpenServer ns=ACB rtn=%CSP.WebSocket.1  data="0 "_$lb($lb(7953,"AKGmfwJ2q/lh6h0K/BKvQw==",,,,,,,,$lb(,"ACB",$lb("e^OpenServer+3^%CSP.WebSocket.1^2","e^SendAsyncMessage+13^%CSP.WebSocket.1^1","e^Page+4^%CSP.WebSocket.1^2","e^CSPDispatch+503^%SYS.cspServer^2","d^CSPDispatch+280^%SYS.cspServer^1","d^ProcessRequest+1^%CSP.Session.1^1","d^Request+685^%SYS.cspServer2^1","d^Request+25^%SYS.

0
0 90
Article Patrick Dunn · Sep 29, 2020 4m read

In the WRC, we frequently see customers contact us because their Web Gateway is unable to serve web pages. This article will explain a frequent reason why these errors can occur, and explain some tools which can be used to debug the problem. This explanation is focused on the Web Gateway serving InterSystems IRIS instances, but the same explanation should apply to the CSP Gateway serving Caché instances as well.

1
3 3145
Question omer · Jan 15, 2025

Hey, So the title pretty much describes the question:
Where and How can i see the Stream that contains the response back to the client of a CSP application.
When the request is being processed and finished we return a response to the client - We do that by writing the data to a stream and that stream is sent back to the client.
I wanted to know how i can access the point right before that Data is actually written to the client back (meaning the place where the response is actually being send back, the last point of contact).

9
0 198
Question Martin Nielsen · Jan 23, 2025

Hi, I am currently setting up a new API using %CSP.REST - I've gotten swagger spec generation to work like such:

Class Api.DispatchRouter Extends %CSP.REST
{

XData UrlMap
{
<Routes>

<Map Prefix="/test" Forward="Api.Controllers.TestController"/>

<Route Url="/swagger" Method="GET" Call="SwaggerSpec"/>   
</Routes>
}

ClassMethod SwaggerSpec() As %Status
{
    Set tSC = ##class(%REST.API).GetWebRESTApplication($NAMESPACE, %request.Application, .swagger)
    Do swagger.info.%Remove("x-ISC_Namespace")
    Set swagger.basePath = "/csp/myapi"
    Set swagger.info.
3
0 206
Question Craig Regester · Apr 18, 2016

We are currently looking into a way to provide a group of end-users (i.e. non-Interface Development engineers) access to a pre-defined group of Ensemble-based Data Lookup Tables for purposes of viewing and editing. We do not want to give them access to ALL Data Lookup Tables due to security/continuity concerns.

My thinking is that a simple persistent Cache table with three columns (Role Name,  Table Name, Access-Level [like View or Edit]) with a CSP front-end could potentially provide an easy way to make this solution a reality.

3
0 1152
Question omer · Jan 12, 2025

Hello, 
In short, I am trying to get the Content-Length of my response, 

We have a CSP application, when we get a new request we begin to process it, throughout the app we WRITE to the response in different places, 
now when the response is about to be sent back to the client - we would like to know its Content-Length (in the RESPONSE HEADERS). 
So it comes down to two questions:
1. How can we access the Content-Length of our response?

2. In case we CAN'T - Where in the broker.cls/page/base classes can I observe the moment we actually write the response itself and attach its headers?
Thank you!

1
0 154
Question Dan Murt · Jan 3, 2025

Hi Community,

I have a CSP page I am developing with the intent of pulling files from an SFTP site and placing them in a folder on the local network.

I am having an issue where the CSP page is catching a JS error. The error in the browser is - A JavaScript exception was caught during execution of HyperEvent: SyntaxError: Unexpected identifier 'downloading'. (However, the unexpected identifier changes after refreshing page, or after removing the Write statement with the work 'downloading' in it.)

I think I have narrowed it down to a piece of the Javascript code - 

#server(..DownloadFiles(document

9
0 301
Question Shanwen Liu · Dec 10, 2024

Hey everyone, I am implementing version control with git-source-control on our codebase and I ran into a pretty strange issue. I believe I have the set up (mostly) correct as the behavior with .cls files is exactly as expected. However, I noticed that git is not keeping track of any changes to CSP files.

Specifically, if a new CSP file is created and saved, I will get the following output:

exporting new version of /csp/testdb/wrc.csp to C:\InterSystems\IRIS\mgr\repo\TESTDB\csp\testdb\wrc.csp

Added /csp/testdb/wrc.csp to source control.

C:\InterSystems\IRIS\mgr\repo\TESTDB\csp\testdb\wrc.

8
1 257