I temporarily store the hashed value in a string with a java action. Then i use a java action to set this hash string as the password
this.UserObject = UserObject;
this.PasswordHash = PasswordHash;
}
@Override
public Boolean executeAction() throws Exception
{
// BEGIN USER CODE
IMendixObjectMember<?> m = this.UserObject.getMember(getContext(), "Password");
((MendixHashString) m).setHash(getContext(), PasswordHash);
return true;
Remove the specialization but don't remove the the objects. The specialized objects are also in the user and account table. Password data is stored there.
If this procedure failes update the account table and change the column submetaobjectname to 'Administration.Account' with a SQL query directly in the database. If the database is in the cloud, download the database, restore, change the colomn values, create a backup again and upload to the cloud.
Always keep backups for every step as fallback scenario!
Edit1: if this fails, store the hashes from the administration@account table in a file or somewhere else, update the database and recover the hashes. Match on name.
The following steps work:
However this seems like a massive detour just because Mendix doesn't allow hashed strings to be copied, but instead re-hashes them whenever you set the value. Which in itself is again a detour because you can't delete a specialization with the data in the general object staying intact.
Anybody with hint on how to copy hashed strings using Java?