How can I use the character model retrieved with GetCharacterAppearanceAsync() method?

I tried using:

local playerUserID = player.UserId
		local originalCharacterModel = game.Players:GetCharacterAppearanceAsync(possessorUserID)
		local humanoid = player.Character:FindFirstChild("Humanoid"):Clone()
		local humanoidRootPart = player.Character.HumanoidRootPart:Clone()
		humanoidRootPart.Parent = originalCharacterModel
		humanoid.Parent = originalCharacterModel
		originalCharacterModel.PrimaryPart = humanoidRootPart
		originalCharacterModel:SetPrimaryPartCFrame(player.Character.PrimaryPart.CFrame)
		originalCharacterModel.Parent = workspace
		player.Character = originalCharacterModel -- Finally using that originalCharacterModel here.

In a server script, I have access to the player, I used retrieved their user ID for using it with the GetCharacterAppearanceAsync() function, which retrieves the model of that player, and I need to know a way of assigning it to the player properly. Because I might be doing something wrong with this approach:

For some reason, it is not really being usable at all. When I put it inside the workspace, it just looks like an unloaded mesh (gray color) and all fell apart on the baseplate, and me (the player) has NO character to play with after I assigned them that OriginalCharacterModel.

I’ve noticed that the OriginalCharacterModel, it’s a Model in the workspace, and when I uncollapsed it, it has some folders and doesn’t look much like a usable character (ordinary character models) to assign.

But that’s exactly the thing I need to achieve, what could I do to retrieve the player’s originalCharacterModel and use it as a character for the player to play with?

The reason why I’m doing this is because I’ve already made one way of assigning a character model that’s within my game already, and after a couple while, I need to assign the player’s original character model back again.

Thank you so much for taking the time to help me with this!