Hi everyone,
I’m working on an OutSystems automation requirement.We have around 400 consumer modules that currently need to be processed manually in Service Studio:
1. Open the consumer module
2. Manage Dependencies
3. Refresh
4. Apply
5. Publish
We would like to automate this process without using Power Automate.
The main challenge is handling breaking dependencies.
For example, if a consumer module uses several producer modules and one of those producers has a breaking change (e.g. an incompatible change to an exposed Action, Entity, or Structure), refreshing the consumer may result in dependency errors.
My main question is:
Is there any supported way in OutSystems to determine whether a consumer module has a breaking dependency BEFORE performing "Manage Dependencies → Refresh"?
Specifically:
1. Can we programmatically determine whether a dependency is breaking or non-breaking before refreshing the consumer?
2. Is this information available through any supported OutSystems API, System Entity, Extended Metamodel, Service Center functionality, or other supported mechanism?
3. Does OutSystems expose the same dependency compatibility/TrueChange information that Service Studio uses during dependency refresh?
4. If this cannot be determined with 100% accuracy beforehand, what is the recommended supported approach for automating dependency refresh and handling breaking dependencies?
The goal is to safely automate dependency refresh and publishing for approximately 400 consumer modules, while identifying or skipping consumers that would result in dependency errors.
Any guidance or recommended approach would be greatly appreciated.
Thank you!
I don't think there is an automated way to detect a broken reference before performing the dependency refresh.
For example, if you delete something from a producer module, when you refresh the dependencies in the consumer, OutSystems will then detect that there is a missing reference from the producer. Similarly, in Service Center, you may see that the dependency is outdated.
Also, when you open a consumer module that has a broken reference, Service Studio automatically triggers the dependency management process and shows the corresponding popup, so in that sense it works both ways.
From a programmatic perspective, you can navigate through Espace_Reference, which can show you what references are missing or broken. However, this is just a list of the dependency state.
But as far as I understand, there isn't a supported way to explicitly determine programmatically, before performing the dependency refresh, whether a particular dependency will become broken and to reproduce exactly what Service Studio would detect during the dependency refresh.
Thank you for the detailed explanation sir!
Hi Hsu Hsu,
Are we talking O11 or ODC?
It’s O11 sir.
In O11 it's possible, to my knowledge, to see in Service Center whether a change is breaking or not, which leads me to conclude it should be in the data model somewhere. But I don't have the time right now to find out where.
Thanks, that’s very helpful!
We’re also looking into this on our side. If you have some time later, could you please look into it and let us know which entity or field contains the breaking/non-breaking information?
Even just the entity or field name would be very helpful for us to investigate further.
The System module exposes an Espace_Reference entity, that has an Is_Broken boolean. It seems that if it's True, the reference is broken. Note the entity has an entry for each published version of a module, so be sure to check the right version.
There's also a system entity OSSYS_ESPACE_REFERENCE_STATUS that's not accessible from System (and unfortunately also not from ExtendedMetaModel), but with some trickery in a SQL you can access it. It has the following attributes:
It seems there's more detailed information in there than in Espace_Reference.
Ok, I did a quick test, but ESPACE_REFERENCE_STATUS isn't very interesting. It always sets HAS_OUTDATED_BROKEN_REFS to True, no matter whether the reference is actually broken.
Thank you so much! This is really helpful. We really appreciate you taking the time to look into this and point us in the right direction. We’ll investigate it further on our side. Thanks again!
You're most welcome. I hope it brings you a solution for your problem.
@Hsu Hsu : Please see if this discussion helps @ https://www.outsystems.com/forums/discussion/106220/most-efficient-way-to-bulk-refresh-dependencies-and-publish-multiple-modules/
Here its suggested to create a solution to achieve what you are looking for.
Thank u so much sir!