Have an idea, suggestion, or something that doesn’t work as expected in InterSystems products or services? Share it here on the InterSystems Ideas Portal.
The Ideas Portal is where community members can propose improvements, report bugs, and help influence the product roadmap across InterSystems products and the overall developer experience. 22% of submitted ideas are implemented by InterSystems or members of the Developer Community.
💡 Ideas and bugs are both welcome, no matter how big or small. You can submit feature requests, usability improvements, workflow suggestions, and bug reports. Whether you’re an experienced expert or just getting started, your fresh perspective is valuable.
🛠️ About bugs and fixes. If you have access to InterSystems WRC, please submit bugs there for immediate action. Bug reports submitted through the Ideas Portal are reviewed and tracked, but do not guarantee immediate resolution.
Start by sharing what could be better - the community and our teams will help take it from there.
Add a Production Assistant to PyProd that inspects an existing IRIS interoperability production and generates an editable PyProd definition using the PyProd APIs.
The generated Python code would preserve the production’s components, configuration settings, adapter settings, class references, and connections wherever they can be represented by PyProd.
The assistant would migrate the production configuration into PyProd code while existing business logic remains in place.
Goal is to give teams with established IRIS productions a practical way to adopt PyProd without manually rebuilding an entire production.
PyProd provides a code-first approach for defining an interoperability production in Python and loading it into IRIS. However, many organizations already have large interoperability productions that were created and maintained through the Production Configuration page. These productions may contain lots of Business Services, Business Processes, Business Operations, adapters, schedules, and configuration settings.
To manage one of these existing productions with PyProd, a developer would need to manually recreate its configuration in Python which is time-consuming and error-prone. This creates a significant adoption barrier.
Provide a command or API that connects to an IRIS namespace, reads an existing production in read-only mode, and generates a Python production definition.
Something like this:
pyprod generate \
--from-production Hospital.ADTProduction \
--target-class Hospital.PyProd.ADTProduction \
--output src/adt/production.py \
--report migration-report.jsonThe exact command and option names are only examples. Generation should also be deterministic.
The assistant should convert the production definition and configuration without the need for underlying application logic to be rewritten.
The tool should generate a migration report alongside the Python file.
Example:
Source production: Hospital.ADTProduction
Target production: Hospital.PyProd.ADTProduction
Configuration items discovered: 52
Configuration items generated: 52
Settings discovered: 238
Settings represented in PyProd: 231
Credential references externalized: 2
System Default Settings detected: 3
Unsupported settings: 2
Custom production methods requiring review: 1
Result: REVIEW REQUIREDAfter generating the PyProd definition, developers should be able to load it under a different production class or into a separate test namespace.
A verification command could compare the original production with the generated candidate:
pyprod verify \
--source Hospital.ADTProduction \
--candidate Hospital.PyProd.ADTProductionThe comparison should be based on semantic configuration rather than only comparing source text.
Example output:
[PASS] 52 of 52 configuration items matched
[PASS] All referenced component classes matched
[PASS] All supported host and adapter settings matched
[WARN] Three settings depend on System Default Settings
[FAIL] One custom setting has no current PyProd equivalentEasier PyProd adoption
Incremental modernization
Fewer migration errors
Better source control
Improved visibility into PyProd API gaps that could help guide future PyProd enhancements.
A hospital has an existing HL7 interoperability production that has been developed and maintained for several years. The team wants to manage the production through Git and PyProd.
However, manually recreating the full production in PyProd would require developers to copy hundreds of settings and then verify nothing was missed.
A developer runs:
pyprod generate \
--from-production Hospital.ADTProduction \
--target-class Hospital.PyProd.ADTProduction \
--output src/adt/production.py \
--report migration-report.jsonThe assistant reads the production without modifying it and generates a PyProd definition. Generated Python continues to reference the hospital’s existing Business Services, BPL processes, DTL transformations, routers, and Business Operations by class name, while related BPL processes, DTL transformations, and other dependencies remain in place.
The migration report shows:
Configuration items discovered: 50
Configuration items generated: 50
Settings discovered: 230
Settings represented successfully: 224
Credential references externalized: 2
System Default Settings detected: 2
Unsupported settings: 1
Custom production methods requiring review: 1The report explains that one custom adapter setting does not yet have a direct PyProd representation. It also identifies two values supplied through System Default Settings and warns that a custom method exists on the original production class.
The development team reviews the generated Python and migration report in a pull request.
After resolving the unsupported setting, the team loads the generated definition under a new production class in a test namespace. The original production remains unchanged.
The team then compares the two productions:
pyprod verify \
--source Hospital.ADTProduction \
--candidate Hospital.PyProd.ADTProductionThe verification confirms that all supported production items, class references, settings, schedules, and component connections match.
After the migration, the production definition is maintained in Python and Git.
The feature would give existing IRIS customers a practical way to begin using PyProd without manually reconstructing an entire production.
Existing IRIS production
↓
Generated PyProd definition
↓
Developer review and validation
↓
Testing in a separate environment
↓
Controlled migrationDevelopers would be able to generate a reliable starting point, understand what was and was not converted, protect sensitive information, compare the result with the original production, and adopt PyProd without rebuilding an entire interoperability application manually.
Thank you for submitting the idea. The status has been changed to "Needs review".
Stay tuned!