Foreman-rake-db:seed' failed after updgrade from 3.11 to 3.12

Problem:

I update foreman from 3.11 to 3.12 in almalinux8 I run:

foreman-rake db:migrate

with out problem but foreman-rake db:seed fail:

foreman-rake db:migrate
== 20230719080900 FixUbuntuVersions: migrating ================================
== 20230719080900 FixUbuntuVersions: migrated (0.0071s) =======================

== 20231115151349 AddClonedFromToTemplates: migrating =========================
– add_reference(:templates, :cloned_from, {:foreign_key=>{:to_table=>:templates, :on_delete=>:nullify}})
 → 0.0061s
== 20231115151349 AddClonedFromToTemplates: migrated (0.0061s) ================

\[root@cld-config \~\]# foreman-rake db:seed
User with login admin already exists, not seeding as admin.
rake aborted!
ActiveRecord::RecordInvalid: Validation failed: Name has already been taken
/usr/share/gems/gems/activerecord-6.1.7.9/lib/active_record/validations.rb:80:in `raise_validation_error' /usr/share/gems/gems/activerecord-6.1.7.9/lib/active_record/validations.rb:53:in `save!’
/usr/share/gems/gems/activerecord-6.1.7.9/lib/active_record/transactions.rb:302:in `block in save!' /usr/share/gems/gems/activerecord-6.1.7.9/lib/active_record/transactions.rb:354:in `block in with_transaction_returning_status’
/usr/share/gems/gems/activerecord-6.1.7.9/lib/active_record/connection_adapters/abstract/database_statements.rb:318:in `transaction' /usr/share/gems/gems/activerecord-6.1.7.9/lib/active_record/transactions.rb:350:in `with_transaction_returning_status’
/usr/share/gems/gems/activerecord-6.1.7.9/lib/active_record/transactions.rb:302:in `save!' /usr/share/gems/gems/activerecord-6.1.7.9/lib/active_record/suppressor.rb:48:in `save!’
/usr/share/foreman/lib/seed_helper.rb:134:in `block in import_raw_template' /usr/share/foreman/app/models/template.rb:74:in `ignore_locking’
/usr/share/foreman/lib/seed_helper.rb:134:in `import_raw_template' /usr/share/foreman/lib/seed_helper.rb:140:in `block in import_templates’
/usr/share/foreman/lib/seed_helper.rb:139:in `each' /usr/share/foreman/lib/seed_helper.rb:139:in `import_templates’
/usr/share/foreman/db/seeds.d/070-provisioning_templates.rb:9:in `block in <top (required)>' /usr/share/gems/gems/audited-5.7.0/lib/audited/auditor.rb:463:in `without_auditing’
/usr/share/foreman/db/seeds.d/070-provisioning_templates.rb:2:in `<top (required)>' /usr/share/gems/gems/activesupport-6.1.7.9/lib/active_support/dependencies.rb:326:in `load’
/usr/share/gems/gems/activesupport-6.1.7.9/lib/active_support/dependencies.rb:326:in `block in load' /usr/share/gems/gems/activesupport-6.1.7.9/lib/active_support/dependencies.rb:299:in `load_dependency’
/usr/share/gems/gems/activesupport-6.1.7.9/lib/active_support/dependencies.rb:326:in `load' /usr/share/foreman/app/services/foreman_seeder.rb:51:in `block (3 levels) in execute’
/usr/share/foreman/app/models/concerns/foreman/thread_session.rb:108:in `as' /usr/share/foreman/app/models/concerns/foreman/thread_session.rb:114:in `as_anonymous_admin’
/usr/share/foreman/app/services/foreman_seeder.rb:50:in `block (2 levels) in execute' /usr/share/foreman/app/services/foreman_seeder.rb:44:in `each’
/usr/share/foreman/app/services/foreman_seeder.rb:44:in `block in execute' /usr/share/foreman/app/services/foreman/advisory_lock_manager.rb:21:in `block in with_transaction_lock’
/usr/share/gems/gems/activerecord-6.1.7.9/lib/active_record/connection_adapters/abstract/database_statements.rb:320:in `block in transaction' /usr/share/gems/gems/activerecord-6.1.7.9/lib/active_record/connection_adapters/abstract/transaction.rb:319:in `block in within_new_transaction’
/usr/share/gems/gems/activesupport-6.1.7.9/lib/active_support/concurrency/load_interlock_aware_monitor.rb:26:in `block (2 levels) in synchronize' /usr/share/gems/gems/activesupport-6.1.7.9/lib/active_support/concurrency/load_interlock_aware_monitor.rb:25:in `handle_interrupt’
/usr/share/gems/gems/activesupport-6.1.7.9/lib/active_support/concurrency/load_interlock_aware_monitor.rb:25:in `block in synchronize' /usr/share/gems/gems/activesupport-6.1.7.9/lib/active_support/concurrency/load_interlock_aware_monitor.rb:21:in `handle_interrupt’
/usr/share/gems/gems/activesupport-6.1.7.9/lib/active_support/concurrency/load_interlock_aware_monitor.rb:21:in `synchronize' /usr/share/gems/gems/activerecord-6.1.7.9/lib/active_record/connection_adapters/abstract/transaction.rb:317:in `within_new_transaction’
/usr/share/gems/gems/activerecord-6.1.7.9/lib/active_record/connection_adapters/abstract/database_statements.rb:320:in `transaction' /usr/share/gems/gems/activerecord-6.1.7.9/lib/active_record/transactions.rb:209:in `transaction’
/usr/share/foreman/app/services/foreman/advisory_lock_manager.rb:17:in `with_transaction_lock' /usr/share/foreman/app/services/foreman_seeder.rb:38:in `execute’
/usr/share/foreman/db/seeds.rb:15:in `<top (required)>' /usr/share/gems/gems/activesupport-6.1.7.9/lib/active_support/dependencies.rb:326:in `load’
/usr/share/gems/gems/activesupport-6.1.7.9/lib/active_support/dependencies.rb:326:in `block in load' /usr/share/gems/gems/activesupport-6.1.7.9/lib/active_support/dependencies.rb:299:in `load_dependency’
/usr/share/gems/gems/activesupport-6.1.7.9/lib/active_support/dependencies.rb:326:in `load' /usr/share/foreman/config/initializers/0_print_time_spent.rb:38:in `block in load’
/usr/share/foreman/config/initializers/0_print_time_spent.rb:17:in `benchmark' /usr/share/foreman/config/initializers/0_print_time_spent.rb:38:in `load’
/usr/share/gems/gems/railties-6.1.7.9/lib/rails/engine.rb:566:in `block in load_seed' /usr/share/gems/gems/activesupport-6.1.7.9/lib/active_support/callbacks.rb:117:in `block in run_callbacks’
/usr/share/gems/gems/activesupport-6.1.7.9/lib/active_support/execution_wrapper.rb:91:in `wrap' /usr/share/gems/gems/railties-6.1.7.9/lib/rails/engine.rb:640:in `block (2 levels) in <class:Engine>’
/usr/share/gems/gems/activesupport-6.1.7.9/lib/active_support/callbacks.rb:126:in `instance_exec' /usr/share/gems/gems/activesupport-6.1.7.9/lib/active_support/callbacks.rb:126:in `block in run_callbacks’
/usr/share/gems/gems/activesupport-6.1.7.9/lib/active_support/callbacks.rb:137:in `run_callbacks' /usr/share/gems/gems/railties-6.1.7.9/lib/rails/engine.rb:566:in `load_seed’
/usr/share/gems/gems/activerecord-6.1.7.9/lib/active_record/tasks/database_tasks.rb:450:in `load_seed' /usr/share/gems/gems/activerecord-6.1.7.9/lib/active_record/railties/databases.rake:392:in `block (2 levels) in <top (required)>’
/usr/share/gems/gems/rake-13.0.1/exe/rake:27:in \`<top (required)>’
Tasks: TOP => db:seed
(See full trace by running task with --trace)

the trace do not give me more info:

\[root@cld-config \~\]# foreman-rake db:seed --trace --debug
invalid option: --debug
\[root@cld-config \~\]# foreman-rake db:migrate --trace --verbose
\*\* Invoke db:migrate (first_time)
\*\* Invoke db:load_config (first_time)
\*\* Invoke environment (first_time)
\*\* Execute environment
\*\* Execute db:load_config
\*\* Invoke plugin:refresh_migrations (first_time)
\*\* Invoke environment
\*\* Execute plugin:refresh_migrations
\*\* Execute db:migrate
\*\* Invoke db:\_dump (first_time)
\*\* Execute db:\_dump
\*\* Invoke dynflow:migrate (first_time)
\*\* Invoke environment
\*\* Execute dynflow:migrate
\[root@cld-config \~\]# foreman-rake db:seed --trace --verbose
\*\* Invoke db:seed (first_time)
\*\* Invoke db:load_config (first_time)
\*\* Invoke environment (first_time)
\*\* Execute environment
\*\* Execute db:load_config
\*\* Execute db:seed
\*\* Invoke db:abort_if_pending_migrations (first_time)
\*\* Invoke db:load_config
\*\* Execute db:abort_if_pending_migrations
\*\* Invoke dynflow:abort_if_pending_migrations (first_time)
\*\* Invoke environment
\*\* Execute dynflow:abort_if_pending_migrations
User with login admin already exists, not seeding as admin.
rake aborted!
ActiveRecord::RecordInvalid: Validation failed: Name has already been taken
/usr/share/gems/gems/activerecord-6.1.7.9/lib/active_record/validations.rb:80:in `raise_validation_error' /usr/share/gems/gems/activerecord-6.1.7.9/lib/active_record/validations.rb:53:in `save!’
/usr/share/gems/gems/activerecord-6.1.7.9/lib/active_record/transactions.rb:302:in `block in save!' /usr/share/gems/gems/activerecord-6.1.7.9/lib/active_record/transactions.rb:354:in `block in with_transaction_returning_status’
/usr/share/gems/gems/activerecord-6.1.7.9/lib/active_record/connection_adapters/abstract/database_statements.rb:318:in `transaction' /usr/share/gems/gems/activerecord-6.1.7.9/lib/active_record/transactions.rb:350:in `with_transaction_returning_status’
/usr/share/gems/gems/activerecord-6.1.7.9/lib/active_record/transactions.rb:302:in `save!' /usr/share/gems/gems/activerecord-6.1.7.9/lib/active_record/suppressor.rb:48:in `save!’
/usr/share/foreman/lib/seed_helper.rb:134:in `block in import_raw_template' /usr/share/foreman/app/models/template.rb:74:in `ignore_locking’
/usr/share/foreman/lib/seed_helper.rb:134:in `import_raw_template' /usr/share/foreman/lib/seed_helper.rb:140:in `block in import_templates’
/usr/share/foreman/lib/seed_helper.rb:139:in `each' /usr/share/foreman/lib/seed_helper.rb:139:in `import_templates’
/usr/share/foreman/db/seeds.d/070-provisioning_templates.rb:9:in `block in <top (required)>' /usr/share/gems/gems/audited-5.7.0/lib/audited/auditor.rb:463:in `without_auditing’
/usr/share/foreman/db/seeds.d/070-provisioning_templates.rb:2:in `<top (required)>' /usr/share/gems/gems/activesupport-6.1.7.9/lib/active_support/dependencies.rb:326:in `load’
/usr/share/gems/gems/activesupport-6.1.7.9/lib/active_support/dependencies.rb:326:in `block in load' /usr/share/gems/gems/activesupport-6.1.7.9/lib/active_support/dependencies.rb:299:in `load_dependency’
/usr/share/gems/gems/activesupport-6.1.7.9/lib/active_support/dependencies.rb:326:in `load' /usr/share/foreman/app/services/foreman_seeder.rb:51:in `block (3 levels) in execute’
/usr/share/foreman/app/models/concerns/foreman/thread_session.rb:108:in `as' /usr/share/foreman/app/models/concerns/foreman/thread_session.rb:114:in `as_anonymous_admin’
/usr/share/foreman/app/services/foreman_seeder.rb:50:in `block (2 levels) in execute' /usr/share/foreman/app/services/foreman_seeder.rb:44:in `each’
/usr/share/foreman/app/services/foreman_seeder.rb:44:in `block in execute' /usr/share/foreman/app/services/foreman/advisory_lock_manager.rb:21:in `block in with_transaction_lock’
/usr/share/gems/gems/activerecord-6.1.7.9/lib/active_record/connection_adapters/abstract/database_statements.rb:320:in `block in transaction' /usr/share/gems/gems/activerecord-6.1.7.9/lib/active_record/connection_adapters/abstract/transaction.rb:319:in `block in within_new_transaction’
/usr/share/gems/gems/activesupport-6.1.7.9/lib/active_support/concurrency/load_interlock_aware_monitor.rb:26:in `block (2 levels) in synchronize' /usr/share/gems/gems/activesupport-6.1.7.9/lib/active_support/concurrency/load_interlock_aware_monitor.rb:25:in `handle_interrupt’
/usr/share/gems/gems/activesupport-6.1.7.9/lib/active_support/concurrency/load_interlock_aware_monitor.rb:25:in `block in synchronize' /usr/share/gems/gems/activesupport-6.1.7.9/lib/active_support/concurrency/load_interlock_aware_monitor.rb:21:in `handle_interrupt’
/usr/share/gems/gems/activesupport-6.1.7.9/lib/active_support/concurrency/load_interlock_aware_monitor.rb:21:in `synchronize' /usr/share/gems/gems/activerecord-6.1.7.9/lib/active_record/connection_adapters/abstract/transaction.rb:317:in `within_new_transaction’
/usr/share/gems/gems/activerecord-6.1.7.9/lib/active_record/connection_adapters/abstract/database_statements.rb:320:in `transaction' /usr/share/gems/gems/activerecord-6.1.7.9/lib/active_record/transactions.rb:209:in `transaction’
/usr/share/foreman/app/services/foreman/advisory_lock_manager.rb:17:in `with_transaction_lock' /usr/share/foreman/app/services/foreman_seeder.rb:38:in `execute’
/usr/share/foreman/db/seeds.rb:15:in `<top (required)>' /usr/share/gems/gems/activesupport-6.1.7.9/lib/active_support/dependencies.rb:326:in `load’
/usr/share/gems/gems/activesupport-6.1.7.9/lib/active_support/dependencies.rb:326:in `block in load' /usr/share/gems/gems/activesupport-6.1.7.9/lib/active_support/dependencies.rb:299:in `load_dependency’
/usr/share/gems/gems/activesupport-6.1.7.9/lib/active_support/dependencies.rb:326:in `load' /usr/share/foreman/config/initializers/0_print_time_spent.rb:38:in `block in load’
/usr/share/foreman/config/initializers/0_print_time_spent.rb:17:in `benchmark' /usr/share/foreman/config/initializers/0_print_time_spent.rb:38:in `load’
/usr/share/gems/gems/railties-6.1.7.9/lib/rails/engine.rb:566:in `block in load_seed' /usr/share/gems/gems/activesupport-6.1.7.9/lib/active_support/callbacks.rb:117:in `block in run_callbacks’
/usr/share/gems/gems/activesupport-6.1.7.9/lib/active_support/execution_wrapper.rb:91:in `wrap' /usr/share/gems/gems/railties-6.1.7.9/lib/rails/engine.rb:640:in `block (2 levels) in <class:Engine>’
/usr/share/gems/gems/activesupport-6.1.7.9/lib/active_support/callbacks.rb:126:in `instance_exec' /usr/share/gems/gems/activesupport-6.1.7.9/lib/active_support/callbacks.rb:126:in `block in run_callbacks’
/usr/share/gems/gems/activesupport-6.1.7.9/lib/active_support/callbacks.rb:137:in `run_callbacks' /usr/share/gems/gems/railties-6.1.7.9/lib/rails/engine.rb:566:in `load_seed’
/usr/share/gems/gems/activerecord-6.1.7.9/lib/active_record/tasks/database_tasks.rb:450:in `load_seed' /usr/share/gems/gems/activerecord-6.1.7.9/lib/active_record/railties/databases.rake:392:in `block (2 levels) in <top (required)>’
/usr/share/gems/gems/rake-13.0.1/lib/rake/task.rb:281:in `block in execute' /usr/share/gems/gems/rake-13.0.1/lib/rake/task.rb:281:in `each’
/usr/share/gems/gems/rake-13.0.1/lib/rake/task.rb:281:in `execute' /usr/share/gems/gems/rake-13.0.1/lib/rake/task.rb:219:in `block in invoke_with_call_chain’
/usr/share/gems/gems/rake-13.0.1/lib/rake/task.rb:199:in `synchronize' /usr/share/gems/gems/rake-13.0.1/lib/rake/task.rb:199:in `invoke_with_call_chain’
/usr/share/gems/gems/rake-13.0.1/lib/rake/task.rb:188:in `invoke' /usr/share/gems/gems/rake-13.0.1/lib/rake/application.rb:160:in `invoke_task’
/usr/share/gems/gems/rake-13.0.1/lib/rake/application.rb:116:in `block (2 levels) in top_level' /usr/share/gems/gems/rake-13.0.1/lib/rake/application.rb:116:in `each’
/usr/share/gems/gems/rake-13.0.1/lib/rake/application.rb:116:in `block in top_level' /usr/share/gems/gems/rake-13.0.1/lib/rake/application.rb:125:in `run_with_threads’
/usr/share/gems/gems/rake-13.0.1/lib/rake/application.rb:110:in `top_level' /usr/share/gems/gems/rake-13.0.1/lib/rake/application.rb:83:in `block in run’
/usr/share/gems/gems/rake-13.0.1/lib/rake/application.rb:186:in `standard_exception_handling' /usr/share/gems/gems/rake-13.0.1/lib/rake/application.rb:80:in `run’
/usr/share/gems/gems/rake-13.0.1/exe/rake:27:in `<top (required)>' /usr/bin/rake:23:in `load’
/usr/bin/rake:23:in \`’
Tasks: TOP => db:seed

It seems the problem is relate with one of my custom provisioning templates, but I do not know how to solve the seed problem.

Any hints?

Expected outcome:

the forman-rake db:seed works without error

Foreman and Proxy versions:

rpm -qa | grep -i foreman | sort
foreman-3.12.1-1.el8.noarch
foreman-cli-3.12.1-1.el8.noarch
foreman-debug-3.12.1-1.el8.noarch
foreman-dynflow-sidekiq-3.12.1-1.el8.noarch
foreman-installer-3.12.1-1.el8.noarch
foreman-obsolete-packages-1.10-1.el8.noarch
foreman-postgresql-3.12.1-1.el8.noarch
foreman-proxy-3.12.1-1.el8.noarch
foreman-redis-3.12.1-1.el8.noarch
foreman-release-3.12.1-1.el8.noarch
foreman-selinux-3.12.1-1.el8.noarch
foreman-service-3.12.1-1.el8.noarch
rubygem-foreman_maintain-1.7.6-1.el8.noarch
rubygem-foreman_puppet-7.0.0-2.fm3_12.el8.noarch
rubygem-hammer_cli_foreman-3.12.0-1.el8.noarch
rubygem-hammer_cli_foreman_puppet-0.1.0-1.fm3_11.el8.noarch

Foreman and Proxy plugin versions:

Distribution and version:

cat /etc/redhat-release
AlmaLinux release 8.10 (Cerulean Leopard)

Other relevant data:

I have forman 3.6 I ugrade to 3.7 then 3.8 then … 3.10. From 3.10 to 3.11 I had an error in collate foerm postgres 12 to 13 but I solved it change che collate:

froam C to C.UTF8

psql 
psql (12.22)
Type “help” for help.

postgres=# \\l
                                 List of databases
   Name    |  Owner   | Encoding |  Collate   |    Ctype    |   Access privileges   
-----------±---------±---------±-----------±------------±----------------------
 foreman   | foreman  | UTF8     | en_US.utf8 | en_US.utf8  | =T/foreman           +
           |          |          |            |             | foreman=CTc/foreman
 postgres  | postgres | UTF8     | C          | en_US.UTF-8 | 
 template0 | postgres | UTF8     | C          | en_US.UTF-8 | =c/postgres          +
           |          |          |            |             | postgres=CTc/postgres
 template1 | postgres | UTF8     | C          | en_US.UTF-8 | =c/postgres          +
           |          |          |            |             | postgres=CTc/postgres
(4 rows)

postgres=# UPDATE pg_database SET datcollate=‘C.UTF-8’, datctype=‘C.UTF-8’ WHERE datname=‘template1’;
UPDATE 1
postgres=# UPDATE pg_database SET datcollate=‘C.UTF-8’, datctype=‘C.UTF-8’ WHERE datname=‘template0’;
UPDATE 1
postgres=# UPDATE pg_database SET datcollate=‘C.UTF-8’, datctype=‘C.UTF-8’ WHERE datname=‘postgres’;
UPDATE 1
postgres=# UPDATE pg_database SET datcollate=‘C.UTF-8’, datctype=‘C.UTF-8’ WHERE datname=‘foreman’;
UPDATE 1
postgres=# \\l
                              List of databases
   Name    |  Owner   | Encoding | Collate |  Ctype  |   Access privileges   
-----------±---------±---------±--------±--------±----------------------
 foreman   | foreman  | UTF8     | C.UTF-8 | C.UTF-8 | =T/foreman           +
           |          |          |         |         | foreman=CTc/foreman
 postgres  | postgres | UTF8     | C.UTF-8 | C.UTF-8 | 
 template0 | postgres | UTF8     | C.UTF-8 | C.UTF-8 | =c/postgres          +
           |          |          |         |         | postgres=CTc/postgres
 template1 | postgres | UTF8     | C.UTF-8 | C.UTF-8 | =c/postgres          +
           |          |          |         |         | postgres=CTc/postgres
(4 rows)

postgres=# \\q

After that all upgrade command stated to work fine.

I have in db about 170 hosts and diffrents OS and custom templates and about 30 puppets modules (classes)

Inside the DB describing the table I saw:

foreman=# \d+ templates
Table “public.templates”
Column | Type | Collation | Nullable | Default | Storage | Stats target | Description
------------------±----------------------------±----------±---------±--------------------------------------±---------±-------------±------------
id | integer | | not null | nextval(‘templates_id_seq’::regclass) | plain | |
name | character varying(255) | | | | extended | |
template | text | | | | extended | |
snippet | boolean | | not null | false | plain | |
template_kind_id | integer | | | | plain | |
created_at | timestamp without time zone | | | | plain | |
updated_at | timestamp without time zone | | | | plain | |
locked | boolean | | | false | plain | |
default | boolean | | | false | plain | |
vendor | character varying(255) | | | | extended | |
type | character varying | | | | extended | |
os_family | character varying(255) | | | | extended | |
description | text | | | | extended | |
cloned_from_id | bigint | | | | plain | |
Indexes:
“templates_pkey” PRIMARY KEY, btree (id)
“index_templates_on_cloned_from_id” btree (cloned_from_id)
“index_templates_on_type_and_name” UNIQUE, btree (type, name)
Foreign-key constraints:
“config_templates_template_kind_id_fk” FOREIGN KEY (template_kind_id) REFERENCES template_kinds(id)
“fk_rails_8438cd1b43” FOREIGN KEY (cloned_from_id) REFERENCES templates(id) ON DELETE SET NULL
Referenced by:
TABLE “templates” CONSTRAINT “fk_rails_8438cd1b43” FOREIGN KEY (cloned_from_id) REFERENCES templates(id) ON DELETE SET NULL
TABLE “hostgroups” CONSTRAINT “hostgroups_ptable_id_fk” FOREIGN KEY (ptable_id) REFERENCES templates(id)
TABLE “hosts” CONSTRAINT “hosts_ptable_id_fk” FOREIGN KEY (ptable_id) REFERENCES templates(id)
TABLE “operatingsystems_ptables” CONSTRAINT “operatingsystems_ptables_ptable_id_fk” FOREIGN KEY (ptable_id) REFERENCES templates(id)
TABLE “os_default_templates” CONSTRAINT “os_default_templates_provisioning_template_id_fk” FOREIGN KEY (provisioning_template_id) REFERENCES templates(id)
TABLE “operatingsystems_provisioning_templates” CONSTRAINT “os_provisioning_template_id_fk” FOREIGN KEY (provisioning_template_id) REFERENCES templates(id)
TABLE “template_combinations” CONSTRAINT “template_combinations_provisioning_template_id_fk” FOREIGN KEY (provisioning_template_id) REFERENCES templates(id)
TABLE “template_inputs” CONSTRAINT “templates_template_id_fk” FOREIGN KEY (template_id) REFERENCES templates(id)
Access method: heap

but I do not know how I could do