There's quite a lot to unpack here. I suggest that you use the debugger together with the variables tab to walk through your microflows step by step to investigate what they are doing. It can really help you get an understanding of what is actually happening when you execute a microflow.
There's no inherent difference between PUT and GET statements. They are a bit different in their setup, but if you execute the same microflow, they will do the same thing. So you have to adjust your microflow have them do what you want them to do.
Since you are mapping to a persistent object, finding them by key, it will look in the database if it can find a user for that key. This means that the object you are looking for is already mapped to the ApplicationUser parameter. The retrieve that you do in the microflow will likely result in a duplicate object.
What you can do, is check if the ApplicationUser parameter is empty. If it is, the object is not empty, it means the user exists and you can commit that object. It should update with the new body (not 100% about this, but it should work). In your import mapping, you can also configure what it should do if it can't find an existing object. You can tell it to create a new object. All you have to do then is commit the ApplicationUserParams object, and it should work just like that.
Hope that helps.