Removing User from Roster Groups

Any ideas? I obviously want to retain the user in the shared group, but there doesn’t seem to be a way to clean the roster up.

Hi David,

Could you elaborate on what you are needing to do?

daryl

Uh, 90% of my post wasn’t there…

We’re using AD to manage users/groups. Prior to setting up a shared roster, some users added specific individuals to their buddy lists with custom group names. Now we’re using shared rosters, they have duplicates, however they can’t delete them through their client, nor can I remove the users from the custom groups in their roster via the admin interface.

I’m searching for a user, viewing their roster, finding users with duplicate groups and clearing the ‘Group’ field (The shared group is listed below it). When I try to save, I get this:

org.jivesoftware.openfire.SharedGroupException: Cannot remove item from shared group
     at org.jivesoftware.openfire.roster.RosterItem.setGroups(RosterItem.java:348)
     at org.jivesoftware.openfire.admin.user_002droster_002dedit_jsp._jspService(user_002droster_002dedit_jsp.java:110)
     at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:97)
     at javax.servlet.http.HttpServlet.service(HttpServlet.java:820)
     at org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:487)
     at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1093)
     at com.opensymphony.module.sitemesh.filter.PageFilter.parsePage(PageFilter.java:118)
     at com.opensymphony.module.sitemesh.filter.PageFilter.doFilter(PageFilter.java:52)
     at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1084)
     at org.jivesoftware.util.LocaleFilter.doFilter(LocaleFilter.java:66)
     at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1084)
     at org.jivesoftware.util.SetCharacterEncodingFilter.doFilter(SetCharacterEncodingFilter.java:42)
     at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1084)
     at org.jivesoftware.admin.PluginFilter.doFilter(PluginFilter.java:70)
     at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1084)
     at org.jivesoftware.admin.AuthCheckFilter.doFilter(AuthCheckFilter.java:146)
     at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1084)
     at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:360)
     at org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:216)
     at org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:181)
     at org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:726)
     at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:405)
     at org.mortbay.jetty.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:206)
     at org.mortbay.jetty.handler.HandlerCollection.handle(HandlerCollection.java:114)
     at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152)
     at org.mortbay.jetty.Server.handle(Server.java:324)
     at org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:505)
     at org.mortbay.jetty.HttpConnection$RequestHandler.headerComplete(HttpConnection.java:829)
     at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:514)
     at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:211)
     at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:380)
     at org.mortbay.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java:395)
     at org.mortbay.thread.QueuedThreadPool$PoolThread.run(QueuedThreadPool.java:488)

The roster information that was created locally should be able to be edited locally. If it cannot I would suspect corrupt client settings. You could also purge the cache on the server.

Nope, every time it is editted locally (e.g. remove a user from a custom local group), it’s removed from the list, Openfire throws an error, and when a client reconnects, it’s back the way it was before.

Even if I log out all of the clients, and purge the cache, it’s still showing incorrect within the user’s roster in Openfire. I doubt it has much of anything to do with the client.

Your error above is for a shared group. If they are trying to remove a manually added user from a group you need to right click on the username in the roster and choose Remove From Group:

ScreenShot010.jpg

Nope, I just tried that - When I attempted to remove the user, the entire group disappeared from Spark. I logged out, logged back in, and the group was back, with the user in it.

I didn’t seen an error in Openfire, however.

Ok now that is a know bug in spark 2.5.8. It has issues with deleting users. The only thing I can say is try, try again. It will work eventually, as long as there is not a group name conflict betwwen a shared group and a local group.

I’m trying, believe me - In the local/custom group I have a few users who are a member of a shared group, and some who are not. When I try to ‘remove from group’ someone who is a member of a shared group, the whole group goes away.

Is there a way to completly dump a user’s roster and rebuild it based on shared groups?

Make sure server side storage of user information is disabled. Purge server cache. Delete Spark folder from user’s computer profile (c:\documents and settings\johndoe\Spark). Try again. if that does not do it you will have to manually edit the roster table in the database.

I’ve given up trying to accomplish this from the user end of things. How do I edit the DB? I’m using the integrated DB, so I’m sure that will make my life more difficult than if it was oracle

do you have any truely critical data you are maintaining in the chat server? if not I would seriously upgrade to an external db which in turn would purge the offending data since the database would be new and fresh. There are no easy management tools for the embedded db.

I encountered the same situation upon converting to shared roster groups.

What I did was as follows:

  1. Disable shared roster groups (temporarily)

  2. Stop the openfire server sudo /opt/openfire/bin/openfire stop

  3. Login to your MySQL admin application. I use phpMyAdmin. Go to the “ofRoster” table in your openfire database.

  4. Select all.

  5. Delete all.

  6. Start the openfire server sudo /opt/openfire/bin/openfire start

  7. Re-Enable Shared roster groups

Tada!