My 2p about ERP Solutions, Information Worker Solutions and other software products (mainly Microsoft Dynamics AX and Microsoft SharePoint).

01 February 2009

Create a Who is Who application on SharePoint

by Patrik Luca 36 comments

Tag



Most people having a SharePoint environment have already a lot of information about the users in another system stored, such as Active Directory. This article describes a step-by-step guide to promote this user information in Active Directory to the SharePoint environment, resulting in a Who is Who functionality on the SharePoint environment.

Step 1: Install the Roxority User Profiles List Web Part for SharePoint

 

  • Download the Roxority User Profiles List Web Part for SharePoint. This free Web Part lists SharePoint user profiles in any way you wish.
  • Replace localhost in the setup.bat file with the url of your SharePoint Web Application.
  • Run the setup.bat file which adds and deploys the Solution.
  • Create the directory C:\Program Files\Common Files\Microsoft Shared\web server extensions\12\TEMPLATE\IMAGES\peoplecache on your SharePoint server.
  • Create a file peoplecache.xml in the previously created directory with following content:

    <?xml version="1.0" encoding="utf-8"?>
    <root>
    </root>

Step 2:Map User Profile Properties on your Shared Service Provider

 

  • Go to your SharePoint Central Administration site.
  • Go to your Shared Service Provider.
  • Choose User profiles and properties in the User Profiles and My Sites section.
  • Map the properties you want to visualize in your Who is Who application in the User Profile Properties.


  • Go back to the User Profile and Properties page and choose Start full import to import the Active Directory accounts in your SharePoint environment: you can schedule this so it runs automatically at regular times.

 

Step 3: Grant Manage User Profiles permission to the end-users

All users who need to have access to the Web Page on which you will be adding the Web Part need to have to be granted the Manage User Profiles permission. You grant it on your Shared Service Provider through the Personalization services permissions link in the User Profiles and My Sites section.

 

Step 4: Add the Web Part to a SharePoint Web Part Page

 

  • Create a Blank Web Part Page.
  • Add the Roxority User List Web Part to the Web Part Page:


  • Click Modify Shared Web Part and uncheck the caching options.


  • Remove the Date-based filtering. If you enter data for the Hire Date property in Active Directory, you can use this property to filter which users are going to be displayed. You can use other date fields too for filtering purposes.


  • Choose which Profile properties you want to display on the Web Part Page


  • Click OK and Publish the Web Part Page.

Result: Who is Who within SharePoint

 

As result you get all users with the chosen properties on one page. You can tweak the CSS to have it in your own preferred layout (for example .solarlux-userprofile-picture to enlarge the pictures shown).


Comments 36 comments
hipslu said...

thx for sharing. the only question is (at least for me) why all users would need the manage user profiles right. it would be greate if you point out the reason. thx!

Patrik Luca said...

Hi,

the only way for me to manage that all users (not only the site collection administrators) could see the Active Directory data such as names, phones etc. and the pictures in the web part, was by giving all users the manage user profiles right. If you find another way: please be so kind to share it here: I would love to hear about it.

Mitch said...

Does anyone know how to filter what users are to be displayed. I have an AD full of accounts that i wish to remove from the listing...

Patrik Luca said...

Hi Mitch,

you can filter only based on a date field.
For example: enter the hire date as Date property in the Date-based filtering section.
Choose a value of 366 in Duration in days and check the Ignore year box.
As such, only AD accounts having a value for the hire date will be shown, the rest won't be shown.

Peter said...

You can also filter on the email address = *.com, if all employees have email addresses

Bill said...

Has anyone run across the problem that attributes that are working in SharePoint already, like for the basic user profile for example, are not working in this web part? I use an extended Exchange attribute for the photo which works. I also use the Title attribute which works. But the other attributs like telephoneNumber and mail do not work, shows unknown. Great web aprt, hopefully i can ge tit working.
Thanks

Mike said...

