My first thought would be to utilize multi-user group chats for this purpose, as those by default can retain some history. Please note that there’s no definition of roles or ‘higher authority’ in Openfire (other than administrative users, which serves different purpose completely).
It might be of interest to you to look at the FastPath implementation (both in Openfire as well as in Spark), as that offers much of the functionality that you appear be after.
Openfire implements the XMPP “Multi-User Chat” specification. It supports an enormous set of functionality - more than that I care to get into detail here. Have a look for yourself!