Note: This is a historical reference, not a current security baseline. Magento 1 is end-of-life.

Blank screen or the following fatal error is thrown on attempt to change customer’s password in Frontend or Backend or request a password reset after applying SUPEE-10752 or SUPEE-10888 or upgrade:

Fatal error: Call to a member function getBackend() on a non-object in app/code/core/Mage/Eav/Model/Entity/Abstract.php on line 1536.
or (in newer versions)
Fatal error: Uncaught Error: Call to a member function getBackend() on bool in app/code/core/Mage/Eav/Model/Entity/Abstract.php:1538
The error started after SUPEE-10752 or SUPEE-10888 installation or after upgrade to Magento 1.9.3.9 or newer versions including OpenMage LTS.

Cause

SUPEE-10570v2 adds new attribute in database (`password_created_at`) and without such attribute the customer model can not be loaded on accessing password change code after the next patch, SUPEE-10752. SUPEE-10888 as well adds `rp_customer_id` attribute, so after SUPEE-10888 both attributes are required.
To make sure that these attributes exist, you can look into `eav_attribute` table for attributes with such attribute_code:
MariaDB [magento]> select attribute_id,attribute_code,backend_type,frontend_input,frontend_label,is_required from eav_attribute where attribute_code in ('rp_customer_id','password_created_at');
+--------------+---------------------+--------------+----------------+---------------------+-------------+
| attribute_id | attribute_code      | backend_type | frontend_input | frontend_label      | is_required |
+--------------+---------------------+--------------+----------------+---------------------+-------------+
|          210 | password_created_at | int          | text           | Password created at |           0 |
|          211 | rp_customer_id      | varchar      | hidden         | NULL                |           0 |
+--------------+---------------------+--------------+----------------+---------------------+-------------+
2 rows in set (0.00 sec)

Solution

Make sure that you have correctly installed SUPEE-10570v2, SUPEE-10752 and SUPEE-10888 and all database upgrade scripts are in place.
Flush Magento cache to execute database upgrade scripts (i.e. app/code/core/Mage/Customer/sql/customer_setup/upgrade-1.6.2.0.4.1.2-1.6.2.0.4.1.3.php and app/code/core/Mage/Customer/sql/customer_setup/upgrade-1.6.2.0.1.1.1-1.6.2.0.1.1.2.php for Magento 1.9.2.4). These scripts should be executed automatically after cache flush.
Alternatively, as suggested by @Glindemann in comments below you can use the following SQL command to insert the attribute manually:
INSERT INTO `eav_attribute` (entity_type_id,attribute_code,attribute_model,backend_model,backend_type,backend_table,frontend_model,frontend_input,frontend_label,frontend_class,source_model,is_required,is_user_defined,default_value,is_unique,note) VALUES  (1,'rp_customer_id',NULL,NULL,'varchar',NULL,NULL,'hidden',NULL,NULL,NULL,0,0,NULL,0,NULL);
or
INSERT INTO `eav_attribute` (entity_type_id,attribute_code,attribute_model,backend_model,backend_type,backend_table,frontend_model,frontend_input,frontend_label,frontend_class,source_model,is_required,is_user_defined,default_value,is_unique,note) VALUES  (1,'password_created_at',NULL,NULL,'int',NULL,NULL,'text','Password created at',NULL,NULL,0,0,NULL,0,NULL);

Please do not forget to add links to these newly created attributes into `customer_eav_attribute` table as well:
MariaDB [mage]> SELECT is_visible,input_filter,multiline_count,validate_rules,is_system,sort_order,data_model,is_used_for_customer_segment FROM customer_eav_attribute WHERE attribute_id IN (select attribute_id FROM eav_attribute where attribute_code IN ('password_created_at','rp_customer_id'));
+------------+--------------+-----------------+----------------+-----------+------------+------------+------------------------------+
| is_visible | input_filter | multiline_count | validate_rules | is_system | sort_order | data_model | is_used_for_customer_segment |
+------------+--------------+-----------------+----------------+-----------+------------+------------+------------------------------+
|          0 | NULL         |               0 | NULL           |         1 |          0 | NULL       |                            0 |
|          0 | NULL         |               0 | NULL           |         1 |          0 | NULL       |                            0 |
+------------+--------------+-----------------+----------------+-----------+------------+------------+------------------------------+

Comments

Archived discussion

  1. J. G.

    to fix this - insert one line to the table eav_attribute:

    attribute_id,entity_type_id,attribute_code,attribute_model,backend_model,backend_type,backend_table,frontend_model,frontend_input,frontend_label,frontend_class,source_model,is_required,is_user_defined,default_value,is_unique,note 42,1,rp_customer_id,NULL,NULL,varchar,NULL,NULL,hidden,NULL,NULL,NULL,0,0,NULL,0,NULL

    1. George
      That worked for me. Thanks a lot.
  2. Piers
    Hi, We have a Magento 1.9.1.1 store and we are getting this error after installing the SUPEE-10888 patch via FTP. We have checked the database and the attribute ‘rp_customer_id’ is in the table. Is there something else along the line that might be causing this error to still appear when we try to change password in the admin? Thanks in advance for your help.
    1. magentary
      It can be caused by missing ‘password_created_at’ attribute as well.
  3. Hobodi

    Hi, really nice and thousand thanks for this Post. I checked these attributes and one ‘rp_customer_id’ was missing. After I insert the missing attribute the “Forgot Password-Function” was working again. The mail with the token is also working and I can set a new password.

    But I´m not sure what do you mean with the step “to add links to these newly created attrobutes into ‘customer_eav_attribute’. How I can set a link to these new created attributes?

    Thx for your help again.