title: C# Add User to Active Directory - The attribute syntax specified to the directory service is invalid
body: <p>I am having an issue when attempting to create a new user in active directory. I followed the steps provided in this <a href="http://www.morgantechspace.com/2013/07/how-to-create-active-directory-users-by.html" rel="nofollow">link</a> for using PrincipalContext (with the exception that I am only doing one user at a time when they are hired and entered into the system and not multiple so no loop is required).  I am also using a UserPrincipal Extender.</p>
  
  <p>Here is the code that I have:</p>
  
  <pre><code>protected void CreateUserPE()
  {
      try
      {
          PrincipalContext userCtx = new PrincipalContext(ContextType.Domain, DomainFQDN, DomainFull);
          string UserName = txtFirstName.Text.ToLower() + " " + txtLastName.Text.ToLower();
          string password = "superSecretPassword";
  
          UserPrincipalsEx newUser = new UserPrincipalsEx(userCtx, UserName, password, true);
          newUser.SamAccountName = txtFirstName.Text.ToLower() + "." + txtLastName.Text.ToLower();
          newUser.UserPrincipalName = txtFirstName.Text.ToLower() + "." + txtLastName.Text.ToLower() + "@rasm.com";
          newUser.EmployeeId = txtEmpID.Text;
          newUser.LastName = txtLastName.Text;
          newUser.GivenName = txtFirstName.Text;
          newUser.DisplayName = txtFirstName.Text + " " + txtLastName.Text;
          newUser.Name = txtFirstName.Text + " " + txtLastName.Text;
          newUser.SetPassword(password);
          newUser.HomePostalAddress = txtAddress.Text + ", " + txtCity.Text + ", " + txtState.Text + ", " + txtZip.Text;
          newUser.CountryName = txtCountry.Text;
          newUser.HomePhone = txtHomePhone.Text;
          newUser.MobilePhone = txtMobilePhone.Text;
          newUser.DateOfBirth = txtDOB.Text;
          newUser.EmergencyContact = txtEmergencyCnt.Text;
          newUser.EmergencyPhone = txtContactPhone.Text;
          newUser.Relationship = ddlRelationship1.SelectedItem.ToString();
          newUser.EmergencyContact2 = txtEmergencyCnt2.Text;
          newUser.EmergencyPhone2 = txtContactPhone2.Text;
          newUser.Relationship2 = ddlRelationship2.SelectedItem.ToString();
          newUser.EyeColor = ddlEyeColor.SelectedItem.ToString();
          newUser.HairColor = ddlHairColor.SelectedItem.ToString();
          newUser.Height = txtHeight.Text;
          newUser.Weight = txtWeight.Text;
          newUser.Gender = ddlGender.SelectedItem.ToString();
          newUser.PersonalEmail = txtPersonalEmail.Text;
          newUser.PassportExpires = txtPassportExp.Text;
          newUser.HomeBase = ddlHomeStation.SelectedItem.ToString();
          newUser.WorkLocation = txtWorkLocation.Text;
          newUser.PID = txtPID.Text;
          newUser.Team = txtTeam.Text;
          newUser.Manager = "CN=" + txtSupervisor.Text + "," + DomainFull;
          newUser.Title = ddlJobTitle.SelectedItem.ToString();
          newUser.JobCode = txtJobCode.Text;
          newUser.PLC = txtPLC.Text;
          newUser.BPLC = txtBPLC.Text;
          newUser.Specialty = txtSpecialty.Text;
          newUser.Position = txtPosition.Text;
          newUser.DateOfHire = txtDOH.Text;
          newUser.DateOnContract = txtDOC.Text;
          newUser.TaskOrder = ddlTaskOrder.SelectedItem.ToString();
          newUser.Classification = ddlClass.SelectedIndex.ToString();
          newUser.Section = txtSection.Text;
          newUser.GatePass = txtGatePass.Text;
          newUser.GatePassExpires = txtGatePassExp.Text;
          newUser.WorkPhone = txtWorkPhone.Text;
          newUser.CompanyEmail = txtCompEmail.Text;
          newUser.aKOEmail = txtMilEmail.Text;
          newUser.aKOSponsor = txtMilEmailSp.Text;
          newUser.CACSponsor = txtCacSponsor.Text;
          newUser.CACSponsorEmail = txtCacSponsorEmail.Text;
          newUser.CacCardExpires = txtCacExpires.Text;
          newUser.Enabled = true;
          newUser.ExpirePasswordNow();
          newUser.Save();
          newUser.Dispose();
      }
      catch
      {
  
      }
  }
  </code></pre>
  
  <p>The program goes all the way to newUser.Save() and then throws the following error in the catch statement:</p>
  
  <pre><code>System.DirectoryServices.AccountManagement.PrincipalOperationException was caught
    HResult=-2146233087
    Message=The attribute syntax specified to the directory service is invalid.
  
    Source=System.DirectoryServices.AccountManagement
    ErrorCode=-2147016693
    StackTrace:
     at System.DirectoryServices.AccountManagement.ADStoreCtx.Insert(Principal p)
     at System.DirectoryServices.AccountManagement.Principal.Save()
     at Personnel_Employee.CreateUserPE() in c:\inetpub\wwwroot\TestingFolder\Personnel\Add\Employee.aspx.cs:line 263
     InnerException: System.DirectoryServices.DirectoryServicesCOMException
     HResult=-2147016693
     Message=The attribute syntax specified to the directory service is invalid.
  
     Source=System.DirectoryServices
     ErrorCode=-2147016693
     ExtendedError=87
     ExtendedErrorMessage=00000057: LdapErr: DSID-0C090D11, comment: Error in attribute conversion operation, data 0, v23f0
     StackTrace:
          at System.DirectoryServices.DirectoryEntry.CommitChanges()
          at System.DirectoryServices.AccountManagement.SDSUtils.ApplyChangesToDirectory(Principal p, StoreCtx storeCtx, GroupMembershipUpdater updateGroupMembership, NetCred credentials, AuthenticationTypes authTypes)
     InnerException: 
  </code></pre>
  
  <p>Where am I going wrong.</p>