How to save changes in levels per session with World Composite?

Basically what I have now:
World Composition with 3x3 sub levels with seed generation in Persistent World, which passed into other levels and then each sublevel has unique random generated stuff per session.
Each time player leaves level streaming boundaries level is “cleared” and when player comes back - every changes made during last session is negated. How do I store this changes per session?
I think to serialize EVERYTHING is really overhead, is there some way to store passively data about “unloaded” level in terms of World Composition system?

not sure this is the best way but if on first load, you set two arrays in your persistent level for each sub level, one with your stuff list and a second one with locations. Then you change locations when item is moved, and remove item from both when destroyed. You may can use more arrays (by type of item for example) to have less entries.

Probably you can just hide sub-levels instead of unloading them, and show sub-levels when player comes back. But I’m afraid you can’t do hiding with world composition without modifying engine code. If you will use just traditional level streaming, you can control sub-level show/hide state in blueprints, using GetSteamingLevel BP node.

Hm, it sounds like a nice decision, but I’ve started to this World-Composition-thingy in order to use big landscape with different levels and as far as I’m aware it impossible to “stitch” landscape parts from different levels with traditional level streaming?

You can create one big landscape and then split it to parts using “Move To Level” landscape tool. In the editor you will be able to edit those parts as a one big landscape.

Thanks for advice!
I’ve checked how this tool working with my pipeline and it is just perfect solution