In many scenarios, it may not be prudent to bring the server down to prevent users from accessing the application during a scheduled maintenance. Moreover, events such as post-deployment tasks that usually take longer than anticipated to complete (like work update etc), users logging-in intermediately will only make things worse.
This solution will come in handy during such events as the utility will not only prevent end-users from logging into the application, but also allow administrator and developers continue working uninterrupted. While an intuitive message to the users indicating the maintenance is in progress, should prove effective (something like this)
Before proceeding, note that this approach is alternative to the one suggested by Pega, but requires less customization when compared to the article given here.
The core functionality just requires a simple activity rule. However, additional UI rules provide an intuitive experience for both administrators and the end users. You will need -
Activity (switchOutage) - to propel changes when invoked by the administrator.
Called from the Local Action
Takes input from end user whether to initiate/end the maintenance outage
Browse through a list of operator profiles under the scope of this outage
Open each record recursively, calling the child activity