Broken References to Structs and Enums

Hello there,
I guess I fumbled the migration of a project containing some tools I built for UE. I tried to migrate it from an old project to a fresh one, changing the folder structure of the project.
Old: “/Game/Sponza/Blueprints/…”
New: “/Game/Blueprints/…”

In doing so, it broke references in my Blueprint Function Library to structs and enums I had used to tidy things up. The names and details of the items haven’t changed at all, just the path to them.

I have tried to open the BFL and BPs in the node editor in order to re-reference and rewire but it just falls apart to the point where nearly every connection is removed and errors abound.

For the life of me I can’t figure out how to just re-point the references to the new name of the structs and enums without everything breaking in the process.

I have tried using “Replace References” but the dialog only comes up with a single entry, the item I selected, and the “consolidate” button is greyed out so I can’t proceed.

I also found some info on Core Redirects but I must not be formatting them incorrectly because none work.
This one results in no errors to the output but also no change/fix to the reference:

[CoreRedirects]
    +StructRedirects=(OldName="/Game/Sponza/Blueprints/Flicker/ColorVarStruct",NewName="/Game/Blueprints/Flicker/ColorVarStruct")

This one gives me an invalid character error in the output on startup:

[CoreRedirects]
    +StructRedirects=(OldName=/Script/Engine.UserDefinedStruct'/Game/Sponza/Blueprints/Flicker/ColorVarStruct.ColorVarStruct',NewName=/Script/Engine.UserDefinedStruct'/Game/Blueprints/Flicker/ColorVarStruct.ColorVarStruct')

And this one where I tried to use the substring matching to just remove the old name causes the editor to crash on startup:

[CoreRedirects]
    +StructRedirects=(OldName="/Sponza",NewName="",MatchSubstring=true)

Am I misunderstanding what these redirects are for or just misformatting the line?

Is there anyway I can cleanly fix these few references without manually rewiring everything? These tools took a lot of time and effort to create and I really don’t want to lose them.

Small update:
Using the -DebugCoreRedirects CLA shows that the first of my examples above is not finding the destination struct for some reason.
LogCoreRedirects: ValidateRedirect(Type 4) can't validate destination Struct for redirect from /Game/Sponza/Blueprints/Flicker/ColorVarStruct to /Game/Blueprints/Flicker/ColorVarStruct with unloaded package

Gonna have to do another migration from the source build. This time do sub folder moves and immediately do a Fix Redirectors.

Sub folder moves means don’t just take the Blueprints folder and lump move it. Create a new Blueprints folder. /Game/Blueprints/

Inside that folder create the first level sub and move the old to it. Recursively walk the directories.
Move, fix redirectors… Move, fix redirectors

Its a tedious pain, but it is what it is.

Depending on how many child folders you have you may need to do a folder to folder move and redirect fix. In general it’s not good to do folder to folder moves. It’s better to recreate the folder structure and move clumps of assets to the new folder. But after every move you have to fix redirectors.

I dont have access to the source build anymore but the new structs and enums in question are identical to the originals; the only change is the folder they live in.

I figured maybe I could do something like what you are describing: move them out of their new directory into the old one, open and compile the BFL so it finds them, then move them back to the new dirs, open and compile again for the new location. There aren’t so many that it’s not doable but this all took me down the rabbit hole of redirects so it would still be good to learn where my attempt is falling down and why.

I’ve seen in the docs and in other people’s posts that they have sucessfully redirected C++ to BP and vice versa so will this just not work on BP to BP redirects? In my mini reply above I saw in the debug feedback that it couldn’t find the destination directory. Is that because of my formatting of the path?