It is not possible to configure the user profile synchronization service to import users from other sources than the built in synchronization sources (AD DS, Novell, Tivoli....)
I dont think it is possible to write your own synchronization connection - there are absolutely no documentation, and after having poked around i reflector for days i found no where to register such a synchronization source, and also it seemed like a lot of work - so that was a dead end.
In my case my users were provided by the SQLMembershipProvider, which stores the users in the aspnetdb - but you can use my approach on all membership providers.
You can get all users from a MembershipProvider by issuing the following command System.Web.Security.Membership.GetAllUsers(), if your application is configured to use your membershipprovider as default mebership provider.
Unfortunately this must be done in configuration (web.config, app.config). Because i did not want to mess with the Membership section of the OwsTimer.exe (Sharepoint timer job service) config file, i ended up doing the profile import from a windows service.
Basically you would create a new UserProfile manager and do the following:
foreach (MembershipUser user in System.Web.Security.Membership.GetAllUsers())
{
//Get the claim for the user
var claim = new SPClaim(
SPClaimTypes.UserLogonName,
user.UserName,
"http://www.w3.org/2001/XMLSchema#string",
SPOriginalIssuers.Format(SPOriginalIssuerType.Forms,
System.Web.Security.Membership.Provider.Name))
//Create or retrieve the user profile
UserProfile profile = !userProfileManager.UserExists(claim.ToEncodedString()) ?
userProfileManager.CreateUserProfile(claim.ToEncodedString()) :
userProfileManager.GetUserProfile(claim.ToEncodedString());
//Set profile properties
//Commit
profile.Commit();
}
Tadaa thats it