#InterSystems Package Manager (IPM)

13 Followers · 145 Posts

InterSystems Package Manager (IPM) is a tool to deploy the packages and solutions into InterSystems IRIS with dependencies.

Download Package Manager client.

InterSystems staff + admins Hide everywhere
Hidden post for admin
Question Evgeny Shvarov · Dec 27, 2025

Hi developers!

There is a very neat variable in IPM ${ipmdir} that lets packages be installed on a particular IRIS server and ensures that the data and resources they bring don't mess around as ${ipmdir} variable during the installation transforms into:

iris installation dir/ipm/package_name/version/whatever_you_install_here

It is very convenient, e.g., to bring some data and resource files that can be useful during the installation setup, e.g., via FILECOPY. Indeed, suppose you bring some csv_file, e.g. titanic.csv via FILECOPY as:

<FileCopy Name="data/titanic.csv" Target="${ipmdir}data/titanic.csv"/>

or even the whole folder of data in the source code repo into the package:

<FileCopy Name="data/" Target="${ipmdir}data/"/>

And in the case of Iris in Docker it resides in:

/usr/irissys/ipm/package_name/1.0.0/data/titanic.csv

This is all great, but is there any way for the installed code to determine the location of the data files? It'd be neat to let the installed app know somehow where is the data that came with it? Could it be the method in the IPM client that will resolve ${ipmdir} for the app? 

2
0 78
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 223
Question Sam Duncan · Aug 20, 2025

I've been trying to set up a script I can run after installing an instance to enable IPM across all namespaces. I have been able to install IPM successfully using

set r = ##class(%Net.HttpRequest).%New(),
    r.Server="pm.community.intersystems.com",
    r.SSLConfiguration="ISC.FeatureTracker.SSL.Config" 
d r.Get("/packages/zpm/latest/installer"),
    $system.OBJ.LoadStream(r.HttpResponse.Data,"c")

and then running the zpm commands

repo -r -n registry -url https://pm.community.intersystems.
4
0 163
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 110
Question Justin Millette · Jul 8, 2025

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.

3
0 117
Question Jonathan Lent · Jul 24, 2025

I feel I may be in the "people unclear on the concept" group here.

System Default Settings is a great mechanism, and we use some custom code to deploy it in our pipeline after environment specific changes have been applied to the content. However, we are trying our best to reduce the amount of custom code we use in our system that does not relate directly to the business. For CI/CD, this means we are trying to leverage IPM for the heavy lifting.

Is there a method for handling System Default Settings in IPM that I am just overlooking?

4
0 115
Question Ashok Kumar T · Jun 10, 2025

Hello Community,

I encountered the following errors while installing the ZPM module on version 2025.1. The ZPM install command failed on the Community Edition of IRIS for Health.

Skipping installation of python wheel 'attrs-25.1.0-py3-none-any.whl' due to error: '0 ;«WCould not find a suitable pip caller. Consider setting UseStandalonePip and PipCallerÓUSERÇ'e^OnAsStatus+1^%Exception.General.1^1/e^AsStatus+1^%Exception.AbstractException.1^15e^OnPhase+28^%IPM.ResourceProcessor.PythonWheel.1^1)e^%Initialize+8^%IPM.Lifecycle.Base.1^1-e^ExecutePhases+163^%IPM.Storage.Module.
6
0 191
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 141
Question Steve Pisani · Apr 22, 2025

Hi - I'm refreshing my IRIS instance, now upgraded to 2025.1, and ensuring IPM is installed in each namespace, as well as git-source-control, but in my first attempt I get this error. 

Everything else seems to work - but why the error (I'd like to get rid of it) ?

zpm:AULIBRARY>install git-source-control
 
[AULIBRARY|git-source-control]  Initialize START
[AULIBRARY|git-source-control]  Initialize SUCCESS
[AULIBRARY|git-source-control]  Reload START (C:\InterSystems\IRIS\mgr\Temp\VTigyGg\)
[AULIBRARY|git-source-control]  Reload SUCCESS
[git-source-control]    Module object refreshed.
0
0 95
Question Dmitrii Baranov · Mar 31, 2025

I'd like to ask you for recommendations on how to properly use repository dependencies when using VSCode and Client-side editing. Suppose I have projects A, B and C, with A being independent, B depending on A, and C depending on A and B. I am currently working with the main project C, and I want to be able to contribute to all the other projects in a single VSCode window (instead of opening three instances). How do you solve this problem? Git submodules? ZPM? Something else?

1
0 127