This problem occures with the Odoo Enterprise Helpdesk module, when a customer answers on a ticket. The eMail response cannot be added to the ticket thread, and the sender receives an error message via email.
2026-06-25 07:53:44,011 55954 ERROR c4a8-production-1830547 odoo.http: Exception during request handling.
Traceback (most recent call last):
File "/home/odoo/src/odoo/odoo/http.py", line 2577, in __call__
response = request._serve_db()
^^^^^^^^^^^^^^^^^^^
File "/home/odoo/src/odoo/odoo/http.py", line 2104, in _serve_db
return self._transactioning(
^^^^^^^^^^^^^^^^^^^^^
File "/home/odoo/src/odoo/odoo/http.py", line 2167, in _transactioning
return service_model.retrying(func, env=self.env)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/odoo/src/odoo/odoo/service/model.py", line 157, in retrying
result = func()
^^^^^^
File "/home/odoo/src/odoo/odoo/http.py", line 2134, in _serve_ir_http
response = self.dispatcher.dispatch(rule.endpoint, args)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/odoo/src/odoo/odoo/http.py", line 2295, in dispatch
return self.request.registry['ir.http']._dispatch(endpoint)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/odoo/src/odoo/odoo/addons/base/models/ir_http.py", line 333, in _dispatch
result = endpoint(**request.params)
^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/odoo/src/odoo/odoo/http.py", line 754, in route_wrapper
result = endpoint(self, *args, **params_ok)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/odoo/src/odoo/odoo/addons/base/controllers/rpc.py", line 165, in xmlrpc_2
response = self._xmlrpc(service)
^^^^^^^^^^^^^^^^^^^^^
File "/home/odoo/src/odoo/odoo/addons/base/controllers/rpc.py", line 139, in _xmlrpc
result = dispatch_rpc(service, method, params)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/odoo/src/odoo/odoo/http.py", line 412, in dispatch_rpc
return dispatch(method, params)
^^^^^^^^^^^^^^^^^^^^^^^^
File "/opt/odoo.sh/odoosh/bin/odoo-rpc", line 35, in dispatch
return odoo_dispatch(method, [db, SUPERUSER_ID, None] + list(params))
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/odoo/src/odoo/odoo/service/model.py", line 59, in dispatch
res = execute_kw(db, uid, *params[3:])
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/odoo/src/odoo/odoo/service/model.py", line 82, in execute_kw
return execute(db, uid, obj, method, *args, **kw or {})
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/odoo/src/odoo/odoo/service/model.py", line 88, in execute
res = execute_cr(cr, uid, obj, method, *args, **kw)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/odoo/src/odoo/odoo/service/model.py", line 73, in execute_cr
result = retrying(partial(odoo.api.call_kw, recs, method, args, kw), env)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/odoo/src/odoo/odoo/service/model.py", line 157, in retrying
result = func()
^^^^^^
File "/home/odoo/src/odoo/odoo/api.py", line 535, in call_kw
result = getattr(recs, name)(*args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/odoo/src/odoo/addons/mail/models/mail_thread.py", line 1439, in message_process
thread_id = self._message_route_process(message, msg_dict, routes)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/odoo/src/user/modules/c4a8/enterprise/email_from/models/ir_build_email.py", line 11, in _message_route_process
return super(MailThread, self.with_context(process_incomming_email=True))._message_route_process(message, message_dict, routes)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/odoo/src/odoo/addons/mass_mailing/models/mail_thread.py", line 29, in _message_route_process
return super(MailThread, self)._message_route_process(message, message_dict, routes)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/odoo/src/user/modules/c4a8/community/mail_header/models/mail_thread.py", line 22, in _message_route_process
return super()._message_route_process(message, message_dict, routes)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/odoo/src/odoo/addons/mail/models/mail_thread.py", line 1362, in _message_route_process
new_msg = thread_root.message_post(**post_params)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/odoo/src/user/modules/c4a8/enterprise/helpdesk_ticket_stage/models/helpdesk_ticket.py", line 15, in message_post
msg = super().message_post(**kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/odoo/src/odoo/addons/sms/models/mail_thread.py", line 52, in message_post
return super().message_post(*args, body=body, message_type=message_type, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/odoo/src/odoo/addons/rating/models/mail_thread.py", line 182, in message_post
return super().message_post(**kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/odoo/src/odoo/addons/mail/models/mail_thread.py", line 2286, in message_post
self._process_attachments_for_post(attachments, attachment_ids, msg_values)
File "/home/odoo/src/odoo/addons/mail/models/mail_thread.py", line 2436, in _process_attachments_for_post
new_attachments = self._create_attachments_for_post(attachement_values_list, attachement_extra_list)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/odoo/src/odoo/addons/mail/models/mail_thread.py", line 2469, in _create_attachments_for_post
return self.env['ir.attachment'].sudo().create(values_list)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "<decorator-gen-305>", line 2, in create
File "/home/odoo/src/odoo/odoo/api.py", line 498, in _model_create_multi
return create(self, arg)
^^^^^^^^^^^^^^^^^
File "/home/odoo/src/enterprise/documents_account/models/ir_attachment.py", line 10, in create
attachments = super().create(vals_list)
^^^^^^^^^^^^^^^^^^^^^^^^^
File "<decorator-gen-228>", line 2, in create
File "/home/odoo/src/odoo/odoo/api.py", line 498, in _model_create_multi
return create(self, arg)
^^^^^^^^^^^^^^^^^
File "/home/odoo/src/odoo/addons/hr_expense/models/ir_attachment.py", line 9, in create
attachments = super().create(vals_list)
^^^^^^^^^^^^^^^^^^^^^^^^^
File "<decorator-gen-203>", line 2, in create
File "/home/odoo/src/odoo/odoo/api.py", line 498, in _model_create_multi
return create(self, arg)
^^^^^^^^^^^^^^^^^
File "/home/odoo/src/odoo/addons/website/models/ir_attachment.py", line 22, in create
return super().create(vals_list)
^^^^^^^^^^^^^^^^^^^^^^^^^
File "<decorator-gen-168>", line 2, in create
File "/home/odoo/src/odoo/odoo/api.py", line 498, in _model_create_multi
return create(self, arg)
^^^^^^^^^^^^^^^^^
File "/home/odoo/src/enterprise/documents/models/ir_attachment.py", line 95, in create
attachments = super().create(vals_list)
^^^^^^^^^^^^^^^^^^^^^^^^^
File "<decorator-gen-103>", line 2, in create
File "/home/odoo/src/odoo/odoo/api.py", line 498, in _model_create_multi
return create(self, arg)
^^^^^^^^^^^^^^^^^
File "/home/odoo/src/odoo/addons/product/models/ir_attachment.py", line 12, in create
attachments = super().create(vals_list)
^^^^^^^^^^^^^^^^^^^^^^^^^
File "<decorator-gen-82>", line 2, in create
File "/home/odoo/src/odoo/odoo/api.py", line 498, in _model_create_multi
return create(self, arg)
^^^^^^^^^^^^^^^^^
File "/home/odoo/src/user/modules/oca/storage/fs_attachment/models/ir_attachment.py", line 293, in create
attachments._enforce_meaningful_storage_filename()
File "/home/odoo/src/user/modules/oca/storage/fs_attachment/models/ir_attachment.py", line 488, in _enforce_meaningful_storage_filename
fs.rename(filename, new_filename_with_path)
File "/home/odoo/.local/lib/python3.12/site-packages/fsspec/spec.py", line 1783, in rename
return self.mv(path1, path2, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/odoo/.local/lib/python3.12/site-packages/fsspec/implementations/dirfs.py", line 345, in mv
return self.fs.mv(
^^^^^^^^^^^
File "/home/odoo/.local/lib/python3.12/site-packages/fsspec/spec.py", line 1218, in mv
self.copy(
File "/home/odoo/.local/lib/python3.12/site-packages/fsspec/asyn.py", line 118, in wrapper
return sync(self.loop, func, *args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/odoo/.local/lib/python3.12/site-packages/fsspec/asyn.py", line 103, in sync
raise return_result
File "/home/odoo/.local/lib/python3.12/site-packages/fsspec/asyn.py", line 56, in _runner
result[0] = await coro
^^^^^^^^^^
File "/home/odoo/.local/lib/python3.12/site-packages/fsspec/asyn.py", line 372, in _copy
paths1 = await self._expand_path(
^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/odoo/.local/lib/python3.12/site-packages/adlfs/spec.py", line 1629, in _expand_path
out = await self._expand_path(
^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/odoo/.local/lib/python3.12/site-packages/adlfs/spec.py", line 1674, in _expand_path
raise FileNotFoundError(errno.ENOENT, os.strerror(errno.ENOENT), path)
FileNotFoundError: [Errno 2] No such file or directory: ['azure-helpdesk/33/90/3390c0744f0da406a690ecdadff93121e4a9436e']
Module
fs_attachment
Describe the bug
This problem occures with the Odoo Enterprise Helpdesk module, when a customer answers on a ticket. The eMail response cannot be added to the ticket thread, and the sender receives an error message via email.
@lmignon do you have an idea what is happening here?
I would expect some rename from "azure-helpdesk://33/90/3390c0744f0da406a690ecdadff93121e4a9436e" to
"azure-helpdesk://33/90/logo_group_signatur_300dpi_377x134_c9a381b8-bb6d-43bf-bac2-7021ffd2ea88-605375-0.png", but not "azure-helpdesk/33/90/3390c0744f0da406a690ecdadff93121e4a9436e"?
To Reproduce
Affected versions:
18.0
Additional context