When a user has a certain profile/license, Salesforce is quite strict about what alternative profiles/licenses you can move the user to. For example you cannot change an external 'Customer Community' user so that they have an internal 'Salesforce Platform' license and profile.
So in those circumstances it seems you have to rename the old user to '.old' and create a new user with the new profile/license.
But then all their old chatter history, group memberships etc are no longer connected to the new user.
In theory it seems it is possible to copy all the chatter posts, follows, group memberships from the old user to the new user, via the Chatter API.
My question is: has anyone tried this, or are there any existing apps/utilities/code examples that do this?