I am using Sitecore Intranet Portal. The user profiles are saved in folders which are created by default. E.g. For a user "Jonny Bravo
" two folders J
and Jo
are created automatically and then the user profile is saved in it.
`J -> Jo -> Jonny Bravo`
I would like to disable this default behavior instead I want to structure the user profiles according to departments. E.g. Finance, Purchase, Administration etc. So a folder Purchase
would contains all the users working in this department.
Please let me know if:
1. Its possible or not ?
2. Does it has any consequences ?
In Sitecore Intranet Portal 4.1.0, in Intranet.Profiles.config
config, you can define your own UserProfileProvider
instead of the default one, which uses Sitecore.Intranet.Profiles.Providers.UserProfileProvider
class.
Just inherit from that class and override public virtual Item GetProfileFolder(string userName, bool createIfNotExist)
method.
Default implementation of this method is:
public virtual Item GetProfileFolder(string userName, bool createIfNotExist)
{
userName = StringUtil.GetLastPart(userName, '\\', userName);
Item item = this.settings.Database.GetItem(this.settings.UserProfilesFolder);
int num = Math.Min(this.settings.UserProfilesTreeDepth, userName.Length);
for (int i = 0; i < num; i++)
{
string firstLetters = this.GetFirstLetters(userName, i + 1);
Item item2 = this.GetItem(item, firstLetters, TemplateIDs.Folder);
if (item2 == null)
{
if (!createIfNotExist)
{
return item;
}
item = this.CreateFolder(item, firstLetters);
}
else
{
item = item2;
}
}
return item;
}
I don't know about any disadvantages of changing default folder structure.
EDIT
You need to change the type of the provider to you custom provider here:
<UserProfileProvider>
<x:attribute name="type">Sitecore.Intranet.Profiles.Providers.UserProfileProvider, Sitecore.Intranet.Profiles</x:attribute>
<param ref="profilesSettings"/>
</UserProfileProvider>