One click publish multiple eSpaces...

One click publish multiple eSpaces...


I know it works to "one click publish" multiple eSpaces at the same time.

But if they have references between them is it recommended to publish all at the same time? Does the Service Center publish at an order fashion or something?

Thank you, Best Regards
Hi Pedro,

When you publish one eSpace all consumers will become "outdated" untill they are republished because they only get the newer producer's data on their next publish.

When you have some kind of circular dependency you will receive warnings in all publishes because the producer is also consumer of itself by reference closure. So... let me answer in 3 parts:

1 - It is not good idea to have a circular dependency between eSpaces, it is generally a red flag for a bad architecture. 

2 - Warnings may be just warnings.. you may not have much impact on the development, unless you are constantly breaking the compatibility.

3 - You can create a solution with both eSpaces and publish the solution. The "solution publish" deals with circular dependencies because it will publish all modules "at the same time". And Yes... this is different from what service studio does, but much more heavy.

best regards,
Hélio Dolores
Thanks Hélio, but:

I know it's not a good practice. I know the good practice of using multiple eSpaces that are connected should be in a solution. But when you can't create a solution with those eSpaces (it's a pitty but a developer has to be pragmatic), I have to publish a lot of eSpaces and I wanted to publish or order the publication and not having to wait for each one to publish.

So I understand there's no option to automatic publish multiple eSpaces in order. And it's not a good ideia to publish them in the same time because there's no order in service center. It's that right? I understand that Outsystems hasn't implemented that because good practices should cover most of these issues.

Nevertheless, would be something easy to do and a good option for Service Center. Publish multiple eSpaces in ordered fashion.

Thanks anyway, if there's no solution yet for my problem, maybe I will create something.

Best regards
Hi Pedro,

let me take a step back... I think I didn't get the real problem at first.

There is no problem on having dependencies betweeen espaces. The problem you should avoid is: having circular dependencies... and I assumed this was your problem. So...

A -> B -> C   (A depends on B and B depends on C) this is ok
A <-> B (A depends on B and B depends on A) this is not recomended

Having this in mind, I believe your problem is that the constant publishes of producer eSpaces are breaking the consumers.
In the example:
A -> B -> C 

To get A running with the most recent code you have to publish by this order : C then B then A. 
I believe this is your pain. We don't publish automatically all dependencies because the publish would be very, very slow...

To simplify this process, you can go to ServiceCenter and create a solution, add these espaces (A,B,C) and publish the running version of it (which is the running version of all eSpaces).
By creating a solution you are not creating any logical connection between the eSpaces, this is actually made for this kind of operations (publishes, download multiple eSpaces, etc). If you want to create a logical connection between them it should be through an Application.

My question is, how much frequently do you have to have no warnings of this kind in a development environment?

This should not happen in QA and Production Environments because LifeTime takes care of these kinds of problems.


Hi Hélio thank you for your response

Hélio Dolores said: "Having this in mind, I believe your problem is that the constant publishes of producer eSpaces are breaking the consumers. In the example: A -> B -> C To get A running with the most recent code you have to publish by this order : C then B then A."

Ok I have to publish in order the eSpaces, but can I do it withouth waiting for each one to finish? That is, if I "one click publish" in order will Service Center do it in order also (The upload, update, compile and deploy)? I think it doesn't. Is there any way to force Service Center to do this? So I can publish all eSpaces without waiting for each one to finish. Then I could do it automatically leaving Service Center to deal with the publications in order without waiting.

I will try to find a way to create a solution, that was my ideia from the start off course. But I was advised strongly not to do it, so...but as you say I can't see any wrong in that but I have to be careful not to go against the flow ;=).

Hi again Pedro,

When you have a team working on several eSpaces (that have dependencies between them) it's perfectly normal that they get messages saying that some consumers are broken after a publish. And this is ok for 99% of the publishes, because you generally don't break anything in the APIs between them and you can test your latest changes anyway. This means that in a development environment it's normal to have simultanious publications of espaces via ServiceStudio.

Taking this example again:
A -> B -> C   (A depends on B and B depends on C)

it's normal the scenario:

Developer 1 working on eSpace A
Developer 2 working on eSpace B
Developer 3 working on eSpace C

And they don't need to be sinchonized, they can publish at their own pace. This means that if the Developers 1 and 2 publish at the same time, they'll probably don't get the latest version of the dependencies but they can test the things they changed anyway.

It is also perfectly normal to have a solution publish from time to time (let's say... at the end of the day) to test the whole thing (A,B,C).

Just some final notes:
- Publishing an eSpace via service studio of via service center (in Factory/eSpaces) is the same thing.
- Publishing a set of eSpaces via solution publish (in Factory/solutions) solves the order problem because it will do the operations  (The upload, update, compile and deploy) in parallel.


Thank you Hélio you clarified all my doubts about this issue.
Great :) let me know if you need anything else.