Trying to import a .csp with VS code appears to do nothing.
Making a change to the file, saving it and then doing "Import and compile" results in no output and there is no change to the file on the server.
Plugin version is 3.0.5
Caché Server Pages (CSP) is both an architecture and toolset used to build an interactive web applications with the InterSystems Data Platform.
Trying to import a .csp with VS code appears to do nothing.
Making a change to the file, saving it and then doing "Import and compile" results in no output and there is no change to the file on the server.
Plugin version is 3.0.5
Hello,
I have a main dispatcher (that extends
And I have the sub-dispatcher that contains:
<Route Url="/:id" Method="GET" Call="NewsGetItem"/>
</Routes>
If I try to access this route:
https://mydomain.com/mobile/api/v4/news/123
It doesn't work (404).
But strangely enough, it works (200):
https://mydomain.
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:
controlStyle="width:500px; height:100px; font-size:1.5em;"
onclick="zenPage.importExtract();"/>
{
// Open CSP popup to upload the CSV
//alert('importExtract called.');
zenPage.launchPopupWindow(zenLink('Upload.
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.
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.
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:
I understand that %Installer is declarative and wasn’t necessarily designed to reflect a running system.

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?
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.
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:
Hello InterSystems Community,
I'm working with HealthShare, and need to create a user account for our development environment with specific access requirements.
I am doing a form POST to myself (same class) and when I do the form action it gets a page similar to the error page but just says:
Invalid action
There is nothing in the application error log. How can I troubleshoot this?
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.png)
By using the Message Viewer Filter we have tried the following:
| FixedDataSet.AccessionNumber | = | SR115985013100 |
.png)
Because when we look fod a Body Property of the EnsLib.DICOM.Document it shows this drop down menu:
.png)
However, it replies with an error:
ERROR #5540: SQLCODE: Message -29: Field 'ENSLIB_DICOM.DOCUMENT.
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?
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.png)
Looking the Windows Log a I see the message:
2025-06-26 10:57:13.
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).
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.
This is a template for a Flask application that can be deployed in IRIS as an native Web Application.
git clone
cd iris-flask-template
python3 -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt
docker-compose up
The base URL is http://localhost:53795/flask/.
/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.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.
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.
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 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.
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.
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?
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.
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.
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.
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).
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.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.
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!
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 -