Ticket Index missing

Infos:

  • Used Zammad version: 6.2.0-1705322325.8ff65214.bookworm
  • Used Zammad installation type: Package
  • Operating system: Debian 12
  • Browser + version: All

Expected behavior:

  • Searching for a ticket number should display the ticket in the result list.

Actual behavior:

  • The tickets are not displayed.

Steps to reproduce the behavior:

  • I imported tickets from an external database (SQL queries) while respecting integrity and field format (I hope so).
  • All tickets are correctly linked to their group, user, customers…
  • All tickets are correctly displayed in Zammad.
  • the following commands have already been executed:
    {zammad run rake zammad:searchindex:rebuild[8]}
    → no error, all done
  • {Rails.cache.clear}
    → cache cleared, data correctly displayed.
  • {zammad run rails r "p tiTicket.find_by(number: xxxxxx).search_index_update}
    → true (result).
  • {Ticket.fund(xxx)}
    → display all the tickets in console without error.
  • I’ve tried to update the ticket, create new articles etc. It works fine.

But : still no indexing on imported tickets, looking for keywords isn’t working. The search only matches for tickets created with Zammad UI.

Am I missing something? Is there an intermediate process or a flat file that is edited when a new ticket is introduced? Is there a file or a table that is checked by elasticSearch to generate indexing?

UPDATE : When I launch the following command on an imported ticket :

 zammad run rails r "p Ticket.find(106081).search_index_update_backend" 
 Please specify a valid ruby command or the path of a script to run.
 Run 'rails runner -h' for help.
 undefined method `lookup' for NilClass:Class
 relation_model = relation_class.lookup(id: attributes[attribute_name])
                               ^^^^^^^

But with a ticket created in zammad, the method is ok :

 zammad run rails r "p Ticket.find(7).search_index_update_backend"
 true

It seems that the imported ticket is missing something.
Do you have any clue for this behavior ? Something where I can look at ?

Hi @Ssion. Please provide more information about the stack trace (with line numbers etc.), otherwise it’s quite impossible to get a better picture and to be able to help here.

Here we go:

** Invoke zammad:searchindex:rebuild (first_time)
** Invoke zammad:searchindex:version_supported (first_time)
** Invoke zammad:searchindex:configured (first_time)
** Invoke environment (first_time)
** Execute environment
** Execute zammad:searchindex:configured
** Execute zammad:searchindex:version_supported
** Execute zammad:searchindex:rebuild
** Execute zammad:searchindex:drop
Dropping indexes... done.
** Execute zammad:searchindex:drop_pipeline
Deleting pipeline... done.
** Execute zammad:searchindex:create
Creating indexes... done.
** Execute zammad:searchindex:create_pipeline
Creating pipeline... done.
** Execute zammad:searchindex:reload
Reloading data...
  - Chat::Session...
    done in 0 seconds.
  - Cti::Log...
    done in 0 seconds.
  - Group...
    done in 0 seconds.
  - KnowledgeBase::Answer::Translation...
    done in 0 seconds.
  - KnowledgeBase::Category::Translation...
    done in 0 seconds.
  - KnowledgeBase::Translation...
    done in 0 seconds.
  - Organization...
    done in 0 seconds.
  - StatsStore...
    done in 0 seconds.
  - Ticket::Priority...
    done in 0 seconds.
  - Ticket::State...
    done in 0 seconds.
  - Ticket...
rake aborted!
Unable to send Ticket.find(106081).search_index_update_backend backend: #<NoMethodError: undefined method `lookup' for NilClass:Class

    relation_model = relation_class.lookup(id: attributes[attribute_name])
                                   ^^^^^^^>
/opt/zammad/app/models/concerns/has_search_index_backend.rb:200:in `rescue in block in search_index_reload'
/opt/zammad/app/models/concerns/has_search_index_backend.rb:194:in `block in search_index_reload'
/opt/zammad/vendor/bundle/ruby/3.1.0/gems/parallel-1.23.0/lib/parallel.rb:627:in `call_with_index'
/opt/zammad/vendor/bundle/ruby/3.1.0/gems/parallel-1.23.0/lib/parallel.rb:394:in `block in work_direct'
/opt/zammad/vendor/bundle/ruby/3.1.0/gems/parallel-1.23.0/lib/parallel.rb:637:in `with_instrumentation'
/opt/zammad/vendor/bundle/ruby/3.1.0/gems/parallel-1.23.0/lib/parallel.rb:393:in `work_direct'
/opt/zammad/vendor/bundle/ruby/3.1.0/gems/parallel-1.23.0/lib/parallel.rb:285:in `map'
/opt/zammad/app/models/concerns/has_search_index_backend.rb:191:in `search_index_reload'
/opt/zammad/lib/tasks/zammad/search_index_es.rake:42:in `block (5 levels) in <main>'
/opt/zammad/vendor/ruby-3.1.3/lib/ruby/3.1.0/benchmark.rb:311:in `realtime'
/opt/zammad/lib/tasks/zammad/search_index_es.rake:41:in `block (4 levels) in <main>'
/opt/zammad/lib/tasks/zammad/search_index_es.rake:39:in `each'
/opt/zammad/lib/tasks/zammad/search_index_es.rake:39:in `block (3 levels) in <main>'
/opt/zammad/vendor/bundle/ruby/3.1.0/gems/rake-13.0.6/lib/rake/task.rb:281:in `block in execute'
/opt/zammad/vendor/bundle/ruby/3.1.0/gems/rake-13.0.6/lib/rake/task.rb:281:in `each'
/opt/zammad/vendor/bundle/ruby/3.1.0/gems/rake-13.0.6/lib/rake/task.rb:281:in `execute'
/opt/zammad/lib/tasks/zammad/search_index_es.rake:60:in `block (3 levels) in <main>'
/opt/zammad/vendor/bundle/ruby/3.1.0/gems/rake-13.0.6/lib/rake/task.rb:281:in `block in execute'
/opt/zammad/vendor/bundle/ruby/3.1.0/gems/rake-13.0.6/lib/rake/task.rb:281:in `each'
/opt/zammad/vendor/bundle/ruby/3.1.0/gems/rake-13.0.6/lib/rake/task.rb:281:in `execute'
/opt/zammad/vendor/bundle/ruby/3.1.0/gems/rake-13.0.6/lib/rake/task.rb:219:in `block in invoke_with_call_chain'
/opt/zammad/vendor/bundle/ruby/3.1.0/gems/rake-13.0.6/lib/rake/task.rb:199:in `synchronize'
/opt/zammad/vendor/bundle/ruby/3.1.0/gems/rake-13.0.6/lib/rake/task.rb:199:in `invoke_with_call_chain'
/opt/zammad/vendor/bundle/ruby/3.1.0/gems/rake-13.0.6/lib/rake/task.rb:188:in `invoke'
/opt/zammad/vendor/bundle/ruby/3.1.0/gems/rake-13.0.6/lib/rake/application.rb:160:in `invoke_task'
/opt/zammad/vendor/bundle/ruby/3.1.0/gems/rake-13.0.6/lib/rake/application.rb:116:in `block (2 levels) in top_level'
/opt/zammad/vendor/bundle/ruby/3.1.0/gems/rake-13.0.6/lib/rake/application.rb:116:in `each'
/opt/zammad/vendor/bundle/ruby/3.1.0/gems/rake-13.0.6/lib/rake/application.rb:116:in `block in top_level'
/opt/zammad/vendor/bundle/ruby/3.1.0/gems/rake-13.0.6/lib/rake/application.rb:125:in `run_with_threads'
/opt/zammad/vendor/bundle/ruby/3.1.0/gems/rake-13.0.6/lib/rake/application.rb:110:in `top_level'
/opt/zammad/vendor/bundle/ruby/3.1.0/gems/rake-13.0.6/lib/rake/application.rb:83:in `block in run'
/opt/zammad/vendor/bundle/ruby/3.1.0/gems/rake-13.0.6/lib/rake/application.rb:186:in `standard_exception_handling'
/opt/zammad/vendor/bundle/ruby/3.1.0/gems/rake-13.0.6/lib/rake/application.rb:80:in `run'
/opt/zammad/vendor/bundle/ruby/3.1.0/gems/rake-13.0.6/exe/rake:27:in `<top (required)>'
/opt/zammad/vendor/bundle/ruby/3.1.0/bin/rake:25:in `load'
/opt/zammad/vendor/bundle/ruby/3.1.0/bin/rake:25:in `<top (required)>'
/opt/zammad/vendor/ruby-3.1.3/lib/ruby/3.1.0/bundler/cli/exec.rb:58:in `load'
/opt/zammad/vendor/ruby-3.1.3/lib/ruby/3.1.0/bundler/cli/exec.rb:58:in `kernel_load'
/opt/zammad/vendor/ruby-3.1.3/lib/ruby/3.1.0/bundler/cli/exec.rb:23:in `run'
/opt/zammad/vendor/ruby-3.1.3/lib/ruby/3.1.0/bundler/cli.rb:486:in `exec'
/opt/zammad/vendor/ruby-3.1.3/lib/ruby/3.1.0/bundler/vendor/thor/lib/thor/command.rb:27:in `run'
/opt/zammad/vendor/ruby-3.1.3/lib/ruby/3.1.0/bundler/vendor/thor/lib/thor/invocation.rb:127:in `invoke_command'
/opt/zammad/vendor/ruby-3.1.3/lib/ruby/3.1.0/bundler/vendor/thor/lib/thor.rb:392:in `dispatch'
/opt/zammad/vendor/ruby-3.1.3/lib/ruby/3.1.0/bundler/cli.rb:31:in `dispatch'
/opt/zammad/vendor/ruby-3.1.3/lib/ruby/3.1.0/bundler/vendor/thor/lib/thor/base.rb:485:in `start'
/opt/zammad/vendor/ruby-3.1.3/lib/ruby/3.1.0/bundler/cli.rb:25:in `start'
/opt/zammad/vendor/ruby-3.1.3/lib/ruby/gems/3.1.0/gems/bundler-2.3.26/libexec/bundle:48:in `block in <top (required)>'
/opt/zammad/vendor/ruby-3.1.3/lib/ruby/3.1.0/bundler/friendly_errors.rb:120:in `with_friendly_errors'
/opt/zammad/vendor/ruby-3.1.3/lib/ruby/gems/3.1.0/gems/bundler-2.3.26/libexec/bundle:36:in `<top (required)>'
/opt/zammad/bin/bundle:121:in `load'
/opt/zammad/bin/bundle:121:in `<main>'

Caused by:
NoMethodError: undefined method `lookup' for NilClass:Class

    relation_model = relation_class.lookup(id: attributes[attribute_name])
                                   ^^^^^^^
/opt/zammad/app/models/application_model/can_lookup_search_index_attributes.rb:104:in `search_index_value_by_attribute'
/opt/zammad/app/models/application_model/can_lookup_search_index_attributes.rb:66:in `block in search_index_attribute_lookup'
/opt/zammad/app/models/application_model/can_lookup_search_index_attributes.rb:41:in `each'
/opt/zammad/app/models/application_model/can_lookup_search_index_attributes.rb:41:in `search_index_attribute_lookup'
/opt/zammad/app/models/ticket/search_index.rb:7:in `search_index_attribute_lookup'
/opt/zammad/app/models/concerns/has_search_index_backend.rb:137:in `search_index_update_backend'
/opt/zammad/app/models/concerns/has_search_index_backend.rb:195:in `block in search_index_reload'
/opt/zammad/vendor/bundle/ruby/3.1.0/gems/parallel-1.23.0/lib/parallel.rb:627:in `call_with_index'
/opt/zammad/vendor/bundle/ruby/3.1.0/gems/parallel-1.23.0/lib/parallel.rb:394:in `block in work_direct'
/opt/zammad/vendor/bundle/ruby/3.1.0/gems/parallel-1.23.0/lib/parallel.rb:637:in `with_instrumentation'
/opt/zammad/vendor/bundle/ruby/3.1.0/gems/parallel-1.23.0/lib/parallel.rb:393:in `work_direct'
/opt/zammad/vendor/bundle/ruby/3.1.0/gems/parallel-1.23.0/lib/parallel.rb:285:in `map'
/opt/zammad/app/models/concerns/has_search_index_backend.rb:191:in `search_index_reload'
/opt/zammad/lib/tasks/zammad/search_index_es.rake:42:in `block (5 levels) in <main>'
/opt/zammad/vendor/ruby-3.1.3/lib/ruby/3.1.0/benchmark.rb:311:in `realtime'
/opt/zammad/lib/tasks/zammad/search_index_es.rake:41:in `block (4 levels) in <main>'
/opt/zammad/lib/tasks/zammad/search_index_es.rake:39:in `each'
/opt/zammad/lib/tasks/zammad/search_index_es.rake:39:in `block (3 levels) in <main>'
/opt/zammad/vendor/bundle/ruby/3.1.0/gems/rake-13.0.6/lib/rake/task.rb:281:in `block in execute'
/opt/zammad/vendor/bundle/ruby/3.1.0/gems/rake-13.0.6/lib/rake/task.rb:281:in `each'
/opt/zammad/vendor/bundle/ruby/3.1.0/gems/rake-13.0.6/lib/rake/task.rb:281:in `execute'
/opt/zammad/lib/tasks/zammad/search_index_es.rake:60:in `block (3 levels) in <main>'
/opt/zammad/vendor/bundle/ruby/3.1.0/gems/rake-13.0.6/lib/rake/task.rb:281:in `block in execute'
/opt/zammad/vendor/bundle/ruby/3.1.0/gems/rake-13.0.6/lib/rake/task.rb:281:in `each'
/opt/zammad/vendor/bundle/ruby/3.1.0/gems/rake-13.0.6/lib/rake/task.rb:281:in `execute'
/opt/zammad/vendor/bundle/ruby/3.1.0/gems/rake-13.0.6/lib/rake/task.rb:219:in `block in invoke_with_call_chain'
/opt/zammad/vendor/bundle/ruby/3.1.0/gems/rake-13.0.6/lib/rake/task.rb:199:in `synchronize'
/opt/zammad/vendor/bundle/ruby/3.1.0/gems/rake-13.0.6/lib/rake/task.rb:199:in `invoke_with_call_chain'
/opt/zammad/vendor/bundle/ruby/3.1.0/gems/rake-13.0.6/lib/rake/task.rb:188:in `invoke'
/opt/zammad/vendor/bundle/ruby/3.1.0/gems/rake-13.0.6/lib/rake/application.rb:160:in `invoke_task'
/opt/zammad/vendor/bundle/ruby/3.1.0/gems/rake-13.0.6/lib/rake/application.rb:116:in `block (2 levels) in top_level'
/opt/zammad/vendor/bundle/ruby/3.1.0/gems/rake-13.0.6/lib/rake/application.rb:116:in `each'
/opt/zammad/vendor/bundle/ruby/3.1.0/gems/rake-13.0.6/lib/rake/application.rb:116:in `block in top_level'
/opt/zammad/vendor/bundle/ruby/3.1.0/gems/rake-13.0.6/lib/rake/application.rb:125:in `run_with_threads'
/opt/zammad/vendor/bundle/ruby/3.1.0/gems/rake-13.0.6/lib/rake/application.rb:110:in `top_level'
/opt/zammad/vendor/bundle/ruby/3.1.0/gems/rake-13.0.6/lib/rake/application.rb:83:in `block in run'
/opt/zammad/vendor/bundle/ruby/3.1.0/gems/rake-13.0.6/lib/rake/application.rb:186:in `standard_exception_handling'
/opt/zammad/vendor/bundle/ruby/3.1.0/gems/rake-13.0.6/lib/rake/application.rb:80:in `run'
/opt/zammad/vendor/bundle/ruby/3.1.0/gems/rake-13.0.6/exe/rake:27:in `<top (required)>'
/opt/zammad/vendor/bundle/ruby/3.1.0/bin/rake:25:in `load'
/opt/zammad/vendor/bundle/ruby/3.1.0/bin/rake:25:in `<top (required)>'
/opt/zammad/vendor/ruby-3.1.3/lib/ruby/3.1.0/bundler/cli/exec.rb:58:in `load'
/opt/zammad/vendor/ruby-3.1.3/lib/ruby/3.1.0/bundler/cli/exec.rb:58:in `kernel_load'
/opt/zammad/vendor/ruby-3.1.3/lib/ruby/3.1.0/bundler/cli/exec.rb:23:in `run'
/opt/zammad/vendor/ruby-3.1.3/lib/ruby/3.1.0/bundler/cli.rb:486:in `exec'
/opt/zammad/vendor/ruby-3.1.3/lib/ruby/3.1.0/bundler/vendor/thor/lib/thor/command.rb:27:in `run'
/opt/zammad/vendor/ruby-3.1.3/lib/ruby/3.1.0/bundler/vendor/thor/lib/thor/invocation.rb:127:in `invoke_command'
/opt/zammad/vendor/ruby-3.1.3/lib/ruby/3.1.0/bundler/vendor/thor/lib/thor.rb:392:in `dispatch'
/opt/zammad/vendor/ruby-3.1.3/lib/ruby/3.1.0/bundler/cli.rb:31:in `dispatch'
/opt/zammad/vendor/ruby-3.1.3/lib/ruby/3.1.0/bundler/vendor/thor/lib/thor/base.rb:485:in `start'
/opt/zammad/vendor/ruby-3.1.3/lib/ruby/3.1.0/bundler/cli.rb:25:in `start'
/opt/zammad/vendor/ruby-3.1.3/lib/ruby/gems/3.1.0/gems/bundler-2.3.26/libexec/bundle:48:in `block in <top (required)>'
/opt/zammad/vendor/ruby-3.1.3/lib/ruby/3.1.0/bundler/friendly_errors.rb:120:in `with_friendly_errors'
/opt/zammad/vendor/ruby-3.1.3/lib/ruby/gems/3.1.0/gems/bundler-2.3.26/libexec/bundle:36:in `<top (required)>'
/opt/zammad/bin/bundle:121:in `load'
/opt/zammad/bin/bundle:121:in `<main>'
Tasks: TOP => zammad:searchindex:rebuild

Please try to execute the following snippet in the Rails Console and post the output here:

ticket = Ticket.find(106081)

ticket.search_index_attribute_lookup.keys.each do |k|
  relation_class = ticket.search_index_attribute_method(k)

  next if !relation_class

  begin
    relation_model = relation_class.lookup(id: ticket.attributes[k])
  rescue
    puts "Error looking up #{k} => #{ticket.attributes[k]}, #{relation_class}"
  end
end

Thank you very much @fliebe92 for looking at this issue.

Here the result:

[1] pry(main)> ticket = Ticket.find(106081)
[1] pry(main)> ticket = Ticket.find(106081)h do |k|
class = ticket.search_index_attribute_method(k)

  next if !relation_class

  begin
    relation_model = relation_class.lookup(id: ticket.attributes[k])
  rescue
    puts "E=> #<Ticket:0x00007fc8ed09e738
 id: 106081,
 group_id: 4,
 priority_id: 2,
 state_id: 4,
 organization_id: 1,
 number: "202312110100003",
 title: "Extension de stockage après 1To",
 owner_id: 28,
 customer_id: 791,
 note: nil,
 first_response_at: nil,
 first_response_escalation_at: nil,
 first_response_in_min: nil,
 first_response_diff_in_min: nil,
 close_at: Tue, 12 Dec 2023 00:00:00.000000000 UTC +00:00,
 close_escalation_at: nil,
 close_in_min: nil,
 close_diff_in_min: nil,
 update_escalation_at: nil,
 update_in_min: nil,
 update_diff_in_min: nil,
 last_close_at: nil,
 last_contact_at: nil,
 last_contact_agent_at: nil,
 last_contact_customer_at: nil,
 last_owner_update_at: nil,
 create_article_type_id: 5,
 create_article_sender_id: 28,
 article_count: 3,
 escalation_at: nil,
 pending_time: nil,
 type: nil,
 time_unit: nil,
 preferences: {},
 updated_by_id: 28,
 created_by_id: 28,
 created_at: Mon, 11 Dec 2023 00:00:00.000000000 UTC +00:00,
 updated_at: Tue, 12 Dec 2023 00:00:00.000000000 UTC +00:00>
[2] pry(main)> main)>
[3] pry(main)> ticket.search_index_attribute_lookup.keys.each do |k|
[3] pry(main)*   relation_class = ticket.search_index_attribute_method(k)
[3] pry(main)*
[3] pry(main)*   next if !relation_class
 => #{ticket.attributes[k]}, #{relation_class}"
  end
