Are you talking about saving door states or level streaming? The game instance is the best way to save variables from level to level. Instead of casting to each door BP. Make a new actor BP, call it something like BP_LevelManager. To the begin play add a GetAllActors(BP_Door)>Get a copy and promote it to a variable. Place it in your level. You can use that as a reference to call variables and events on the door_bp. Set up boolean checks for all your doors in the BP_LevelManager. Pass all those into a boolean array and save it in your game instance.
In the BP_LevelManager you can also setup your levels to stream so that whenever your players go to the doors it will load the previous level.