We want to bring additional users into our Chatter with Chatter Free licenses, but realized that some sensitive posts have been made outside of bespoke private groups. This is causing a problem since we don't want the new users to see those posts. I can't solve this with Visualforce and Chatter does not support blocking users.

Short of deleting dozens of posts, are there any ways around this? Can posts and their comments be moved into private groups after the fact?


A quick test in the Developer Console shows that you cannot UPDATE FeedItem so these posts cannot be re-parented.

  • 1
    You can delete the obtrusive chatter posts and create new ones with the same body and set CreeatedById as the original author and ParentId as the GroupId, if you aren't fussed about the time of the post. Dec 13, 2012 at 18:36

3 Answers 3


There is no way to restrict visibility of individual posts bar putting them in private groups or a community.

You can "move" the posts to the new private group by recreating them and deleting the public messages. There is a profile permission that can be granted to users called "Insert System Field Values for Chatter Feeds". This will allow you to re-create the post, comments and likes and set the CreatedById and CreatedDate for those records, so they will appear as having been posted by the user at the original time. The objects you need are FeedItem, FeedComment and FeedLike

You could either do this by writing apex code, or via the api / dataloader.

You will not be able to migrate chatter polls until winter 14 goes live.


You could perhaps implement a 'Chatter Censoring' orchestration, where you write a Trigger on FeedItem and scan the post for certain (configurable) sensitive keywords. You can then either prevent posting of this post all together or automatically post it to a relevant private group.(set ParentId on the FeedItem)

    trigger FeedItemCensor on FeedItem (before insert) {
    for (FeedItem fItem : trigger.new){
       //you could retrieve offensive keywords from a Custom Setting
       if(UserInfo.getProfileId()=='PROFILE_ID' && fItem.body.indexOf('Offensive') > 0) 
       fItem.addError('You cannot post');
       //fItem.ParentId = '0F9XXXXXXX';  //Alternatively set group Id as parent Id


Consider having a Custom Setting where the Name=> Value pair is potentially Keyword => GroupId, so that you can scan for keyword and then quickly understand which Group to attach the post to.

  • I could see using this to only allow people to post to certain groups.
    – Mike Chale
    Dec 13, 2012 at 14:44

You can use an appexchange tool "chatter Block" to block the users from being follow up you. Or you can create a private group and post over there. Using private group,it will be visible to the user who have permission to "view all data".It follows role hirarchy feature. I would like to suggest you to use tool "Chatter Block" for it. It is a free app.

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .