I created a custom function in my custom identity service to validate the input of the user by checking against a URL. If the URL exists, the username is accepted - if not, an error is thrown. I'm using get_headers() (as it was proven 5 seconds faster than cURL during my testing) so this process takes roughly 15-16 seconds to complete. As a result of this, any change whatsoever to the Contact Details page results in my custom identity service being verified, adding an extra 15 seconds to the save process. I'd like to propose to only save changes to the identity service if a change has been made from the previous value.