Greetings, we are testing this webpart out and following the instructions from above, but when we click on "Modify Shared Web Part" we do not see the Profile Cache, Paging, Date-based filtering, and Profile properties sections. Did anybody else have this problem? If so, how do you correct this? We can see the web part, but nothing still shows up in it. Any info would be great.

Thanks, Mike

Philipp Schumann said...

Hi, Phil / ROXORITY here, the original Web Part author. I'm listening. Fixing all these issues has a really high priority for me. Not quite there yet but will be soon. Will post an update here as well. Nobody wants to see this Web Part in a sane, working, useful state more than me. Hang in there, people!

Patrik Luca said...

Hi Mike,

to see those sections, click on the drop-down arrow next to roxority.com SharePoint Us...: it is just above the Appearance section: it is a bit hidden I must admit.

Patrik Luca said...

Hi Phil,

nice to meet you here: thanks for linking back to my post on your site.

Bill said...

In my case, the attributes had to be the exact case, e.g. WorkEmail:, also for email the SharePoint shows email as the attribute but WorkEmail is what actaully works. Thanks for the help Phil.

Bill said...

In addition, I was mistaken as to where to find the true property name. In SP Central Administration, when you view the properties, I thought at first it was the mapped attribute, and for some things it is the same. But to see the property you click on the property in the property name column, select edit, and you see it in the first field.

Kyle said...

If all users have Manage User Profiles permission, is there any danger, since they cannot access the SSP to use it?

Petr said...

Hi, has anybody discover how hide one account from users view? This account is SPP system account and is automatically added to user list-and this is unwanted. Any suggestion? thanks. Petr

Patrik Luca said...

Hi Petr,
with the date filtering function (like I do in my example on the hire date, you can exclude such system accounts): put a filter on such a date field and make sure the system accounts are excluded by this filter.

Anonymous said...

Is there anyway to hide or remove the profile properties that are blank for certain users? For example, we have cell phone numbers for some of our users, but not all. The ones who we do not have cell phone numbers for result in "(Mobile phone unknown)" being displayed on the page. A sorting feature so that you could sort the results by department etc would be great too. Other than that this web-part is awesome and even better, it's free.

Petr said...

Hi Patrik, thanks for help. It's works and I understand it. This webpart is perfect.

Anonymous said...

Can you add the ability to filter by a specific field? Being able to filter by Department or office would make this 1000x more useful.
Or maybe only show users that are members of a certain sharepoint group?

Anonymous said...

This is a great webpart. Peter, you said you filter by email whihc would be perfect for me. It seems to only allow you to filet by date. We do not include this as a field that is used. How do you filter by somethin gother than date?

Robert said...

I am getting this error when trying to add the web part:

Unable to add selected web part(s). The file you imported is not valid. Verify that the file is a Web Part description file (*.webpart or *.dwp) and that it contains well-formed XML.

Robert said...

Never mind my previous post. I forgot to add the peoplecache folder and .xml to both of my web servers.

David said...

Followed your intsructions, deployed the solution, yet the webpart is never available to be selected for use when attempting to add a web part to the blank page...any and all help would be fantastic!!

Patrik Luca said...

David,

do you see the Web Part in the list of Web Parts which can be added to a page (see my screenshot above, where it is just after the Relevant Documents Web Part)?

Did you already execute an iisreset: always a good suggestion if something doesn't behave as expected...

Do you have multiple web servers? Or is it a single box SharePoint installation?

Do you see the Roxority solution in your solution store? To check this: go to SharePoint Central Administration and choose Operations>Solution Management. You should have an entry called roxority_userlistwebpart.wsp in a status Deployed.

David said...

Thank you Patrik...it is working now, but for some reason, it won't filter by the SPS-HireDate field...it will only allow me to remove that field filter and display EVERYONE which kills the page, meaning I can only access it directly off of the server..

Patrik Luca said...

David,

these are the settings I use:
Date property: SPS-HireDate
Duration in days: 365
Up until today: checked
From today: unchecked
Ignore year: checked


