At level start: When are Player Controllers created/available?

At the moment, I try to figure out how to set up the internal logic of our multiplayer game, when a new level is loaded. I know the Framework Class Relationship, but, furthermore, I would like to know, at which point the Player Controllers are created and, thus, available? Are they all available at the same time or only, when the respective player has finished loading the level?

Here is, what I am trying to create. At the level startup I first want to wait until every connected player has successfully loaded the level. During this phase, every player gets displayed a level-startup-widget, which informs each player who is still loading and who is waiting, too. Then, when everyone is ready, there is a given timeframe, after which the widget is removed and the game itself starts.
I started implementing it into the GameMode, but now I am not sure if it would better be placed into the server-side Player Controller…

GameMode - OnPostLogin its what i use.

Good idea, thanks.
To get a better understanding of the topic, I still would like to know the details of my question.

In the meantime I found this question and the answer seems to fit for my question, as well: What is the loadorder of objects?

Just in case somebody stumbles over this question here…