Quantcast
Viewing all articles
Browse latest Browse all 2

Debugging “What’s happening” in Communities

Recently an issue was reported about count mismatches in SharePoint 2013 Communities. The number of replies in category tiles sometimes is different compared to the community stats in the web part called “What’s happening”. The actual number of replies is 1 in the figure below. The user who has reported has tried to add, update and delete discussions and replies.

 

Image may be NSFW.
Clik here to view.
category-replies-count.png
   Image may be NSFW.
Clik here to view.
comm-002

I have invested some time debugging this issue. It would be pity to not share my findings. Well the first thing to do was to determine the type name for the “What’s happening” web part. To do so just edit the  page and export the web part. In the exported .webpart file I saw that the type was Microsoft.SharePoint.Portal.WebControls.DashboardWebPart.

With that knowledge it is time to open ILSpy, an awesome and free(!) assembly browser and decompiler. Load the “Microsoft.SharePoint.Portal” assembly from GAC into ILSpy. Then use F3 to search for DashboardWebPart:

Image may be NSFW.
Clik here to view.
comm-003

The number of replies is retrieved from SPWeb.AllProperties:

Image may be NSFW.
Clik here to view.
comm-004

If the Property Bag does not contain it, it gets the number of replies from the list. The formula is as follows:

list.ItemCount - list.RootFolder.ItemCount

It means that it gets the number of both discussions and replies: ItemCount of Discusssions List. The number of Discussions is determined by the ItemCount in the RootFolder of the Discussions List. Discussions are List Items in the RootFolder (num2 in the figure below). Replies are saved in the subfolders, every discussion gets an own folder. The number of all replies are num3 in the figure below.

Image may be NSFW.
Clik here to view.
comm-005

After checking the web properties I could see that the number of replies there were wrong: 2.

The next step was to determine where and when the Web Properties are updated. The first guess every SharePoint Developer has in such cases is an EventReceiver. Here are all EventReceivers connected to the Discussions List:

$list.EventReceivers | select class, Type, Synchronization | Out-GridView

Image may be NSFW.
Clik here to view.
comm-006

Allright, CommunityEventReceiver then:

Image may be NSFW.
Clik here to view.
comm-007

Found where the actual update happens: CommunityUtils.UpdateWebIndexedPropertyBag

Image may be NSFW.
Clik here to view.
comm-008

The method is used in DiscussionListCommunityEventHandler.HandleEvent

Image may be NSFW.
Clik here to view.
comm-009

There is a flag, flag5 that is used to determine if the Web Properties should be updated:

Image may be NSFW.
Clik here to view.
comm-010

But the flag5 is not true on Delete operations in some code flows:

Image may be NSFW.
Clik here to view.
comm-011

 

That’s it. So deleting a reply will not have any effect on “What’s happening”. But adding a new discussion will also update the stats:

Image may be NSFW.
Clik here to view.
comm-012

To summarize the debug session, there is an issue in the OOB code that misses to update community stats when deleting a discussion or a reply. Adding a new discussion, or a reply will synchronize the stats.


Image may be NSFW.
Clik here to view.
Image may be NSFW.
Clik here to view.

Viewing all articles
Browse latest Browse all 2

Trending Articles