Starting with InterSystems IRIS 2025.1, the way dependent cubes are handled in cube builds and cube synchronizes was changed.
This change may require modifying custom build/synchronize methods. If you are using the Cube Manager, these changes are already considered and handled, which means no action is needed.
Prior to this change, cubes were required to be built and synchronized in the proper order and account for any cube relationships/dependencies. With this change, dependent cubes are automatically updated as needed when using the %BuildCube or %SynchronizeCube APIs.
The negative symptom you may see if you have a custom build method would be that your dependent cubes may be built multiple times. This should not cause any errors, but it may mean your builds take considerably longer depending on how many dependent cubes you have.
The biggest consideration in modifying your custom build/synchronize methods is that the first parameter of %BuildCube and %SynchronizeCube now accept a list of cube names. Dependencies in this list will be resolved so they are not built multiple times.
Example using old logic:
do ##class(%DeepSee.Utils).%BuildCube("relatedcubes/cities")
do ##class(%DeepSee.Utils).%BuildCube("relatedcubes/doctors")
do ##class(%DeepSee.Utils).%BuildCube("relatedcubes/patients")
do ##class(%DeepSee.Utils).%BuildCube("relatedcubes/cityrainfall")
do ##class(%DeepSee.Utils).%BuildCube("relatedcubes/allergies")
Calling the cube builds like this will trigger dependent builds multiple times. This results in the following cube builds happening:
Building cube [RELATEDCUBES/CITIES]
Building cube [RELATEDCUBES/CITYRAINFALL]
Building cube [RELATEDCUBES/DOCTORS]
Building cube [RELATEDCUBES/PATIENTS]
Building cube [RELATEDCUBES/ALLERGIES]
Building cube [RELATEDCUBES/DOCTORS]
Building cube [RELATEDCUBES/PATIENTS]
Building cube [RELATEDCUBES/ALLERGIES]
Building cube [RELATEDCUBES/PATIENTS]
Building cube [RELATEDCUBES/ALLERGIES]
Building cube [RELATEDCUBES/CITYRAINFALL]
Building cube [RELATEDCUBES/ALLERGIES]
Example using updated logic:
do ##class(%DeepSee.Utils).%BuildCube($LB("relatedcubes/cities","relatedcubes/doctors","relatedcubes/patients","relatedcubes/cityrainfall","relatedcubes/allergies"))
This will simply build the cubes in a dependency-compliant order:
Building cube [RELATEDCUBES/CITIES]
Building cube [RELATEDCUBES/CITYRAINFALL]
Building cube [RELATEDCUBES/DOCTORS]
Building cube [RELATEDCUBES/PATIENTS]
Building cube [RELATEDCUBES/ALLERGIES]
The documentation’s “Upgrade Considerations” page references this compatibility change: https://docs.intersystems.com/iris20251/csp/docbook/DocBook.UI.Page.cls?KEY=GUPE_upgrade#GUPE_upgrade_buildcube