Control Rig for varied skeletons

Hi I have not found anyone really solving this yet.

I am using Animation Blueprint Template for many of my characters. I have recently added some runtime modifications using Control Rig node which works great for characters with same skeleton. But I happen to have a few characters with slightly different skeleton (different bone names and slightly different hierarchy) and have problems with them.

It seems to me that Control Rig is bound to a specific skeleton hierarchy.
So if I try to use the same control rig for different skeleton it just doesn’t work. That said my Control Rig is finding bones using input variables so if the hierarchy would dynamically update it should work. That I have not figured out if it’s possible yet.

Anyway the option 2 is to dynamically use another control rig (using the same Animation Blueprint Template) by calling UAnimNodeControlRigLibrary::SetControlRigClass(). But that fails as there is a validation in C which checks if again the bone hierarchy is same enough with this part of the code (so it fails):

						// now compare the two rigs - we need to check bone hierarchy compatibility.
						const TArray<FRigElementKey> OldBoneKeys = OldHierarchy->GetBoneKeys(false);
						const TArray<FRigElementKey> NewBoneKeys = NewHierarchy->GetBoneKeys(false);
						for(const FRigElementKey& BoneKey : OldBoneKeys)
						{
							if(!NewBoneKeys.Contains(BoneKey))
							{
								static constexpr TCHAR Format[] = TEXT("Bone '%s' is missing from the rig.");
								return ReportErrorAndSwitchToDefaultRig(FString::Printf(Format, *BoneKey.Name.ToString()));
							}
						}

So is it that Control Rig node is just not compatible with Animation Blueprint Templates? Or if it is how can I make this work?
Most ideal scenario would be using just one Control Rig that based on it’s inputs can find the bones needed and move the controls and bones accordingly.

This is my control rig code in case anyone is interested. As you can see it does not really depend on a specific bone hierarchy for as long as the input parameters would find from the given hiearchy the elements by name.