Dotnetdreamer's Weblog

SharePoint, Silverlight and Azure

Accessing User Profiles in MOSS 2007

Posted by Ramprasad Navaneethakrishnan on October 17, 2008

On more than one occation, there arouse a need to access the user profile information of the Sharepoint site.The ‘UserProfileManager’ class present in Microsoft.Office.Server.UserProfile holds all the user profiles present in a sharepoint site. All we need to do is to pass the ‘ServerContext’ object as parameter to this UserProfileManager’s constructor.

I have pasted the code of my console application which basically does the following two things..

1. List all the user profiles for the site.

2. Searches the user profile for a specific user.

Here is the code.

App.Config (change the sitename value that matches your site)

<?xml version=”1.0″ encoding=”utf-8″ ?>

<configuration>

<appSettings>

<add key=”sitename” value=”http://localhost:4000″/&gt;

</appSettings>

</configuration>

Program.cs

using System;

using System.Configuration;

using System.Collections.Generic;

using System.Linq;

using System.Text;

using System.Web;

using Microsoft.Office.Server.Administration;

using Microsoft.Office.Server.UserProfiles;

using Microsoft.SharePoint;

using Microsoft.Office.Server;

namespace UserProfilerCApp

{

class Program

{

static void Main(string[] args)

{

while (true)

{

Console.WriteLine(“SHAREPOINT USERPROFILE “);

Console.WriteLine(“1.To List all users Press 1 “);

Console.WriteLine(“2.To search user Press 2 “);

Console.Write(“Enter your option : “);

int isSearch = Convert.ToInt32(Console.ReadLine());

AppSettingsReader appreader = new AppSettingsReader();

string siteName = appreader.GetValue(“sitename”, Type.GetType(“System.String”)).ToString();

if (isSearch == 2)

{

Console.WriteLine(“Enter the username to be searched”);

string username = Console.ReadLine();

SearchUser(siteName, username, true);

}

else

{

SearchUser(siteName, string.Empty, false);

}

}

}

private static UserProfileManager GetAllUserProfile(string sitename)

{

using (SPSite site = new SPSite(sitename))

{

ServerContext context = ServerContext.GetContext(site);

UserProfileManager profileManager = new UserProfileManager(context);

return profileManager;

}

}

private static void SearchUser(string sitename, string username,bool search)

{

bool bFound = false;

UserProfileManager profileManager = GetAllUserProfile(sitename);

foreach (Microsoft.Office.Server.UserProfiles.UserProfile userProfile in profileManager)

{

if (!search)

{

DisplayUser(userProfile);

bFound = true;

}

if (username.ToLower().Equals(userProfile[PropertyConstants.UserName].Value.ToString().ToLower()))

{

bFound = true;

Console.WriteLine(“User Found!”);

DisplayUser(userProfile);

}

}

if (!bFound)

{

Console.WriteLine(“No User Found!”);

}

}

private static void DisplayUser(UserProfile userProfile)

{

Console.WriteLine(PropertyConstants.UserName + ” : ” + userProfile[PropertyConstants.UserName].Value);

Console.WriteLine(PropertyConstants.AccountName + ” : ” + userProfile[PropertyConstants.AccountName].Value);

Console.WriteLine(PropertyConstants.Department + ” : ” + userProfile[PropertyConstants.Department].Value);

Console.WriteLine(PropertyConstants.FirstName + ” : ” + userProfile[PropertyConstants.FirstName].Value);

Console.WriteLine(PropertyConstants.WorkPhone + ” : ” + userProfile[PropertyConstants.WorkPhone].Value);

Console.WriteLine(“—————————————–“);

}

}

}

Advertisements

4 Responses to “Accessing User Profiles in MOSS 2007”

  1. […] Accessing User Profiles in MOSS 2007 […]

  2. After reading

  3. This is a very usefull code. The problem I am facing with this is that, I have 20k users and this code takes around 4 minutes to search the results. Is there any faster way to do this?

  4. I have used same code in my webpart, My issue is latter i have added one custom field into ssp userprofile ipPhone mapped to Ldap. that field i didn’t got into my c# application like “userProfile[PropertyConstants.??????(i want here ipPhone field that i had added into ssp userprofile)].Value);” Can you please suggest is there any update that i have to perform.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

 
%d bloggers like this: