private string CreateIMSUser(string userID, string firstName, string middleName, string lastName, DateTime expiryDate, string password)
        {
            PrincipalDTO principal = new PrincipalDTO();

            principal.userID     = userID;
            principal.firstName  = firstName;
            principal.middleName = middleName;
            principal.lastName   = lastName;
            principal.password   = password;

            principal.enabled           = true;
            principal.accountStartDate  = DateTime.Now;
            principal.accountExpireDate = expiryDate;

            principal.canBeImpersonated  = (false);
            principal.trustToImpersonate = (false);

            principal.securityDomainGuid = m_SecurityDomain.guid;
            principal.identitySourceGuid = m_IdentitySource.guid;

            //require user to change password at next login
            principal.passwordExpired = (true);

            AddPrincipalsCommand cmd = new AddPrincipalsCommand();

            cmd.principals = (new PrincipalDTO[] { principal });

            cmd.execute();

            return(cmd.guids[0]);
        }
 internal RSAAccount(PrincipalDTO principal, ListTokenDTO[] tokens)
 {
     m_Principal = principal;
     m_Tokens    = tokens;
 }
        public GetImportEntriesResults GetImportEntries(GetImportEntriesRunStep importRunStep)
        {
            try
            {
                GetImportEntriesResults importReturnInfo;
                List <CSEntryChange>    csentries = new List <CSEntryChange>();

                while (userToRead < rsaResult.Count && csentries.Count < m_importPageSize)
                {
                    RSAAccount   rsaAccount = rsaResult[userToRead];
                    PrincipalDTO principal  = rsaAccount.Principal;
                    firstName           = principal.firstName;
                    lastName            = principal.lastName;
                    middleName          = principal.middleName;
                    userID              = principal.userID;
                    managerEmailAddress = principal.email;
                    identitySource      = principal.identitySourceGuid;
                    securityDomain      = principal.securityDomainGuid;
                    lockoutStatus       = principal.lockoutStatus.ToString();

                    tokenSerialNumber = new List <string>();
                    tokenGuid         = new List <string>();

                    foreach (ListTokenDTO token in rsaAccount.Tokens)
                    {
                        tokenSerialNumber.Add(token.serialNumber);
                        tokenGuid.Add(token.guid);
                    }

                    CSEntryChange csentry1 = CSEntryChange.Create();

                    csentry1.ObjectModificationType = ObjectModificationType.Add;
                    csentry1.ObjectType             = "Person";

                    if (firstName != null)
                    {
                        csentry1.AttributeChanges.Add(AttributeChange.CreateAttributeAdd("First Name", firstName));
                    }

                    if (lastName != null)
                    {
                        csentry1.AttributeChanges.Add(AttributeChange.CreateAttributeAdd("Last Name", lastName));
                    }

                    if (middleName != null)
                    {
                        csentry1.AttributeChanges.Add(AttributeChange.CreateAttributeAdd("Middle Name", middleName));
                    }

                    csentry1.AttributeChanges.Add(AttributeChange.CreateAttributeAdd("User ID", userID));

                    if (managerEmailAddress != null)
                    {
                        csentry1.AttributeChanges.Add(AttributeChange.CreateAttributeAdd("Manager Email Address", managerEmailAddress));
                    }

                    csentry1.AttributeChanges.Add(AttributeChange.CreateAttributeAdd("Identity Source", identitySource));
                    csentry1.AttributeChanges.Add(AttributeChange.CreateAttributeAdd("Security Domain", securityDomain));
                    csentry1.AttributeChanges.Add(AttributeChange.CreateAttributeAdd("Lockout Status", lockoutStatus));


                    IList <object> serials = (IList <object>)tokenSerialNumber.Select(x => (object)x).ToList();
                    IList <object> guids   = (IList <object>)tokenGuid.Select(x => (object)x).ToList();

                    csentry1.AttributeChanges.Add(AttributeChange.CreateAttributeAdd("Token Serial Number", serials));
                    csentry1.AttributeChanges.Add(AttributeChange.CreateAttributeAdd("Token GUID", guids));


                    csentries.Add(csentry1);

                    userToRead++;
                }

                importReturnInfo = new GetImportEntriesResults();

                importReturnInfo.MoreToImport = (userToRead < rsaResult.Count);


                importReturnInfo.CSEntries = csentries;
                return(importReturnInfo);
            }
            catch (Exception ex)
            {
                EmailError(ex);
                throw ex;
            }
        }