The LINK command must include the corresponding record data in the web_read() format instead of the diff() format. The real difference shows up in x2many fields: web_read() returns them as lists of dicts (or list of ids), while diff() returns them as lists of commands. Part-of: odoo/odoo#124612