This sounds like a classic example of leveraging embedded Python in IRIS to make use of the very large volume of python libraries that do just about anything :)  Here is an article that I found on a quick Google search on how to do this in Python:

https://www.geeksforgeeks.org/convert-pdf-to-image-using-python/

You could just leverage the Python capabilities of InterSystems IRIS to make use of how this problem has been solved in Python! 

Ahh ... if they need to be used elsewhere then that is a different story.  

I forget off the top of my head exactly how this would work, but you could potentially subclass your Org class and just add the parent cardinality relationship.  I *think* that should force the extent of the subclass to be embedded in the parent class ( @Dan Pasco?), which should automate the cascading delete for you without impacting the Orgs stored independently.  

Thanks chad - scripting automatic review failure is more involved than just scripting the calling of the API at deployment time (and not relying on RELOAD=1) so we'd probably go that route.  

If RELOAD = null is hardcoded for immediate removal than probably relying on that would be the more risky approach to change control in this case.  So we'd likely rely on "Set status = %CSP.Mgr.GatewayMgr.ActivateCSPIni()" for automation.

Thanks @Bernd Mueller  ... this is very helpful!

Do you see an issue with having RELOAD = 1 always in source control, even if it is removed from the environment copy?

I really like the idea of it reloading, but am concerned about RELOAD = 1 being removed from the copy sitting on our DEV environment where all changes originate ... it would be too easy for someone to accidentally upload a new version of the file without RELOAD = 1 being in the file, meaning it would propagate through our CICD pipeline without that value present and not automatically be activated in higher level environments.

Do you know if there is a way to prevent RELOAD = 1 from being removed from the CSP.ini?