Best use of GameModes

I am wondering if I am using GameModes the correct way in my multiplayer game with a dedicated server.

Scenario 1:
The client launches the game with a basic level with a splash screen and then leads to a main menu. I use a MainMenuGameMode here. From here the client can connect to a dedicated server.
When the dedicated server launches, it starts in a DedicatedServerGameMode that simply parses some arguments to determine which level to open. When the client connects they obviously use the same GameMode the server is using for that level.

Is this a proper usage? When the dedicated server starts should I have a ‘special’ GameMode for setup, loading external data, and connecting to any back end services or is there another way to handle this (perhaps just using the GameInstance on launch somehow by having a different GameInstance on the server than on the client?)

Scenario 2:
Each level in my game may require a small amount of procedural generation. Would it be more proper to override the level blueprint in C++ for each level to handle this on a level by level basis, or use a separate GameMode per level? Depending on the level the generation done will widely vary, even though there is not much of it. Levels may also have varied winning conditions and may not be similar to one another - this led me to think I may need to do GameModes for these conditions and override the level blueprint as well.

I hope I explained this alright. If you need more info feel free to ask me!