There's an issue we're struggling with the products EAV. Here's an explanation:

  1. There's a shop with attributes and attribute sets created from them.
  2. A product is assigned an attribute set, and a value is given for a particular attribute from the set.
  3. Then, it turns out that the attribute set was wrong for the product, so it's assigned to a different attribute set.

Here's where the problem happens - Once you change the attribute set, the attributes from the old attribute sets which have a value previously assigned for the products, stay.

And if the attribute is filterable, it appears on the filters of the category, which is the main reason I'm writing this.

What's the best way to handle removing attribute values from old attribute sets/ attribute sets that were wrongly assigned? Should they be manually deleted from the db?

We tried reindexing, but it didn't work.

  • This problem still exists and is also an issue when setting a Price Rule for an attribute, as it is discounting products erroneously that previously had that attribute set with that attribute in it.
    – Chris
    Nov 5, 2019 at 13:03

1 Answer 1


I am experiencing the same issue, not only with Layered Navigation but also on custom calls like:

// Gets old attributes, not in current attribute set.

This article from 2014 is of course outdated. However, it shows the issue along with a script for the necessary cleanup.

This module, EAV Cleaner, seems exactly suited for this (among other things).

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.