We want to bring applications offline. Not with ServiceCenter but with our own app.

We want to bring applications offline. Not with ServiceCenter but with our own app.

  

We want to bring applications offline. Not with ServiceCenter but with our own application. I noticed that in the ossys_application table there is a field called “disabled” but it is not enough to set it to 1. What else do you have to do to disable/take offline an application?

Regards, Niek.

Hello Niek,


it is not... Can you share your use case? What are the motivations for this requirement?

Hi Niek,

I am not aware of any service or API available for the Servicecenter "take Offline" functionality.

Is indeed an awkward use case, however would be nice to add it as an idea in https://www.outsystems.com/ideas/

We have a background process that needs to run while there are no users in part of the applications. So we don’t want to bring the complete stack of applications down but just a couple (about 9). Doing this throw ServiceCenter takes a lot of time. That’s why it would be handy to do this automatically trough means of an application where we can control this.  

Any idea on how to do this?


I will also post this as an idea.

If I were implementing this I would do the following. 

1) Create an entity with one ID field and one Boolean field - be sure ID is NOT autonumber
2) Create an action that deletes all records in this entity and then create a record with ID = 1 and Boolean = False
3) Create two actions - one to set the Boolean value to True and one to set the value to False in the record where ID = 1
4) Somewhere on some admin screen have three buttons that call the actions in step 2 and step 3
5) Create a web block and in the preparation of the web block read the entity.  If the Boolean is true, reroute to some generic 'system not available' page
6) Place the web block in the header of every screen that needs this function

Once this is all done, click the button that calls the action in step 2 - you should only need this once but if you run into any problem you can use it again to initialize the entity.

When you want to run the background process either click the appropriate button or have the process call the action to set the value to True.  When the process is done either click the appropriate button or have the process call the action to set the value to False.

This whole thing basically allows you to lock the system anytime you want without any developer involvement.  The entity could be expanded if you needed other locks for different processes.

Hope this helps,

Curt


P.S. While I don't think this is a wild idea I doubt it makes sense to include it as a platform function since its fairly easy to implement and each application would likely need different things.


Nice approach Curt!

Indeed, is a good solution to control it on the application side.

Otherwise, create one application pool with the eSpace modules to be disabled, and contact the infrastructure team in order to disable the respective IIS application pool, you can create a script and launch the script via the application side.


Curt Raddatz wrote:

If I were implementing this I would do the following. 

1) Create an entity with one ID field and one Boolean field - be sure ID is NOT autonumber
2) Create an action that deletes all records in this entity and then create a record with ID = 1 and Boolean = False
3) Create two actions - one to set the Boolean value to True and one to set the value to False in the record where ID = 1
4) Somewhere on some admin screen have three buttons that call the actions in step 2 and step 3
5) Create a web block and in the preparation of the web block read the entity.  If the Boolean is true, reroute to some generic 'system not available' page
6) Place the web block in the header of every screen that needs this function

Once this is all done, click the button that calls the action in step 2 - you should only need this once but if you run into any problem you can use it again to initialize the entity.

When you want to run the background process either click the appropriate button or have the process call the action to set the value to True.  When the process is done either click the appropriate button or have the process call the action to set the value to False.

This whole thing basically allows you to lock the system anytime you want without any developer involvement.  The entity could be expanded if you needed other locks for different processes.

Hope this helps,

Curt


P.S. While I don't think this is a wild idea I doubt it makes sense to include it as a platform function since its fairly easy to implement and each application would likely need different things.