When a Member is created, both an account and a contact are created and linked to them by default. However, you can define a custom action for when the member is created, such as create a community user.
If you want any other custom action to happen upon the Member’s subscription, follow the steps below:
Create Apex Class
In your Org, go to Setup and search for Apex Classes in the Quick Find box. Click New to add your class.
public class CustomUserCreation implements UserCreation {
// Static Org Settings to avoid SOQL limits
private static Organization orgSettings {
get{
if (orgSettings == null) {
orgSettings = [SELECT DefaultLocaleSidKey, LanguageLocaleKey FROM Organization].get(0);
}
return orgSettings;
}
set;
}
// Static Profile Id to avoid SOQL limits
private static Id profileId {
get{
if(profileId == null){
profileId = [SELECT Id FROM Profile WHERE Name = 'Fielo Community'].get(0).Id;
}
return profileId;
}
set;
}
// Reflection Method
public User getUser(Member__c member, Id contactId){
// Some required fields
String communityNickname = member.Name + String.valueOf(contactId).substring(12,15);
String subAlias = (member.Name.length()>4) ? member.Name.substring(0,4) : member.Name;
String alias = subalias;
String timeZone = UserInfo.getTimeZone().getId();
User newMemberUser = new User(
Email = member.FieloPLT__Email__c,
Username = member.FieloPLT__Email__c,
LastName = member.Name,
Alias = alias,
emailencodingkey = 'UTF-8',
ProfileId = profileId,
ContactId = contactId,
LocaleSidKey = orgSettings.LanguageLocaleKey,
TimeZoneSidKey = UserInfo.getTimeZone().getId(),
LanguageLocaleKey = orgSettings.LanguageLocaleKey,
CommunityNickname = communityNickname
);
return newMemberUser;
}
}Once the class has been created, you’ll need to add it as a value in the required Program field.
Adding Value to the Program Field
Within the Program's data page, find the User Creation Class field (FieloPLT__UserCreationClass__c) and add as a value the recently created class name. You can also create a new to add this field.
The custom class added in the program's field will be executed only when the member is created using the Member Service Class - more specifically the ones that have completed the Register Members: Registration Step 2 (FieloPLT.MemberService.finishRegistration).
