Tuesday, July 28, 2009

Issue with "MembershipMicroView" control

Hi All,

I am facing an issue with “MembershipMicroView” control.

On Profile Page (person.aspx Page) in My Site MembershipMicroView is placed on right Web Part Zone.
This is used to display all the Distribution/Security groups, logged in User is Member of in AD by default.

But when User Click on any of group in the list the mailto: always appears to be null, which is an issue.
In AD all the distribution/Security group is assigned to the one Email ID.

After a deep research and Refactoring the “MicroSoft.SharePoint.Portal” dll :-
public class MembershipsMicroView : PrivacyItemViewer
Name: Microsoft.SharePoint.Portal.WebControls.MembershipsMicroView
Assembly: Microsoft.SharePoint.Portal, Version=12.0.0.0

I Found that for displaying the list, Microsoft wrote the Function called “RenderItemLink”.
Which in turn uses the logic for AD Groups as described below:-

string url = "mailto:" + membership.MembershipGroup.MailNickName;


I found that MailNickName property always bring the NULL result which is very confusing. Also I don’t find any field in AD for Group which is related to MailNickName.
If I use “URL” property always has the value like “
mailto:EmailAddressofTheGroup”

So if the above code is replaced with below may work fine;-
string url = membership.MembershipGroup.URL;

I want to know did anyone had faced any such issue ??? Or ever looked into this Or Have any idea about “MailNickName” property.

Tuesday, May 5, 2009

SharePoint bug – the “created by” and “modified by” search

Hi All,

I am back ................. Another interesting finding...................

What seems to be a SharePoint bug – the “created by” and “modified by” search mappings in advanced search never actually index the relevant metadata, meaning that you cannot usefully search on either of these. Looking at the meta data properties returned on items from a fulltextsqlquery, createdby and lastmodifiedby information is always blank - meaning that these properties are not indexed. This is pretty surprising as these criteria are available on the advanced search on by default.

This appears to be bug. The protocol handler that crawls SharePoint content is not populating the ows_Modified_x0020_By(Text) or the ows_ModifiedBy(Text) or ows_Created_x0020_By(Text) or ows_Created(Text)crawled property.

Good News .....There is work-around for this. I have not tested it rigorously but seems it gives correct result.


1) Open Central administration -> Shared Services -> SharedServices (X being the number of the shared services provider for the site you are creating a mapping) - > search settings -> metadata property mappings
2) Click “Modifiedby” to edit the properties
3) Make sure “Include values from all crawled properties mapped” is selected
4) Click “add mapping” and select the “Office” category from the dropdown list.
5) Look for a property named “OFFICE:8” , click “OK”
6) Click “add mapping” and select the “ows_Last_x0020_Modified(text)” from the ALL categories dropdown list, Click “OK”
7) Make sure the box is checked “Allow this property to be used in scopes”, click “OK”
8) Click on “Crawled Properties” link on the left side of the Shared Services Administration page. 9) Click On the “Office” Category.
10) The mapped property you just created should be listed in the “Mapped To” column of the Office:8(Text) category.
11) Click on the Office:8(Text) category to view the properties.
12) In the “name and information” section, you should see the “property Set ID:” value is 'F29F85E0-4FF9-1068-AB91-08002B27B3D9' ...This is very important!!!
13) In the “Mappings to managed properties” section the managed property you edited in steps 2 – 7 should be listed.
14) The box to “Include values for this property in the search index” should be checked.
15) Click “OK” to exit this page.
16) Open “Shared Services administration” -> “ShareservicesX” -> “Search Settings” -> “Content Sources and crawl schedules”
17) Click on “Local Office SharePoint Server sites” to expand the dropdown list and select “Start full crawl” .
Do the same for CreatedBy and map to Office:4(Text) ,ows_Created_x0020_By(Text).

So the finally both the properties should look like:-
ModifiedBy -- Office:8, ows_Last_x0020_Modified(text)CreatedBy -- Office:4(Text) ,ows_Created_x0020_By(Text)