ZPM is designed to work with applications and modules for InterSystems IRIS Data Platform. It consists of two components, the ZPN Client which is a CLI to manage modules, and The Registry which is a database of modules and meta-information. We can use ZPM to search, install, upgrade, remove and publish modules. With ZPM you can install ObjectScript classes, Frontend applications, Interoperability productions, IRIS BI solutions, IRIS Datasets or any files such as Embedded Python wheels.  Today this cookbook will go through 3 sections: 1. Install ZPM 2. Generate Module 3. Find, Install, publish modules inside the Registry   1. Install ZPM * Download latest version of ZPM ( this should be one single XML file) [Download link](https://pm.community.intersystems.com/packages/zpm/latest/installer) * Import XML you have downloaded to IRIS and it can only be deployed into IRIS open IRIS terminal and enter _write $SYSTEM.OBJ.Load("C:\zpm.xml", "c")_ Note "C:\zpm.xml" is the path of the XML file downloaded, this step could take a while. * After finished installing, simply type _zpm_, press enter, you will see you are in zpm shell ![](/sites/default/files/inline/images/images/screenshot_2022-10-07_111845.png) 2. Generate Module Before we start generating module, we need to prepare a folder that has one or more files ready to load, Therefore I have created a folder under C drive called zpm. Execute the command _generate C:/zpm_ After you specific all the necessary, your first module has been generated successfully, also you will see  ![](/sites/default/files/inline/images/images/screenshot_2022-10-07_151452.png) Note:  1. module version is using semantic versioning  2. module source folder is the folder has all the class file 3. zpm also offers a option to add web applications and dependency, in this example I will leave it blank Now, open the file explorer, you will see a file called "module.xml" as you can see from the screenshot below ![](/sites/default/files/inline/images/images/screenshot_2022-10-07_161718.png) Type command _load C:\ZPM\ _you will see your module has been reloaded, validated, compiled and activated  ![](/sites/default/files/inline/images/images/screenshot_2022-10-12_110126.png)   3. Find, Install, publish modules inside the Registry Find packages available in the current Registry: _zpm:USER>search_ Install package from current Registry as an example lets install a module called zpmshow in public Registry: _zpm:USER>install zpmshow _(the command is install "moduleName") Publish module after loaded: _zpm:USER>publish myFirstZPMDemo_ You can use _zpm:USER>search_ to verify the publish, in my case you can see "myfirstzpmdemo 0.1.0" is sitting in current Registry. ![](/sites/default/files/inline/images/images/screenshot_2022-10-12_110359.png) Note: If you have an error when you are publishing a module that says:_ "ERROR! Publishing module, something went wrong", _make sure that the status of the current Registry is enabled and available. You can use_ zpm:USER>repo -list, _to verify the status of current Registry.   ![](/sites/default/files/inline/images/images/screenshot_2022-10-10_152312.png)   Video available: [Click here](https://www.loom.com/share/0ca097f0dea4476ea294841295f972b2%C2%A0%C2%A0)