So I am showing only people who have a SPS-HireDate value.

Just to be sure: you've checked already your user profiles to see that there is actually a value for the field Hire date? To check this: go to SharePoint Central Administration, open your Shared Service Provider and go to User profiles and properties in the User Profiles and My Sites section and choose View User Profiles. Try to edit one of your users and see if the field Hire date already has a value as you would expect.

David said...

Thank you Patrik...yes, I do have data in the Hire date field w/n my user's profiles...and it is the SPS-HireDate...it seems that if I uncheck the Cache components and use 365, the page errors out...requires login, etc...if I keep the items checked then no results are returned..I have the cache at C:\Program Files\Common Files\Microsoft Shared\web server extensions\12\TEMPLATE\LAYOUTS\1033\IMAGES\peoplecache is this incorrect? I also tried mapping it to C:\Program Files\Common Files\Microsoft Shared\web server extensions\12\TEMPLATE\IMAGES\peoplecache as well. Thoughts? thank you.

Patrik Luca said...

You should create a directory called peoplecache in the directory C:\Program Files\Common Files\Microsoft Shared\web server extensions\12\TEMPLATE\IMAGES. Create a file peoplecache.xml in it, just like mentioned in step 1 of my guide above.

David said...

I have that and have the peoplecache.xml in there with the code that you had suggested in your guide.

Patrik Luca said...

Sorry David, I have no further suggestions then. All I can recommend still is maybe take a look in your SharePoint log files in the 12 hive to see if something is logged in it after you open the page with the Roxority Web Part.

Nickname unavailable said...

I've been able to get it to work but is there a way to have a line wrap longer text fields? I'm trying to add "Responsibilities" but only the first one shows up. If I remove the commas in the users profile then it shows as one long string on one line. It would be most helpful if it could wrap on commas.

Thanks!

Patrik Luca said...

Aren't you able to achieve this by tweaking the CSS?

Nickname unavailable said...

That's what I'm playing around with now. I'm not exaclty an expert on css so I'm not sure what to add. Changing the white space wrapping has no effect. If I remove the commas I do get all the values (because it is all seen as one value with no delimiter) so it looks like it's just not pulling all the separate values from the multivalue strings. If there's a separator in the string (which sharepoint does to separate the "responsibilites" into individual items) then I only get the first one. Can this be changed in CSS?

Nickname unavailable said...

so is this data being held in a single variable or an array? It looks as though this is only getting the first element in the array and then storing it in a variable? Obviously I'm not a programmer, but I think that's what's going on here. It looks like the multivalue strings aren't being read correctly and are somehow seen as just the first element instead of the whole array....or am I just smoking crack? Heehee... I am just a network guy and this is somewhat over my head.

AnDrE said...

Mike said: "Modify Shared Web Part" we do not see the Profile Cache, Paging, Date-based filtering, and Profile properties sections. Did anybody else have this problem?"

Yes Mike, i had the same problem :)

Patrik Luca, great post. It solve all my problems!!

AnDrE said...

One question:

There is some possibility to order the user profile list? Like alfabetic order? What is the default order?

aps said...

Does anyone know where I can purchase SharePoint themes/skins for the Enterprise version?

Patrik Luca, Ieper, BELGIUM
Feel free to use or spread all of the content on my blog. In return, linking back to my blog would be greatly appreciated. All my posts and articles are provided "AS IS" with no warranties.

Subscribe feeds via e-mail
Subscribe in your preferred RSS reader

Subscribe feeds rss Most Read Entries

Subscribe feeds rss Recent Entries

Categories

Recommended Books


Subscribe feeds rss Recent Comments

This Blog is part of the U Comment I Follow movement in blogosphere. Means the comment field of this blog is made DOFOLLOW. Spam wont be tolerated.

Live Traffic Feed

Recent Visitors

Blog Archive

My Blog List

Followers

Guest Links