diff --git a/docsource/modules150-160.rst b/docsource/modules150-160.rst
index b0f5266d47e8..7e7cb640aff9 100644
--- a/docsource/modules150-160.rst
+++ b/docsource/modules150-160.rst
@@ -188,7 +188,7 @@ Module coverage 15.0 -> 16.0
+-------------------------------------------------+----------------------+-------------------------------------------------+
| hr_presence | |No DB layout changes. |
+-------------------------------------------------+----------------------+-------------------------------------------------+
-| hr_recruitment | | |
+| hr_recruitment | Done | |
+-------------------------------------------------+----------------------+-------------------------------------------------+
| |new| hr_recruitment_skills | | |
+-------------------------------------------------+----------------------+-------------------------------------------------+
diff --git a/openupgrade_scripts/scripts/hr_recruitment/16.0.1.1/noupdate_changes.xml b/openupgrade_scripts/scripts/hr_recruitment/16.0.1.1/noupdate_changes.xml
index 3aeea52056a9..5376f118c464 100644
--- a/openupgrade_scripts/scripts/hr_recruitment/16.0.1.1/noupdate_changes.xml
+++ b/openupgrade_scripts/scripts/hr_recruitment/16.0.1.1/noupdate_changes.xml
@@ -7,7 +7,9 @@
The user interacting with the application as interviewer don't need any specific access. They'll have access thanks to their interviewer assignation.
-
+
+
+
Confirmation email sent to all new job applications
-
+
+
+
Set this template to a recruitment stage to send it when applications reach that stage
- Recruitment: Not interested anymore
+
When you refuse an application, you can choose this template
- Recruitment: Refuse
+
When you refuse an application, you can choose this template
diff --git a/openupgrade_scripts/scripts/hr_recruitment/16.0.1.1/post-migration.py b/openupgrade_scripts/scripts/hr_recruitment/16.0.1.1/post-migration.py
new file mode 100644
index 000000000000..85a4886c61ae
--- /dev/null
+++ b/openupgrade_scripts/scripts/hr_recruitment/16.0.1.1/post-migration.py
@@ -0,0 +1,13 @@
+from openupgradelib import openupgrade
+
+translations_to_delete = [
+ "group_hr_recruitment_user",
+]
+
+
+@openupgrade.migrate()
+def migrate(env, version):
+ openupgrade.load_data(env.cr, "hr_recruitment", "16.0.1.1/noupdate_changes.xml")
+ openupgrade.delete_record_translations(
+ env.cr, "hr_recruitment", translations_to_delete
+ )
diff --git a/openupgrade_scripts/scripts/hr_recruitment/16.0.1.1/upgrade_analysis_work.txt b/openupgrade_scripts/scripts/hr_recruitment/16.0.1.1/upgrade_analysis_work.txt
new file mode 100644
index 000000000000..3221757f407a
--- /dev/null
+++ b/openupgrade_scripts/scripts/hr_recruitment/16.0.1.1/upgrade_analysis_work.txt
@@ -0,0 +1,65 @@
+---Models in module 'hr_recruitment'---
+new model applicant.send.mail [transient]
+
+# NOTHING TO DO: new transient model
+
+---Fields in module 'hr_recruitment'---
+hr_recruitment / hr.applicant / interviewer_ids (many2many) : NEW relation: res.users
+hr_recruitment / hr.applicant / linkedin_profile (char) : NEW
+hr_recruitment / hr.job / _order : _order is now 'sequence, name asc' ('sequence, state desc, name asc')
+hr_recruitment / hr.job / extended_interviewer_ids (many2many): NEW relation: res.users, isfunction: function, stored
+hr_recruitment / hr.job / interviewer_ids (many2many) : NEW relation: res.users
+
+# NOTHING TO DO: new fields
+
+hr_recruitment / hr.recruitment.source / _inherits : DEL _inherits: {'utm.source': 'source_id'}
+
+# NOTHING TO DO
+
+hr_recruitment / hr.recruitment.source / medium_id (many2one) : NEW relation: utm.medium, hasdefault: default
+
+# NOTHING TO DO: new field
+
+---XML records in module 'hr_recruitment'---
+NEW ir.actions.act_window: hr_recruitment.action_hr_applicant_new
+NEW ir.actions.act_window: hr_recruitment.action_hr_job_interviewer
+DEL ir.actions.act_window: hr_recruitment.hr_recruitment_source_action
+NEW ir.actions.server: hr_recruitment.action_applicant_send_mail
+DEL ir.actions.server: hr_recruitment.hr_applicant_resumes_server
+
+# NOTHING TO DO
+
+NEW ir.model.access: hr_recruitment.access_applicant_get_refuse_reason_interviewer
+NEW ir.model.access: hr_recruitment.access_applicant_send_mail
+NEW ir.model.access: hr_recruitment.access_applicant_send_mail_interviewer
+NEW ir.model.access: hr_recruitment.access_hr_applicant_interviewer
+NEW ir.model.access: hr_recruitment.access_hr_job_interviewer
+NEW ir.model.access: hr_recruitment.access_hr_recruitment_refuse_reason_interviewer
+NEW ir.model.access: hr_recruitment.access_hr_recruitment_stage_interviewer
+NEW ir.rule: hr_recruitment.hr_applicant_interviewer_rule (noupdate)
+NEW ir.rule: hr_recruitment.mail_message_interviewer_rule (noupdate)
+NEW ir.ui.menu: hr_recruitment.menu_hr_job_position_interviewer
+NEW ir.ui.menu: hr_recruitment.menu_hr_recruitment_config_activities
+NEW ir.ui.menu: hr_recruitment.menu_hr_recruitment_config_applications
+NEW ir.ui.menu: hr_recruitment.menu_hr_recruitment_config_employees
+NEW ir.ui.menu: hr_recruitment.menu_hr_recruitment_config_jobs
+NEW ir.ui.menu: hr_recruitment.menu_hr_recruitment_contract_type
+NEW ir.ui.menu: hr_recruitment.menu_hr_recruitment_utm
+
+# NOTHING TO DO
+
+NEW ir.ui.menu: hr_recruitment.menu_hr_recruitment_utm_mediums
+NEW ir.ui.menu: hr_recruitment.menu_hr_recruitment_utm_sources
+DEL ir.ui.menu: hr_recruitment.menu_hr_job_position_config
+DEL ir.ui.menu: hr_recruitment.menu_hr_recruitment_source
+
+# NOTHING TO DO
+
+NEW ir.ui.view: hr_recruitment.applicant_send_mail_view_form
+NEW ir.ui.view: hr_recruitment.hr_applicant_view_form_interviewer
+NEW ir.ui.view: hr_recruitment.hr_job_view_tree_inherit
+NEW ir.ui.view: hr_recruitment.ir_attachment_hr_recruitment_list_view
+NEW res.groups: hr_recruitment.group_applicant_cv_display (noupdate)
+NEW res.groups: hr_recruitment.group_hr_recruitment_interviewer (noupdate)
+
+# NOTHING TO DO