Hi @Alexander.Woodhead!

  • List installed modules that have a previous IPM bytecode install

Having IPM client in place you can check the installed modules and its versions. The newly installed module will replace the old one.

  • List installed modules that would be affected by an IRIS upgrade. Is the newer source code even available in registered repos? (Postpone the IRIS upgrade)

I'm not sure I understand correctly what you are asking here. Anyway, one can setup their own IPM registry to supply its customers/clients with IPM modules. and this private IPM registry has the list of all the versions available and the stats of installations if this is set up. So any client that has access to this registry can install any desired version or just the latest if the version is omitted.

  • Provide a batch upgrade option, to upgrade installed modules to the SAME module version but with the newer version of IRIS $ZVersion Byte code

I'm not sure this functionality exists. It's better to have a newly published module version with the upgraded IRIS $zversion bytecode.

But if this functionality is in need please submit an issue.

You also can manage it if you deploy your solution as an IPM package.

Here is an example of IPM manifest to deploy code without source:

<?xml version="1.0" encoding="UTF-8"?>
<Export generator="Cache" version="25">
<Document name="demo.ZPM">
<Module>
  <Name>demo</Name>
  <Version>1.0.0</Version>
  <Description>DEMO.</Description>
  <Keywords>demo</Keywords>
  <SourcesRoot>src</SourcesRoot>
  <Resource Name="Sample.Demo.PKG" Deploy="true"/>
</Module>
</Document>
</Export>

Here are the release notes on introducing the feature.

Regarding CSP - I agree with @Alex Woodhead, you better convert your CSP to CLS classes derived from %CSP with %OnPage() where you have all your HTML, and thus you can deploy without code.

And you can refer to this CSP classes similar as you refer to CSP pages.