When attempting to upgrade Openfire to the latest version, we noticed that joining a room as a visitor and then changing to a participant no longer works.
The change here https://github.com/igniterealtime/Openfire/commit/3b3aa8d7fb6ced800d02739d5af8ea3c6710cf45 makes a copy of the extendedInformation node, so that calculateExtendedInformation no longer updates the presence element properly. Changing the role or affiliation continues to happily send the outdated presence payload to users.
Setting this.extendedInformation = exi after updating to the new presence seems to resolve the issue, but I'm not sure if that is the correct fix, as it seems like there might be some thread safety implications. Let me know if you need more information.
I've made a Pull Request:
https://github.com/igniterealtime/Openfire/pull/621
Affiliations updates are affected as well.