[3] pry(main)*
[3] pry(main)*   begin
[3] pry(main)*     relation_model = relation_class.lookup(id: ticket.attributes[k])
[3] pry(main)*   rescue
[3] pry(main)*     puts "Error looking up #{k} => #{ticket.attributes[k]}, #{relation_class}"
[3] pry(main)*   end
[3] pry(main)* end
NoMethodError: undefined method `lookup' for NilClass:Class

    relation_model = relation_class.lookup(id: attributes[attribute_name])
                                   ^^^^^^^
from /opt/zammad/app/models/application_model/can_lookup_search_index_attributes.rb:104:in `search_index_value_by_attribute'
dex_attribute_lookup.keys.each do |k|06081)
  relation_class = ticket.=> #<Ticket:0x00007fc8ed77ab10
 id: 106081,
 group_id: 4,
 priority_id: 2,
 state_id: 4,
 organization_id: 1,
 number: "202312110100003",
 title: "Extension de stockage après 1To",
 owner_id: 28,
 customer_id: 791,
 note: nil,
 first_response_at: nil,
 first_response_escalation_at: nil,
 first_response_in_min: nil,
 first_response_diff_in_min: nil,
 close_at: Tue, 12 Dec 2023 00:00:00.000000000 UTC +00:00,
 close_escalation_at: nil,
 close_in_min: nil,
 close_diff_in_min: nil,
 update_escalation_at: nil,
 update_in_min: nil,
 update_diff_in_min: nil,
 last_close_at: nil,
 last_contact_at: nil,
 last_contact_agent_at: nil,
 last_contact_customer_at: nil,
 last_owner_update_at: nil,
 create_article_type_id: 5,
 create_article_sender_id: 28,
 article_count: 3,
 escalation_at: nil,
 pending_time: nil,
 type: nil,
 time_unit: nil,
 preferences: {},
 updated_by_id: 28,
 created_by_id: 28,
 created_at: Mon, 11 Dec 2023 00:00:00.000000000 UTC +00:00,
 updated_at: Tue, 12 Dec 2023 00:00:00.000000000 UTC +00:00>
