protected static void FillIdentityUser <TKey>(ICrmIdentityUser <TKey> user, Entity entity, Action <ICrmIdentityUser <TKey>, Entity> PopulateUser = null) where TKey : IEquatable <TKey>
        {
            user.AccessFailedCount    = entity.GetAttributeValue <int>("appl_accessfailedcount");
            user.Email                = entity.GetAttributeValue <string>("appl_email");
            user.EmailConfirmed       = entity.GetAttributeValue <bool>("appl_emailconfirmed");
            user.LockoutEnabled       = entity.GetAttributeValue <bool>("appl_lockoutenabled");
            user.LockoutEndDateUtc    = entity.GetAttributeValue <DateTime?>("appl_lockoutenddateutc");
            user.PasswordHash         = entity.GetAttributeValue <string>("appl_passwordhash");
            user.PhoneNumber          = entity.GetAttributeValue <string>("appl_phonenumber");
            user.PhoneNumberConfirmed = entity.GetAttributeValue <bool>("appl_phonenumberconfirmed");
            user.TwoFactorEnabled     = entity.GetAttributeValue <bool>("appl_twofactorenabled");
            user.UserName             = entity.GetAttributeValue <string>("appl_username");
            user.Contact              = entity.Contains("appl_contactid") ? entity.GetAttributeValue <EntityReference>("appl_contactid") : null;
            user.SecurityStamp        = entity.GetAttributeValue <string>("appl_securitystamp");


            if (string.IsNullOrEmpty(user.SecurityStamp))
            {
                // Always ensure the security stamp is present. If not, create a new one and save it to the backend.
                user.SecurityStamp           = Guid.NewGuid().ToString();
                entity["appl_securitystamp"] = user.SecurityStamp;
                XrmCore.UpdateEntity(entity);
            }
            if (PopulateUser != null)
            {
                PopulateUser(user, entity);
            }
        }
        public static Entity ConvertToEntity <TKey>(ICrmIdentityUser <T> user) where TKey : IEquatable <TKey>
        {
            Entity e = new Entity(user.EntityName, user.Key);

            FillEntity(e, user);
            return(e);
        }
 protected static void FillEntity <TKey>(Entity entity, ICrmIdentityUser <TKey> user) where TKey : IEquatable <TKey>
 {
     entity["appl_contactid"]            = user.Contact;
     entity["appl_username"]             = user.UserName;
     entity["appl_passwordhash"]         = user.PasswordHash;
     entity["appl_email"]                = user.Email;
     entity["appl_emailconfirmed"]       = user.EmailConfirmed;
     entity["appl_phonenumber"]          = user.PhoneNumber;
     entity["appl_phonenumberconfirmed"] = user.PhoneNumberConfirmed;
     entity["appl_twofactorenabled"]     = user.TwoFactorEnabled;
     entity["appl_lockoutenabled"]       = user.LockoutEnabled;
     entity["appl_lockoutenddateutc"]    = user.LockoutEndDateUtc.HasValue ? user.LockoutEndDateUtc.Value.ToUniversalTime() : (DateTime?)null;
     entity["appl_accessfailedcount"]    = user.AccessFailedCount;
     entity["appl_securitystamp"]        = user.SecurityStamp;
 }