Migrating BP assets involving C++ Classes between C++ projects wont work

Dear Epic,

I experience the following when I have two projects that both have C++, and I try to migrate BP assets from project B to project A

Often I develop features in test projects for faster C++ compile times, and I end up with both Content and C++ code that I then want to bring from the test project into my main project (Project A)

Project A doesnt have the C++ classes I want to bring in.

I bring in the source code from B into A and compile perfectly. This includes many custom C++ class for actors and various parts of game logic that I want to integrate from Project B to project A.

Now Project A has all of those custom C++ classes and will know what an ASpecialDoohikee is. Yay!

I now bring over BP assets from project B that refer to the C++ classes in project B that I compiled project A

This includes a BP class as an asset that is SpecialDoohikeeBP, and directly relies on the C++ class that was brought over from Project B. Also, many BP’s will have variables that refer to ASpecialDoohikee or the BP version.

When I try to open those assets in project A, they cannot be opened become permanently unusable, because the C++ Class name stored in the BP asset includes the old project name, and that path is now invalid, for example it might be Script/ProjectB/ASpecialDoohikee.

But of course the ProjectB is wrong, but the BP content ported from project B to project A doesnt know to change the paths to Script/ProjectA/ASpecialDoohikee.

I know of no way to tell the BP assets imported into project A from B that they should simply change the projectname part of the C++ path to refer to the ProjectA path so that the newly compiled C++ classes will be found.

Because I dont know how to do this, I end up redoing a ton of work for all BP assets that I wanted to import from project B over to project A.

The worst case is blueprints that extend C++ classes made in B, because they are completely broken.

Under current conditions SpecialDoohikeeBP is gone forever and I have to redo it, in Project A :slight_smile:

Is there any way to get around this?

If you can assist me in this matter I will happily make a wiki about the solution you provide

:heart:

Hey ,

Just wanted to let you know that I am actively getting reproduction steps in order to submit a bug report regarding your issue. I will also do my best to follow up with a developer regarding any sort of work around or steps that you can look into for transferring Blueprint files from “Project A” to “Project B”.

As a quick follow-up, we already have two issues reported regarding this:

https://issues.unrealengine.com/issue/UE-21307

https://issues.unrealengine.com/issue/UE-28639

I am trying to figure out what the status is for the open one and why the other is won’t fix.

Hey ,

So the issue has been logged and is being tracked but because of the workload with the Blueprint team, it does not have a high priority. The team does think it is a good idea to have the migration tool handle this situation, eventually.

The only thought on a possible way to working around the issue is:

The user could try making redirectors for every blueprintable type.

Keep a look at the issue page, here:

https://issues.unrealengine.com/issue/UE-28639

Thank you for these updates!

I do hope this gets some priority as when you have a large UE4 C++ project, working in smaller projects is vital to avoid very long compile times. But when I am ready to merge the smaller test project with my main project, I run into this issue I am describing.

So I consider this issue vital to be addressed for anyone who is doing a very substantial UE4 C++ project, which is going to be more and more people as time goes on :slight_smile:

Thanks!

:heart:

I have run into this problem too. Maybe someone can write a migration plugin ?