public AccountStatus CreateNewLdapAccount(UserInfo userInfo, out string errorText, bool pswdPolicyChk = false) { errorText = string.Empty; if (LdapHelper.LdapAccountExists(userInfo, RootPrincipal)) { return(AccountStatus.AccountAlreadyExists); } try { userInfo.FirstName = LdapHelper.EscapeChars(userInfo.FirstName); userInfo.LastName = LdapHelper.EscapeChars(userInfo.LastName); var preNewUserInfo = LdapHelper.GetUniqueFirstNameLastName(userInfo, RootPrincipal); var newUser = new UserPrincipal(RootPrincipal) { SamAccountName = preNewUserInfo.SamName, DisplayName = String.Format("{0} {1}", preNewUserInfo.FirstName, preNewUserInfo.LastName), Surname = preNewUserInfo.LastName, GivenName = preNewUserInfo.FirstName, UserPrincipalName = preNewUserInfo.Email, EmailAddress = preNewUserInfo.Email, }; if (!String.IsNullOrEmpty(userInfo.Password)) { newUser.Enabled = true; newUser.PasswordNeverExpires = true; newUser.SetPassword(userInfo.Password); } else { newUser.ExpirePasswordNow(); } newUser.Save(); return(AccountStatus.NewAccount); } catch (Exception ex) { errorText = String.Format("Exception creating LDAP account for {0} with exception {1}", userInfo.Email, ex.Message); return(AccountStatus.AccountCreationFailed); } }