Production on_changes triggered while searching records

Hi, some user reported that sometimes, somehow, when he opens a production, some fields such as “product” “bom”, just lose their value.
I’ve checked the server logs and got this:

7672 140120593266368 [2026-05-11 09:27:42,752] INFO trytond.protocols.dispatcher production.search(['AND', [['rec_name', 'ilike', '%OFR241112%'], ['rec_name', 'ilike', '%//%'], ['rec_name', 'ilike', '%ADIF%'], ['rec_name', 'ilike', '%FONTANAR%'], ['rec_name', 'ilike', '%//%'], ['rec_name', 'ilike', '%[15BE0030035]%'], ['rec_name', 'ilike', '%//%'], ['rec_name', 'ilike', '%[15SR3U000360]%'], ['rec_name', 'ilike', '%//%'], ['rec_name', 'ilike', '%[10MCB12R]%'], ['rec_name', 'ilike', '%CB-12R%'], ['rec_name', 'ilike', '%CB12%'], ['rec_name', 'ilike', '%CARGADOR%'], ['rec_name', 'ilike', '%BATERIAS%'], ['rec_name', 'ilike', '%RACK%']], [['state', '=', 'waiting']]], 0, 1000, [['effective_date', 'ASC'], ['planned_date', 'ASC'], ['number', 'ASC'], ['effective_date', 'ASC NULLS LAST'], ['id', 'ASC']], [.......]

7672 140120593266368 [2026-05-11 09:27:42,764] DEBUG trytond.protocols.dispatcher Result: [541897, 541899]

7672 140119398938304 [2026-05-11 09:27:43,319] INFO trytond.protocols.dispatcher production.read([541897, 541899], ['active_version', 'bom', 'company', 'effective_date', 'number', 'operations_state', 'planned_date', 'planned_start_date', 'product', 'quantity', 'reference', 'state', 'supplier', 'total_labor_time', 'uom', 'work_project', 'bom.rec_name', 'company.rec_name', 'operations_state:string', 'product.rec_name', 'state:string', 'supplier.rec_name', 'uom.rec_name', 'work_project.rec_name', 'rec_name', '_timestamp', '_write', '_delete'], [.......]

7672 140120102524608 [2026-05-11 09:27:47,026] INFO trytond.protocols.dispatcher production.search_count(['AND', [['state', '=', 'waiting']], [['rec_name', 'ilike', '%OFR241112%'], ['rec_name', 'ilike', '%//%'], ['rec_name', 'ilike', '%ADIF%'], ['rec_name', 'ilike', '%FONTANAR%'], ['rec_name', 'ilike', '%//%'], ['rec_name', 'ilike', '%[15BE0030035]%'], ['rec_name', 'ilike', '%//%'], ['rec_name', 'ilike', '%[15SR3U000360]%'], ['rec_name', 'ilike', '%//%'], ['rec_name', 'ilike', '%[10MCB12R]%'], ['rec_name', 'ilike', '%CB-12R%'], ['rec_name', 'ilike', '%CB12%'], ['rec_name', 'ilike', '%CARGADOR%'], ['rec_name', 'ilike', '%BATERIAS%'], ['rec_name', 'ilike', '%RACK%']]], [.....]

8524 140120959219392 [2026-05-11 09:27:47,070] INFO trytond.protocols.dispatcher production.on_change_product({'inputs': [], 'warehouse': None, 'uom': 1, 'location': None, 'company': 1, 'outputs': [], 'quantity': 1, 'bom': 64784, 'product': None, 'id': 541897}, [.....]

8524 140120959219392 [2026-05-11 09:27:47,070] DEBUG trytond.protocols.dispatcher Result: {'uom': None, 'bom': None}

I don’t understand why the on_change_product is being triggered with ‘product’: None, while the user is searching, and the production is on a state where the fields that trigger the on_change are readonly. I’m completely unable to reproduce it by my self.
Any idea ??
Thanks in advance.

Maybe the product name contains invalid chars.

The product name is visible in other views, that is the rec_name:
[10MCB12R] CB-12R CB12 CARGADOR BATERIAS RACK
I’ve queried the fields which build the rec_name and nothing looks rare, anyways, why would an invalid char cause this behaviour?
Thanks!!

The client would consider that the value of the field has changed.