[5] pry(main)>
[6] pry(main)> ticket.search_index_attribute_lookup.keys.each do |k|
[6] pry(main)*   relation_class = ticket.search_index_attribute_method(k)
[6] pry(main)*   ain)*
[6] pry(main)*     next if !relation_class
[6] pry(main)*   next if !relation_class
[6] pry(main)*

[6] pry(main)*   begin    begin
ation_model = r[6] pry(main)*         relation_model = relation_class.lookup(id: ticket.attributes[k])
[6] pry(main)*     relation_model = relation_class.lookup(id: ticket.attributes[k])
[6] pry(main)*   rescue      rescue
[6] pry(main)*     puts "Error looking up #{k} => #{ticket.attributes[k]}, #{relation_class}"    _class}"

[6] pry(main)*   end    end
NoMethodError: undefined method `lookup' for NilClass:Class

    relation_model = relation_class.lookup(id: attributes[attribute_name])
                                   ^^^^^^^
from /opt/zammad/app/models/application_model/can_lookup_search_index_attributes.rb:104:in `search_index_value_by_attribute'

This looks somehow broken. Could you please create a file in the tmp directory of your Zammad install, make it executable, and run this via rails r?

Hi,
First of all, sorry for my delayed response. To make it brief, two weeks ago we realized that our OTRS 7 license will expire yesterday and the price had skyrocketed. I had to work tirelessly to create an express migration protocol, which was completed yesterday. Everything is working fine now. I didn’t have time to do any additional testing. After the migration (with 300,000 additional tickets in the DB), the reindexing command (even with [8] cores) crashed on the tickets, and we no longer had access to the users.
We went to the source code in an emergency and simply disabled the use of the method that was causing the script to crash (not sure, maybe the Lookup method, I can tell you tomorow), and then the indexing was performed and everything worked perfectly (and still does). We will be able to deploy a test VM and go further when we have time. I am unaware of the purpose of the lookup, and I hope we won’t have any issues during future updates.
By the way, many thanks for your answers!
Eric

Here the final description to bypass the problem (not solving it…) - not recommended!

Error : Caused by: NoMethodError: undefined method `lookup' for NilClass:Class … /opt/zammad/app/models/ticket/search_index.rb:7:in `search_index_attribute_lookup'

Go to the file : /opt/zammad/app/models/ticket/search_index.rb

REPLACE in source code
def search_index_attribute_lookup(include_references: true)
by
def search_index_attribute_lookup(include_references: false)

Well, I guess you will have some trouble in the future when it comes to upgrading your Zammad instance. Disabling parts of the code by adding comments is not a good practice at all. Especially all code related to indexing might cause unexpected effects in your system.

This is also why I edited your post to not cause harm to other people’s instances.

You’re right and you’ve done well !
But we had no choice, our OTRS licence is expired.
We will still investigate the case in our future test instance.
For now, no issues; indexing is working fine, and users and support are working well :crossed_fingers:.
But I’ll be interested to know what this method does and is used for.

Consider doing a clean migration with a custom API script from the current to a new Zammad instance. You shouldn’t trust your data at all. The way you’ve migrated is not supported and will consistently keep shooting at you if you’re very unlucky.