diff --git a/docsource/modules190-200.rst b/docsource/modules190-200.rst
index 8da46d62bbc..ad5882a0682 100644
--- a/docsource/modules190-200.rst
+++ b/docsource/modules190-200.rst
@@ -18,7 +18,7 @@ Module coverage 19.0 -> 20.0
+---------------------------------------------------+----------------------+-------------------------------------------------+
| account_edi_proxy_client | | |
+---------------------------------------------------+----------------------+-------------------------------------------------+
-| account_edi_ubl_cii | | |
+| account_edi_ubl_cii |Done | |
+---------------------------------------------------+----------------------+-------------------------------------------------+
| account_fleet | | |
+---------------------------------------------------+----------------------+-------------------------------------------------+
@@ -40,7 +40,7 @@ Module coverage 19.0 -> 20.0
+---------------------------------------------------+----------------------+-------------------------------------------------+
| account_update_tax_tags | | |
+---------------------------------------------------+----------------------+-------------------------------------------------+
-| analytic | | |
+| analytic |Done | |
+---------------------------------------------------+----------------------+-------------------------------------------------+
| api_doc | |No DB layout changes. |
+---------------------------------------------------+----------------------+-------------------------------------------------+
@@ -60,11 +60,11 @@ Module coverage 19.0 -> 20.0
+---------------------------------------------------+----------------------+-------------------------------------------------+
| auth_password_policy_signup | |No DB layout changes. |
+---------------------------------------------------+----------------------+-------------------------------------------------+
-| auth_signup | | |
+| auth_signup |Done | |
+---------------------------------------------------+----------------------+-------------------------------------------------+
| auth_totp | | |
+---------------------------------------------------+----------------------+-------------------------------------------------+
-| auth_totp_mail | | |
+| auth_totp_mail |Done | |
+---------------------------------------------------+----------------------+-------------------------------------------------+
| auth_totp_portal | | |
+---------------------------------------------------+----------------------+-------------------------------------------------+
@@ -100,7 +100,7 @@ Module coverage 19.0 -> 20.0
+---------------------------------------------------+----------------------+-------------------------------------------------+
| bus | | |
+---------------------------------------------------+----------------------+-------------------------------------------------+
-| calendar | | |
+| calendar |Done | |
+---------------------------------------------------+----------------------+-------------------------------------------------+
| calendar_sms | | |
+---------------------------------------------------+----------------------+-------------------------------------------------+
@@ -120,7 +120,7 @@ Module coverage 19.0 -> 20.0
+---------------------------------------------------+----------------------+-------------------------------------------------+
| crm_iap_enrich | | |
+---------------------------------------------------+----------------------+-------------------------------------------------+
-| crm_iap_mine | | |
+| crm_iap_mine |Done | |
+---------------------------------------------------+----------------------+-------------------------------------------------+
| crm_livechat | | |
+---------------------------------------------------+----------------------+-------------------------------------------------+
@@ -132,15 +132,15 @@ Module coverage 19.0 -> 20.0
+---------------------------------------------------+----------------------+-------------------------------------------------+
| data_recycle | | |
+---------------------------------------------------+----------------------+-------------------------------------------------+
-| delivery | | |
+| delivery |Done | |
+---------------------------------------------------+----------------------+-------------------------------------------------+
| |del| delivery_mondialrelay | | |
+---------------------------------------------------+----------------------+-------------------------------------------------+
| |del| delivery_stock_picking_batch | | |
+---------------------------------------------------+----------------------+-------------------------------------------------+
-| digest | | |
+| digest |Done | |
+---------------------------------------------------+----------------------+-------------------------------------------------+
-| event | | |
+| event |Done | |
+---------------------------------------------------+----------------------+-------------------------------------------------+
| event_booth | | |
+---------------------------------------------------+----------------------+-------------------------------------------------+
@@ -154,13 +154,13 @@ Module coverage 19.0 -> 20.0
+---------------------------------------------------+----------------------+-------------------------------------------------+
| event_sale | | |
+---------------------------------------------------+----------------------+-------------------------------------------------+
-| event_sms | | |
+| event_sms |Done | |
+---------------------------------------------------+----------------------+-------------------------------------------------+
| fleet | | |
+---------------------------------------------------+----------------------+-------------------------------------------------+
| |new| fleet_maintenance | | |
+---------------------------------------------------+----------------------+-------------------------------------------------+
-| gamification | | |
+| gamification |Done | |
+---------------------------------------------------+----------------------+-------------------------------------------------+
| gamification_sale_crm | | |
+---------------------------------------------------+----------------------+-------------------------------------------------+
@@ -182,11 +182,11 @@ Module coverage 19.0 -> 20.0
+---------------------------------------------------+----------------------+-------------------------------------------------+
| |new| hr_calendar_google | | |
+---------------------------------------------------+----------------------+-------------------------------------------------+
-| hr_expense | | |
+| hr_expense |Done | |
+---------------------------------------------------+----------------------+-------------------------------------------------+
| hr_fleet | | |
+---------------------------------------------------+----------------------+-------------------------------------------------+
-| hr_gamification | | |
+| hr_gamification |Done | |
+---------------------------------------------------+----------------------+-------------------------------------------------+
| hr_holidays | | |
+---------------------------------------------------+----------------------+-------------------------------------------------+
@@ -208,13 +208,13 @@ Module coverage 19.0 -> 20.0
+---------------------------------------------------+----------------------+-------------------------------------------------+
| hr_presence | | |
+---------------------------------------------------+----------------------+-------------------------------------------------+
-| hr_recruitment | | |
+| hr_recruitment |Done | |
+---------------------------------------------------+----------------------+-------------------------------------------------+
| hr_recruitment_skills | | |
+---------------------------------------------------+----------------------+-------------------------------------------------+
| hr_recruitment_sms | |No DB layout changes. |
+---------------------------------------------------+----------------------+-------------------------------------------------+
-| hr_recruitment_survey | | |
+| hr_recruitment_survey |Done | |
+---------------------------------------------------+----------------------+-------------------------------------------------+
| hr_skills | | |
+---------------------------------------------------+----------------------+-------------------------------------------------+
@@ -224,11 +224,11 @@ Module coverage 19.0 -> 20.0
+---------------------------------------------------+----------------------+-------------------------------------------------+
| hr_skills_survey | |No DB layout changes. |
+---------------------------------------------------+----------------------+-------------------------------------------------+
-| hr_timesheet | | |
+| hr_timesheet |Done | |
+---------------------------------------------------+----------------------+-------------------------------------------------+
| hr_timesheet_attendance | | |
+---------------------------------------------------+----------------------+-------------------------------------------------+
-| hr_work_entry | | |
+| hr_work_entry |Done | |
+---------------------------------------------------+----------------------+-------------------------------------------------+
| |del| hr_work_entry_holidays | | |
+---------------------------------------------------+----------------------+-------------------------------------------------+
@@ -244,7 +244,7 @@ Module coverage 19.0 -> 20.0
+---------------------------------------------------+----------------------+-------------------------------------------------+
| iap_mail | |No DB layout changes. |
+---------------------------------------------------+----------------------+-------------------------------------------------+
-| im_livechat | | |
+| im_livechat |Done | |
+---------------------------------------------------+----------------------+-------------------------------------------------+
| |del| iot_base | | |
+---------------------------------------------------+----------------------+-------------------------------------------------+
@@ -260,7 +260,7 @@ Module coverage 19.0 -> 20.0
+---------------------------------------------------+----------------------+-------------------------------------------------+
| l10n_anz_ubl_pint | |No DB layout changes. |
+---------------------------------------------------+----------------------+-------------------------------------------------+
-| l10n_ar | | |
+| l10n_ar |Done | |
+---------------------------------------------------+----------------------+-------------------------------------------------+
| l10n_ar_pos | | |
+---------------------------------------------------+----------------------+-------------------------------------------------+
@@ -576,11 +576,11 @@ Module coverage 19.0 -> 20.0
+---------------------------------------------------+----------------------+-------------------------------------------------+
| l10n_pe | | |
+---------------------------------------------------+----------------------+-------------------------------------------------+
-| l10n_pe_pos | | |
+| l10n_pe_pos |Done | |
+---------------------------------------------------+----------------------+-------------------------------------------------+
| l10n_ph | | |
+---------------------------------------------------+----------------------+-------------------------------------------------+
-| l10n_pk | | |
+| l10n_pk |Done | |
+---------------------------------------------------+----------------------+-------------------------------------------------+
| l10n_pl | | |
+---------------------------------------------------+----------------------+-------------------------------------------------+
@@ -638,7 +638,7 @@ Module coverage 19.0 -> 20.0
+---------------------------------------------------+----------------------+-------------------------------------------------+
| l10n_tg | |No DB layout changes. |
+---------------------------------------------------+----------------------+-------------------------------------------------+
-| l10n_th | | |
+| l10n_th |Done | |
+---------------------------------------------------+----------------------+-------------------------------------------------+
| l10n_tn | |No DB layout changes. |
+---------------------------------------------------+----------------------+-------------------------------------------------+
@@ -698,13 +698,13 @@ Module coverage 19.0 -> 20.0
+---------------------------------------------------+----------------------+-------------------------------------------------+
| lunch | | |
+---------------------------------------------------+----------------------+-------------------------------------------------+
-| mail | | |
+| mail |Done | |
+---------------------------------------------------+----------------------+-------------------------------------------------+
| mail_bot | | |
+---------------------------------------------------+----------------------+-------------------------------------------------+
| mail_bot_hr | |No DB layout changes. |
+---------------------------------------------------+----------------------+-------------------------------------------------+
-| mail_group | | |
+| mail_group |Done | |
+---------------------------------------------------+----------------------+-------------------------------------------------+
| mail_plugin | | |
+---------------------------------------------------+----------------------+-------------------------------------------------+
@@ -778,43 +778,43 @@ Module coverage 19.0 -> 20.0
+---------------------------------------------------+----------------------+-------------------------------------------------+
| payment | | |
+---------------------------------------------------+----------------------+-------------------------------------------------+
-| payment_adyen | | |
+| payment_adyen |Done | |
+---------------------------------------------------+----------------------+-------------------------------------------------+
-| payment_aps | | |
+| payment_aps |Done | |
+---------------------------------------------------+----------------------+-------------------------------------------------+
-| payment_asiapay | | |
+| payment_asiapay |Done | |
+---------------------------------------------------+----------------------+-------------------------------------------------+
| payment_authorize | | |
+---------------------------------------------------+----------------------+-------------------------------------------------+
-| payment_buckaroo | | |
+| payment_buckaroo |Done | |
+---------------------------------------------------+----------------------+-------------------------------------------------+
-| payment_custom | | |
+| payment_custom |Done | |
+---------------------------------------------------+----------------------+-------------------------------------------------+
-| payment_demo | | |
+| payment_demo |Done | |
+---------------------------------------------------+----------------------+-------------------------------------------------+
-| payment_flutterwave | | |
+| payment_flutterwave |Done | |
+---------------------------------------------------+----------------------+-------------------------------------------------+
-| payment_mercado_pago | | |
+| payment_mercado_pago |Done | |
+---------------------------------------------------+----------------------+-------------------------------------------------+
-| payment_mollie | | |
+| payment_mollie |Done | |
+---------------------------------------------------+----------------------+-------------------------------------------------+
-| payment_nuvei | | |
+| payment_nuvei |Done | |
+---------------------------------------------------+----------------------+-------------------------------------------------+
-| payment_paypal | | |
+| payment_paypal |Done | |
+---------------------------------------------------+----------------------+-------------------------------------------------+
-| payment_razorpay | | |
+| payment_razorpay |Done | |
+---------------------------------------------------+----------------------+-------------------------------------------------+
-| payment_stripe | | |
+| payment_stripe |Done | |
+---------------------------------------------------+----------------------+-------------------------------------------------+
-| payment_worldline | | |
+| payment_worldline |Done | |
+---------------------------------------------------+----------------------+-------------------------------------------------+
-| payment_xendit | | |
+| payment_xendit |Done | |
+---------------------------------------------------+----------------------+-------------------------------------------------+
| phone_validation | | |
+---------------------------------------------------+----------------------+-------------------------------------------------+
| point_of_sale | | |
+---------------------------------------------------+----------------------+-------------------------------------------------+
-| portal | | |
+| portal |Done | |
+---------------------------------------------------+----------------------+-------------------------------------------------+
| |new| portal_discuss | | |
+---------------------------------------------------+----------------------+-------------------------------------------------+
@@ -854,7 +854,7 @@ Module coverage 19.0 -> 20.0
+---------------------------------------------------+----------------------+-------------------------------------------------+
| pos_repair | |No DB layout changes. |
+---------------------------------------------------+----------------------+-------------------------------------------------+
-| pos_restaurant | | |
+| pos_restaurant |Done | |
+---------------------------------------------------+----------------------+-------------------------------------------------+
| |del| pos_restaurant_adyen | | |
+---------------------------------------------------+----------------------+-------------------------------------------------+
@@ -872,7 +872,7 @@ Module coverage 19.0 -> 20.0
+---------------------------------------------------+----------------------+-------------------------------------------------+
| |new| pos_sale_stock | | |
+---------------------------------------------------+----------------------+-------------------------------------------------+
-| pos_self_order | | |
+| pos_self_order |Done | |
+---------------------------------------------------+----------------------+-------------------------------------------------+
| |del| pos_self_order_adyen | | |
+---------------------------------------------------+----------------------+-------------------------------------------------+
@@ -908,7 +908,7 @@ Module coverage 19.0 -> 20.0
+---------------------------------------------------+----------------------+-------------------------------------------------+
| product_matrix | | |
+---------------------------------------------------+----------------------+-------------------------------------------------+
-| project | | |
+| project |Done | |
+---------------------------------------------------+----------------------+-------------------------------------------------+
| project_account | | |
+---------------------------------------------------+----------------------+-------------------------------------------------+
@@ -942,7 +942,7 @@ Module coverage 19.0 -> 20.0
+---------------------------------------------------+----------------------+-------------------------------------------------+
| project_timesheet_holidays | | |
+---------------------------------------------------+----------------------+-------------------------------------------------+
-| project_todo | | |
+| project_todo |Done | |
+---------------------------------------------------+----------------------+-------------------------------------------------+
| purchase | | |
+---------------------------------------------------+----------------------+-------------------------------------------------+
@@ -982,7 +982,7 @@ Module coverage 19.0 -> 20.0
+---------------------------------------------------+----------------------+-------------------------------------------------+
| sale_expense_margin | |No DB layout changes. |
+---------------------------------------------------+----------------------+-------------------------------------------------+
-| sale_gelato | | |
+| sale_gelato |Done | |
+---------------------------------------------------+----------------------+-------------------------------------------------+
| sale_gelato_stock | |No DB layout changes. |
+---------------------------------------------------+----------------------+-------------------------------------------------+
@@ -1026,7 +1026,7 @@ Module coverage 19.0 -> 20.0
+---------------------------------------------------+----------------------+-------------------------------------------------+
| sale_stock_product_expiry | |No DB layout changes. |
+---------------------------------------------------+----------------------+-------------------------------------------------+
-| sale_timesheet | | |
+| sale_timesheet |Done | |
+---------------------------------------------------+----------------------+-------------------------------------------------+
| sale_timesheet_margin | |No DB layout changes. |
+---------------------------------------------------+----------------------+-------------------------------------------------+
@@ -1088,7 +1088,7 @@ Module coverage 19.0 -> 20.0
+---------------------------------------------------+----------------------+-------------------------------------------------+
| |del| stock_picking_batch | | |
+---------------------------------------------------+----------------------+-------------------------------------------------+
-| stock_sms | | |
+| stock_sms |Done | |
+---------------------------------------------------+----------------------+-------------------------------------------------+
| survey | | |
+---------------------------------------------------+----------------------+-------------------------------------------------+
@@ -1098,9 +1098,9 @@ Module coverage 19.0 -> 20.0
+---------------------------------------------------+----------------------+-------------------------------------------------+
| |del| transifex | | |
+---------------------------------------------------+----------------------+-------------------------------------------------+
-| uom | | |
+| uom |Done | |
+---------------------------------------------------+----------------------+-------------------------------------------------+
-| utm | | |
+| utm |Done | |
+---------------------------------------------------+----------------------+-------------------------------------------------+
| web | | |
+---------------------------------------------------+----------------------+-------------------------------------------------+
@@ -1110,11 +1110,11 @@ Module coverage 19.0 -> 20.0
+---------------------------------------------------+----------------------+-------------------------------------------------+
| web_unsplash | |No DB layout changes. |
+---------------------------------------------------+----------------------+-------------------------------------------------+
-| website | | |
+| website |Done | |
+---------------------------------------------------+----------------------+-------------------------------------------------+
| |new| website_address_autocomplete | | |
+---------------------------------------------------+----------------------+-------------------------------------------------+
-| website_blog | | |
+| website_blog |Done | |
+---------------------------------------------------+----------------------+-------------------------------------------------+
| website_cf_turnstile | |No DB layout changes. |
+---------------------------------------------------+----------------------+-------------------------------------------------+
@@ -1146,7 +1146,7 @@ Module coverage 19.0 -> 20.0
+---------------------------------------------------+----------------------+-------------------------------------------------+
| website_event_sale | | |
+---------------------------------------------------+----------------------+-------------------------------------------------+
-| website_event_track | | |
+| website_event_track |Done | |
+---------------------------------------------------+----------------------+-------------------------------------------------+
| website_event_track_live | |No DB layout changes. |
+---------------------------------------------------+----------------------+-------------------------------------------------+
@@ -1154,7 +1154,7 @@ Module coverage 19.0 -> 20.0
+---------------------------------------------------+----------------------+-------------------------------------------------+
| website_event_track_quiz | | |
+---------------------------------------------------+----------------------+-------------------------------------------------+
-| website_forum | | |
+| website_forum |Done | |
+---------------------------------------------------+----------------------+-------------------------------------------------+
| website_google_map | |No DB layout changes. |
+---------------------------------------------------+----------------------+-------------------------------------------------+
@@ -1162,7 +1162,7 @@ Module coverage 19.0 -> 20.0
+---------------------------------------------------+----------------------+-------------------------------------------------+
| website_links | | |
+---------------------------------------------------+----------------------+-------------------------------------------------+
-| website_livechat | | |
+| website_livechat |Done | |
+---------------------------------------------------+----------------------+-------------------------------------------------+
| website_mail | |No DB layout changes. |
+---------------------------------------------------+----------------------+-------------------------------------------------+
@@ -1180,7 +1180,7 @@ Module coverage 19.0 -> 20.0
+---------------------------------------------------+----------------------+-------------------------------------------------+
| website_payment | | |
+---------------------------------------------------+----------------------+-------------------------------------------------+
-| website_profile | | |
+| website_profile |Done | |
+---------------------------------------------------+----------------------+-------------------------------------------------+
| website_project | |No DB layout changes. |
+---------------------------------------------------+----------------------+-------------------------------------------------+
@@ -1188,7 +1188,7 @@ Module coverage 19.0 -> 20.0
+---------------------------------------------------+----------------------+-------------------------------------------------+
| |del| website_sale_autocomplete | | |
+---------------------------------------------------+----------------------+-------------------------------------------------+
-| website_sale_collect | | |
+| website_sale_collect |Done | |
+---------------------------------------------------+----------------------+-------------------------------------------------+
| |del| website_sale_collect_wishlist | | |
+---------------------------------------------------+----------------------+-------------------------------------------------+
@@ -1220,7 +1220,7 @@ Module coverage 19.0 -> 20.0
+---------------------------------------------------+----------------------+-------------------------------------------------+
| website_slides_forum | | |
+---------------------------------------------------+----------------------+-------------------------------------------------+
-| website_slides_survey | | |
+| website_slides_survey |Done | |
+---------------------------------------------------+----------------------+-------------------------------------------------+
| website_sms | |No DB layout changes. |
+---------------------------------------------------+----------------------+-------------------------------------------------+
diff --git a/openupgrade_scripts/scripts/account_edi_ubl_cii/20.0.1.0/noupdate_changes.xml b/openupgrade_scripts/scripts/account_edi_ubl_cii/20.0.1.0/noupdate_changes.xml
new file mode 100644
index 00000000000..6bc583a3b88
--- /dev/null
+++ b/openupgrade_scripts/scripts/account_edi_ubl_cii/20.0.1.0/noupdate_changes.xml
@@ -0,0 +1,93 @@
+
+
+
+ CMT
+
+
+
+ INQ
+
+
+ MTQ
+
+
+ DAY
+
+
+ DZN
+
+
+ OZA
+
+
+
+ GLL
+
+
+ GRM
+
+
+ HUR
+
+
+ INH
+
+
+ KGM
+
+
+ KMT
+
+
+ KWH
+
+
+ LBR
+
+
+ LTR
+
+
+ MTR
+
+
+ SMI
+
+
+ MLT
+
+
+ MMT
+
+
+ MIN
+
+
+ ONZ
+
+
+ P6
+
+
+ QTL
+
+
+
+ MTK
+
+
+ TNE
+
+
+ C62
+
+
+ YRD
+
+
diff --git a/openupgrade_scripts/scripts/account_edi_ubl_cii/20.0.1.0/post-migration.py b/openupgrade_scripts/scripts/account_edi_ubl_cii/20.0.1.0/post-migration.py
new file mode 100644
index 00000000000..f03d3ffa05c
--- /dev/null
+++ b/openupgrade_scripts/scripts/account_edi_ubl_cii/20.0.1.0/post-migration.py
@@ -0,0 +1,9 @@
+# Copyright 2026 Don Kendall
+# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl).
+
+from openupgradelib import openupgrade
+
+
+@openupgrade.migrate()
+def migrate(env, version):
+ openupgrade.load_data(env, "account_edi_ubl_cii", "20.0.1.0/noupdate_changes.xml")
diff --git a/openupgrade_scripts/scripts/account_edi_ubl_cii/20.0.1.0/upgrade_analysis.txt b/openupgrade_scripts/scripts/account_edi_ubl_cii/20.0.1.0/upgrade_analysis.txt
new file mode 100644
index 00000000000..8695969be7d
--- /dev/null
+++ b/openupgrade_scripts/scripts/account_edi_ubl_cii/20.0.1.0/upgrade_analysis.txt
@@ -0,0 +1,13 @@
+---Models in module 'account_edi_ubl_cii'---
+---Fields in module 'account_edi_ubl_cii'---
+account_edi_ubl_cii / account.move / has_grouped_lines (boolean) : NEW
+account_edi_ubl_cii / account.tax / ubl_cii_tax_exemption_reason (char): NEW
+account_edi_ubl_cii / res.partner / peppol_eas (selection) : DEL selection_keys: ['0002', '0007', '0009', '0037', '0060', '0088', '0096', '0097', '0106', '0130', '0135', '0142', '0151', '0183', '0184', '0188', '0190', '0191', '0192', '0193', '0195', '0196', '0198', '0199', '0200', '0201', '0202', '0204', '0208', '0209', '0210', '0211', '0213', '0216', '0218', '0221', '0225', '0230', '0235', '0240', '0244', '0245', '0246', '9910', '9913', '9914', '9915', '9918', '9919', '9920', '9922', '9923', '9924', '9925', '9926', '9927', '9928', '9929', '9930', '9931', '9932', '9933', '9934', '9935', '9936', '9937', '9938', '9939', '9940', '9941', '9942', '9943', '9944', '9945', '9946', '9947', '9948', '9949', '9950', '9951', '9952', '9953', '9955', '9957', '9959', 'AN', 'AQ', 'AS', 'AU', 'EM']
+account_edi_ubl_cii / res.partner / peppol_endpoint (char) : DEL
+account_edi_ubl_cii / res.partner / routing_endpoint (char) : NEW hasdefault: compute
+account_edi_ubl_cii / res.partner / routing_scheme (selection) : NEW selection_keys: ['0002', '0007', '0009', '0037', '0060', '0088', '0096', '0097', '0106', '0130', '0135', '0142', '0151', '0183', '0184', '0188', '0190', '0191', '0192', '0193', '0195', '0196', '0198', '0199', '0200', '0201', '0202', '0204', '0208', '0209', '0210', '0211', '0213', '0216', '0218', '0221', '0225', '0230', '0235', '0240', '0244', '0245', '0246', '9910', '9913', '9914', '9915', '9918', '9919', '9920', '9922', '9923', '9924', '9925', '9926', '9927', '9928', '9929', '9930', '9931', '9932', '9933', '9934', '9935', '9936', '9937', '9938', '9939', '9940', '9941', '9942', '9943', '9944', '9945', '9946', '9947', '9948', '9949', '9950', '9951', '9952', '9953', '9955', '9957', '9959', 'AN', 'AQ', 'AS', 'AU', 'EM'], hasdefault: compute
+account_edi_ubl_cii / uom.uom / unece_code (char) : NEW
+---XML records in module 'account_edi_ubl_cii'---
+ir.config_parameter: account_edi_ubl_cii.disable_pdf_in_xml (noupdate switched)
+NEW ir.model.constraint: account_edi_ubl_cii.constraint_uom_uom_unece_code_unique
+NEW ir.ui.view: account_edi_ubl_cii.uom_uom_view_form_inherit
diff --git a/openupgrade_scripts/scripts/analytic/20.0.1.2/noupdate_changes.xml b/openupgrade_scripts/scripts/analytic/20.0.1.2/noupdate_changes.xml
new file mode 100644
index 00000000000..6e1465e5c4a
--- /dev/null
+++ b/openupgrade_scripts/scripts/analytic/20.0.1.2/noupdate_changes.xml
@@ -0,0 +1,6 @@
+
+
+
+ Project Plan
+
+
diff --git a/openupgrade_scripts/scripts/analytic/20.0.1.2/post-migration.py b/openupgrade_scripts/scripts/analytic/20.0.1.2/post-migration.py
new file mode 100644
index 00000000000..ce381d3b1ff
--- /dev/null
+++ b/openupgrade_scripts/scripts/analytic/20.0.1.2/post-migration.py
@@ -0,0 +1,9 @@
+# Copyright 2026 Don Kendall
+# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl).
+
+from openupgradelib import openupgrade
+
+
+@openupgrade.migrate()
+def migrate(env, version):
+ openupgrade.load_data(env, "analytic", "20.0.1.2/noupdate_changes.xml")
diff --git a/openupgrade_scripts/scripts/analytic/20.0.1.2/upgrade_analysis.txt b/openupgrade_scripts/scripts/analytic/20.0.1.2/upgrade_analysis.txt
new file mode 100644
index 00000000000..56daf3b0460
--- /dev/null
+++ b/openupgrade_scripts/scripts/analytic/20.0.1.2/upgrade_analysis.txt
@@ -0,0 +1,27 @@
+---Models in module 'analytic'---
+---Fields in module 'analytic'---
+analytic / account.analytic.distribution.model / analytic_distribution (json) : now required
+analytic / account.analytic.line / x_plan1_id (many2one) : NEW relation: account.analytic.account
+---XML records in module 'analytic'---
+account.analytic.plan: analytic.analytic_plan_projects (noupdate switched)
+decimal.precision: analytic.decimal_percentage_analytic (noupdate switched)
+NEW ir.access: analytic.access_account_analytic_account
+NEW ir.access: analytic.access_account_analytic_applicability
+NEW ir.access: analytic.access_account_analytic_distribution_model
+NEW ir.access: analytic.access_account_analytic_plan
+NEW ir.access: analytic.analytic_applicability_comp_rule
+NEW ir.access: analytic.analytic_comp_rule
+NEW ir.access: analytic.analytic_distribution_model_comp_rule
+NEW ir.access: analytic.analytic_line_analytic
+NEW ir.access: analytic.analytic_line_comp_rule
+ir.actions.act_window: analytic.account_analytic_line_action (deleted domain)
+ir.actions.act_window: analytic.account_analytic_plan_action (deleted domain)
+DEL ir.model.access: analytic.access_account_analytic_account
+DEL ir.model.access: analytic.access_account_analytic_applicability
+DEL ir.model.access: analytic.access_account_analytic_distribution_model
+DEL ir.model.access: analytic.access_account_analytic_line
+DEL ir.model.access: analytic.access_account_analytic_plan
+DEL ir.rule: analytic.analytic_applicability_comp_rule (noupdate)
+DEL ir.rule: analytic.analytic_comp_rule (noupdate)
+DEL ir.rule: analytic.analytic_distribution_model_comp_rule (noupdate)
+DEL ir.rule: analytic.analytic_line_comp_rule (noupdate)
diff --git a/openupgrade_scripts/scripts/auth_signup/20.0.1.0/noupdate_changes.xml b/openupgrade_scripts/scripts/auth_signup/20.0.1.0/noupdate_changes.xml
new file mode 100644
index 00000000000..54929c00a47
--- /dev/null
+++ b/openupgrade_scripts/scripts/auth_signup/20.0.1.0/noupdate_changes.xml
@@ -0,0 +1,74 @@
+
+
+
+
+
+Dear Mitchell Admin,
+You added the following user(s) to your database but they haven't registered yet:
+
+Follow up with them so they can access your database and start working with you.
+
+Have a nice day!
+--
The YourCompany Team
+
+
+
+
+ mail.mail_notification_layout
+
+
+
+
+ Dear Marc Demo,
+ Your account has been successfully created!
+ Your login is mark.brown23@example.com
+ To gain access to your account, you can use the following link:
+
+ Thanks,
+
--
Mitchell Admin
+
+
+
+
+ mail.mail_notification_layout
+
+
+
+
+ Dear Marc Demo,
+ Welcome to YourCompany's Portal!
+ An account has been created for you with the following login: demo
+ Click on the button below to pick a password and activate your account.
+
+ Welcome to our company's portal.
+
+
+
+
+ mail.mail_notification_layout
+
+
+
+
+Hi Marc Demo,
+This link is valid for link_validity_days days
+ uses Odoo
+to run its business. You have been invited by OdooBot to connect.
+
+Once accepted, you can reconnect through:
+
+
+
+
+Enjoy Odoo!
+--
The Team
+
+
+
+ mail.mail_notification_layout
+
+
diff --git a/openupgrade_scripts/scripts/auth_signup/20.0.1.0/post-migration.py b/openupgrade_scripts/scripts/auth_signup/20.0.1.0/post-migration.py
new file mode 100644
index 00000000000..a809e817eb5
--- /dev/null
+++ b/openupgrade_scripts/scripts/auth_signup/20.0.1.0/post-migration.py
@@ -0,0 +1,20 @@
+# Copyright 2026 Don Kendall
+# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl).
+
+from openupgradelib import openupgrade
+
+
+@openupgrade.migrate()
+def migrate(env, version):
+ openupgrade.load_data(env, "auth_signup", "20.0.1.0/noupdate_changes.xml")
+ openupgrade.delete_record_translations(
+ env.cr,
+ "auth_signup",
+ [
+ "mail_template_data_unregistered_users",
+ "mail_template_user_signup_account_created",
+ "portal_set_password_email",
+ "set_password_email",
+ ],
+ ["body_html"],
+ )
diff --git a/openupgrade_scripts/scripts/auth_signup/20.0.1.0/upgrade_analysis.txt b/openupgrade_scripts/scripts/auth_signup/20.0.1.0/upgrade_analysis.txt
new file mode 100644
index 00000000000..a4ac0e107df
--- /dev/null
+++ b/openupgrade_scripts/scripts/auth_signup/20.0.1.0/upgrade_analysis.txt
@@ -0,0 +1,8 @@
+---Models in module 'auth_signup'---
+---Fields in module 'auth_signup'---
+auth_signup / res.users / state (selection) : selection_keys added: [inactive] (most likely nothing to do)
+---XML records in module 'auth_signup'---
+mail.template: auth_signup.mail_template_data_unregistered_users (noupdate switched)
+mail.template: auth_signup.mail_template_user_signup_account_created (noupdate switched)
+mail.template: auth_signup.portal_set_password_email (noupdate switched)
+mail.template: auth_signup.set_password_email (noupdate switched)
diff --git a/openupgrade_scripts/scripts/auth_signup/20.0.1.0/upgrade_analysis_work.txt b/openupgrade_scripts/scripts/auth_signup/20.0.1.0/upgrade_analysis_work.txt
new file mode 100644
index 00000000000..f1378e9c633
--- /dev/null
+++ b/openupgrade_scripts/scripts/auth_signup/20.0.1.0/upgrade_analysis_work.txt
@@ -0,0 +1,10 @@
+---Models in module 'auth_signup'---
+---Fields in module 'auth_signup'---
+auth_signup / res.users / state (selection) : selection_keys added: [inactive] (most likely nothing to do)
+# NOTHING TO DO: keys were added, the existing values stay valid
+---XML records in module 'auth_signup'---
+mail.template: auth_signup.mail_template_data_unregistered_users (noupdate switched)
+mail.template: auth_signup.mail_template_user_signup_account_created (noupdate switched)
+mail.template: auth_signup.portal_set_password_email (noupdate switched)
+mail.template: auth_signup.set_password_email (noupdate switched)
+# DONE: post-migration: load noupdate_changes.xml
diff --git a/openupgrade_scripts/scripts/auth_totp_mail/20.0.1.0/noupdate_changes.xml b/openupgrade_scripts/scripts/auth_totp_mail/20.0.1.0/noupdate_changes.xml
new file mode 100644
index 00000000000..7f78027468e
--- /dev/null
+++ b/openupgrade_scripts/scripts/auth_totp_mail/20.0.1.0/noupdate_changes.xml
@@ -0,0 +1,34 @@
+
+
+
+ mail.mail_notification_light
+
+
+
+
+Dear
+
Someone is trying to log in into your account with a new device.
+
N/A- Location:
- Device:
- Browser:
- IP address:
+
If this is you, please enter the following code to complete the login:
+
+
+
+
+
+
+ If you did NOT initiate this log-in,
+ you should immediately change your password to ensure account security.
+
+
+
+ We also strongly recommend enabling the two-factor authentication using an authenticator app to help secure your account.
+
+
+
+ Activate my two-factor authentication
+
+
+
+ mail.mail_notification_light
+
+
diff --git a/openupgrade_scripts/scripts/auth_totp_mail/20.0.1.0/post-migration.py b/openupgrade_scripts/scripts/auth_totp_mail/20.0.1.0/post-migration.py
new file mode 100644
index 00000000000..caa51ece62f
--- /dev/null
+++ b/openupgrade_scripts/scripts/auth_totp_mail/20.0.1.0/post-migration.py
@@ -0,0 +1,15 @@
+# Copyright 2026 Don Kendall
+# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl).
+
+from openupgradelib import openupgrade
+
+
+@openupgrade.migrate()
+def migrate(env, version):
+ openupgrade.load_data(env, "auth_totp_mail", "20.0.1.0/noupdate_changes.xml")
+ openupgrade.delete_record_translations(
+ env.cr,
+ "auth_totp_mail",
+ ["mail_template_totp_mail_code"],
+ ["body_html"],
+ )
diff --git a/openupgrade_scripts/scripts/auth_totp_mail/20.0.1.0/upgrade_analysis.txt b/openupgrade_scripts/scripts/auth_totp_mail/20.0.1.0/upgrade_analysis.txt
new file mode 100644
index 00000000000..cbc145d59f3
--- /dev/null
+++ b/openupgrade_scripts/scripts/auth_totp_mail/20.0.1.0/upgrade_analysis.txt
@@ -0,0 +1,5 @@
+---Models in module 'auth_totp_mail'---
+---Fields in module 'auth_totp_mail'---
+---XML records in module 'auth_totp_mail'---
+mail.template: auth_totp_mail.mail_template_totp_invite (noupdate switched)
+mail.template: auth_totp_mail.mail_template_totp_mail_code (noupdate switched)
diff --git a/openupgrade_scripts/scripts/auth_totp_mail/20.0.1.0/upgrade_analysis_work.txt b/openupgrade_scripts/scripts/auth_totp_mail/20.0.1.0/upgrade_analysis_work.txt
new file mode 100644
index 00000000000..de750b8b6de
--- /dev/null
+++ b/openupgrade_scripts/scripts/auth_totp_mail/20.0.1.0/upgrade_analysis_work.txt
@@ -0,0 +1,6 @@
+---Models in module 'auth_totp_mail'---
+---Fields in module 'auth_totp_mail'---
+---XML records in module 'auth_totp_mail'---
+mail.template: auth_totp_mail.mail_template_totp_invite (noupdate switched)
+mail.template: auth_totp_mail.mail_template_totp_mail_code (noupdate switched)
+# DONE: post-migration: load noupdate_changes.xml
diff --git a/openupgrade_scripts/scripts/calendar/20.0.1.1/noupdate_changes.xml b/openupgrade_scripts/scripts/calendar/20.0.1.1/noupdate_changes.xml
new file mode 100644
index 00000000000..bc94ffadcf9
--- /dev/null
+++ b/openupgrade_scripts/scripts/calendar/20.0.1.1/noupdate_changes.xml
@@ -0,0 +1,562 @@
+
+
+
+
+
+
+
+
+
+ Event canceled
+
+
+
+ Hello,
+
+ This is to inform you that the event Follow-up for Project proposal organized by Colleen Diaz has been canceled and removed from your calendar.
+
+
+
+
Details
+
+
+ | Date & Time |
+
+ Tuesday
+ 4
+ May 2021
+
+ 11:00 AM
+
+
+ (Europe/Brussels)
+
+
+
+ |
+
+
+ | Duration |
+
+ 0H30
+ |
+
+
+ | Location |
+
+ Bruxelles
+ |
+
+
+
+
+ If you have any questions or concerns, please feel free to contact us.
+ Best regards,
+ The Calendar Team
+
+
+
+ Calendar: Event Canceled
+ Canceled event: {{ object.name }}
+ mail.mail_notification_light
+
+
+
+
+
+
+
+
+
+
+
+ Date Updated
+
+
+
+ Hello Ready Mat,
+
+ Your appointment with Jesse Brown has been updated:
+
+ Your appointment has been updated:
+ Schedule a Demo is now scheduled for
+ 05/04/2021 at (11:00:00 To 11:30:00) (Europe/Brussels).
+
+
+ Your appointment Schedule a Demo with Colleen Diaz
+ is now scheduled for 05/04/2021 at (11:00:00 To 11:30:00) (Europe/Brussels).
+
+
+ The date of the meeting Follow-up for Project proposal created by Colleen Diaz is now scheduled for
+ 05/04/2021 at (11:00:00 To 11:30:00) (Europe/Brussels).
+
+
+
+
+
Details
+
+
+ | Date & Time |
+
+ Tuesday
+ 4
+ May 2021
+
+ 11:00 AM
+
+
+ (Europe/Brussels)
+
+
+
+ |
+
+
+ | When |
+
+ Every 1 Weeks, for 3 events
+ |
+
+
+ | Duration |
+
+ 0H30
+ |
+
+
+ | Location |
+
+ Bruxelles
+ View Map
+ |
+
+
+ |
+ Join with
+ Join
+ |
+
+
+ Odoo Discuss
+ Video meeting
+
+ |
+
+
+
+
+
+
Attendees
+
+
![]()
+
+ Mitchell Admin
+
+
+ You
+
+
+
+ ... and 2 more
+
+
+
+
Description of the event
+ Internal meeting for discussion for new pricing for product and services.
+
+
+
Add to calendar
+
+
+ Thank you!
+ Mitchell Admin
+
+
+
+ mail.mail_notification_light
+
+
+
+
+
+
+
+
+
+ Invitation
+
+
+ Hello Wood Corner,
+
+
+ You have been invited by Customer to the Follow-up for Project proposal meeting.
+
+ Colleen Diaz invited you for the Follow-up for Project proposal meeting.
+
+
+
+ Your meeting Follow-up for Project proposal has been booked.
+
+
+
+
+
Details
+
+
+ | Date & Time |
+
+ Tuesday
+ 4
+ May 2021
+
+ 11:00 AM
+
+
+ (Europe/Brussels)
+
+
+
+ |
+
+
+ | When |
+
+ Every 1 Weeks, for 3 events
+ |
+
+
+ | Duration |
+
+ 0H30
+ |
+
+
+ | Location |
+
+ Bruxelles
+ View Map
+ |
+
+
+ |
+ Join with
+ Join
+ |
+
+
+ Odoo Discuss
+ Video meeting
+
+ |
+
+
+
+
+
+
Attendees
+
+
![]()
+
+ Mitchell Admin
+
+
+ You
+
+
+
+ ... and 2 more
+
+
+
+
Description of the event
+ Internal meeting for discussion for new pricing for product and services.
+
+
+
Add to calendar
+
+
+ Thank you!
+ Mitchell Admin
+
+
+
+ mail.mail_notification_light
+
+
+
+
+
+
+
+ Reminder
+
+
+
+ Hello Gemini Furniture,
+ This is a reminder for the event below.
+
+
+
+
Details
+
+
+ | Date & Time |
+
+ Tuesday
+ 4
+ May 2021
+
+ 11:00 AM
+
+
+ (Europe/Brussels)
+
+
+
+ |
+
+
+ | When |
+
+ Every 1 Weeks, for 3 events
+ |
+
+
+ | Duration |
+
+ 0H30
+ |
+
+
+ | Location |
+
+ Bruxelles
+ View Map
+ |
+
+
+ |
+ Join with
+ Join
+ |
+
+
+ Odoo Discuss
+ Video meeting
+
+ |
+
+
+
+
+
+
Attendees
+
+
![]()
+
+ Mitchell Admin
+
+
+ You
+
+
+
+ ... and 2 more
+
+
+
+
Description of the event
+ Internal meeting for discussion for new pricing for product and services.
+
+
+
Add to calendar
+
+
+ Thank you!
+ Mitchell Admin
+
+
+
+ mail.mail_notification_light
+
+
+
+
+
+
+
+
+ Event updated
+
+
+
Hello,
+ This meeting has been updated.
+
+
+
Details
+
+
+ | Date & Time |
+
+ Tuesday
+ 4
+ May 2021
+
+ 11:00 AM
+
+
+ (Europe/Brussels)
+
+
+
+ |
+
+
+ | When |
+
+ Every 1 Weeks, for 3 events
+ |
+
+
+ | Duration |
+
+ 0H30
+ |
+
+
+ | Location |
+
+ Bruxelles
+ View Map
+ |
+
+
+ |
+ Join with
+ Join
+ |
+
+
+ Odoo Discuss
+ Video meeting
+
+ |
+
+
+
+
+
+
Attendees
+
+
![]()
+
+ Mitchell Admin
+
+
+ You
+
+
+
+ ... and 2 more
+
+
+
+
Description of the event
+ Internal meeting for discussion for new pricing for product and services.
+
+
+
Add to calendar
+
+
+ Thank you!
+ Mitchell Admin
+
+
+
+ mail.mail_notification_light
+
+
+ Invitation Status
+
+
diff --git a/openupgrade_scripts/scripts/calendar/20.0.1.1/post-migration.py b/openupgrade_scripts/scripts/calendar/20.0.1.1/post-migration.py
new file mode 100644
index 00000000000..b8c6fa2c991
--- /dev/null
+++ b/openupgrade_scripts/scripts/calendar/20.0.1.1/post-migration.py
@@ -0,0 +1,32 @@
+# Copyright 2026 Don Kendall
+# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl).
+
+from openupgradelib import openupgrade
+
+
+@openupgrade.migrate()
+def migrate(env, version):
+ openupgrade.load_data(env, "calendar", "20.0.1.1/noupdate_changes.xml")
+ openupgrade.delete_record_translations(
+ env.cr,
+ "calendar",
+ [
+ "calendar_template_meeting_changedate",
+ "calendar_template_meeting_invitation",
+ "calendar_template_meeting_reminder",
+ "calendar_template_meeting_update",
+ ],
+ ["body_html"],
+ )
+ openupgrade.delete_record_translations(
+ env.cr,
+ "calendar",
+ ["calendar_template_delete_event"],
+ ["body_html", "name", "subject"],
+ )
+ openupgrade.delete_record_translations(
+ env.cr,
+ "calendar",
+ ["subtype_invitation"],
+ ["name"],
+ )
diff --git a/openupgrade_scripts/scripts/calendar/20.0.1.1/upgrade_analysis.txt b/openupgrade_scripts/scripts/calendar/20.0.1.1/upgrade_analysis.txt
new file mode 100644
index 00000000000..828502726d0
--- /dev/null
+++ b/openupgrade_scripts/scripts/calendar/20.0.1.1/upgrade_analysis.txt
@@ -0,0 +1,115 @@
+---Models in module 'calendar'---
+obsolete model calendar.popover.delete.wizard [transient]
+obsolete model calendar.provider.config [transient]
+new model calendar.calendar
+new model calendar.event.archive.or.unlink.wizard [transient]
+new model calendar.event.multi.archive.or.unlink.wizard [transient]
+new model calendar.user
+---Fields in module 'calendar'---
+calendar / calendar.calendar / calendar_default_privacy (selection): NEW required, selection_keys: ['confidential', 'members_only', 'private', 'public'], hasdefault: default
+calendar / calendar.calendar / calendar_user_ids (one2many) : NEW relation: calendar.user, hasdefault: default
+calendar / calendar.calendar / event_ids (one2many) : NEW relation: calendar.event
+calendar / calendar.calendar / name (char) : NEW
+calendar / calendar.calendar / recurrence_ids (one2many) : NEW relation: calendar.recurrence
+calendar / calendar.event / calendar_id (many2one) : NEW relation: calendar.calendar, hasdefault: compute
+calendar / calendar.event / effective_privacy (selection) : selection_keys added: [members_only] (most likely nothing to do)
+calendar / calendar.event / is_draft (boolean) : NEW
+calendar / calendar.event / meeting_activity_ids (one2many): NEW relation: mail.activity
+calendar / calendar.event / privacy (selection) : selection_keys added: [members_only] (most likely nothing to do)
+calendar / calendar.filters / partner_checked (boolean) : DEL
+calendar / calendar.user / access_role (selection) : NEW required, selection_keys: ['owner', 'writer']
+calendar / calendar.user / calendar_id (many2one) : NEW relation: calendar.calendar, required
+calendar / calendar.user / filter_color (integer) : NEW hasdefault: default
+calendar / calendar.user / is_filter_active (boolean) : NEW hasdefault: default
+calendar / calendar.user / is_filter_checked (boolean) : NEW hasdefault: default
+calendar / calendar.user / is_primary (boolean) : NEW
+calendar / calendar.user / name (char) : NEW
+calendar / calendar.user / user_id (many2one) : NEW relation: res.users, required
+calendar / res.users / activity_calendar_event_id (many2one): not related anymore
+calendar / res.users / activity_calendar_event_id (many2one): now a function
+calendar / res.users / calendar_ids (one2many) : NEW relation: calendar.calendar, hasdefault: compute, stored: False
+calendar / res.users / calendar_user_ids (one2many) : NEW relation: calendar.user
+calendar / res.users / primary_calendar_id (many2one): NEW relation: calendar.calendar, isfunction: function, stored
+calendar / res.users.settings / calendar_default_privacy (selection): DEL required, selection_keys: ['confidential', 'private', 'public']
+calendar / res.users.settings / calendar_show_activities (boolean): NEW hasdefault: default
+---XML records in module 'calendar'---
+calendar.alarm: calendar.alarm_mail_1 (noupdate switched)
+NEW calendar.alarm: calendar.alarm_mail_1_day
+calendar.alarm: calendar.alarm_mail_2 (noupdate switched)
+calendar.alarm: calendar.alarm_notif_1 (noupdate switched)
+calendar.alarm: calendar.alarm_notif_2 (noupdate switched)
+calendar.alarm: calendar.alarm_notif_3 (noupdate switched)
+calendar.alarm: calendar.alarm_notif_4 (noupdate switched)
+calendar.alarm: calendar.alarm_notif_5 (noupdate switched)
+NEW ir.access: calendar.access_calendar_alarm
+NEW ir.access: calendar.access_calendar_alarm_manager
+NEW ir.access: calendar.access_calendar_attendee_employee
+NEW ir.access: calendar.access_calendar_attendee_employee_archive_or_unlink_wizard
+NEW ir.access: calendar.access_calendar_attendee_employee_multi_archive_or_unlink_wizard
+NEW ir.access: calendar.access_calendar_event_type_all
+NEW ir.access: calendar.access_calendar_event_type_manager
+NEW ir.access: calendar.access_calendar_filters_all
+NEW ir.access: calendar.access_calendar_recurrence
+NEW ir.access: calendar.calendar_calendar_rule_system
+NEW ir.access: calendar.calendar_calendar_rule_users_create_and_read
+NEW ir.access: calendar.calendar_calendar_rule_users_update
+NEW ir.access: calendar.calendar_event_rule_employee
+NEW ir.access: calendar.calendar_event_rule_my
+NEW ir.access: calendar.calendar_event_rule_private
+NEW ir.access: calendar.calendar_user_rule_create
+NEW ir.access: calendar.calendar_user_rule_own_or_owner
+NEW ir.access: calendar.calendar_user_rule_read
+NEW ir.actions.act_window: calendar.action_calendar_calendar
+DEL ir.actions.act_window: calendar.action_event_delete_wizard
+ir.config_parameter: calendar.default_privacy (noupdate switched)
+ir.cron: calendar.ir_cron_scheduler_alarm (noupdate switched)
+DEL ir.model.access: calendar.access_calendar_alarm
+DEL ir.model.access: calendar.access_calendar_alarm_manager
+DEL ir.model.access: calendar.access_calendar_attendee_employee
+DEL ir.model.access: calendar.access_calendar_attendee_employee_delete_wizard
+DEL ir.model.access: calendar.access_calendar_attendee_portal
+DEL ir.model.access: calendar.access_calendar_event_all_employee
+DEL ir.model.access: calendar.access_calendar_event_all_user
+DEL ir.model.access: calendar.access_calendar_event_partner_manager
+DEL ir.model.access: calendar.access_calendar_event_type_all
+DEL ir.model.access: calendar.access_calendar_event_type_manager
+DEL ir.model.access: calendar.access_calendar_filters
+DEL ir.model.access: calendar.access_calendar_filters_all
+DEL ir.model.access: calendar.access_calendar_provider_config_all
+DEL ir.model.access: calendar.access_calendar_provider_config_manager
+DEL ir.model.access: calendar.access_calendar_recurrence
+NEW ir.model.constraint: calendar.constraint_calendar_event_access_token_unique
+NEW ir.model.constraint: calendar.constraint_calendar_event_check_no_recurrent_draft
+ir.model.constraint: calendar.constraint_calendar_event_type_name_uniq (changed definition: is now 'False' ('unique (name)'))
+ir.model.constraint: calendar.constraint_calendar_filters_user_id_partner_id_unique (changed definition: is now 'False' ('UNIQUE(user_id, partner_id)'))
+ir.model.constraint: calendar.constraint_calendar_recurrence_month_day (changed definition: is now 'False' ('CHECK ( rrule_type != 'monthly' OR month_by != 'day' OR day >= 1 AND day <= 31 OR weekday IN ('MON', 'TUE', 'WED', 'THU', 'FRI', 'SAT', 'SUN') AND byday IN ('1', '2', '3', '4', '-1'))'))
+NEW ir.model.constraint: calendar.constraint_calendar_user_single_primary_calendar_per_user
+NEW ir.model.constraint: calendar.constraint_calendar_user_unique_user_per_calendar
+DEL ir.rule: calendar.calendar_attendee_rule_my (noupdate)
+DEL ir.rule: calendar.calendar_event_rule_employee (noupdate)
+DEL ir.rule: calendar.calendar_event_rule_my (noupdate)
+DEL ir.rule: calendar.calendar_event_rule_private (noupdate)
+NEW ir.ui.menu: calendar.calendar_submenu_event_type
+NEW ir.ui.menu: calendar.menu_calendar_calendars
+NEW ir.ui.view: calendar.calendar_alarm_view_kanban
+NEW ir.ui.view: calendar.calendar_alarm_view_search
+NEW ir.ui.view: calendar.calendar_calendar_view_form
+NEW ir.ui.view: calendar.calendar_calendar_view_list
+NEW ir.ui.view: calendar.calendar_event_archive_or_unlink_wizard_view_form
+NEW ir.ui.view: calendar.calendar_event_multi_archive_or_unlink_wizard_view_form
+NEW ir.ui.view: calendar.calendar_user_view_form
+NEW ir.ui.view: calendar.message_meeting_activity_done
+NEW ir.ui.view: calendar.res_partner_view_form_simplified
+NEW ir.ui.view: calendar.res_users_form_view_calendars
+DEL ir.ui.view: calendar.calendar_popover_delete_view
+DEL ir.ui.view: calendar.calendar_provider_config_view_form
+DEL ir.ui.view: calendar.res_users_form_view_calendar_default_privacy
+DEL ir.ui.view: calendar.view_event_delete_wizard_form
+mail.activity.type: mail.mail_activity_data_meeting (noupdate switched)
+NEW mail.message.subtype: calendar.mt_calendar_event_updated
+mail.message.subtype: calendar.subtype_invitation (noupdate switched)
+mail.template: calendar.calendar_template_delete_event (noupdate switched)
+mail.template: calendar.calendar_template_meeting_changedate (noupdate switched)
+mail.template: calendar.calendar_template_meeting_invitation (noupdate switched)
+mail.template: calendar.calendar_template_meeting_reminder (noupdate switched)
+mail.template: calendar.calendar_template_meeting_update (noupdate switched)
diff --git a/openupgrade_scripts/scripts/crm_iap_mine/20.0.1.2/pre-migration.py b/openupgrade_scripts/scripts/crm_iap_mine/20.0.1.2/pre-migration.py
new file mode 100644
index 00000000000..428c4d38500
--- /dev/null
+++ b/openupgrade_scripts/scripts/crm_iap_mine/20.0.1.2/pre-migration.py
@@ -0,0 +1,22 @@
+# Copyright 2026 Don Kendall
+# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl).
+
+from openupgradelib import openupgrade
+
+# 20.0 replaces the industry list wholesale -- 23 entries become 83 and the
+# external ids are renumbered. Matching the two csv files by name, "Real
+# Estate" is the only one carried over, and it is the only one that collides:
+# crm_iap_lead_industry_name_uniq rejects the new row while the old one is
+# still there under its old id. The other 22 are left to the usual removal of
+# data records a module no longer declares.
+_renamed_xmlids = [
+ (
+ "crm_iap_mine.crm_iap_mine_industry_114",
+ "crm_iap_mine.crm_iap_mine_industry_65",
+ ),
+]
+
+
+@openupgrade.migrate()
+def migrate(env, version):
+ openupgrade.rename_xmlids(env.cr, _renamed_xmlids)
diff --git a/openupgrade_scripts/scripts/crm_iap_mine/20.0.1.2/upgrade_analysis.txt b/openupgrade_scripts/scripts/crm_iap_mine/20.0.1.2/upgrade_analysis.txt
new file mode 100644
index 00000000000..ec4d89133ff
--- /dev/null
+++ b/openupgrade_scripts/scripts/crm_iap_mine/20.0.1.2/upgrade_analysis.txt
@@ -0,0 +1,151 @@
+---Models in module 'crm_iap_mine'---
+new model crm.iap.lead.industry.division
+---Fields in module 'crm_iap_mine'---
+crm_iap_mine / crm.iap.lead.industry / _order : _order is now 'sequence,division_id,name' ('sequence,id')
+crm_iap_mine / crm.iap.lead.industry / division_id (many2one) : NEW relation: crm.iap.lead.industry.division, required
+crm_iap_mine / crm.iap.lead.industry / reveal_ids (char) : DEL required
+crm_iap_mine / crm.iap.lead.industry / sic_group (integer) : NEW required
+crm_iap_mine / crm.iap.lead.industry.division / code (char) : NEW required
+crm_iap_mine / crm.iap.lead.industry.division / name (char) : NEW required, translate
+crm_iap_mine / crm.iap.lead.industry.division / sequence (integer) : NEW
+crm_iap_mine / crm.iap.lead.mining.request / contact_filter_type (selection): DEL selection_keys: ['role', 'seniority']
+crm_iap_mine / crm.iap.lead.mining.request / contact_number (integer) : DEL
+crm_iap_mine / crm.iap.lead.mining.request / preferred_role_id (many2one) : DEL relation: crm.iap.lead.role
+crm_iap_mine / crm.iap.lead.mining.request / role_ids (many2many) : DEL relation: crm.iap.lead.role
+crm_iap_mine / crm.iap.lead.mining.request / search_type (selection) : DEL required, selection_keys: ['companies', 'people']
+crm_iap_mine / crm.iap.lead.mining.request / seniority_id (many2one) : DEL relation: crm.iap.lead.seniority
+---XML records in module 'crm_iap_mine'---
+NEW crm.iap.lead.industry: crm_iap_mine.crm_iap_mine_industry_01
+NEW crm.iap.lead.industry: crm_iap_mine.crm_iap_mine_industry_02
+NEW crm.iap.lead.industry: crm_iap_mine.crm_iap_mine_industry_07
+NEW crm.iap.lead.industry: crm_iap_mine.crm_iap_mine_industry_08
+NEW crm.iap.lead.industry: crm_iap_mine.crm_iap_mine_industry_09
+NEW crm.iap.lead.industry: crm_iap_mine.crm_iap_mine_industry_10
+NEW crm.iap.lead.industry: crm_iap_mine.crm_iap_mine_industry_12
+NEW crm.iap.lead.industry: crm_iap_mine.crm_iap_mine_industry_13
+NEW crm.iap.lead.industry: crm_iap_mine.crm_iap_mine_industry_14
+NEW crm.iap.lead.industry: crm_iap_mine.crm_iap_mine_industry_15
+NEW crm.iap.lead.industry: crm_iap_mine.crm_iap_mine_industry_16
+NEW crm.iap.lead.industry: crm_iap_mine.crm_iap_mine_industry_17
+NEW crm.iap.lead.industry: crm_iap_mine.crm_iap_mine_industry_20
+NEW crm.iap.lead.industry: crm_iap_mine.crm_iap_mine_industry_21
+NEW crm.iap.lead.industry: crm_iap_mine.crm_iap_mine_industry_22
+NEW crm.iap.lead.industry: crm_iap_mine.crm_iap_mine_industry_23
+NEW crm.iap.lead.industry: crm_iap_mine.crm_iap_mine_industry_24
+NEW crm.iap.lead.industry: crm_iap_mine.crm_iap_mine_industry_25
+NEW crm.iap.lead.industry: crm_iap_mine.crm_iap_mine_industry_26
+NEW crm.iap.lead.industry: crm_iap_mine.crm_iap_mine_industry_27
+NEW crm.iap.lead.industry: crm_iap_mine.crm_iap_mine_industry_28
+NEW crm.iap.lead.industry: crm_iap_mine.crm_iap_mine_industry_29
+NEW crm.iap.lead.industry: crm_iap_mine.crm_iap_mine_industry_30
+NEW crm.iap.lead.industry: crm_iap_mine.crm_iap_mine_industry_31
+NEW crm.iap.lead.industry: crm_iap_mine.crm_iap_mine_industry_32
+NEW crm.iap.lead.industry: crm_iap_mine.crm_iap_mine_industry_34
+NEW crm.iap.lead.industry: crm_iap_mine.crm_iap_mine_industry_35
+NEW crm.iap.lead.industry: crm_iap_mine.crm_iap_mine_industry_36
+NEW crm.iap.lead.industry: crm_iap_mine.crm_iap_mine_industry_37
+NEW crm.iap.lead.industry: crm_iap_mine.crm_iap_mine_industry_38
+NEW crm.iap.lead.industry: crm_iap_mine.crm_iap_mine_industry_39
+NEW crm.iap.lead.industry: crm_iap_mine.crm_iap_mine_industry_40
+NEW crm.iap.lead.industry: crm_iap_mine.crm_iap_mine_industry_41
+NEW crm.iap.lead.industry: crm_iap_mine.crm_iap_mine_industry_42
+NEW crm.iap.lead.industry: crm_iap_mine.crm_iap_mine_industry_43
+NEW crm.iap.lead.industry: crm_iap_mine.crm_iap_mine_industry_44
+NEW crm.iap.lead.industry: crm_iap_mine.crm_iap_mine_industry_45
+NEW crm.iap.lead.industry: crm_iap_mine.crm_iap_mine_industry_46
+NEW crm.iap.lead.industry: crm_iap_mine.crm_iap_mine_industry_47
+NEW crm.iap.lead.industry: crm_iap_mine.crm_iap_mine_industry_48
+NEW crm.iap.lead.industry: crm_iap_mine.crm_iap_mine_industry_49
+NEW crm.iap.lead.industry: crm_iap_mine.crm_iap_mine_industry_50
+NEW crm.iap.lead.industry: crm_iap_mine.crm_iap_mine_industry_51
+NEW crm.iap.lead.industry: crm_iap_mine.crm_iap_mine_industry_52
+NEW crm.iap.lead.industry: crm_iap_mine.crm_iap_mine_industry_53
+NEW crm.iap.lead.industry: crm_iap_mine.crm_iap_mine_industry_54
+NEW crm.iap.lead.industry: crm_iap_mine.crm_iap_mine_industry_55
+NEW crm.iap.lead.industry: crm_iap_mine.crm_iap_mine_industry_56
+NEW crm.iap.lead.industry: crm_iap_mine.crm_iap_mine_industry_57
+NEW crm.iap.lead.industry: crm_iap_mine.crm_iap_mine_industry_58
+NEW crm.iap.lead.industry: crm_iap_mine.crm_iap_mine_industry_59
+NEW crm.iap.lead.industry: crm_iap_mine.crm_iap_mine_industry_60
+NEW crm.iap.lead.industry: crm_iap_mine.crm_iap_mine_industry_61
+NEW crm.iap.lead.industry: crm_iap_mine.crm_iap_mine_industry_62
+NEW crm.iap.lead.industry: crm_iap_mine.crm_iap_mine_industry_63
+NEW crm.iap.lead.industry: crm_iap_mine.crm_iap_mine_industry_64
+NEW crm.iap.lead.industry: crm_iap_mine.crm_iap_mine_industry_65
+NEW crm.iap.lead.industry: crm_iap_mine.crm_iap_mine_industry_67
+NEW crm.iap.lead.industry: crm_iap_mine.crm_iap_mine_industry_70
+NEW crm.iap.lead.industry: crm_iap_mine.crm_iap_mine_industry_72
+NEW crm.iap.lead.industry: crm_iap_mine.crm_iap_mine_industry_73
+NEW crm.iap.lead.industry: crm_iap_mine.crm_iap_mine_industry_75
+NEW crm.iap.lead.industry: crm_iap_mine.crm_iap_mine_industry_76
+NEW crm.iap.lead.industry: crm_iap_mine.crm_iap_mine_industry_78
+NEW crm.iap.lead.industry: crm_iap_mine.crm_iap_mine_industry_79
+NEW crm.iap.lead.industry: crm_iap_mine.crm_iap_mine_industry_80
+NEW crm.iap.lead.industry: crm_iap_mine.crm_iap_mine_industry_81
+NEW crm.iap.lead.industry: crm_iap_mine.crm_iap_mine_industry_82
+NEW crm.iap.lead.industry: crm_iap_mine.crm_iap_mine_industry_83
+NEW crm.iap.lead.industry: crm_iap_mine.crm_iap_mine_industry_84
+NEW crm.iap.lead.industry: crm_iap_mine.crm_iap_mine_industry_87
+NEW crm.iap.lead.industry: crm_iap_mine.crm_iap_mine_industry_88
+NEW crm.iap.lead.industry: crm_iap_mine.crm_iap_mine_industry_89
+NEW crm.iap.lead.industry: crm_iap_mine.crm_iap_mine_industry_91
+NEW crm.iap.lead.industry: crm_iap_mine.crm_iap_mine_industry_92
+NEW crm.iap.lead.industry: crm_iap_mine.crm_iap_mine_industry_93
+NEW crm.iap.lead.industry: crm_iap_mine.crm_iap_mine_industry_94
+NEW crm.iap.lead.industry: crm_iap_mine.crm_iap_mine_industry_95
+NEW crm.iap.lead.industry: crm_iap_mine.crm_iap_mine_industry_96
+NEW crm.iap.lead.industry: crm_iap_mine.crm_iap_mine_industry_97
+NEW crm.iap.lead.industry: crm_iap_mine.crm_iap_mine_industry_99
+DEL crm.iap.lead.industry: crm_iap_mine.crm_iap_mine_industry_114
+DEL crm.iap.lead.industry: crm_iap_mine.crm_iap_mine_industry_136
+DEL crm.iap.lead.industry: crm_iap_mine.crm_iap_mine_industry_138_156
+DEL crm.iap.lead.industry: crm_iap_mine.crm_iap_mine_industry_148
+DEL crm.iap.lead.industry: crm_iap_mine.crm_iap_mine_industry_149
+DEL crm.iap.lead.industry: crm_iap_mine.crm_iap_mine_industry_150_151
+DEL crm.iap.lead.industry: crm_iap_mine.crm_iap_mine_industry_152
+DEL crm.iap.lead.industry: crm_iap_mine.crm_iap_mine_industry_153_154
+DEL crm.iap.lead.industry: crm_iap_mine.crm_iap_mine_industry_158_159
+DEL crm.iap.lead.industry: crm_iap_mine.crm_iap_mine_industry_160
+DEL crm.iap.lead.industry: crm_iap_mine.crm_iap_mine_industry_161
+DEL crm.iap.lead.industry: crm_iap_mine.crm_iap_mine_industry_162
+DEL crm.iap.lead.industry: crm_iap_mine.crm_iap_mine_industry_163
+DEL crm.iap.lead.industry: crm_iap_mine.crm_iap_mine_industry_165
+DEL crm.iap.lead.industry: crm_iap_mine.crm_iap_mine_industry_166
+DEL crm.iap.lead.industry: crm_iap_mine.crm_iap_mine_industry_167
+DEL crm.iap.lead.industry: crm_iap_mine.crm_iap_mine_industry_168
+DEL crm.iap.lead.industry: crm_iap_mine.crm_iap_mine_industry_238
+DEL crm.iap.lead.industry: crm_iap_mine.crm_iap_mine_industry_239
+DEL crm.iap.lead.industry: crm_iap_mine.crm_iap_mine_industry_30_155
+DEL crm.iap.lead.industry: crm_iap_mine.crm_iap_mine_industry_69_157
+NEW crm.iap.lead.industry.division: crm_iap_mine.crm_iap_mine_division_a
+NEW crm.iap.lead.industry.division: crm_iap_mine.crm_iap_mine_division_b
+NEW crm.iap.lead.industry.division: crm_iap_mine.crm_iap_mine_division_c
+NEW crm.iap.lead.industry.division: crm_iap_mine.crm_iap_mine_division_d
+NEW crm.iap.lead.industry.division: crm_iap_mine.crm_iap_mine_division_e
+NEW crm.iap.lead.industry.division: crm_iap_mine.crm_iap_mine_division_f
+NEW crm.iap.lead.industry.division: crm_iap_mine.crm_iap_mine_division_g
+NEW crm.iap.lead.industry.division: crm_iap_mine.crm_iap_mine_division_h
+NEW crm.iap.lead.industry.division: crm_iap_mine.crm_iap_mine_division_i
+NEW crm.iap.lead.industry.division: crm_iap_mine.crm_iap_mine_division_j
+NEW ir.access: crm_iap_mine.access_crm_iap_lead_industry
+NEW ir.access: crm_iap_mine.access_crm_iap_lead_industry_division
+NEW ir.access: crm_iap_mine.access_crm_iap_lead_mining_request
+NEW ir.access: crm_iap_mine.access_crm_iap_lead_role
+NEW ir.access: crm_iap_mine.access_crm_iap_lead_seniority
+DEL ir.model.access: crm_iap_mine.access_crm_iap_lead_helpers
+DEL ir.model.access: crm_iap_mine.access_crm_iap_lead_industry
+DEL ir.model.access: crm_iap_mine.access_crm_iap_lead_mining_request
+DEL ir.model.access: crm_iap_mine.access_crm_iap_lead_role
+DEL ir.model.access: crm_iap_mine.access_crm_iap_lead_seniority
+NEW ir.model.constraint: crm_iap_mine.constraint_crm_iap_lead_industry_division_name_uniq
+ir.model.constraint: crm_iap_mine.constraint_crm_iap_lead_industry_name_uniq (changed definition: is now 'False' ('unique (name)'))
+ir.model.constraint: crm_iap_mine.constraint_crm_iap_lead_role_name_uniq (changed definition: is now 'False' ('unique (name)'))
+ir.model.constraint: crm_iap_mine.constraint_crm_iap_lead_seniority_name_uniq (changed definition: is now 'False' ('unique (name)'))
+ir.sequence: crm_iap_mine.ir_sequence_crm_iap_mine (noupdate switched)
+NEW ir.ui.view: crm_iap_mine.crm_iap_lead_industry_view_search
+NEW ir.ui.view: crm_iap_mine.crm_iap_lead_industry_view_tree
+DEL ir.ui.view: crm_iap_mine.crm_case_kanban_view_leads
+DEL ir.ui.view: crm_iap_mine.crm_lead_view_tree_lead
+DEL ir.ui.view: crm_iap_mine.crm_lead_view_tree_opportunity
+DEL ir.ui.view: crm_iap_mine.view_crm_lead_kanban
+mail.template: crm_iap_mine.lead_generation_no_credits (noupdate switched)
diff --git a/openupgrade_scripts/scripts/delivery/20.0.1.0/noupdate_changes.xml b/openupgrade_scripts/scripts/delivery/20.0.1.0/noupdate_changes.xml
new file mode 100644
index 00000000000..eb7fcd438cd
--- /dev/null
+++ b/openupgrade_scripts/scripts/delivery/20.0.1.0/noupdate_changes.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+ True
+ 30
+
+
diff --git a/openupgrade_scripts/scripts/delivery/20.0.1.0/post-migration.py b/openupgrade_scripts/scripts/delivery/20.0.1.0/post-migration.py
new file mode 100644
index 00000000000..db9457422b7
--- /dev/null
+++ b/openupgrade_scripts/scripts/delivery/20.0.1.0/post-migration.py
@@ -0,0 +1,9 @@
+# Copyright 2026 Don Kendall
+# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl).
+
+from openupgradelib import openupgrade
+
+
+@openupgrade.migrate()
+def migrate(env, version):
+ openupgrade.load_data(env, "delivery", "20.0.1.0/noupdate_changes.xml")
diff --git a/openupgrade_scripts/scripts/delivery/20.0.1.0/upgrade_analysis.txt b/openupgrade_scripts/scripts/delivery/20.0.1.0/upgrade_analysis.txt
new file mode 100644
index 00000000000..2ac854479e2
--- /dev/null
+++ b/openupgrade_scripts/scripts/delivery/20.0.1.0/upgrade_analysis.txt
@@ -0,0 +1,46 @@
+---Models in module 'delivery'---
+new model delivery.note.wizard [transient]
+new model delivery.note.wizard.line [transient]
+---Fields in module 'delivery'---
+delivery / payment.provider / custom_mode (False) : selection_keys added: [pay_on_invoice] (most likely nothing to do)
+delivery / res.partner / is_pickup_location (boolean) : DEL
+delivery / sale.order / pickup_location_data (json) : DEL
+---XML records in module 'delivery'---
+delivery.carrier: delivery.free_delivery_carrier (noupdate switched)
+NEW ir.access: delivery.access_choose_delivery_carrier
+NEW ir.access: delivery.access_delivery_carrier
+NEW ir.access: delivery.access_delivery_carrier_manager
+NEW ir.access: delivery.access_delivery_carrier_partner_manager
+NEW ir.access: delivery.access_delivery_note_line_user
+NEW ir.access: delivery.access_delivery_note_user
+NEW ir.access: delivery.access_delivery_price_rule
+NEW ir.access: delivery.access_delivery_price_rule_manager
+NEW ir.access: delivery.access_delivery_zip_prefix
+NEW ir.access: delivery.access_delivery_zip_prefix_sale_manager
+NEW ir.access: delivery.delivery_carrier_comp_rule
+NEW ir.actions.report: delivery.action_report_delivery_note
+DEL ir.model.access: delivery.access_choose_delivery_carrier
+DEL ir.model.access: delivery.access_delivery_carrier
+DEL ir.model.access: delivery.access_delivery_carrier_manager
+DEL ir.model.access: delivery.access_delivery_carrier_partner_manager
+DEL ir.model.access: delivery.access_delivery_carrier_system
+DEL ir.model.access: delivery.access_delivery_price_rule
+DEL ir.model.access: delivery.access_delivery_price_rule_manager
+DEL ir.model.access: delivery.access_delivery_price_rule_sale_manager
+DEL ir.model.access: delivery.access_delivery_zip_prefix
+DEL ir.model.access: delivery.access_delivery_zip_prefix_sale_manager
+ir.model.constraint: delivery.constraint_delivery_carrier_margin_not_under_100_percent (changed definition: is now 'False' ('CHECK (margin >= -1)'))
+ir.model.constraint: delivery.constraint_delivery_carrier_shipping_insurance_is_percentage (changed definition: is now 'False' ('CHECK(shipping_insurance >= 0 AND shipping_insurance <= 100)'))
+ir.model.constraint: delivery.constraint_delivery_zip_prefix_name_uniq (changed definition: is now 'False' ('unique (name)'))
+DEL ir.rule: delivery.delivery_carrier_comp_rule (noupdate)
+NEW ir.sequence: delivery.seq_delivery_note
+NEW ir.ui.view: delivery.delivery_note_form_view
+NEW ir.ui.view: delivery.delivery_note_list_view
+NEW ir.ui.view: delivery.report_delivery_note
+NEW ir.ui.view: delivery.state_header
+NEW ir.ui.view: delivery.view_delivery_carrier_so_list
+NEW mail.template: delivery.mail_template_data_delivery_note
+payment.method: delivery.payment_method_cash_on_delivery (noupdate switched)
+payment.provider: delivery.payment_provider_cod (noupdate switched)
+product.category: delivery.product_category_deliveries (noupdate switched)
+product.product: delivery.product_product_delivery (noupdate switched)
diff --git a/openupgrade_scripts/scripts/delivery/20.0.1.0/upgrade_analysis_work.txt b/openupgrade_scripts/scripts/delivery/20.0.1.0/upgrade_analysis_work.txt
new file mode 100644
index 00000000000..604cc7a65c8
--- /dev/null
+++ b/openupgrade_scripts/scripts/delivery/20.0.1.0/upgrade_analysis_work.txt
@@ -0,0 +1,58 @@
+---Models in module 'delivery'---
+new model delivery.note.wizard [transient]
+new model delivery.note.wizard.line [transient]
+# NOTHING TO DO: a transient model holds no persistent data
+---Fields in module 'delivery'---
+delivery / payment.provider / custom_mode (False) : selection_keys added: [pay_on_invoice] (most likely nothing to do)
+# NOTHING TO DO: keys were added, the existing values stay valid
+delivery / res.partner / is_pickup_location (boolean) : DEL
+delivery / sale.order / pickup_location_data (json) : DEL
+# NOTHING TO DO: the column is left in place for database_cleanup
+---XML records in module 'delivery'---
+delivery.carrier: delivery.free_delivery_carrier (noupdate switched)
+# NOTHING TO DO: only the noupdate flag changed, the definition is the same
+NEW ir.access: delivery.access_choose_delivery_carrier
+NEW ir.access: delivery.access_delivery_carrier
+NEW ir.access: delivery.access_delivery_carrier_manager
+NEW ir.access: delivery.access_delivery_carrier_partner_manager
+NEW ir.access: delivery.access_delivery_note_line_user
+NEW ir.access: delivery.access_delivery_note_user
+NEW ir.access: delivery.access_delivery_price_rule
+NEW ir.access: delivery.access_delivery_price_rule_manager
+NEW ir.access: delivery.access_delivery_zip_prefix
+NEW ir.access: delivery.access_delivery_zip_prefix_sale_manager
+NEW ir.access: delivery.delivery_carrier_comp_rule
+# NOTHING TO DO: base folds ir.model.access and ir.rule into ir.access, keeping the xml_ids
+NEW ir.actions.report: delivery.action_report_delivery_note
+# NOTHING TO DO: the record is not noupdate, so the module update creates it
+DEL ir.model.access: delivery.access_choose_delivery_carrier
+DEL ir.model.access: delivery.access_delivery_carrier
+DEL ir.model.access: delivery.access_delivery_carrier_manager
+DEL ir.model.access: delivery.access_delivery_carrier_partner_manager
+DEL ir.model.access: delivery.access_delivery_carrier_system
+DEL ir.model.access: delivery.access_delivery_price_rule
+DEL ir.model.access: delivery.access_delivery_price_rule_manager
+DEL ir.model.access: delivery.access_delivery_price_rule_sale_manager
+DEL ir.model.access: delivery.access_delivery_zip_prefix
+DEL ir.model.access: delivery.access_delivery_zip_prefix_sale_manager
+# NOTHING TO DO: base folds ir.model.access and ir.rule into ir.access, keeping the xml_ids
+ir.model.constraint: delivery.constraint_delivery_carrier_margin_not_under_100_percent (changed definition: is now 'False' ('CHECK (margin >= -1)'))
+ir.model.constraint: delivery.constraint_delivery_carrier_shipping_insurance_is_percentage (changed definition: is now 'False' ('CHECK(shipping_insurance >= 0 AND shipping_insurance <= 100)'))
+ir.model.constraint: delivery.constraint_delivery_zip_prefix_name_uniq (changed definition: is now 'False' ('unique (name)'))
+# NOTHING TO DO: the record is not noupdate, so the module update rewrites it
+DEL ir.rule: delivery.delivery_carrier_comp_rule (noupdate)
+# NOTHING TO DO: base folds ir.model.access and ir.rule into ir.access, keeping the xml_ids
+NEW ir.sequence: delivery.seq_delivery_note
+NEW ir.ui.view: delivery.delivery_note_form_view
+NEW ir.ui.view: delivery.delivery_note_list_view
+NEW ir.ui.view: delivery.report_delivery_note
+NEW ir.ui.view: delivery.state_header
+NEW ir.ui.view: delivery.view_delivery_carrier_so_list
+NEW mail.template: delivery.mail_template_data_delivery_note
+# NOTHING TO DO: the record is not noupdate, so the module update creates it
+payment.method: delivery.payment_method_cash_on_delivery (noupdate switched)
+payment.provider: delivery.payment_provider_cod (noupdate switched)
+# DONE: post-migration: load noupdate_changes.xml
+product.category: delivery.product_category_deliveries (noupdate switched)
+product.product: delivery.product_product_delivery (noupdate switched)
+# NOTHING TO DO: only the noupdate flag changed, the definition is the same
diff --git a/openupgrade_scripts/scripts/digest/20.0.1.1/noupdate_changes.xml b/openupgrade_scripts/scripts/digest/20.0.1.1/noupdate_changes.xml
new file mode 100644
index 00000000000..4c1ffa49a18
--- /dev/null
+++ b/openupgrade_scripts/scripts/digest/20.0.1.1/noupdate_changes.xml
@@ -0,0 +1,480 @@
+
+
+
+<!DOCTYPE html>
+
+
+
+
+
+
+
+
+
+
+
+ |
+
+ |
+
+
+
+
+
+
+
+
+
+ |
+
+
+
+ |
+
+
+
+
+ |
+
+
+
+
+ |
+
+
+
+ |
+
+
+ |
+
+
+ |
+
+ |
+
+
+
+
+ |
+
+ |
+
+
+
+
+
+
+ |
+
+
+
+
+ |
+
+ |
+
+
+
+
+
+
+
+ |
+
+
+
+
+
+
+
+ |
+ ⬆ %
+ |
+
+ ⬇ %
+ |
+
+
+
+
diff --git a/openupgrade_scripts/scripts/digest/20.0.1.1/post-migration.py b/openupgrade_scripts/scripts/digest/20.0.1.1/post-migration.py
new file mode 100644
index 00000000000..21d329e7853
--- /dev/null
+++ b/openupgrade_scripts/scripts/digest/20.0.1.1/post-migration.py
@@ -0,0 +1,9 @@
+# Copyright 2026 Don Kendall
+# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl).
+
+from openupgradelib import openupgrade
+
+
+@openupgrade.migrate()
+def migrate(env, version):
+ openupgrade.load_data(env, "digest", "20.0.1.1/noupdate_changes.xml")
diff --git a/openupgrade_scripts/scripts/digest/20.0.1.1/upgrade_analysis.txt b/openupgrade_scripts/scripts/digest/20.0.1.1/upgrade_analysis.txt
new file mode 100644
index 00000000000..020b06a1eb2
--- /dev/null
+++ b/openupgrade_scripts/scripts/digest/20.0.1.1/upgrade_analysis.txt
@@ -0,0 +1,22 @@
+---Models in module 'digest'---
+new model digest.test [transient]
+---Fields in module 'digest'---
+digest / res.users / digest_ids (many2many) : NEW relation: digest.digest
+---XML records in module 'digest'---
+digest.digest: digest.digest_digest_default (noupdate switched)
+NEW ir.access: digest.access_digest_digest_system
+NEW ir.access: digest.access_digest_digest_user
+NEW ir.access: digest.access_digest_test
+NEW ir.access: digest.access_digest_tip_system
+NEW ir.access: digest.access_digest_tip_user
+ir.config_parameter: digest.default_digest (noupdate switched)
+ir.config_parameter: digest.default_emails_digest (noupdate switched)
+DEL ir.model.access: digest.access_digest_digest_system
+DEL ir.model.access: digest.access_digest_digest_user
+DEL ir.model.access: digest.access_digest_tip_system
+DEL ir.model.access: digest.access_digest_tip_user
+ir.ui.view: digest.digest_mail_layout (noupdate switched)
+ir.ui.view: digest.digest_mail_main (noupdate switched)
+ir.ui.view: digest.digest_section_mobile (noupdate switched)
+NEW ir.ui.view: digest.digest_test_view_form
+ir.ui.view: digest.digest_tool_kpi (noupdate switched)
diff --git a/openupgrade_scripts/scripts/digest/20.0.1.1/upgrade_analysis_work.txt b/openupgrade_scripts/scripts/digest/20.0.1.1/upgrade_analysis_work.txt
new file mode 100644
index 00000000000..f151a48245c
--- /dev/null
+++ b/openupgrade_scripts/scripts/digest/20.0.1.1/upgrade_analysis_work.txt
@@ -0,0 +1,31 @@
+---Models in module 'digest'---
+new model digest.test [transient]
+# NOTHING TO DO: a transient model holds no persistent data
+---Fields in module 'digest'---
+digest / res.users / digest_ids (many2many) : NEW relation: digest.digest
+# NOTHING TO DO: empty is the right value for existing records
+---XML records in module 'digest'---
+digest.digest: digest.digest_digest_default (noupdate switched)
+# NOTHING TO DO: only the noupdate flag changed, the definition is the same
+NEW ir.access: digest.access_digest_digest_system
+NEW ir.access: digest.access_digest_digest_user
+NEW ir.access: digest.access_digest_test
+NEW ir.access: digest.access_digest_tip_system
+NEW ir.access: digest.access_digest_tip_user
+# NOTHING TO DO: base folds ir.model.access and ir.rule into ir.access, keeping the xml_ids
+ir.config_parameter: digest.default_digest (noupdate switched)
+ir.config_parameter: digest.default_emails_digest (noupdate switched)
+# NOTHING TO DO: only the noupdate flag changed, the definition is the same
+DEL ir.model.access: digest.access_digest_digest_system
+DEL ir.model.access: digest.access_digest_digest_user
+DEL ir.model.access: digest.access_digest_tip_system
+DEL ir.model.access: digest.access_digest_tip_user
+# NOTHING TO DO: base folds ir.model.access and ir.rule into ir.access, keeping the xml_ids
+ir.ui.view: digest.digest_mail_layout (noupdate switched)
+ir.ui.view: digest.digest_mail_main (noupdate switched)
+ir.ui.view: digest.digest_section_mobile (noupdate switched)
+# DONE: post-migration: load noupdate_changes.xml
+NEW ir.ui.view: digest.digest_test_view_form
+# NOTHING TO DO: the record is not noupdate, so the module update creates it
+ir.ui.view: digest.digest_tool_kpi (noupdate switched)
+# DONE: post-migration: load noupdate_changes.xml
diff --git a/openupgrade_scripts/scripts/event/20.0.1.9/noupdate_changes.xml b/openupgrade_scripts/scripts/event/20.0.1.9/noupdate_changes.xml
new file mode 100644
index 00000000000..baa37dc3eb2
--- /dev/null
+++ b/openupgrade_scripts/scripts/event/20.0.1.9/noupdate_changes.xml
@@ -0,0 +1,9 @@
+
+
+
+ True
+
+
+ mail.mail_notification_light
+
+
diff --git a/openupgrade_scripts/scripts/event/20.0.1.9/post-migration.py b/openupgrade_scripts/scripts/event/20.0.1.9/post-migration.py
new file mode 100644
index 00000000000..3c023a1e564
--- /dev/null
+++ b/openupgrade_scripts/scripts/event/20.0.1.9/post-migration.py
@@ -0,0 +1,9 @@
+# Copyright 2026 Don Kendall
+# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl).
+
+from openupgradelib import openupgrade
+
+
+@openupgrade.migrate()
+def migrate(env, version):
+ openupgrade.load_data(env, "event", "20.0.1.9/noupdate_changes.xml")
diff --git a/openupgrade_scripts/scripts/event/20.0.1.9/upgrade_analysis.txt b/openupgrade_scripts/scripts/event/20.0.1.9/upgrade_analysis.txt
new file mode 100644
index 00000000000..118dc705dcb
--- /dev/null
+++ b/openupgrade_scripts/scripts/event/20.0.1.9/upgrade_analysis.txt
@@ -0,0 +1,110 @@
+---Models in module 'event'---
+---Fields in module 'event'---
+event / digest.digest / kpi_nbr_of_registrations (boolean): NEW
+event / event.event / website_message_ids (one2many): DEL relation: mail.message
+event / event.event.ticket / entry_limit (integer) : NEW hasdefault: default
+event / event.registration / event_begin_date (datetime) : is now stored
+event / event.registration / main_registration_id (many2one): NEW relation: event.registration
+event / event.registration / website_message_ids (one2many): DEL relation: mail.message
+---XML records in module 'event'---
+event.question: event.event_question_email (noupdate switched)
+event.question: event.event_question_name (noupdate switched)
+event.question: event.event_question_phone (noupdate switched)
+event.stage: event.event_stage_announced (noupdate switched)
+event.stage: event.event_stage_booked (noupdate switched)
+event.stage: event.event_stage_done (noupdate switched)
+event.stage: event.event_stage_new (noupdate switched)
+NEW ir.access: event.access_event_event_manager
+NEW ir.access: event.access_event_event_registration
+NEW ir.access: event.access_event_event_ticket_registration
+NEW ir.access: event.access_event_event_ticket_user
+NEW ir.access: event.access_event_event_user
+NEW ir.access: event.access_event_mail_registration
+NEW ir.access: event.access_event_mail_registration_manager
+NEW ir.access: event.access_event_mail_registration_registration
+NEW ir.access: event.access_event_mail_slot_manager
+NEW ir.access: event.access_event_mail_slot_registration
+NEW ir.access: event.access_event_mail_user
+NEW ir.access: event.access_event_question_answer_employee
+NEW ir.access: event.access_event_question_answer_registration
+NEW ir.access: event.access_event_question_user
+NEW ir.access: event.access_event_registration_answer
+NEW ir.access: event.access_event_registration_manager
+NEW ir.access: event.access_event_registration_registration
+NEW ir.access: event.access_event_slot_registration
+NEW ir.access: event.access_event_slot_user
+NEW ir.access: event.access_event_stage_manager
+NEW ir.access: event.access_event_stage_registration
+NEW ir.access: event.access_event_tag_category_registration
+NEW ir.access: event.access_event_tag_category_user
+NEW ir.access: event.access_event_tag_manager
+NEW ir.access: event.access_event_tag_registration
+NEW ir.access: event.access_event_tag_user
+NEW ir.access: event.access_event_type_mail_manager
+NEW ir.access: event.access_event_type_mail_registration
+NEW ir.access: event.access_event_type_manager
+NEW ir.access: event.access_event_type_registration
+NEW ir.access: event.access_event_type_ticket_manager
+NEW ir.access: event.access_event_type_ticket_registration
+NEW ir.access: event.event_event_company_rule
+NEW ir.access: event.event_question_answer_registration_desk_rule
+NEW ir.access: event.event_question_user_rule
+NEW ir.access: event.event_registration_company_rule
+NEW ir.access: event.event_registration_portal_rule
+NEW ir.access: event.event_registration_user_portal_rule
+NEW ir.access: event.ir_rule_event_event_ticket_company
+ir.actions.act_window: event.act_event_registration_from_event (deleted domain)
+ir.actions.act_window: event.action_registration (deleted domain)
+ir.actions.act_window: event.event_registration_action_kanban (deleted domain)
+ir.actions.act_window: event.event_registration_action_stats_from_event (deleted domain)
+ir.actions.act_window: event.event_slot_action_from_event (deleted domain)
+ir.cron: event.event_mail_scheduler (noupdate switched)
+DEL ir.model.access: event.access_event_event_manager
+DEL ir.model.access: event.access_event_event_registration
+DEL ir.model.access: event.access_event_event_ticket
+DEL ir.model.access: event.access_event_event_ticket_registration
+DEL ir.model.access: event.access_event_event_ticket_user
+DEL ir.model.access: event.access_event_event_user
+DEL ir.model.access: event.access_event_mail_registration
+DEL ir.model.access: event.access_event_mail_registration_manager
+DEL ir.model.access: event.access_event_mail_registration_registration
+DEL ir.model.access: event.access_event_mail_slot_manager
+DEL ir.model.access: event.access_event_mail_slot_registration
+DEL ir.model.access: event.access_event_mail_user
+DEL ir.model.access: event.access_event_question_answer_employee
+DEL ir.model.access: event.access_event_question_answer_registration
+DEL ir.model.access: event.access_event_question_answer_user
+DEL ir.model.access: event.access_event_question_manager
+DEL ir.model.access: event.access_event_question_user
+DEL ir.model.access: event.access_event_registration
+DEL ir.model.access: event.access_event_registration_answer
+DEL ir.model.access: event.access_event_registration_manager
+DEL ir.model.access: event.access_event_registration_registration
+DEL ir.model.access: event.access_event_slot_registration
+DEL ir.model.access: event.access_event_slot_user
+DEL ir.model.access: event.access_event_stage_manager
+DEL ir.model.access: event.access_event_stage_registration
+DEL ir.model.access: event.access_event_tag
+DEL ir.model.access: event.access_event_tag_category_registration
+DEL ir.model.access: event.access_event_tag_category_user
+DEL ir.model.access: event.access_event_tag_manager
+DEL ir.model.access: event.access_event_tag_registration
+DEL ir.model.access: event.access_event_tag_user
+DEL ir.model.access: event.access_event_type_mail_manager
+DEL ir.model.access: event.access_event_type_mail_registration
+DEL ir.model.access: event.access_event_type_manager
+DEL ir.model.access: event.access_event_type_registration
+DEL ir.model.access: event.access_event_type_ticket_manager
+DEL ir.model.access: event.access_event_type_ticket_registration
+ir.model.constraint: event.constraint_event_question_check_default_question_is_reusable (changed definition: is now 'False' ('CHECK(is_default IS DISTINCT FROM TRUE OR is_reusable IS TRUE)'))
+ir.model.constraint: event.constraint_event_registration_answer_value_check (changed definition: is now 'False' ('CHECK(value_answer_id IS NOT NULL OR COALESCE(value_text_box, '') <> '')'))
+ir.model.constraint: event.constraint_event_registration_barcode_event_uniq (changed definition: is now 'False' ('unique(barcode)'))
+DEL ir.rule: event.event_event_company_rule (noupdate)
+DEL ir.rule: event.event_registration_company_rule (noupdate)
+DEL ir.rule: event.ir_rule_event_event_ticket_company (noupdate)
+NEW ir.ui.view: event.digest_digest_view_form
+NEW ir.ui.view: event.portal_my_events
+mail.template: event.event_registration_mail_template_badge (noupdate switched)
+mail.template: event.event_reminder (noupdate switched)
+mail.template: event.event_subscription (noupdate switched)
+NEW portal.entry: event.portal_events_client
diff --git a/openupgrade_scripts/scripts/event_sms/20.0.1.0/noupdate_changes.xml b/openupgrade_scripts/scripts/event_sms/20.0.1.0/noupdate_changes.xml
new file mode 100644
index 00000000000..327917e8548
--- /dev/null
+++ b/openupgrade_scripts/scripts/event_sms/20.0.1.0/noupdate_changes.xml
@@ -0,0 +1,7 @@
+
+
+
+ Ready for "{{ object.event_id.name }}" {{ object.event_date_range }}?
+{{ 'It starts at %s' % format_time(time=object.event_begin_date, tz=object.event_id.date_tz, time_format='short', lang_code=object.partner_id.lang) + (', at %s' % object.event_id.contact_address_inline if object.event_id.contact_address_inline else '') + '.\nSee you there!' if object.event_id.contact_address_inline or 'website_published' not in object.event_id._fields else 'Join us on %s/event/%i!' % (object.get_base_url(), object.event_id.id) }}
+
+
diff --git a/openupgrade_scripts/scripts/event_sms/20.0.1.0/post-migration.py b/openupgrade_scripts/scripts/event_sms/20.0.1.0/post-migration.py
new file mode 100644
index 00000000000..fd0fb4d1cc6
--- /dev/null
+++ b/openupgrade_scripts/scripts/event_sms/20.0.1.0/post-migration.py
@@ -0,0 +1,15 @@
+# Copyright 2026 Don Kendall
+# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl).
+
+from openupgradelib import openupgrade
+
+
+@openupgrade.migrate()
+def migrate(env, version):
+ openupgrade.load_data(env, "event_sms", "20.0.1.0/noupdate_changes.xml")
+ openupgrade.delete_record_translations(
+ env.cr,
+ "event_sms",
+ ["sms_template_data_event_reminder"],
+ ["body"],
+ )
diff --git a/openupgrade_scripts/scripts/event_sms/20.0.1.0/upgrade_analysis.txt b/openupgrade_scripts/scripts/event_sms/20.0.1.0/upgrade_analysis.txt
new file mode 100644
index 00000000000..a9557b14d4c
--- /dev/null
+++ b/openupgrade_scripts/scripts/event_sms/20.0.1.0/upgrade_analysis.txt
@@ -0,0 +1,9 @@
+---Models in module 'event_sms'---
+---Fields in module 'event_sms'---
+---XML records in module 'event_sms'---
+NEW ir.access: event_sms.access_sms_template_event_manager
+NEW ir.access: event_sms.ir_rule_sms_template_event_manager
+DEL ir.model.access: event_sms.access_sms_template_event_manager
+DEL ir.rule: event_sms.ir_rule_sms_template_event_manager (noupdate)
+sms.template: event_sms.sms_template_data_event_registration (noupdate switched)
+sms.template: event_sms.sms_template_data_event_reminder (noupdate switched)
diff --git a/openupgrade_scripts/scripts/event_sms/20.0.1.0/upgrade_analysis_work.txt b/openupgrade_scripts/scripts/event_sms/20.0.1.0/upgrade_analysis_work.txt
new file mode 100644
index 00000000000..690c136a813
--- /dev/null
+++ b/openupgrade_scripts/scripts/event_sms/20.0.1.0/upgrade_analysis_work.txt
@@ -0,0 +1,12 @@
+---Models in module 'event_sms'---
+---Fields in module 'event_sms'---
+---XML records in module 'event_sms'---
+NEW ir.access: event_sms.access_sms_template_event_manager
+NEW ir.access: event_sms.ir_rule_sms_template_event_manager
+DEL ir.model.access: event_sms.access_sms_template_event_manager
+DEL ir.rule: event_sms.ir_rule_sms_template_event_manager (noupdate)
+# NOTHING TO DO: base folds ir.model.access and ir.rule into ir.access, keeping the xml_ids
+sms.template: event_sms.sms_template_data_event_registration (noupdate switched)
+# NOTHING TO DO: only the noupdate flag changed, the definition is the same
+sms.template: event_sms.sms_template_data_event_reminder (noupdate switched)
+# DONE: post-migration: load noupdate_changes.xml
diff --git a/openupgrade_scripts/scripts/gamification/20.0.1.0/noupdate_changes.xml b/openupgrade_scripts/scripts/gamification/20.0.1.0/noupdate_changes.xml
new file mode 100644
index 00000000000..f8b1251de47
--- /dev/null
+++ b/openupgrade_scripts/scripts/gamification/20.0.1.0/noupdate_changes.xml
@@ -0,0 +1,49 @@
+
+
+
+
+
+ Hi ,
+
+ You've just been awarded the badge
+ by .
+
+
+
+
+
+
+ |
+
+
+ |
+
+
+
+
+
+
+
+ Thank you for your contributions, and keep shining!
+
+
+
+
+
+ mail.mail_notification_layout
+
+
+ mail.mail_notification_light
+
+
+ mail.mail_notification_light
+
+
+ mail.mail_notification_light
+
+
diff --git a/openupgrade_scripts/scripts/gamification/20.0.1.0/post-migration.py b/openupgrade_scripts/scripts/gamification/20.0.1.0/post-migration.py
new file mode 100644
index 00000000000..7bf3cd44778
--- /dev/null
+++ b/openupgrade_scripts/scripts/gamification/20.0.1.0/post-migration.py
@@ -0,0 +1,15 @@
+# Copyright 2026 Don Kendall
+# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl).
+
+from openupgradelib import openupgrade
+
+
+@openupgrade.migrate()
+def migrate(env, version):
+ openupgrade.load_data(env, "gamification", "20.0.1.0/noupdate_changes.xml")
+ openupgrade.delete_record_translations(
+ env.cr,
+ "gamification",
+ ["email_template_badge_received"],
+ ["body_html"],
+ )
diff --git a/openupgrade_scripts/scripts/gamification/20.0.1.0/upgrade_analysis.txt b/openupgrade_scripts/scripts/gamification/20.0.1.0/upgrade_analysis.txt
new file mode 100644
index 00000000000..026ef9f9b44
--- /dev/null
+++ b/openupgrade_scripts/scripts/gamification/20.0.1.0/upgrade_analysis.txt
@@ -0,0 +1,82 @@
+---Models in module 'gamification'---
+---Fields in module 'gamification'---
+---XML records in module 'gamification'---
+gamification.badge: gamification.badge_good_job (noupdate switched)
+gamification.badge: gamification.badge_hidden (noupdate switched)
+gamification.badge: gamification.badge_idea (noupdate switched)
+gamification.badge: gamification.badge_problem_solver (noupdate switched)
+gamification.challenge: gamification.challenge_base_configure (noupdate switched)
+gamification.challenge: gamification.challenge_base_discover (noupdate switched)
+gamification.challenge.line: gamification.line_base_admin1 (noupdate switched)
+gamification.challenge.line: gamification.line_base_admin2 (noupdate switched)
+gamification.challenge.line: gamification.line_base_admin3 (noupdate switched)
+gamification.challenge.line: gamification.line_base_discover1 (noupdate switched)
+gamification.goal.definition: gamification.definition_base_company_data (noupdate switched)
+gamification.goal.definition: gamification.definition_base_company_logo (noupdate switched)
+gamification.goal.definition: gamification.definition_base_invite (noupdate switched)
+gamification.goal.definition: gamification.definition_base_timezone (noupdate switched)
+gamification.karma.rank: gamification.rank_bachelor (noupdate switched)
+gamification.karma.rank: gamification.rank_doctor (noupdate switched)
+gamification.karma.rank: gamification.rank_master (noupdate switched)
+gamification.karma.rank: gamification.rank_newbie (noupdate switched)
+gamification.karma.rank: gamification.rank_student (noupdate switched)
+gamification.karma.tracking: gamification.karma_tracking_user_admin (noupdate switched)
+gamification.karma.tracking: gamification.karma_tracking_user_root (noupdate switched)
+NEW ir.access: gamification.access_gamification_badge_user_wizard
+NEW ir.access: gamification.access_gamification_goal_wizard
+NEW ir.access: gamification.badge_employee
+NEW ir.access: gamification.badge_manager
+NEW ir.access: gamification.challenge_employee
+NEW ir.access: gamification.challenge_line_employee
+NEW ir.access: gamification.challenge_line_manager
+NEW ir.access: gamification.challenge_manager
+NEW ir.access: gamification.gamification_badge_user_access
+NEW ir.access: gamification.gamification_badge_user_access_1
+NEW ir.access: gamification.gamification_karma_rank_access_employee
+NEW ir.access: gamification.gamification_karma_rank_access_user_manager
+NEW ir.access: gamification.gamification_karma_tracking_access_user_manager
+NEW ir.access: gamification.goal_definition_employee
+NEW ir.access: gamification.goal_definition_manager
+NEW ir.access: gamification.goal_gamification_manager_visibility
+NEW ir.access: gamification.goal_global_multicompany
+NEW ir.access: gamification.goal_manager
+NEW ir.access: gamification.goal_user_visibility
+ir.actions.act_window: gamification.action_current_rank_users (deleted domain)
+ir.cron: gamification.ir_cron_check_challenge (noupdate switched)
+ir.cron: gamification.ir_cron_consolidate (noupdate switched)
+DEL ir.model.access: gamification.access_gamification_badge_user_wizard
+DEL ir.model.access: gamification.access_gamification_goal_wizard
+DEL ir.model.access: gamification.badge_employee
+DEL ir.model.access: gamification.badge_manager
+DEL ir.model.access: gamification.badge_portal
+DEL ir.model.access: gamification.badge_public
+DEL ir.model.access: gamification.badge_user_employee
+DEL ir.model.access: gamification.badge_user_manager
+DEL ir.model.access: gamification.badge_user_portal
+DEL ir.model.access: gamification.badge_user_public
+DEL ir.model.access: gamification.challenge_employee
+DEL ir.model.access: gamification.challenge_line_employee
+DEL ir.model.access: gamification.challenge_line_manager
+DEL ir.model.access: gamification.challenge_line_portal
+DEL ir.model.access: gamification.challenge_manager
+DEL ir.model.access: gamification.challenge_portal
+DEL ir.model.access: gamification.gamification_karma_rank_access_employee
+DEL ir.model.access: gamification.gamification_karma_rank_access_portal
+DEL ir.model.access: gamification.gamification_karma_rank_access_public
+DEL ir.model.access: gamification.gamification_karma_rank_access_user_manager
+DEL ir.model.access: gamification.gamification_karma_tracking_access_all
+DEL ir.model.access: gamification.gamification_karma_tracking_access_user_manager
+DEL ir.model.access: gamification.goal_definition_employee
+DEL ir.model.access: gamification.goal_definition_manager
+DEL ir.model.access: gamification.goal_definition_portal
+DEL ir.model.access: gamification.goal_employee
+DEL ir.model.access: gamification.goal_manager
+DEL ir.model.access: gamification.goal_portal
+ir.model.constraint: gamification.constraint_gamification_karma_rank_karma_min_check (changed definition: is now 'False' ('CHECK( karma_min > 0 )'))
+DEL ir.rule: gamification.goal_gamification_manager_visibility (noupdate)
+DEL ir.rule: gamification.goal_global_multicompany (noupdate)
+DEL ir.rule: gamification.goal_user_visibility (noupdate)
+mail.template: gamification.email_template_badge_received (noupdate switched)
+mail.template: gamification.email_template_goal_reminder (noupdate switched)
+mail.template: gamification.mail_template_data_new_rank_reached (noupdate switched)
+mail.template: gamification.simple_report_template (noupdate switched)
diff --git a/openupgrade_scripts/scripts/gamification/20.0.1.0/upgrade_analysis_work.txt b/openupgrade_scripts/scripts/gamification/20.0.1.0/upgrade_analysis_work.txt
new file mode 100644
index 00000000000..992fa2530a2
--- /dev/null
+++ b/openupgrade_scripts/scripts/gamification/20.0.1.0/upgrade_analysis_work.txt
@@ -0,0 +1,90 @@
+---Models in module 'gamification'---
+---Fields in module 'gamification'---
+---XML records in module 'gamification'---
+gamification.badge: gamification.badge_good_job (noupdate switched)
+gamification.badge: gamification.badge_hidden (noupdate switched)
+gamification.badge: gamification.badge_idea (noupdate switched)
+gamification.badge: gamification.badge_problem_solver (noupdate switched)
+gamification.challenge: gamification.challenge_base_configure (noupdate switched)
+gamification.challenge: gamification.challenge_base_discover (noupdate switched)
+gamification.challenge.line: gamification.line_base_admin1 (noupdate switched)
+gamification.challenge.line: gamification.line_base_admin2 (noupdate switched)
+gamification.challenge.line: gamification.line_base_admin3 (noupdate switched)
+gamification.challenge.line: gamification.line_base_discover1 (noupdate switched)
+gamification.goal.definition: gamification.definition_base_company_data (noupdate switched)
+gamification.goal.definition: gamification.definition_base_company_logo (noupdate switched)
+gamification.goal.definition: gamification.definition_base_invite (noupdate switched)
+gamification.goal.definition: gamification.definition_base_timezone (noupdate switched)
+gamification.karma.rank: gamification.rank_bachelor (noupdate switched)
+gamification.karma.rank: gamification.rank_doctor (noupdate switched)
+gamification.karma.rank: gamification.rank_master (noupdate switched)
+gamification.karma.rank: gamification.rank_newbie (noupdate switched)
+gamification.karma.rank: gamification.rank_student (noupdate switched)
+gamification.karma.tracking: gamification.karma_tracking_user_admin (noupdate switched)
+gamification.karma.tracking: gamification.karma_tracking_user_root (noupdate switched)
+# NOTHING TO DO: only the noupdate flag changed, the definition is the same
+NEW ir.access: gamification.access_gamification_badge_user_wizard
+NEW ir.access: gamification.access_gamification_goal_wizard
+NEW ir.access: gamification.badge_employee
+NEW ir.access: gamification.badge_manager
+NEW ir.access: gamification.challenge_employee
+NEW ir.access: gamification.challenge_line_employee
+NEW ir.access: gamification.challenge_line_manager
+NEW ir.access: gamification.challenge_manager
+NEW ir.access: gamification.gamification_badge_user_access
+NEW ir.access: gamification.gamification_badge_user_access_1
+NEW ir.access: gamification.gamification_karma_rank_access_employee
+NEW ir.access: gamification.gamification_karma_rank_access_user_manager
+NEW ir.access: gamification.gamification_karma_tracking_access_user_manager
+NEW ir.access: gamification.goal_definition_employee
+NEW ir.access: gamification.goal_definition_manager
+NEW ir.access: gamification.goal_gamification_manager_visibility
+NEW ir.access: gamification.goal_global_multicompany
+NEW ir.access: gamification.goal_manager
+NEW ir.access: gamification.goal_user_visibility
+# NOTHING TO DO: base folds ir.model.access and ir.rule into ir.access, keeping the xml_ids
+ir.actions.act_window: gamification.action_current_rank_users (deleted domain)
+# NOTHING TO DO: the record is not noupdate, so the module update rewrites the domain
+ir.cron: gamification.ir_cron_check_challenge (noupdate switched)
+ir.cron: gamification.ir_cron_consolidate (noupdate switched)
+# NOTHING TO DO: only the noupdate flag changed, the definition is the same
+DEL ir.model.access: gamification.access_gamification_badge_user_wizard
+DEL ir.model.access: gamification.access_gamification_goal_wizard
+DEL ir.model.access: gamification.badge_employee
+DEL ir.model.access: gamification.badge_manager
+DEL ir.model.access: gamification.badge_portal
+DEL ir.model.access: gamification.badge_public
+DEL ir.model.access: gamification.badge_user_employee
+DEL ir.model.access: gamification.badge_user_manager
+DEL ir.model.access: gamification.badge_user_portal
+DEL ir.model.access: gamification.badge_user_public
+DEL ir.model.access: gamification.challenge_employee
+DEL ir.model.access: gamification.challenge_line_employee
+DEL ir.model.access: gamification.challenge_line_manager
+DEL ir.model.access: gamification.challenge_line_portal
+DEL ir.model.access: gamification.challenge_manager
+DEL ir.model.access: gamification.challenge_portal
+DEL ir.model.access: gamification.gamification_karma_rank_access_employee
+DEL ir.model.access: gamification.gamification_karma_rank_access_portal
+DEL ir.model.access: gamification.gamification_karma_rank_access_public
+DEL ir.model.access: gamification.gamification_karma_rank_access_user_manager
+DEL ir.model.access: gamification.gamification_karma_tracking_access_all
+DEL ir.model.access: gamification.gamification_karma_tracking_access_user_manager
+DEL ir.model.access: gamification.goal_definition_employee
+DEL ir.model.access: gamification.goal_definition_manager
+DEL ir.model.access: gamification.goal_definition_portal
+DEL ir.model.access: gamification.goal_employee
+DEL ir.model.access: gamification.goal_manager
+DEL ir.model.access: gamification.goal_portal
+# NOTHING TO DO: base folds ir.model.access and ir.rule into ir.access, keeping the xml_ids
+ir.model.constraint: gamification.constraint_gamification_karma_rank_karma_min_check (changed definition: is now 'False' ('CHECK( karma_min > 0 )'))
+# NOTHING TO DO: the record is not noupdate, so the module update rewrites it
+DEL ir.rule: gamification.goal_gamification_manager_visibility (noupdate)
+DEL ir.rule: gamification.goal_global_multicompany (noupdate)
+DEL ir.rule: gamification.goal_user_visibility (noupdate)
+# NOTHING TO DO: base folds ir.model.access and ir.rule into ir.access, keeping the xml_ids
+mail.template: gamification.email_template_badge_received (noupdate switched)
+mail.template: gamification.email_template_goal_reminder (noupdate switched)
+mail.template: gamification.mail_template_data_new_rank_reached (noupdate switched)
+mail.template: gamification.simple_report_template (noupdate switched)
+# DONE: post-migration: load noupdate_changes.xml
diff --git a/openupgrade_scripts/scripts/hr_expense/20.0.2.1/noupdate_changes.xml b/openupgrade_scripts/scripts/hr_expense/20.0.2.1/noupdate_changes.xml
new file mode 100644
index 00000000000..d681cedd4c9
--- /dev/null
+++ b/openupgrade_scripts/scripts/hr_expense/20.0.2.1/noupdate_changes.xml
@@ -0,0 +1,91 @@
+
+
+
+ Your Expense has been refused
+
+
+
+ Dear ,
+
+ Your expense has been successfully registered.
+
+ You can now submit it to the manager from the following link.
+
+
+
+ Product:
+
+
+
Product: not found
+
The first word of the email subject did not correspond to any product code. You'll have to set the product manually on the expense.
+
+
+ Price:
+
+
+
+ View Expense
+
+
+
+
+
+
+
+
+
+
+ Hi ,
+ A new expense is waiting for your approval in Odoo.
+ You currently have expenses pending approval, from:
+
+ Thanks,
+
+ --
+
+
+
+ |
+
+
+
+
+ Powered by Odoo.
+
+
+
+
+ attach_money
+
+
diff --git a/openupgrade_scripts/scripts/hr_expense/20.0.2.1/post-migration.py b/openupgrade_scripts/scripts/hr_expense/20.0.2.1/post-migration.py
new file mode 100644
index 00000000000..ef52590205e
--- /dev/null
+++ b/openupgrade_scripts/scripts/hr_expense/20.0.2.1/post-migration.py
@@ -0,0 +1,9 @@
+# Copyright 2026 Don Kendall
+# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl).
+
+from openupgradelib import openupgrade
+
+
+@openupgrade.migrate()
+def migrate(env, version):
+ openupgrade.load_data(env, "hr_expense", "20.0.2.1/noupdate_changes.xml")
diff --git a/openupgrade_scripts/scripts/hr_expense/20.0.2.1/upgrade_analysis.txt b/openupgrade_scripts/scripts/hr_expense/20.0.2.1/upgrade_analysis.txt
new file mode 100644
index 00000000000..b2149ffbb11
--- /dev/null
+++ b/openupgrade_scripts/scripts/hr_expense/20.0.2.1/upgrade_analysis.txt
@@ -0,0 +1,96 @@
+---Models in module 'hr_expense'---
+obsolete model hr.expense.post.wizard [transient]
+new model hr.expense.product.job.position.limit
+---Fields in module 'hr_expense'---
+hr_expense / account.move / existing_expense_ids (one2many): NEW relation: hr.expense
+hr_expense / hr.expense / existing_bill_id (many2one) : NEW relation: account.move
+hr_expense / hr.expense / has_existing_bill (boolean) : NEW
+hr_expense / hr.expense / journal_id (many2one) : not related anymore
+hr_expense / hr.expense / journal_id (many2one) : now a function
+hr_expense / hr.expense / last_notification_date (datetime): NEW
+hr_expense / hr.expense / website_message_ids (one2many): DEL relation: mail.message
+hr_expense / hr.expense.product.job.position.limit / job_ids (many2many) : NEW relation: hr.job
+hr_expense / hr.expense.product.job.position.limit / limit_amount (float) : NEW required
+hr_expense / hr.expense.product.job.position.limit / product_id (many2one) : NEW relation: product.product, required
+hr_expense / hr.expense.product.job.position.limit / sequence (integer) : NEW hasdefault: default
+hr_expense / product.product / expense_job_position_limit_ids (one2many): NEW relation: hr.expense.product.job.position.limit
+---XML records in module 'hr_expense'---
+NEW ir.access: hr_expense.access_account_journal_user
+NEW ir.access: hr_expense.access_hr_expense_approve_duplicate
+NEW ir.access: hr_expense.access_hr_expense_product_job_position_limit_manager
+NEW ir.access: hr_expense.access_hr_expense_product_job_position_limit_user
+NEW ir.access: hr_expense.access_hr_expense_refuse_wizard
+NEW ir.access: hr_expense.access_hr_expense_split_manager
+NEW ir.access: hr_expense.access_mail_activity_type_expense_user
+NEW ir.access: hr_expense.base_user_account_move_line_rule
+NEW ir.access: hr_expense.hr_expense_comp_rule
+NEW ir.access: hr_expense.hr_expense_team_approver_account_analytic_line_rule
+NEW ir.access: hr_expense.hr_expense_team_approver_account_move_line_rule
+NEW ir.access: hr_expense.hr_expense_team_approver_account_move_rule
+NEW ir.access: hr_expense.ir_rule_hr_expense_approver
+NEW ir.access: hr_expense.ir_rule_hr_expense_employee
+NEW ir.access: hr_expense.ir_rule_hr_expense_employee_not_draft
+NEW ir.access: hr_expense.ir_rule_hr_expense_manager
+NEW ir.access: hr_expense.ir_rule_hr_expense_manager_1
+NEW ir.access: hr_expense.ir_rule_hr_expense_split_accountant
+NEW ir.access: hr_expense.ir_rule_hr_expense_split_approver
+NEW ir.access: hr_expense.ir_rule_hr_expense_split_employee
+NEW ir.access: hr_expense.ir_rule_hr_expense_split_manager
+NEW ir.access: hr_expense.ir_rule_hr_expense_split_user
+ir.actions.act_window: hr_expense.action_hr_expense_department_to_approve (deleted domain)
+ir.actions.act_window: hr_expense.hr_expense_product (deleted domain)
+ir.actions.act_window: hr_expense.mail_activity_type_action_config_hr_expense (deleted domain)
+DEL ir.cron: hr_expense.ir_cron_send_submitted_expenses_mail
+DEL ir.model.access: hr_expense.access_account_analytic_line_user
+DEL ir.model.access: hr_expense.access_account_journal_user
+DEL ir.model.access: hr_expense.access_account_move_line_user
+DEL ir.model.access: hr_expense.access_account_move_user
+DEL ir.model.access: hr_expense.access_hr_expense_accountant
+DEL ir.model.access: hr_expense.access_hr_expense_approve_duplicate
+DEL ir.model.access: hr_expense.access_hr_expense_employee
+DEL ir.model.access: hr_expense.access_hr_expense_manager
+DEL ir.model.access: hr_expense.access_hr_expense_post
+DEL ir.model.access: hr_expense.access_hr_expense_refuse_wizard
+DEL ir.model.access: hr_expense.access_hr_expense_split_manager
+DEL ir.model.access: hr_expense.access_hr_expense_split_wizard_manager
+DEL ir.model.access: hr_expense.access_hr_expense_user
+DEL ir.model.access: hr_expense.access_mail_activity_type_expense_user
+DEL ir.rule: hr_expense.hr_expense_comp_rule (noupdate)
+DEL ir.rule: hr_expense.hr_expense_team_approver_account_move_line_rule (noupdate)
+DEL ir.rule: hr_expense.hr_expense_team_approver_account_move_rule (noupdate)
+DEL ir.rule: hr_expense.ir_rule_hr_expense_approver (noupdate)
+DEL ir.rule: hr_expense.ir_rule_hr_expense_employee (noupdate)
+DEL ir.rule: hr_expense.ir_rule_hr_expense_employee_not_draft (noupdate)
+DEL ir.rule: hr_expense.ir_rule_hr_expense_manager (noupdate)
+DEL ir.rule: hr_expense.ir_rule_hr_expense_split_accountant (noupdate)
+DEL ir.rule: hr_expense.ir_rule_hr_expense_split_approver (noupdate)
+DEL ir.rule: hr_expense.ir_rule_hr_expense_split_employee (noupdate)
+DEL ir.rule: hr_expense.ir_rule_hr_expense_split_manager (noupdate)
+DEL ir.rule: hr_expense.ir_rule_hr_expense_split_user (noupdate)
+DEL ir.sequence: hr_expense.seq_hr_expense_invoice (noupdate)
+DEL ir.ui.menu: hr_expense.menu_hr_expense_account_employee_expenses
+NEW ir.ui.view: hr_expense.account_journal_dashboard_kanban_view_inherit_expense
+NEW ir.ui.view: hr_expense.account_journal_view_form_inherit_hr_expense
+NEW ir.ui.view: hr_expense.hr_expense_split_form_view
+ir.ui.view: hr_expense.hr_expense_template_refuse_reason (noupdate switched)
+ir.ui.view: hr_expense.hr_expense_template_register (noupdate switched)
+ir.ui.view: hr_expense.hr_expense_template_register_no_user (noupdate switched)
+ir.ui.view: hr_expense.hr_expense_template_submitted_expenses (noupdate switched)
+NEW ir.ui.view: hr_expense.product_template_form_view
+NEW ir.ui.view: hr_expense.view_account_invoice_filter_inherit_expense
+DEL ir.ui.view: hr_expense.hr_expense_post_wizard_view
+mail.activity.type: hr_expense.mail_act_expense_approval (noupdate switched)
+mail.alias: hr_expense.mail_alias_expense (noupdate switched)
+mail.message.subtype: hr_expense.mt_expense_approved (noupdate switched)
+mail.message.subtype: hr_expense.mt_expense_entry_delete (noupdate switched)
+mail.message.subtype: hr_expense.mt_expense_entry_draft (noupdate switched)
+mail.message.subtype: hr_expense.mt_expense_paid (noupdate switched)
+mail.message.subtype: hr_expense.mt_expense_refused (noupdate switched)
+mail.message.subtype: hr_expense.mt_expense_reset (noupdate switched)
+product.product: hr_expense.expense_product_communication (noupdate switched)
+product.product: hr_expense.expense_product_gift (noupdate switched)
+product.product: hr_expense.expense_product_meal (noupdate switched)
+product.product: hr_expense.expense_product_mileage (noupdate switched)
+product.product: hr_expense.expense_product_travel_accommodation (noupdate switched)
+product.product: hr_expense.product_product_no_cost (noupdate switched)
+uom.uom: uom.product_uom_km (noupdate switched)
diff --git a/openupgrade_scripts/scripts/hr_gamification/20.0.1.0/noupdate_changes.xml b/openupgrade_scripts/scripts/hr_gamification/20.0.1.0/noupdate_changes.xml
new file mode 100644
index 00000000000..2f6e1d7532a
--- /dev/null
+++ b/openupgrade_scripts/scripts/hr_gamification/20.0.1.0/noupdate_changes.xml
@@ -0,0 +1,6 @@
+
+
+
+ False
+
+
diff --git a/openupgrade_scripts/scripts/hr_gamification/20.0.1.0/post-migration.py b/openupgrade_scripts/scripts/hr_gamification/20.0.1.0/post-migration.py
new file mode 100644
index 00000000000..44618a023cc
--- /dev/null
+++ b/openupgrade_scripts/scripts/hr_gamification/20.0.1.0/post-migration.py
@@ -0,0 +1,9 @@
+# Copyright 2026 Don Kendall
+# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl).
+
+from openupgradelib import openupgrade
+
+
+@openupgrade.migrate()
+def migrate(env, version):
+ openupgrade.load_data(env, "hr_gamification", "20.0.1.0/noupdate_changes.xml")
diff --git a/openupgrade_scripts/scripts/hr_gamification/20.0.1.0/upgrade_analysis.txt b/openupgrade_scripts/scripts/hr_gamification/20.0.1.0/upgrade_analysis.txt
new file mode 100644
index 00000000000..2dcf9ca8351
--- /dev/null
+++ b/openupgrade_scripts/scripts/hr_gamification/20.0.1.0/upgrade_analysis.txt
@@ -0,0 +1,21 @@
+---Models in module 'hr_gamification'---
+---Fields in module 'hr_gamification'---
+---XML records in module 'hr_gamification'---
+NEW ir.access: hr_gamification.badge_officer
+NEW ir.access: hr_gamification.challenge_line_officer
+NEW ir.access: hr_gamification.challenge_officer
+NEW ir.access: hr_gamification.goal_gamification_hr_user_visibility
+NEW ir.access: hr_gamification.hr_gamification_badge_base_user_not_owned_access
+NEW ir.access: hr_gamification.hr_gamification_badge_base_user_owned_access
+NEW ir.access: hr_gamification.hr_gamification_badge_group_hr_user_access
+ir.actions.act_window: hr_gamification.challenge_list_action2 (deleted domain)
+ir.actions.act_window: hr_gamification.goals_menu_groupby_action2 (deleted domain)
+DEL ir.model.access: hr_gamification.badge_base_user
+DEL ir.model.access: hr_gamification.badge_officer
+DEL ir.model.access: hr_gamification.badge_user_officer
+DEL ir.model.access: hr_gamification.challenge_line_officer
+DEL ir.model.access: hr_gamification.challenge_officer
+DEL ir.rule: hr_gamification.goal_gamification_hr_user_visibility (noupdate)
+DEL ir.rule: hr_gamification.hr_gamification_badge_base_user_not_owned_access (noupdate)
+DEL ir.rule: hr_gamification.hr_gamification_badge_base_user_owned_access (noupdate)
+DEL ir.rule: hr_gamification.hr_gamification_badge_group_hr_user_access (noupdate)
diff --git a/openupgrade_scripts/scripts/hr_gamification/20.0.1.0/upgrade_analysis_work.txt b/openupgrade_scripts/scripts/hr_gamification/20.0.1.0/upgrade_analysis_work.txt
new file mode 100644
index 00000000000..ae31cf6a863
--- /dev/null
+++ b/openupgrade_scripts/scripts/hr_gamification/20.0.1.0/upgrade_analysis_work.txt
@@ -0,0 +1,24 @@
+---Models in module 'hr_gamification'---
+---Fields in module 'hr_gamification'---
+---XML records in module 'hr_gamification'---
+NEW ir.access: hr_gamification.badge_officer
+NEW ir.access: hr_gamification.challenge_line_officer
+NEW ir.access: hr_gamification.challenge_officer
+NEW ir.access: hr_gamification.goal_gamification_hr_user_visibility
+NEW ir.access: hr_gamification.hr_gamification_badge_base_user_not_owned_access
+NEW ir.access: hr_gamification.hr_gamification_badge_base_user_owned_access
+NEW ir.access: hr_gamification.hr_gamification_badge_group_hr_user_access
+# NOTHING TO DO: base folds ir.model.access and ir.rule into ir.access, keeping the xml_ids
+ir.actions.act_window: hr_gamification.challenge_list_action2 (deleted domain)
+ir.actions.act_window: hr_gamification.goals_menu_groupby_action2 (deleted domain)
+# NOTHING TO DO: the record is not noupdate, so the module update rewrites the domain
+DEL ir.model.access: hr_gamification.badge_base_user
+DEL ir.model.access: hr_gamification.badge_officer
+DEL ir.model.access: hr_gamification.badge_user_officer
+DEL ir.model.access: hr_gamification.challenge_line_officer
+DEL ir.model.access: hr_gamification.challenge_officer
+DEL ir.rule: hr_gamification.goal_gamification_hr_user_visibility (noupdate)
+DEL ir.rule: hr_gamification.hr_gamification_badge_base_user_not_owned_access (noupdate)
+DEL ir.rule: hr_gamification.hr_gamification_badge_base_user_owned_access (noupdate)
+DEL ir.rule: hr_gamification.hr_gamification_badge_group_hr_user_access (noupdate)
+# NOTHING TO DO: base folds ir.model.access and ir.rule into ir.access, keeping the xml_ids
diff --git a/openupgrade_scripts/scripts/hr_recruitment/20.0.1.1/noupdate_changes.xml b/openupgrade_scripts/scripts/hr_recruitment/20.0.1.1/noupdate_changes.xml
new file mode 100644
index 00000000000..09eebb6abfd
--- /dev/null
+++ b/openupgrade_scripts/scripts/hr_recruitment/20.0.1.1/noupdate_changes.xml
@@ -0,0 +1,192 @@
+
+
+
+Employee created:
+
+
+ 500
+
+
+ 300
+
+
+ Secondary Education
+ 0.30
+ 100
+
+
+ 400
+
+
+
+
+ Hello,
+
+ We confirm we successfully received your application for the job
+ "
Experienced Developer" at
YourCompany.
+
+ We will come back to you shortly.
+
+
+
+
+
Your Contact:
Mitchell Admin
Email: admin@yourcompany.example.com
Phone: +1 650-123-4567
+
+
What is the next step?
+ We usually
answer applications within a few days.
+ Feel free to
contact us if you want a faster
+ feedback or if you don't get news from us
+ quickly enough (just reply to this email).
+
+
+
+
Teksa SpA
+
Puerto Madero 9710
+
Of A15, Santiago (RM)
+
Pudahuel,
+
+
C1,
+
+
98450
+
+
Argentina
+
+
+
+ hr_recruitment.mail_notification_light_without_background
+
+
+
+
+
+
Congratulations!
+
Your resume has been positively reviewed.
+
+
+ We just reviewed your resume, and it caught our
+ attention. As we think you might be great for the
+ position, your application has been short listed for a
+ call or an interview.
+
+
+
+
+ You will soon be contacted by:
+ Mitchell Admin
+ Email: admin@yourcompany.example.com
+ Phone: +1 650-123-4567
+
+
+ See you soon,
+
+
+
+
What is the next step?
+ We usually
answer applications within a few days.
+
+ The next step is either a call or a meeting in our offices.
+
+ Feel free to
contact us if you want a faster
+ feedback or if you don't get news from us
+ quickly enough (just reply to this email).
+
+
+
+
+
Teksa SpA
+
Puerto Madero 9710
+
Of A15, Santiago (RM)
+
Pudahuel,
+
+
C1,
+
+
98450
+
+
Argentina
+
+
+
+
+ hr_recruitment.mail_notification_light_without_background
+
+
+
+
+
+ Dear,
+ We would like to thank you for your interest and your time.
+ We wish you all the best in your future endeavors.
+
+ Best
+
+ --
+ Marc Demo
+ Email: mark.brown23@example.com
+ Phone: +1 650-123-4567
+
+ --
+ YourCompany
+ The HR Team
+
+
+
+
+ hr_recruitment.mail_notification_light_without_background
+
+
+
+
+ Hello,
+ Thank you for your interest in joining the
+
YourCompany team. We
+ wanted to let you know that, although your resume is
+ competitive, our hiring team reviewed your application
+ and
did not select it for further consideration.
+
+ Please note that recruiting is hard, and we can make
+ mistakes. Do not hesitate to reply to this email if you
+ think we made a mistake, or if you want more information
+ about our decision.
+
+ We will, however, keep your resume on record and get in
+ touch with you about future opportunities that may be a
+ better fit for your skills and experience.
+
+ We wish you all the best in your job search and hope we
+ will have the chance to consider you for another role
+ in the future.
+
+ Thank you,
+
+ --
+ Mitchell Admin
+ Email: admin@yourcompany.example.com
+ Phone: +1 650-123-4567
+
+ --
+ YourCompany
+ The HR Team
+
+
+
+ hr_recruitment.mail_notification_light_without_background
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/openupgrade_scripts/scripts/hr_recruitment/20.0.1.1/post-migration.py b/openupgrade_scripts/scripts/hr_recruitment/20.0.1.1/post-migration.py
new file mode 100644
index 00000000000..eea397b57dc
--- /dev/null
+++ b/openupgrade_scripts/scripts/hr_recruitment/20.0.1.1/post-migration.py
@@ -0,0 +1,32 @@
+# Copyright 2026 Don Kendall
+# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl).
+
+from openupgradelib import openupgrade
+
+
+@openupgrade.migrate()
+def migrate(env, version):
+ openupgrade.load_data(env, "hr_recruitment", "20.0.1.1/noupdate_changes.xml")
+ openupgrade.delete_record_translations(
+ env.cr,
+ "hr_recruitment",
+ [
+ "email_template_data_applicant_congratulations",
+ "email_template_data_applicant_interest",
+ "email_template_data_applicant_not_interested",
+ "email_template_data_applicant_refuse",
+ ],
+ ["body_html"],
+ )
+ openupgrade.delete_record_translations(
+ env.cr,
+ "hr_recruitment",
+ ["mt_applicant_new", "mt_job_new", "mt_talent_new"],
+ ["description"],
+ )
+ openupgrade.delete_record_translations(
+ env.cr,
+ "hr_recruitment",
+ ["degree_graduate"],
+ ["name"],
+ )
diff --git a/openupgrade_scripts/scripts/hr_recruitment/20.0.1.1/upgrade_analysis.txt b/openupgrade_scripts/scripts/hr_recruitment/20.0.1.1/upgrade_analysis.txt
new file mode 100644
index 00000000000..17269abbf40
--- /dev/null
+++ b/openupgrade_scripts/scripts/hr_recruitment/20.0.1.1/upgrade_analysis.txt
@@ -0,0 +1,172 @@
+---Models in module 'hr_recruitment'---
+obsolete model applicant.send.mail [transient]
+new model applicant.refuse.single [transient]
+new model hr.job.tag
+---Fields in module 'hr_recruitment'---
+hr_recruitment / hr.applicant / duration_tracking (json) : is now stored
+hr_recruitment / hr.applicant / email_cc (char) : DEL
+hr_recruitment / hr.applicant / linked_applicant_ids (one2many): NEW relation: hr.applicant
+hr_recruitment / hr.applicant / recruiter_id (many2one) : NEW relation: hr.employee, hasdefault: compute
+hr_recruitment / hr.applicant / schedule_pay (selection) : NEW required, selection_keys: ['biweekly', 'daily', 'hourly', 'monthly', 'weekly', 'yearly'], hasdefault: default
+hr_recruitment / hr.applicant / user_id (many2one) : DEL relation: res.users
+hr_recruitment / hr.applicant / utm_reference (reference) : NEW
+hr_recruitment / hr.applicant / website_message_ids (one2many): DEL relation: mail.message
+hr_recruitment / hr.job / applicant_properties_definition (properties_definition): DEL
+hr_recruitment / hr.job / favorite_recruiter_ids (many2many): NEW relation: hr.employee, hasdefault: default
+hr_recruitment / hr.job / favorite_user_ids (many2many) : DEL relation: res.users
+hr_recruitment / hr.job / payment_interval (selection) : NEW required, selection_keys: ['biweekly', 'daily', 'hourly', 'monthly', 'weekly', 'yearly'], hasdefault: default
+hr_recruitment / hr.job / salary_max (float) : NEW
+hr_recruitment / hr.job / salary_min (float) : NEW
+hr_recruitment / hr.job / tag_ids (many2many) : NEW relation: hr.job.tag
+hr_recruitment / hr.job.tag / color (integer) : NEW hasdefault: default
+hr_recruitment / hr.job.tag / name (char) : NEW required
+hr_recruitment / hr.recruitment.stage / company_id (many2one) : NEW relation: res.company
+hr_recruitment / hr.recruitment.stage / legend_blocked (char) : DEL required
+hr_recruitment / hr.recruitment.stage / legend_done (char) : DEL required
+hr_recruitment / hr.recruitment.stage / legend_normal (char) : DEL required
+hr_recruitment / hr.recruitment.stage / legend_waiting (char) : DEL required
+hr_recruitment / hr.talent.pool / website_message_ids (one2many): DEL relation: mail.message
+hr_recruitment / res.company / applicant_properties_definition (properties_definition): NEW
+---XML records in module 'hr_recruitment'---
+digest.digest: digest.digest_digest_default (noupdate switched)
+hr.applicant.category: hr_recruitment.tag_applicant_it (noupdate switched)
+hr.applicant.category: hr_recruitment.tag_applicant_manager (noupdate switched)
+hr.applicant.category: hr_recruitment.tag_applicant_reserve (noupdate switched)
+hr.applicant.category: hr_recruitment.tag_applicant_sales (noupdate switched)
+hr.applicant.refuse.reason: hr_recruitment.refuse_reason_1 (noupdate switched)
+hr.applicant.refuse.reason: hr_recruitment.refuse_reason_2 (noupdate switched)
+hr.applicant.refuse.reason: hr_recruitment.refuse_reason_5 (noupdate switched)
+hr.applicant.refuse.reason: hr_recruitment.refuse_reason_6 (noupdate switched)
+hr.applicant.refuse.reason: hr_recruitment.refuse_reason_7 (noupdate switched)
+hr.applicant.refuse.reason: hr_recruitment.refuse_reason_8 (noupdate switched)
+hr.job.platform: hr_recruitment.indeed_job_platform (noupdate switched)
+hr.job.platform: hr_recruitment.jobsdb_job_platform (noupdate switched)
+hr.job.platform: hr_recruitment.linkedin_job_platform (noupdate switched)
+hr.recruitment.degree: hr_recruitment.degree_bac5 (noupdate switched)
+hr.recruitment.degree: hr_recruitment.degree_bachelor (noupdate switched)
+NEW hr.recruitment.degree: hr_recruitment.degree_diploma
+hr.recruitment.degree: hr_recruitment.degree_graduate (noupdate switched)
+hr.recruitment.degree: hr_recruitment.degree_licenced (noupdate switched)
+hr.recruitment.stage: hr_recruitment.stage_job0 (noupdate switched)
+hr.recruitment.stage: hr_recruitment.stage_job1 (noupdate switched)
+hr.recruitment.stage: hr_recruitment.stage_job2 (noupdate switched)
+hr.recruitment.stage: hr_recruitment.stage_job3 (noupdate switched)
+hr.recruitment.stage: hr_recruitment.stage_job4 (noupdate switched)
+hr.recruitment.stage: hr_recruitment.stage_job5 (noupdate switched)
+NEW ir.access: hr_recruitment.access_applicant_get_refuse_reason_interviewer
+NEW ir.access: hr_recruitment.access_applicant_refuse_single_interviewer
+NEW ir.access: hr_recruitment.access_calendar_event_type_hr_officer
+NEW ir.access: hr_recruitment.access_hr_applicant_category
+NEW ir.access: hr_recruitment.access_hr_applicant_category_manager
+NEW ir.access: hr_recruitment.access_hr_job_interviewer
+NEW ir.access: hr_recruitment.access_hr_job_platform
+NEW ir.access: hr_recruitment.access_hr_job_tag_interviewer
+NEW ir.access: hr_recruitment.access_hr_job_tag_manager
+NEW ir.access: hr_recruitment.access_hr_job_user
+NEW ir.access: hr_recruitment.access_hr_recruitment_degree
+NEW ir.access: hr_recruitment.access_hr_recruitment_degree_interviewer
+NEW ir.access: hr_recruitment.access_hr_recruitment_refuse_reason
+NEW ir.access: hr_recruitment.access_hr_recruitment_refuse_reason_interviewer
+NEW ir.access: hr_recruitment.access_hr_recruitment_source_all
+NEW ir.access: hr_recruitment.access_hr_recruitment_source_hr_officer
+NEW ir.access: hr_recruitment.access_hr_recruitment_stage_interviewer
+NEW ir.access: hr_recruitment.access_hr_recruitment_stage_manager
+NEW ir.access: hr_recruitment.access_hr_talent_pool_interviewer
+NEW ir.access: hr_recruitment.access_job_add_applicants
+NEW ir.access: hr_recruitment.access_mail_activity_plan_hr_recruitment_manager
+NEW ir.access: hr_recruitment.access_mail_activity_plan_template_hr_recruitment_manager
+NEW ir.access: hr_recruitment.access_res_partner_hr_user
+NEW ir.access: hr_recruitment.access_talent_pool_add_applicants
+NEW ir.access: hr_recruitment.calendar_event_rule_employee
+NEW ir.access: hr_recruitment.hr_applicant_comp_rule
+NEW ir.access: hr_recruitment.hr_applicant_interviewer_rule
+NEW ir.access: hr_recruitment.hr_applicant_user_rule
+NEW ir.access: hr_recruitment.hr_job_user_rule
+NEW ir.access: hr_recruitment.hr_talent_pool_user_rule
+NEW ir.access: hr_recruitment.ir_rule_hr_recruitment_stage_multi_company
+NEW ir.access: hr_recruitment.mail_plan_rule_group_hr_recruitment_manager_applicant
+NEW ir.access: hr_recruitment.mail_plan_templates_rule_group_hr_recruitment_manager_applicant
+NEW ir.access: hr_recruitment.res_partner_rule_edit_all
+NEW ir.access: hr_recruitment.res_partner_rule_user
+NEW ir.actions.act_window: hr_recruitment.action_applicant_mass_mail
+ir.actions.act_window: hr_recruitment.action_hr_job_interviewer (deleted domain)
+ir.actions.act_window: hr_recruitment.action_hr_talent_pool_applications (deleted domain)
+ir.actions.act_window: hr_recruitment.hr_applicant_action_from_department (deleted domain)
+NEW ir.actions.act_window: hr_recruitment.hr_job_tag_action
+ir.actions.act_window: hr_recruitment.mail_activity_plan_action_config_hr_applicant (deleted domain)
+ir.actions.act_window: hr_recruitment.mail_activity_type_action_config_hr_applicant (deleted domain)
+NEW ir.actions.server: hr_recruitment.action_job_add_applicants
+DEL ir.actions.server: hr_recruitment.action_applicant_send_mail
+DEL ir.model.access: hr_recruitment.access_applicant_get_refuse_reason
+DEL ir.model.access: hr_recruitment.access_applicant_get_refuse_reason_interviewer
+DEL ir.model.access: hr_recruitment.access_applicant_send_mail
+DEL ir.model.access: hr_recruitment.access_applicant_send_mail_interviewer
+DEL ir.model.access: hr_recruitment.access_calendar_event_hruser
+DEL ir.model.access: hr_recruitment.access_calendar_event_type_hr_officer
+DEL ir.model.access: hr_recruitment.access_hr_applicant_category
+DEL ir.model.access: hr_recruitment.access_hr_applicant_category_manager
+DEL ir.model.access: hr_recruitment.access_hr_applicant_interviewer
+DEL ir.model.access: hr_recruitment.access_hr_applicant_user
+DEL ir.model.access: hr_recruitment.access_hr_job_interviewer
+DEL ir.model.access: hr_recruitment.access_hr_job_platform
+DEL ir.model.access: hr_recruitment.access_hr_job_user
+DEL ir.model.access: hr_recruitment.access_hr_recruitment_degree
+DEL ir.model.access: hr_recruitment.access_hr_recruitment_refuse_reason
+DEL ir.model.access: hr_recruitment.access_hr_recruitment_refuse_reason_interviewer
+DEL ir.model.access: hr_recruitment.access_hr_recruitment_source_all
+DEL ir.model.access: hr_recruitment.access_hr_recruitment_source_hr_officer
+DEL ir.model.access: hr_recruitment.access_hr_recruitment_stage_interviewer
+DEL ir.model.access: hr_recruitment.access_hr_recruitment_stage_manager
+DEL ir.model.access: hr_recruitment.access_hr_recruitment_stage_user
+DEL ir.model.access: hr_recruitment.access_hr_talent_pool
+DEL ir.model.access: hr_recruitment.access_hr_talent_pool_interviewer
+DEL ir.model.access: hr_recruitment.access_job_add_applicants
+DEL ir.model.access: hr_recruitment.access_job_add_applicants_interviewer
+DEL ir.model.access: hr_recruitment.access_mail_activity_plan_hr_recruitment_manager
+DEL ir.model.access: hr_recruitment.access_mail_activity_plan_template_hr_recruitment_manager
+DEL ir.model.access: hr_recruitment.access_res_partner_hr_user
+DEL ir.model.access: hr_recruitment.access_talent_pool_add_applicants
+DEL ir.model.access: hr_recruitment.access_talent_pool_add_applicants_interviewer
+ir.model.constraint: hr_recruitment.constraint_hr_applicant_category_name_uniq (changed definition: is now 'False' ('unique (name)'))
+ir.model.constraint: hr_recruitment.constraint_hr_applicant_job_id_stage_id_idx (changed definition: is now 'False' ('INDEX (job_id, stage_id) WHERE active IS TRUE'))
+ir.model.constraint: hr_recruitment.constraint_hr_job_platform_email_uniq (changed definition: is now 'False' ('unique (email)'))
+ir.model.constraint: hr_recruitment.constraint_hr_recruitment_degree_name_uniq (changed definition: is now 'False' ('unique (name)'))
+ir.model.constraint: hr_recruitment.constraint_hr_recruitment_degree_score_range (changed definition: is now 'False' ('check(score >= 0 and score <= 1)'))
+DEL ir.rule: hr_recruitment.hr_applicant_comp_rule (noupdate)
+DEL ir.rule: hr_recruitment.hr_applicant_interviewer_rule (noupdate)
+DEL ir.rule: hr_recruitment.hr_applicant_user_rule (noupdate)
+DEL ir.rule: hr_recruitment.hr_job_user_rule (noupdate)
+DEL ir.rule: hr_recruitment.hr_talent_pool_user_rule (noupdate)
+DEL ir.rule: hr_recruitment.mail_message_user_rule (noupdate)
+DEL ir.rule: hr_recruitment.mail_plan_rule_group_hr_recruitment_manager_applicant (noupdate)
+DEL ir.rule: hr_recruitment.mail_plan_templates_rule_group_hr_recruitment_manager_applicant (noupdate)
+NEW ir.ui.menu: hr_recruitment.menu_hr_job_tag_menu
+NEW ir.ui.menu: hr_recruitment.menu_hr_recruitment_utm_campaigns
+ir.ui.view: hr_recruitment.applicant_hired_template (noupdate switched)
+NEW ir.ui.view: hr_recruitment.applicant_refuse_single_view_form
+NEW ir.ui.view: hr_recruitment.hr_employee_view_form_inherit_applicant_button
+NEW ir.ui.view: hr_recruitment.hr_job_tag_view_form
+NEW ir.ui.view: hr_recruitment.hr_job_tag_view_list
+NEW ir.ui.view: hr_recruitment.job_add_applicants_from_job_view_form
+ir.ui.view: hr_recruitment.mail_notification_light_without_background (noupdate switched)
+DEL ir.ui.view: hr_recruitment.applicant_send_mail_view_form
+mail.message.subtype: hr_recruitment.mt_applicant_hired (noupdate switched)
+mail.message.subtype: hr_recruitment.mt_applicant_new (noupdate switched)
+mail.message.subtype: hr_recruitment.mt_applicant_stage_changed (noupdate switched)
+mail.message.subtype: hr_recruitment.mt_department_new (noupdate switched)
+mail.message.subtype: hr_recruitment.mt_job_applicant_hired (noupdate switched)
+mail.message.subtype: hr_recruitment.mt_job_applicant_new (noupdate switched)
+mail.message.subtype: hr_recruitment.mt_job_applicant_stage_changed (noupdate switched)
+mail.message.subtype: hr_recruitment.mt_job_new (noupdate switched)
+mail.message.subtype: hr_recruitment.mt_talent_new (noupdate switched)
+mail.template: hr_recruitment.email_template_data_applicant_congratulations (noupdate switched)
+mail.template: hr_recruitment.email_template_data_applicant_interest (noupdate switched)
+mail.template: hr_recruitment.email_template_data_applicant_not_interested (noupdate switched)
+mail.template: hr_recruitment.email_template_data_applicant_refuse (noupdate switched)
+res.groups: base.group_user (noupdate switched)
+res.groups: hr_recruitment.group_applicant_cv_display (noupdate switched)
+res.groups: hr_recruitment.group_hr_recruitment_interviewer (noupdate switched)
+res.groups: hr_recruitment.group_hr_recruitment_manager (noupdate switched)
+res.groups: hr_recruitment.group_hr_recruitment_user (noupdate switched)
+res.groups.privilege: hr_recruitment.res_groups_privilege_recruitment (noupdate switched)
+utm.campaign: hr_recruitment.utm_campaign_job (noupdate switched)
diff --git a/openupgrade_scripts/scripts/hr_recruitment_survey/20.0.1.0/noupdate_changes.xml b/openupgrade_scripts/scripts/hr_recruitment_survey/20.0.1.0/noupdate_changes.xml
new file mode 100644
index 00000000000..2e7e7a856f2
--- /dev/null
+++ b/openupgrade_scripts/scripts/hr_recruitment_survey/20.0.1.0/noupdate_changes.xml
@@ -0,0 +1,6 @@
+
+
+
+ mail.mail_notification_layout
+
+
diff --git a/openupgrade_scripts/scripts/hr_recruitment_survey/20.0.1.0/post-migration.py b/openupgrade_scripts/scripts/hr_recruitment_survey/20.0.1.0/post-migration.py
new file mode 100644
index 00000000000..cde3a9f53db
--- /dev/null
+++ b/openupgrade_scripts/scripts/hr_recruitment_survey/20.0.1.0/post-migration.py
@@ -0,0 +1,9 @@
+# Copyright 2026 Don Kendall
+# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl).
+
+from openupgradelib import openupgrade
+
+
+@openupgrade.migrate()
+def migrate(env, version):
+ openupgrade.load_data(env, "hr_recruitment_survey", "20.0.1.0/noupdate_changes.xml")
diff --git a/openupgrade_scripts/scripts/hr_recruitment_survey/20.0.1.0/upgrade_analysis.txt b/openupgrade_scripts/scripts/hr_recruitment_survey/20.0.1.0/upgrade_analysis.txt
new file mode 100644
index 00000000000..10667a07805
--- /dev/null
+++ b/openupgrade_scripts/scripts/hr_recruitment_survey/20.0.1.0/upgrade_analysis.txt
@@ -0,0 +1,49 @@
+---Models in module 'hr_recruitment_survey'---
+new model hr.recruitment.survey.invite [transient]
+---Fields in module 'hr_recruitment_survey'---
+---XML records in module 'hr_recruitment_survey'---
+NEW ir.access: hr_recruitment_survey.survey_invite_recruitment_interviewer
+NEW ir.access: hr_recruitment_survey.survey_invite_recruitment_manager
+NEW ir.access: hr_recruitment_survey.survey_invite_recruitment_user
+NEW ir.access: hr_recruitment_survey.survey_question_answer_rule_recruitment_manager
+NEW ir.access: hr_recruitment_survey.survey_question_recruitment_interviewer
+NEW ir.access: hr_recruitment_survey.survey_question_rule_recruitment_manager
+NEW ir.access: hr_recruitment_survey.survey_survey_recruitment_interviewer
+NEW ir.access: hr_recruitment_survey.survey_survey_rule_recruitment_manager
+NEW ir.access: hr_recruitment_survey.survey_user_input_line_rule_recruitment_interviewer
+NEW ir.access: hr_recruitment_survey.survey_user_input_line_rule_recruitment_manager
+NEW ir.access: hr_recruitment_survey.survey_user_input_line_rule_recruitment_user
+NEW ir.access: hr_recruitment_survey.survey_user_input_rule_recruitment_interviewer
+NEW ir.access: hr_recruitment_survey.survey_user_input_rule_recruitment_manager
+NEW ir.access: hr_recruitment_survey.survey_user_input_rule_recruitment_user
+ir.actions.act_window: hr_recruitment_survey.survey_survey_action_recruitment (deleted domain)
+NEW ir.actions.server: hr_recruitment_survey.action_applicant_send_interview
+DEL ir.model.access: hr_recruitment_survey.access_survey_invite_recruitment_interviewer
+DEL ir.model.access: hr_recruitment_survey.access_survey_invite_recruitment_user
+DEL ir.model.access: hr_recruitment_survey.access_survey_question_answer_recruitment_manager
+DEL ir.model.access: hr_recruitment_survey.access_survey_question_recruitment_interviewer
+DEL ir.model.access: hr_recruitment_survey.access_survey_question_recruitment_manager
+DEL ir.model.access: hr_recruitment_survey.access_survey_survey_recruitment_interviewer
+DEL ir.model.access: hr_recruitment_survey.access_survey_survey_recruitment_manager
+DEL ir.model.access: hr_recruitment_survey.access_survey_user_input_line_recruitment_interviewer
+DEL ir.model.access: hr_recruitment_survey.access_survey_user_input_line_recruitment_manager
+DEL ir.model.access: hr_recruitment_survey.access_survey_user_input_line_recruitment_user
+DEL ir.model.access: hr_recruitment_survey.access_survey_user_input_recruitment_interviewer
+DEL ir.model.access: hr_recruitment_survey.access_survey_user_input_recruitment_manager
+DEL ir.model.access: hr_recruitment_survey.access_survey_user_input_recruitment_user
+DEL ir.rule: hr_recruitment_survey.survey_invite_recruitment_interviewer (noupdate)
+DEL ir.rule: hr_recruitment_survey.survey_invite_recruitment_manager (noupdate)
+DEL ir.rule: hr_recruitment_survey.survey_invite_recruitment_user (noupdate)
+DEL ir.rule: hr_recruitment_survey.survey_question_answer_rule_recruitment_manager (noupdate)
+DEL ir.rule: hr_recruitment_survey.survey_question_recruitment_interviewer (noupdate)
+DEL ir.rule: hr_recruitment_survey.survey_question_rule_recruitment_manager (noupdate)
+DEL ir.rule: hr_recruitment_survey.survey_survey_recruitment_interviewer (noupdate)
+DEL ir.rule: hr_recruitment_survey.survey_survey_rule_recruitment_manager (noupdate)
+DEL ir.rule: hr_recruitment_survey.survey_user_input_line_rule_recruitment_interviewer (noupdate)
+DEL ir.rule: hr_recruitment_survey.survey_user_input_line_rule_recruitment_manager (noupdate)
+DEL ir.rule: hr_recruitment_survey.survey_user_input_line_rule_recruitment_user (noupdate)
+DEL ir.rule: hr_recruitment_survey.survey_user_input_rule_recruitment_interviewer (noupdate)
+DEL ir.rule: hr_recruitment_survey.survey_user_input_rule_recruitment_manager (noupdate)
+DEL ir.rule: hr_recruitment_survey.survey_user_input_rule_recruitment_user (noupdate)
+NEW ir.ui.view: hr_recruitment_survey.hr_recruitment_survey_invite_view_form
+mail.template: hr_recruitment_survey.mail_template_applicant_interview_invite (noupdate switched)
diff --git a/openupgrade_scripts/scripts/hr_recruitment_survey/20.0.1.0/upgrade_analysis_work.txt b/openupgrade_scripts/scripts/hr_recruitment_survey/20.0.1.0/upgrade_analysis_work.txt
new file mode 100644
index 00000000000..374449a47f5
--- /dev/null
+++ b/openupgrade_scripts/scripts/hr_recruitment_survey/20.0.1.0/upgrade_analysis_work.txt
@@ -0,0 +1,56 @@
+---Models in module 'hr_recruitment_survey'---
+new model hr.recruitment.survey.invite [transient]
+# NOTHING TO DO: a transient model holds no persistent data
+---Fields in module 'hr_recruitment_survey'---
+---XML records in module 'hr_recruitment_survey'---
+NEW ir.access: hr_recruitment_survey.survey_invite_recruitment_interviewer
+NEW ir.access: hr_recruitment_survey.survey_invite_recruitment_manager
+NEW ir.access: hr_recruitment_survey.survey_invite_recruitment_user
+NEW ir.access: hr_recruitment_survey.survey_question_answer_rule_recruitment_manager
+NEW ir.access: hr_recruitment_survey.survey_question_recruitment_interviewer
+NEW ir.access: hr_recruitment_survey.survey_question_rule_recruitment_manager
+NEW ir.access: hr_recruitment_survey.survey_survey_recruitment_interviewer
+NEW ir.access: hr_recruitment_survey.survey_survey_rule_recruitment_manager
+NEW ir.access: hr_recruitment_survey.survey_user_input_line_rule_recruitment_interviewer
+NEW ir.access: hr_recruitment_survey.survey_user_input_line_rule_recruitment_manager
+NEW ir.access: hr_recruitment_survey.survey_user_input_line_rule_recruitment_user
+NEW ir.access: hr_recruitment_survey.survey_user_input_rule_recruitment_interviewer
+NEW ir.access: hr_recruitment_survey.survey_user_input_rule_recruitment_manager
+NEW ir.access: hr_recruitment_survey.survey_user_input_rule_recruitment_user
+# NOTHING TO DO: base folds ir.model.access and ir.rule into ir.access, keeping the xml_ids
+ir.actions.act_window: hr_recruitment_survey.survey_survey_action_recruitment (deleted domain)
+# NOTHING TO DO: the record is not noupdate, so the module update rewrites the domain
+NEW ir.actions.server: hr_recruitment_survey.action_applicant_send_interview
+# NOTHING TO DO: the record is not noupdate, so the module update creates it
+DEL ir.model.access: hr_recruitment_survey.access_survey_invite_recruitment_interviewer
+DEL ir.model.access: hr_recruitment_survey.access_survey_invite_recruitment_user
+DEL ir.model.access: hr_recruitment_survey.access_survey_question_answer_recruitment_manager
+DEL ir.model.access: hr_recruitment_survey.access_survey_question_recruitment_interviewer
+DEL ir.model.access: hr_recruitment_survey.access_survey_question_recruitment_manager
+DEL ir.model.access: hr_recruitment_survey.access_survey_survey_recruitment_interviewer
+DEL ir.model.access: hr_recruitment_survey.access_survey_survey_recruitment_manager
+DEL ir.model.access: hr_recruitment_survey.access_survey_user_input_line_recruitment_interviewer
+DEL ir.model.access: hr_recruitment_survey.access_survey_user_input_line_recruitment_manager
+DEL ir.model.access: hr_recruitment_survey.access_survey_user_input_line_recruitment_user
+DEL ir.model.access: hr_recruitment_survey.access_survey_user_input_recruitment_interviewer
+DEL ir.model.access: hr_recruitment_survey.access_survey_user_input_recruitment_manager
+DEL ir.model.access: hr_recruitment_survey.access_survey_user_input_recruitment_user
+DEL ir.rule: hr_recruitment_survey.survey_invite_recruitment_interviewer (noupdate)
+DEL ir.rule: hr_recruitment_survey.survey_invite_recruitment_manager (noupdate)
+DEL ir.rule: hr_recruitment_survey.survey_invite_recruitment_user (noupdate)
+DEL ir.rule: hr_recruitment_survey.survey_question_answer_rule_recruitment_manager (noupdate)
+DEL ir.rule: hr_recruitment_survey.survey_question_recruitment_interviewer (noupdate)
+DEL ir.rule: hr_recruitment_survey.survey_question_rule_recruitment_manager (noupdate)
+DEL ir.rule: hr_recruitment_survey.survey_survey_recruitment_interviewer (noupdate)
+DEL ir.rule: hr_recruitment_survey.survey_survey_rule_recruitment_manager (noupdate)
+DEL ir.rule: hr_recruitment_survey.survey_user_input_line_rule_recruitment_interviewer (noupdate)
+DEL ir.rule: hr_recruitment_survey.survey_user_input_line_rule_recruitment_manager (noupdate)
+DEL ir.rule: hr_recruitment_survey.survey_user_input_line_rule_recruitment_user (noupdate)
+DEL ir.rule: hr_recruitment_survey.survey_user_input_rule_recruitment_interviewer (noupdate)
+DEL ir.rule: hr_recruitment_survey.survey_user_input_rule_recruitment_manager (noupdate)
+DEL ir.rule: hr_recruitment_survey.survey_user_input_rule_recruitment_user (noupdate)
+# NOTHING TO DO: base folds ir.model.access and ir.rule into ir.access, keeping the xml_ids
+NEW ir.ui.view: hr_recruitment_survey.hr_recruitment_survey_invite_view_form
+# NOTHING TO DO: the record is not noupdate, so the module update creates it
+mail.template: hr_recruitment_survey.mail_template_applicant_interview_invite (noupdate switched)
+# DONE: post-migration: load noupdate_changes.xml
diff --git a/openupgrade_scripts/scripts/hr_timesheet/20.0.1.0/noupdate_changes.xml b/openupgrade_scripts/scripts/hr_timesheet/20.0.1.0/noupdate_changes.xml
new file mode 100644
index 00000000000..262d61a6f37
--- /dev/null
+++ b/openupgrade_scripts/scripts/hr_timesheet/20.0.1.0/noupdate_changes.xml
@@ -0,0 +1,24 @@
+
+
+
+ Can manage timesheets for all employees, but can only approve timesheets and billing targets for their team members. Has access to reporting.
+
+
+ Can only manage their own timesheets.
+
+
+ Can manage and approve all timesheets, with access to reporting and configuration.
+
+
+ False
+
+
+ [
+ ('project_id', '!=', False),
+ ('project_id.privacy_visibility', 'in', ['invited_users', 'portal']),
+ ('project_id.collaborator_ids.partner_id', 'in', [user.partner_id.id]),
+ ]
+
+ r
+
+
diff --git a/openupgrade_scripts/scripts/hr_timesheet/20.0.1.0/post-migration.py b/openupgrade_scripts/scripts/hr_timesheet/20.0.1.0/post-migration.py
new file mode 100644
index 00000000000..12fb647884c
--- /dev/null
+++ b/openupgrade_scripts/scripts/hr_timesheet/20.0.1.0/post-migration.py
@@ -0,0 +1,19 @@
+# Copyright 2026 Don Kendall
+# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl).
+
+from openupgradelib import openupgrade
+
+
+@openupgrade.migrate()
+def migrate(env, version):
+ openupgrade.load_data(env, "hr_timesheet", "20.0.1.0/noupdate_changes.xml")
+ openupgrade.delete_record_translations(
+ env.cr,
+ "hr_timesheet",
+ [
+ "group_hr_timesheet_approver",
+ "group_hr_timesheet_user",
+ "group_timesheet_manager",
+ ],
+ ["comment"],
+ )
diff --git a/openupgrade_scripts/scripts/hr_timesheet/20.0.1.0/upgrade_analysis.txt b/openupgrade_scripts/scripts/hr_timesheet/20.0.1.0/upgrade_analysis.txt
new file mode 100644
index 00000000000..4e846c4b9b7
--- /dev/null
+++ b/openupgrade_scripts/scripts/hr_timesheet/20.0.1.0/upgrade_analysis.txt
@@ -0,0 +1,72 @@
+---Models in module 'hr_timesheet'---
+---Fields in module 'hr_timesheet'---
+hr_timesheet / account.analytic.applicability / business_domain (False) : selection_keys removed: [purchase_order]
+hr_timesheet / account.analytic.line / sequence (integer) : NEW hasdefault: default
+hr_timesheet / project.task / portal_timesheet_ids (one2many): NEW relation: account.analytic.line
+hr_timesheet / project.task / show_portal_timesheets (boolean): NEW hasdefault: default, stored: False
+---XML records in module 'hr_timesheet'---
+DEL digest.tip: hr_timesheet.digest_tip_hr_timesheet_0
+NEW ir.access: hr_timesheet.access_account_analytic_line_calendar_employee
+NEW ir.access: hr_timesheet.access_account_analytic_user
+NEW ir.access: hr_timesheet.access_hr_employee_delete_wizard_hr_user
+NEW ir.access: hr_timesheet.access_uom_uom_hr_timesheet
+NEW ir.access: hr_timesheet.project_project_manager_rule
+NEW ir.access: hr_timesheet.project_public_members_rule
+NEW ir.access: hr_timesheet.timesheet_analysis_report_approver
+NEW ir.access: hr_timesheet.timesheet_analysis_report_department_manager
+NEW ir.access: hr_timesheet.timesheet_analysis_report_manager
+NEW ir.access: hr_timesheet.timesheet_analysis_report_manager_1
+NEW ir.access: hr_timesheet.timesheet_analysis_report_user
+NEW ir.access: hr_timesheet.timesheet_line_rule_approver
+NEW ir.access: hr_timesheet.timesheet_line_rule_manager
+NEW ir.access: hr_timesheet.timesheet_line_rule_manager_1
+NEW ir.access: hr_timesheet.timesheet_line_rule_portal_user
+NEW ir.access: hr_timesheet.timesheet_line_rule_user
+NEW ir.access: hr_timesheet.timesheets_analysis_report_comp_rule
+ir.actions.act_window: hr_timesheet.act_hr_timesheet_line (deleted domain)
+ir.actions.act_window: hr_timesheet.act_hr_timesheet_line_by_project (deleted domain)
+ir.actions.act_window: hr_timesheet.act_hr_timesheet_report (deleted domain)
+ir.actions.act_window: hr_timesheet.timesheet_action_all (deleted domain)
+ir.actions.act_window: hr_timesheet.timesheet_action_from_employee (deleted domain)
+ir.actions.act_window: hr_timesheet.timesheet_action_project (deleted domain)
+ir.actions.act_window: hr_timesheet.timesheet_action_report_by_project (deleted domain)
+ir.actions.act_window: hr_timesheet.timesheet_action_report_by_task (deleted domain)
+ir.actions.act_window: hr_timesheet.timesheet_action_task (deleted domain)
+ir.actions.act_window: project.open_view_project_all (deleted domain)
+ir.actions.act_window: project.open_view_project_all_group_stage (deleted domain)
+NEW ir.actions.server: hr_timesheet.action_server_print_project_timesheets
+NEW ir.actions.server: hr_timesheet.action_server_print_task_timesheets
+DEL ir.model.access: hr_timesheet.access_account_analytic_line_calendar_employee
+DEL ir.model.access: hr_timesheet.access_account_analytic_line_portal_user (noupdate)
+DEL ir.model.access: hr_timesheet.access_account_analytic_line_user
+DEL ir.model.access: hr_timesheet.access_account_analytic_user
+DEL ir.model.access: hr_timesheet.access_hr_employee_delete_wizard
+DEL ir.model.access: hr_timesheet.access_project_project
+DEL ir.model.access: hr_timesheet.access_timesheets_analysis_report
+DEL ir.model.access: hr_timesheet.access_uom_uom_hr_timesheet
+DEL ir.rule: hr_timesheet.timesheet_analysis_report_approver (noupdate)
+DEL ir.rule: hr_timesheet.timesheet_analysis_report_department_manager (noupdate)
+DEL ir.rule: hr_timesheet.timesheet_analysis_report_manager (noupdate)
+DEL ir.rule: hr_timesheet.timesheet_analysis_report_user (noupdate)
+DEL ir.rule: hr_timesheet.timesheet_line_rule_approver (noupdate)
+DEL ir.rule: hr_timesheet.timesheet_line_rule_manager (noupdate)
+DEL ir.rule: hr_timesheet.timesheet_line_rule_portal_user (noupdate)
+DEL ir.rule: hr_timesheet.timesheet_line_rule_user (noupdate)
+DEL ir.rule: hr_timesheet.timesheets_analysis_report_comp_rule (noupdate)
+NEW ir.ui.view: hr_timesheet.portal_timesheet_table_with_total
+NEW ir.ui.view: hr_timesheet.project_sharing_inherit_project_task_view_card
+NEW ir.ui.view: hr_timesheet.quick_create_account_analytic_line_form
+NEW ir.ui.view: hr_timesheet.view_project_card_inherited
+NEW ir.ui.view: hr_timesheet.view_task_card_inherited_progress
+DEL ir.ui.view: hr_timesheet.portal_my_home_timesheet
+DEL ir.ui.view: hr_timesheet.project_project_view_form_simplified_inherit_timesheet
+DEL ir.ui.view: hr_timesheet.project_sharing_kanban_inherit_project_task_view_kanban
+DEL ir.ui.view: hr_timesheet.view_project_kanban_inherited
+DEL ir.ui.view: hr_timesheet.view_task_kanban_inherited_progress
+NEW portal.entry: hr_timesheet.portal_timesheets
+res.groups: hr_timesheet.group_hr_timesheet_approver (noupdate switched)
+res.groups: hr_timesheet.group_hr_timesheet_user (noupdate switched)
+res.groups: hr_timesheet.group_timesheet_manager (noupdate switched)
+res.groups.privilege: hr_timesheet.res_groups_privilege_timesheets (noupdate switched)
+uom.uom: uom.product_uom_day (noupdate switched)
+uom.uom: uom.product_uom_hour (noupdate switched)
diff --git a/openupgrade_scripts/scripts/hr_work_entry/20.0.1.0/noupdate_changes.xml b/openupgrade_scripts/scripts/hr_work_entry/20.0.1.0/noupdate_changes.xml
new file mode 100644
index 00000000000..3843a31a1cb
--- /dev/null
+++ b/openupgrade_scripts/scripts/hr_work_entry/20.0.1.0/noupdate_changes.xml
@@ -0,0 +1,396 @@
+
+
+
+ absence
+
+
+ absence
+
+
+ absence
+
+
+ AU.OT.PH
+ Overtime: Public Holiday
+
+
+ AU.OT
+ Overtime: Week Day
+
+
+ AU.OT.SAT
+
+
+ AU.OT.PH.SAT
+ Overtime: Saturday & Public Holiday
+
+
+ AU.OT.SUN
+
+
+ AU.OT.PH.SUN
+ Overtime: Sunday & Public Holiday
+
+
+ absence
+
+
+ absence
+
+
+ 006.00
+ Public holiday
+ absence
+ PH
+
+
+ 146.00
+ Breast-feeding leave
+ 0.0
+ absence
+ BFB
+
+
+ 147.00
+ Time credit (with/no motif)
+ 0.0
+ absence
+ CRT
+
+
+
+ 137.00
+ Economic unemployment
+ 0.0
+ absence
+ ECO
+
+
+
+ 142.20
+ absence
+ EUR
+
+
+
+ 024.04
+ Flemish Training Leave (unlimited)
+ absence
+ FED
+
+
+ 123.00
+ Days of illness after 12 months
+ 0.0
+ absence
+ LTS
+
+
+ 128.00
+ Maternity leave
+ 0.0
+ absence
+ MAT
+
+
+ 147.07
+ Thematic leave - Medical assistance
+ 0.0
+ absence
+ MED
+
+
+
+ 147.05
+ Parental leave
+ 0.0
+ absence
+ PAR
+
+
+
+ 122.04
+ Reintegration journey < 12 months
+ 0.0
+ absence
+ PIN
+
+
+
+ 007.05
+ Leave for Birth (days 1-3)
+ absence
+ PTC
+
+
+ 128.05
+ Leave for birth (days 4-20)
+ 0.0
+ absence
+ PTL
+
+
+ 006.15
+ Replacement public holiday
+ absence
+ PHC
+
+
+ 046.00
+ Recovered overtime
+ absence
+ RAT
+
+
+ 007.00
+ Circumstancial leave
+ absence
+ SUH
+
+
+ 022.00
+ Absence during notice
+ absence
+ SOL
+
+
+ 132.00
+ Strike recognized by trade union Or Lock-out
+ 0.0
+ absence
+ STR
+
+
+ 020.00
+ Non-productive absence
+ TRN
+
+
+ 024.00
+ Educational leave (unlimited)
+ absence
+ EDU
+
+
+ 155.00
+ Illegitimate absence
+ 0.0
+ absence
+ UJR
+
+
+ 135.00
+ Imperative family reason (days 1-10/year)
+ 0.0
+ absence
+ URU
+
+
+ 142.99
+ Holiday junior worker
+ 0.0
+ absence
+ YTO
+
+
+ absence
+
+
+ absence
+
+
+ working_time
+
+
+ absence
+
+
+ absence
+
+
+ absence
+
+
+ working_time
+
+
+ absence
+
+
+ absence
+
+
+ absence
+
+
+ absence
+
+
+ working_time
+
+
+ working_time
+
+
+ working_time
+
+
+ 0.0
+ absence
+
+
+ 006.00
+ Public holiday
+ absence
+
+
+ absence
+
+
+ 0.75
+ absence
+
+
+ 0.0
+ absence
+
+
+ absence
+
+
+ absence
+
+
+ absence
+
+
+ absence
+
+
+ absence
+
+
+ absence
+
+
+ absence
+
+
+ 006.00
+ Public holiday
+ absence
+
+
+ absence
+
+
+ absence
+
+
+ absence
+
+
+ absence
+
+
+ absence
+
+
+ absence
+
+
+ absence
+
+
+ 006.00
+ Public holiday
+ absence
+
+
+ absence
+
+
+ 0.0
+ absence
+
+
+ 0.0
+ absence
+
+
+ 0.0
+ absence
+
+
+ 0.0
+ absence
+
+
+ 0.0
+ absence
+
+
+ absence
+
+
+ absence
+
+
+ absence
+
+
+ Sick Time Off (Unpaid)
+ 5
+ absence
+ STO
+
+
+ Sick Time Off 75%
+ 5
+ absence
+ STO
+
+
+ absence
+
+
+ absence
+
+
+ absence
+
+
+ absence
+
+
+ absence
+
+
+ Double Time (2x)
+
+
+ Overtime (1.5x)
+
+
+ 006.00
+ Public holiday
+ absence
+
+
+ 4
+ working_time
+
+
+ 4
+ working_time
+
+
+ 4
+ working_time
+
+
diff --git a/openupgrade_scripts/scripts/hr_work_entry/20.0.1.0/post-migration.py b/openupgrade_scripts/scripts/hr_work_entry/20.0.1.0/post-migration.py
new file mode 100644
index 00000000000..cd41219264e
--- /dev/null
+++ b/openupgrade_scripts/scripts/hr_work_entry/20.0.1.0/post-migration.py
@@ -0,0 +1,64 @@
+# Copyright 2026 Don Kendall
+# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl).
+
+from openupgradelib import openupgrade
+
+
+@openupgrade.migrate()
+def migrate(env, version):
+ openupgrade.load_data(env, "hr_work_entry", "20.0.1.0/noupdate_changes.xml")
+ openupgrade.delete_record_translations(
+ env.cr,
+ "hr_work_entry",
+ ["l10n_be_work_entry_type_european"],
+ ["display_code"],
+ )
+ openupgrade.delete_record_translations(
+ env.cr,
+ "hr_work_entry",
+ [
+ "l10n_be_work_entry_type_bank_holiday",
+ "l10n_be_work_entry_type_breast_feeding",
+ "l10n_be_work_entry_type_credit_time",
+ "l10n_be_work_entry_type_economic_unemployment",
+ "l10n_be_work_entry_type_extra_legal",
+ "l10n_be_work_entry_type_flemish_training_time_off",
+ "l10n_be_work_entry_type_long_sick",
+ "l10n_be_work_entry_type_maternity",
+ "l10n_be_work_entry_type_medical_assistance",
+ "l10n_be_work_entry_type_parental_time_off",
+ "l10n_be_work_entry_type_partial_incapacity",
+ "l10n_be_work_entry_type_paternity_company",
+ "l10n_be_work_entry_type_paternity_legal",
+ "l10n_be_work_entry_type_phc",
+ "l10n_be_work_entry_type_recovery_additional",
+ "l10n_be_work_entry_type_small_unemployment",
+ "l10n_be_work_entry_type_solicitation_time_off",
+ "l10n_be_work_entry_type_strike",
+ "l10n_be_work_entry_type_training",
+ "l10n_be_work_entry_type_training_time_off",
+ "l10n_be_work_entry_type_unjustified_reason",
+ "l10n_be_work_entry_type_unpredictable",
+ "l10n_be_work_entry_type_youth_time_off",
+ "l10n_sa_work_entry_type_sick_leave_0",
+ "l10n_sa_work_entry_type_sick_leave_75",
+ ],
+ ["display_code", "name"],
+ )
+ openupgrade.delete_record_translations(
+ env.cr,
+ "hr_work_entry",
+ [
+ "l10n_au_work_entry_type_overtime_pto",
+ "l10n_au_work_entry_type_overtime_regular",
+ "l10n_au_work_entry_type_overtime_saturday_pto",
+ "l10n_au_work_entry_type_overtime_sunday_pto",
+ "l10n_ch_work_entry_type_bank_holiday",
+ "l10n_hk_work_entry_type_public_holiday",
+ "l10n_id_work_entry_type_public_holiday",
+ "l10n_us_work_entry_type_double",
+ "l10n_us_work_entry_type_overtime",
+ "uae_public_holiday_entry_type",
+ ],
+ ["name"],
+ )
diff --git a/openupgrade_scripts/scripts/hr_work_entry/20.0.1.0/pre-migration.py b/openupgrade_scripts/scripts/hr_work_entry/20.0.1.0/pre-migration.py
new file mode 100644
index 00000000000..78ac9eb0185
--- /dev/null
+++ b/openupgrade_scripts/scripts/hr_work_entry/20.0.1.0/pre-migration.py
@@ -0,0 +1,29 @@
+# Copyright 2026 Don Kendall
+# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl).
+
+from openupgradelib import openupgrade
+
+# 20.0 prefixes the country-neutral work entry types with "generic_" to tell
+# them apart from the localisation ones that share a code.
+_renamed_xmlids = [
+ (f"hr_work_entry.{old}", f"hr_work_entry.generic_{old}")
+ for old in (
+ "work_entry_type_attendance",
+ "work_entry_type_overtime",
+ "hr_work_entry_type_out_of_contract",
+ "work_entry_type_leave",
+ "work_entry_type_compensatory",
+ "work_entry_type_home_working",
+ "work_entry_type_unpaid_leave",
+ "work_entry_type_sick_leave",
+ "work_entry_type_legal_leave",
+ )
+]
+
+
+@openupgrade.migrate()
+def migrate(env, version):
+ # Without this the data load inserts a second country-less record for each
+ # code and _check_code_unicity rejects it: "Time type ... of code LEAVE100,
+ # with no country assigned, already exists".
+ openupgrade.rename_xmlids(env.cr, _renamed_xmlids)
diff --git a/openupgrade_scripts/scripts/hr_work_entry/20.0.1.0/upgrade_analysis.txt b/openupgrade_scripts/scripts/hr_work_entry/20.0.1.0/upgrade_analysis.txt
new file mode 100644
index 00000000000..533cd489528
--- /dev/null
+++ b/openupgrade_scripts/scripts/hr_work_entry/20.0.1.0/upgrade_analysis.txt
@@ -0,0 +1,774 @@
+---Models in module 'hr_work_entry'---
+obsolete model hr.work.entry
+obsolete model hr.work.entry.regeneration.wizard [transient]
+new model hr.export.work.entries [transient]
+new model hr.export.work.entries.employee [transient]
+new model hr.time.rule
+new model hr.time.rule.source.mixin [abstract]
+---Fields in module 'hr_work_entry'---
+hr_work_entry / hr.employee / external_code (char) : NEW
+hr_work_entry / hr.time.rule / active (boolean) : NEW hasdefault: default
+hr_work_entry / hr.time.rule / amount_rate (float) : NEW hasdefault: compute
+hr_work_entry / hr.time.rule / apply_friday (boolean) : NEW hasdefault: default
+hr_work_entry / hr.time.rule / apply_monday (boolean) : NEW hasdefault: default
+hr_work_entry / hr.time.rule / apply_on_public_holidays (boolean): NEW hasdefault: default
+hr_work_entry / hr.time.rule / apply_saturday (boolean) : NEW hasdefault: default
+hr_work_entry / hr.time.rule / apply_sunday (boolean) : NEW hasdefault: default
+hr_work_entry / hr.time.rule / apply_thursday (boolean) : NEW hasdefault: default
+hr_work_entry / hr.time.rule / apply_tuesday (boolean) : NEW hasdefault: default
+hr_work_entry / hr.time.rule / apply_wednesday (boolean) : NEW hasdefault: default
+hr_work_entry / hr.time.rule / calendar_source (selection) : NEW selection_keys: ['employee', 'reference'], hasdefault: compute
+hr_work_entry / hr.time.rule / company_id (many2one) : NEW relation: res.company
+hr_work_entry / hr.time.rule / condition_work_entry_type_ids (many2many): NEW relation: hr.work.entry.type, required
+hr_work_entry / hr.time.rule / country_id (many2one) : NEW relation: res.country, hasdefault: compute
+hr_work_entry / hr.time.rule / description (text) : NEW
+hr_work_entry / hr.time.rule / employee_domain (char) : NEW hasdefault: default
+hr_work_entry / hr.time.rule / employee_tolerance (float) : NEW
+hr_work_entry / hr.time.rule / employer_tolerance (float) : NEW
+hr_work_entry / hr.time.rule / expected_hours (float) : NEW hasdefault: compute
+hr_work_entry / hr.time.rule / name (char) : NEW required
+hr_work_entry / hr.time.rule / quantity_period (selection) : NEW selection_keys: ['day', 'week'], isfunction: function, stored
+hr_work_entry / hr.time.rule / resource_calendar_id (many2one): NEW relation: resource.calendar
+hr_work_entry / hr.time.rule / sequence (integer) : NEW hasdefault: default
+hr_work_entry / hr.time.rule / threshold_operator (selection): NEW required, selection_keys: ['exceed', 'less_than'], hasdefault: default
+hr_work_entry / hr.time.rule / timing_start (float) : NEW hasdefault: default
+hr_work_entry / hr.time.rule / timing_stop (float) : NEW hasdefault: default
+hr_work_entry / hr.time.rule / week_start (selection) : NEW selection_keys: ['0', '1', '2', '3', '4', '5', '6'], hasdefault: default
+hr_work_entry / hr.time.rule / work_entry_type_id (many2one) : NEW relation: hr.work.entry.type
+hr_work_entry / hr.time.rule / working_hours_mode (selection): NEW required, selection_keys: ['day', 'schedule_day', 'schedule_week', 'week'], hasdefault: default
+hr_work_entry / hr.version / date_generated_from (datetime): DEL required
+hr_work_entry / hr.version / date_generated_to (datetime) : DEL required
+hr_work_entry / hr.version / last_generation_date (date) : DEL
+hr_work_entry / hr.version / work_entry_source (selection) : DEL required, selection_keys: ['calendar']
+hr_work_entry / hr.work.entry / active (boolean) : DEL
+hr_work_entry / hr.work.entry / amount_rate (float) : DEL
+hr_work_entry / hr.work.entry / company_id (many2one) : DEL relation: res.company, required
+hr_work_entry / hr.work.entry / conflict (boolean) : DEL
+hr_work_entry / hr.work.entry / date (date) : DEL required
+hr_work_entry / hr.work.entry / department_id (many2one) : DEL relation: hr.department
+hr_work_entry / hr.work.entry / duration (float) : DEL
+hr_work_entry / hr.work.entry / employee_id (many2one) : DEL relation: hr.employee, required
+hr_work_entry / hr.work.entry / name (char) : DEL
+hr_work_entry / hr.work.entry / state (selection) : DEL selection_keys: ['cancelled', 'conflict', 'draft', 'validated']
+hr_work_entry / hr.work.entry / version_id (many2one) : DEL relation: hr.version, required
+hr_work_entry / hr.work.entry / work_entry_type_id (many2one) : DEL relation: hr.work.entry.type
+hr_work_entry / hr.work.entry.type / _order : _order is now 'sequence' ('id')
+hr_work_entry / hr.work.entry.type / activity_ids (one2many) : NEW relation: mail.activity
+hr_work_entry / hr.work.entry.type / count_as (selection) : NEW required, selection_keys: ['absence', 'working_time'], hasdefault: default
+hr_work_entry / hr.work.entry.type / description (text) : NEW translate
+hr_work_entry / hr.work.entry.type / is_extra_hours (boolean) : DEL
+hr_work_entry / hr.work.entry.type / is_leave (boolean) : DEL
+hr_work_entry / hr.work.entry.type / message_follower_ids (one2many): NEW relation: mail.followers
+hr_work_entry / hr.work.entry.type / message_ids (one2many) : NEW relation: mail.message
+hr_work_entry / hr.work.entry.type / rating_ids (one2many) : NEW relation: rating.rating
+hr_work_entry / hr.work.entry.type / resource_calendar_attendance_ids (one2many): NEW relation: resource.calendar.attendance
+hr_work_entry / hr.work.entry.type / resource_calendar_selectable (boolean): NEW hasdefault: compute
+hr_work_entry / res.company / external_code (char) : NEW
+hr_work_entry_holidays / hr.leave.type / work_entry_type_id (many2one) : DEL relation: hr.work.entry.type
+hr_work_entry_holidays / hr.work.entry / leave_id (many2one) : DEL relation: hr.leave
+hr_work_entry_holidays / hr.work.entry.type / leave_type_ids (one2many) : DEL relation: hr.leave.type
+---XML records in module 'hr_work_entry'---
+NEW hr.time.rule: hr_work_entry.hr_time_rule_employee_schedule
+NEW hr.time.rule: hr_work_entry.hr_time_rule_l10n_ae_day_time
+NEW hr.time.rule: hr_work_entry.hr_time_rule_l10n_ae_night_time_1
+NEW hr.time.rule: hr_work_entry.hr_time_rule_l10n_ae_night_time_2
+NEW hr.time.rule: hr_work_entry.hr_time_rule_l10n_ae_off_days
+NEW hr.time.rule: hr_work_entry.hr_time_rule_l10n_eg_public_holidays
+NEW hr.time.rule: hr_work_entry.hr_time_rule_l10n_eg_rest_days
+NEW hr.time.rule: hr_work_entry.hr_time_rule_l10n_eg_work_days_daytime
+NEW hr.time.rule: hr_work_entry.hr_time_rule_l10n_eg_work_days_nighttime_early
+NEW hr.time.rule: hr_work_entry.hr_time_rule_l10n_eg_work_days_nighttime_evening
+NEW hr.time.rule: hr_work_entry.hr_time_rule_l10n_id_beyond_first_hour
+NEW hr.time.rule: hr_work_entry.hr_time_rule_l10n_id_first_hour
+NEW hr.time.rule: hr_work_entry.hr_time_rule_l10n_iq_day_time_1
+NEW hr.time.rule: hr_work_entry.hr_time_rule_l10n_iq_day_time_2
+NEW hr.time.rule: hr_work_entry.hr_time_rule_l10n_iq_night_time_1
+NEW hr.time.rule: hr_work_entry.hr_time_rule_l10n_iq_night_time_2
+NEW hr.time.rule: hr_work_entry.hr_time_rule_l10n_jo_public_holidays
+NEW hr.time.rule: hr_work_entry.hr_time_rule_l10n_jo_rest_days
+NEW hr.time.rule: hr_work_entry.hr_time_rule_l10n_jo_week_days
+NEW hr.time.rule: hr_work_entry.hr_time_rule_l10n_om_normal_rest_days
+NEW hr.time.rule: hr_work_entry.hr_time_rule_l10n_om_normal_workdays_daytime
+NEW hr.time.rule: hr_work_entry.hr_time_rule_l10n_om_normal_workdays_nighttime_early
+NEW hr.time.rule: hr_work_entry.hr_time_rule_l10n_om_normal_workdays_nighttime_late
+NEW hr.time.rule: hr_work_entry.hr_time_rule_l10n_sa_workdays
+NEW hr.work.entry.type: hr_work_entry.au_hr_work_entry_type_out_of_contract
+NEW hr.work.entry.type: hr_work_entry.au_work_entry_type_attendance
+NEW hr.work.entry.type: hr_work_entry.au_work_entry_type_compensatory
+NEW hr.work.entry.type: hr_work_entry.au_work_entry_type_home_working
+NEW hr.work.entry.type: hr_work_entry.au_work_entry_type_leave
+NEW hr.work.entry.type: hr_work_entry.au_work_entry_type_legal_leave
+NEW hr.work.entry.type: hr_work_entry.au_work_entry_type_overtime
+NEW hr.work.entry.type: hr_work_entry.au_work_entry_type_public_holiday
+NEW hr.work.entry.type: hr_work_entry.au_work_entry_type_sick_leave
+NEW hr.work.entry.type: hr_work_entry.au_work_entry_type_unpaid_leave
+NEW hr.work.entry.type: hr_work_entry.bd_hr_work_entry_type_out_of_contract
+NEW hr.work.entry.type: hr_work_entry.bd_work_entry_type_attendance
+NEW hr.work.entry.type: hr_work_entry.bd_work_entry_type_compensatory
+NEW hr.work.entry.type: hr_work_entry.bd_work_entry_type_home_working
+NEW hr.work.entry.type: hr_work_entry.bd_work_entry_type_leave
+NEW hr.work.entry.type: hr_work_entry.bd_work_entry_type_legal_leave
+NEW hr.work.entry.type: hr_work_entry.bd_work_entry_type_overtime
+NEW hr.work.entry.type: hr_work_entry.bd_work_entry_type_public_holiday
+NEW hr.work.entry.type: hr_work_entry.bd_work_entry_type_sick_leave
+NEW hr.work.entry.type: hr_work_entry.bd_work_entry_type_unpaid_leave
+NEW hr.work.entry.type: hr_work_entry.be_hr_work_entry_type_out_of_contract
+NEW hr.work.entry.type: hr_work_entry.be_work_entry_type_additional_hours
+NEW hr.work.entry.type: hr_work_entry.be_work_entry_type_additional_hours_100
+NEW hr.work.entry.type: hr_work_entry.be_work_entry_type_additional_hours_50
+NEW hr.work.entry.type: hr_work_entry.be_work_entry_type_attendance
+NEW hr.work.entry.type: hr_work_entry.be_work_entry_type_home_working
+NEW hr.work.entry.type: hr_work_entry.be_work_entry_type_legal_leave
+NEW hr.work.entry.type: hr_work_entry.be_work_entry_type_overtime
+NEW hr.work.entry.type: hr_work_entry.be_work_entry_type_sick_leave
+NEW hr.work.entry.type: hr_work_entry.be_work_entry_type_unpaid_leave
+NEW hr.work.entry.type: hr_work_entry.ch_hr_work_entry_type_out_of_contract
+NEW hr.work.entry.type: hr_work_entry.ch_work_entry_type_attendance
+NEW hr.work.entry.type: hr_work_entry.ch_work_entry_type_compensatory
+NEW hr.work.entry.type: hr_work_entry.ch_work_entry_type_home_working
+NEW hr.work.entry.type: hr_work_entry.ch_work_entry_type_leave
+NEW hr.work.entry.type: hr_work_entry.ch_work_entry_type_legal_leave
+NEW hr.work.entry.type: hr_work_entry.ch_work_entry_type_overtime
+NEW hr.work.entry.type: hr_work_entry.ch_work_entry_type_sick_leave
+NEW hr.work.entry.type: hr_work_entry.ch_work_entry_type_unpaid_leave
+NEW hr.work.entry.type: hr_work_entry.eg_hr_work_entry_type_out_of_contract
+NEW hr.work.entry.type: hr_work_entry.eg_work_entry_type_attendance
+NEW hr.work.entry.type: hr_work_entry.eg_work_entry_type_compensatory
+NEW hr.work.entry.type: hr_work_entry.eg_work_entry_type_home_working
+NEW hr.work.entry.type: hr_work_entry.eg_work_entry_type_leave
+NEW hr.work.entry.type: hr_work_entry.eg_work_entry_type_legal_leave
+NEW hr.work.entry.type: hr_work_entry.eg_work_entry_type_overtime
+NEW hr.work.entry.type: hr_work_entry.eg_work_entry_type_public_holiday
+NEW hr.work.entry.type: hr_work_entry.eg_work_entry_type_unpaid_leave
+NEW hr.work.entry.type: hr_work_entry.fr_hr_work_entry_type_out_of_contract
+NEW hr.work.entry.type: hr_work_entry.fr_work_entry_type_attendance
+NEW hr.work.entry.type: hr_work_entry.fr_work_entry_type_compensatory
+NEW hr.work.entry.type: hr_work_entry.fr_work_entry_type_home_working
+NEW hr.work.entry.type: hr_work_entry.fr_work_entry_type_leave
+NEW hr.work.entry.type: hr_work_entry.fr_work_entry_type_legal_leave
+NEW hr.work.entry.type: hr_work_entry.fr_work_entry_type_overtime
+NEW hr.work.entry.type: hr_work_entry.fr_work_entry_type_public_holiday
+NEW hr.work.entry.type: hr_work_entry.fr_work_entry_type_sick_leave
+NEW hr.work.entry.type: hr_work_entry.fr_work_entry_type_unpaid_leave
+NEW hr.work.entry.type: hr_work_entry.generic_hr_work_entry_type_out_of_contract
+NEW hr.work.entry.type: hr_work_entry.generic_work_entry_type_attendance
+NEW hr.work.entry.type: hr_work_entry.generic_work_entry_type_compensatory
+NEW hr.work.entry.type: hr_work_entry.generic_work_entry_type_home_working
+NEW hr.work.entry.type: hr_work_entry.generic_work_entry_type_leave
+NEW hr.work.entry.type: hr_work_entry.generic_work_entry_type_legal_leave
+NEW hr.work.entry.type: hr_work_entry.generic_work_entry_type_overtime
+NEW hr.work.entry.type: hr_work_entry.generic_work_entry_type_public_holiday
+NEW hr.work.entry.type: hr_work_entry.generic_work_entry_type_sick_leave
+NEW hr.work.entry.type: hr_work_entry.generic_work_entry_type_unpaid_leave
+NEW hr.work.entry.type: hr_work_entry.hk_hr_work_entry_type_out_of_contract
+NEW hr.work.entry.type: hr_work_entry.hk_work_entry_type_attendance
+NEW hr.work.entry.type: hr_work_entry.hk_work_entry_type_compensatory
+NEW hr.work.entry.type: hr_work_entry.hk_work_entry_type_home_working
+NEW hr.work.entry.type: hr_work_entry.hk_work_entry_type_leave
+NEW hr.work.entry.type: hr_work_entry.hk_work_entry_type_overtime
+NEW hr.work.entry.type: hr_work_entry.hk_work_entry_type_sick_leave
+NEW hr.work.entry.type: hr_work_entry.hk_work_entry_type_unpaid_leave
+NEW hr.work.entry.type: hr_work_entry.id_hr_work_entry_type_out_of_contract
+NEW hr.work.entry.type: hr_work_entry.id_work_entry_type_attendance
+NEW hr.work.entry.type: hr_work_entry.id_work_entry_type_compensatory
+NEW hr.work.entry.type: hr_work_entry.id_work_entry_type_home_working
+NEW hr.work.entry.type: hr_work_entry.id_work_entry_type_leave
+NEW hr.work.entry.type: hr_work_entry.id_work_entry_type_overtime
+NEW hr.work.entry.type: hr_work_entry.id_work_entry_type_sick_leave
+NEW hr.work.entry.type: hr_work_entry.id_work_entry_type_unpaid_leave
+NEW hr.work.entry.type: hr_work_entry.in_hr_work_entry_type_out_of_contract
+NEW hr.work.entry.type: hr_work_entry.in_work_entry_type_attendance
+NEW hr.work.entry.type: hr_work_entry.in_work_entry_type_compensatory
+NEW hr.work.entry.type: hr_work_entry.in_work_entry_type_home_working
+NEW hr.work.entry.type: hr_work_entry.in_work_entry_type_leave
+NEW hr.work.entry.type: hr_work_entry.in_work_entry_type_legal_leave
+NEW hr.work.entry.type: hr_work_entry.in_work_entry_type_overtime
+NEW hr.work.entry.type: hr_work_entry.in_work_entry_type_public_holiday
+NEW hr.work.entry.type: hr_work_entry.in_work_entry_type_sick_leave
+NEW hr.work.entry.type: hr_work_entry.in_work_entry_type_unpaid_leave
+NEW hr.work.entry.type: hr_work_entry.iq_hr_work_entry_type_out_of_contract
+NEW hr.work.entry.type: hr_work_entry.iq_work_entry_type_attendance
+NEW hr.work.entry.type: hr_work_entry.iq_work_entry_type_compassionate_leave
+NEW hr.work.entry.type: hr_work_entry.iq_work_entry_type_compensatory
+NEW hr.work.entry.type: hr_work_entry.iq_work_entry_type_day_overtime
+NEW hr.work.entry.type: hr_work_entry.iq_work_entry_type_home_working
+NEW hr.work.entry.type: hr_work_entry.iq_work_entry_type_iddah_leave
+NEW hr.work.entry.type: hr_work_entry.iq_work_entry_type_leave
+NEW hr.work.entry.type: hr_work_entry.iq_work_entry_type_legal_leave
+NEW hr.work.entry.type: hr_work_entry.iq_work_entry_type_maternity_leave
+NEW hr.work.entry.type: hr_work_entry.iq_work_entry_type_night_overtime
+NEW hr.work.entry.type: hr_work_entry.iq_work_entry_type_overtime
+NEW hr.work.entry.type: hr_work_entry.iq_work_entry_type_public_duty
+NEW hr.work.entry.type: hr_work_entry.iq_work_entry_type_public_holiday
+NEW hr.work.entry.type: hr_work_entry.iq_work_entry_type_sick_leave
+NEW hr.work.entry.type: hr_work_entry.iq_work_entry_type_trade_union_duty
+NEW hr.work.entry.type: hr_work_entry.iq_work_entry_type_unpaid_leave
+NEW hr.work.entry.type: hr_work_entry.iq_work_entry_type_wedding_leave
+NEW hr.work.entry.type: hr_work_entry.it_hr_work_entry_type_out_of_contract
+NEW hr.work.entry.type: hr_work_entry.it_work_entry_type_attendance
+NEW hr.work.entry.type: hr_work_entry.it_work_entry_type_compensatory
+NEW hr.work.entry.type: hr_work_entry.it_work_entry_type_home_working
+NEW hr.work.entry.type: hr_work_entry.it_work_entry_type_leave
+NEW hr.work.entry.type: hr_work_entry.it_work_entry_type_legal_leave
+NEW hr.work.entry.type: hr_work_entry.it_work_entry_type_overtime
+NEW hr.work.entry.type: hr_work_entry.it_work_entry_type_public_holiday
+NEW hr.work.entry.type: hr_work_entry.it_work_entry_type_sick_leave
+NEW hr.work.entry.type: hr_work_entry.it_work_entry_type_unpaid_leave
+NEW hr.work.entry.type: hr_work_entry.jo_hr_work_entry_type_out_of_contract
+NEW hr.work.entry.type: hr_work_entry.jo_work_entry_type_attendance
+NEW hr.work.entry.type: hr_work_entry.jo_work_entry_type_compensatory
+NEW hr.work.entry.type: hr_work_entry.jo_work_entry_type_home_working
+NEW hr.work.entry.type: hr_work_entry.jo_work_entry_type_leave
+NEW hr.work.entry.type: hr_work_entry.jo_work_entry_type_legal_leave
+NEW hr.work.entry.type: hr_work_entry.jo_work_entry_type_overtime
+NEW hr.work.entry.type: hr_work_entry.jo_work_entry_type_public_holiday
+NEW hr.work.entry.type: hr_work_entry.jo_work_entry_type_sick_leave
+NEW hr.work.entry.type: hr_work_entry.jo_work_entry_type_unpaid_leave
+NEW hr.work.entry.type: hr_work_entry.ke_hr_work_entry_type_out_of_contract
+NEW hr.work.entry.type: hr_work_entry.ke_work_entry_type_attendance
+NEW hr.work.entry.type: hr_work_entry.ke_work_entry_type_compensatory
+NEW hr.work.entry.type: hr_work_entry.ke_work_entry_type_home_working
+NEW hr.work.entry.type: hr_work_entry.ke_work_entry_type_leave
+NEW hr.work.entry.type: hr_work_entry.ke_work_entry_type_legal_leave
+NEW hr.work.entry.type: hr_work_entry.ke_work_entry_type_overtime
+NEW hr.work.entry.type: hr_work_entry.ke_work_entry_type_public_holiday
+NEW hr.work.entry.type: hr_work_entry.ke_work_entry_type_sick_leave
+NEW hr.work.entry.type: hr_work_entry.ke_work_entry_type_unpaid_leave
+NEW hr.work.entry.type: hr_work_entry.l10n_ae_work_entry_type_weekend
+NEW hr.work.entry.type: hr_work_entry.l10n_au_work_entry_type_annual_leave
+NEW hr.work.entry.type: hr_work_entry.l10n_au_work_entry_type_community_service_leave
+hr.work.entry.type: hr_work_entry.l10n_au_work_entry_type_compensation (noupdate switched)
+hr.work.entry.type: hr_work_entry.l10n_au_work_entry_type_defence (noupdate switched)
+NEW hr.work.entry.type: hr_work_entry.l10n_au_work_entry_type_family_domestic_violence_leave
+hr.work.entry.type: hr_work_entry.l10n_au_work_entry_type_long_service_leave (noupdate switched)
+hr.work.entry.type: hr_work_entry.l10n_au_work_entry_type_overtime_pto (noupdate switched)
+hr.work.entry.type: hr_work_entry.l10n_au_work_entry_type_overtime_regular (noupdate switched)
+hr.work.entry.type: hr_work_entry.l10n_au_work_entry_type_overtime_saturday (noupdate switched)
+hr.work.entry.type: hr_work_entry.l10n_au_work_entry_type_overtime_saturday_pto (noupdate switched)
+hr.work.entry.type: hr_work_entry.l10n_au_work_entry_type_overtime_sunday (noupdate switched)
+hr.work.entry.type: hr_work_entry.l10n_au_work_entry_type_overtime_sunday_pto (noupdate switched)
+hr.work.entry.type: hr_work_entry.l10n_au_work_entry_type_parental (noupdate switched)
+hr.work.entry.type: hr_work_entry.l10n_au_work_entry_type_personal_leave (noupdate switched)
+NEW hr.work.entry.type: hr_work_entry.l10n_au_work_entry_type_public_holiday_saturday
+NEW hr.work.entry.type: hr_work_entry.l10n_au_work_entry_type_public_holiday_sunday
+NEW hr.work.entry.type: hr_work_entry.l10n_au_work_entry_type_public_holiday_week_day
+NEW hr.work.entry.type: hr_work_entry.l10n_au_work_entry_type_rostered_days_off
+NEW hr.work.entry.type: hr_work_entry.l10n_au_work_entry_type_saturday_shift
+NEW hr.work.entry.type: hr_work_entry.l10n_au_work_entry_type_sunday_shift
+NEW hr.work.entry.type: hr_work_entry.l10n_au_work_entry_type_time_off_in_lieu
+NEW hr.work.entry.type: hr_work_entry.l10n_be_work_entry_occupational_disease_unpaid
+NEW hr.work.entry.type: hr_work_entry.l10n_be_work_entry_type_adoption_company
+NEW hr.work.entry.type: hr_work_entry.l10n_be_work_entry_type_adoption_legal
+NEW hr.work.entry.type: hr_work_entry.l10n_be_work_entry_type_available_not_working
+hr.work.entry.type: hr_work_entry.l10n_be_work_entry_type_bank_holiday (noupdate switched)
+hr.work.entry.type: hr_work_entry.l10n_be_work_entry_type_breast_feeding (noupdate switched)
+NEW hr.work.entry.type: hr_work_entry.l10n_be_work_entry_type_breast_feeding_unassimilated
+NEW hr.work.entry.type: hr_work_entry.l10n_be_work_entry_type_civic_duty_unpaid
+NEW hr.work.entry.type: hr_work_entry.l10n_be_work_entry_type_common_law_illness_after_legal_period
+NEW hr.work.entry.type: hr_work_entry.l10n_be_work_entry_type_common_law_illness_ami
+NEW hr.work.entry.type: hr_work_entry.l10n_be_work_entry_type_common_law_illness_attributable_to_worker
+NEW hr.work.entry.type: hr_work_entry.l10n_be_work_entry_type_common_law_illness_non_attributable_to_worker
+NEW hr.work.entry.type: hr_work_entry.l10n_be_work_entry_type_construction_bad_weather_first_day
+NEW hr.work.entry.type: hr_work_entry.l10n_be_work_entry_type_construction_imperative_maintained_salary
+hr.work.entry.type: hr_work_entry.l10n_be_work_entry_type_credit_time (noupdate switched)
+NEW hr.work.entry.type: hr_work_entry.l10n_be_work_entry_type_death_close_family
+hr.work.entry.type: hr_work_entry.l10n_be_work_entry_type_economic_unemployment (noupdate switched)
+NEW hr.work.entry.type: hr_work_entry.l10n_be_work_entry_type_economic_unemployment_refused_by_administration
+NEW hr.work.entry.type: hr_work_entry.l10n_be_work_entry_type_end_of_carreer_exemption
+NEW hr.work.entry.type: hr_work_entry.l10n_be_work_entry_type_environmental_protection
+hr.work.entry.type: hr_work_entry.l10n_be_work_entry_type_european (noupdate switched)
+hr.work.entry.type: hr_work_entry.l10n_be_work_entry_type_extra_legal (noupdate switched)
+NEW hr.work.entry.type: hr_work_entry.l10n_be_work_entry_type_extra_legal_public_holiday
+NEW hr.work.entry.type: hr_work_entry.l10n_be_work_entry_type_extra_legal_sectoral_holiday
+hr.work.entry.type: hr_work_entry.l10n_be_work_entry_type_flemish_training_time_off (noupdate switched)
+NEW hr.work.entry.type: hr_work_entry.l10n_be_work_entry_type_flemish_training_time_off_with_meal_voucher
+NEW hr.work.entry.type: hr_work_entry.l10n_be_work_entry_type_foster_care
+NEW hr.work.entry.type: hr_work_entry.l10n_be_work_entry_type_guaranteed_wage_interrupted_day_illness
+NEW hr.work.entry.type: hr_work_entry.l10n_be_work_entry_type_holiday_previous_vacation_credit_year
+NEW hr.work.entry.type: hr_work_entry.l10n_be_work_entry_type_justified_reason_paid
+NEW hr.work.entry.type: hr_work_entry.l10n_be_work_entry_type_justified_reason_unpaid
+NEW hr.work.entry.type: hr_work_entry.l10n_be_work_entry_type_leave_palliative_care
+hr.work.entry.type: hr_work_entry.l10n_be_work_entry_type_long_sick (noupdate switched)
+hr.work.entry.type: hr_work_entry.l10n_be_work_entry_type_maternity (noupdate switched)
+NEW hr.work.entry.type: hr_work_entry.l10n_be_work_entry_type_maternity_time_off_converted
+hr.work.entry.type: hr_work_entry.l10n_be_work_entry_type_medical_assistance (noupdate switched)
+NEW hr.work.entry.type: hr_work_entry.l10n_be_work_entry_type_militia_obligation
+NEW hr.work.entry.type: hr_work_entry.l10n_be_work_entry_type_non_provided_service_childminders
+NEW hr.work.entry.type: hr_work_entry.l10n_be_work_entry_type_non_taxable_political_service
+NEW hr.work.entry.type: hr_work_entry.l10n_be_work_entry_type_normal_inactivity
+NEW hr.work.entry.type: hr_work_entry.l10n_be_work_entry_type_other_presence
+NEW hr.work.entry.type: hr_work_entry.l10n_be_work_entry_type_other_training
+NEW hr.work.entry.type: hr_work_entry.l10n_be_work_entry_type_overtime_no_onss
+NEW hr.work.entry.type: hr_work_entry.l10n_be_work_entry_type_overtime_no_onss_horeca
+NEW hr.work.entry.type: hr_work_entry.l10n_be_work_entry_type_overtime_recoverable
+NEW hr.work.entry.type: hr_work_entry.l10n_be_work_entry_type_paid_absence
+NEW hr.work.entry.type: hr_work_entry.l10n_be_work_entry_type_paid_compensatory_rest
+hr.work.entry.type: hr_work_entry.l10n_be_work_entry_type_parental_time_off (noupdate switched)
+hr.work.entry.type: hr_work_entry.l10n_be_work_entry_type_partial_incapacity (noupdate switched)
+NEW hr.work.entry.type: hr_work_entry.l10n_be_work_entry_type_partial_incapacity_unassimilated
+hr.work.entry.type: hr_work_entry.l10n_be_work_entry_type_paternity_company (noupdate switched)
+hr.work.entry.type: hr_work_entry.l10n_be_work_entry_type_paternity_legal (noupdate switched)
+hr.work.entry.type: hr_work_entry.l10n_be_work_entry_type_phc (noupdate switched)
+NEW hr.work.entry.type: hr_work_entry.l10n_be_work_entry_type_political_leave
+NEW hr.work.entry.type: hr_work_entry.l10n_be_work_entry_type_postponed_paid_time_off_n1
+NEW hr.work.entry.type: hr_work_entry.l10n_be_work_entry_type_postponed_paid_time_off_n2
+NEW hr.work.entry.type: hr_work_entry.l10n_be_work_entry_type_prophylactic_time_off
+NEW hr.work.entry.type: hr_work_entry.l10n_be_work_entry_type_prophylactic_time_off_maternity_protection
+NEW hr.work.entry.type: hr_work_entry.l10n_be_work_entry_type_public_holiday_temporary_unemployment
+NEW hr.work.entry.type: hr_work_entry.l10n_be_work_entry_type_public_holiday_temporary_unemployment_no_onss
+NEW hr.work.entry.type: hr_work_entry.l10n_be_work_entry_type_public_holiday_working_with_recovery
+NEW hr.work.entry.type: hr_work_entry.l10n_be_work_entry_type_public_holiday_working_without_recovery
+NEW hr.work.entry.type: hr_work_entry.l10n_be_work_entry_type_public_mandate_unpaid
+hr.work.entry.type: hr_work_entry.l10n_be_work_entry_type_recovery_additional (noupdate switched)
+NEW hr.work.entry.type: hr_work_entry.l10n_be_work_entry_type_sailor_time_off
+NEW hr.work.entry.type: hr_work_entry.l10n_be_work_entry_type_schooldays
+NEW hr.work.entry.type: hr_work_entry.l10n_be_work_entry_type_sectoral_compensatory_rest
+NEW hr.work.entry.type: hr_work_entry.l10n_be_work_entry_type_senior_time_off
+hr.work.entry.type: hr_work_entry.l10n_be_work_entry_type_small_unemployment (noupdate switched)
+NEW hr.work.entry.type: hr_work_entry.l10n_be_work_entry_type_social_judge
+hr.work.entry.type: hr_work_entry.l10n_be_work_entry_type_solicitation_time_off (noupdate switched)
+hr.work.entry.type: hr_work_entry.l10n_be_work_entry_type_strike (noupdate switched)
+NEW hr.work.entry.type: hr_work_entry.l10n_be_work_entry_type_temporary_economic_unemployement_employee
+NEW hr.work.entry.type: hr_work_entry.l10n_be_work_entry_type_temporary_unemployment_bad_weather
+NEW hr.work.entry.type: hr_work_entry.l10n_be_work_entry_type_temporary_unemployment_collective_closure
+NEW hr.work.entry.type: hr_work_entry.l10n_be_work_entry_type_temporary_unemployment_collective_closure_agreeement
+NEW hr.work.entry.type: hr_work_entry.l10n_be_work_entry_type_temporary_unemployment_collective_closure_reduction
+NEW hr.work.entry.type: hr_work_entry.l10n_be_work_entry_type_temporary_unemployment_dismissal
+NEW hr.work.entry.type: hr_work_entry.l10n_be_work_entry_type_temporary_unemployment_force_majeure
+NEW hr.work.entry.type: hr_work_entry.l10n_be_work_entry_type_temporary_unemployment_force_majeure_medical
+NEW hr.work.entry.type: hr_work_entry.l10n_be_work_entry_type_temporary_unemployment_incident
+NEW hr.work.entry.type: hr_work_entry.l10n_be_work_entry_type_temporary_unemployment_strike
+NEW hr.work.entry.type: hr_work_entry.l10n_be_work_entry_type_thematic_leave_informal_carer
+NEW hr.work.entry.type: hr_work_entry.l10n_be_work_entry_type_time_credit_not_equated
+hr.work.entry.type: hr_work_entry.l10n_be_work_entry_type_training (noupdate switched)
+NEW hr.work.entry.type: hr_work_entry.l10n_be_work_entry_type_training_social_promotion
+hr.work.entry.type: hr_work_entry.l10n_be_work_entry_type_training_time_off (noupdate switched)
+NEW hr.work.entry.type: hr_work_entry.l10n_be_work_entry_type_training_time_off_with_meal_voucher
+NEW hr.work.entry.type: hr_work_entry.l10n_be_work_entry_type_union_mission
+NEW hr.work.entry.type: hr_work_entry.l10n_be_work_entry_type_union_mission_unpaid
+hr.work.entry.type: hr_work_entry.l10n_be_work_entry_type_unjustified_reason (noupdate switched)
+NEW hr.work.entry.type: hr_work_entry.l10n_be_work_entry_type_unpaid_compensatory_rest
+NEW hr.work.entry.type: hr_work_entry.l10n_be_work_entry_type_unpaid_recovered_compensatory_rest
+hr.work.entry.type: hr_work_entry.l10n_be_work_entry_type_unpredictable (noupdate switched)
+NEW hr.work.entry.type: hr_work_entry.l10n_be_work_entry_type_upcomming_public_holiday
+NEW hr.work.entry.type: hr_work_entry.l10n_be_work_entry_type_voluntary_overtime_150
+NEW hr.work.entry.type: hr_work_entry.l10n_be_work_entry_type_voluntary_overtime_200
+NEW hr.work.entry.type: hr_work_entry.l10n_be_work_entry_type_voluntary_overtime_net
+NEW hr.work.entry.type: hr_work_entry.l10n_be_work_entry_type_work_accident_first_week
+NEW hr.work.entry.type: hr_work_entry.l10n_be_work_entry_type_work_accident_guaranteed_monthly
+NEW hr.work.entry.type: hr_work_entry.l10n_be_work_entry_type_work_accident_second_week
+NEW hr.work.entry.type: hr_work_entry.l10n_be_work_entry_type_work_accident_second_week_short_term_employee
+NEW hr.work.entry.type: hr_work_entry.l10n_be_work_entry_type_work_accident_unassimilated
+NEW hr.work.entry.type: hr_work_entry.l10n_be_work_entry_type_work_accident_unpaid
+NEW hr.work.entry.type: hr_work_entry.l10n_be_work_entry_type_work_incapacity_first_week
+NEW hr.work.entry.type: hr_work_entry.l10n_be_work_entry_type_work_incapacity_sickness_credit
+NEW hr.work.entry.type: hr_work_entry.l10n_be_work_entry_type_work_incapacity_worker_after_second_week
+NEW hr.work.entry.type: hr_work_entry.l10n_be_work_entry_type_work_incapacity_worker_second_week
+NEW hr.work.entry.type: hr_work_entry.l10n_be_work_entry_type_work_incapacity_worker_second_week_short_term_employee
+NEW hr.work.entry.type: hr_work_entry.l10n_be_work_entry_type_worker_time_off
+hr.work.entry.type: hr_work_entry.l10n_be_work_entry_type_youth_time_off (noupdate switched)
+hr.work.entry.type: hr_work_entry.l10n_ch_swissdec_accident_wt (noupdate switched)
+hr.work.entry.type: hr_work_entry.l10n_ch_swissdec_accident_wt_hourly (noupdate switched)
+hr.work.entry.type: hr_work_entry.l10n_ch_swissdec_hourly_wt (noupdate switched)
+hr.work.entry.type: hr_work_entry.l10n_ch_swissdec_illness_wt (noupdate switched)
+hr.work.entry.type: hr_work_entry.l10n_ch_swissdec_illness_wt_hourly (noupdate switched)
+hr.work.entry.type: hr_work_entry.l10n_ch_swissdec_interruption_wt (noupdate switched)
+hr.work.entry.type: hr_work_entry.l10n_ch_swissdec_lesson_wt (noupdate switched)
+hr.work.entry.type: hr_work_entry.l10n_ch_swissdec_maternity_wt (noupdate switched)
+hr.work.entry.type: hr_work_entry.l10n_ch_swissdec_maternity_wt_hourly (noupdate switched)
+hr.work.entry.type: hr_work_entry.l10n_ch_swissdec_military_wt (noupdate switched)
+hr.work.entry.type: hr_work_entry.l10n_ch_swissdec_military_wt_hourly (noupdate switched)
+hr.work.entry.type: hr_work_entry.l10n_ch_swissdec_monthly_wt (noupdate switched)
+hr.work.entry.type: hr_work_entry.l10n_ch_swissdec_overtime_125_wt (noupdate switched)
+hr.work.entry.type: hr_work_entry.l10n_ch_swissdec_overtime_wt (noupdate switched)
+hr.work.entry.type: hr_work_entry.l10n_ch_swissdec_unpaid_wt (noupdate switched)
+hr.work.entry.type: hr_work_entry.l10n_ch_work_entry_type_bank_holiday (noupdate switched)
+NEW hr.work.entry.type: hr_work_entry.l10n_eg_work_entry_type_death
+NEW hr.work.entry.type: hr_work_entry.l10n_eg_work_entry_type_hajj
+NEW hr.work.entry.type: hr_work_entry.l10n_eg_work_entry_type_marriage
+NEW hr.work.entry.type: hr_work_entry.l10n_eg_work_entry_type_maternity
+NEW hr.work.entry.type: hr_work_entry.l10n_eg_work_entry_type_overtime_public_holiday
+NEW hr.work.entry.type: hr_work_entry.l10n_eg_work_entry_type_overtime_rest_days
+NEW hr.work.entry.type: hr_work_entry.l10n_eg_work_entry_type_overtime_work_days_daytime
+NEW hr.work.entry.type: hr_work_entry.l10n_eg_work_entry_type_overtime_work_days_nighttime
+hr.work.entry.type: hr_work_entry.l10n_eg_work_entry_type_paid_sick_leave (noupdate switched)
+hr.work.entry.type: hr_work_entry.l10n_eg_work_entry_type_sick_leave_75 (noupdate switched)
+hr.work.entry.type: hr_work_entry.l10n_eg_work_entry_type_sick_leave_unpaid (noupdate switched)
+NEW hr.work.entry.type: hr_work_entry.l10n_eg_work_entry_type_weekend
+NEW hr.work.entry.type: hr_work_entry.l10n_hk_work_entry_type_annual_leave
+hr.work.entry.type: hr_work_entry.l10n_hk_work_entry_type_compassionate_leave (noupdate switched)
+hr.work.entry.type: hr_work_entry.l10n_hk_work_entry_type_examination_leave (noupdate switched)
+hr.work.entry.type: hr_work_entry.l10n_hk_work_entry_type_marriage_leave (noupdate switched)
+hr.work.entry.type: hr_work_entry.l10n_hk_work_entry_type_maternity_leave (noupdate switched)
+hr.work.entry.type: hr_work_entry.l10n_hk_work_entry_type_maternity_leave_80 (noupdate switched)
+hr.work.entry.type: hr_work_entry.l10n_hk_work_entry_type_paternity_leave (noupdate switched)
+hr.work.entry.type: hr_work_entry.l10n_hk_work_entry_type_paternity_leave_80 (noupdate switched)
+hr.work.entry.type: hr_work_entry.l10n_hk_work_entry_type_public_holiday (noupdate switched)
+hr.work.entry.type: hr_work_entry.l10n_hk_work_entry_type_sick_leave_80 (noupdate switched)
+hr.work.entry.type: hr_work_entry.l10n_hk_work_entry_type_statutory_holiday (noupdate switched)
+hr.work.entry.type: hr_work_entry.l10n_hk_work_entry_type_weekend (noupdate switched)
+NEW hr.work.entry.type: hr_work_entry.l10n_hk_work_entry_type_work_injury_sick_leave_80
+NEW hr.work.entry.type: hr_work_entry.l10n_id_work_entry_type_annual_leave
+hr.work.entry.type: hr_work_entry.l10n_id_work_entry_type_bereavement_leave (noupdate switched)
+hr.work.entry.type: hr_work_entry.l10n_id_work_entry_type_marriage_leave (noupdate switched)
+hr.work.entry.type: hr_work_entry.l10n_id_work_entry_type_maternity_leave (noupdate switched)
+NEW hr.work.entry.type: hr_work_entry.l10n_id_work_entry_type_overtime_1
+NEW hr.work.entry.type: hr_work_entry.l10n_id_work_entry_type_overtime_2
+hr.work.entry.type: hr_work_entry.l10n_id_work_entry_type_paternity_leave (noupdate switched)
+hr.work.entry.type: hr_work_entry.l10n_id_work_entry_type_public_holiday (noupdate switched)
+NEW hr.work.entry.type: hr_work_entry.l10n_jo_work_entry_type_maternity
+NEW hr.work.entry.type: hr_work_entry.l10n_jo_work_entry_type_paternity
+NEW hr.work.entry.type: hr_work_entry.l10n_jo_work_entry_type_pilgrimage
+NEW hr.work.entry.type: hr_work_entry.l10n_jo_work_entry_type_public_holidays_overtime
+NEW hr.work.entry.type: hr_work_entry.l10n_jo_work_entry_type_rest_days_overtime
+hr.work.entry.type: hr_work_entry.l10n_jo_work_entry_type_sick_leave_unpaid (noupdate switched)
+NEW hr.work.entry.type: hr_work_entry.l10n_jo_work_entry_type_study
+NEW hr.work.entry.type: hr_work_entry.l10n_jo_work_entry_type_week_days_overtime
+NEW hr.work.entry.type: hr_work_entry.l10n_kw_work_entry_type_annual_leave
+NEW hr.work.entry.type: hr_work_entry.l10n_kw_work_entry_type_attendance
+NEW hr.work.entry.type: hr_work_entry.l10n_kw_work_entry_type_compassionate_leave
+NEW hr.work.entry.type: hr_work_entry.l10n_kw_work_entry_type_compensatory
+NEW hr.work.entry.type: hr_work_entry.l10n_kw_work_entry_type_hajj_leave
+NEW hr.work.entry.type: hr_work_entry.l10n_kw_work_entry_type_home_working
+NEW hr.work.entry.type: hr_work_entry.l10n_kw_work_entry_type_leave
+NEW hr.work.entry.type: hr_work_entry.l10n_kw_work_entry_type_maternity_leave
+NEW hr.work.entry.type: hr_work_entry.l10n_kw_work_entry_type_out_of_contract
+NEW hr.work.entry.type: hr_work_entry.l10n_kw_work_entry_type_overtime
+NEW hr.work.entry.type: hr_work_entry.l10n_kw_work_entry_type_paid_leave
+NEW hr.work.entry.type: hr_work_entry.l10n_kw_work_entry_type_paid_time_off
+NEW hr.work.entry.type: hr_work_entry.l10n_kw_work_entry_type_public_holiday
+NEW hr.work.entry.type: hr_work_entry.l10n_kw_work_entry_type_sick_leave
+NEW hr.work.entry.type: hr_work_entry.l10n_kw_work_entry_type_study_leave
+NEW hr.work.entry.type: hr_work_entry.l10n_kw_work_entry_type_unpaid_leave
+NEW hr.work.entry.type: hr_work_entry.l10n_lu_work_entry_type_caring_leave
+NEW hr.work.entry.type: hr_work_entry.l10n_lu_work_entry_type_family_reason_leave
+NEW hr.work.entry.type: hr_work_entry.l10n_lu_work_entry_type_maternity_leave
+NEW hr.work.entry.type: hr_work_entry.l10n_lu_work_entry_type_sick_leave
+NEW hr.work.entry.type: hr_work_entry.l10n_lu_work_entry_type_sick_leave_paid_by_CNS
+hr.work.entry.type: hr_work_entry.l10n_lu_work_entry_type_situational_unemployment (noupdate switched)
+NEW hr.work.entry.type: hr_work_entry.l10n_lu_work_entry_type_welcome_leave
+hr.work.entry.type: hr_work_entry.l10n_mx_work_entry_type_care_children_with_cancer_imss (noupdate switched)
+hr.work.entry.type: hr_work_entry.l10n_mx_work_entry_type_disability_due_to_illness_imss (noupdate switched)
+hr.work.entry.type: hr_work_entry.l10n_mx_work_entry_type_maternity_imss (noupdate switched)
+hr.work.entry.type: hr_work_entry.l10n_mx_work_entry_type_work_risk_imss (noupdate switched)
+NEW hr.work.entry.type: hr_work_entry.l10n_om_work_entry_type_fdrcl
+NEW hr.work.entry.type: hr_work_entry.l10n_om_work_entry_type_hajj
+NEW hr.work.entry.type: hr_work_entry.l10n_om_work_entry_type_iddah
+NEW hr.work.entry.type: hr_work_entry.l10n_om_work_entry_type_maternity
+NEW hr.work.entry.type: hr_work_entry.l10n_om_work_entry_type_overtime_rest_days
+NEW hr.work.entry.type: hr_work_entry.l10n_om_work_entry_type_overtime_special_rest_days
+NEW hr.work.entry.type: hr_work_entry.l10n_om_work_entry_type_overtime_special_work_days_daytime
+NEW hr.work.entry.type: hr_work_entry.l10n_om_work_entry_type_overtime_special_work_days_nighttime
+NEW hr.work.entry.type: hr_work_entry.l10n_om_work_entry_type_overtime_work_days_daytime
+NEW hr.work.entry.type: hr_work_entry.l10n_om_work_entry_type_overtime_work_days_nighttime
+NEW hr.work.entry.type: hr_work_entry.l10n_om_work_entry_type_paternity
+NEW hr.work.entry.type: hr_work_entry.l10n_om_work_entry_type_sdrcl
+NEW hr.work.entry.type: hr_work_entry.l10n_om_work_entry_type_sick_leave_0
+NEW hr.work.entry.type: hr_work_entry.l10n_om_work_entry_type_sick_leave_100
+NEW hr.work.entry.type: hr_work_entry.l10n_om_work_entry_type_sick_leave_35
+NEW hr.work.entry.type: hr_work_entry.l10n_om_work_entry_type_sick_leave_50
+NEW hr.work.entry.type: hr_work_entry.l10n_om_work_entry_type_sick_leave_75
+NEW hr.work.entry.type: hr_work_entry.l10n_ph_hr_payroll_dh_leave
+NEW hr.work.entry.type: hr_work_entry.l10n_ph_hr_payroll_dvl_leave
+NEW hr.work.entry.type: hr_work_entry.l10n_ph_hr_payroll_mat_leave
+NEW hr.work.entry.type: hr_work_entry.l10n_ph_hr_payroll_ns
+NEW hr.work.entry.type: hr_work_entry.l10n_ph_hr_payroll_ns_dbl_hol
+NEW hr.work.entry.type: hr_work_entry.l10n_ph_hr_payroll_ns_dbl_hol_rest
+NEW hr.work.entry.type: hr_work_entry.l10n_ph_hr_payroll_ns_overtime
+NEW hr.work.entry.type: hr_work_entry.l10n_ph_hr_payroll_ns_overtime_dbl_hol
+NEW hr.work.entry.type: hr_work_entry.l10n_ph_hr_payroll_ns_overtime_dbl_hol_rest
+NEW hr.work.entry.type: hr_work_entry.l10n_ph_hr_payroll_ns_overtime_rest
+NEW hr.work.entry.type: hr_work_entry.l10n_ph_hr_payroll_ns_overtime_rh
+NEW hr.work.entry.type: hr_work_entry.l10n_ph_hr_payroll_ns_overtime_rh_rest
+NEW hr.work.entry.type: hr_work_entry.l10n_ph_hr_payroll_ns_overtime_snw
+NEW hr.work.entry.type: hr_work_entry.l10n_ph_hr_payroll_ns_overtime_snw_rest
+NEW hr.work.entry.type: hr_work_entry.l10n_ph_hr_payroll_ns_rest
+NEW hr.work.entry.type: hr_work_entry.l10n_ph_hr_payroll_ns_rh
+NEW hr.work.entry.type: hr_work_entry.l10n_ph_hr_payroll_ns_rh_rest
+NEW hr.work.entry.type: hr_work_entry.l10n_ph_hr_payroll_ns_snw
+NEW hr.work.entry.type: hr_work_entry.l10n_ph_hr_payroll_ns_snw_rest
+NEW hr.work.entry.type: hr_work_entry.l10n_ph_hr_payroll_out_of_contract
+NEW hr.work.entry.type: hr_work_entry.l10n_ph_hr_payroll_overtime
+NEW hr.work.entry.type: hr_work_entry.l10n_ph_hr_payroll_overtime_dbl_hol
+NEW hr.work.entry.type: hr_work_entry.l10n_ph_hr_payroll_overtime_dbl_hol_rest
+NEW hr.work.entry.type: hr_work_entry.l10n_ph_hr_payroll_overtime_rest
+NEW hr.work.entry.type: hr_work_entry.l10n_ph_hr_payroll_overtime_rh
+NEW hr.work.entry.type: hr_work_entry.l10n_ph_hr_payroll_overtime_rh_rest
+NEW hr.work.entry.type: hr_work_entry.l10n_ph_hr_payroll_overtime_snw
+NEW hr.work.entry.type: hr_work_entry.l10n_ph_hr_payroll_overtime_snw_rest
+NEW hr.work.entry.type: hr_work_entry.l10n_ph_hr_payroll_pat_leave
+NEW hr.work.entry.type: hr_work_entry.l10n_ph_hr_payroll_rh_leave
+NEW hr.work.entry.type: hr_work_entry.l10n_ph_hr_payroll_sil_leave
+NEW hr.work.entry.type: hr_work_entry.l10n_ph_hr_payroll_slfw_leave
+NEW hr.work.entry.type: hr_work_entry.l10n_ph_hr_payroll_snwh_leave
+NEW hr.work.entry.type: hr_work_entry.l10n_ph_hr_payroll_spl_leave
+NEW hr.work.entry.type: hr_work_entry.l10n_ph_hr_payroll_tardiness
+NEW hr.work.entry.type: hr_work_entry.l10n_ph_hr_payroll_unpaid_leave
+hr.work.entry.type: hr_work_entry.l10n_pl_work_entry_type_sick_leave (noupdate switched)
+hr.work.entry.type: hr_work_entry.l10n_sa_work_entry_type_emergency (noupdate switched)
+NEW hr.work.entry.type: hr_work_entry.l10n_sa_work_entry_type_hajj
+NEW hr.work.entry.type: hr_work_entry.l10n_sa_work_entry_type_iddah
+NEW hr.work.entry.type: hr_work_entry.l10n_sa_work_entry_type_marriage
+hr.work.entry.type: hr_work_entry.l10n_sa_work_entry_type_maternity (noupdate switched)
+NEW hr.work.entry.type: hr_work_entry.l10n_sa_work_entry_type_overtime
+NEW hr.work.entry.type: hr_work_entry.l10n_sa_work_entry_type_paternity
+hr.work.entry.type: hr_work_entry.l10n_sa_work_entry_type_sick_leave_0 (noupdate switched)
+hr.work.entry.type: hr_work_entry.l10n_sa_work_entry_type_sick_leave_75 (noupdate switched)
+NEW hr.work.entry.type: hr_work_entry.l10n_sa_work_entry_type_study
+NEW hr.work.entry.type: hr_work_entry.l10n_sa_work_entry_type_weekend
+hr.work.entry.type: hr_work_entry.l10n_sk_work_entry_type_maternity (noupdate switched)
+hr.work.entry.type: hr_work_entry.l10n_sk_work_entry_type_parental_time_off (noupdate switched)
+hr.work.entry.type: hr_work_entry.l10n_sk_work_entry_type_sick_0 (noupdate switched)
+hr.work.entry.type: hr_work_entry.l10n_sk_work_entry_type_sick_25 (noupdate switched)
+hr.work.entry.type: hr_work_entry.l10n_sk_work_entry_type_sick_55 (noupdate switched)
+NEW hr.work.entry.type: hr_work_entry.l10n_tr_work_entry_type_bereavement_leave
+NEW hr.work.entry.type: hr_work_entry.l10n_tr_work_entry_type_excuse_leave
+NEW hr.work.entry.type: hr_work_entry.l10n_tr_work_entry_type_maternity_leave
+NEW hr.work.entry.type: hr_work_entry.l10n_tr_work_entry_type_paternity_leave
+NEW hr.work.entry.type: hr_work_entry.l10n_us_work_entry_type_bereavement
+hr.work.entry.type: hr_work_entry.l10n_us_work_entry_type_double (noupdate switched)
+NEW hr.work.entry.type: hr_work_entry.l10n_us_work_entry_type_fmla_leave
+NEW hr.work.entry.type: hr_work_entry.l10n_us_work_entry_type_jury_duty
+hr.work.entry.type: hr_work_entry.l10n_us_work_entry_type_overtime (noupdate switched)
+NEW hr.work.entry.type: hr_work_entry.l10n_us_work_entry_type_statutory_holiday
+NEW hr.work.entry.type: hr_work_entry.lt_hr_work_entry_type_out_of_contract
+NEW hr.work.entry.type: hr_work_entry.lt_work_entry_type_attendance
+NEW hr.work.entry.type: hr_work_entry.lt_work_entry_type_compensatory
+NEW hr.work.entry.type: hr_work_entry.lt_work_entry_type_home_working
+NEW hr.work.entry.type: hr_work_entry.lt_work_entry_type_leave
+NEW hr.work.entry.type: hr_work_entry.lt_work_entry_type_legal_leave
+NEW hr.work.entry.type: hr_work_entry.lt_work_entry_type_overtime
+NEW hr.work.entry.type: hr_work_entry.lt_work_entry_type_public_holiday
+NEW hr.work.entry.type: hr_work_entry.lt_work_entry_type_sick_leave
+NEW hr.work.entry.type: hr_work_entry.lt_work_entry_type_unpaid_leave
+NEW hr.work.entry.type: hr_work_entry.lu_hr_work_entry_type_out_of_contract
+NEW hr.work.entry.type: hr_work_entry.lu_work_entry_type_attendance
+NEW hr.work.entry.type: hr_work_entry.lu_work_entry_type_compensatory
+NEW hr.work.entry.type: hr_work_entry.lu_work_entry_type_home_working
+NEW hr.work.entry.type: hr_work_entry.lu_work_entry_type_leave
+NEW hr.work.entry.type: hr_work_entry.lu_work_entry_type_legal_leave
+NEW hr.work.entry.type: hr_work_entry.lu_work_entry_type_overtime
+NEW hr.work.entry.type: hr_work_entry.lu_work_entry_type_public_holiday
+NEW hr.work.entry.type: hr_work_entry.lu_work_entry_type_sick_leave
+NEW hr.work.entry.type: hr_work_entry.lu_work_entry_type_unpaid_leave
+NEW hr.work.entry.type: hr_work_entry.ma_hr_work_entry_type_out_of_contract
+NEW hr.work.entry.type: hr_work_entry.ma_work_entry_type_attendance
+NEW hr.work.entry.type: hr_work_entry.ma_work_entry_type_compensatory
+NEW hr.work.entry.type: hr_work_entry.ma_work_entry_type_home_working
+NEW hr.work.entry.type: hr_work_entry.ma_work_entry_type_leave
+NEW hr.work.entry.type: hr_work_entry.ma_work_entry_type_legal_leave
+NEW hr.work.entry.type: hr_work_entry.ma_work_entry_type_overtime
+NEW hr.work.entry.type: hr_work_entry.ma_work_entry_type_public_holiday
+NEW hr.work.entry.type: hr_work_entry.ma_work_entry_type_sick_leave
+NEW hr.work.entry.type: hr_work_entry.ma_work_entry_type_unpaid_leave
+NEW hr.work.entry.type: hr_work_entry.mx_hr_work_entry_type_out_of_contract
+NEW hr.work.entry.type: hr_work_entry.mx_work_entry_type_attendance
+NEW hr.work.entry.type: hr_work_entry.mx_work_entry_type_compensatory
+NEW hr.work.entry.type: hr_work_entry.mx_work_entry_type_home_working
+NEW hr.work.entry.type: hr_work_entry.mx_work_entry_type_leave
+NEW hr.work.entry.type: hr_work_entry.mx_work_entry_type_legal_leave
+NEW hr.work.entry.type: hr_work_entry.mx_work_entry_type_overtime
+NEW hr.work.entry.type: hr_work_entry.mx_work_entry_type_public_holiday
+NEW hr.work.entry.type: hr_work_entry.mx_work_entry_type_seventh_day
+NEW hr.work.entry.type: hr_work_entry.mx_work_entry_type_sick_leave
+NEW hr.work.entry.type: hr_work_entry.mx_work_entry_type_unpaid_leave
+NEW hr.work.entry.type: hr_work_entry.my_hr_work_entry_type_out_of_contract
+NEW hr.work.entry.type: hr_work_entry.my_work_entry_type_attendance
+NEW hr.work.entry.type: hr_work_entry.my_work_entry_type_compensatory
+NEW hr.work.entry.type: hr_work_entry.my_work_entry_type_home_working
+NEW hr.work.entry.type: hr_work_entry.my_work_entry_type_leave
+NEW hr.work.entry.type: hr_work_entry.my_work_entry_type_legal_leave
+NEW hr.work.entry.type: hr_work_entry.my_work_entry_type_overtime
+NEW hr.work.entry.type: hr_work_entry.my_work_entry_type_public_holiday
+NEW hr.work.entry.type: hr_work_entry.my_work_entry_type_sick_leave
+NEW hr.work.entry.type: hr_work_entry.my_work_entry_type_unpaid_leave
+NEW hr.work.entry.type: hr_work_entry.nl_hr_work_entry_type_out_of_contract
+NEW hr.work.entry.type: hr_work_entry.nl_work_entry_type_attendance
+NEW hr.work.entry.type: hr_work_entry.nl_work_entry_type_compensatory
+NEW hr.work.entry.type: hr_work_entry.nl_work_entry_type_home_working
+NEW hr.work.entry.type: hr_work_entry.nl_work_entry_type_leave
+NEW hr.work.entry.type: hr_work_entry.nl_work_entry_type_legal_leave
+NEW hr.work.entry.type: hr_work_entry.nl_work_entry_type_overtime
+NEW hr.work.entry.type: hr_work_entry.nl_work_entry_type_public_holiday
+NEW hr.work.entry.type: hr_work_entry.nl_work_entry_type_sick_leave
+NEW hr.work.entry.type: hr_work_entry.nl_work_entry_type_unpaid_leave
+NEW hr.work.entry.type: hr_work_entry.om_hr_work_entry_type_out_of_contract
+NEW hr.work.entry.type: hr_work_entry.om_work_entry_type_attendance
+NEW hr.work.entry.type: hr_work_entry.om_work_entry_type_compensatory
+NEW hr.work.entry.type: hr_work_entry.om_work_entry_type_home_working
+NEW hr.work.entry.type: hr_work_entry.om_work_entry_type_leave
+NEW hr.work.entry.type: hr_work_entry.om_work_entry_type_legal_leave
+NEW hr.work.entry.type: hr_work_entry.om_work_entry_type_overtime
+NEW hr.work.entry.type: hr_work_entry.om_work_entry_type_public_holiday
+NEW hr.work.entry.type: hr_work_entry.om_work_entry_type_sick_leave
+NEW hr.work.entry.type: hr_work_entry.om_work_entry_type_unpaid_leave
+NEW hr.work.entry.type: hr_work_entry.ph_work_entry_type_attendance
+NEW hr.work.entry.type: hr_work_entry.ph_work_entry_type_compensatory
+NEW hr.work.entry.type: hr_work_entry.ph_work_entry_type_home_working
+NEW hr.work.entry.type: hr_work_entry.ph_work_entry_type_leave
+NEW hr.work.entry.type: hr_work_entry.ph_work_entry_type_legal_leave
+NEW hr.work.entry.type: hr_work_entry.ph_work_entry_type_public_holiday
+NEW hr.work.entry.type: hr_work_entry.ph_work_entry_type_sick_leave
+NEW hr.work.entry.type: hr_work_entry.pk_hr_work_entry_type_out_of_contract
+NEW hr.work.entry.type: hr_work_entry.pk_work_entry_type_attendance
+NEW hr.work.entry.type: hr_work_entry.pk_work_entry_type_compensatory
+NEW hr.work.entry.type: hr_work_entry.pk_work_entry_type_home_working
+NEW hr.work.entry.type: hr_work_entry.pk_work_entry_type_leave
+NEW hr.work.entry.type: hr_work_entry.pk_work_entry_type_legal_leave
+NEW hr.work.entry.type: hr_work_entry.pk_work_entry_type_overtime
+NEW hr.work.entry.type: hr_work_entry.pk_work_entry_type_public_holiday
+NEW hr.work.entry.type: hr_work_entry.pk_work_entry_type_sick_leave
+NEW hr.work.entry.type: hr_work_entry.pk_work_entry_type_unpaid_leave
+NEW hr.work.entry.type: hr_work_entry.pl_hr_work_entry_type_out_of_contract
+NEW hr.work.entry.type: hr_work_entry.pl_work_entry_type_attendance
+NEW hr.work.entry.type: hr_work_entry.pl_work_entry_type_compensatory
+NEW hr.work.entry.type: hr_work_entry.pl_work_entry_type_home_working
+NEW hr.work.entry.type: hr_work_entry.pl_work_entry_type_leave
+NEW hr.work.entry.type: hr_work_entry.pl_work_entry_type_legal_leave
+NEW hr.work.entry.type: hr_work_entry.pl_work_entry_type_overtime
+NEW hr.work.entry.type: hr_work_entry.pl_work_entry_type_public_holiday
+NEW hr.work.entry.type: hr_work_entry.pl_work_entry_type_sick_leave
+NEW hr.work.entry.type: hr_work_entry.pl_work_entry_type_unpaid_leave
+NEW hr.work.entry.type: hr_work_entry.ro_hr_work_entry_type_out_of_contract
+NEW hr.work.entry.type: hr_work_entry.ro_work_entry_type_attendance
+NEW hr.work.entry.type: hr_work_entry.ro_work_entry_type_compensatory
+NEW hr.work.entry.type: hr_work_entry.ro_work_entry_type_home_working
+NEW hr.work.entry.type: hr_work_entry.ro_work_entry_type_leave
+NEW hr.work.entry.type: hr_work_entry.ro_work_entry_type_legal_leave
+NEW hr.work.entry.type: hr_work_entry.ro_work_entry_type_overtime
+NEW hr.work.entry.type: hr_work_entry.ro_work_entry_type_public_holiday
+NEW hr.work.entry.type: hr_work_entry.ro_work_entry_type_sick_leave
+NEW hr.work.entry.type: hr_work_entry.ro_work_entry_type_unpaid_leave
+NEW hr.work.entry.type: hr_work_entry.sa_hr_work_entry_type_out_of_contract
+NEW hr.work.entry.type: hr_work_entry.sa_work_entry_type_attendance
+NEW hr.work.entry.type: hr_work_entry.sa_work_entry_type_compensatory
+NEW hr.work.entry.type: hr_work_entry.sa_work_entry_type_home_working
+NEW hr.work.entry.type: hr_work_entry.sa_work_entry_type_leave
+NEW hr.work.entry.type: hr_work_entry.sa_work_entry_type_legal_leave
+NEW hr.work.entry.type: hr_work_entry.sa_work_entry_type_overtime
+NEW hr.work.entry.type: hr_work_entry.sa_work_entry_type_public_holiday
+NEW hr.work.entry.type: hr_work_entry.sa_work_entry_type_sick_leave
+NEW hr.work.entry.type: hr_work_entry.sa_work_entry_type_unpaid_leave
+NEW hr.work.entry.type: hr_work_entry.sk_hr_work_entry_type_out_of_contract
+NEW hr.work.entry.type: hr_work_entry.sk_work_entry_type_attendance
+NEW hr.work.entry.type: hr_work_entry.sk_work_entry_type_compensatory
+NEW hr.work.entry.type: hr_work_entry.sk_work_entry_type_home_working
+NEW hr.work.entry.type: hr_work_entry.sk_work_entry_type_leave
+NEW hr.work.entry.type: hr_work_entry.sk_work_entry_type_legal_leave
+NEW hr.work.entry.type: hr_work_entry.sk_work_entry_type_overtime
+NEW hr.work.entry.type: hr_work_entry.sk_work_entry_type_public_holiday
+NEW hr.work.entry.type: hr_work_entry.sk_work_entry_type_sick_leave
+NEW hr.work.entry.type: hr_work_entry.sk_work_entry_type_unpaid_leave
+NEW hr.work.entry.type: hr_work_entry.tr_hr_work_entry_type_out_of_contract
+NEW hr.work.entry.type: hr_work_entry.tr_work_entry_type_attendance
+NEW hr.work.entry.type: hr_work_entry.tr_work_entry_type_compensatory
+NEW hr.work.entry.type: hr_work_entry.tr_work_entry_type_home_working
+NEW hr.work.entry.type: hr_work_entry.tr_work_entry_type_leave
+NEW hr.work.entry.type: hr_work_entry.tr_work_entry_type_legal_leave
+NEW hr.work.entry.type: hr_work_entry.tr_work_entry_type_overtime
+NEW hr.work.entry.type: hr_work_entry.tr_work_entry_type_public_holiday
+NEW hr.work.entry.type: hr_work_entry.tr_work_entry_type_sick_leave
+NEW hr.work.entry.type: hr_work_entry.tr_work_entry_type_unpaid_leave
+NEW hr.work.entry.type: hr_work_entry.uae_hr_work_entry_type_out_of_contract
+hr.work.entry.type: hr_work_entry.uae_public_holiday_entry_type (noupdate switched)
+NEW hr.work.entry.type: hr_work_entry.uae_work_entry_type_attendance
+NEW hr.work.entry.type: hr_work_entry.uae_work_entry_type_compensatory
+NEW hr.work.entry.type: hr_work_entry.uae_work_entry_type_home_working
+NEW hr.work.entry.type: hr_work_entry.uae_work_entry_type_leave
+NEW hr.work.entry.type: hr_work_entry.uae_work_entry_type_legal_leave
+NEW hr.work.entry.type: hr_work_entry.uae_work_entry_type_overtime
+hr.work.entry.type: hr_work_entry.uae_work_entry_type_overtime_off_days (noupdate switched)
+hr.work.entry.type: hr_work_entry.uae_work_entry_type_overtime_work_days_daytime (noupdate switched)
+hr.work.entry.type: hr_work_entry.uae_work_entry_type_overtime_work_days_nighttime (noupdate switched)
+NEW hr.work.entry.type: hr_work_entry.uae_work_entry_type_sick_leave
+NEW hr.work.entry.type: hr_work_entry.uae_work_entry_type_unpaid_leave
+NEW hr.work.entry.type: hr_work_entry.us_work_entry_type_attendance
+NEW hr.work.entry.type: hr_work_entry.us_work_entry_type_home_working
+NEW hr.work.entry.type: hr_work_entry.us_work_entry_type_legal_leave
+NEW hr.work.entry.type: hr_work_entry.us_work_entry_type_public_holiday
+NEW hr.work.entry.type: hr_work_entry.us_work_entry_type_sick_leave
+NEW hr.work.entry.type: hr_work_entry.us_work_entry_type_unpaid_leave
+NEW hr.work.entry.type: hr_work_entry.work_entry_type_attendance_dbl_hol
+NEW hr.work.entry.type: hr_work_entry.work_entry_type_attendance_dbl_hol_rest
+NEW hr.work.entry.type: hr_work_entry.work_entry_type_attendance_rest
+NEW hr.work.entry.type: hr_work_entry.work_entry_type_attendance_rh
+NEW hr.work.entry.type: hr_work_entry.work_entry_type_attendance_rh_rest
+NEW hr.work.entry.type: hr_work_entry.work_entry_type_attendance_snw
+NEW hr.work.entry.type: hr_work_entry.work_entry_type_attendance_snw_rest
+DEL hr.work.entry.type: hr_work_entry.hr_work_entry_type_out_of_contract (noupdate)
+DEL hr.work.entry.type: hr_work_entry.l10n_au_work_entry_type_cash_out (noupdate)
+DEL hr.work.entry.type: hr_work_entry.l10n_au_work_entry_type_other (noupdate)
+DEL hr.work.entry.type: hr_work_entry.l10n_au_work_entry_type_paid_time_off (noupdate)
+DEL hr.work.entry.type: hr_work_entry.l10n_au_work_entry_type_termination (noupdate)
+DEL hr.work.entry.type: hr_work_entry.l10n_be_work_entry_type_additional_paid (noupdate)
+DEL hr.work.entry.type: hr_work_entry.l10n_be_work_entry_type_corona (noupdate)
+DEL hr.work.entry.type: hr_work_entry.l10n_be_work_entry_type_notice (noupdate)
+DEL hr.work.entry.type: hr_work_entry.l10n_be_work_entry_type_part_sick (noupdate)
+DEL hr.work.entry.type: hr_work_entry.l10n_be_work_entry_type_recovery (noupdate)
+DEL hr.work.entry.type: hr_work_entry.l10n_be_work_entry_type_simple_holiday_pay_variable_salary (noupdate)
+DEL hr.work.entry.type: hr_work_entry.l10n_be_work_entry_type_small_unemployment_birth (noupdate)
+DEL hr.work.entry.type: hr_work_entry.l10n_be_work_entry_type_work_accident (noupdate)
+DEL hr.work.entry.type: hr_work_entry.l10n_sa_work_entry_type_sick_leave_100 (noupdate)
+DEL hr.work.entry.type: hr_work_entry.l10n_us_work_entry_type_retro_overtime (noupdate)
+DEL hr.work.entry.type: hr_work_entry.l10n_us_work_entry_type_retro_regular (noupdate)
+DEL hr.work.entry.type: hr_work_entry.uae_sick_leave_0_entry_type (noupdate)
+DEL hr.work.entry.type: hr_work_entry.uae_sick_leave_50_entry_type (noupdate)
+DEL hr.work.entry.type: hr_work_entry.work_entry_type_attendance (noupdate)
+DEL hr.work.entry.type: hr_work_entry.work_entry_type_compensatory (noupdate)
+DEL hr.work.entry.type: hr_work_entry.work_entry_type_home_working (noupdate)
+DEL hr.work.entry.type: hr_work_entry.work_entry_type_leave (noupdate)
+DEL hr.work.entry.type: hr_work_entry.work_entry_type_legal_leave (noupdate)
+DEL hr.work.entry.type: hr_work_entry.work_entry_type_overtime (noupdate)
+DEL hr.work.entry.type: hr_work_entry.work_entry_type_sick_leave (noupdate)
+DEL hr.work.entry.type: hr_work_entry.work_entry_type_unpaid_leave (noupdate)
+NEW ir.access: hr_work_entry.access_hr_work_entry_employee
+NEW ir.access: hr_work_entry.access_hr_work_entry_employee_export
+NEW ir.access: hr_work_entry.access_hr_work_entry_export
+NEW ir.access: hr_work_entry.access_hr_work_entry_type_manager
+NEW ir.access: hr_work_entry.access_hr_work_entry_type_officer
+NEW ir.access: hr_work_entry.hr_user_work_entry_employee
+NEW ir.access: hr_work_entry.ir_rule_hr_export_work_entry_multi_company
+NEW ir.access: hr_work_entry.ir_rule_hr_time_rule_multi_company
+NEW ir.access: hr_work_entry.ir_rule_hr_work_entry_type_multi_company
+NEW ir.actions.act_window: hr_work_entry.action_open_export_wizard
+NEW ir.actions.act_window: hr_work_entry.hr_time_rule_action
+DEL ir.actions.act_window: hr_work_entry.hr_work_entry_action
+DEL ir.actions.act_window: hr_work_entry.hr_work_entry_action_conflict
+DEL ir.actions.act_window: hr_work_entry.hr_work_entry_regeneration_wizard_action
+NEW ir.actions.server: hr_work_entry.action_hr_employee_export_work_entries
+DEL ir.actions.server: hr_work_entry.action_hr_work_entry_set_to_draft
+DEL ir.cron: hr_work_entry.ir_cron_generate_missing_work_entries (noupdate)
+DEL ir.model.access: hr_work_entry.access_hr_work_entry_employee
+DEL ir.model.access: hr_work_entry.access_hr_work_entry_officer
+DEL ir.model.access: hr_work_entry.access_hr_work_entry_regeneration_wizard
+DEL ir.model.access: hr_work_entry.access_hr_work_entry_system
+DEL ir.model.access: hr_work_entry.access_hr_work_entry_type_manager
+DEL ir.model.access: hr_work_entry.access_hr_work_entry_type_officer
+NEW ir.model.constraint: hr_work_entry.constraint_hr_time_rule_at_least_one_day
+NEW ir.model.constraint: hr_work_entry.constraint_hr_time_rule_timing_start_is_hour
+NEW ir.model.constraint: hr_work_entry.constraint_hr_time_rule_timing_start_less_than_timing_stop
+NEW ir.model.constraint: hr_work_entry.constraint_hr_time_rule_timing_stop_is_hour
+ir.model.constraint: hr_work_entry.constraint_hr_user_work_entry_employee_user_id_employee_id_unique (changed definition: is now 'False' ('UNIQUE(user_id,employee_id)'))
+DEL ir.model.constraint: hr_work_entry.constraint_hr_work_entry_contract_date_start_stop_idx
+DEL ir.rule: hr_work_entry.hr_user_work_entry_employee (noupdate)
+DEL ir.rule: hr_work_entry.ir_rule_hr_work_entry_multi_company (noupdate)
+DEL ir.rule: hr_work_entry.ir_rule_hr_work_entry_type_multi_company (noupdate)
+NEW ir.ui.menu: hr_work_entry.menu_hr_work_entry_type_view_employee
+NEW ir.ui.view: hr_work_entry.hr_export_work_entries_wizard
+NEW ir.ui.view: hr_work_entry.hr_time_rule_view_form
+NEW ir.ui.view: hr_work_entry.hr_time_rule_view_list
+NEW ir.ui.view: hr_work_entry.hr_time_rule_view_search
+NEW ir.ui.view: hr_work_entry.res_company_view_form_inherit_hr_work_entry
+NEW ir.ui.view: hr_work_entry.view_resource_calendar_attendance_calendar
+NEW ir.ui.view: hr_work_entry.view_resource_calendar_multi_create_form
+DEL ir.ui.view: hr_work_entry.hr_contract_template_view_form
+DEL ir.ui.view: hr_work_entry.hr_work_entry_calendar_gantt_view_form
+DEL ir.ui.view: hr_work_entry.hr_work_entry_regeneration_wizard
+DEL ir.ui.view: hr_work_entry.hr_work_entry_view_calendar
+DEL ir.ui.view: hr_work_entry.hr_work_entry_view_calendar_multi_create_form
+DEL ir.ui.view: hr_work_entry.hr_work_entry_view_form
+DEL ir.ui.view: hr_work_entry.hr_work_entry_view_pivot
+DEL ir.ui.view: hr_work_entry.hr_work_entry_view_search
+DEL ir.ui.view: hr_work_entry.hr_work_entry_view_tree
+DEL ir.ui.view: hr_work_entry_holidays.view_holiday_status_normal_tree
+DEL ir.ui.view: hr_work_entry_holidays.work_entry_type_leave_form_inherit
diff --git a/openupgrade_scripts/scripts/im_livechat/20.0.1.0/noupdate_changes.xml b/openupgrade_scripts/scripts/im_livechat/20.0.1.0/noupdate_changes.xml
new file mode 100644
index 00000000000..dbf9330b978
--- /dev/null
+++ b/openupgrade_scripts/scripts/im_livechat/20.0.1.0/noupdate_changes.xml
@@ -0,0 +1,75 @@
+
+
+
+ Support
+
+
+
+
+
+
+
+
+ Here's a copy of your conversation with
+ on
+ at
+ .
+
+
+
+
+
+
+
+
+ You
+
+
+
+
+
+
+
+ width:40px; height:40px; border-radius:0.5rem; display:block;
+
+
+ |
+
+
+
+
+
+
+
+
+ This message has been removed
+
+
+
+
+
+
+ ![]()
+
+
+ |
+
+
+ |
+
+
+
+
+
+
+
diff --git a/openupgrade_scripts/scripts/im_livechat/20.0.1.0/post-migration.py b/openupgrade_scripts/scripts/im_livechat/20.0.1.0/post-migration.py
new file mode 100644
index 00000000000..34ca2673351
--- /dev/null
+++ b/openupgrade_scripts/scripts/im_livechat/20.0.1.0/post-migration.py
@@ -0,0 +1,9 @@
+# Copyright 2026 Don Kendall
+# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl).
+
+from openupgradelib import openupgrade
+
+
+@openupgrade.migrate()
+def migrate(env, version):
+ openupgrade.load_data(env, "im_livechat", "20.0.1.0/noupdate_changes.xml")
diff --git a/openupgrade_scripts/scripts/im_livechat/20.0.1.0/upgrade_analysis.txt b/openupgrade_scripts/scripts/im_livechat/20.0.1.0/upgrade_analysis.txt
new file mode 100644
index 00000000000..872f3657f6f
--- /dev/null
+++ b/openupgrade_scripts/scripts/im_livechat/20.0.1.0/upgrade_analysis.txt
@@ -0,0 +1,114 @@
+---Models in module 'im_livechat'---
+obsolete model im_livechat.conversation.tag
+---Fields in module 'im_livechat'---
+im_livechat / chatbot.script / source_id (many2one) : DEL relation: utm.source, required
+im_livechat / discuss.channel / livechat_conversation_tag_ids (many2many): DEL relation: im_livechat.conversation.tag
+im_livechat / discuss.channel / livechat_looking_for_help_since_dt (datetime): NEW isfunction: function, stored
+im_livechat / discuss.channel / livechat_operator_id (many2one): DEL relation: res.partner
+im_livechat / discuss.channel / livechat_rating (selection) : NEW selection_keys: ['1', '3', '5']
+im_livechat / discuss.channel / livechat_status (selection) : selection_keys removed: [waiting]
+im_livechat / discuss.channel / rating_last_text (selection) : DEL selection_keys: function
+im_livechat / discuss.channel / rating_last_value (float) : DEL
+im_livechat / im_livechat.channel / rating_ids (one2many) : DEL relation: rating.rating
+im_livechat / im_livechat.channel / rating_percentage_satisfaction (integer): type is now 'float' ('integer')
+im_livechat / im_livechat.channel.member.history / rating (float) : is now stored
+im_livechat / im_livechat.channel.member.history / rating (float) : not related anymore
+im_livechat / im_livechat.channel.member.history / rating (float) : now a function
+im_livechat / im_livechat.channel.member.history / rating (float) : selection_keys is now '['1', '3', '5']' ('False')
+im_livechat / im_livechat.channel.member.history / rating (float) : type is now 'selection' ('float')
+im_livechat / im_livechat.channel.member.history / rating_id (many2one) : DEL relation: rating.rating
+im_livechat / im_livechat.conversation.tag / color (integer) : DEL
+im_livechat / im_livechat.conversation.tag / conversation_ids (many2many) : DEL relation: discuss.channel
+im_livechat / im_livechat.conversation.tag / name (char) : DEL required
+im_livechat / im_livechat.expertise / color (integer) : NEW
+im_livechat / mail.message / chatbot_message_ids (one2many): NEW relation: chatbot.message
+---XML records in module 'im_livechat'---
+chatbot.script: im_livechat.chatbot_script_welcome_bot (noupdate switched)
+chatbot.script.answer: im_livechat.chatbot_script_welcome_step_dispatch_answer_documentation (noupdate switched)
+chatbot.script.answer: im_livechat.chatbot_script_welcome_step_dispatch_answer_just_looking (noupdate switched)
+chatbot.script.answer: im_livechat.chatbot_script_welcome_step_dispatch_answer_pricing (noupdate switched)
+chatbot.script.step: im_livechat.chatbot_script_welcome_step_dispatch (noupdate switched)
+chatbot.script.step: im_livechat.chatbot_script_welcome_step_documentation_exit (noupdate switched)
+chatbot.script.step: im_livechat.chatbot_script_welcome_step_documentation_redirect (noupdate switched)
+chatbot.script.step: im_livechat.chatbot_script_welcome_step_just_looking (noupdate switched)
+chatbot.script.step: im_livechat.chatbot_script_welcome_step_pricing (noupdate switched)
+chatbot.script.step: im_livechat.chatbot_script_welcome_step_pricing_email (noupdate switched)
+chatbot.script.step: im_livechat.chatbot_script_welcome_step_pricing_forward_operator (noupdate switched)
+chatbot.script.step: im_livechat.chatbot_script_welcome_step_pricing_noone_available (noupdate switched)
+chatbot.script.step: im_livechat.chatbot_script_welcome_step_welcome (noupdate switched)
+digest.digest: digest.digest_digest_default (noupdate switched)
+im_livechat.channel: im_livechat.im_livechat_channel_data (noupdate switched)
+NEW ir.access: im_livechat.access_chatbot_message_user
+NEW ir.access: im_livechat.access_chatbot_script_answer_user
+NEW ir.access: im_livechat.access_chatbot_script_step_user
+NEW ir.access: im_livechat.access_chatbot_script_user
+NEW ir.access: im_livechat.access_im_livechat_channel_member_history_user
+NEW ir.access: im_livechat.access_livechat_channel_manager
+NEW ir.access: im_livechat.access_livechat_channel_rule_manager
+NEW ir.access: im_livechat.access_livechat_channel_rule_user
+NEW ir.access: im_livechat.access_livechat_channel_user
+NEW ir.access: im_livechat.access_livechat_expertise_internal_user
+NEW ir.access: im_livechat.access_livechat_expertise_livechat_manager
+NEW ir.access: im_livechat.access_livechat_support_report_channel
+NEW ir.access: im_livechat.ir_rule_discuss_call_history_im_livechat_group_user
+NEW ir.access: im_livechat.ir_rule_discuss_channel_im_livechat_group_user
+NEW ir.access: im_livechat.ir_rule_discuss_channel_member_im_livechat_group_user
+ir.actions.act_window: im_livechat.discuss_channel_action (deleted domain)
+ir.actions.act_window: im_livechat.discuss_channel_action_from_livechat_channel (deleted domain)
+ir.actions.act_window: im_livechat.im_livechat_agent_history_action (deleted domain)
+NEW ir.actions.act_window: im_livechat.im_livechat_channel_config_action
+DEL ir.actions.act_window: im_livechat.discuss_channel_looking_for_help_action
+DEL ir.actions.act_window: im_livechat.livechat_conversation_tag_action
+NEW ir.actions.act_window.view: im_livechat.im_livechat_channel_config_action_kanban
+NEW ir.actions.act_window.view: im_livechat.im_livechat_channel_config_action_list
+DEL ir.actions.act_window.view: im_livechat.discuss_channel_looking_for_help_action_form
+DEL ir.actions.act_window.view: im_livechat.discuss_channel_looking_for_help_action_kanban
+DEL ir.actions.act_window.view: im_livechat.discuss_channel_looking_for_help_action_list
+DEL ir.model.access: im_livechat.access_chatbot_message_user
+DEL ir.model.access: im_livechat.access_chatbot_script_answer
+DEL ir.model.access: im_livechat.access_chatbot_script_answer_user
+DEL ir.model.access: im_livechat.access_chatbot_script_step_user
+DEL ir.model.access: im_livechat.access_chatbot_script_user
+DEL ir.model.access: im_livechat.access_im_livechat_channel_member_history_user
+DEL ir.model.access: im_livechat.access_livechat_channel_manager
+DEL ir.model.access: im_livechat.access_livechat_channel_rule_manager
+DEL ir.model.access: im_livechat.access_livechat_channel_rule_user
+DEL ir.model.access: im_livechat.access_livechat_channel_user
+DEL ir.model.access: im_livechat.access_livechat_conversation_tag_livechat_manager
+DEL ir.model.access: im_livechat.access_livechat_conversation_tag_livechat_user
+DEL ir.model.access: im_livechat.access_livechat_expertise_internal_user
+DEL ir.model.access: im_livechat.access_livechat_expertise_livechat_manager
+DEL ir.model.access: im_livechat.access_livechat_support_report_channel
+ir.model.constraint: im_livechat.constraint_chatbot_message_channel_id_user_raw_script_answer_id_idx (changed definition: is now 'False' ('INDEX (discuss_channel_id, user_raw_script_answer_id) WHERE user_raw_script_answer_id IS NOT NULL'))
+ir.model.constraint: im_livechat.constraint_chatbot_message_unique_mail_message_id (changed definition: is now 'False' ('unique (mail_message_id)'))
+ir.model.constraint: im_livechat.constraint_discuss_channel_livechat_channel_type_create_date_idx (changed definition: is now 'False' ('INDEX (channel_type, create_date) WHERE channel_type = 'livechat''))
+ir.model.constraint: im_livechat.constraint_discuss_channel_livechat_end_dt_idx (changed definition: is now 'False' ('INDEX (livechat_end_dt) WHERE livechat_end_dt IS NULL'))
+ir.model.constraint: im_livechat.constraint_discuss_channel_livechat_end_dt_status_constraint (changed definition: is now 'False' ('CHECK(livechat_end_dt IS NULL or livechat_status IS NULL)'))
+ir.model.constraint: im_livechat.constraint_discuss_channel_livechat_failure_idx (changed definition: is now 'False' ('INDEX (livechat_failure) WHERE livechat_failure IN ('no_answer', 'no_agent')'))
+ir.model.constraint: im_livechat.constraint_discuss_channel_livechat_is_escalated_idx (changed definition: is now 'False' ('INDEX (livechat_is_escalated) WHERE livechat_is_escalated IS TRUE'))
+NEW ir.model.constraint: im_livechat.constraint_discuss_channel_livechat_looking_for_help_since_dt_constraint
+NEW ir.model.constraint: im_livechat.constraint_discuss_channel_livechat_rating_constraint
+ir.model.constraint: im_livechat.constraint_im_livechat_channel_max_sessions_mode_greater_than_zero (changed definition: is now 'False' ('CHECK(max_sessions > 0)'))
+ir.model.constraint: im_livechat.constraint_im_livechat_channel_member_history_channel_id_guest_id_unique (changed definition: is now 'False' ('UNIQUE INDEX (channel_id, guest_id) WHERE guest_id IS NOT NULL'))
+ir.model.constraint: im_livechat.constraint_im_livechat_channel_member_history_channel_id_partner_id_unique (changed definition: is now 'False' ('UNIQUE INDEX (channel_id, partner_id) WHERE partner_id IS NOT NULL'))
+ir.model.constraint: im_livechat.constraint_im_livechat_channel_member_history_member_id_unique (changed definition: is now 'False' ('UNIQUE(member_id)'))
+ir.model.constraint: im_livechat.constraint_im_livechat_channel_member_history_partner_id_or_guest_3b134909 (changed definition: is now 'False' ('CHECK(partner_id IS NULL OR guest_id IS NULL)'))
+ir.model.constraint: im_livechat.constraint_im_livechat_expertise_name_unique (changed definition: is now 'False' ('UNIQUE INDEX (name)'))
+DEL ir.model.constraint: im_livechat.constraint_discuss_channel_livechat_operator_id
+DEL ir.model.constraint: im_livechat.constraint_im_livechat_conversation_tag_name_unique
+DEL ir.rule: im_livechat.ir_rule_discuss_call_history_im_livechat_group_user (noupdate)
+DEL ir.rule: im_livechat.ir_rule_discuss_channel_im_livechat_group_user (noupdate)
+DEL ir.rule: im_livechat.ir_rule_discuss_channel_member_im_livechat_group_user (noupdate)
+NEW ir.ui.menu: im_livechat.livechat_channels_config
+DEL ir.ui.menu: im_livechat.menu_livechat_all_conversations
+DEL ir.ui.menu: im_livechat.menu_livechat_conversation_tag
+DEL ir.ui.menu: im_livechat.menu_livechat_looking_for_help
+NEW ir.ui.view: im_livechat.im_livechat_channel_config_view_kanban
+NEW ir.ui.view: im_livechat.im_livechat_channel_view_list
+ir.ui.view: im_livechat.livechat_email_template (noupdate switched)
+DEL ir.ui.view: im_livechat.discuss_channel_looking_for_help_view_kanban
+DEL ir.ui.view: im_livechat.discuss_channel_looking_for_help_view_list
+DEL ir.ui.view: im_livechat.discuss_channel_looking_for_help_view_search
+DEL ir.ui.view: im_livechat.im_livechat_channel_conversation_tag_view_form
+DEL ir.ui.view: im_livechat.im_livechat_channel_conversation_tag_view_list
+NEW utm.source: im_livechat.utm_source_chatbot
diff --git a/openupgrade_scripts/scripts/l10n_ar/20.0.3.7/noupdate_changes.xml b/openupgrade_scripts/scripts/l10n_ar/20.0.3.7/noupdate_changes.xml
new file mode 100644
index 00000000000..1686b893e54
--- /dev/null
+++ b/openupgrade_scripts/scripts/l10n_ar/20.0.3.7/noupdate_changes.xml
@@ -0,0 +1,10 @@
+
+
+
+
+
+
+
+
+
+
diff --git a/openupgrade_scripts/scripts/l10n_ar/20.0.3.7/post-migration.py b/openupgrade_scripts/scripts/l10n_ar/20.0.3.7/post-migration.py
new file mode 100644
index 00000000000..4497da9aa8b
--- /dev/null
+++ b/openupgrade_scripts/scripts/l10n_ar/20.0.3.7/post-migration.py
@@ -0,0 +1,9 @@
+# Copyright 2026 Don Kendall
+# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl).
+
+from openupgradelib import openupgrade
+
+
+@openupgrade.migrate()
+def migrate(env, version):
+ openupgrade.load_data(env, "l10n_ar", "20.0.3.7/noupdate_changes.xml")
diff --git a/openupgrade_scripts/scripts/l10n_ar/20.0.3.7/upgrade_analysis.txt b/openupgrade_scripts/scripts/l10n_ar/20.0.3.7/upgrade_analysis.txt
new file mode 100644
index 00000000000..a9dd660324f
--- /dev/null
+++ b/openupgrade_scripts/scripts/l10n_ar/20.0.3.7/upgrade_analysis.txt
@@ -0,0 +1,1321 @@
+---Models in module 'l10n_ar'---
+new model l10n_ar.arca.activity
+---Fields in module 'l10n_ar'---
+l10n_ar / account.account / l10n_ar_arca_activity_id (many2one): NEW relation: l10n_ar.arca.activity
+l10n_ar / l10n_ar.arca.activity / code (char) : NEW required
+l10n_ar / l10n_ar.arca.activity / name (char) : NEW required
+l10n_ar / l10n_latam.identification.type / l10n_ar_afip_code (char) : DEL
+l10n_ar / res.company / l10n_ar_arca_activity_id (many2one): NEW relation: l10n_ar.arca.activity
+l10n_ar / res.partner / l10n_ar_afip_code (char) : NEW isfunction: function, stored
+l10n_ar / res.partner / l10n_ar_afip_id_value (char) : NEW isfunction: function, stored
+l10n_ar / res.partner.bank / account_type (False) : NEW selection_keys: ['aba', 'bank', 'cbu', 'clabe', 'iban'], mode: modify
+---XML records in module 'l10n_ar'---
+NEW account.account.tag: l10n_ar.tag_fixed_asset_account
+NEW account.account.tag: l10n_ar.tag_leases_rentals_account
+NEW ir.access: l10n_ar.access_l10n_ar_afip_responsibility_type_all
+NEW ir.access: l10n_ar.access_l10n_ar_arca_activity_manager
+NEW ir.access: l10n_ar.access_l10n_ar_arca_activity_user
+NEW ir.actions.act_window: l10n_ar.act_arca_activity
+DEL ir.model.access: l10n_ar.access_l10n_ar_afip_responsibility_type_all
+DEL ir.model.access: l10n_ar.access_l10n_ar_afip_responsibility_type_portal
+DEL ir.model.access: l10n_ar.access_l10n_ar_afip_responsibility_type_public
+ir.model.constraint: l10n_ar.constraint_l10n_ar_afip_responsibility_type_code_uniq (changed definition: is now 'False' ('unique(code)'))
+ir.model.constraint: l10n_ar.constraint_l10n_ar_afip_responsibility_type_name_uniq (changed definition: is now 'False' ('unique(name)'))
+NEW ir.model.constraint: l10n_ar.constraint_l10n_ar_arca_activity_code_length
+NEW ir.model.constraint: l10n_ar.constraint_l10n_ar_arca_activity_code_unique
+NEW ir.ui.menu: l10n_ar.menu_action_arca_activity
+NEW ir.ui.view: l10n_ar.uom_uom_view_form
+NEW ir.ui.view: l10n_ar.uom_uom_view_list
+NEW ir.ui.view: l10n_ar.view_account_account_form
+NEW ir.ui.view: l10n_ar.view_account_account_list
+NEW ir.ui.view: l10n_ar.view_arca_activity_list
+NEW ir.ui.view: l10n_ar.view_arca_activity_search
+DEL ir.ui.view: l10n_ar.product_uom_form_view
+DEL ir.ui.view: l10n_ar.product_uom_tree_view
+NEW l10n_ar.arca.activity: l10n_ar.activity_10
+NEW l10n_ar.arca.activity: l10n_ar.activity_101011
+NEW l10n_ar.arca.activity: l10n_ar.activity_101012
+NEW l10n_ar.arca.activity: l10n_ar.activity_101013
+NEW l10n_ar.arca.activity: l10n_ar.activity_101020
+NEW l10n_ar.arca.activity: l10n_ar.activity_101030
+NEW l10n_ar.arca.activity: l10n_ar.activity_101040
+NEW l10n_ar.arca.activity: l10n_ar.activity_101091
+NEW l10n_ar.arca.activity: l10n_ar.activity_101099
+NEW l10n_ar.arca.activity: l10n_ar.activity_102001
+NEW l10n_ar.arca.activity: l10n_ar.activity_102002
+NEW l10n_ar.arca.activity: l10n_ar.activity_102003
+NEW l10n_ar.arca.activity: l10n_ar.activity_103011
+NEW l10n_ar.arca.activity: l10n_ar.activity_103012
+NEW l10n_ar.arca.activity: l10n_ar.activity_103020
+NEW l10n_ar.arca.activity: l10n_ar.activity_103030
+NEW l10n_ar.arca.activity: l10n_ar.activity_103091
+NEW l10n_ar.arca.activity: l10n_ar.activity_103099
+NEW l10n_ar.arca.activity: l10n_ar.activity_104011
+NEW l10n_ar.arca.activity: l10n_ar.activity_104012
+NEW l10n_ar.arca.activity: l10n_ar.activity_104013
+NEW l10n_ar.arca.activity: l10n_ar.activity_104020
+NEW l10n_ar.arca.activity: l10n_ar.activity_105010
+NEW l10n_ar.arca.activity: l10n_ar.activity_105020
+NEW l10n_ar.arca.activity: l10n_ar.activity_105030
+NEW l10n_ar.arca.activity: l10n_ar.activity_105090
+NEW l10n_ar.arca.activity: l10n_ar.activity_106110
+NEW l10n_ar.arca.activity: l10n_ar.activity_106120
+NEW l10n_ar.arca.activity: l10n_ar.activity_106131
+NEW l10n_ar.arca.activity: l10n_ar.activity_106139
+NEW l10n_ar.arca.activity: l10n_ar.activity_106200
+NEW l10n_ar.arca.activity: l10n_ar.activity_107110
+NEW l10n_ar.arca.activity: l10n_ar.activity_107121
+NEW l10n_ar.arca.activity: l10n_ar.activity_107129
+NEW l10n_ar.arca.activity: l10n_ar.activity_107200
+NEW l10n_ar.arca.activity: l10n_ar.activity_107301
+NEW l10n_ar.arca.activity: l10n_ar.activity_107309
+NEW l10n_ar.arca.activity: l10n_ar.activity_107410
+NEW l10n_ar.arca.activity: l10n_ar.activity_107420
+NEW l10n_ar.arca.activity: l10n_ar.activity_107500
+NEW l10n_ar.arca.activity: l10n_ar.activity_107911
+NEW l10n_ar.arca.activity: l10n_ar.activity_107912
+NEW l10n_ar.arca.activity: l10n_ar.activity_107920
+NEW l10n_ar.arca.activity: l10n_ar.activity_107930
+NEW l10n_ar.arca.activity: l10n_ar.activity_107991
+NEW l10n_ar.arca.activity: l10n_ar.activity_107992
+NEW l10n_ar.arca.activity: l10n_ar.activity_107999
+NEW l10n_ar.arca.activity: l10n_ar.activity_108000
+NEW l10n_ar.arca.activity: l10n_ar.activity_109000
+NEW l10n_ar.arca.activity: l10n_ar.activity_11
+NEW l10n_ar.arca.activity: l10n_ar.activity_110100
+NEW l10n_ar.arca.activity: l10n_ar.activity_110211
+NEW l10n_ar.arca.activity: l10n_ar.activity_110212
+NEW l10n_ar.arca.activity: l10n_ar.activity_110290
+NEW l10n_ar.arca.activity: l10n_ar.activity_110300
+NEW l10n_ar.arca.activity: l10n_ar.activity_110411
+NEW l10n_ar.arca.activity: l10n_ar.activity_110412
+NEW l10n_ar.arca.activity: l10n_ar.activity_110420
+NEW l10n_ar.arca.activity: l10n_ar.activity_110491
+NEW l10n_ar.arca.activity: l10n_ar.activity_110492
+NEW l10n_ar.arca.activity: l10n_ar.activity_11111
+NEW l10n_ar.arca.activity: l10n_ar.activity_11112
+NEW l10n_ar.arca.activity: l10n_ar.activity_11119
+NEW l10n_ar.arca.activity: l10n_ar.activity_11121
+NEW l10n_ar.arca.activity: l10n_ar.activity_11129
+NEW l10n_ar.arca.activity: l10n_ar.activity_11130
+NEW l10n_ar.arca.activity: l10n_ar.activity_11211
+NEW l10n_ar.arca.activity: l10n_ar.activity_11291
+NEW l10n_ar.arca.activity: l10n_ar.activity_11299
+NEW l10n_ar.arca.activity: l10n_ar.activity_11310
+NEW l10n_ar.arca.activity: l10n_ar.activity_11321
+NEW l10n_ar.arca.activity: l10n_ar.activity_11329
+NEW l10n_ar.arca.activity: l10n_ar.activity_11331
+NEW l10n_ar.arca.activity: l10n_ar.activity_11341
+NEW l10n_ar.arca.activity: l10n_ar.activity_11342
+NEW l10n_ar.arca.activity: l10n_ar.activity_11400
+NEW l10n_ar.arca.activity: l10n_ar.activity_11501
+NEW l10n_ar.arca.activity: l10n_ar.activity_11509
+NEW l10n_ar.arca.activity: l10n_ar.activity_11911
+NEW l10n_ar.arca.activity: l10n_ar.activity_11912
+NEW l10n_ar.arca.activity: l10n_ar.activity_11990
+NEW l10n_ar.arca.activity: l10n_ar.activity_12
+NEW l10n_ar.arca.activity: l10n_ar.activity_120010
+NEW l10n_ar.arca.activity: l10n_ar.activity_120091
+NEW l10n_ar.arca.activity: l10n_ar.activity_120099
+NEW l10n_ar.arca.activity: l10n_ar.activity_12110
+NEW l10n_ar.arca.activity: l10n_ar.activity_12121
+NEW l10n_ar.arca.activity: l10n_ar.activity_12200
+NEW l10n_ar.arca.activity: l10n_ar.activity_12311
+NEW l10n_ar.arca.activity: l10n_ar.activity_12319
+NEW l10n_ar.arca.activity: l10n_ar.activity_12320
+NEW l10n_ar.arca.activity: l10n_ar.activity_12410
+NEW l10n_ar.arca.activity: l10n_ar.activity_12420
+NEW l10n_ar.arca.activity: l10n_ar.activity_12490
+NEW l10n_ar.arca.activity: l10n_ar.activity_12510
+NEW l10n_ar.arca.activity: l10n_ar.activity_12590
+NEW l10n_ar.arca.activity: l10n_ar.activity_12600
+NEW l10n_ar.arca.activity: l10n_ar.activity_12701
+NEW l10n_ar.arca.activity: l10n_ar.activity_12709
+NEW l10n_ar.arca.activity: l10n_ar.activity_12800
+NEW l10n_ar.arca.activity: l10n_ar.activity_12900
+NEW l10n_ar.arca.activity: l10n_ar.activity_13
+NEW l10n_ar.arca.activity: l10n_ar.activity_13011
+NEW l10n_ar.arca.activity: l10n_ar.activity_13012
+NEW l10n_ar.arca.activity: l10n_ar.activity_13013
+NEW l10n_ar.arca.activity: l10n_ar.activity_13019
+NEW l10n_ar.arca.activity: l10n_ar.activity_13020
+NEW l10n_ar.arca.activity: l10n_ar.activity_131110
+NEW l10n_ar.arca.activity: l10n_ar.activity_131120
+NEW l10n_ar.arca.activity: l10n_ar.activity_131131
+NEW l10n_ar.arca.activity: l10n_ar.activity_131132
+NEW l10n_ar.arca.activity: l10n_ar.activity_131139
+NEW l10n_ar.arca.activity: l10n_ar.activity_131201
+NEW l10n_ar.arca.activity: l10n_ar.activity_131202
+NEW l10n_ar.arca.activity: l10n_ar.activity_131209
+NEW l10n_ar.arca.activity: l10n_ar.activity_131300
+NEW l10n_ar.arca.activity: l10n_ar.activity_139100
+NEW l10n_ar.arca.activity: l10n_ar.activity_139201
+NEW l10n_ar.arca.activity: l10n_ar.activity_139202
+NEW l10n_ar.arca.activity: l10n_ar.activity_139203
+NEW l10n_ar.arca.activity: l10n_ar.activity_139204
+NEW l10n_ar.arca.activity: l10n_ar.activity_139209
+NEW l10n_ar.arca.activity: l10n_ar.activity_139300
+NEW l10n_ar.arca.activity: l10n_ar.activity_139400
+NEW l10n_ar.arca.activity: l10n_ar.activity_139900
+NEW l10n_ar.arca.activity: l10n_ar.activity_141110
+NEW l10n_ar.arca.activity: l10n_ar.activity_141120
+NEW l10n_ar.arca.activity: l10n_ar.activity_14113
+NEW l10n_ar.arca.activity: l10n_ar.activity_141130
+NEW l10n_ar.arca.activity: l10n_ar.activity_14114
+NEW l10n_ar.arca.activity: l10n_ar.activity_141140
+NEW l10n_ar.arca.activity: l10n_ar.activity_14115
+NEW l10n_ar.arca.activity: l10n_ar.activity_141191
+NEW l10n_ar.arca.activity: l10n_ar.activity_141199
+NEW l10n_ar.arca.activity: l10n_ar.activity_141201
+NEW l10n_ar.arca.activity: l10n_ar.activity_141202
+NEW l10n_ar.arca.activity: l10n_ar.activity_14121
+NEW l10n_ar.arca.activity: l10n_ar.activity_142000
+NEW l10n_ar.arca.activity: l10n_ar.activity_14211
+NEW l10n_ar.arca.activity: l10n_ar.activity_14221
+NEW l10n_ar.arca.activity: l10n_ar.activity_14300
+NEW l10n_ar.arca.activity: l10n_ar.activity_143010
+NEW l10n_ar.arca.activity: l10n_ar.activity_143020
+NEW l10n_ar.arca.activity: l10n_ar.activity_14410
+NEW l10n_ar.arca.activity: l10n_ar.activity_14420
+NEW l10n_ar.arca.activity: l10n_ar.activity_14430
+NEW l10n_ar.arca.activity: l10n_ar.activity_14440
+NEW l10n_ar.arca.activity: l10n_ar.activity_14510
+NEW l10n_ar.arca.activity: l10n_ar.activity_14520
+NEW l10n_ar.arca.activity: l10n_ar.activity_14610
+NEW l10n_ar.arca.activity: l10n_ar.activity_14620
+NEW l10n_ar.arca.activity: l10n_ar.activity_14710
+NEW l10n_ar.arca.activity: l10n_ar.activity_14720
+NEW l10n_ar.arca.activity: l10n_ar.activity_14810
+NEW l10n_ar.arca.activity: l10n_ar.activity_14820
+NEW l10n_ar.arca.activity: l10n_ar.activity_149000
+NEW l10n_ar.arca.activity: l10n_ar.activity_14910
+NEW l10n_ar.arca.activity: l10n_ar.activity_14920
+NEW l10n_ar.arca.activity: l10n_ar.activity_14930
+NEW l10n_ar.arca.activity: l10n_ar.activity_14990
+NEW l10n_ar.arca.activity: l10n_ar.activity_151100
+NEW l10n_ar.arca.activity: l10n_ar.activity_151200
+NEW l10n_ar.arca.activity: l10n_ar.activity_152011
+NEW l10n_ar.arca.activity: l10n_ar.activity_152021
+NEW l10n_ar.arca.activity: l10n_ar.activity_152031
+NEW l10n_ar.arca.activity: l10n_ar.activity_152040
+NEW l10n_ar.arca.activity: l10n_ar.activity_161001
+NEW l10n_ar.arca.activity: l10n_ar.activity_161002
+NEW l10n_ar.arca.activity: l10n_ar.activity_16111
+NEW l10n_ar.arca.activity: l10n_ar.activity_16112
+NEW l10n_ar.arca.activity: l10n_ar.activity_16113
+NEW l10n_ar.arca.activity: l10n_ar.activity_16119
+NEW l10n_ar.arca.activity: l10n_ar.activity_16120
+NEW l10n_ar.arca.activity: l10n_ar.activity_16130
+NEW l10n_ar.arca.activity: l10n_ar.activity_16140
+NEW l10n_ar.arca.activity: l10n_ar.activity_16150
+NEW l10n_ar.arca.activity: l10n_ar.activity_16190
+NEW l10n_ar.arca.activity: l10n_ar.activity_16210
+NEW l10n_ar.arca.activity: l10n_ar.activity_162100
+NEW l10n_ar.arca.activity: l10n_ar.activity_16220
+NEW l10n_ar.arca.activity: l10n_ar.activity_162201
+NEW l10n_ar.arca.activity: l10n_ar.activity_162202
+NEW l10n_ar.arca.activity: l10n_ar.activity_16230
+NEW l10n_ar.arca.activity: l10n_ar.activity_162300
+NEW l10n_ar.arca.activity: l10n_ar.activity_162901
+NEW l10n_ar.arca.activity: l10n_ar.activity_162902
+NEW l10n_ar.arca.activity: l10n_ar.activity_162903
+NEW l10n_ar.arca.activity: l10n_ar.activity_162909
+NEW l10n_ar.arca.activity: l10n_ar.activity_16291
+NEW l10n_ar.arca.activity: l10n_ar.activity_16292
+NEW l10n_ar.arca.activity: l10n_ar.activity_16299
+NEW l10n_ar.arca.activity: l10n_ar.activity_17010
+NEW l10n_ar.arca.activity: l10n_ar.activity_170101
+NEW l10n_ar.arca.activity: l10n_ar.activity_170102
+NEW l10n_ar.arca.activity: l10n_ar.activity_17020
+NEW l10n_ar.arca.activity: l10n_ar.activity_170201
+NEW l10n_ar.arca.activity: l10n_ar.activity_170202
+NEW l10n_ar.arca.activity: l10n_ar.activity_170910
+NEW l10n_ar.arca.activity: l10n_ar.activity_170990
+NEW l10n_ar.arca.activity: l10n_ar.activity_181101
+NEW l10n_ar.arca.activity: l10n_ar.activity_181109
+NEW l10n_ar.arca.activity: l10n_ar.activity_181200
+NEW l10n_ar.arca.activity: l10n_ar.activity_182000
+NEW l10n_ar.arca.activity: l10n_ar.activity_191000
+NEW l10n_ar.arca.activity: l10n_ar.activity_192000
+NEW l10n_ar.arca.activity: l10n_ar.activity_201110
+NEW l10n_ar.arca.activity: l10n_ar.activity_201120
+NEW l10n_ar.arca.activity: l10n_ar.activity_201130
+NEW l10n_ar.arca.activity: l10n_ar.activity_201140
+NEW l10n_ar.arca.activity: l10n_ar.activity_201180
+NEW l10n_ar.arca.activity: l10n_ar.activity_201190
+NEW l10n_ar.arca.activity: l10n_ar.activity_201210
+NEW l10n_ar.arca.activity: l10n_ar.activity_201220
+NEW l10n_ar.arca.activity: l10n_ar.activity_201300
+NEW l10n_ar.arca.activity: l10n_ar.activity_201401
+NEW l10n_ar.arca.activity: l10n_ar.activity_201409
+NEW l10n_ar.arca.activity: l10n_ar.activity_202101
+NEW l10n_ar.arca.activity: l10n_ar.activity_202200
+NEW l10n_ar.arca.activity: l10n_ar.activity_202311
+NEW l10n_ar.arca.activity: l10n_ar.activity_202312
+NEW l10n_ar.arca.activity: l10n_ar.activity_202320
+NEW l10n_ar.arca.activity: l10n_ar.activity_202906
+NEW l10n_ar.arca.activity: l10n_ar.activity_202907
+NEW l10n_ar.arca.activity: l10n_ar.activity_202908
+NEW l10n_ar.arca.activity: l10n_ar.activity_203000
+NEW l10n_ar.arca.activity: l10n_ar.activity_204000
+NEW l10n_ar.arca.activity: l10n_ar.activity_210010
+NEW l10n_ar.arca.activity: l10n_ar.activity_210020
+NEW l10n_ar.arca.activity: l10n_ar.activity_210030
+NEW l10n_ar.arca.activity: l10n_ar.activity_210090
+NEW l10n_ar.arca.activity: l10n_ar.activity_21010
+NEW l10n_ar.arca.activity: l10n_ar.activity_21020
+NEW l10n_ar.arca.activity: l10n_ar.activity_21030
+NEW l10n_ar.arca.activity: l10n_ar.activity_22010
+NEW l10n_ar.arca.activity: l10n_ar.activity_22020
+NEW l10n_ar.arca.activity: l10n_ar.activity_221110
+NEW l10n_ar.arca.activity: l10n_ar.activity_221120
+NEW l10n_ar.arca.activity: l10n_ar.activity_221901
+NEW l10n_ar.arca.activity: l10n_ar.activity_221909
+NEW l10n_ar.arca.activity: l10n_ar.activity_222010
+NEW l10n_ar.arca.activity: l10n_ar.activity_222090
+NEW l10n_ar.arca.activity: l10n_ar.activity_231010
+NEW l10n_ar.arca.activity: l10n_ar.activity_231020
+NEW l10n_ar.arca.activity: l10n_ar.activity_231090
+NEW l10n_ar.arca.activity: l10n_ar.activity_239100
+NEW l10n_ar.arca.activity: l10n_ar.activity_239201
+NEW l10n_ar.arca.activity: l10n_ar.activity_239202
+NEW l10n_ar.arca.activity: l10n_ar.activity_239209
+NEW l10n_ar.arca.activity: l10n_ar.activity_239310
+NEW l10n_ar.arca.activity: l10n_ar.activity_239391
+NEW l10n_ar.arca.activity: l10n_ar.activity_239399
+NEW l10n_ar.arca.activity: l10n_ar.activity_239410
+NEW l10n_ar.arca.activity: l10n_ar.activity_239421
+NEW l10n_ar.arca.activity: l10n_ar.activity_239422
+NEW l10n_ar.arca.activity: l10n_ar.activity_239510
+NEW l10n_ar.arca.activity: l10n_ar.activity_239591
+NEW l10n_ar.arca.activity: l10n_ar.activity_239592
+NEW l10n_ar.arca.activity: l10n_ar.activity_239593
+NEW l10n_ar.arca.activity: l10n_ar.activity_239600
+NEW l10n_ar.arca.activity: l10n_ar.activity_239900
+NEW l10n_ar.arca.activity: l10n_ar.activity_24010
+NEW l10n_ar.arca.activity: l10n_ar.activity_24020
+NEW l10n_ar.arca.activity: l10n_ar.activity_241001
+NEW l10n_ar.arca.activity: l10n_ar.activity_241009
+NEW l10n_ar.arca.activity: l10n_ar.activity_242010
+NEW l10n_ar.arca.activity: l10n_ar.activity_242090
+NEW l10n_ar.arca.activity: l10n_ar.activity_243100
+NEW l10n_ar.arca.activity: l10n_ar.activity_243200
+NEW l10n_ar.arca.activity: l10n_ar.activity_251101
+NEW l10n_ar.arca.activity: l10n_ar.activity_251102
+NEW l10n_ar.arca.activity: l10n_ar.activity_251200
+NEW l10n_ar.arca.activity: l10n_ar.activity_251300
+NEW l10n_ar.arca.activity: l10n_ar.activity_252000
+NEW l10n_ar.arca.activity: l10n_ar.activity_259100
+NEW l10n_ar.arca.activity: l10n_ar.activity_259200
+NEW l10n_ar.arca.activity: l10n_ar.activity_259301
+NEW l10n_ar.arca.activity: l10n_ar.activity_259302
+NEW l10n_ar.arca.activity: l10n_ar.activity_259309
+NEW l10n_ar.arca.activity: l10n_ar.activity_259910
+NEW l10n_ar.arca.activity: l10n_ar.activity_259991
+NEW l10n_ar.arca.activity: l10n_ar.activity_259992
+NEW l10n_ar.arca.activity: l10n_ar.activity_259993
+NEW l10n_ar.arca.activity: l10n_ar.activity_259999
+NEW l10n_ar.arca.activity: l10n_ar.activity_261000
+NEW l10n_ar.arca.activity: l10n_ar.activity_262000
+NEW l10n_ar.arca.activity: l10n_ar.activity_263000
+NEW l10n_ar.arca.activity: l10n_ar.activity_264000
+NEW l10n_ar.arca.activity: l10n_ar.activity_265101
+NEW l10n_ar.arca.activity: l10n_ar.activity_265102
+NEW l10n_ar.arca.activity: l10n_ar.activity_265200
+NEW l10n_ar.arca.activity: l10n_ar.activity_266010
+NEW l10n_ar.arca.activity: l10n_ar.activity_266090
+NEW l10n_ar.arca.activity: l10n_ar.activity_267001
+NEW l10n_ar.arca.activity: l10n_ar.activity_267002
+NEW l10n_ar.arca.activity: l10n_ar.activity_268000
+NEW l10n_ar.arca.activity: l10n_ar.activity_271010
+NEW l10n_ar.arca.activity: l10n_ar.activity_271020
+NEW l10n_ar.arca.activity: l10n_ar.activity_272000
+NEW l10n_ar.arca.activity: l10n_ar.activity_273110
+NEW l10n_ar.arca.activity: l10n_ar.activity_273190
+NEW l10n_ar.arca.activity: l10n_ar.activity_274000
+NEW l10n_ar.arca.activity: l10n_ar.activity_275010
+NEW l10n_ar.arca.activity: l10n_ar.activity_275020
+NEW l10n_ar.arca.activity: l10n_ar.activity_275091
+NEW l10n_ar.arca.activity: l10n_ar.activity_275092
+NEW l10n_ar.arca.activity: l10n_ar.activity_275099
+NEW l10n_ar.arca.activity: l10n_ar.activity_279000
+NEW l10n_ar.arca.activity: l10n_ar.activity_281100
+NEW l10n_ar.arca.activity: l10n_ar.activity_281201
+NEW l10n_ar.arca.activity: l10n_ar.activity_281301
+NEW l10n_ar.arca.activity: l10n_ar.activity_281400
+NEW l10n_ar.arca.activity: l10n_ar.activity_281500
+NEW l10n_ar.arca.activity: l10n_ar.activity_281600
+NEW l10n_ar.arca.activity: l10n_ar.activity_281700
+NEW l10n_ar.arca.activity: l10n_ar.activity_281900
+NEW l10n_ar.arca.activity: l10n_ar.activity_282110
+NEW l10n_ar.arca.activity: l10n_ar.activity_282120
+NEW l10n_ar.arca.activity: l10n_ar.activity_282130
+NEW l10n_ar.arca.activity: l10n_ar.activity_282200
+NEW l10n_ar.arca.activity: l10n_ar.activity_282300
+NEW l10n_ar.arca.activity: l10n_ar.activity_282400
+NEW l10n_ar.arca.activity: l10n_ar.activity_282500
+NEW l10n_ar.arca.activity: l10n_ar.activity_282600
+NEW l10n_ar.arca.activity: l10n_ar.activity_282901
+NEW l10n_ar.arca.activity: l10n_ar.activity_282909
+NEW l10n_ar.arca.activity: l10n_ar.activity_291000
+NEW l10n_ar.arca.activity: l10n_ar.activity_292000
+NEW l10n_ar.arca.activity: l10n_ar.activity_293011
+NEW l10n_ar.arca.activity: l10n_ar.activity_293090
+NEW l10n_ar.arca.activity: l10n_ar.activity_301100
+NEW l10n_ar.arca.activity: l10n_ar.activity_301200
+NEW l10n_ar.arca.activity: l10n_ar.activity_302000
+NEW l10n_ar.arca.activity: l10n_ar.activity_303000
+NEW l10n_ar.arca.activity: l10n_ar.activity_309100
+NEW l10n_ar.arca.activity: l10n_ar.activity_309200
+NEW l10n_ar.arca.activity: l10n_ar.activity_309900
+NEW l10n_ar.arca.activity: l10n_ar.activity_310010
+NEW l10n_ar.arca.activity: l10n_ar.activity_310020
+NEW l10n_ar.arca.activity: l10n_ar.activity_310030
+NEW l10n_ar.arca.activity: l10n_ar.activity_31110
+NEW l10n_ar.arca.activity: l10n_ar.activity_31120
+NEW l10n_ar.arca.activity: l10n_ar.activity_31130
+NEW l10n_ar.arca.activity: l10n_ar.activity_31200
+NEW l10n_ar.arca.activity: l10n_ar.activity_31300
+NEW l10n_ar.arca.activity: l10n_ar.activity_32000
+NEW l10n_ar.arca.activity: l10n_ar.activity_321011
+NEW l10n_ar.arca.activity: l10n_ar.activity_321012
+NEW l10n_ar.arca.activity: l10n_ar.activity_321020
+NEW l10n_ar.arca.activity: l10n_ar.activity_322001
+NEW l10n_ar.arca.activity: l10n_ar.activity_323001
+NEW l10n_ar.arca.activity: l10n_ar.activity_324000
+NEW l10n_ar.arca.activity: l10n_ar.activity_329010
+NEW l10n_ar.arca.activity: l10n_ar.activity_329020
+NEW l10n_ar.arca.activity: l10n_ar.activity_329030
+NEW l10n_ar.arca.activity: l10n_ar.activity_329040
+NEW l10n_ar.arca.activity: l10n_ar.activity_329090
+NEW l10n_ar.arca.activity: l10n_ar.activity_331101
+NEW l10n_ar.arca.activity: l10n_ar.activity_331210
+NEW l10n_ar.arca.activity: l10n_ar.activity_331220
+NEW l10n_ar.arca.activity: l10n_ar.activity_331290
+NEW l10n_ar.arca.activity: l10n_ar.activity_331301
+NEW l10n_ar.arca.activity: l10n_ar.activity_331400
+NEW l10n_ar.arca.activity: l10n_ar.activity_331900
+NEW l10n_ar.arca.activity: l10n_ar.activity_332000
+NEW l10n_ar.arca.activity: l10n_ar.activity_351110
+NEW l10n_ar.arca.activity: l10n_ar.activity_351120
+NEW l10n_ar.arca.activity: l10n_ar.activity_351130
+NEW l10n_ar.arca.activity: l10n_ar.activity_351190
+NEW l10n_ar.arca.activity: l10n_ar.activity_351201
+NEW l10n_ar.arca.activity: l10n_ar.activity_351310
+NEW l10n_ar.arca.activity: l10n_ar.activity_351320
+NEW l10n_ar.arca.activity: l10n_ar.activity_352010
+NEW l10n_ar.arca.activity: l10n_ar.activity_352020
+NEW l10n_ar.arca.activity: l10n_ar.activity_353001
+NEW l10n_ar.arca.activity: l10n_ar.activity_360010
+NEW l10n_ar.arca.activity: l10n_ar.activity_360020
+NEW l10n_ar.arca.activity: l10n_ar.activity_370000
+NEW l10n_ar.arca.activity: l10n_ar.activity_381100
+NEW l10n_ar.arca.activity: l10n_ar.activity_381200
+NEW l10n_ar.arca.activity: l10n_ar.activity_382010
+NEW l10n_ar.arca.activity: l10n_ar.activity_382020
+NEW l10n_ar.arca.activity: l10n_ar.activity_390000
+NEW l10n_ar.arca.activity: l10n_ar.activity_410011
+NEW l10n_ar.arca.activity: l10n_ar.activity_410021
+NEW l10n_ar.arca.activity: l10n_ar.activity_421000
+NEW l10n_ar.arca.activity: l10n_ar.activity_422100
+NEW l10n_ar.arca.activity: l10n_ar.activity_422200
+NEW l10n_ar.arca.activity: l10n_ar.activity_429010
+NEW l10n_ar.arca.activity: l10n_ar.activity_429090
+NEW l10n_ar.arca.activity: l10n_ar.activity_431100
+NEW l10n_ar.arca.activity: l10n_ar.activity_431210
+NEW l10n_ar.arca.activity: l10n_ar.activity_431220
+NEW l10n_ar.arca.activity: l10n_ar.activity_432110
+NEW l10n_ar.arca.activity: l10n_ar.activity_432190
+NEW l10n_ar.arca.activity: l10n_ar.activity_432200
+NEW l10n_ar.arca.activity: l10n_ar.activity_432910
+NEW l10n_ar.arca.activity: l10n_ar.activity_432920
+NEW l10n_ar.arca.activity: l10n_ar.activity_432990
+NEW l10n_ar.arca.activity: l10n_ar.activity_433010
+NEW l10n_ar.arca.activity: l10n_ar.activity_433020
+NEW l10n_ar.arca.activity: l10n_ar.activity_433030
+NEW l10n_ar.arca.activity: l10n_ar.activity_433040
+NEW l10n_ar.arca.activity: l10n_ar.activity_433090
+NEW l10n_ar.arca.activity: l10n_ar.activity_439100
+NEW l10n_ar.arca.activity: l10n_ar.activity_439910
+NEW l10n_ar.arca.activity: l10n_ar.activity_439990
+NEW l10n_ar.arca.activity: l10n_ar.activity_451110
+NEW l10n_ar.arca.activity: l10n_ar.activity_451190
+NEW l10n_ar.arca.activity: l10n_ar.activity_451210
+NEW l10n_ar.arca.activity: l10n_ar.activity_451290
+NEW l10n_ar.arca.activity: l10n_ar.activity_452101
+NEW l10n_ar.arca.activity: l10n_ar.activity_452210
+NEW l10n_ar.arca.activity: l10n_ar.activity_452220
+NEW l10n_ar.arca.activity: l10n_ar.activity_452300
+NEW l10n_ar.arca.activity: l10n_ar.activity_452401
+NEW l10n_ar.arca.activity: l10n_ar.activity_452500
+NEW l10n_ar.arca.activity: l10n_ar.activity_452600
+NEW l10n_ar.arca.activity: l10n_ar.activity_452700
+NEW l10n_ar.arca.activity: l10n_ar.activity_452800
+NEW l10n_ar.arca.activity: l10n_ar.activity_452910
+NEW l10n_ar.arca.activity: l10n_ar.activity_452990
+NEW l10n_ar.arca.activity: l10n_ar.activity_453100
+NEW l10n_ar.arca.activity: l10n_ar.activity_453210
+NEW l10n_ar.arca.activity: l10n_ar.activity_453220
+NEW l10n_ar.arca.activity: l10n_ar.activity_453291
+NEW l10n_ar.arca.activity: l10n_ar.activity_453292
+NEW l10n_ar.arca.activity: l10n_ar.activity_454010
+NEW l10n_ar.arca.activity: l10n_ar.activity_454020
+NEW l10n_ar.arca.activity: l10n_ar.activity_461011
+NEW l10n_ar.arca.activity: l10n_ar.activity_461012
+NEW l10n_ar.arca.activity: l10n_ar.activity_461013
+NEW l10n_ar.arca.activity: l10n_ar.activity_461014
+NEW l10n_ar.arca.activity: l10n_ar.activity_461019
+NEW l10n_ar.arca.activity: l10n_ar.activity_461021
+NEW l10n_ar.arca.activity: l10n_ar.activity_461022
+NEW l10n_ar.arca.activity: l10n_ar.activity_461029
+NEW l10n_ar.arca.activity: l10n_ar.activity_461031
+NEW l10n_ar.arca.activity: l10n_ar.activity_461032
+NEW l10n_ar.arca.activity: l10n_ar.activity_461039
+NEW l10n_ar.arca.activity: l10n_ar.activity_461040
+NEW l10n_ar.arca.activity: l10n_ar.activity_461091
+NEW l10n_ar.arca.activity: l10n_ar.activity_461092
+NEW l10n_ar.arca.activity: l10n_ar.activity_461093
+NEW l10n_ar.arca.activity: l10n_ar.activity_461094
+NEW l10n_ar.arca.activity: l10n_ar.activity_461095
+NEW l10n_ar.arca.activity: l10n_ar.activity_461099
+NEW l10n_ar.arca.activity: l10n_ar.activity_462110
+NEW l10n_ar.arca.activity: l10n_ar.activity_462120
+NEW l10n_ar.arca.activity: l10n_ar.activity_462131
+NEW l10n_ar.arca.activity: l10n_ar.activity_462132
+NEW l10n_ar.arca.activity: l10n_ar.activity_462190
+NEW l10n_ar.arca.activity: l10n_ar.activity_462201
+NEW l10n_ar.arca.activity: l10n_ar.activity_462209
+NEW l10n_ar.arca.activity: l10n_ar.activity_463111
+NEW l10n_ar.arca.activity: l10n_ar.activity_463112
+NEW l10n_ar.arca.activity: l10n_ar.activity_463121
+NEW l10n_ar.arca.activity: l10n_ar.activity_463129
+NEW l10n_ar.arca.activity: l10n_ar.activity_463130
+NEW l10n_ar.arca.activity: l10n_ar.activity_463140
+NEW l10n_ar.arca.activity: l10n_ar.activity_463151
+NEW l10n_ar.arca.activity: l10n_ar.activity_463152
+NEW l10n_ar.arca.activity: l10n_ar.activity_463153
+NEW l10n_ar.arca.activity: l10n_ar.activity_463154
+NEW l10n_ar.arca.activity: l10n_ar.activity_463159
+NEW l10n_ar.arca.activity: l10n_ar.activity_463160
+NEW l10n_ar.arca.activity: l10n_ar.activity_463170
+NEW l10n_ar.arca.activity: l10n_ar.activity_463180
+NEW l10n_ar.arca.activity: l10n_ar.activity_463191
+NEW l10n_ar.arca.activity: l10n_ar.activity_463199
+NEW l10n_ar.arca.activity: l10n_ar.activity_463211
+NEW l10n_ar.arca.activity: l10n_ar.activity_463212
+NEW l10n_ar.arca.activity: l10n_ar.activity_463219
+NEW l10n_ar.arca.activity: l10n_ar.activity_463220
+NEW l10n_ar.arca.activity: l10n_ar.activity_463300
+NEW l10n_ar.arca.activity: l10n_ar.activity_464111
+NEW l10n_ar.arca.activity: l10n_ar.activity_464112
+NEW l10n_ar.arca.activity: l10n_ar.activity_464113
+NEW l10n_ar.arca.activity: l10n_ar.activity_464114
+NEW l10n_ar.arca.activity: l10n_ar.activity_464119
+NEW l10n_ar.arca.activity: l10n_ar.activity_464121
+NEW l10n_ar.arca.activity: l10n_ar.activity_464122
+NEW l10n_ar.arca.activity: l10n_ar.activity_464129
+NEW l10n_ar.arca.activity: l10n_ar.activity_464130
+NEW l10n_ar.arca.activity: l10n_ar.activity_464141
+NEW l10n_ar.arca.activity: l10n_ar.activity_464142
+NEW l10n_ar.arca.activity: l10n_ar.activity_464149
+NEW l10n_ar.arca.activity: l10n_ar.activity_464150
+NEW l10n_ar.arca.activity: l10n_ar.activity_464211
+NEW l10n_ar.arca.activity: l10n_ar.activity_464212
+NEW l10n_ar.arca.activity: l10n_ar.activity_464221
+NEW l10n_ar.arca.activity: l10n_ar.activity_464222
+NEW l10n_ar.arca.activity: l10n_ar.activity_464223
+NEW l10n_ar.arca.activity: l10n_ar.activity_464310
+NEW l10n_ar.arca.activity: l10n_ar.activity_464320
+NEW l10n_ar.arca.activity: l10n_ar.activity_464330
+NEW l10n_ar.arca.activity: l10n_ar.activity_464340
+NEW l10n_ar.arca.activity: l10n_ar.activity_464410
+NEW l10n_ar.arca.activity: l10n_ar.activity_464420
+NEW l10n_ar.arca.activity: l10n_ar.activity_464501
+NEW l10n_ar.arca.activity: l10n_ar.activity_464502
+NEW l10n_ar.arca.activity: l10n_ar.activity_464610
+NEW l10n_ar.arca.activity: l10n_ar.activity_464620
+NEW l10n_ar.arca.activity: l10n_ar.activity_464631
+NEW l10n_ar.arca.activity: l10n_ar.activity_464632
+NEW l10n_ar.arca.activity: l10n_ar.activity_464910
+NEW l10n_ar.arca.activity: l10n_ar.activity_464920
+NEW l10n_ar.arca.activity: l10n_ar.activity_464930
+NEW l10n_ar.arca.activity: l10n_ar.activity_464940
+NEW l10n_ar.arca.activity: l10n_ar.activity_464950
+NEW l10n_ar.arca.activity: l10n_ar.activity_464991
+NEW l10n_ar.arca.activity: l10n_ar.activity_464999
+NEW l10n_ar.arca.activity: l10n_ar.activity_465100
+NEW l10n_ar.arca.activity: l10n_ar.activity_465210
+NEW l10n_ar.arca.activity: l10n_ar.activity_465220
+NEW l10n_ar.arca.activity: l10n_ar.activity_465310
+NEW l10n_ar.arca.activity: l10n_ar.activity_465320
+NEW l10n_ar.arca.activity: l10n_ar.activity_465330
+NEW l10n_ar.arca.activity: l10n_ar.activity_465340
+NEW l10n_ar.arca.activity: l10n_ar.activity_465350
+NEW l10n_ar.arca.activity: l10n_ar.activity_465360
+NEW l10n_ar.arca.activity: l10n_ar.activity_465390
+NEW l10n_ar.arca.activity: l10n_ar.activity_465400
+NEW l10n_ar.arca.activity: l10n_ar.activity_465500
+NEW l10n_ar.arca.activity: l10n_ar.activity_465610
+NEW l10n_ar.arca.activity: l10n_ar.activity_465690
+NEW l10n_ar.arca.activity: l10n_ar.activity_465910
+NEW l10n_ar.arca.activity: l10n_ar.activity_465920
+NEW l10n_ar.arca.activity: l10n_ar.activity_465930
+NEW l10n_ar.arca.activity: l10n_ar.activity_465990
+NEW l10n_ar.arca.activity: l10n_ar.activity_466110
+NEW l10n_ar.arca.activity: l10n_ar.activity_466121
+NEW l10n_ar.arca.activity: l10n_ar.activity_466129
+NEW l10n_ar.arca.activity: l10n_ar.activity_466200
+NEW l10n_ar.arca.activity: l10n_ar.activity_466310
+NEW l10n_ar.arca.activity: l10n_ar.activity_466320
+NEW l10n_ar.arca.activity: l10n_ar.activity_466330
+NEW l10n_ar.arca.activity: l10n_ar.activity_466340
+NEW l10n_ar.arca.activity: l10n_ar.activity_466350
+NEW l10n_ar.arca.activity: l10n_ar.activity_466360
+NEW l10n_ar.arca.activity: l10n_ar.activity_466370
+NEW l10n_ar.arca.activity: l10n_ar.activity_466391
+NEW l10n_ar.arca.activity: l10n_ar.activity_466399
+NEW l10n_ar.arca.activity: l10n_ar.activity_466910
+NEW l10n_ar.arca.activity: l10n_ar.activity_466920
+NEW l10n_ar.arca.activity: l10n_ar.activity_466931
+NEW l10n_ar.arca.activity: l10n_ar.activity_466932
+NEW l10n_ar.arca.activity: l10n_ar.activity_466939
+NEW l10n_ar.arca.activity: l10n_ar.activity_466940
+NEW l10n_ar.arca.activity: l10n_ar.activity_466990
+NEW l10n_ar.arca.activity: l10n_ar.activity_469010
+NEW l10n_ar.arca.activity: l10n_ar.activity_469090
+NEW l10n_ar.arca.activity: l10n_ar.activity_471110
+NEW l10n_ar.arca.activity: l10n_ar.activity_471120
+NEW l10n_ar.arca.activity: l10n_ar.activity_471130
+NEW l10n_ar.arca.activity: l10n_ar.activity_471190
+NEW l10n_ar.arca.activity: l10n_ar.activity_471900
+NEW l10n_ar.arca.activity: l10n_ar.activity_472111
+NEW l10n_ar.arca.activity: l10n_ar.activity_472112
+NEW l10n_ar.arca.activity: l10n_ar.activity_472120
+NEW l10n_ar.arca.activity: l10n_ar.activity_472130
+NEW l10n_ar.arca.activity: l10n_ar.activity_472140
+NEW l10n_ar.arca.activity: l10n_ar.activity_472150
+NEW l10n_ar.arca.activity: l10n_ar.activity_472160
+NEW l10n_ar.arca.activity: l10n_ar.activity_472171
+NEW l10n_ar.arca.activity: l10n_ar.activity_472172
+NEW l10n_ar.arca.activity: l10n_ar.activity_472190
+NEW l10n_ar.arca.activity: l10n_ar.activity_472200
+NEW l10n_ar.arca.activity: l10n_ar.activity_472300
+NEW l10n_ar.arca.activity: l10n_ar.activity_473000
+NEW l10n_ar.arca.activity: l10n_ar.activity_474010
+NEW l10n_ar.arca.activity: l10n_ar.activity_474020
+NEW l10n_ar.arca.activity: l10n_ar.activity_475110
+NEW l10n_ar.arca.activity: l10n_ar.activity_475120
+NEW l10n_ar.arca.activity: l10n_ar.activity_475190
+NEW l10n_ar.arca.activity: l10n_ar.activity_475210
+NEW l10n_ar.arca.activity: l10n_ar.activity_475220
+NEW l10n_ar.arca.activity: l10n_ar.activity_475230
+NEW l10n_ar.arca.activity: l10n_ar.activity_475240
+NEW l10n_ar.arca.activity: l10n_ar.activity_475250
+NEW l10n_ar.arca.activity: l10n_ar.activity_475260
+NEW l10n_ar.arca.activity: l10n_ar.activity_475270
+NEW l10n_ar.arca.activity: l10n_ar.activity_475290
+NEW l10n_ar.arca.activity: l10n_ar.activity_475300
+NEW l10n_ar.arca.activity: l10n_ar.activity_475410
+NEW l10n_ar.arca.activity: l10n_ar.activity_475420
+NEW l10n_ar.arca.activity: l10n_ar.activity_475430
+NEW l10n_ar.arca.activity: l10n_ar.activity_475440
+NEW l10n_ar.arca.activity: l10n_ar.activity_475490
+NEW l10n_ar.arca.activity: l10n_ar.activity_476110
+NEW l10n_ar.arca.activity: l10n_ar.activity_476120
+NEW l10n_ar.arca.activity: l10n_ar.activity_476130
+NEW l10n_ar.arca.activity: l10n_ar.activity_476200
+NEW l10n_ar.arca.activity: l10n_ar.activity_476310
+NEW l10n_ar.arca.activity: l10n_ar.activity_476320
+NEW l10n_ar.arca.activity: l10n_ar.activity_476400
+NEW l10n_ar.arca.activity: l10n_ar.activity_477110
+NEW l10n_ar.arca.activity: l10n_ar.activity_477120
+NEW l10n_ar.arca.activity: l10n_ar.activity_477130
+NEW l10n_ar.arca.activity: l10n_ar.activity_477140
+NEW l10n_ar.arca.activity: l10n_ar.activity_477150
+NEW l10n_ar.arca.activity: l10n_ar.activity_477190
+NEW l10n_ar.arca.activity: l10n_ar.activity_477210
+NEW l10n_ar.arca.activity: l10n_ar.activity_477220
+NEW l10n_ar.arca.activity: l10n_ar.activity_477230
+NEW l10n_ar.arca.activity: l10n_ar.activity_477290
+NEW l10n_ar.arca.activity: l10n_ar.activity_477310
+NEW l10n_ar.arca.activity: l10n_ar.activity_477320
+NEW l10n_ar.arca.activity: l10n_ar.activity_477330
+NEW l10n_ar.arca.activity: l10n_ar.activity_477410
+NEW l10n_ar.arca.activity: l10n_ar.activity_477420
+NEW l10n_ar.arca.activity: l10n_ar.activity_477430
+NEW l10n_ar.arca.activity: l10n_ar.activity_477440
+NEW l10n_ar.arca.activity: l10n_ar.activity_477450
+NEW l10n_ar.arca.activity: l10n_ar.activity_477460
+NEW l10n_ar.arca.activity: l10n_ar.activity_477470
+NEW l10n_ar.arca.activity: l10n_ar.activity_477480
+NEW l10n_ar.arca.activity: l10n_ar.activity_477490
+NEW l10n_ar.arca.activity: l10n_ar.activity_477810
+NEW l10n_ar.arca.activity: l10n_ar.activity_477820
+NEW l10n_ar.arca.activity: l10n_ar.activity_477830
+NEW l10n_ar.arca.activity: l10n_ar.activity_477840
+NEW l10n_ar.arca.activity: l10n_ar.activity_477890
+NEW l10n_ar.arca.activity: l10n_ar.activity_478010
+NEW l10n_ar.arca.activity: l10n_ar.activity_478090
+NEW l10n_ar.arca.activity: l10n_ar.activity_479101
+NEW l10n_ar.arca.activity: l10n_ar.activity_479109
+NEW l10n_ar.arca.activity: l10n_ar.activity_479900
+NEW l10n_ar.arca.activity: l10n_ar.activity_491110
+NEW l10n_ar.arca.activity: l10n_ar.activity_491120
+NEW l10n_ar.arca.activity: l10n_ar.activity_491200
+NEW l10n_ar.arca.activity: l10n_ar.activity_492110
+NEW l10n_ar.arca.activity: l10n_ar.activity_492120
+NEW l10n_ar.arca.activity: l10n_ar.activity_492130
+NEW l10n_ar.arca.activity: l10n_ar.activity_492140
+NEW l10n_ar.arca.activity: l10n_ar.activity_492150
+NEW l10n_ar.arca.activity: l10n_ar.activity_492160
+NEW l10n_ar.arca.activity: l10n_ar.activity_492170
+NEW l10n_ar.arca.activity: l10n_ar.activity_492180
+NEW l10n_ar.arca.activity: l10n_ar.activity_492190
+NEW l10n_ar.arca.activity: l10n_ar.activity_492210
+NEW l10n_ar.arca.activity: l10n_ar.activity_492221
+NEW l10n_ar.arca.activity: l10n_ar.activity_492229
+NEW l10n_ar.arca.activity: l10n_ar.activity_492230
+NEW l10n_ar.arca.activity: l10n_ar.activity_492240
+NEW l10n_ar.arca.activity: l10n_ar.activity_492250
+NEW l10n_ar.arca.activity: l10n_ar.activity_492280
+NEW l10n_ar.arca.activity: l10n_ar.activity_492290
+NEW l10n_ar.arca.activity: l10n_ar.activity_493110
+NEW l10n_ar.arca.activity: l10n_ar.activity_493120
+NEW l10n_ar.arca.activity: l10n_ar.activity_493200
+NEW l10n_ar.arca.activity: l10n_ar.activity_501100
+NEW l10n_ar.arca.activity: l10n_ar.activity_501200
+NEW l10n_ar.arca.activity: l10n_ar.activity_502101
+NEW l10n_ar.arca.activity: l10n_ar.activity_502200
+NEW l10n_ar.arca.activity: l10n_ar.activity_51000
+NEW l10n_ar.arca.activity: l10n_ar.activity_511000
+NEW l10n_ar.arca.activity: l10n_ar.activity_512000
+NEW l10n_ar.arca.activity: l10n_ar.activity_52000
+NEW l10n_ar.arca.activity: l10n_ar.activity_521010
+NEW l10n_ar.arca.activity: l10n_ar.activity_521020
+NEW l10n_ar.arca.activity: l10n_ar.activity_521030
+NEW l10n_ar.arca.activity: l10n_ar.activity_522010
+NEW l10n_ar.arca.activity: l10n_ar.activity_522020
+NEW l10n_ar.arca.activity: l10n_ar.activity_522091
+NEW l10n_ar.arca.activity: l10n_ar.activity_522092
+NEW l10n_ar.arca.activity: l10n_ar.activity_522099
+NEW l10n_ar.arca.activity: l10n_ar.activity_523011
+NEW l10n_ar.arca.activity: l10n_ar.activity_523019
+NEW l10n_ar.arca.activity: l10n_ar.activity_523020
+NEW l10n_ar.arca.activity: l10n_ar.activity_523031
+NEW l10n_ar.arca.activity: l10n_ar.activity_523032
+NEW l10n_ar.arca.activity: l10n_ar.activity_523039
+NEW l10n_ar.arca.activity: l10n_ar.activity_523090
+NEW l10n_ar.arca.activity: l10n_ar.activity_524110
+NEW l10n_ar.arca.activity: l10n_ar.activity_524120
+NEW l10n_ar.arca.activity: l10n_ar.activity_524130
+NEW l10n_ar.arca.activity: l10n_ar.activity_524190
+NEW l10n_ar.arca.activity: l10n_ar.activity_524210
+NEW l10n_ar.arca.activity: l10n_ar.activity_524220
+NEW l10n_ar.arca.activity: l10n_ar.activity_524230
+NEW l10n_ar.arca.activity: l10n_ar.activity_524290
+NEW l10n_ar.arca.activity: l10n_ar.activity_524310
+NEW l10n_ar.arca.activity: l10n_ar.activity_524320
+NEW l10n_ar.arca.activity: l10n_ar.activity_524330
+NEW l10n_ar.arca.activity: l10n_ar.activity_524390
+NEW l10n_ar.arca.activity: l10n_ar.activity_530010
+NEW l10n_ar.arca.activity: l10n_ar.activity_530090
+NEW l10n_ar.arca.activity: l10n_ar.activity_551010
+NEW l10n_ar.arca.activity: l10n_ar.activity_551021
+NEW l10n_ar.arca.activity: l10n_ar.activity_551022
+NEW l10n_ar.arca.activity: l10n_ar.activity_551023
+NEW l10n_ar.arca.activity: l10n_ar.activity_551090
+NEW l10n_ar.arca.activity: l10n_ar.activity_552000
+NEW l10n_ar.arca.activity: l10n_ar.activity_561011
+NEW l10n_ar.arca.activity: l10n_ar.activity_561012
+NEW l10n_ar.arca.activity: l10n_ar.activity_561013
+NEW l10n_ar.arca.activity: l10n_ar.activity_561014
+NEW l10n_ar.arca.activity: l10n_ar.activity_561019
+NEW l10n_ar.arca.activity: l10n_ar.activity_561020
+NEW l10n_ar.arca.activity: l10n_ar.activity_561030
+NEW l10n_ar.arca.activity: l10n_ar.activity_561040
+NEW l10n_ar.arca.activity: l10n_ar.activity_562010
+NEW l10n_ar.arca.activity: l10n_ar.activity_562091
+NEW l10n_ar.arca.activity: l10n_ar.activity_562099
+NEW l10n_ar.arca.activity: l10n_ar.activity_581100
+NEW l10n_ar.arca.activity: l10n_ar.activity_581200
+NEW l10n_ar.arca.activity: l10n_ar.activity_581300
+NEW l10n_ar.arca.activity: l10n_ar.activity_581900
+NEW l10n_ar.arca.activity: l10n_ar.activity_591110
+NEW l10n_ar.arca.activity: l10n_ar.activity_591120
+NEW l10n_ar.arca.activity: l10n_ar.activity_591200
+NEW l10n_ar.arca.activity: l10n_ar.activity_591300
+NEW l10n_ar.arca.activity: l10n_ar.activity_592000
+NEW l10n_ar.arca.activity: l10n_ar.activity_601000
+NEW l10n_ar.arca.activity: l10n_ar.activity_602100
+NEW l10n_ar.arca.activity: l10n_ar.activity_602200
+NEW l10n_ar.arca.activity: l10n_ar.activity_602310
+NEW l10n_ar.arca.activity: l10n_ar.activity_602320
+NEW l10n_ar.arca.activity: l10n_ar.activity_602900
+NEW l10n_ar.arca.activity: l10n_ar.activity_61000
+NEW l10n_ar.arca.activity: l10n_ar.activity_611010
+NEW l10n_ar.arca.activity: l10n_ar.activity_611090
+NEW l10n_ar.arca.activity: l10n_ar.activity_612000
+NEW l10n_ar.arca.activity: l10n_ar.activity_613000
+NEW l10n_ar.arca.activity: l10n_ar.activity_614010
+NEW l10n_ar.arca.activity: l10n_ar.activity_614090
+NEW l10n_ar.arca.activity: l10n_ar.activity_619000
+NEW l10n_ar.arca.activity: l10n_ar.activity_62000
+NEW l10n_ar.arca.activity: l10n_ar.activity_620100
+NEW l10n_ar.arca.activity: l10n_ar.activity_620200
+NEW l10n_ar.arca.activity: l10n_ar.activity_620300
+NEW l10n_ar.arca.activity: l10n_ar.activity_620900
+NEW l10n_ar.arca.activity: l10n_ar.activity_631110
+NEW l10n_ar.arca.activity: l10n_ar.activity_631120
+NEW l10n_ar.arca.activity: l10n_ar.activity_631190
+NEW l10n_ar.arca.activity: l10n_ar.activity_631200
+NEW l10n_ar.arca.activity: l10n_ar.activity_639100
+NEW l10n_ar.arca.activity: l10n_ar.activity_639900
+NEW l10n_ar.arca.activity: l10n_ar.activity_641100
+NEW l10n_ar.arca.activity: l10n_ar.activity_641910
+NEW l10n_ar.arca.activity: l10n_ar.activity_641920
+NEW l10n_ar.arca.activity: l10n_ar.activity_641930
+NEW l10n_ar.arca.activity: l10n_ar.activity_641941
+NEW l10n_ar.arca.activity: l10n_ar.activity_641942
+NEW l10n_ar.arca.activity: l10n_ar.activity_641943
+NEW l10n_ar.arca.activity: l10n_ar.activity_642000
+NEW l10n_ar.arca.activity: l10n_ar.activity_643001
+NEW l10n_ar.arca.activity: l10n_ar.activity_643009
+NEW l10n_ar.arca.activity: l10n_ar.activity_649100
+NEW l10n_ar.arca.activity: l10n_ar.activity_649210
+NEW l10n_ar.arca.activity: l10n_ar.activity_649220
+NEW l10n_ar.arca.activity: l10n_ar.activity_649290
+NEW l10n_ar.arca.activity: l10n_ar.activity_649910
+NEW l10n_ar.arca.activity: l10n_ar.activity_649991
+NEW l10n_ar.arca.activity: l10n_ar.activity_649999
+NEW l10n_ar.arca.activity: l10n_ar.activity_651110
+NEW l10n_ar.arca.activity: l10n_ar.activity_651120
+NEW l10n_ar.arca.activity: l10n_ar.activity_651130
+NEW l10n_ar.arca.activity: l10n_ar.activity_651210
+NEW l10n_ar.arca.activity: l10n_ar.activity_651220
+NEW l10n_ar.arca.activity: l10n_ar.activity_651310
+NEW l10n_ar.arca.activity: l10n_ar.activity_651320
+NEW l10n_ar.arca.activity: l10n_ar.activity_652000
+NEW l10n_ar.arca.activity: l10n_ar.activity_653000
+NEW l10n_ar.arca.activity: l10n_ar.activity_661111
+NEW l10n_ar.arca.activity: l10n_ar.activity_661121
+NEW l10n_ar.arca.activity: l10n_ar.activity_661131
+NEW l10n_ar.arca.activity: l10n_ar.activity_661910
+NEW l10n_ar.arca.activity: l10n_ar.activity_661920
+NEW l10n_ar.arca.activity: l10n_ar.activity_661930
+NEW l10n_ar.arca.activity: l10n_ar.activity_661991
+NEW l10n_ar.arca.activity: l10n_ar.activity_661992
+NEW l10n_ar.arca.activity: l10n_ar.activity_661999
+NEW l10n_ar.arca.activity: l10n_ar.activity_662010
+NEW l10n_ar.arca.activity: l10n_ar.activity_662020
+NEW l10n_ar.arca.activity: l10n_ar.activity_662090
+NEW l10n_ar.arca.activity: l10n_ar.activity_663000
+NEW l10n_ar.arca.activity: l10n_ar.activity_681010
+NEW l10n_ar.arca.activity: l10n_ar.activity_681020
+NEW l10n_ar.arca.activity: l10n_ar.activity_681098
+NEW l10n_ar.arca.activity: l10n_ar.activity_681099
+NEW l10n_ar.arca.activity: l10n_ar.activity_682010
+NEW l10n_ar.arca.activity: l10n_ar.activity_682091
+NEW l10n_ar.arca.activity: l10n_ar.activity_682099
+NEW l10n_ar.arca.activity: l10n_ar.activity_691001
+NEW l10n_ar.arca.activity: l10n_ar.activity_691002
+NEW l10n_ar.arca.activity: l10n_ar.activity_692000
+NEW l10n_ar.arca.activity: l10n_ar.activity_7
+NEW l10n_ar.arca.activity: l10n_ar.activity_702010
+NEW l10n_ar.arca.activity: l10n_ar.activity_702091
+NEW l10n_ar.arca.activity: l10n_ar.activity_702092
+NEW l10n_ar.arca.activity: l10n_ar.activity_702099
+NEW l10n_ar.arca.activity: l10n_ar.activity_71000
+NEW l10n_ar.arca.activity: l10n_ar.activity_711001
+NEW l10n_ar.arca.activity: l10n_ar.activity_711002
+NEW l10n_ar.arca.activity: l10n_ar.activity_711003
+NEW l10n_ar.arca.activity: l10n_ar.activity_711009
+NEW l10n_ar.arca.activity: l10n_ar.activity_712000
+NEW l10n_ar.arca.activity: l10n_ar.activity_72100
+NEW l10n_ar.arca.activity: l10n_ar.activity_721010
+NEW l10n_ar.arca.activity: l10n_ar.activity_721020
+NEW l10n_ar.arca.activity: l10n_ar.activity_721030
+NEW l10n_ar.arca.activity: l10n_ar.activity_721090
+NEW l10n_ar.arca.activity: l10n_ar.activity_722010
+NEW l10n_ar.arca.activity: l10n_ar.activity_722020
+NEW l10n_ar.arca.activity: l10n_ar.activity_72910
+NEW l10n_ar.arca.activity: l10n_ar.activity_72990
+NEW l10n_ar.arca.activity: l10n_ar.activity_731001
+NEW l10n_ar.arca.activity: l10n_ar.activity_731009
+NEW l10n_ar.arca.activity: l10n_ar.activity_732000
+NEW l10n_ar.arca.activity: l10n_ar.activity_741000
+NEW l10n_ar.arca.activity: l10n_ar.activity_742000
+NEW l10n_ar.arca.activity: l10n_ar.activity_749001
+NEW l10n_ar.arca.activity: l10n_ar.activity_749002
+NEW l10n_ar.arca.activity: l10n_ar.activity_749003
+NEW l10n_ar.arca.activity: l10n_ar.activity_749009
+NEW l10n_ar.arca.activity: l10n_ar.activity_750000
+NEW l10n_ar.arca.activity: l10n_ar.activity_771110
+NEW l10n_ar.arca.activity: l10n_ar.activity_771190
+NEW l10n_ar.arca.activity: l10n_ar.activity_771210
+NEW l10n_ar.arca.activity: l10n_ar.activity_771220
+NEW l10n_ar.arca.activity: l10n_ar.activity_771290
+NEW l10n_ar.arca.activity: l10n_ar.activity_772010
+NEW l10n_ar.arca.activity: l10n_ar.activity_772091
+NEW l10n_ar.arca.activity: l10n_ar.activity_772099
+NEW l10n_ar.arca.activity: l10n_ar.activity_773010
+NEW l10n_ar.arca.activity: l10n_ar.activity_773020
+NEW l10n_ar.arca.activity: l10n_ar.activity_773030
+NEW l10n_ar.arca.activity: l10n_ar.activity_773040
+NEW l10n_ar.arca.activity: l10n_ar.activity_773090
+NEW l10n_ar.arca.activity: l10n_ar.activity_774000
+NEW l10n_ar.arca.activity: l10n_ar.activity_780000
+NEW l10n_ar.arca.activity: l10n_ar.activity_791100
+NEW l10n_ar.arca.activity: l10n_ar.activity_791200
+NEW l10n_ar.arca.activity: l10n_ar.activity_791901
+NEW l10n_ar.arca.activity: l10n_ar.activity_791909
+NEW l10n_ar.arca.activity: l10n_ar.activity_8
+NEW l10n_ar.arca.activity: l10n_ar.activity_801010
+NEW l10n_ar.arca.activity: l10n_ar.activity_801020
+NEW l10n_ar.arca.activity: l10n_ar.activity_801090
+NEW l10n_ar.arca.activity: l10n_ar.activity_81100
+NEW l10n_ar.arca.activity: l10n_ar.activity_811000
+NEW l10n_ar.arca.activity: l10n_ar.activity_81200
+NEW l10n_ar.arca.activity: l10n_ar.activity_812010
+NEW l10n_ar.arca.activity: l10n_ar.activity_812020
+NEW l10n_ar.arca.activity: l10n_ar.activity_812090
+NEW l10n_ar.arca.activity: l10n_ar.activity_81300
+NEW l10n_ar.arca.activity: l10n_ar.activity_813000
+NEW l10n_ar.arca.activity: l10n_ar.activity_81400
+NEW l10n_ar.arca.activity: l10n_ar.activity_821100
+NEW l10n_ar.arca.activity: l10n_ar.activity_821900
+NEW l10n_ar.arca.activity: l10n_ar.activity_822000
+NEW l10n_ar.arca.activity: l10n_ar.activity_823000
+NEW l10n_ar.arca.activity: l10n_ar.activity_829100
+NEW l10n_ar.arca.activity: l10n_ar.activity_829200
+NEW l10n_ar.arca.activity: l10n_ar.activity_829900
+NEW l10n_ar.arca.activity: l10n_ar.activity_841100
+NEW l10n_ar.arca.activity: l10n_ar.activity_841200
+NEW l10n_ar.arca.activity: l10n_ar.activity_841300
+NEW l10n_ar.arca.activity: l10n_ar.activity_841900
+NEW l10n_ar.arca.activity: l10n_ar.activity_842100
+NEW l10n_ar.arca.activity: l10n_ar.activity_842200
+NEW l10n_ar.arca.activity: l10n_ar.activity_842300
+NEW l10n_ar.arca.activity: l10n_ar.activity_842400
+NEW l10n_ar.arca.activity: l10n_ar.activity_842500
+NEW l10n_ar.arca.activity: l10n_ar.activity_843000
+NEW l10n_ar.arca.activity: l10n_ar.activity_851010
+NEW l10n_ar.arca.activity: l10n_ar.activity_851020
+NEW l10n_ar.arca.activity: l10n_ar.activity_852100
+NEW l10n_ar.arca.activity: l10n_ar.activity_852200
+NEW l10n_ar.arca.activity: l10n_ar.activity_853100
+NEW l10n_ar.arca.activity: l10n_ar.activity_853201
+NEW l10n_ar.arca.activity: l10n_ar.activity_853300
+NEW l10n_ar.arca.activity: l10n_ar.activity_854910
+NEW l10n_ar.arca.activity: l10n_ar.activity_854920
+NEW l10n_ar.arca.activity: l10n_ar.activity_854930
+NEW l10n_ar.arca.activity: l10n_ar.activity_854940
+NEW l10n_ar.arca.activity: l10n_ar.activity_854950
+NEW l10n_ar.arca.activity: l10n_ar.activity_854960
+NEW l10n_ar.arca.activity: l10n_ar.activity_854990
+NEW l10n_ar.arca.activity: l10n_ar.activity_855000
+NEW l10n_ar.arca.activity: l10n_ar.activity_861010
+NEW l10n_ar.arca.activity: l10n_ar.activity_861020
+NEW l10n_ar.arca.activity: l10n_ar.activity_862110
+NEW l10n_ar.arca.activity: l10n_ar.activity_862120
+NEW l10n_ar.arca.activity: l10n_ar.activity_862130
+NEW l10n_ar.arca.activity: l10n_ar.activity_862200
+NEW l10n_ar.arca.activity: l10n_ar.activity_863110
+NEW l10n_ar.arca.activity: l10n_ar.activity_863120
+NEW l10n_ar.arca.activity: l10n_ar.activity_863190
+NEW l10n_ar.arca.activity: l10n_ar.activity_863200
+NEW l10n_ar.arca.activity: l10n_ar.activity_863300
+NEW l10n_ar.arca.activity: l10n_ar.activity_864000
+NEW l10n_ar.arca.activity: l10n_ar.activity_869010
+NEW l10n_ar.arca.activity: l10n_ar.activity_869090
+NEW l10n_ar.arca.activity: l10n_ar.activity_870100
+NEW l10n_ar.arca.activity: l10n_ar.activity_870210
+NEW l10n_ar.arca.activity: l10n_ar.activity_870220
+NEW l10n_ar.arca.activity: l10n_ar.activity_870910
+NEW l10n_ar.arca.activity: l10n_ar.activity_870920
+NEW l10n_ar.arca.activity: l10n_ar.activity_870990
+NEW l10n_ar.arca.activity: l10n_ar.activity_880000
+NEW l10n_ar.arca.activity: l10n_ar.activity_89110
+NEW l10n_ar.arca.activity: l10n_ar.activity_89120
+NEW l10n_ar.arca.activity: l10n_ar.activity_89200
+NEW l10n_ar.arca.activity: l10n_ar.activity_89300
+NEW l10n_ar.arca.activity: l10n_ar.activity_89900
+NEW l10n_ar.arca.activity: l10n_ar.activity_9
+NEW l10n_ar.arca.activity: l10n_ar.activity_900011
+NEW l10n_ar.arca.activity: l10n_ar.activity_900021
+NEW l10n_ar.arca.activity: l10n_ar.activity_900030
+NEW l10n_ar.arca.activity: l10n_ar.activity_900040
+NEW l10n_ar.arca.activity: l10n_ar.activity_900091
+NEW l10n_ar.arca.activity: l10n_ar.activity_91000
+NEW l10n_ar.arca.activity: l10n_ar.activity_910100
+NEW l10n_ar.arca.activity: l10n_ar.activity_910200
+NEW l10n_ar.arca.activity: l10n_ar.activity_910300
+NEW l10n_ar.arca.activity: l10n_ar.activity_910900
+NEW l10n_ar.arca.activity: l10n_ar.activity_920001
+NEW l10n_ar.arca.activity: l10n_ar.activity_920009
+NEW l10n_ar.arca.activity: l10n_ar.activity_931010
+NEW l10n_ar.arca.activity: l10n_ar.activity_931020
+NEW l10n_ar.arca.activity: l10n_ar.activity_931030
+NEW l10n_ar.arca.activity: l10n_ar.activity_931041
+NEW l10n_ar.arca.activity: l10n_ar.activity_931042
+NEW l10n_ar.arca.activity: l10n_ar.activity_931050
+NEW l10n_ar.arca.activity: l10n_ar.activity_931090
+NEW l10n_ar.arca.activity: l10n_ar.activity_939010
+NEW l10n_ar.arca.activity: l10n_ar.activity_939020
+NEW l10n_ar.arca.activity: l10n_ar.activity_939030
+NEW l10n_ar.arca.activity: l10n_ar.activity_939090
+NEW l10n_ar.arca.activity: l10n_ar.activity_941100
+NEW l10n_ar.arca.activity: l10n_ar.activity_941200
+NEW l10n_ar.arca.activity: l10n_ar.activity_942000
+NEW l10n_ar.arca.activity: l10n_ar.activity_949100
+NEW l10n_ar.arca.activity: l10n_ar.activity_949200
+NEW l10n_ar.arca.activity: l10n_ar.activity_949910
+NEW l10n_ar.arca.activity: l10n_ar.activity_949920
+NEW l10n_ar.arca.activity: l10n_ar.activity_949930
+NEW l10n_ar.arca.activity: l10n_ar.activity_949990
+NEW l10n_ar.arca.activity: l10n_ar.activity_951100
+NEW l10n_ar.arca.activity: l10n_ar.activity_951200
+NEW l10n_ar.arca.activity: l10n_ar.activity_952100
+NEW l10n_ar.arca.activity: l10n_ar.activity_952200
+NEW l10n_ar.arca.activity: l10n_ar.activity_952300
+NEW l10n_ar.arca.activity: l10n_ar.activity_952910
+NEW l10n_ar.arca.activity: l10n_ar.activity_952920
+NEW l10n_ar.arca.activity: l10n_ar.activity_952990
+NEW l10n_ar.arca.activity: l10n_ar.activity_960101
+NEW l10n_ar.arca.activity: l10n_ar.activity_960102
+NEW l10n_ar.arca.activity: l10n_ar.activity_960201
+NEW l10n_ar.arca.activity: l10n_ar.activity_960202
+NEW l10n_ar.arca.activity: l10n_ar.activity_960300
+NEW l10n_ar.arca.activity: l10n_ar.activity_960910
+NEW l10n_ar.arca.activity: l10n_ar.activity_960990
+NEW l10n_ar.arca.activity: l10n_ar.activity_970000
+NEW l10n_ar.arca.activity: l10n_ar.activity_99000
+NEW l10n_ar.arca.activity: l10n_ar.activity_990000
+DEL l10n_latam.identification.type: l10n_ar.it_AN
+DEL l10n_latam.identification.type: l10n_ar.it_CBA
+DEL l10n_latam.identification.type: l10n_ar.it_CCat
+DEL l10n_latam.identification.type: l10n_ar.it_CCor
+DEL l10n_latam.identification.type: l10n_ar.it_CCorr
+DEL l10n_latam.identification.type: l10n_ar.it_CDI
+DEL l10n_latam.identification.type: l10n_ar.it_CIBAR
+DEL l10n_latam.identification.type: l10n_ar.it_CICha
+DEL l10n_latam.identification.type: l10n_ar.it_CIChu
+DEL l10n_latam.identification.type: l10n_ar.it_CIER
+DEL l10n_latam.identification.type: l10n_ar.it_CIF
+DEL l10n_latam.identification.type: l10n_ar.it_CIJ
+DEL l10n_latam.identification.type: l10n_ar.it_CILP
+DEL l10n_latam.identification.type: l10n_ar.it_CILR
+DEL l10n_latam.identification.type: l10n_ar.it_CIMen
+DEL l10n_latam.identification.type: l10n_ar.it_CIMis
+DEL l10n_latam.identification.type: l10n_ar.it_CIN
+DEL l10n_latam.identification.type: l10n_ar.it_CIRN
+DEL l10n_latam.identification.type: l10n_ar.it_CIS
+DEL l10n_latam.identification.type: l10n_ar.it_CISC
+DEL l10n_latam.identification.type: l10n_ar.it_CISF
+DEL l10n_latam.identification.type: l10n_ar.it_CISJ
+DEL l10n_latam.identification.type: l10n_ar.it_CISL
+DEL l10n_latam.identification.type: l10n_ar.it_CISdE
+DEL l10n_latam.identification.type: l10n_ar.it_CIT
+DEL l10n_latam.identification.type: l10n_ar.it_CITdF
+DEL l10n_latam.identification.type: l10n_ar.it_CPF
+DEL l10n_latam.identification.type: l10n_ar.it_CUIL
+DEL l10n_latam.identification.type: l10n_ar.it_CdM
+DEL l10n_latam.identification.type: l10n_ar.it_ET
+DEL l10n_latam.identification.type: l10n_ar.it_LC
+DEL l10n_latam.identification.type: l10n_ar.it_LE
+DEL l10n_latam.identification.type: l10n_ar.it_Sigd
+DEL l10n_latam.identification.type: l10n_ar.it_UpApP
+DEL l10n_latam.identification.type: l10n_ar.it_cuit
+DEL l10n_latam.identification.type: l10n_ar.it_dni
+res.country: base.ad (noupdate switched)
+res.country: base.ae (noupdate switched)
+res.country: base.af (noupdate switched)
+res.country: base.ag (noupdate switched)
+res.country: base.ai (noupdate switched)
+res.country: base.al (noupdate switched)
+res.country: base.am (noupdate switched)
+res.country: base.ao (noupdate switched)
+res.country: base.aq (noupdate switched)
+res.country: base.ar (noupdate switched)
+res.country: base.as (noupdate switched)
+res.country: base.at (noupdate switched)
+res.country: base.au (noupdate switched)
+res.country: base.aw (noupdate switched)
+res.country: base.az (noupdate switched)
+res.country: base.ba (noupdate switched)
+res.country: base.bb (noupdate switched)
+res.country: base.bd (noupdate switched)
+res.country: base.be (noupdate switched)
+res.country: base.bf (noupdate switched)
+res.country: base.bg (noupdate switched)
+res.country: base.bh (noupdate switched)
+res.country: base.bi (noupdate switched)
+res.country: base.bj (noupdate switched)
+res.country: base.bm (noupdate switched)
+res.country: base.bn (noupdate switched)
+res.country: base.bo (noupdate switched)
+res.country: base.bq (noupdate switched)
+res.country: base.br (noupdate switched)
+res.country: base.bs (noupdate switched)
+res.country: base.bt (noupdate switched)
+res.country: base.bw (noupdate switched)
+res.country: base.by (noupdate switched)
+res.country: base.bz (noupdate switched)
+res.country: base.ca (noupdate switched)
+res.country: base.cc (noupdate switched)
+res.country: base.cd (noupdate switched)
+res.country: base.cf (noupdate switched)
+res.country: base.cg (noupdate switched)
+res.country: base.ch (noupdate switched)
+res.country: base.ci (noupdate switched)
+res.country: base.ck (noupdate switched)
+res.country: base.cl (noupdate switched)
+res.country: base.cm (noupdate switched)
+res.country: base.cn (noupdate switched)
+res.country: base.co (noupdate switched)
+res.country: base.cr (noupdate switched)
+res.country: base.cu (noupdate switched)
+res.country: base.cv (noupdate switched)
+res.country: base.cx (noupdate switched)
+res.country: base.cy (noupdate switched)
+res.country: base.cz (noupdate switched)
+res.country: base.de (noupdate switched)
+res.country: base.dj (noupdate switched)
+res.country: base.dk (noupdate switched)
+res.country: base.dm (noupdate switched)
+res.country: base.do (noupdate switched)
+res.country: base.dz (noupdate switched)
+res.country: base.ec (noupdate switched)
+res.country: base.ee (noupdate switched)
+res.country: base.eg (noupdate switched)
+res.country: base.er (noupdate switched)
+res.country: base.es (noupdate switched)
+res.country: base.et (noupdate switched)
+res.country: base.fi (noupdate switched)
+res.country: base.fj (noupdate switched)
+res.country: base.fk (noupdate switched)
+res.country: base.fm (noupdate switched)
+res.country: base.fr (noupdate switched)
+res.country: base.ga (noupdate switched)
+res.country: base.gd (noupdate switched)
+res.country: base.ge (noupdate switched)
+res.country: base.gg (noupdate switched)
+res.country: base.gh (noupdate switched)
+res.country: base.gi (noupdate switched)
+res.country: base.gl (noupdate switched)
+res.country: base.gm (noupdate switched)
+res.country: base.gn (noupdate switched)
+res.country: base.gq (noupdate switched)
+res.country: base.gr (noupdate switched)
+res.country: base.gt (noupdate switched)
+res.country: base.gu (noupdate switched)
+res.country: base.gw (noupdate switched)
+res.country: base.gy (noupdate switched)
+res.country: base.hk (noupdate switched)
+res.country: base.hn (noupdate switched)
+res.country: base.hr (noupdate switched)
+res.country: base.ht (noupdate switched)
+res.country: base.hu (noupdate switched)
+res.country: base.id (noupdate switched)
+res.country: base.ie (noupdate switched)
+res.country: base.il (noupdate switched)
+res.country: base.im (noupdate switched)
+res.country: base.in (noupdate switched)
+res.country: base.iq (noupdate switched)
+res.country: base.ir (noupdate switched)
+res.country: base.is (noupdate switched)
+res.country: base.it (noupdate switched)
+res.country: base.je (noupdate switched)
+res.country: base.jm (noupdate switched)
+res.country: base.jo (noupdate switched)
+res.country: base.jp (noupdate switched)
+res.country: base.ke (noupdate switched)
+res.country: base.kg (noupdate switched)
+res.country: base.kh (noupdate switched)
+res.country: base.ki (noupdate switched)
+res.country: base.km (noupdate switched)
+res.country: base.kn (noupdate switched)
+res.country: base.kp (noupdate switched)
+res.country: base.kr (noupdate switched)
+res.country: base.kw (noupdate switched)
+res.country: base.ky (noupdate switched)
+res.country: base.kz (noupdate switched)
+res.country: base.la (noupdate switched)
+res.country: base.lb (noupdate switched)
+res.country: base.lc (noupdate switched)
+res.country: base.li (noupdate switched)
+res.country: base.lk (noupdate switched)
+res.country: base.lr (noupdate switched)
+res.country: base.ls (noupdate switched)
+res.country: base.lt (noupdate switched)
+res.country: base.lu (noupdate switched)
+res.country: base.lv (noupdate switched)
+res.country: base.ly (noupdate switched)
+res.country: base.ma (noupdate switched)
+res.country: base.mc (noupdate switched)
+res.country: base.md (noupdate switched)
+res.country: base.me (noupdate switched)
+res.country: base.mg (noupdate switched)
+res.country: base.mh (noupdate switched)
+res.country: base.mk (noupdate switched)
+res.country: base.ml (noupdate switched)
+res.country: base.mm (noupdate switched)
+res.country: base.mn (noupdate switched)
+res.country: base.mo (noupdate switched)
+res.country: base.mp (noupdate switched)
+res.country: base.mr (noupdate switched)
+res.country: base.ms (noupdate switched)
+res.country: base.mt (noupdate switched)
+res.country: base.mu (noupdate switched)
+res.country: base.mv (noupdate switched)
+res.country: base.mw (noupdate switched)
+res.country: base.mx (noupdate switched)
+res.country: base.my (noupdate switched)
+res.country: base.mz (noupdate switched)
+res.country: base.na (noupdate switched)
+res.country: base.ne (noupdate switched)
+res.country: base.nf (noupdate switched)
+res.country: base.ng (noupdate switched)
+res.country: base.ni (noupdate switched)
+res.country: base.nl (noupdate switched)
+res.country: base.no (noupdate switched)
+res.country: base.np (noupdate switched)
+res.country: base.nr (noupdate switched)
+res.country: base.nu (noupdate switched)
+res.country: base.nz (noupdate switched)
+res.country: base.om (noupdate switched)
+res.country: base.pa (noupdate switched)
+res.country: base.pe (noupdate switched)
+res.country: base.pf (noupdate switched)
+res.country: base.pg (noupdate switched)
+res.country: base.ph (noupdate switched)
+res.country: base.pk (noupdate switched)
+res.country: base.pl (noupdate switched)
+res.country: base.pm (noupdate switched)
+res.country: base.pn (noupdate switched)
+res.country: base.pr (noupdate switched)
+res.country: base.ps (noupdate switched)
+res.country: base.pt (noupdate switched)
+res.country: base.pw (noupdate switched)
+res.country: base.py (noupdate switched)
+res.country: base.qa (noupdate switched)
+res.country: base.ro (noupdate switched)
+res.country: base.rs (noupdate switched)
+res.country: base.ru (noupdate switched)
+res.country: base.rw (noupdate switched)
+res.country: base.sa (noupdate switched)
+res.country: base.sb (noupdate switched)
+res.country: base.sc (noupdate switched)
+res.country: base.sd (noupdate switched)
+res.country: base.se (noupdate switched)
+res.country: base.sg (noupdate switched)
+res.country: base.sh (noupdate switched)
+res.country: base.si (noupdate switched)
+res.country: base.sj (noupdate switched)
+res.country: base.sk (noupdate switched)
+res.country: base.sl (noupdate switched)
+res.country: base.sm (noupdate switched)
+res.country: base.sn (noupdate switched)
+res.country: base.so (noupdate switched)
+res.country: base.sr (noupdate switched)
+res.country: base.st (noupdate switched)
+res.country: base.sv (noupdate switched)
+res.country: base.sy (noupdate switched)
+res.country: base.sz (noupdate switched)
+res.country: base.tc (noupdate switched)
+res.country: base.td (noupdate switched)
+res.country: base.tg (noupdate switched)
+res.country: base.th (noupdate switched)
+res.country: base.tj (noupdate switched)
+res.country: base.tk (noupdate switched)
+res.country: base.tl (noupdate switched)
+res.country: base.tm (noupdate switched)
+res.country: base.tn (noupdate switched)
+res.country: base.to (noupdate switched)
+res.country: base.tr (noupdate switched)
+res.country: base.tt (noupdate switched)
+res.country: base.tv (noupdate switched)
+res.country: base.tw (noupdate switched)
+res.country: base.tz (noupdate switched)
+res.country: base.ua (noupdate switched)
+res.country: base.ug (noupdate switched)
+res.country: base.uk (noupdate switched)
+res.country: base.us (noupdate switched)
+res.country: base.uy (noupdate switched)
+res.country: base.uz (noupdate switched)
+res.country: base.va (noupdate switched)
+res.country: base.vc (noupdate switched)
+res.country: base.ve (noupdate switched)
+res.country: base.vg (noupdate switched)
+res.country: base.vi (noupdate switched)
+res.country: base.vn (noupdate switched)
+res.country: base.vu (noupdate switched)
+res.country: base.ws (noupdate switched)
+res.country: base.ye (noupdate switched)
+res.country: base.za (noupdate switched)
+res.country: base.zm (noupdate switched)
+res.country: base.zw (noupdate switched)
+res.currency: base.ANG (noupdate switched)
+res.currency: base.ARS (noupdate switched)
+res.currency: base.AUD (noupdate switched)
+res.currency: base.BOB (noupdate switched)
+res.currency: base.BRL (noupdate switched)
+res.currency: base.CAD (noupdate switched)
+res.currency: base.CHF (noupdate switched)
+res.currency: base.CLP (noupdate switched)
+res.currency: base.CNY (noupdate switched)
+res.currency: base.COP (noupdate switched)
+res.currency: base.CZK (noupdate switched)
+res.currency: base.DKK (noupdate switched)
+res.currency: base.DOP (noupdate switched)
+res.currency: base.EGP (noupdate switched)
+res.currency: base.EUR (noupdate switched)
+res.currency: base.GBP (noupdate switched)
+res.currency: base.GTQ (noupdate switched)
+res.currency: base.HKD (noupdate switched)
+res.currency: base.HNL (noupdate switched)
+res.currency: base.HUF (noupdate switched)
+res.currency: base.ILS (noupdate switched)
+res.currency: base.INR (noupdate switched)
+res.currency: base.JMD (noupdate switched)
+res.currency: base.JPY (noupdate switched)
+res.currency: base.KWD (noupdate switched)
+res.currency: base.MAD (noupdate switched)
+res.currency: base.MXN (noupdate switched)
+res.currency: base.NIO (noupdate switched)
+res.currency: base.NOK (noupdate switched)
+res.currency: base.PAB (noupdate switched)
+res.currency: base.PEN (noupdate switched)
+res.currency: base.PLN (noupdate switched)
+res.currency: base.PYG (noupdate switched)
+res.currency: base.RON (noupdate switched)
+res.currency: base.SAR (noupdate switched)
+res.currency: base.SEK (noupdate switched)
+res.currency: base.SGD (noupdate switched)
+res.currency: base.THB (noupdate switched)
+res.currency: base.TWD (noupdate switched)
+res.currency: base.USD (noupdate switched)
+res.currency: base.UYU (noupdate switched)
+res.currency: base.VEF (noupdate switched)
+res.currency: base.ZAR (noupdate switched)
+res.partner: l10n_ar.par_cfa (noupdate switched)
+res.partner: l10n_ar.par_iibb_pagar (noupdate switched)
+res.partner: l10n_ar.partner_afip (noupdate switched)
+uom.uom: uom.product_uom_cm (noupdate switched)
+uom.uom: uom.product_uom_day (noupdate switched)
+uom.uom: uom.product_uom_dozen (noupdate switched)
+uom.uom: uom.product_uom_floz (noupdate switched)
+uom.uom: uom.product_uom_foot (noupdate switched)
+uom.uom: uom.product_uom_gal (noupdate switched)
+uom.uom: uom.product_uom_gram (noupdate switched)
+uom.uom: uom.product_uom_hour (noupdate switched)
+uom.uom: uom.product_uom_inch (noupdate switched)
+uom.uom: uom.product_uom_kgm (noupdate switched)
+uom.uom: uom.product_uom_km (noupdate switched)
+uom.uom: uom.product_uom_lb (noupdate switched)
+uom.uom: uom.product_uom_litre (noupdate switched)
+uom.uom: uom.product_uom_meter (noupdate switched)
+uom.uom: uom.product_uom_mile (noupdate switched)
+uom.uom: uom.product_uom_oz (noupdate switched)
+uom.uom: uom.product_uom_qt (noupdate switched)
+uom.uom: uom.product_uom_ton (noupdate switched)
+uom.uom: uom.product_uom_unit (noupdate switched)
diff --git a/openupgrade_scripts/scripts/l10n_pe_pos/20.0.1.0/noupdate_changes.xml b/openupgrade_scripts/scripts/l10n_pe_pos/20.0.1.0/noupdate_changes.xml
new file mode 100644
index 00000000000..7b89ff5ca13
--- /dev/null
+++ b/openupgrade_scripts/scripts/l10n_pe_pos/20.0.1.0/noupdate_changes.xml
@@ -0,0 +1,7 @@
+
+
+
+
+
+
+
diff --git a/openupgrade_scripts/scripts/l10n_pe_pos/20.0.1.0/post-migration.py b/openupgrade_scripts/scripts/l10n_pe_pos/20.0.1.0/post-migration.py
new file mode 100644
index 00000000000..2835888f65c
--- /dev/null
+++ b/openupgrade_scripts/scripts/l10n_pe_pos/20.0.1.0/post-migration.py
@@ -0,0 +1,9 @@
+# Copyright 2026 Don Kendall
+# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl).
+
+from openupgradelib import openupgrade
+
+
+@openupgrade.migrate()
+def migrate(env, version):
+ openupgrade.load_data(env, "l10n_pe_pos", "20.0.1.0/noupdate_changes.xml")
diff --git a/openupgrade_scripts/scripts/l10n_pe_pos/20.0.1.0/upgrade_analysis.txt b/openupgrade_scripts/scripts/l10n_pe_pos/20.0.1.0/upgrade_analysis.txt
new file mode 100644
index 00000000000..5171fed0d3e
--- /dev/null
+++ b/openupgrade_scripts/scripts/l10n_pe_pos/20.0.1.0/upgrade_analysis.txt
@@ -0,0 +1,5 @@
+---Models in module 'l10n_pe_pos'---
+---Fields in module 'l10n_pe_pos'---
+---XML records in module 'l10n_pe_pos'---
+NEW ir.ui.view: l10n_pe_pos.view_partner_form_pos_ui_inherit_l10n_pe_pos
+res.partner: l10n_pe_pos.partner_pe_cf (noupdate switched)
diff --git a/openupgrade_scripts/scripts/l10n_pe_pos/20.0.1.0/upgrade_analysis_work.txt b/openupgrade_scripts/scripts/l10n_pe_pos/20.0.1.0/upgrade_analysis_work.txt
new file mode 100644
index 00000000000..c53ac2f0f41
--- /dev/null
+++ b/openupgrade_scripts/scripts/l10n_pe_pos/20.0.1.0/upgrade_analysis_work.txt
@@ -0,0 +1,7 @@
+---Models in module 'l10n_pe_pos'---
+---Fields in module 'l10n_pe_pos'---
+---XML records in module 'l10n_pe_pos'---
+NEW ir.ui.view: l10n_pe_pos.view_partner_form_pos_ui_inherit_l10n_pe_pos
+# NOTHING TO DO: the record is not noupdate, so the module update creates it
+res.partner: l10n_pe_pos.partner_pe_cf (noupdate switched)
+# DONE: post-migration: load noupdate_changes.xml
diff --git a/openupgrade_scripts/scripts/l10n_pk/20.0.1.1/noupdate_changes.xml b/openupgrade_scripts/scripts/l10n_pk/20.0.1.1/noupdate_changes.xml
new file mode 100644
index 00000000000..6e0e2a3170d
--- /dev/null
+++ b/openupgrade_scripts/scripts/l10n_pk/20.0.1.1/noupdate_changes.xml
@@ -0,0 +1,6 @@
+
+
+
+ Business Identification
+
+
diff --git a/openupgrade_scripts/scripts/l10n_pk/20.0.1.1/post-migration.py b/openupgrade_scripts/scripts/l10n_pk/20.0.1.1/post-migration.py
new file mode 100644
index 00000000000..b5898484ea0
--- /dev/null
+++ b/openupgrade_scripts/scripts/l10n_pk/20.0.1.1/post-migration.py
@@ -0,0 +1,15 @@
+# Copyright 2026 Don Kendall
+# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl).
+
+from openupgradelib import openupgrade
+
+
+@openupgrade.migrate()
+def migrate(env, version):
+ openupgrade.load_data(env, "l10n_pk", "20.0.1.1/noupdate_changes.xml")
+ openupgrade.delete_record_translations(
+ env.cr,
+ "l10n_pk",
+ ["base.pk"],
+ ["vat_label"],
+ )
diff --git a/openupgrade_scripts/scripts/l10n_pk/20.0.1.1/upgrade_analysis.txt b/openupgrade_scripts/scripts/l10n_pk/20.0.1.1/upgrade_analysis.txt
new file mode 100644
index 00000000000..4fdf05a7048
--- /dev/null
+++ b/openupgrade_scripts/scripts/l10n_pk/20.0.1.1/upgrade_analysis.txt
@@ -0,0 +1,224 @@
+---Models in module 'l10n_pk'---
+---Fields in module 'l10n_pk'---
+l10n_pk / account.tax / l10n_pk_is_further_tax (boolean): NEW
+---XML records in module 'l10n_pk'---
+DEL account.report: l10n_pk.l10n_pk_vat_form
+DEL account.report: l10n_pk.l10n_pk_wh_vat_form
+DEL account.report.column: l10n_pk.l10n_pk_vat_column_net
+DEL account.report.column: l10n_pk.l10n_pk_vat_column_tax
+DEL account.report.column: l10n_pk.l10n_pk_wh_vat_column_net
+DEL account.report.column: l10n_pk.l10n_pk_wh_vat_column_tax
+DEL account.report.expression: l10n_pk.l10n_pk_vat_expression_AJP_16_base
+DEL account.report.expression: l10n_pk.l10n_pk_vat_expression_AJP_16_tax
+DEL account.report.expression: l10n_pk.l10n_pk_vat_expression_AJS_16_base
+DEL account.report.expression: l10n_pk.l10n_pk_vat_expression_AJS_16_tax
+DEL account.report.expression: l10n_pk.l10n_pk_vat_expression_BAS_15_base
+DEL account.report.expression: l10n_pk.l10n_pk_vat_expression_BAS_15_tax
+DEL account.report.expression: l10n_pk.l10n_pk_vat_expression_ICP_16_base
+DEL account.report.expression: l10n_pk.l10n_pk_vat_expression_ICP_16_tax
+DEL account.report.expression: l10n_pk.l10n_pk_vat_expression_ICS_16_base
+DEL account.report.expression: l10n_pk.l10n_pk_vat_expression_ICS_16_tax
+DEL account.report.expression: l10n_pk.l10n_pk_vat_expression_KPS_15_base
+DEL account.report.expression: l10n_pk.l10n_pk_vat_expression_KPS_15_tax
+DEL account.report.expression: l10n_pk.l10n_pk_vat_expression_KP_16_base
+DEL account.report.expression: l10n_pk.l10n_pk_vat_expression_KP_16_tax
+DEL account.report.expression: l10n_pk.l10n_pk_vat_expression_NSTP_AJK
+DEL account.report.expression: l10n_pk.l10n_pk_vat_expression_NSTP_BAL
+DEL account.report.expression: l10n_pk.l10n_pk_vat_expression_NSTP_ICT
+DEL account.report.expression: l10n_pk.l10n_pk_vat_expression_NSTP_KP
+DEL account.report.expression: l10n_pk.l10n_pk_vat_expression_NSTP_PUN
+DEL account.report.expression: l10n_pk.l10n_pk_vat_expression_NSTP_SIN
+DEL account.report.expression: l10n_pk.l10n_pk_vat_expression_NST_1
+DEL account.report.expression: l10n_pk.l10n_pk_vat_expression_NST_P1
+DEL account.report.expression: l10n_pk.l10n_pk_vat_expression_NST_S1
+DEL account.report.expression: l10n_pk.l10n_pk_vat_expression_NS_1
+DEL account.report.expression: l10n_pk.l10n_pk_vat_expression_NS_P1
+DEL account.report.expression: l10n_pk.l10n_pk_vat_expression_NS_S1
+DEL account.report.expression: l10n_pk.l10n_pk_vat_expression_PP_16_base
+DEL account.report.expression: l10n_pk.l10n_pk_vat_expression_PP_16_tax
+DEL account.report.expression: l10n_pk.l10n_pk_vat_expression_P_0_base
+DEL account.report.expression: l10n_pk.l10n_pk_vat_expression_P_0_tax
+DEL account.report.expression: l10n_pk.l10n_pk_vat_expression_P_10_base
+DEL account.report.expression: l10n_pk.l10n_pk_vat_expression_P_10_tax
+DEL account.report.expression: l10n_pk.l10n_pk_vat_expression_P_13_base
+DEL account.report.expression: l10n_pk.l10n_pk_vat_expression_P_13_tax
+DEL account.report.expression: l10n_pk.l10n_pk_vat_expression_P_15_base
+DEL account.report.expression: l10n_pk.l10n_pk_vat_expression_P_15_tax
+DEL account.report.expression: l10n_pk.l10n_pk_vat_expression_P_16_base
+DEL account.report.expression: l10n_pk.l10n_pk_vat_expression_P_16_tax
+DEL account.report.expression: l10n_pk.l10n_pk_vat_expression_P_17_base
+DEL account.report.expression: l10n_pk.l10n_pk_vat_expression_P_17_tax
+DEL account.report.expression: l10n_pk.l10n_pk_vat_expression_P_195_base
+DEL account.report.expression: l10n_pk.l10n_pk_vat_expression_P_195_tax
+DEL account.report.expression: l10n_pk.l10n_pk_vat_expression_P_1_base
+DEL account.report.expression: l10n_pk.l10n_pk_vat_expression_P_1_tax
+DEL account.report.expression: l10n_pk.l10n_pk_vat_expression_P_2_base
+DEL account.report.expression: l10n_pk.l10n_pk_vat_expression_P_2_tax
+DEL account.report.expression: l10n_pk.l10n_pk_vat_expression_P_3_base
+DEL account.report.expression: l10n_pk.l10n_pk_vat_expression_P_3_tax
+DEL account.report.expression: l10n_pk.l10n_pk_vat_expression_P_5_base
+DEL account.report.expression: l10n_pk.l10n_pk_vat_expression_P_5_tax
+DEL account.report.expression: l10n_pk.l10n_pk_vat_expression_P_8_base
+DEL account.report.expression: l10n_pk.l10n_pk_vat_expression_P_8_tax
+DEL account.report.expression: l10n_pk.l10n_pk_vat_expression_SIS_13_base
+DEL account.report.expression: l10n_pk.l10n_pk_vat_expression_SIS_13_tax
+DEL account.report.expression: l10n_pk.l10n_pk_vat_expression_SP_0_base
+DEL account.report.expression: l10n_pk.l10n_pk_vat_expression_SP_0_tax
+DEL account.report.expression: l10n_pk.l10n_pk_vat_expression_SP_13_base
+DEL account.report.expression: l10n_pk.l10n_pk_vat_expression_SP_13_tax
+DEL account.report.expression: l10n_pk.l10n_pk_vat_expression_SP_16_base
+DEL account.report.expression: l10n_pk.l10n_pk_vat_expression_SP_16_tax
+DEL account.report.expression: l10n_pk.l10n_pk_vat_expression_SS_17_base
+DEL account.report.expression: l10n_pk.l10n_pk_vat_expression_SS_17_tax
+DEL account.report.expression: l10n_pk.l10n_pk_vat_expression_STP_16_base
+DEL account.report.expression: l10n_pk.l10n_pk_vat_expression_STP_16_tax
+DEL account.report.expression: l10n_pk.l10n_pk_vat_expression_S_0_base
+DEL account.report.expression: l10n_pk.l10n_pk_vat_expression_S_0_tax
+DEL account.report.expression: l10n_pk.l10n_pk_vat_expression_S_10_base
+DEL account.report.expression: l10n_pk.l10n_pk_vat_expression_S_10_tax
+DEL account.report.expression: l10n_pk.l10n_pk_vat_expression_S_13_base
+DEL account.report.expression: l10n_pk.l10n_pk_vat_expression_S_13_tax
+DEL account.report.expression: l10n_pk.l10n_pk_vat_expression_S_15_base
+DEL account.report.expression: l10n_pk.l10n_pk_vat_expression_S_15_tax
+DEL account.report.expression: l10n_pk.l10n_pk_vat_expression_S_16_base
+DEL account.report.expression: l10n_pk.l10n_pk_vat_expression_S_16_tax
+DEL account.report.expression: l10n_pk.l10n_pk_vat_expression_S_17_base
+DEL account.report.expression: l10n_pk.l10n_pk_vat_expression_S_17_tax
+DEL account.report.expression: l10n_pk.l10n_pk_vat_expression_S_195_base
+DEL account.report.expression: l10n_pk.l10n_pk_vat_expression_S_195_tax
+DEL account.report.expression: l10n_pk.l10n_pk_vat_expression_S_1_base
+DEL account.report.expression: l10n_pk.l10n_pk_vat_expression_S_1_tax
+DEL account.report.expression: l10n_pk.l10n_pk_vat_expression_S_2_base
+DEL account.report.expression: l10n_pk.l10n_pk_vat_expression_S_2_tax
+DEL account.report.expression: l10n_pk.l10n_pk_vat_expression_S_3_base
+DEL account.report.expression: l10n_pk.l10n_pk_vat_expression_S_3_tax
+DEL account.report.expression: l10n_pk.l10n_pk_vat_expression_S_5_base
+DEL account.report.expression: l10n_pk.l10n_pk_vat_expression_S_5_tax
+DEL account.report.expression: l10n_pk.l10n_pk_vat_expression_S_8_base
+DEL account.report.expression: l10n_pk.l10n_pk_vat_expression_S_8_tax
+DEL account.report.expression: l10n_pk.l10n_pk_wh_vat_expression_P10_base
+DEL account.report.expression: l10n_pk.l10n_pk_wh_vat_expression_P10_tax
+DEL account.report.expression: l10n_pk.l10n_pk_wh_vat_expression_P11_base
+DEL account.report.expression: l10n_pk.l10n_pk_wh_vat_expression_P11_tax
+DEL account.report.expression: l10n_pk.l10n_pk_wh_vat_expression_P12_base
+DEL account.report.expression: l10n_pk.l10n_pk_wh_vat_expression_P12_tax
+DEL account.report.expression: l10n_pk.l10n_pk_wh_vat_expression_P13_base
+DEL account.report.expression: l10n_pk.l10n_pk_wh_vat_expression_P13_tax
+DEL account.report.expression: l10n_pk.l10n_pk_wh_vat_expression_P1_base
+DEL account.report.expression: l10n_pk.l10n_pk_wh_vat_expression_P1_tax
+DEL account.report.expression: l10n_pk.l10n_pk_wh_vat_expression_P2_base
+DEL account.report.expression: l10n_pk.l10n_pk_wh_vat_expression_P2_tax
+DEL account.report.expression: l10n_pk.l10n_pk_wh_vat_expression_P3_base
+DEL account.report.expression: l10n_pk.l10n_pk_wh_vat_expression_P3_tax
+DEL account.report.expression: l10n_pk.l10n_pk_wh_vat_expression_P4_base
+DEL account.report.expression: l10n_pk.l10n_pk_wh_vat_expression_P4_tax
+DEL account.report.expression: l10n_pk.l10n_pk_wh_vat_expression_P5_base
+DEL account.report.expression: l10n_pk.l10n_pk_wh_vat_expression_P5_tax
+DEL account.report.expression: l10n_pk.l10n_pk_wh_vat_expression_P6_base
+DEL account.report.expression: l10n_pk.l10n_pk_wh_vat_expression_P6_tax
+DEL account.report.expression: l10n_pk.l10n_pk_wh_vat_expression_P7_base
+DEL account.report.expression: l10n_pk.l10n_pk_wh_vat_expression_P7_tax
+DEL account.report.expression: l10n_pk.l10n_pk_wh_vat_expression_P8_base
+DEL account.report.expression: l10n_pk.l10n_pk_wh_vat_expression_P8_tax
+DEL account.report.expression: l10n_pk.l10n_pk_wh_vat_expression_P9_base
+DEL account.report.expression: l10n_pk.l10n_pk_wh_vat_expression_P9_tax
+DEL account.report.expression: l10n_pk.l10n_pk_wh_vat_expression_S10_base
+DEL account.report.expression: l10n_pk.l10n_pk_wh_vat_expression_S10_tax
+DEL account.report.expression: l10n_pk.l10n_pk_wh_vat_expression_S1_base
+DEL account.report.expression: l10n_pk.l10n_pk_wh_vat_expression_S1_tax
+DEL account.report.expression: l10n_pk.l10n_pk_wh_vat_expression_S2_base
+DEL account.report.expression: l10n_pk.l10n_pk_wh_vat_expression_S2_tax
+DEL account.report.expression: l10n_pk.l10n_pk_wh_vat_expression_S3_base
+DEL account.report.expression: l10n_pk.l10n_pk_wh_vat_expression_S3_tax
+DEL account.report.expression: l10n_pk.l10n_pk_wh_vat_expression_S4_base
+DEL account.report.expression: l10n_pk.l10n_pk_wh_vat_expression_S4_tax
+DEL account.report.expression: l10n_pk.l10n_pk_wh_vat_expression_S5_base
+DEL account.report.expression: l10n_pk.l10n_pk_wh_vat_expression_S5_tax
+DEL account.report.expression: l10n_pk.l10n_pk_wh_vat_expression_S6_base
+DEL account.report.expression: l10n_pk.l10n_pk_wh_vat_expression_S6_tax
+DEL account.report.expression: l10n_pk.l10n_pk_wh_vat_expression_S7_base
+DEL account.report.expression: l10n_pk.l10n_pk_wh_vat_expression_S7_tax
+DEL account.report.expression: l10n_pk.l10n_pk_wh_vat_expression_S8_base
+DEL account.report.expression: l10n_pk.l10n_pk_wh_vat_expression_S8_tax
+DEL account.report.expression: l10n_pk.l10n_pk_wh_vat_expression_S9_base
+DEL account.report.expression: l10n_pk.l10n_pk_wh_vat_expression_S9_tax
+DEL account.report.line: l10n_pk.l10n_pk_vat_line_AJP_16
+DEL account.report.line: l10n_pk.l10n_pk_vat_line_AJS_16
+DEL account.report.line: l10n_pk.l10n_pk_vat_line_BAS_15
+DEL account.report.line: l10n_pk.l10n_pk_vat_line_ICP_16
+DEL account.report.line: l10n_pk.l10n_pk_vat_line_ICS_16
+DEL account.report.line: l10n_pk.l10n_pk_vat_line_KPS_15
+DEL account.report.line: l10n_pk.l10n_pk_vat_line_KP_16
+DEL account.report.line: l10n_pk.l10n_pk_vat_line_NSTP_AJK
+DEL account.report.line: l10n_pk.l10n_pk_vat_line_NSTP_BAL
+DEL account.report.line: l10n_pk.l10n_pk_vat_line_NSTP_ICT
+DEL account.report.line: l10n_pk.l10n_pk_vat_line_NSTP_KP
+DEL account.report.line: l10n_pk.l10n_pk_vat_line_NSTP_PUN
+DEL account.report.line: l10n_pk.l10n_pk_vat_line_NSTP_SIN
+DEL account.report.line: l10n_pk.l10n_pk_vat_line_NST_P
+DEL account.report.line: l10n_pk.l10n_pk_vat_line_NST_S
+DEL account.report.line: l10n_pk.l10n_pk_vat_line_NS_P
+DEL account.report.line: l10n_pk.l10n_pk_vat_line_NS_S
+DEL account.report.line: l10n_pk.l10n_pk_vat_line_PP_16
+DEL account.report.line: l10n_pk.l10n_pk_vat_line_P_0
+DEL account.report.line: l10n_pk.l10n_pk_vat_line_P_1
+DEL account.report.line: l10n_pk.l10n_pk_vat_line_P_10
+DEL account.report.line: l10n_pk.l10n_pk_vat_line_P_13
+DEL account.report.line: l10n_pk.l10n_pk_vat_line_P_15
+DEL account.report.line: l10n_pk.l10n_pk_vat_line_P_16
+DEL account.report.line: l10n_pk.l10n_pk_vat_line_P_17
+DEL account.report.line: l10n_pk.l10n_pk_vat_line_P_195
+DEL account.report.line: l10n_pk.l10n_pk_vat_line_P_2
+DEL account.report.line: l10n_pk.l10n_pk_vat_line_P_3
+DEL account.report.line: l10n_pk.l10n_pk_vat_line_P_5
+DEL account.report.line: l10n_pk.l10n_pk_vat_line_P_8
+DEL account.report.line: l10n_pk.l10n_pk_vat_line_SIS_13
+DEL account.report.line: l10n_pk.l10n_pk_vat_line_SP_13
+DEL account.report.line: l10n_pk.l10n_pk_vat_line_SP_16
+DEL account.report.line: l10n_pk.l10n_pk_vat_line_SP_17
+DEL account.report.line: l10n_pk.l10n_pk_vat_line_SS_17
+DEL account.report.line: l10n_pk.l10n_pk_vat_line_STP_16
+DEL account.report.line: l10n_pk.l10n_pk_vat_line_S_0
+DEL account.report.line: l10n_pk.l10n_pk_vat_line_S_1
+DEL account.report.line: l10n_pk.l10n_pk_vat_line_S_10
+DEL account.report.line: l10n_pk.l10n_pk_vat_line_S_13
+DEL account.report.line: l10n_pk.l10n_pk_vat_line_S_15
+DEL account.report.line: l10n_pk.l10n_pk_vat_line_S_16
+DEL account.report.line: l10n_pk.l10n_pk_vat_line_S_17
+DEL account.report.line: l10n_pk.l10n_pk_vat_line_S_195
+DEL account.report.line: l10n_pk.l10n_pk_vat_line_S_2
+DEL account.report.line: l10n_pk.l10n_pk_vat_line_S_3
+DEL account.report.line: l10n_pk.l10n_pk_vat_line_S_5
+DEL account.report.line: l10n_pk.l10n_pk_vat_line_S_8
+DEL account.report.line: l10n_pk.l10n_pk_vat_title_NSTP_vat
+DEL account.report.line: l10n_pk.l10n_pk_vat_title_NST_vat
+DEL account.report.line: l10n_pk.l10n_pk_vat_title_NS_vat
+DEL account.report.line: l10n_pk.l10n_pk_vat_title_purchases_vat
+DEL account.report.line: l10n_pk.l10n_pk_vat_title_sales_vat
+DEL account.report.line: l10n_pk.l10n_pk_wh_vat_line_P1
+DEL account.report.line: l10n_pk.l10n_pk_wh_vat_line_P10
+DEL account.report.line: l10n_pk.l10n_pk_wh_vat_line_P11
+DEL account.report.line: l10n_pk.l10n_pk_wh_vat_line_P12
+DEL account.report.line: l10n_pk.l10n_pk_wh_vat_line_P13
+DEL account.report.line: l10n_pk.l10n_pk_wh_vat_line_P2
+DEL account.report.line: l10n_pk.l10n_pk_wh_vat_line_P3
+DEL account.report.line: l10n_pk.l10n_pk_wh_vat_line_P4
+DEL account.report.line: l10n_pk.l10n_pk_wh_vat_line_P5
+DEL account.report.line: l10n_pk.l10n_pk_wh_vat_line_P6
+DEL account.report.line: l10n_pk.l10n_pk_wh_vat_line_P7
+DEL account.report.line: l10n_pk.l10n_pk_wh_vat_line_P8
+DEL account.report.line: l10n_pk.l10n_pk_wh_vat_line_P9
+DEL account.report.line: l10n_pk.l10n_pk_wh_vat_line_S1
+DEL account.report.line: l10n_pk.l10n_pk_wh_vat_line_S10
+DEL account.report.line: l10n_pk.l10n_pk_wh_vat_line_S2
+DEL account.report.line: l10n_pk.l10n_pk_wh_vat_line_S3
+DEL account.report.line: l10n_pk.l10n_pk_wh_vat_line_S4
+DEL account.report.line: l10n_pk.l10n_pk_wh_vat_line_S5
+DEL account.report.line: l10n_pk.l10n_pk_wh_vat_line_S6
+DEL account.report.line: l10n_pk.l10n_pk_wh_vat_line_S7
+DEL account.report.line: l10n_pk.l10n_pk_wh_vat_line_S8
+DEL account.report.line: l10n_pk.l10n_pk_wh_vat_line_S9
+DEL account.report.line: l10n_pk.l10n_pk_wh_vat_title_purchases_vat
+DEL account.report.line: l10n_pk.l10n_pk_wh_vat_title_sales_vat
+NEW ir.config_parameter: l10n_pk.l10n_pk_iap_endpoint
+NEW ir.ui.view: l10n_pk.view_tax_form_inherit_l10n_pk
diff --git a/openupgrade_scripts/scripts/l10n_pk/20.0.1.1/upgrade_analysis_work.txt b/openupgrade_scripts/scripts/l10n_pk/20.0.1.1/upgrade_analysis_work.txt
new file mode 100644
index 00000000000..19632cb5ceb
--- /dev/null
+++ b/openupgrade_scripts/scripts/l10n_pk/20.0.1.1/upgrade_analysis_work.txt
@@ -0,0 +1,227 @@
+---Models in module 'l10n_pk'---
+---Fields in module 'l10n_pk'---
+l10n_pk / account.tax / l10n_pk_is_further_tax (boolean): NEW
+# NOTHING TO DO: empty is the right value for existing records
+---XML records in module 'l10n_pk'---
+DEL account.report: l10n_pk.l10n_pk_vat_form
+DEL account.report: l10n_pk.l10n_pk_wh_vat_form
+DEL account.report.column: l10n_pk.l10n_pk_vat_column_net
+DEL account.report.column: l10n_pk.l10n_pk_vat_column_tax
+DEL account.report.column: l10n_pk.l10n_pk_wh_vat_column_net
+DEL account.report.column: l10n_pk.l10n_pk_wh_vat_column_tax
+DEL account.report.expression: l10n_pk.l10n_pk_vat_expression_AJP_16_base
+DEL account.report.expression: l10n_pk.l10n_pk_vat_expression_AJP_16_tax
+DEL account.report.expression: l10n_pk.l10n_pk_vat_expression_AJS_16_base
+DEL account.report.expression: l10n_pk.l10n_pk_vat_expression_AJS_16_tax
+DEL account.report.expression: l10n_pk.l10n_pk_vat_expression_BAS_15_base
+DEL account.report.expression: l10n_pk.l10n_pk_vat_expression_BAS_15_tax
+DEL account.report.expression: l10n_pk.l10n_pk_vat_expression_ICP_16_base
+DEL account.report.expression: l10n_pk.l10n_pk_vat_expression_ICP_16_tax
+DEL account.report.expression: l10n_pk.l10n_pk_vat_expression_ICS_16_base
+DEL account.report.expression: l10n_pk.l10n_pk_vat_expression_ICS_16_tax
+DEL account.report.expression: l10n_pk.l10n_pk_vat_expression_KPS_15_base
+DEL account.report.expression: l10n_pk.l10n_pk_vat_expression_KPS_15_tax
+DEL account.report.expression: l10n_pk.l10n_pk_vat_expression_KP_16_base
+DEL account.report.expression: l10n_pk.l10n_pk_vat_expression_KP_16_tax
+DEL account.report.expression: l10n_pk.l10n_pk_vat_expression_NSTP_AJK
+DEL account.report.expression: l10n_pk.l10n_pk_vat_expression_NSTP_BAL
+DEL account.report.expression: l10n_pk.l10n_pk_vat_expression_NSTP_ICT
+DEL account.report.expression: l10n_pk.l10n_pk_vat_expression_NSTP_KP
+DEL account.report.expression: l10n_pk.l10n_pk_vat_expression_NSTP_PUN
+DEL account.report.expression: l10n_pk.l10n_pk_vat_expression_NSTP_SIN
+DEL account.report.expression: l10n_pk.l10n_pk_vat_expression_NST_1
+DEL account.report.expression: l10n_pk.l10n_pk_vat_expression_NST_P1
+DEL account.report.expression: l10n_pk.l10n_pk_vat_expression_NST_S1
+DEL account.report.expression: l10n_pk.l10n_pk_vat_expression_NS_1
+DEL account.report.expression: l10n_pk.l10n_pk_vat_expression_NS_P1
+DEL account.report.expression: l10n_pk.l10n_pk_vat_expression_NS_S1
+DEL account.report.expression: l10n_pk.l10n_pk_vat_expression_PP_16_base
+DEL account.report.expression: l10n_pk.l10n_pk_vat_expression_PP_16_tax
+DEL account.report.expression: l10n_pk.l10n_pk_vat_expression_P_0_base
+DEL account.report.expression: l10n_pk.l10n_pk_vat_expression_P_0_tax
+DEL account.report.expression: l10n_pk.l10n_pk_vat_expression_P_10_base
+DEL account.report.expression: l10n_pk.l10n_pk_vat_expression_P_10_tax
+DEL account.report.expression: l10n_pk.l10n_pk_vat_expression_P_13_base
+DEL account.report.expression: l10n_pk.l10n_pk_vat_expression_P_13_tax
+DEL account.report.expression: l10n_pk.l10n_pk_vat_expression_P_15_base
+DEL account.report.expression: l10n_pk.l10n_pk_vat_expression_P_15_tax
+DEL account.report.expression: l10n_pk.l10n_pk_vat_expression_P_16_base
+DEL account.report.expression: l10n_pk.l10n_pk_vat_expression_P_16_tax
+DEL account.report.expression: l10n_pk.l10n_pk_vat_expression_P_17_base
+DEL account.report.expression: l10n_pk.l10n_pk_vat_expression_P_17_tax
+DEL account.report.expression: l10n_pk.l10n_pk_vat_expression_P_195_base
+DEL account.report.expression: l10n_pk.l10n_pk_vat_expression_P_195_tax
+DEL account.report.expression: l10n_pk.l10n_pk_vat_expression_P_1_base
+DEL account.report.expression: l10n_pk.l10n_pk_vat_expression_P_1_tax
+DEL account.report.expression: l10n_pk.l10n_pk_vat_expression_P_2_base
+DEL account.report.expression: l10n_pk.l10n_pk_vat_expression_P_2_tax
+DEL account.report.expression: l10n_pk.l10n_pk_vat_expression_P_3_base
+DEL account.report.expression: l10n_pk.l10n_pk_vat_expression_P_3_tax
+DEL account.report.expression: l10n_pk.l10n_pk_vat_expression_P_5_base
+DEL account.report.expression: l10n_pk.l10n_pk_vat_expression_P_5_tax
+DEL account.report.expression: l10n_pk.l10n_pk_vat_expression_P_8_base
+DEL account.report.expression: l10n_pk.l10n_pk_vat_expression_P_8_tax
+DEL account.report.expression: l10n_pk.l10n_pk_vat_expression_SIS_13_base
+DEL account.report.expression: l10n_pk.l10n_pk_vat_expression_SIS_13_tax
+DEL account.report.expression: l10n_pk.l10n_pk_vat_expression_SP_0_base
+DEL account.report.expression: l10n_pk.l10n_pk_vat_expression_SP_0_tax
+DEL account.report.expression: l10n_pk.l10n_pk_vat_expression_SP_13_base
+DEL account.report.expression: l10n_pk.l10n_pk_vat_expression_SP_13_tax
+DEL account.report.expression: l10n_pk.l10n_pk_vat_expression_SP_16_base
+DEL account.report.expression: l10n_pk.l10n_pk_vat_expression_SP_16_tax
+DEL account.report.expression: l10n_pk.l10n_pk_vat_expression_SS_17_base
+DEL account.report.expression: l10n_pk.l10n_pk_vat_expression_SS_17_tax
+DEL account.report.expression: l10n_pk.l10n_pk_vat_expression_STP_16_base
+DEL account.report.expression: l10n_pk.l10n_pk_vat_expression_STP_16_tax
+DEL account.report.expression: l10n_pk.l10n_pk_vat_expression_S_0_base
+DEL account.report.expression: l10n_pk.l10n_pk_vat_expression_S_0_tax
+DEL account.report.expression: l10n_pk.l10n_pk_vat_expression_S_10_base
+DEL account.report.expression: l10n_pk.l10n_pk_vat_expression_S_10_tax
+DEL account.report.expression: l10n_pk.l10n_pk_vat_expression_S_13_base
+DEL account.report.expression: l10n_pk.l10n_pk_vat_expression_S_13_tax
+DEL account.report.expression: l10n_pk.l10n_pk_vat_expression_S_15_base
+DEL account.report.expression: l10n_pk.l10n_pk_vat_expression_S_15_tax
+DEL account.report.expression: l10n_pk.l10n_pk_vat_expression_S_16_base
+DEL account.report.expression: l10n_pk.l10n_pk_vat_expression_S_16_tax
+DEL account.report.expression: l10n_pk.l10n_pk_vat_expression_S_17_base
+DEL account.report.expression: l10n_pk.l10n_pk_vat_expression_S_17_tax
+DEL account.report.expression: l10n_pk.l10n_pk_vat_expression_S_195_base
+DEL account.report.expression: l10n_pk.l10n_pk_vat_expression_S_195_tax
+DEL account.report.expression: l10n_pk.l10n_pk_vat_expression_S_1_base
+DEL account.report.expression: l10n_pk.l10n_pk_vat_expression_S_1_tax
+DEL account.report.expression: l10n_pk.l10n_pk_vat_expression_S_2_base
+DEL account.report.expression: l10n_pk.l10n_pk_vat_expression_S_2_tax
+DEL account.report.expression: l10n_pk.l10n_pk_vat_expression_S_3_base
+DEL account.report.expression: l10n_pk.l10n_pk_vat_expression_S_3_tax
+DEL account.report.expression: l10n_pk.l10n_pk_vat_expression_S_5_base
+DEL account.report.expression: l10n_pk.l10n_pk_vat_expression_S_5_tax
+DEL account.report.expression: l10n_pk.l10n_pk_vat_expression_S_8_base
+DEL account.report.expression: l10n_pk.l10n_pk_vat_expression_S_8_tax
+DEL account.report.expression: l10n_pk.l10n_pk_wh_vat_expression_P10_base
+DEL account.report.expression: l10n_pk.l10n_pk_wh_vat_expression_P10_tax
+DEL account.report.expression: l10n_pk.l10n_pk_wh_vat_expression_P11_base
+DEL account.report.expression: l10n_pk.l10n_pk_wh_vat_expression_P11_tax
+DEL account.report.expression: l10n_pk.l10n_pk_wh_vat_expression_P12_base
+DEL account.report.expression: l10n_pk.l10n_pk_wh_vat_expression_P12_tax
+DEL account.report.expression: l10n_pk.l10n_pk_wh_vat_expression_P13_base
+DEL account.report.expression: l10n_pk.l10n_pk_wh_vat_expression_P13_tax
+DEL account.report.expression: l10n_pk.l10n_pk_wh_vat_expression_P1_base
+DEL account.report.expression: l10n_pk.l10n_pk_wh_vat_expression_P1_tax
+DEL account.report.expression: l10n_pk.l10n_pk_wh_vat_expression_P2_base
+DEL account.report.expression: l10n_pk.l10n_pk_wh_vat_expression_P2_tax
+DEL account.report.expression: l10n_pk.l10n_pk_wh_vat_expression_P3_base
+DEL account.report.expression: l10n_pk.l10n_pk_wh_vat_expression_P3_tax
+DEL account.report.expression: l10n_pk.l10n_pk_wh_vat_expression_P4_base
+DEL account.report.expression: l10n_pk.l10n_pk_wh_vat_expression_P4_tax
+DEL account.report.expression: l10n_pk.l10n_pk_wh_vat_expression_P5_base
+DEL account.report.expression: l10n_pk.l10n_pk_wh_vat_expression_P5_tax
+DEL account.report.expression: l10n_pk.l10n_pk_wh_vat_expression_P6_base
+DEL account.report.expression: l10n_pk.l10n_pk_wh_vat_expression_P6_tax
+DEL account.report.expression: l10n_pk.l10n_pk_wh_vat_expression_P7_base
+DEL account.report.expression: l10n_pk.l10n_pk_wh_vat_expression_P7_tax
+DEL account.report.expression: l10n_pk.l10n_pk_wh_vat_expression_P8_base
+DEL account.report.expression: l10n_pk.l10n_pk_wh_vat_expression_P8_tax
+DEL account.report.expression: l10n_pk.l10n_pk_wh_vat_expression_P9_base
+DEL account.report.expression: l10n_pk.l10n_pk_wh_vat_expression_P9_tax
+DEL account.report.expression: l10n_pk.l10n_pk_wh_vat_expression_S10_base
+DEL account.report.expression: l10n_pk.l10n_pk_wh_vat_expression_S10_tax
+DEL account.report.expression: l10n_pk.l10n_pk_wh_vat_expression_S1_base
+DEL account.report.expression: l10n_pk.l10n_pk_wh_vat_expression_S1_tax
+DEL account.report.expression: l10n_pk.l10n_pk_wh_vat_expression_S2_base
+DEL account.report.expression: l10n_pk.l10n_pk_wh_vat_expression_S2_tax
+DEL account.report.expression: l10n_pk.l10n_pk_wh_vat_expression_S3_base
+DEL account.report.expression: l10n_pk.l10n_pk_wh_vat_expression_S3_tax
+DEL account.report.expression: l10n_pk.l10n_pk_wh_vat_expression_S4_base
+DEL account.report.expression: l10n_pk.l10n_pk_wh_vat_expression_S4_tax
+DEL account.report.expression: l10n_pk.l10n_pk_wh_vat_expression_S5_base
+DEL account.report.expression: l10n_pk.l10n_pk_wh_vat_expression_S5_tax
+DEL account.report.expression: l10n_pk.l10n_pk_wh_vat_expression_S6_base
+DEL account.report.expression: l10n_pk.l10n_pk_wh_vat_expression_S6_tax
+DEL account.report.expression: l10n_pk.l10n_pk_wh_vat_expression_S7_base
+DEL account.report.expression: l10n_pk.l10n_pk_wh_vat_expression_S7_tax
+DEL account.report.expression: l10n_pk.l10n_pk_wh_vat_expression_S8_base
+DEL account.report.expression: l10n_pk.l10n_pk_wh_vat_expression_S8_tax
+DEL account.report.expression: l10n_pk.l10n_pk_wh_vat_expression_S9_base
+DEL account.report.expression: l10n_pk.l10n_pk_wh_vat_expression_S9_tax
+DEL account.report.line: l10n_pk.l10n_pk_vat_line_AJP_16
+DEL account.report.line: l10n_pk.l10n_pk_vat_line_AJS_16
+DEL account.report.line: l10n_pk.l10n_pk_vat_line_BAS_15
+DEL account.report.line: l10n_pk.l10n_pk_vat_line_ICP_16
+DEL account.report.line: l10n_pk.l10n_pk_vat_line_ICS_16
+DEL account.report.line: l10n_pk.l10n_pk_vat_line_KPS_15
+DEL account.report.line: l10n_pk.l10n_pk_vat_line_KP_16
+DEL account.report.line: l10n_pk.l10n_pk_vat_line_NSTP_AJK
+DEL account.report.line: l10n_pk.l10n_pk_vat_line_NSTP_BAL
+DEL account.report.line: l10n_pk.l10n_pk_vat_line_NSTP_ICT
+DEL account.report.line: l10n_pk.l10n_pk_vat_line_NSTP_KP
+DEL account.report.line: l10n_pk.l10n_pk_vat_line_NSTP_PUN
+DEL account.report.line: l10n_pk.l10n_pk_vat_line_NSTP_SIN
+DEL account.report.line: l10n_pk.l10n_pk_vat_line_NST_P
+DEL account.report.line: l10n_pk.l10n_pk_vat_line_NST_S
+DEL account.report.line: l10n_pk.l10n_pk_vat_line_NS_P
+DEL account.report.line: l10n_pk.l10n_pk_vat_line_NS_S
+DEL account.report.line: l10n_pk.l10n_pk_vat_line_PP_16
+DEL account.report.line: l10n_pk.l10n_pk_vat_line_P_0
+DEL account.report.line: l10n_pk.l10n_pk_vat_line_P_1
+DEL account.report.line: l10n_pk.l10n_pk_vat_line_P_10
+DEL account.report.line: l10n_pk.l10n_pk_vat_line_P_13
+DEL account.report.line: l10n_pk.l10n_pk_vat_line_P_15
+DEL account.report.line: l10n_pk.l10n_pk_vat_line_P_16
+DEL account.report.line: l10n_pk.l10n_pk_vat_line_P_17
+DEL account.report.line: l10n_pk.l10n_pk_vat_line_P_195
+DEL account.report.line: l10n_pk.l10n_pk_vat_line_P_2
+DEL account.report.line: l10n_pk.l10n_pk_vat_line_P_3
+DEL account.report.line: l10n_pk.l10n_pk_vat_line_P_5
+DEL account.report.line: l10n_pk.l10n_pk_vat_line_P_8
+DEL account.report.line: l10n_pk.l10n_pk_vat_line_SIS_13
+DEL account.report.line: l10n_pk.l10n_pk_vat_line_SP_13
+DEL account.report.line: l10n_pk.l10n_pk_vat_line_SP_16
+DEL account.report.line: l10n_pk.l10n_pk_vat_line_SP_17
+DEL account.report.line: l10n_pk.l10n_pk_vat_line_SS_17
+DEL account.report.line: l10n_pk.l10n_pk_vat_line_STP_16
+DEL account.report.line: l10n_pk.l10n_pk_vat_line_S_0
+DEL account.report.line: l10n_pk.l10n_pk_vat_line_S_1
+DEL account.report.line: l10n_pk.l10n_pk_vat_line_S_10
+DEL account.report.line: l10n_pk.l10n_pk_vat_line_S_13
+DEL account.report.line: l10n_pk.l10n_pk_vat_line_S_15
+DEL account.report.line: l10n_pk.l10n_pk_vat_line_S_16
+DEL account.report.line: l10n_pk.l10n_pk_vat_line_S_17
+DEL account.report.line: l10n_pk.l10n_pk_vat_line_S_195
+DEL account.report.line: l10n_pk.l10n_pk_vat_line_S_2
+DEL account.report.line: l10n_pk.l10n_pk_vat_line_S_3
+DEL account.report.line: l10n_pk.l10n_pk_vat_line_S_5
+DEL account.report.line: l10n_pk.l10n_pk_vat_line_S_8
+DEL account.report.line: l10n_pk.l10n_pk_vat_title_NSTP_vat
+DEL account.report.line: l10n_pk.l10n_pk_vat_title_NST_vat
+DEL account.report.line: l10n_pk.l10n_pk_vat_title_NS_vat
+DEL account.report.line: l10n_pk.l10n_pk_vat_title_purchases_vat
+DEL account.report.line: l10n_pk.l10n_pk_vat_title_sales_vat
+DEL account.report.line: l10n_pk.l10n_pk_wh_vat_line_P1
+DEL account.report.line: l10n_pk.l10n_pk_wh_vat_line_P10
+DEL account.report.line: l10n_pk.l10n_pk_wh_vat_line_P11
+DEL account.report.line: l10n_pk.l10n_pk_wh_vat_line_P12
+DEL account.report.line: l10n_pk.l10n_pk_wh_vat_line_P13
+DEL account.report.line: l10n_pk.l10n_pk_wh_vat_line_P2
+DEL account.report.line: l10n_pk.l10n_pk_wh_vat_line_P3
+DEL account.report.line: l10n_pk.l10n_pk_wh_vat_line_P4
+DEL account.report.line: l10n_pk.l10n_pk_wh_vat_line_P5
+DEL account.report.line: l10n_pk.l10n_pk_wh_vat_line_P6
+DEL account.report.line: l10n_pk.l10n_pk_wh_vat_line_P7
+DEL account.report.line: l10n_pk.l10n_pk_wh_vat_line_P8
+DEL account.report.line: l10n_pk.l10n_pk_wh_vat_line_P9
+DEL account.report.line: l10n_pk.l10n_pk_wh_vat_line_S1
+DEL account.report.line: l10n_pk.l10n_pk_wh_vat_line_S10
+DEL account.report.line: l10n_pk.l10n_pk_wh_vat_line_S2
+DEL account.report.line: l10n_pk.l10n_pk_wh_vat_line_S3
+DEL account.report.line: l10n_pk.l10n_pk_wh_vat_line_S4
+DEL account.report.line: l10n_pk.l10n_pk_wh_vat_line_S5
+DEL account.report.line: l10n_pk.l10n_pk_wh_vat_line_S6
+DEL account.report.line: l10n_pk.l10n_pk_wh_vat_line_S7
+DEL account.report.line: l10n_pk.l10n_pk_wh_vat_line_S8
+DEL account.report.line: l10n_pk.l10n_pk_wh_vat_line_S9
+DEL account.report.line: l10n_pk.l10n_pk_wh_vat_title_purchases_vat
+DEL account.report.line: l10n_pk.l10n_pk_wh_vat_title_sales_vat
+# NOTHING TO DO: the record is not noupdate, so the module update removes it
+NEW ir.config_parameter: l10n_pk.l10n_pk_iap_endpoint
+NEW ir.ui.view: l10n_pk.view_tax_form_inherit_l10n_pk
+# NOTHING TO DO: the record is not noupdate, so the module update creates it
diff --git a/openupgrade_scripts/scripts/l10n_th/20.0.2.0/pre-migration.py b/openupgrade_scripts/scripts/l10n_th/20.0.2.0/pre-migration.py
new file mode 100644
index 00000000000..27dc3f571c9
--- /dev/null
+++ b/openupgrade_scripts/scripts/l10n_th/20.0.2.0/pre-migration.py
@@ -0,0 +1,40 @@
+# Copyright 2026 Don Kendall
+# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl).
+
+from openupgradelib import openupgrade
+
+# 20.0 ships these withholding tax tags as records with external ids. In 19.0
+# they were created implicitly by the tax template csv, which names tags but
+# does not give them ids, so the rows exist with no ir_model_data entry and the
+# new records collide on account_account_tag_name_uniq.
+_TAGS = [
+ ("tag_th_pnd3", "PND3"),
+ ("tag_th_income_pnd3", "Income PND3"),
+ ("tag_th_pnd53", "PND53"),
+ ("tag_th_income_pnd53", "Income PND53"),
+]
+
+
+@openupgrade.migrate()
+def migrate(env, version):
+ for xmlid, name in _TAGS:
+ env.cr.execute(
+ """
+ SELECT tag.id
+ FROM account_account_tag tag
+ JOIN res_country country ON country.id = tag.country_id
+ WHERE tag.name ->> 'en_US' = %s
+ AND tag.applicability = 'taxes'
+ AND country.code = 'TH'
+ AND NOT EXISTS (
+ SELECT 1 FROM ir_model_data imd
+ WHERE imd.model = 'account.account.tag' AND imd.res_id = tag.id
+ )
+ """,
+ (name,),
+ )
+ row = env.cr.fetchone()
+ if row:
+ openupgrade.add_xmlid(
+ env.cr, "l10n_th", xmlid, "account.account.tag", row[0], noupdate=True
+ )
diff --git a/openupgrade_scripts/scripts/l10n_th/20.0.2.0/upgrade_analysis.txt b/openupgrade_scripts/scripts/l10n_th/20.0.2.0/upgrade_analysis.txt
new file mode 100644
index 00000000000..b0c204b3b7e
--- /dev/null
+++ b/openupgrade_scripts/scripts/l10n_th/20.0.2.0/upgrade_analysis.txt
@@ -0,0 +1,79 @@
+---Models in module 'l10n_th'---
+new model l10n_th.tax.invoice
+new model report.l10n_th.report_50_tawi [abstract]
+---Fields in module 'l10n_th'---
+l10n_th / account.move / l10n_th_tax_invoice_ids (one2many): NEW relation: l10n_th.tax.invoice
+l10n_th / account.payment / l10n_th_wth_condition (selection): NEW selection_keys: ['at_source', 'forever', 'one_time'], hasdefault: compute
+l10n_th / account.tax / l10n_th_income_tax_type (selection): NEW selection_keys: ['advertising', 'commission', 'contract', 'dividend', 'hire_of_work', 'insurance', 'interest', 'na', 'others', 'prize', 'prof_fees', 'public_actor', 'rentals', 'royalties', 'service', 'transportation']
+l10n_th / account.tax / l10n_th_income_tax_type_others (char): NEW
+l10n_th / l10n_th.tax.invoice / amount_residual (float) : NEW
+l10n_th / l10n_th.tax.invoice / company_id (many2one) : NEW relation: res.company, isrelated: related, stored
+l10n_th / l10n_th.tax.invoice / date (date) : NEW
+l10n_th / l10n_th.tax.invoice / invoice_move_id (many2one) : NEW relation: account.move, required
+l10n_th / l10n_th.tax.invoice / is_partially_paid (boolean) : NEW
+l10n_th / l10n_th.tax.invoice / payment_move_id (many2one) : NEW relation: account.move
+l10n_th / l10n_th.tax.invoice / reference (char) : NEW
+l10n_th / l10n_th.tax.invoice / state (selection) : NEW required, selection_keys: ['cancel', 'draft', 'posted']
+l10n_th / l10n_th.tax.invoice / tax_group_amounts (json) : NEW
+l10n_th / l10n_th.tax.invoice / tax_invoice_lines (json) : NEW
+l10n_th / l10n_th.tax.invoice / tax_invoice_number (char) : NEW
+l10n_th / l10n_th.tax.invoice / total_amount (float) : NEW
+l10n_th / l10n_th.tax.invoice / total_on_payment_amount (float): NEW
+l10n_th / l10n_th.tax.invoice / vat_amount (float) : NEW
+l10n_th / res.company / l10n_th_is_vat_registered (boolean): NEW
+l10n_th / res.partner / l10n_th_company_type (selection): NEW selection_keys: ['asso', 'company_ltd', 'foundation', 'joint_venture', 'ltd_partner', 'others', 'pub_company_ltd']
+l10n_th / res.partner / l10n_th_title (selection) : NEW selection_keys: ['khun', 'mr', 'mrs', 'ms']
+l10n_th / res.partner.bank / proxy_type (False) : selection_keys removed: [uen]
+---XML records in module 'l10n_th'---
+NEW account.account.tag: l10n_th.tag_th_income_pnd3
+NEW account.account.tag: l10n_th.tag_th_income_pnd53
+NEW account.account.tag: l10n_th.tag_th_pnd3
+NEW account.account.tag: l10n_th.tag_th_pnd53
+DEL account.report: l10n_th.tax_report_pnd3
+DEL account.report: l10n_th.tax_report_pnd53
+DEL account.report.column: l10n_th.tax_report_pnd3_balance
+DEL account.report.column: l10n_th.tax_report_pnd53_balance
+NEW account.report.expression: l10n_th.tax_report_out_tax_sale_tag_neg
+NEW account.report.expression: l10n_th.tax_report_out_tax_sale_tag_pos
+DEL account.report.expression: l10n_th.tax_report_surcharge_pnd3
+DEL account.report.expression: l10n_th.tax_report_surcharge_pnd53
+DEL account.report.expression: l10n_th.tax_report_total_income_pnd3
+DEL account.report.expression: l10n_th.tax_report_total_income_pnd53
+DEL account.report.expression: l10n_th.tax_report_total_pnd3
+DEL account.report.expression: l10n_th.tax_report_total_pnd53
+DEL account.report.expression: l10n_th.tax_report_total_remittance_pnd3
+DEL account.report.expression: l10n_th.tax_report_total_remittance_pnd53
+DEL account.report.line: l10n_th.tax_report_surcharge_pnd3_line
+DEL account.report.line: l10n_th.tax_report_surcharge_pnd53_line
+DEL account.report.line: l10n_th.tax_report_total_income_pnd3_line
+DEL account.report.line: l10n_th.tax_report_total_income_pnd53_line
+DEL account.report.line: l10n_th.tax_report_total_pnd3_line
+DEL account.report.line: l10n_th.tax_report_total_pnd53_line
+DEL account.report.line: l10n_th.tax_report_total_remittance_pnd3_line
+DEL account.report.line: l10n_th.tax_report_total_remittance_pnd53_line
+NEW ir.access: l10n_th.access_l10n_th_tax_invoice
+NEW ir.access: l10n_th.access_l10n_th_tax_invoice_readonly
+NEW ir.access: l10n_th.l10n_th_tax_invoice_comp_rule
+NEW ir.actions.report: l10n_th.action_report_50_tawi
+NEW ir.actions.report: l10n_th.action_report_tax_invoice
+DEL ir.actions.report: l10n_th.action_report_commercial_invoice [renamed to l10n_ph module]
+NEW ir.actions.server: l10n_th.action_download_50_tawi_zip
+NEW ir.ui.view: l10n_th.company_address_list
+NEW ir.ui.view: l10n_th.report_50_tawi
+NEW ir.ui.view: l10n_th.report_50_tawi_document
+NEW ir.ui.view: l10n_th.report_tax_invoice
+NEW ir.ui.view: l10n_th.report_tax_invoice_document
+NEW ir.ui.view: l10n_th.res_company_form_inherit_l10n_th
+NEW ir.ui.view: l10n_th.res_config_settings_view_form
+NEW ir.ui.view: l10n_th.tawi_square
+NEW ir.ui.view: l10n_th.tax_invoice_document_tax_totals
+NEW ir.ui.view: l10n_th.th_partner_address_form
+NEW ir.ui.view: l10n_th.tickbox_with_desc
+NEW ir.ui.view: l10n_th.view_account_payment_form_inherit_l10n_th
+NEW ir.ui.view: l10n_th.view_account_payment_register_form_inherit_l10n_th
+NEW ir.ui.view: l10n_th.view_move_form_th_inherit
+NEW ir.ui.view: l10n_th.view_partner_form_inherit_l10n_th
+NEW ir.ui.view: l10n_th.view_tax_form_inherit_l10n_th
+NEW ir.ui.view: l10n_th.view_tax_tree_inherit_l10n_th
+DEL ir.ui.view: l10n_th.report_commercial_invoice
+NEW report.paperformat: l10n_th.paperformat_tawi
diff --git a/openupgrade_scripts/scripts/mail/20.0.1.19/noupdate_changes.xml b/openupgrade_scripts/scripts/mail/20.0.1.19/noupdate_changes.xml
new file mode 100644
index 00000000000..c33e1b7e117
--- /dev/null
+++ b/openupgrade_scripts/scripts/mail/20.0.1.19/noupdate_changes.xml
@@ -0,0 +1,49 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ phone
+
+
+ mail
+
+
+ calendar_today
+
+
+ check
+
+
+ upload
+
+
+ warning
+
+
+
+
+
+
+
+
+
+
+ Notes
+
+
+
diff --git a/openupgrade_scripts/scripts/mail/20.0.1.19/post-migration.py b/openupgrade_scripts/scripts/mail/20.0.1.19/post-migration.py
new file mode 100644
index 00000000000..f2053947539
--- /dev/null
+++ b/openupgrade_scripts/scripts/mail/20.0.1.19/post-migration.py
@@ -0,0 +1,15 @@
+# Copyright 2026 Don Kendall
+# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl).
+
+from openupgradelib import openupgrade
+
+
+@openupgrade.migrate()
+def migrate(env, version):
+ openupgrade.load_data(env, "mail", "20.0.1.19/noupdate_changes.xml")
+ openupgrade.delete_record_translations(
+ env.cr,
+ "mail",
+ ["mt_comment", "mt_note"],
+ ["name"],
+ )
diff --git a/openupgrade_scripts/scripts/mail/20.0.1.19/pre-migration.py b/openupgrade_scripts/scripts/mail/20.0.1.19/pre-migration.py
new file mode 100644
index 00000000000..abfceda2c7c
--- /dev/null
+++ b/openupgrade_scripts/scripts/mail/20.0.1.19/pre-migration.py
@@ -0,0 +1,45 @@
+# Copyright 2026 Don Kendall
+# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl).
+
+from openupgradelib import openupgrade
+
+
+def _claim_admin_channel_membership(env):
+ """Give the administrator's membership of the admin channel its new xml_id.
+
+ 20.0 ships discuss.channel.member records for memberships that 19.0 created
+ implicitly through autosubscribe, so the data load tries to insert a row
+ that is already there and trips discuss_channel_member_partner_unique.
+ Claiming the existing row turns that insert into an update.
+ """
+ env.cr.execute(
+ """
+ SELECT m.id
+ FROM discuss_channel_member m
+ JOIN ir_model_data channel
+ ON channel.model = 'discuss.channel'
+ AND channel.module = 'mail'
+ AND channel.name = 'channel_admin'
+ AND channel.res_id = m.channel_id
+ JOIN ir_model_data partner
+ ON partner.model = 'res.partner'
+ AND partner.module = 'base'
+ AND partner.name = 'partner_admin'
+ AND partner.res_id = m.partner_id
+ """
+ )
+ row = env.cr.fetchone()
+ if row:
+ openupgrade.add_xmlid(
+ env.cr,
+ "mail",
+ "channel_member_channel_admin_partner_admin",
+ "discuss.channel.member",
+ row[0],
+ noupdate=True,
+ )
+
+
+@openupgrade.migrate()
+def migrate(env, version):
+ _claim_admin_channel_membership(env)
diff --git a/openupgrade_scripts/scripts/mail/20.0.1.19/upgrade_analysis.txt b/openupgrade_scripts/scripts/mail/20.0.1.19/upgrade_analysis.txt
new file mode 100644
index 00000000000..aa1589207c5
--- /dev/null
+++ b/openupgrade_scripts/scripts/mail/20.0.1.19/upgrade_analysis.txt
@@ -0,0 +1,471 @@
+---Models in module 'mail'---
+obsolete model mail.thread.cc [abstract]
+obsolete model mail.tracking.value
+new model bus.sync.mixin [abstract]
+new model discuss.category
+new model discuss.channel.last.interest.update
+new model mail.call.artifact
+new model mail.poll
+new model mail.poll.option
+new model mail.poll.vote
+new model mail.thread.subject.suggested [abstract]
+new model mail.track.mixin [abstract]
+---Fields in module 'mail'---
+mail / discuss.call.history / artifact_ids (one2many) : NEW relation: mail.call.artifact
+mail / discuss.category / channel_ids (one2many) : NEW relation: discuss.channel
+mail / discuss.category / name (char) : NEW required
+mail / discuss.category / sequence (integer) : NEW hasdefault: default
+mail / discuss.channel / discuss_category_id (many2one): NEW relation: discuss.category
+mail / discuss.channel / is_readonly (boolean) : NEW
+mail / discuss.channel / member_indices (char) : NEW isfunction: function, stored
+mail / discuss.channel / pinned_message_ids (one2many) : DEL relation: mail.message
+mail / discuss.channel.last.interest.update / channel_id (many2one) : NEW relation: discuss.channel, required
+mail / discuss.channel.last.interest.update / last_interest_dt (datetime) : NEW required
+mail / discuss.channel.member / channel_role (selection) : NEW selection_keys: ['admin', 'owner']
+mail / discuss.channel.member / custom_channel_name (char) : DEL
+mail / discuss.channel.member / fetched_message_id (many2one) : DEL relation: mail.message
+mail / discuss.channel.member / invitation_sent_dt (datetime) : NEW
+mail / discuss.channel.member / is_favorite (boolean) : NEW
+mail / ir.access / message_follower_ids (one2many): NEW relation: mail.followers
+mail / ir.access / message_ids (one2many) : NEW relation: mail.message
+mail / ir.actions.server / activity_plan_id (many2one) : NEW relation: mail.activity.plan, hasdefault: compute
+mail / ir.actions.server / activity_role_id (many2one) : NEW relation: res.role, hasdefault: compute
+mail / ir.actions.server / activity_type_id (many2one) : not related anymore
+mail / ir.actions.server / activity_user_type (selection): selection_keys added: [role] (most likely nothing to do)
+mail / ir.actions.server / log_note_note (html) : NEW hasdefault: compute, translate
+mail / ir.actions.server / mail_post_method (selection) : DEL selection_keys: ['comment', 'email', 'note']
+mail / ir.actions.server / state (False) : selection_keys added: [log_note] (most likely nothing to do)
+mail / ir.actions.server / subtype_ids (many2many) : NEW relation: mail.message.subtype, hasdefault: default
+mail / ir.ui.view / technical_usage (False) : NEW selection_keys: ['mail_post_source'], mode: modify
+mail / ir.ui.view / type (False) : selection_keys added: [card] (most likely nothing to do)
+mail / mail.activity / activity_plan_id (many2one) : NEW relation: mail.activity.plan
+mail / mail.activity / activity_template_id (many2one): NEW relation: mail.activity.plan.template
+mail / mail.activity / phone (char) : NEW hasdefault: compute
+mail / mail.activity / previous_activity_type_id (many2one): DEL relation: mail.activity.type
+mail / mail.activity / recommended_activity_type_id (many2one): DEL relation: mail.activity.type
+mail / mail.activity / role_id (many2one) : NEW relation: res.role, hasdefault: compute
+mail / mail.activity / technical_usage (selection) : NEW selection_keys: ['none']
+mail / mail.activity.plan.template / next_activity_ids (many2many) : DEL relation: mail.activity.type
+mail / mail.activity.plan.template / responsible_type (selection) : selection_keys added: [role] (most likely nothing to do)
+mail / mail.activity.plan.template / role_id (many2one) : NEW relation: res.role, hasdefault: compute
+mail / mail.activity.type / chaining_type (selection) : DEL required, selection_keys: ['suggest', 'trigger']
+mail / mail.activity.type / default_role_id (many2one) : NEW relation: res.role
+mail / mail.activity.type / kpi_provider_visibility (selection): NEW selection_keys: ['all', 'none', 'own'], hasdefault: default
+mail / mail.activity.type / suggested_next_type_id (many2one): NEW relation: mail.activity.type
+mail / mail.activity.type / suggested_next_type_ids (many2many): DEL relation: mail.activity.type
+mail / mail.activity.type / triggered_next_type_id (many2one): DEL relation: mail.activity.type
+mail / mail.call.artifact / discuss_call_history_id (many2one): NEW relation: discuss.call.history
+mail / mail.call.artifact / end_ms (integer) : NEW required, hasdefault: default
+mail / mail.call.artifact / recording_started_by_id (many2one): NEW relation: res.users
+mail / mail.call.artifact / recording_upload_pending (boolean): NEW
+mail / mail.call.artifact / start_ms (integer) : NEW required, hasdefault: default
+mail / mail.guest / im_status (char) : selection_keys is now '['away', 'offline', 'online']' ('False')
+mail / mail.guest / im_status (char) : type is now 'selection' ('char')
+mail / mail.mail / recipient_cc_ids (many2many) : NEW relation: res.partner
+mail / mail.message / bookmarked_partner_ids (many2many): NEW relation: res.partner
+mail / mail.message / ended_poll_ids (one2many) : NEW relation: mail.poll
+mail / mail.message / message_type (selection) : selection_keys added: [tracking] (most likely nothing to do)
+mail / mail.message / partner_cc_ids (many2many) : NEW relation: res.partner
+mail / mail.message / starred_partner_ids (many2many): DEL relation: res.partner
+mail / mail.message / started_poll_ids (one2many) : NEW relation: mail.poll
+mail / mail.message / tracking_value_ids (one2many) : DEL relation: mail.tracking.value
+mail / mail.poll / allow_multiple_options (boolean): NEW
+mail / mail.poll / end_message_id (many2one) : NEW relation: mail.message
+mail / mail.poll / option_ids (one2many) : NEW relation: mail.poll.option, required
+mail / mail.poll / poll_end_dt (datetime) : NEW
+mail / mail.poll / poll_question (char) : NEW required
+mail / mail.poll / start_message_id (many2one) : NEW relation: mail.message, required
+mail / mail.poll.option / option_emoji (char) : NEW
+mail / mail.poll.option / option_label (char) : NEW required
+mail / mail.poll.option / poll_id (many2one) : NEW relation: mail.poll, required
+mail / mail.poll.option / vote_ids (one2many) : NEW relation: mail.poll.vote
+mail / mail.poll.vote / guest_id (many2one) : NEW relation: mail.guest
+mail / mail.poll.vote / option_id (many2one) : NEW relation: mail.poll.option, required
+mail / mail.poll.vote / user_id (many2one) : NEW relation: res.users
+mail / mail.scheduled.message / partner_cc_ids (many2many) : NEW relation: res.partner
+mail / mail.template / email_layout_force_footer (boolean): NEW hasdefault: default
+mail / mail.template / email_layout_force_header (boolean): NEW hasdefault: default
+mail / mail.template / partner_cc (char) : NEW
+mail / mail.tracking.value / currency_id (many2one) : DEL relation: res.currency
+mail / mail.tracking.value / field_id (many2one) : DEL relation: ir.model.fields
+mail / mail.tracking.value / field_info (json) : DEL
+mail / mail.tracking.value / mail_message_id (many2one) : DEL relation: mail.message, required
+mail / mail.tracking.value / new_value_char (char) : DEL
+mail / mail.tracking.value / new_value_datetime (datetime) : DEL
+mail / mail.tracking.value / new_value_float (float) : DEL
+mail / mail.tracking.value / new_value_integer (integer) : DEL
+mail / mail.tracking.value / new_value_text (text) : DEL
+mail / mail.tracking.value / old_value_char (char) : DEL
+mail / mail.tracking.value / old_value_datetime (datetime) : DEL
+mail / mail.tracking.value / old_value_float (float) : DEL
+mail / mail.tracking.value / old_value_integer (integer) : DEL
+mail / mail.tracking.value / old_value_text (text) : DEL
+mail / res.partner / contact_address_inline (char) : module is now 'base' ('mail')
+mail / res.role / active (boolean) : NEW hasdefault: default
+mail / res.users / activity_date_deadline (date) : not related anymore
+mail / res.users / activity_date_deadline (date) : now a function
+mail / res.users / activity_exception_decoration (selection): not related anymore
+mail / res.users / activity_exception_decoration (selection): now a function
+mail / res.users / activity_exception_decoration (selection): selection_keys is now '['danger', 'warning']' ('function')
+mail / res.users / activity_exception_icon (char): not related anymore
+mail / res.users / activity_exception_icon (char): now a function
+mail / res.users / activity_ids (one2many) : is now stored
+mail / res.users / activity_ids (one2many) : not related anymore
+mail / res.users / activity_state (selection) : not related anymore
+mail / res.users / activity_state (selection) : now a function
+mail / res.users / activity_state (selection) : selection_keys is now '['overdue', 'planned', 'today']' ('function')
+mail / res.users / activity_user_id (many2one) : not related anymore
+mail / res.users / activity_user_id (many2one) : now a function
+mail / res.users / contact_address_inline (char) : module is now 'base' ('mail')
+mail / res.users / has_message (boolean) : not related anymore
+mail / res.users / has_message (boolean) : now a function
+mail / res.users / im_status (char) : selection_keys is now '['away', 'busy', 'offline', 'online']' ('False')
+mail / res.users / im_status (char) : type is now 'selection' ('char')
+mail / res.users / message_attachment_count (integer): not related anymore
+mail / res.users / message_attachment_count (integer): now a function
+mail / res.users / message_follower_ids (one2many): is now stored
+mail / res.users / message_follower_ids (one2many): not related anymore
+mail / res.users / message_has_error (boolean) : not related anymore
+mail / res.users / message_has_error (boolean) : now a function
+mail / res.users / message_has_error_counter (integer): not related anymore
+mail / res.users / message_has_error_counter (integer): now a function
+mail / res.users / message_ids (one2many) : is now stored
+mail / res.users / message_ids (one2many) : not related anymore
+mail / res.users / message_is_follower (boolean) : not related anymore
+mail / res.users / message_is_follower (boolean) : now a function
+mail / res.users / message_needaction (boolean) : not related anymore
+mail / res.users / message_needaction (boolean) : now a function
+mail / res.users / message_needaction_counter (integer): not related anymore
+mail / res.users / message_needaction_counter (integer): now a function
+mail / res.users / message_partner_ids (many2many): not related anymore
+mail / res.users / message_partner_ids (many2many): now a function
+mail / res.users / my_activity_date_deadline (date): not related anymore
+mail / res.users / my_activity_date_deadline (date): now a function
+mail / res.users / offline_since (datetime) : not related anymore
+mail / res.users / offline_since (datetime) : now a function
+mail / res.users.settings / is_discuss_sidebar_category_channel_open (boolean): DEL
+mail / res.users.settings / is_discuss_sidebar_category_chat_open (boolean): DEL
+mail / res.users.settings / push_to_talk_key (char) : DEL
+mail / res.users.settings / use_push_to_talk (boolean) : DEL
+mail / res.users.settings / voice_active_duration (integer): DEL
+---XML records in module 'mail'---
+discuss.channel: mail.channel_admin (noupdate switched)
+discuss.channel: mail.channel_all_employees (noupdate switched)
+NEW discuss.channel.member: mail.channel_member_channel_admin_partner_admin
+discuss.channel.member: mail.channel_member_general_channel_for_admin (noupdate switched)
+NEW ir.access: mail.access_discuss_category_erp_manager
+NEW ir.access: mail.access_discuss_category_user
+NEW ir.access: mail.access_discuss_channel_last_interest_update_system
+NEW ir.access: mail.access_discuss_channel_rtc_session_system
+NEW ir.access: mail.access_discuss_voice_metadata_user
+NEW ir.access: mail.access_fetchmail_server
+NEW ir.access: mail.access_mail_activity_plan_template_user
+NEW ir.access: mail.access_mail_activity_plan_user
+NEW ir.access: mail.access_mail_activity_schedule_line_user
+NEW ir.access: mail.access_mail_activity_schedule_user
+NEW ir.access: mail.access_mail_activity_type_system
+NEW ir.access: mail.access_mail_activity_type_user
+NEW ir.access: mail.access_mail_alias_domain_system
+NEW ir.access: mail.access_mail_alias_domain_user
+NEW ir.access: mail.access_mail_alias_system
+NEW ir.access: mail.access_mail_alias_user
+NEW ir.access: mail.access_mail_blacklist_remove_system
+NEW ir.access: mail.access_mail_blacklist_system
+NEW ir.access: mail.access_mail_call_artifact_admin
+NEW ir.access: mail.access_mail_call_artifact_user
+NEW ir.access: mail.access_mail_canned_reponse
+NEW ir.access: mail.access_mail_compose_message
+NEW ir.access: mail.access_mail_followers_edit
+NEW ir.access: mail.access_mail_followers_system
+NEW ir.access: mail.access_mail_followers_user
+NEW ir.access: mail.access_mail_gateway_allowed_system
+NEW ir.access: mail.access_mail_guest_system
+NEW ir.access: mail.access_mail_guest_user
+NEW ir.access: mail.access_mail_ice_server_system
+NEW ir.access: mail.access_mail_link_preview_admin
+NEW ir.access: mail.access_mail_mail_system
+NEW ir.access: mail.access_mail_message_link_preview_erp_manager
+NEW ir.access: mail.access_mail_message_reaction_system
+NEW ir.access: mail.access_mail_message_scheduled_system
+NEW ir.access: mail.access_mail_message_subtype_system
+NEW ir.access: mail.access_mail_message_subtype_user
+NEW ir.access: mail.access_mail_message_translation_system
+NEW ir.access: mail.access_mail_notification_system
+NEW ir.access: mail.access_mail_notification_user
+NEW ir.access: mail.access_mail_poll_erp_manager
+NEW ir.access: mail.access_mail_poll_option_erp_manager
+NEW ir.access: mail.access_mail_poll_vote_erp_manager
+NEW ir.access: mail.access_mail_presence
+NEW ir.access: mail.access_mail_push_device_system
+NEW ir.access: mail.access_mail_push_system
+NEW ir.access: mail.access_mail_template
+NEW ir.access: mail.access_mail_template_editor
+NEW ir.access: mail.access_mail_template_preview
+NEW ir.access: mail.access_mail_template_reset
+NEW ir.access: mail.access_publisher_warranty_contract_all
+NEW ir.access: mail.access_res_role_admin
+NEW ir.access: mail.access_res_role_user
+NEW ir.access: mail.discuss_gif_favorite_admin_rule
+NEW ir.access: mail.discuss_gif_favorite_user_rule
+NEW ir.access: mail.ir_actions_report_access_user
+NEW ir.access: mail.ir_rule_discuss_call_history_read_all
+NEW ir.access: mail.ir_rule_discuss_channel_all
+NEW ir.access: mail.ir_rule_discuss_channel_all_user_write
+NEW ir.access: mail.ir_rule_discuss_channel_group_system
+NEW ir.access: mail.ir_rule_discuss_channel_member_create_is_group_matching_all
+NEW ir.access: mail.ir_rule_discuss_channel_member_create_is_group_matching_group_user
+NEW ir.access: mail.ir_rule_discuss_channel_member_create_is_member_group_user
+NEW ir.access: mail.ir_rule_discuss_channel_member_group_system
+NEW ir.access: mail.ir_rule_discuss_channel_member_is_channel_admin_unlink
+NEW ir.access: mail.ir_rule_discuss_channel_member_is_channel_owner_unlink
+NEW ir.access: mail.ir_rule_discuss_channel_member_is_self_all
+NEW ir.access: mail.ir_rule_discuss_channel_member_is_self_unlink
+NEW ir.access: mail.ir_rule_discuss_channel_member_read_all
+NEW ir.access: mail.ir_rule_mail_canned_response_admin
+NEW ir.access: mail.ir_rule_mail_canned_response_user_read
+NEW ir.access: mail.ir_rule_mail_canned_response_user_update
+NEW ir.access: mail.ir_rule_mail_notifications_group_portal
+NEW ir.access: mail.ir_rule_mail_notifications_group_user
+NEW ir.access: mail.ir_rule_mail_scheduled_message
+NEW ir.access: mail.ir_rule_mail_scheduled_message_user
+NEW ir.access: mail.mail_activity_plan_rule_admin
+NEW ir.access: mail.mail_activity_plan_template_rule_admin
+NEW ir.access: mail.mail_activity_rule_access_create
+NEW ir.access: mail.mail_activity_rule_access_read
+NEW ir.access: mail.mail_activity_rule_access_unlink
+NEW ir.access: mail.mail_activity_rule_access_write
+NEW ir.access: mail.mail_activity_rule_user
+NEW ir.access: mail.mail_compose_message_rule
+NEW ir.access: mail.mail_message_rule_access_create
+NEW ir.access: mail.mail_message_rule_access_create_1
+NEW ir.access: mail.mail_message_rule_access_read
+NEW ir.access: mail.mail_message_rule_access_unlink
+NEW ir.access: mail.mail_message_rule_access_unlink_1
+NEW ir.access: mail.mail_message_rule_access_write
+NEW ir.access: mail.mail_message_rule_access_write_1
+NEW ir.access: mail.mail_message_subtype_rule_public
+NEW ir.access: mail.mail_template_editor_rule
+NEW ir.access: mail.mail_template_employee_rule
+NEW ir.access: mail.res_users_settings_volumes_rule_admin
+NEW ir.access: mail.res_users_settings_volumes_rule_user
+NEW ir.actions.act_url: mail.action_open_discuss_settings
+ir.actions.act_window: base.ir_cron_act (deleted domain)
+ir.actions.act_window: mail.act_server_history (deleted domain)
+NEW ir.actions.act_window: mail.discuss_category_settings_action
+ir.actions.act_window: mail.discuss_channel_action (deleted domain)
+NEW ir.actions.act_window: mail.discuss_my_conversations_action
+NEW ir.actions.act_window: mail.ir_ui_view_action_usage_mail_post
+NEW ir.actions.act_window: mail.mail_activity_action_to_assign
+ir.actions.act_window: mail.mail_activity_without_access_action (deleted domain)
+DEL ir.actions.act_window: mail.action_view_mail_tracking_value
+NEW ir.actions.act_window.view: mail.mail_activity_action_my_view_graph
+NEW ir.actions.act_window.view: mail.mail_activity_action_my_view_pivot
+NEW ir.actions.act_window.view: mail.mail_activity_action_to_assign_view_list
+ir.config_parameter: mail.gc_delete_overdue_activities_year_threshold (noupdate switched)
+ir.config_parameter: mail.restrict_template_rendering (noupdate switched)
+ir.cron: mail.ir_cron_delete_notification (noupdate switched)
+ir.cron: mail.ir_cron_discuss_channel_member_unmute (noupdate switched)
+NEW ir.cron: mail.ir_cron_discuss_channel_sync_last_interest_dt
+NEW ir.cron: mail.ir_cron_mail_end_polls
+ir.cron: mail.ir_cron_mail_gateway_action (noupdate switched)
+ir.cron: mail.ir_cron_mail_scheduler_action (noupdate switched)
+ir.cron: mail.ir_cron_module_update_notification (noupdate switched)
+ir.cron: mail.ir_cron_post_scheduled_message (noupdate switched)
+ir.cron: mail.ir_cron_send_scheduled_message (noupdate switched)
+ir.cron: mail.ir_cron_web_push_notification (noupdate switched)
+DEL ir.model.access: mail.access_discuss_call_history_portal
+DEL ir.model.access: mail.access_discuss_call_history_public
+DEL ir.model.access: mail.access_discuss_call_history_user
+DEL ir.model.access: mail.access_discuss_channel_member_portal
+DEL ir.model.access: mail.access_discuss_channel_member_public
+DEL ir.model.access: mail.access_discuss_channel_member_user
+DEL ir.model.access: mail.access_discuss_channel_portal
+DEL ir.model.access: mail.access_discuss_channel_public
+DEL ir.model.access: mail.access_discuss_channel_rtc_session_system
+DEL ir.model.access: mail.access_discuss_channel_system
+DEL ir.model.access: mail.access_discuss_channel_user
+DEL ir.model.access: mail.access_discuss_gif_favorite
+DEL ir.model.access: mail.access_discuss_voice_metadata_user
+DEL ir.model.access: mail.access_fetchmail_server
+DEL ir.model.access: mail.access_mail_activity_plan_system
+DEL ir.model.access: mail.access_mail_activity_plan_template_system
+DEL ir.model.access: mail.access_mail_activity_plan_template_user
+DEL ir.model.access: mail.access_mail_activity_plan_user
+DEL ir.model.access: mail.access_mail_activity_schedule_line_user
+DEL ir.model.access: mail.access_mail_activity_schedule_user
+DEL ir.model.access: mail.access_mail_activity_type_system
+DEL ir.model.access: mail.access_mail_activity_type_user
+DEL ir.model.access: mail.access_mail_activity_user
+DEL ir.model.access: mail.access_mail_alias_domain_system
+DEL ir.model.access: mail.access_mail_alias_domain_user
+DEL ir.model.access: mail.access_mail_alias_system
+DEL ir.model.access: mail.access_mail_alias_user
+DEL ir.model.access: mail.access_mail_blacklist_remove_system
+DEL ir.model.access: mail.access_mail_blacklist_system
+DEL ir.model.access: mail.access_mail_canned_reponse
+DEL ir.model.access: mail.access_mail_compose_message
+DEL ir.model.access: mail.access_mail_followers_edit
+DEL ir.model.access: mail.access_mail_followers_system
+DEL ir.model.access: mail.access_mail_followers_user
+DEL ir.model.access: mail.access_mail_gateway_allowed_system
+DEL ir.model.access: mail.access_mail_guest_system
+DEL ir.model.access: mail.access_mail_guest_user
+DEL ir.model.access: mail.access_mail_ice_server_system
+DEL ir.model.access: mail.access_mail_link_preview_admin
+DEL ir.model.access: mail.access_mail_mail_system
+DEL ir.model.access: mail.access_mail_message_all
+DEL ir.model.access: mail.access_mail_message_link_preview_erp_manager
+DEL ir.model.access: mail.access_mail_message_portal
+DEL ir.model.access: mail.access_mail_message_reaction_system
+DEL ir.model.access: mail.access_mail_message_scheduled_system
+DEL ir.model.access: mail.access_mail_message_subtype_portal
+DEL ir.model.access: mail.access_mail_message_subtype_public
+DEL ir.model.access: mail.access_mail_message_subtype_system
+DEL ir.model.access: mail.access_mail_message_subtype_user
+DEL ir.model.access: mail.access_mail_message_translation_system
+DEL ir.model.access: mail.access_mail_message_user
+DEL ir.model.access: mail.access_mail_notification_portal
+DEL ir.model.access: mail.access_mail_notification_system
+DEL ir.model.access: mail.access_mail_notification_user
+DEL ir.model.access: mail.access_mail_presence
+DEL ir.model.access: mail.access_mail_push_device_system
+DEL ir.model.access: mail.access_mail_push_system
+DEL ir.model.access: mail.access_mail_scheduled_message
+DEL ir.model.access: mail.access_mail_template
+DEL ir.model.access: mail.access_mail_template_editor
+DEL ir.model.access: mail.access_mail_template_preview
+DEL ir.model.access: mail.access_mail_template_reset
+DEL ir.model.access: mail.access_mail_template_system
+DEL ir.model.access: mail.access_mail_tracking_value_system
+DEL ir.model.access: mail.access_publisher_warranty_contract_all
+DEL ir.model.access: mail.access_res_role_admin
+DEL ir.model.access: mail.access_res_role_user
+DEL ir.model.access: mail.access_res_users_settings_volumes_user
+DEL ir.model.access: mail.ir_actions_report_access_user
+ir.model.constraint: mail.constraint_discuss_call_history_channel_id_end_dt_idx (changed definition: is now 'False' ('INDEX (channel_id, end_dt) WHERE end_dt IS NULL'))
+ir.model.constraint: mail.constraint_discuss_call_history_channel_id_not_null_constraint (changed definition: is now 'False' ('CHECK (channel_id IS NOT NULL)'))
+ir.model.constraint: mail.constraint_discuss_call_history_message_id_unique_constraint (changed definition: is now 'False' ('UNIQUE (start_call_message_id)'))
+ir.model.constraint: mail.constraint_discuss_call_history_start_dt_is_not_null_constraint (changed definition: is now 'False' ('CHECK (start_dt IS NOT NULL)'))
+NEW ir.model.constraint: mail.constraint_discuss_category_name_unique
+ir.model.constraint: mail.constraint_discuss_channel_from_message_id_unique (changed definition: is now 'False' ('UNIQUE(from_message_id)'))
+ir.model.constraint: mail.constraint_discuss_channel_group_public_id_check (changed definition: is now 'False' ('CHECK (channel_type = 'channel' OR group_public_id IS NULL)'))
+NEW ir.model.constraint: mail.constraint_discuss_channel_member_channel_id_id_idx
+ir.model.constraint: mail.constraint_discuss_channel_member_guest_unique (changed definition: is now 'False' ('UNIQUE INDEX (channel_id, guest_id) WHERE guest_id IS NOT NULL'))
+NEW ir.model.constraint: mail.constraint_discuss_channel_member_indices_channel_check
+NEW ir.model.constraint: mail.constraint_discuss_channel_member_indices_chat_check
+NEW ir.model.constraint: mail.constraint_discuss_channel_member_indices_unique
+ir.model.constraint: mail.constraint_discuss_channel_member_partner_or_guest_exists (changed definition: is now 'False' ('CHECK((partner_id IS NOT NULL AND guest_id IS NULL) OR (partner_id IS NULL AND guest_id IS NOT NULL))'))
+ir.model.constraint: mail.constraint_discuss_channel_member_partner_unique (changed definition: is now 'False' ('UNIQUE INDEX (channel_id, partner_id) WHERE partner_id IS NOT NULL'))
+ir.model.constraint: mail.constraint_discuss_channel_member_seen_message_id_idx (changed definition: is now 'False' ('INDEX (channel_id, partner_id, seen_message_id)'))
+NEW ir.model.constraint: mail.constraint_discuss_channel_readonly_channel_type_check
+ir.model.constraint: mail.constraint_discuss_channel_rtc_session_channel_member_unique (changed definition: is now 'False' ('UNIQUE(channel_member_id)'))
+ir.model.constraint: mail.constraint_discuss_channel_uuid_unique (changed definition: is now 'False' ('UNIQUE(uuid)'))
+ir.model.constraint: mail.constraint_discuss_gif_favorite_user_gif_favorite (changed definition: is now 'False' ('unique(create_uid,tenor_gif_id)'))
+NEW ir.model.constraint: mail.constraint_ir_attachment_mail_call_artifact_uniq
+ir.model.constraint: mail.constraint_ir_mail_server_unique_owner_user_id (changed definition: is now 'False' ('UNIQUE(owner_user_id)'))
+ir.model.constraint: mail.constraint_mail_activity_check_res_id_is_set_if_model (changed definition: is now 'False' ('CHECK( (COALESCE(res_model, '') <> '' AND (res_id IS NOT NULL AND res_id != 0)) OR (COALESCE(res_model, '') = '' AND (res_id IS NULL OR res_id = 0)) )'))
+ir.model.constraint: mail.constraint_mail_activity_check_user_id_is_set_if_model (changed definition: is now 'False' ('CHECK( (COALESCE(res_model, '') <> '' OR user_id IS NOT NULL) )'))
+NEW ir.model.constraint: mail.constraint_mail_activity_unassigned_role_idx
+ir.model.constraint: mail.constraint_mail_alias_domain_bounce_email_uniques (changed definition: is now 'False' ('UNIQUE(bounce_alias, name)'))
+ir.model.constraint: mail.constraint_mail_alias_domain_catchall_email_uniques (changed definition: is now 'False' ('UNIQUE(catchall_alias, name)'))
+ir.model.constraint: mail.constraint_mail_alias_name_domain_unique (changed definition: is now 'False' ('UNIQUE INDEX (alias_name, COALESCE(alias_domain_id, 0))'))
+ir.model.constraint: mail.constraint_mail_blacklist_unique_email (changed definition: is now 'False' ('unique (email)'))
+NEW ir.model.constraint: mail.constraint_mail_call_artifact_artifact_has_possessor
+NEW ir.model.constraint: mail.constraint_mail_call_artifact_start_before_end
+ir.model.constraint: mail.constraint_mail_followers_mail_followers_res_partner_res_model_id_uniq (changed definition: is now 'False' ('unique(res_model,res_id,partner_id)'))
+ir.model.constraint: mail.constraint_mail_link_preview_unique_source_url (changed definition: is now 'False' ('UNIQUE INDEX (source_url)'))
+ir.model.constraint: mail.constraint_mail_message_link_preview_unique_message_link_preview (changed definition: is now 'False' ('UNIQUE INDEX (message_id, link_preview_id)'))
+ir.model.constraint: mail.constraint_mail_message_model_res_id_id_idx (changed definition: is now 'False' ('INDEX (model, res_id, id)'))
+ir.model.constraint: mail.constraint_mail_message_model_res_id_idx (changed definition: is now 'False' ('INDEX (model, res_id)'))
+ir.model.constraint: mail.constraint_mail_message_reaction_guest_unique (changed definition: is now 'False' ('UNIQUE INDEX (message_id, content, guest_id) WHERE guest_id IS NOT NULL'))
+ir.model.constraint: mail.constraint_mail_message_reaction_partner_or_guest_exists (changed definition: is now 'False' ('CHECK((partner_id IS NOT NULL AND guest_id IS NULL) OR (partner_id IS NULL AND guest_id IS NOT NULL))'))
+ir.model.constraint: mail.constraint_mail_message_reaction_partner_unique (changed definition: is now 'False' ('UNIQUE INDEX (message_id, content, partner_id) WHERE partner_id IS NOT NULL'))
+ir.model.constraint: mail.constraint_mail_message_translation_unique (changed definition: is now 'False' ('UNIQUE INDEX (message_id, target_lang)'))
+ir.model.constraint: mail.constraint_mail_notification_author_id_notification_status_failure (changed definition: is now 'False' ('INDEX (author_id, notification_status) WHERE notification_status IN ('bounce', 'exception')'))
+ir.model.constraint: mail.constraint_mail_notification_notification_partner_or_email_required (changed definition: is now 'False' ('CHECK(notification_type != 'email' OR failure_type IS NOT NULL OR res_partner_id IS NOT NULL OR COALESCE(mail_email_address, '') != '')'))
+ir.model.constraint: mail.constraint_mail_notification_notification_partner_required (changed definition: is now 'False' ('CHECK(notification_type != 'inbox' OR res_partner_id IS NOT NULL)'))
+ir.model.constraint: mail.constraint_mail_notification_res_partner_id_is_read_notification__e5e0b7fb (changed definition: is now 'False' ('INDEX (res_partner_id, is_read, notification_status, mail_message_id)'))
+ir.model.constraint: mail.constraint_mail_notification_unique_mail_message_id_res_partner_id_ (changed definition: is now 'False' ('UNIQUE INDEX (mail_message_id, res_partner_id) WHERE res_partner_id IS NOT NULL'))
+NEW ir.model.constraint: mail.constraint_mail_poll_option_check_option_label
+NEW ir.model.constraint: mail.constraint_mail_poll_unique_end_message_id
+NEW ir.model.constraint: mail.constraint_mail_poll_unique_start_message_id
+NEW ir.model.constraint: mail.constraint_mail_poll_vote_check_user_or_guest_set
+NEW ir.model.constraint: mail.constraint_mail_poll_vote_unique_option_id_guest_id
+NEW ir.model.constraint: mail.constraint_mail_poll_vote_unique_option_id_user_id
+ir.model.constraint: mail.constraint_mail_presence_guest_unique (changed definition: is now 'False' ('UNIQUE INDEX (guest_id) WHERE guest_id IS NOT NULL'))
+ir.model.constraint: mail.constraint_mail_presence_partner_or_guest_exists (changed definition: is now 'False' ('CHECK((user_id IS NOT NULL AND guest_id IS NULL) OR (user_id IS NULL AND guest_id IS NOT NULL))'))
+ir.model.constraint: mail.constraint_mail_presence_user_unique (changed definition: is now 'False' ('UNIQUE INDEX (user_id) WHERE user_id IS NOT NULL'))
+ir.model.constraint: mail.constraint_mail_push_device_endpoint_unique (changed definition: is now 'False' ('unique(endpoint)'))
+ir.model.constraint: mail.constraint_res_role_unique_name (changed definition: is now 'False' ('UNIQUE INDEX (name)'))
+ir.model.constraint: mail.constraint_res_users_notification_type (changed definition: is now 'False' ('CHECK (notification_type = 'email' OR NOT share)'))
+ir.model.constraint: mail.constraint_res_users_settings_volumes_guest_unique (changed definition: is now 'False' ('UNIQUE INDEX (user_setting_id, guest_id) WHERE guest_id IS NOT NULL'))
+ir.model.constraint: mail.constraint_res_users_settings_volumes_partner_or_guest_exists (changed definition: is now 'False' ('CHECK((partner_id IS NOT NULL AND guest_id IS NULL) OR (partner_id IS NULL AND guest_id IS NOT NULL))'))
+ir.model.constraint: mail.constraint_res_users_settings_volumes_partner_unique (changed definition: is now 'False' ('UNIQUE INDEX (user_setting_id, partner_id) WHERE partner_id IS NOT NULL'))
+DEL ir.rule: mail.discuss_gif_favorite_admin_rule (noupdate)
+DEL ir.rule: mail.discuss_gif_favorite_user_rule (noupdate)
+DEL ir.rule: mail.ir_rule_discuss_call_history_read_all (noupdate)
+DEL ir.rule: mail.ir_rule_discuss_channel_all (noupdate)
+DEL ir.rule: mail.ir_rule_discuss_channel_group_system (noupdate)
+DEL ir.rule: mail.ir_rule_discuss_channel_member_create_is_group_matching_all (noupdate)
+DEL ir.rule: mail.ir_rule_discuss_channel_member_create_is_group_matching_group_user (noupdate)
+DEL ir.rule: mail.ir_rule_discuss_channel_member_create_is_member_group_user (noupdate)
+DEL ir.rule: mail.ir_rule_discuss_channel_member_group_system (noupdate)
+DEL ir.rule: mail.ir_rule_discuss_channel_member_is_self_all (noupdate)
+DEL ir.rule: mail.ir_rule_discuss_channel_member_read_all (noupdate)
+DEL ir.rule: mail.ir_rule_mail_canned_response_admin (noupdate)
+DEL ir.rule: mail.ir_rule_mail_canned_response_user_read (noupdate)
+DEL ir.rule: mail.ir_rule_mail_canned_response_user_update (noupdate)
+DEL ir.rule: mail.ir_rule_mail_notifications_group_portal (noupdate)
+DEL ir.rule: mail.ir_rule_mail_notifications_group_user (noupdate)
+DEL ir.rule: mail.ir_rule_mail_scheduled_message_user (noupdate)
+DEL ir.rule: mail.mail_activity_plan_rule_admin (noupdate)
+DEL ir.rule: mail.mail_activity_plan_template_rule_admin (noupdate)
+DEL ir.rule: mail.mail_activity_rule_user (noupdate)
+DEL ir.rule: mail.mail_compose_message_rule (noupdate)
+DEL ir.rule: mail.mail_message_subtype_rule_public (noupdate)
+DEL ir.rule: mail.mail_template_editor_rule (noupdate)
+DEL ir.rule: mail.mail_template_employee_rule (noupdate)
+DEL ir.rule: mail.res_users_settings_volumes_rule_admin (noupdate)
+DEL ir.rule: mail.res_users_settings_volumes_rule_user (noupdate)
+NEW ir.ui.menu: mail.ir_ui_view_menu_usage_mail_post
+NEW ir.ui.menu: mail.menu_discuss_category
+NEW ir.ui.menu: mail.menu_discuss_user_settings
+NEW ir.ui.menu: mail.menu_settings
+DEL ir.ui.menu: mail.discuss_technical
+DEL ir.ui.menu: mail.menu_mail_tracking_value
+NEW ir.ui.view: mail.content_markdown
+NEW ir.ui.view: mail.content_text
+NEW ir.ui.view: mail.discuss_call_history_view_search
+NEW ir.ui.view: mail.discuss_category_view_form
+NEW ir.ui.view: mail.discuss_category_view_kanban
+NEW ir.ui.view: mail.discuss_category_view_search
+NEW ir.ui.view: mail.discuss_category_view_tree
+NEW ir.ui.view: mail.discuss_my_conversations_view_search
+NEW ir.ui.view: mail.group_change_template
+NEW ir.ui.view: mail.ir_access_form_view_inherit_mail
+NEW ir.ui.view: mail.ir_attachment_view_list
+NEW ir.ui.view: mail.ir_ui_view_view_search_mail
+NEW ir.ui.view: mail.mail_activity_view_graph
+NEW ir.ui.view: mail.mail_activity_view_pivot
+NEW ir.ui.view: mail.mail_tracking_template
+NEW ir.ui.view: mail.res_config_settings_view_form_sfu_client_source
+DEL ir.ui.view: mail.view_mail_tracking_value_form
+DEL ir.ui.view: mail.view_mail_tracking_value_tree
+mail.activity.type: mail.mail_activity_data_call (noupdate switched)
+mail.activity.type: mail.mail_activity_data_email (noupdate switched)
+mail.activity.type: mail.mail_activity_data_meeting (noupdate switched)
+mail.activity.type: mail.mail_activity_data_todo (noupdate switched)
+mail.activity.type: mail.mail_activity_data_upload_document (noupdate switched)
+mail.activity.type: mail.mail_activity_data_warning (noupdate switched)
+mail.canned.response: mail.mail_canned_response_data_hello (noupdate switched)
+mail.message: mail.module_install_notification (noupdate switched)
+mail.message.subtype: mail.mt_activities (noupdate switched)
+mail.message.subtype: mail.mt_comment (noupdate switched)
+NEW mail.message.subtype: mail.mt_important_notification
+mail.message.subtype: mail.mt_note (noupdate switched)
+res.groups: mail.group_mail_canned_response_admin (noupdate switched)
+res.groups: mail.group_mail_notification_type_inbox (noupdate switched)
+res.groups: mail.group_mail_template_editor (noupdate switched)
+res.groups.privilege: mail.res_groups_privilege_canned_response (noupdate switched)
+res.partner: base.partner_root (noupdate switched)
+res.users: base.user_root (noupdate switched)
diff --git a/openupgrade_scripts/scripts/mail_group/20.0.1.1/noupdate_changes.xml b/openupgrade_scripts/scripts/mail_group/20.0.1.1/noupdate_changes.xml
new file mode 100644
index 00000000000..85339a541c6
--- /dev/null
+++ b/openupgrade_scripts/scripts/mail_group/20.0.1.1/noupdate_changes.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
diff --git a/openupgrade_scripts/scripts/mail_group/20.0.1.1/post-migration.py b/openupgrade_scripts/scripts/mail_group/20.0.1.1/post-migration.py
new file mode 100644
index 00000000000..0a474d11d6d
--- /dev/null
+++ b/openupgrade_scripts/scripts/mail_group/20.0.1.1/post-migration.py
@@ -0,0 +1,9 @@
+# Copyright 2026 Don Kendall
+# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl).
+
+from openupgradelib import openupgrade
+
+
+@openupgrade.migrate()
+def migrate(env, version):
+ openupgrade.load_data(env, "mail_group", "20.0.1.1/noupdate_changes.xml")
diff --git a/openupgrade_scripts/scripts/mail_group/20.0.1.1/upgrade_analysis.txt b/openupgrade_scripts/scripts/mail_group/20.0.1.1/upgrade_analysis.txt
new file mode 100644
index 00000000000..1fbefb37137
--- /dev/null
+++ b/openupgrade_scripts/scripts/mail_group/20.0.1.1/upgrade_analysis.txt
@@ -0,0 +1,38 @@
+---Models in module 'mail_group'---
+---Fields in module 'mail_group'---
+---XML records in module 'mail_group'---
+NEW ir.access: mail_group.access_mail_group_message_reject
+NEW ir.access: mail_group.access_mail_group_user
+NEW ir.access: mail_group.mail_group_member_rule_administrator
+NEW ir.access: mail_group.mail_group_member_rule_user
+NEW ir.access: mail_group.mail_group_message_rule_administrator
+NEW ir.access: mail_group.mail_group_message_rule_public
+NEW ir.access: mail_group.mail_group_message_rule_user
+NEW ir.access: mail_group.mail_group_message_rule_user_write
+NEW ir.access: mail_group.mail_group_moderation_rule_administrator
+NEW ir.access: mail_group.mail_group_moderation_rule_user
+NEW ir.access: mail_group.mail_group_rule_administrator
+NEW ir.access: mail_group.mail_group_rule_read_all
+NEW ir.access: mail_group.mail_group_rule_write_all
+DEL ir.model.access: mail_group.access_mail_group_all_portal
+DEL ir.model.access: mail_group.access_mail_group_all_public
+DEL ir.model.access: mail_group.access_mail_group_member
+DEL ir.model.access: mail_group.access_mail_group_message_all_portal
+DEL ir.model.access: mail_group.access_mail_group_message_all_public
+DEL ir.model.access: mail_group.access_mail_group_message_reject
+DEL ir.model.access: mail_group.access_mail_group_message_user
+DEL ir.model.access: mail_group.access_mail_group_moderation
+DEL ir.model.access: mail_group.access_mail_group_user
+ir.model.constraint: mail_group.constraint_mail_group_member_unique_partner (changed definition: is now 'False' ('UNIQUE(partner_id, mail_group_id)'))
+ir.model.constraint: mail_group.constraint_mail_group_moderation_mail_group_email_uniq (changed definition: is now 'False' ('UNIQUE(mail_group_id, email)'))
+DEL ir.rule: mail_group.mail_group_member_rule_administrator (noupdate)
+DEL ir.rule: mail_group.mail_group_member_rule_user (noupdate)
+DEL ir.rule: mail_group.mail_group_message_rule_administrator (noupdate)
+DEL ir.rule: mail_group.mail_group_message_rule_public (noupdate)
+DEL ir.rule: mail_group.mail_group_message_rule_user (noupdate)
+DEL ir.rule: mail_group.mail_group_moderation_rule_administrator (noupdate)
+DEL ir.rule: mail_group.mail_group_moderation_rule_user (noupdate)
+DEL ir.rule: mail_group.mail_group_rule_administrator (noupdate)
+DEL ir.rule: mail_group.mail_group_rule_read_all (noupdate)
+DEL ir.rule: mail_group.mail_group_rule_write_all (noupdate)
+res.groups: mail_group.group_mail_group_manager (noupdate switched)
diff --git a/openupgrade_scripts/scripts/mail_group/20.0.1.1/upgrade_analysis_work.txt b/openupgrade_scripts/scripts/mail_group/20.0.1.1/upgrade_analysis_work.txt
new file mode 100644
index 00000000000..689911f5b83
--- /dev/null
+++ b/openupgrade_scripts/scripts/mail_group/20.0.1.1/upgrade_analysis_work.txt
@@ -0,0 +1,42 @@
+---Models in module 'mail_group'---
+---Fields in module 'mail_group'---
+---XML records in module 'mail_group'---
+NEW ir.access: mail_group.access_mail_group_message_reject
+NEW ir.access: mail_group.access_mail_group_user
+NEW ir.access: mail_group.mail_group_member_rule_administrator
+NEW ir.access: mail_group.mail_group_member_rule_user
+NEW ir.access: mail_group.mail_group_message_rule_administrator
+NEW ir.access: mail_group.mail_group_message_rule_public
+NEW ir.access: mail_group.mail_group_message_rule_user
+NEW ir.access: mail_group.mail_group_message_rule_user_write
+NEW ir.access: mail_group.mail_group_moderation_rule_administrator
+NEW ir.access: mail_group.mail_group_moderation_rule_user
+NEW ir.access: mail_group.mail_group_rule_administrator
+NEW ir.access: mail_group.mail_group_rule_read_all
+NEW ir.access: mail_group.mail_group_rule_write_all
+DEL ir.model.access: mail_group.access_mail_group_all_portal
+DEL ir.model.access: mail_group.access_mail_group_all_public
+DEL ir.model.access: mail_group.access_mail_group_member
+DEL ir.model.access: mail_group.access_mail_group_message_all_portal
+DEL ir.model.access: mail_group.access_mail_group_message_all_public
+DEL ir.model.access: mail_group.access_mail_group_message_reject
+DEL ir.model.access: mail_group.access_mail_group_message_user
+DEL ir.model.access: mail_group.access_mail_group_moderation
+DEL ir.model.access: mail_group.access_mail_group_user
+# NOTHING TO DO: base folds ir.model.access and ir.rule into ir.access, keeping the xml_ids
+ir.model.constraint: mail_group.constraint_mail_group_member_unique_partner (changed definition: is now 'False' ('UNIQUE(partner_id, mail_group_id)'))
+ir.model.constraint: mail_group.constraint_mail_group_moderation_mail_group_email_uniq (changed definition: is now 'False' ('UNIQUE(mail_group_id, email)'))
+# NOTHING TO DO: the record is not noupdate, so the module update rewrites it
+DEL ir.rule: mail_group.mail_group_member_rule_administrator (noupdate)
+DEL ir.rule: mail_group.mail_group_member_rule_user (noupdate)
+DEL ir.rule: mail_group.mail_group_message_rule_administrator (noupdate)
+DEL ir.rule: mail_group.mail_group_message_rule_public (noupdate)
+DEL ir.rule: mail_group.mail_group_message_rule_user (noupdate)
+DEL ir.rule: mail_group.mail_group_moderation_rule_administrator (noupdate)
+DEL ir.rule: mail_group.mail_group_moderation_rule_user (noupdate)
+DEL ir.rule: mail_group.mail_group_rule_administrator (noupdate)
+DEL ir.rule: mail_group.mail_group_rule_read_all (noupdate)
+DEL ir.rule: mail_group.mail_group_rule_write_all (noupdate)
+# NOTHING TO DO: base folds ir.model.access and ir.rule into ir.access, keeping the xml_ids
+res.groups: mail_group.group_mail_group_manager (noupdate switched)
+# DONE: post-migration: load noupdate_changes.xml
diff --git a/openupgrade_scripts/scripts/payment_adyen/20.0.2.0/noupdate_changes.xml b/openupgrade_scripts/scripts/payment_adyen/20.0.2.0/noupdate_changes.xml
new file mode 100644
index 00000000000..56061dce5c5
--- /dev/null
+++ b/openupgrade_scripts/scripts/payment_adyen/20.0.2.0/noupdate_changes.xml
@@ -0,0 +1,367 @@
+
+
+
+ True
+
+
+
+
+
+ partial
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ full_only
+ True
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ True
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ True
+
+
+
+
+
+ True
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ True
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 50
+
+
+
+
+
+
+
+
+
+
+
+
+
+ True
+
+
+
+
+
+ partial
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ True
+
+
+
+
+
+ none
+
+
+
+
+
+
+
+
+
+
+ True
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ partial
+ True
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 50
+
+
+
+ partial
+
+
+
+
+
+ partial
+
+
+
+
+
+
+
+
+
+
+ partial
+ True
+
+
+
+
+
diff --git a/openupgrade_scripts/scripts/payment_adyen/20.0.2.0/post-migration.py b/openupgrade_scripts/scripts/payment_adyen/20.0.2.0/post-migration.py
new file mode 100644
index 00000000000..e219a1167ff
--- /dev/null
+++ b/openupgrade_scripts/scripts/payment_adyen/20.0.2.0/post-migration.py
@@ -0,0 +1,9 @@
+# Copyright 2026 Don Kendall
+# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl).
+
+from openupgradelib import openupgrade
+
+
+@openupgrade.migrate()
+def migrate(env, version):
+ openupgrade.load_data(env, "payment_adyen", "20.0.2.0/noupdate_changes.xml")
diff --git a/openupgrade_scripts/scripts/payment_adyen/20.0.2.0/upgrade_analysis.txt b/openupgrade_scripts/scripts/payment_adyen/20.0.2.0/upgrade_analysis.txt
new file mode 100644
index 00000000000..60a635f3fbc
--- /dev/null
+++ b/openupgrade_scripts/scripts/payment_adyen/20.0.2.0/upgrade_analysis.txt
@@ -0,0 +1,77 @@
+---Models in module 'payment_adyen'---
+---Fields in module 'payment_adyen'---
+---XML records in module 'payment_adyen'---
+NEW payment.method: payment_adyen.payment_method_ach_direct_debit [renamed from payment module] (noupdate switched)
+NEW payment.method: payment_adyen.payment_method_affirm [renamed from payment module] (noupdate switched)
+NEW payment.method: payment_adyen.payment_method_afterpay [renamed from payment module] (noupdate switched)
+NEW payment.method: payment_adyen.payment_method_alipay [renamed from payment module] (noupdate switched)
+NEW payment.method: payment_adyen.payment_method_alipay_hk [renamed from payment module] (noupdate switched)
+NEW payment.method: payment_adyen.payment_method_alma [renamed from payment module] (noupdate switched)
+NEW payment.method: payment_adyen.payment_method_amex [renamed from payment module] (noupdate switched)
+NEW payment.method: payment_adyen.payment_method_bacs_direct_debit [renamed from payment module] (noupdate switched)
+NEW payment.method: payment_adyen.payment_method_bancontact [renamed from payment module] (noupdate switched)
+NEW payment.method: payment_adyen.payment_method_benefit [renamed from payment module] (noupdate switched)
+NEW payment.method: payment_adyen.payment_method_bizum [renamed from payment module] (noupdate switched)
+NEW payment.method: payment_adyen.payment_method_blik [renamed from payment module] (noupdate switched)
+NEW payment.method: payment_adyen.payment_method_card [renamed from payment module] (noupdate switched)
+NEW payment.method: payment_adyen.payment_method_carnet [renamed from payment module] (noupdate switched)
+NEW payment.method: payment_adyen.payment_method_cartes_bancaires [renamed from payment module] (noupdate switched)
+NEW payment.method: payment_adyen.payment_method_cash_app_pay [renamed from payment module] (noupdate switched)
+NEW payment.method: payment_adyen.payment_method_clearpay [renamed from payment module] (noupdate switched)
+NEW payment.method: payment_adyen.payment_method_dana [renamed from payment module] (noupdate switched)
+NEW payment.method: payment_adyen.payment_method_dankort [renamed from payment module] (noupdate switched)
+NEW payment.method: payment_adyen.payment_method_diners [renamed from payment module] (noupdate switched)
+NEW payment.method: payment_adyen.payment_method_discover [renamed from payment module] (noupdate switched)
+NEW payment.method: payment_adyen.payment_method_duitnow [renamed from payment module] (noupdate switched)
+NEW payment.method: payment_adyen.payment_method_elo [renamed from payment module] (noupdate switched)
+NEW payment.method: payment_adyen.payment_method_eps [renamed from payment module] (noupdate switched)
+NEW payment.method: payment_adyen.payment_method_fpx [renamed from payment module] (noupdate switched)
+NEW payment.method: payment_adyen.payment_method_gcash [renamed from payment module] (noupdate switched)
+NEW payment.method: payment_adyen.payment_method_gopay [renamed from payment module] (noupdate switched)
+NEW payment.method: payment_adyen.payment_method_hipercard [renamed from payment module] (noupdate switched)
+NEW payment.method: payment_adyen.payment_method_ideal [renamed from payment module] (noupdate switched)
+NEW payment.method: payment_adyen.payment_method_ideal_brand [renamed from payment module] (noupdate switched)
+NEW payment.method: payment_adyen.payment_method_jcb [renamed from payment module] (noupdate switched)
+NEW payment.method: payment_adyen.payment_method_kakaopay [renamed from payment module] (noupdate switched)
+NEW payment.method: payment_adyen.payment_method_klarna [renamed from payment module] (noupdate switched)
+NEW payment.method: payment_adyen.payment_method_klarna_pay_over_time [renamed from payment module] (noupdate switched)
+NEW payment.method: payment_adyen.payment_method_klarna_paynow [renamed from payment module] (noupdate switched)
+NEW payment.method: payment_adyen.payment_method_maestro [renamed from payment module] (noupdate switched)
+NEW payment.method: payment_adyen.payment_method_mastercard [renamed from payment module] (noupdate switched)
+NEW payment.method: payment_adyen.payment_method_mbway [renamed from payment module] (noupdate switched)
+NEW payment.method: payment_adyen.payment_method_mobile_pay [renamed from payment module] (noupdate switched)
+NEW payment.method: payment_adyen.payment_method_momo [renamed from payment module] (noupdate switched)
+NEW payment.method: payment_adyen.payment_method_multibanco [renamed from payment module] (noupdate switched)
+NEW payment.method: payment_adyen.payment_method_napas_card [renamed from payment module] (noupdate switched)
+NEW payment.method: payment_adyen.payment_method_online_banking_czech_republic [renamed from payment module] (noupdate switched)
+NEW payment.method: payment_adyen.payment_method_online_banking_india [renamed from payment module] (noupdate switched)
+NEW payment.method: payment_adyen.payment_method_online_banking_slovakia [renamed from payment module] (noupdate switched)
+NEW payment.method: payment_adyen.payment_method_online_banking_thailand [renamed from payment module] (noupdate switched)
+NEW payment.method: payment_adyen.payment_method_open_banking [renamed from payment module] (noupdate switched)
+NEW payment.method: payment_adyen.payment_method_p24 [renamed from payment module] (noupdate switched)
+NEW payment.method: payment_adyen.payment_method_paybright [renamed from payment module] (noupdate switched)
+NEW payment.method: payment_adyen.payment_method_paynow [renamed from payment module] (noupdate switched)
+NEW payment.method: payment_adyen.payment_method_paypal [renamed from payment module] (noupdate switched)
+NEW payment.method: payment_adyen.payment_method_paysafecard [renamed from payment module] (noupdate switched)
+NEW payment.method: payment_adyen.payment_method_paytm [renamed from payment module] (noupdate switched)
+NEW payment.method: payment_adyen.payment_method_paytrail [renamed from payment module] (noupdate switched)
+NEW payment.method: payment_adyen.payment_method_pix [renamed from payment module] (noupdate switched)
+NEW payment.method: payment_adyen.payment_method_promptpay [renamed from payment module] (noupdate switched)
+NEW payment.method: payment_adyen.payment_method_ratepay [renamed from payment module] (noupdate switched)
+NEW payment.method: payment_adyen.payment_method_samsung_pay [renamed from payment module] (noupdate switched)
+NEW payment.method: payment_adyen.payment_method_sepa_direct_debit [renamed from payment module] (noupdate switched)
+NEW payment.method: payment_adyen.payment_method_swish [renamed from payment module] (noupdate switched)
+NEW payment.method: payment_adyen.payment_method_touch_n_go [renamed from payment module] (noupdate switched)
+NEW payment.method: payment_adyen.payment_method_troy [renamed from payment module] (noupdate switched)
+NEW payment.method: payment_adyen.payment_method_trustly [renamed from payment module] (noupdate switched)
+NEW payment.method: payment_adyen.payment_method_twint [renamed from payment module] (noupdate switched)
+NEW payment.method: payment_adyen.payment_method_unionpay [renamed from payment module] (noupdate switched)
+NEW payment.method: payment_adyen.payment_method_upi [renamed from payment module] (noupdate switched)
+NEW payment.method: payment_adyen.payment_method_vipps [renamed from payment module] (noupdate switched)
+NEW payment.method: payment_adyen.payment_method_visa [renamed from payment module] (noupdate switched)
+NEW payment.method: payment_adyen.payment_method_wallets_india [renamed from payment module] (noupdate switched)
+NEW payment.method: payment_adyen.payment_method_walley [renamed from payment module] (noupdate switched)
+NEW payment.method: payment_adyen.payment_method_wechat_pay [renamed from payment module] (noupdate switched)
+NEW payment.method: payment_adyen.payment_method_wero_brand
+NEW payment.method: payment_adyen.payment_method_zip [renamed from payment module] (noupdate switched)
+payment.provider: payment.payment_provider_adyen (noupdate switched)
diff --git a/openupgrade_scripts/scripts/payment_adyen/20.0.2.0/upgrade_analysis_work.txt b/openupgrade_scripts/scripts/payment_adyen/20.0.2.0/upgrade_analysis_work.txt
new file mode 100644
index 00000000000..d11d9cdbe54
--- /dev/null
+++ b/openupgrade_scripts/scripts/payment_adyen/20.0.2.0/upgrade_analysis_work.txt
@@ -0,0 +1,80 @@
+---Models in module 'payment_adyen'---
+---Fields in module 'payment_adyen'---
+---XML records in module 'payment_adyen'---
+NEW payment.method: payment_adyen.payment_method_ach_direct_debit [renamed from payment module] (noupdate switched)
+NEW payment.method: payment_adyen.payment_method_affirm [renamed from payment module] (noupdate switched)
+NEW payment.method: payment_adyen.payment_method_afterpay [renamed from payment module] (noupdate switched)
+NEW payment.method: payment_adyen.payment_method_alipay [renamed from payment module] (noupdate switched)
+NEW payment.method: payment_adyen.payment_method_alipay_hk [renamed from payment module] (noupdate switched)
+NEW payment.method: payment_adyen.payment_method_alma [renamed from payment module] (noupdate switched)
+NEW payment.method: payment_adyen.payment_method_amex [renamed from payment module] (noupdate switched)
+NEW payment.method: payment_adyen.payment_method_bacs_direct_debit [renamed from payment module] (noupdate switched)
+NEW payment.method: payment_adyen.payment_method_bancontact [renamed from payment module] (noupdate switched)
+NEW payment.method: payment_adyen.payment_method_benefit [renamed from payment module] (noupdate switched)
+NEW payment.method: payment_adyen.payment_method_bizum [renamed from payment module] (noupdate switched)
+NEW payment.method: payment_adyen.payment_method_blik [renamed from payment module] (noupdate switched)
+NEW payment.method: payment_adyen.payment_method_card [renamed from payment module] (noupdate switched)
+NEW payment.method: payment_adyen.payment_method_carnet [renamed from payment module] (noupdate switched)
+NEW payment.method: payment_adyen.payment_method_cartes_bancaires [renamed from payment module] (noupdate switched)
+NEW payment.method: payment_adyen.payment_method_cash_app_pay [renamed from payment module] (noupdate switched)
+NEW payment.method: payment_adyen.payment_method_clearpay [renamed from payment module] (noupdate switched)
+NEW payment.method: payment_adyen.payment_method_dana [renamed from payment module] (noupdate switched)
+NEW payment.method: payment_adyen.payment_method_dankort [renamed from payment module] (noupdate switched)
+NEW payment.method: payment_adyen.payment_method_diners [renamed from payment module] (noupdate switched)
+NEW payment.method: payment_adyen.payment_method_discover [renamed from payment module] (noupdate switched)
+NEW payment.method: payment_adyen.payment_method_duitnow [renamed from payment module] (noupdate switched)
+NEW payment.method: payment_adyen.payment_method_elo [renamed from payment module] (noupdate switched)
+NEW payment.method: payment_adyen.payment_method_eps [renamed from payment module] (noupdate switched)
+NEW payment.method: payment_adyen.payment_method_fpx [renamed from payment module] (noupdate switched)
+NEW payment.method: payment_adyen.payment_method_gcash [renamed from payment module] (noupdate switched)
+NEW payment.method: payment_adyen.payment_method_gopay [renamed from payment module] (noupdate switched)
+NEW payment.method: payment_adyen.payment_method_hipercard [renamed from payment module] (noupdate switched)
+NEW payment.method: payment_adyen.payment_method_ideal [renamed from payment module] (noupdate switched)
+NEW payment.method: payment_adyen.payment_method_ideal_brand [renamed from payment module] (noupdate switched)
+NEW payment.method: payment_adyen.payment_method_jcb [renamed from payment module] (noupdate switched)
+NEW payment.method: payment_adyen.payment_method_kakaopay [renamed from payment module] (noupdate switched)
+NEW payment.method: payment_adyen.payment_method_klarna [renamed from payment module] (noupdate switched)
+NEW payment.method: payment_adyen.payment_method_klarna_pay_over_time [renamed from payment module] (noupdate switched)
+NEW payment.method: payment_adyen.payment_method_klarna_paynow [renamed from payment module] (noupdate switched)
+NEW payment.method: payment_adyen.payment_method_maestro [renamed from payment module] (noupdate switched)
+NEW payment.method: payment_adyen.payment_method_mastercard [renamed from payment module] (noupdate switched)
+NEW payment.method: payment_adyen.payment_method_mbway [renamed from payment module] (noupdate switched)
+NEW payment.method: payment_adyen.payment_method_mobile_pay [renamed from payment module] (noupdate switched)
+NEW payment.method: payment_adyen.payment_method_momo [renamed from payment module] (noupdate switched)
+NEW payment.method: payment_adyen.payment_method_multibanco [renamed from payment module] (noupdate switched)
+NEW payment.method: payment_adyen.payment_method_napas_card [renamed from payment module] (noupdate switched)
+NEW payment.method: payment_adyen.payment_method_online_banking_czech_republic [renamed from payment module] (noupdate switched)
+NEW payment.method: payment_adyen.payment_method_online_banking_india [renamed from payment module] (noupdate switched)
+NEW payment.method: payment_adyen.payment_method_online_banking_slovakia [renamed from payment module] (noupdate switched)
+NEW payment.method: payment_adyen.payment_method_online_banking_thailand [renamed from payment module] (noupdate switched)
+NEW payment.method: payment_adyen.payment_method_open_banking [renamed from payment module] (noupdate switched)
+NEW payment.method: payment_adyen.payment_method_p24 [renamed from payment module] (noupdate switched)
+NEW payment.method: payment_adyen.payment_method_paybright [renamed from payment module] (noupdate switched)
+NEW payment.method: payment_adyen.payment_method_paynow [renamed from payment module] (noupdate switched)
+NEW payment.method: payment_adyen.payment_method_paypal [renamed from payment module] (noupdate switched)
+NEW payment.method: payment_adyen.payment_method_paysafecard [renamed from payment module] (noupdate switched)
+NEW payment.method: payment_adyen.payment_method_paytm [renamed from payment module] (noupdate switched)
+NEW payment.method: payment_adyen.payment_method_paytrail [renamed from payment module] (noupdate switched)
+NEW payment.method: payment_adyen.payment_method_pix [renamed from payment module] (noupdate switched)
+NEW payment.method: payment_adyen.payment_method_promptpay [renamed from payment module] (noupdate switched)
+NEW payment.method: payment_adyen.payment_method_ratepay [renamed from payment module] (noupdate switched)
+NEW payment.method: payment_adyen.payment_method_samsung_pay [renamed from payment module] (noupdate switched)
+NEW payment.method: payment_adyen.payment_method_sepa_direct_debit [renamed from payment module] (noupdate switched)
+NEW payment.method: payment_adyen.payment_method_swish [renamed from payment module] (noupdate switched)
+NEW payment.method: payment_adyen.payment_method_touch_n_go [renamed from payment module] (noupdate switched)
+NEW payment.method: payment_adyen.payment_method_troy [renamed from payment module] (noupdate switched)
+NEW payment.method: payment_adyen.payment_method_trustly [renamed from payment module] (noupdate switched)
+NEW payment.method: payment_adyen.payment_method_twint [renamed from payment module] (noupdate switched)
+NEW payment.method: payment_adyen.payment_method_unionpay [renamed from payment module] (noupdate switched)
+NEW payment.method: payment_adyen.payment_method_upi [renamed from payment module] (noupdate switched)
+NEW payment.method: payment_adyen.payment_method_vipps [renamed from payment module] (noupdate switched)
+NEW payment.method: payment_adyen.payment_method_visa [renamed from payment module] (noupdate switched)
+NEW payment.method: payment_adyen.payment_method_wallets_india [renamed from payment module] (noupdate switched)
+NEW payment.method: payment_adyen.payment_method_walley [renamed from payment module] (noupdate switched)
+NEW payment.method: payment_adyen.payment_method_wechat_pay [renamed from payment module] (noupdate switched)
+# NOTHING TO DO: only the noupdate flag changed, the definition is the same
+NEW payment.method: payment_adyen.payment_method_wero_brand
+# NOTHING TO DO: the record is not noupdate, so the module update creates it
+NEW payment.method: payment_adyen.payment_method_zip [renamed from payment module] (noupdate switched)
+payment.provider: payment.payment_provider_adyen (noupdate switched)
+# NOTHING TO DO: only the noupdate flag changed, the definition is the same
diff --git a/openupgrade_scripts/scripts/payment_aps/20.0.1.0/noupdate_changes.xml b/openupgrade_scripts/scripts/payment_aps/20.0.1.0/noupdate_changes.xml
new file mode 100644
index 00000000000..bf4f283febd
--- /dev/null
+++ b/openupgrade_scripts/scripts/payment_aps/20.0.1.0/noupdate_changes.xml
@@ -0,0 +1,38 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/openupgrade_scripts/scripts/payment_aps/20.0.1.0/post-migration.py b/openupgrade_scripts/scripts/payment_aps/20.0.1.0/post-migration.py
new file mode 100644
index 00000000000..49ede61afe2
--- /dev/null
+++ b/openupgrade_scripts/scripts/payment_aps/20.0.1.0/post-migration.py
@@ -0,0 +1,9 @@
+# Copyright 2026 Don Kendall
+# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl).
+
+from openupgradelib import openupgrade
+
+
+@openupgrade.migrate()
+def migrate(env, version):
+ openupgrade.load_data(env, "payment_aps", "20.0.1.0/noupdate_changes.xml")
diff --git a/openupgrade_scripts/scripts/payment_aps/20.0.1.0/upgrade_analysis.txt b/openupgrade_scripts/scripts/payment_aps/20.0.1.0/upgrade_analysis.txt
new file mode 100644
index 00000000000..a16f8116b69
--- /dev/null
+++ b/openupgrade_scripts/scripts/payment_aps/20.0.1.0/upgrade_analysis.txt
@@ -0,0 +1,14 @@
+---Models in module 'payment_aps'---
+---Fields in module 'payment_aps'---
+---XML records in module 'payment_aps'---
+DEL ir.ui.view: payment_aps.redirect_form
+NEW payment.method: payment_aps.payment_method_amex
+NEW payment.method: payment_aps.payment_method_benefit
+NEW payment.method: payment_aps.payment_method_knet [renamed from payment module] (noupdate switched)
+NEW payment.method: payment_aps.payment_method_mada [renamed from payment module] (noupdate switched)
+NEW payment.method: payment_aps.payment_method_mastercard
+NEW payment.method: payment_aps.payment_method_meeza [renamed from payment module] (noupdate switched)
+NEW payment.method: payment_aps.payment_method_naps [renamed from payment module] (noupdate switched)
+NEW payment.method: payment_aps.payment_method_omannet [renamed from payment module] (noupdate switched)
+NEW payment.method: payment_aps.payment_method_visa
+payment.provider: payment.payment_provider_aps (noupdate switched)
diff --git a/openupgrade_scripts/scripts/payment_aps/20.0.1.0/upgrade_analysis_work.txt b/openupgrade_scripts/scripts/payment_aps/20.0.1.0/upgrade_analysis_work.txt
new file mode 100644
index 00000000000..8be7bdd7ea3
--- /dev/null
+++ b/openupgrade_scripts/scripts/payment_aps/20.0.1.0/upgrade_analysis_work.txt
@@ -0,0 +1,21 @@
+---Models in module 'payment_aps'---
+---Fields in module 'payment_aps'---
+---XML records in module 'payment_aps'---
+DEL ir.ui.view: payment_aps.redirect_form
+# NOTHING TO DO: the record is not noupdate, so the module update removes it
+NEW payment.method: payment_aps.payment_method_amex
+NEW payment.method: payment_aps.payment_method_benefit
+# NOTHING TO DO: the record is not noupdate, so the module update creates it
+NEW payment.method: payment_aps.payment_method_knet [renamed from payment module] (noupdate switched)
+NEW payment.method: payment_aps.payment_method_mada [renamed from payment module] (noupdate switched)
+# NOTHING TO DO: only the noupdate flag changed, the definition is the same
+NEW payment.method: payment_aps.payment_method_mastercard
+# NOTHING TO DO: the record is not noupdate, so the module update creates it
+NEW payment.method: payment_aps.payment_method_meeza [renamed from payment module] (noupdate switched)
+NEW payment.method: payment_aps.payment_method_naps [renamed from payment module] (noupdate switched)
+NEW payment.method: payment_aps.payment_method_omannet [renamed from payment module] (noupdate switched)
+# NOTHING TO DO: only the noupdate flag changed, the definition is the same
+NEW payment.method: payment_aps.payment_method_visa
+# NOTHING TO DO: the record is not noupdate, so the module update creates it
+payment.provider: payment.payment_provider_aps (noupdate switched)
+# DONE: post-migration: load noupdate_changes.xml
diff --git a/openupgrade_scripts/scripts/payment_asiapay/20.0.1.0/noupdate_changes.xml b/openupgrade_scripts/scripts/payment_asiapay/20.0.1.0/noupdate_changes.xml
new file mode 100644
index 00000000000..e86d3d02d59
--- /dev/null
+++ b/openupgrade_scripts/scripts/payment_asiapay/20.0.1.0/noupdate_changes.xml
@@ -0,0 +1,183 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Bangkok Bank CWF
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ JKO Pay
+
+
+
+
+
+
+
+ Krung Thai Bank CWF
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Maybank2u
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Pace
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SCB Easy
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Tenpay
+
+
+
+
+
+
+
+ TMB Bank
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ TTB - TMBThanachart Bank
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/openupgrade_scripts/scripts/payment_asiapay/20.0.1.0/post-migration.py b/openupgrade_scripts/scripts/payment_asiapay/20.0.1.0/post-migration.py
new file mode 100644
index 00000000000..7129439a53e
--- /dev/null
+++ b/openupgrade_scripts/scripts/payment_asiapay/20.0.1.0/post-migration.py
@@ -0,0 +1,25 @@
+# Copyright 2026 Don Kendall
+# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl).
+
+from openupgradelib import openupgrade
+
+
+@openupgrade.migrate()
+def migrate(env, version):
+ openupgrade.load_data(env, "payment_asiapay", "20.0.1.0/noupdate_changes.xml")
+ openupgrade.delete_record_translations(
+ env.cr,
+ "payment_asiapay",
+ [
+ "payment_method_bangkok_bank",
+ "payment_method_jkopay",
+ "payment_method_krungthai_bank",
+ "payment_method_maybank",
+ "payment_method_pace",
+ "payment_method_scb",
+ "payment_method_tenpay",
+ "payment_method_tmb",
+ "payment_method_ttb",
+ ],
+ ["name"],
+ )
diff --git a/openupgrade_scripts/scripts/payment_asiapay/20.0.1.0/upgrade_analysis.txt b/openupgrade_scripts/scripts/payment_asiapay/20.0.1.0/upgrade_analysis.txt
new file mode 100644
index 00000000000..3bb3f3a9508
--- /dev/null
+++ b/openupgrade_scripts/scripts/payment_asiapay/20.0.1.0/upgrade_analysis.txt
@@ -0,0 +1,46 @@
+---Models in module 'payment_asiapay'---
+---Fields in module 'payment_asiapay'---
+---XML records in module 'payment_asiapay'---
+DEL ir.ui.view: payment_asiapay.redirect_form
+NEW payment.method: payment_asiapay.payment_method_alipay
+NEW payment.method: payment_asiapay.payment_method_alipay_hk
+NEW payment.method: payment_asiapay.payment_method_amex
+NEW payment.method: payment_asiapay.payment_method_atome [renamed from payment module] (noupdate switched)
+NEW payment.method: payment_asiapay.payment_method_bangkok_bank [renamed from payment module] (noupdate switched)
+NEW payment.method: payment_asiapay.payment_method_bank_of_ayudhya [renamed from payment module] (noupdate switched)
+NEW payment.method: payment_asiapay.payment_method_card
+NEW payment.method: payment_asiapay.payment_method_diners
+NEW payment.method: payment_asiapay.payment_method_duitnow
+NEW payment.method: payment_asiapay.payment_method_enets [renamed from payment module] (noupdate switched)
+NEW payment.method: payment_asiapay.payment_method_fps [renamed from payment module] (noupdate switched)
+NEW payment.method: payment_asiapay.payment_method_gcash
+NEW payment.method: payment_asiapay.payment_method_hoolah [renamed from payment module] (noupdate switched)
+NEW payment.method: payment_asiapay.payment_method_humm [renamed from payment module] (noupdate switched)
+NEW payment.method: payment_asiapay.payment_method_jcb
+NEW payment.method: payment_asiapay.payment_method_jkopay [renamed from payment module] (noupdate switched)
+NEW payment.method: payment_asiapay.payment_method_krungthai_bank [renamed from payment module] (noupdate switched)
+NEW payment.method: payment_asiapay.payment_method_linepay [renamed from payment module] (noupdate switched)
+NEW payment.method: payment_asiapay.payment_method_mastercard
+NEW payment.method: payment_asiapay.payment_method_maya [renamed from payment module] (noupdate switched)
+NEW payment.method: payment_asiapay.payment_method_maybank [renamed from payment module] (noupdate switched)
+NEW payment.method: payment_asiapay.payment_method_momo
+NEW payment.method: payment_asiapay.payment_method_octopus [renamed from payment module] (noupdate switched)
+NEW payment.method: payment_asiapay.payment_method_pace [renamed from payment module] (noupdate switched)
+NEW payment.method: payment_asiapay.payment_method_pay_id [renamed from payment module] (noupdate switched)
+NEW payment.method: payment_asiapay.payment_method_payme [renamed from payment module] (noupdate switched)
+NEW payment.method: payment_asiapay.payment_method_paypal
+NEW payment.method: payment_asiapay.payment_method_poli [renamed from payment module] (noupdate switched)
+NEW payment.method: payment_asiapay.payment_method_samsung_pay
+NEW payment.method: payment_asiapay.payment_method_scb [renamed from payment module] (noupdate switched)
+NEW payment.method: payment_asiapay.payment_method_tendopay [renamed from payment module] (noupdate switched)
+NEW payment.method: payment_asiapay.payment_method_tenpay [renamed from payment module] (noupdate switched)
+NEW payment.method: payment_asiapay.payment_method_tmb [renamed from payment module] (noupdate switched)
+NEW payment.method: payment_asiapay.payment_method_touch_n_go
+NEW payment.method: payment_asiapay.payment_method_truemoney [renamed from payment module] (noupdate switched)
+NEW payment.method: payment_asiapay.payment_method_ttb [renamed from payment module] (noupdate switched)
+NEW payment.method: payment_asiapay.payment_method_unionpay
+NEW payment.method: payment_asiapay.payment_method_uob [renamed from payment module] (noupdate switched)
+NEW payment.method: payment_asiapay.payment_method_visa
+NEW payment.method: payment_asiapay.payment_method_wechat_pay
+NEW payment.method: payment_asiapay.payment_method_zip
+payment.provider: payment.payment_provider_asiapay (noupdate switched)
diff --git a/openupgrade_scripts/scripts/payment_asiapay/20.0.1.0/upgrade_analysis_work.txt b/openupgrade_scripts/scripts/payment_asiapay/20.0.1.0/upgrade_analysis_work.txt
new file mode 100644
index 00000000000..613a439a1fa
--- /dev/null
+++ b/openupgrade_scripts/scripts/payment_asiapay/20.0.1.0/upgrade_analysis_work.txt
@@ -0,0 +1,69 @@
+---Models in module 'payment_asiapay'---
+---Fields in module 'payment_asiapay'---
+---XML records in module 'payment_asiapay'---
+DEL ir.ui.view: payment_asiapay.redirect_form
+# NOTHING TO DO: the record is not noupdate, so the module update removes it
+NEW payment.method: payment_asiapay.payment_method_alipay
+NEW payment.method: payment_asiapay.payment_method_alipay_hk
+NEW payment.method: payment_asiapay.payment_method_amex
+# NOTHING TO DO: the record is not noupdate, so the module update creates it
+NEW payment.method: payment_asiapay.payment_method_atome [renamed from payment module] (noupdate switched)
+NEW payment.method: payment_asiapay.payment_method_bangkok_bank [renamed from payment module] (noupdate switched)
+NEW payment.method: payment_asiapay.payment_method_bank_of_ayudhya [renamed from payment module] (noupdate switched)
+# NOTHING TO DO: only the noupdate flag changed, the definition is the same
+NEW payment.method: payment_asiapay.payment_method_card
+NEW payment.method: payment_asiapay.payment_method_diners
+NEW payment.method: payment_asiapay.payment_method_duitnow
+# NOTHING TO DO: the record is not noupdate, so the module update creates it
+NEW payment.method: payment_asiapay.payment_method_enets [renamed from payment module] (noupdate switched)
+NEW payment.method: payment_asiapay.payment_method_fps [renamed from payment module] (noupdate switched)
+# NOTHING TO DO: only the noupdate flag changed, the definition is the same
+NEW payment.method: payment_asiapay.payment_method_gcash
+# NOTHING TO DO: the record is not noupdate, so the module update creates it
+NEW payment.method: payment_asiapay.payment_method_hoolah [renamed from payment module] (noupdate switched)
+NEW payment.method: payment_asiapay.payment_method_humm [renamed from payment module] (noupdate switched)
+# NOTHING TO DO: only the noupdate flag changed, the definition is the same
+NEW payment.method: payment_asiapay.payment_method_jcb
+# NOTHING TO DO: the record is not noupdate, so the module update creates it
+NEW payment.method: payment_asiapay.payment_method_jkopay [renamed from payment module] (noupdate switched)
+NEW payment.method: payment_asiapay.payment_method_krungthai_bank [renamed from payment module] (noupdate switched)
+NEW payment.method: payment_asiapay.payment_method_linepay [renamed from payment module] (noupdate switched)
+# NOTHING TO DO: only the noupdate flag changed, the definition is the same
+NEW payment.method: payment_asiapay.payment_method_mastercard
+# NOTHING TO DO: the record is not noupdate, so the module update creates it
+NEW payment.method: payment_asiapay.payment_method_maya [renamed from payment module] (noupdate switched)
+NEW payment.method: payment_asiapay.payment_method_maybank [renamed from payment module] (noupdate switched)
+# NOTHING TO DO: only the noupdate flag changed, the definition is the same
+NEW payment.method: payment_asiapay.payment_method_momo
+# NOTHING TO DO: the record is not noupdate, so the module update creates it
+NEW payment.method: payment_asiapay.payment_method_octopus [renamed from payment module] (noupdate switched)
+NEW payment.method: payment_asiapay.payment_method_pace [renamed from payment module] (noupdate switched)
+NEW payment.method: payment_asiapay.payment_method_pay_id [renamed from payment module] (noupdate switched)
+NEW payment.method: payment_asiapay.payment_method_payme [renamed from payment module] (noupdate switched)
+# NOTHING TO DO: only the noupdate flag changed, the definition is the same
+NEW payment.method: payment_asiapay.payment_method_paypal
+# NOTHING TO DO: the record is not noupdate, so the module update creates it
+NEW payment.method: payment_asiapay.payment_method_poli [renamed from payment module] (noupdate switched)
+# NOTHING TO DO: only the noupdate flag changed, the definition is the same
+NEW payment.method: payment_asiapay.payment_method_samsung_pay
+# NOTHING TO DO: the record is not noupdate, so the module update creates it
+NEW payment.method: payment_asiapay.payment_method_scb [renamed from payment module] (noupdate switched)
+NEW payment.method: payment_asiapay.payment_method_tendopay [renamed from payment module] (noupdate switched)
+NEW payment.method: payment_asiapay.payment_method_tenpay [renamed from payment module] (noupdate switched)
+NEW payment.method: payment_asiapay.payment_method_tmb [renamed from payment module] (noupdate switched)
+# NOTHING TO DO: only the noupdate flag changed, the definition is the same
+NEW payment.method: payment_asiapay.payment_method_touch_n_go
+# NOTHING TO DO: the record is not noupdate, so the module update creates it
+NEW payment.method: payment_asiapay.payment_method_truemoney [renamed from payment module] (noupdate switched)
+NEW payment.method: payment_asiapay.payment_method_ttb [renamed from payment module] (noupdate switched)
+# NOTHING TO DO: only the noupdate flag changed, the definition is the same
+NEW payment.method: payment_asiapay.payment_method_unionpay
+# NOTHING TO DO: the record is not noupdate, so the module update creates it
+NEW payment.method: payment_asiapay.payment_method_uob [renamed from payment module] (noupdate switched)
+# NOTHING TO DO: only the noupdate flag changed, the definition is the same
+NEW payment.method: payment_asiapay.payment_method_visa
+NEW payment.method: payment_asiapay.payment_method_wechat_pay
+NEW payment.method: payment_asiapay.payment_method_zip
+# NOTHING TO DO: the record is not noupdate, so the module update creates it
+payment.provider: payment.payment_provider_asiapay (noupdate switched)
+# DONE: post-migration: load noupdate_changes.xml
diff --git a/openupgrade_scripts/scripts/payment_buckaroo/20.0.2.0/noupdate_changes.xml b/openupgrade_scripts/scripts/payment_buckaroo/20.0.2.0/noupdate_changes.xml
new file mode 100644
index 00000000000..e3c2076d088
--- /dev/null
+++ b/openupgrade_scripts/scripts/payment_buckaroo/20.0.2.0/noupdate_changes.xml
@@ -0,0 +1,79 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Wero
+
+
+
+
+
+
diff --git a/openupgrade_scripts/scripts/payment_buckaroo/20.0.2.0/post-migration.py b/openupgrade_scripts/scripts/payment_buckaroo/20.0.2.0/post-migration.py
new file mode 100644
index 00000000000..1bc435ae5ed
--- /dev/null
+++ b/openupgrade_scripts/scripts/payment_buckaroo/20.0.2.0/post-migration.py
@@ -0,0 +1,15 @@
+# Copyright 2026 Don Kendall
+# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl).
+
+from openupgradelib import openupgrade
+
+
+@openupgrade.migrate()
+def migrate(env, version):
+ openupgrade.load_data(env, "payment_buckaroo", "20.0.2.0/noupdate_changes.xml")
+ openupgrade.delete_record_translations(
+ env.cr,
+ "payment_buckaroo",
+ ["payment_method_wero"],
+ ["name"],
+ )
diff --git a/openupgrade_scripts/scripts/payment_buckaroo/20.0.2.0/upgrade_analysis.txt b/openupgrade_scripts/scripts/payment_buckaroo/20.0.2.0/upgrade_analysis.txt
new file mode 100644
index 00000000000..ac6107057da
--- /dev/null
+++ b/openupgrade_scripts/scripts/payment_buckaroo/20.0.2.0/upgrade_analysis.txt
@@ -0,0 +1,36 @@
+---Models in module 'payment_buckaroo'---
+---Fields in module 'payment_buckaroo'---
+---XML records in module 'payment_buckaroo'---
+DEL ir.ui.view: payment_buckaroo.redirect_form
+NEW payment.method: payment_buckaroo.payment_method_afterpay_riverty [renamed from payment module] (noupdate switched)
+NEW payment.method: payment_buckaroo.payment_method_alipay
+NEW payment.method: payment_buckaroo.payment_method_amex
+NEW payment.method: payment_buckaroo.payment_method_banco_de_bogota [renamed from payment module] (noupdate switched)
+NEW payment.method: payment_buckaroo.payment_method_bancolombia [renamed from payment module] (noupdate switched)
+NEW payment.method: payment_buckaroo.payment_method_bancontact
+NEW payment.method: payment_buckaroo.payment_method_bank_reference [renamed from payment module] (noupdate switched)
+NEW payment.method: payment_buckaroo.payment_method_belfius [renamed from payment module] (noupdate switched)
+NEW payment.method: payment_buckaroo.payment_method_billink [renamed from payment module] (noupdate switched)
+NEW payment.method: payment_buckaroo.payment_method_card
+NEW payment.method: payment_buckaroo.payment_method_cartes_bancaires
+NEW payment.method: payment_buckaroo.payment_method_dankort
+NEW payment.method: payment_buckaroo.payment_method_davivienda [renamed from payment module] (noupdate switched)
+NEW payment.method: payment_buckaroo.payment_method_eps
+NEW payment.method: payment_buckaroo.payment_method_ideal
+NEW payment.method: payment_buckaroo.payment_method_ideal_brand
+NEW payment.method: payment_buckaroo.payment_method_in3 [renamed from payment module] (noupdate switched)
+NEW payment.method: payment_buckaroo.payment_method_kbc_cbc [renamed from payment module] (noupdate switched)
+NEW payment.method: payment_buckaroo.payment_method_klarna
+NEW payment.method: payment_buckaroo.payment_method_maestro
+NEW payment.method: payment_buckaroo.payment_method_mastercard
+NEW payment.method: payment_buckaroo.payment_method_p24
+NEW payment.method: payment_buckaroo.payment_method_paypal
+NEW payment.method: payment_buckaroo.payment_method_poste_pay [renamed from payment module] (noupdate switched)
+NEW payment.method: payment_buckaroo.payment_method_sepa_direct_debit
+NEW payment.method: payment_buckaroo.payment_method_tinka [renamed from payment module] (noupdate switched)
+NEW payment.method: payment_buckaroo.payment_method_trustly
+NEW payment.method: payment_buckaroo.payment_method_visa
+NEW payment.method: payment_buckaroo.payment_method_wechat_pay
+NEW payment.method: payment_buckaroo.payment_method_wero [renamed from payment module] (noupdate switched)
+NEW payment.method: payment_buckaroo.payment_method_wero_brand
+payment.provider: payment.payment_provider_buckaroo (noupdate switched)
diff --git a/openupgrade_scripts/scripts/payment_buckaroo/20.0.2.0/upgrade_analysis_work.txt b/openupgrade_scripts/scripts/payment_buckaroo/20.0.2.0/upgrade_analysis_work.txt
new file mode 100644
index 00000000000..9156076e2f6
--- /dev/null
+++ b/openupgrade_scripts/scripts/payment_buckaroo/20.0.2.0/upgrade_analysis_work.txt
@@ -0,0 +1,54 @@
+---Models in module 'payment_buckaroo'---
+---Fields in module 'payment_buckaroo'---
+---XML records in module 'payment_buckaroo'---
+DEL ir.ui.view: payment_buckaroo.redirect_form
+# NOTHING TO DO: the record is not noupdate, so the module update removes it
+NEW payment.method: payment_buckaroo.payment_method_afterpay_riverty [renamed from payment module] (noupdate switched)
+# NOTHING TO DO: only the noupdate flag changed, the definition is the same
+NEW payment.method: payment_buckaroo.payment_method_alipay
+NEW payment.method: payment_buckaroo.payment_method_amex
+# NOTHING TO DO: the record is not noupdate, so the module update creates it
+NEW payment.method: payment_buckaroo.payment_method_banco_de_bogota [renamed from payment module] (noupdate switched)
+NEW payment.method: payment_buckaroo.payment_method_bancolombia [renamed from payment module] (noupdate switched)
+# NOTHING TO DO: only the noupdate flag changed, the definition is the same
+NEW payment.method: payment_buckaroo.payment_method_bancontact
+# NOTHING TO DO: the record is not noupdate, so the module update creates it
+NEW payment.method: payment_buckaroo.payment_method_bank_reference [renamed from payment module] (noupdate switched)
+NEW payment.method: payment_buckaroo.payment_method_belfius [renamed from payment module] (noupdate switched)
+NEW payment.method: payment_buckaroo.payment_method_billink [renamed from payment module] (noupdate switched)
+# NOTHING TO DO: only the noupdate flag changed, the definition is the same
+NEW payment.method: payment_buckaroo.payment_method_card
+NEW payment.method: payment_buckaroo.payment_method_cartes_bancaires
+NEW payment.method: payment_buckaroo.payment_method_dankort
+# NOTHING TO DO: the record is not noupdate, so the module update creates it
+NEW payment.method: payment_buckaroo.payment_method_davivienda [renamed from payment module] (noupdate switched)
+# NOTHING TO DO: only the noupdate flag changed, the definition is the same
+NEW payment.method: payment_buckaroo.payment_method_eps
+NEW payment.method: payment_buckaroo.payment_method_ideal
+NEW payment.method: payment_buckaroo.payment_method_ideal_brand
+# NOTHING TO DO: the record is not noupdate, so the module update creates it
+NEW payment.method: payment_buckaroo.payment_method_in3 [renamed from payment module] (noupdate switched)
+NEW payment.method: payment_buckaroo.payment_method_kbc_cbc [renamed from payment module] (noupdate switched)
+# NOTHING TO DO: only the noupdate flag changed, the definition is the same
+NEW payment.method: payment_buckaroo.payment_method_klarna
+NEW payment.method: payment_buckaroo.payment_method_maestro
+NEW payment.method: payment_buckaroo.payment_method_mastercard
+NEW payment.method: payment_buckaroo.payment_method_p24
+NEW payment.method: payment_buckaroo.payment_method_paypal
+# NOTHING TO DO: the record is not noupdate, so the module update creates it
+NEW payment.method: payment_buckaroo.payment_method_poste_pay [renamed from payment module] (noupdate switched)
+# NOTHING TO DO: only the noupdate flag changed, the definition is the same
+NEW payment.method: payment_buckaroo.payment_method_sepa_direct_debit
+# NOTHING TO DO: the record is not noupdate, so the module update creates it
+NEW payment.method: payment_buckaroo.payment_method_tinka [renamed from payment module] (noupdate switched)
+# NOTHING TO DO: only the noupdate flag changed, the definition is the same
+NEW payment.method: payment_buckaroo.payment_method_trustly
+NEW payment.method: payment_buckaroo.payment_method_visa
+NEW payment.method: payment_buckaroo.payment_method_wechat_pay
+# NOTHING TO DO: the record is not noupdate, so the module update creates it
+NEW payment.method: payment_buckaroo.payment_method_wero [renamed from payment module] (noupdate switched)
+# NOTHING TO DO: only the noupdate flag changed, the definition is the same
+NEW payment.method: payment_buckaroo.payment_method_wero_brand
+# NOTHING TO DO: the record is not noupdate, so the module update creates it
+payment.provider: payment.payment_provider_buckaroo (noupdate switched)
+# DONE: post-migration: load noupdate_changes.xml
diff --git a/openupgrade_scripts/scripts/payment_custom/20.0.2.0/noupdate_changes.xml b/openupgrade_scripts/scripts/payment_custom/20.0.2.0/noupdate_changes.xml
new file mode 100644
index 00000000000..91a90ca1c8c
--- /dev/null
+++ b/openupgrade_scripts/scripts/payment_custom/20.0.2.0/noupdate_changes.xml
@@ -0,0 +1,24 @@
+
+
+
+ custom
+ pay_on_invoice
+
+ Your order is confirmed, you will receive your invoice shortly.
+
+ True
+
+ 50
+
+
+
+
+ Please find the payment details below.
+
+
+ True
+
+
+
+
+
diff --git a/openupgrade_scripts/scripts/payment_custom/20.0.2.0/post-migration.py b/openupgrade_scripts/scripts/payment_custom/20.0.2.0/post-migration.py
new file mode 100644
index 00000000000..6e77ed7cc25
--- /dev/null
+++ b/openupgrade_scripts/scripts/payment_custom/20.0.2.0/post-migration.py
@@ -0,0 +1,21 @@
+# Copyright 2026 Don Kendall
+# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl).
+
+from openupgradelib import openupgrade
+
+
+@openupgrade.migrate()
+def migrate(env, version):
+ openupgrade.load_data(env, "payment_custom", "20.0.2.0/noupdate_changes.xml")
+ openupgrade.delete_record_translations(
+ env.cr,
+ "payment_custom",
+ ["payment.payment_provider_pay_on_invoice"],
+ ["done_msg"],
+ )
+ openupgrade.delete_record_translations(
+ env.cr,
+ "payment_custom",
+ ["payment.payment_provider_transfer"],
+ ["pending_msg"],
+ )
diff --git a/openupgrade_scripts/scripts/payment_custom/20.0.2.0/upgrade_analysis.txt b/openupgrade_scripts/scripts/payment_custom/20.0.2.0/upgrade_analysis.txt
new file mode 100644
index 00000000000..9f76d19a07e
--- /dev/null
+++ b/openupgrade_scripts/scripts/payment_custom/20.0.2.0/upgrade_analysis.txt
@@ -0,0 +1,12 @@
+---Models in module 'payment_custom'---
+---Fields in module 'payment_custom'---
+payment_custom / payment.provider / custom_mode (selection) : selection_keys added: [pay_on_invoice] (most likely nothing to do)
+payment_custom / payment.provider / partner_bank_id (many2one) : NEW relation: res.partner.bank, hasdefault: compute
+---XML records in module 'payment_custom'---
+ir.model.constraint: payment_custom.constraint_payment_provider_custom_providers_setup (changed definition: is now 'False' ('CHECK(custom_mode IS NULL OR (code = 'custom' AND custom_mode IS NOT NULL))'))
+NEW ir.ui.view: payment_custom.custom_payment_transfer_details
+NEW ir.ui.view: payment_custom.payment_provider_kanban
+DEL ir.ui.view: payment_custom.redirect_form
+NEW payment.method: payment_custom.payment_method_pay_on_invoice
+payment.method: payment_custom.payment_method_wire_transfer (noupdate switched)
+payment.provider: payment.payment_provider_transfer (noupdate switched)
diff --git a/openupgrade_scripts/scripts/payment_demo/20.0.2.0/noupdate_changes-transformation.xml b/openupgrade_scripts/scripts/payment_demo/20.0.2.0/noupdate_changes-transformation.xml
new file mode 100644
index 00000000000..3a457ddb372
--- /dev/null
+++ b/openupgrade_scripts/scripts/payment_demo/20.0.2.0/noupdate_changes-transformation.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
diff --git a/openupgrade_scripts/scripts/payment_demo/20.0.2.0/noupdate_changes.xml b/openupgrade_scripts/scripts/payment_demo/20.0.2.0/noupdate_changes.xml
new file mode 100644
index 00000000000..f74383096f3
--- /dev/null
+++ b/openupgrade_scripts/scripts/payment_demo/20.0.2.0/noupdate_changes.xml
@@ -0,0 +1,14 @@
+
+
+
+
+
+
+ True
+
+
+
+ Express Checkout
+
+
+
diff --git a/openupgrade_scripts/scripts/payment_demo/20.0.2.0/post-migration.py b/openupgrade_scripts/scripts/payment_demo/20.0.2.0/post-migration.py
new file mode 100644
index 00000000000..a7ca69099a7
--- /dev/null
+++ b/openupgrade_scripts/scripts/payment_demo/20.0.2.0/post-migration.py
@@ -0,0 +1,20 @@
+# Copyright 2026 Don Kendall
+# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl).
+
+from openupgradelib import openupgrade
+
+
+@openupgrade.migrate()
+def migrate(env, version):
+ openupgrade.load_data(
+ env,
+ "payment_demo",
+ "20.0.2.0/noupdate_changes.xml",
+ xml_transformation_filename="20.0.2.0/noupdate_changes-transformation.xml",
+ )
+ openupgrade.delete_record_translations(
+ env.cr,
+ "payment_demo",
+ ["payment_method_unknown"],
+ ["name"],
+ )
diff --git a/openupgrade_scripts/scripts/payment_demo/20.0.2.0/upgrade_analysis.txt b/openupgrade_scripts/scripts/payment_demo/20.0.2.0/upgrade_analysis.txt
new file mode 100644
index 00000000000..b3fa450ed13
--- /dev/null
+++ b/openupgrade_scripts/scripts/payment_demo/20.0.2.0/upgrade_analysis.txt
@@ -0,0 +1,7 @@
+---Models in module 'payment_demo'---
+---Fields in module 'payment_demo'---
+payment_demo / payment.transaction / capture_manually (boolean) : module is now 'payment' ('payment_demo')
+---XML records in module 'payment_demo'---
+payment.method: payment_demo.payment_method_demo (noupdate switched)
+NEW payment.method: payment_demo.payment_method_unknown [renamed from payment module] (noupdate switched)
+payment.provider: payment.payment_provider_demo (noupdate switched)
diff --git a/openupgrade_scripts/scripts/payment_demo/20.0.2.0/upgrade_analysis_work.txt b/openupgrade_scripts/scripts/payment_demo/20.0.2.0/upgrade_analysis_work.txt
new file mode 100644
index 00000000000..bf8641cbc2a
--- /dev/null
+++ b/openupgrade_scripts/scripts/payment_demo/20.0.2.0/upgrade_analysis_work.txt
@@ -0,0 +1,11 @@
+---Models in module 'payment_demo'---
+---Fields in module 'payment_demo'---
+payment_demo / payment.transaction / capture_manually (boolean) : module is now 'payment' ('payment_demo')
+# NOTHING TO DO: the field only changed owning module, the column is the same
+---XML records in module 'payment_demo'---
+payment.method: payment_demo.payment_method_demo (noupdate switched)
+# DONE: post-migration: load noupdate_changes.xml
+NEW payment.method: payment_demo.payment_method_unknown [renamed from payment module] (noupdate switched)
+# NOTHING TO DO: only the noupdate flag changed, the definition is the same
+payment.provider: payment.payment_provider_demo (noupdate switched)
+# DONE: post-migration: load noupdate_changes.xml
diff --git a/openupgrade_scripts/scripts/payment_flutterwave/20.0.1.0/noupdate_changes.xml b/openupgrade_scripts/scripts/payment_flutterwave/20.0.1.0/noupdate_changes.xml
new file mode 100644
index 00000000000..d5fb3fde6c8
--- /dev/null
+++ b/openupgrade_scripts/scripts/payment_flutterwave/20.0.1.0/noupdate_changes.xml
@@ -0,0 +1,44 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/openupgrade_scripts/scripts/payment_flutterwave/20.0.1.0/post-migration.py b/openupgrade_scripts/scripts/payment_flutterwave/20.0.1.0/post-migration.py
new file mode 100644
index 00000000000..4ceae6e26eb
--- /dev/null
+++ b/openupgrade_scripts/scripts/payment_flutterwave/20.0.1.0/post-migration.py
@@ -0,0 +1,9 @@
+# Copyright 2026 Don Kendall
+# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl).
+
+from openupgradelib import openupgrade
+
+
+@openupgrade.migrate()
+def migrate(env, version):
+ openupgrade.load_data(env, "payment_flutterwave", "20.0.1.0/noupdate_changes.xml")
diff --git a/openupgrade_scripts/scripts/payment_flutterwave/20.0.1.0/upgrade_analysis.txt b/openupgrade_scripts/scripts/payment_flutterwave/20.0.1.0/upgrade_analysis.txt
new file mode 100644
index 00000000000..e6c33bf4d98
--- /dev/null
+++ b/openupgrade_scripts/scripts/payment_flutterwave/20.0.1.0/upgrade_analysis.txt
@@ -0,0 +1,17 @@
+---Models in module 'payment_flutterwave'---
+---Fields in module 'payment_flutterwave'---
+---XML records in module 'payment_flutterwave'---
+DEL ir.ui.view: payment_flutterwave.redirect_form
+NEW payment.method: payment_flutterwave.payment_method_amex
+NEW payment.method: payment_flutterwave.payment_method_bank_account [renamed from payment module] (noupdate switched)
+NEW payment.method: payment_flutterwave.payment_method_bank_transfer [renamed from payment module] (noupdate switched)
+NEW payment.method: payment_flutterwave.payment_method_card
+NEW payment.method: payment_flutterwave.payment_method_credit [renamed from payment module] (noupdate switched)
+NEW payment.method: payment_flutterwave.payment_method_discover
+NEW payment.method: payment_flutterwave.payment_method_mastercard
+NEW payment.method: payment_flutterwave.payment_method_mobile_money [renamed from payment module] (noupdate switched)
+NEW payment.method: payment_flutterwave.payment_method_mpesa [renamed from payment module] (noupdate switched)
+NEW payment.method: payment_flutterwave.payment_method_paypal
+NEW payment.method: payment_flutterwave.payment_method_ussd [renamed from payment module] (noupdate switched)
+NEW payment.method: payment_flutterwave.payment_method_visa
+payment.provider: payment.payment_provider_flutterwave (noupdate switched)
diff --git a/openupgrade_scripts/scripts/payment_flutterwave/20.0.1.0/upgrade_analysis_work.txt b/openupgrade_scripts/scripts/payment_flutterwave/20.0.1.0/upgrade_analysis_work.txt
new file mode 100644
index 00000000000..806b7f55629
--- /dev/null
+++ b/openupgrade_scripts/scripts/payment_flutterwave/20.0.1.0/upgrade_analysis_work.txt
@@ -0,0 +1,28 @@
+---Models in module 'payment_flutterwave'---
+---Fields in module 'payment_flutterwave'---
+---XML records in module 'payment_flutterwave'---
+DEL ir.ui.view: payment_flutterwave.redirect_form
+# NOTHING TO DO: the record is not noupdate, so the module update removes it
+NEW payment.method: payment_flutterwave.payment_method_amex
+# NOTHING TO DO: the record is not noupdate, so the module update creates it
+NEW payment.method: payment_flutterwave.payment_method_bank_account [renamed from payment module] (noupdate switched)
+NEW payment.method: payment_flutterwave.payment_method_bank_transfer [renamed from payment module] (noupdate switched)
+# NOTHING TO DO: only the noupdate flag changed, the definition is the same
+NEW payment.method: payment_flutterwave.payment_method_card
+# NOTHING TO DO: the record is not noupdate, so the module update creates it
+NEW payment.method: payment_flutterwave.payment_method_credit [renamed from payment module] (noupdate switched)
+# NOTHING TO DO: only the noupdate flag changed, the definition is the same
+NEW payment.method: payment_flutterwave.payment_method_discover
+NEW payment.method: payment_flutterwave.payment_method_mastercard
+# NOTHING TO DO: the record is not noupdate, so the module update creates it
+NEW payment.method: payment_flutterwave.payment_method_mobile_money [renamed from payment module] (noupdate switched)
+NEW payment.method: payment_flutterwave.payment_method_mpesa [renamed from payment module] (noupdate switched)
+# NOTHING TO DO: only the noupdate flag changed, the definition is the same
+NEW payment.method: payment_flutterwave.payment_method_paypal
+# NOTHING TO DO: the record is not noupdate, so the module update creates it
+NEW payment.method: payment_flutterwave.payment_method_ussd [renamed from payment module] (noupdate switched)
+# NOTHING TO DO: only the noupdate flag changed, the definition is the same
+NEW payment.method: payment_flutterwave.payment_method_visa
+# NOTHING TO DO: the record is not noupdate, so the module update creates it
+payment.provider: payment.payment_provider_flutterwave (noupdate switched)
+# DONE: post-migration: load noupdate_changes.xml
diff --git a/openupgrade_scripts/scripts/payment_mercado_pago/20.0.1.0/noupdate_changes.xml b/openupgrade_scripts/scripts/payment_mercado_pago/20.0.1.0/noupdate_changes.xml
new file mode 100644
index 00000000000..6c6ef9308de
--- /dev/null
+++ b/openupgrade_scripts/scripts/payment_mercado_pago/20.0.1.0/noupdate_changes.xml
@@ -0,0 +1,77 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ OCA
+
+
+
+
+
+
+
+
+ Shopping
+
+
+
+
+
+
+
+
diff --git a/openupgrade_scripts/scripts/payment_mercado_pago/20.0.1.0/post-migration.py b/openupgrade_scripts/scripts/payment_mercado_pago/20.0.1.0/post-migration.py
new file mode 100644
index 00000000000..e9cf6ee036a
--- /dev/null
+++ b/openupgrade_scripts/scripts/payment_mercado_pago/20.0.1.0/post-migration.py
@@ -0,0 +1,15 @@
+# Copyright 2026 Don Kendall
+# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl).
+
+from openupgradelib import openupgrade
+
+
+@openupgrade.migrate()
+def migrate(env, version):
+ openupgrade.load_data(env, "payment_mercado_pago", "20.0.1.0/noupdate_changes.xml")
+ openupgrade.delete_record_translations(
+ env.cr,
+ "payment_mercado_pago",
+ ["payment_method_oca", "payment_method_shopping"],
+ ["name"],
+ )
diff --git a/openupgrade_scripts/scripts/payment_mercado_pago/20.0.1.0/upgrade_analysis.txt b/openupgrade_scripts/scripts/payment_mercado_pago/20.0.1.0/upgrade_analysis.txt
new file mode 100644
index 00000000000..79b019e1c89
--- /dev/null
+++ b/openupgrade_scripts/scripts/payment_mercado_pago/20.0.1.0/upgrade_analysis.txt
@@ -0,0 +1,29 @@
+---Models in module 'payment_mercado_pago'---
+---Fields in module 'payment_mercado_pago'---
+---XML records in module 'payment_mercado_pago'---
+DEL ir.ui.view: payment_mercado_pago.redirect_form
+NEW payment.method: payment_mercado_pago.payment_method_amex
+NEW payment.method: payment_mercado_pago.payment_method_argencard [renamed from payment module] (noupdate switched)
+NEW payment.method: payment_mercado_pago.payment_method_bank_transfer
+NEW payment.method: payment_mercado_pago.payment_method_cabal [renamed from payment module] (noupdate switched)
+NEW payment.method: payment_mercado_pago.payment_method_caixa [renamed from payment module] (noupdate switched)
+NEW payment.method: payment_mercado_pago.payment_method_card
+NEW payment.method: payment_mercado_pago.payment_method_cencosud [renamed from payment module] (noupdate switched)
+NEW payment.method: payment_mercado_pago.payment_method_codensa [renamed from payment module] (noupdate switched)
+NEW payment.method: payment_mercado_pago.payment_method_cordial [renamed from payment module] (noupdate switched)
+NEW payment.method: payment_mercado_pago.payment_method_cordobesa [renamed from payment module] (noupdate switched)
+NEW payment.method: payment_mercado_pago.payment_method_elo
+NEW payment.method: payment_mercado_pago.payment_method_hipercard
+NEW payment.method: payment_mercado_pago.payment_method_lider [renamed from payment module] (noupdate switched)
+NEW payment.method: payment_mercado_pago.payment_method_magna [renamed from payment module] (noupdate switched)
+NEW payment.method: payment_mercado_pago.payment_method_mastercard
+NEW payment.method: payment_mercado_pago.payment_method_mercado_livre [renamed from payment module] (noupdate switched)
+NEW payment.method: payment_mercado_pago.payment_method_mercado_pago_wallet [renamed from payment module] (noupdate switched)
+NEW payment.method: payment_mercado_pago.payment_method_naranja [renamed from payment module] (noupdate switched)
+NEW payment.method: payment_mercado_pago.payment_method_nativa [renamed from payment module] (noupdate switched)
+NEW payment.method: payment_mercado_pago.payment_method_oca [renamed from payment module] (noupdate switched)
+NEW payment.method: payment_mercado_pago.payment_method_presto [renamed from payment module] (noupdate switched)
+NEW payment.method: payment_mercado_pago.payment_method_shopping [renamed from payment module] (noupdate switched)
+NEW payment.method: payment_mercado_pago.payment_method_tarjeta_mercadopago [renamed from payment module] (noupdate switched)
+NEW payment.method: payment_mercado_pago.payment_method_visa
+payment.provider: payment.payment_provider_mercado_pago (noupdate switched)
diff --git a/openupgrade_scripts/scripts/payment_mercado_pago/20.0.1.0/upgrade_analysis_work.txt b/openupgrade_scripts/scripts/payment_mercado_pago/20.0.1.0/upgrade_analysis_work.txt
new file mode 100644
index 00000000000..8860041c0ff
--- /dev/null
+++ b/openupgrade_scripts/scripts/payment_mercado_pago/20.0.1.0/upgrade_analysis_work.txt
@@ -0,0 +1,42 @@
+---Models in module 'payment_mercado_pago'---
+---Fields in module 'payment_mercado_pago'---
+---XML records in module 'payment_mercado_pago'---
+DEL ir.ui.view: payment_mercado_pago.redirect_form
+# NOTHING TO DO: the record is not noupdate, so the module update removes it
+NEW payment.method: payment_mercado_pago.payment_method_amex
+# NOTHING TO DO: the record is not noupdate, so the module update creates it
+NEW payment.method: payment_mercado_pago.payment_method_argencard [renamed from payment module] (noupdate switched)
+# NOTHING TO DO: only the noupdate flag changed, the definition is the same
+NEW payment.method: payment_mercado_pago.payment_method_bank_transfer
+# NOTHING TO DO: the record is not noupdate, so the module update creates it
+NEW payment.method: payment_mercado_pago.payment_method_cabal [renamed from payment module] (noupdate switched)
+NEW payment.method: payment_mercado_pago.payment_method_caixa [renamed from payment module] (noupdate switched)
+# NOTHING TO DO: only the noupdate flag changed, the definition is the same
+NEW payment.method: payment_mercado_pago.payment_method_card
+# NOTHING TO DO: the record is not noupdate, so the module update creates it
+NEW payment.method: payment_mercado_pago.payment_method_cencosud [renamed from payment module] (noupdate switched)
+NEW payment.method: payment_mercado_pago.payment_method_codensa [renamed from payment module] (noupdate switched)
+NEW payment.method: payment_mercado_pago.payment_method_cordial [renamed from payment module] (noupdate switched)
+NEW payment.method: payment_mercado_pago.payment_method_cordobesa [renamed from payment module] (noupdate switched)
+# NOTHING TO DO: only the noupdate flag changed, the definition is the same
+NEW payment.method: payment_mercado_pago.payment_method_elo
+NEW payment.method: payment_mercado_pago.payment_method_hipercard
+# NOTHING TO DO: the record is not noupdate, so the module update creates it
+NEW payment.method: payment_mercado_pago.payment_method_lider [renamed from payment module] (noupdate switched)
+NEW payment.method: payment_mercado_pago.payment_method_magna [renamed from payment module] (noupdate switched)
+# NOTHING TO DO: only the noupdate flag changed, the definition is the same
+NEW payment.method: payment_mercado_pago.payment_method_mastercard
+# NOTHING TO DO: the record is not noupdate, so the module update creates it
+NEW payment.method: payment_mercado_pago.payment_method_mercado_livre [renamed from payment module] (noupdate switched)
+NEW payment.method: payment_mercado_pago.payment_method_mercado_pago_wallet [renamed from payment module] (noupdate switched)
+NEW payment.method: payment_mercado_pago.payment_method_naranja [renamed from payment module] (noupdate switched)
+NEW payment.method: payment_mercado_pago.payment_method_nativa [renamed from payment module] (noupdate switched)
+NEW payment.method: payment_mercado_pago.payment_method_oca [renamed from payment module] (noupdate switched)
+NEW payment.method: payment_mercado_pago.payment_method_presto [renamed from payment module] (noupdate switched)
+NEW payment.method: payment_mercado_pago.payment_method_shopping [renamed from payment module] (noupdate switched)
+NEW payment.method: payment_mercado_pago.payment_method_tarjeta_mercadopago [renamed from payment module] (noupdate switched)
+# NOTHING TO DO: only the noupdate flag changed, the definition is the same
+NEW payment.method: payment_mercado_pago.payment_method_visa
+# NOTHING TO DO: the record is not noupdate, so the module update creates it
+payment.provider: payment.payment_provider_mercado_pago (noupdate switched)
+# DONE: post-migration: load noupdate_changes.xml
diff --git a/openupgrade_scripts/scripts/payment_mollie/20.0.1.0/noupdate_changes.xml b/openupgrade_scripts/scripts/payment_mollie/20.0.1.0/noupdate_changes.xml
new file mode 100644
index 00000000000..14a87700664
--- /dev/null
+++ b/openupgrade_scripts/scripts/payment_mollie/20.0.1.0/noupdate_changes.xml
@@ -0,0 +1,7 @@
+
+
+
+
+ True
+
+
diff --git a/openupgrade_scripts/scripts/payment_mollie/20.0.1.0/post-migration.py b/openupgrade_scripts/scripts/payment_mollie/20.0.1.0/post-migration.py
new file mode 100644
index 00000000000..188bbca8a0b
--- /dev/null
+++ b/openupgrade_scripts/scripts/payment_mollie/20.0.1.0/post-migration.py
@@ -0,0 +1,9 @@
+# Copyright 2026 Don Kendall
+# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl).
+
+from openupgradelib import openupgrade
+
+
+@openupgrade.migrate()
+def migrate(env, version):
+ openupgrade.load_data(env, "payment_mollie", "20.0.1.0/noupdate_changes.xml")
diff --git a/openupgrade_scripts/scripts/payment_mollie/20.0.1.0/upgrade_analysis.txt b/openupgrade_scripts/scripts/payment_mollie/20.0.1.0/upgrade_analysis.txt
new file mode 100644
index 00000000000..1c80ae92516
--- /dev/null
+++ b/openupgrade_scripts/scripts/payment_mollie/20.0.1.0/upgrade_analysis.txt
@@ -0,0 +1,33 @@
+---Models in module 'payment_mollie'---
+---Fields in module 'payment_mollie'---
+payment_mollie / payment.token / mollie_customer_id (char) : NEW
+---XML records in module 'payment_mollie'---
+DEL ir.ui.view: payment_mollie.redirect_form
+NEW payment.method: payment_mollie.payment_method_amex
+NEW payment.method: payment_mollie.payment_method_apple_pay
+NEW payment.method: payment_mollie.payment_method_bancontact
+NEW payment.method: payment_mollie.payment_method_bank_transfer
+NEW payment.method: payment_mollie.payment_method_belfius
+NEW payment.method: payment_mollie.payment_method_blik
+NEW payment.method: payment_mollie.payment_method_card
+NEW payment.method: payment_mollie.payment_method_cartes_bancaires
+NEW payment.method: payment_mollie.payment_method_discover
+NEW payment.method: payment_mollie.payment_method_eps
+NEW payment.method: payment_mollie.payment_method_google_pay
+NEW payment.method: payment_mollie.payment_method_ideal
+NEW payment.method: payment_mollie.payment_method_ideal_brand
+NEW payment.method: payment_mollie.payment_method_in3
+NEW payment.method: payment_mollie.payment_method_kbc_cbc
+NEW payment.method: payment_mollie.payment_method_klarna
+NEW payment.method: payment_mollie.payment_method_maestro
+NEW payment.method: payment_mollie.payment_method_mastercard
+NEW payment.method: payment_mollie.payment_method_mbway
+NEW payment.method: payment_mollie.payment_method_multibanco
+NEW payment.method: payment_mollie.payment_method_p24
+NEW payment.method: payment_mollie.payment_method_paypal
+NEW payment.method: payment_mollie.payment_method_paysafecard
+NEW payment.method: payment_mollie.payment_method_swish
+NEW payment.method: payment_mollie.payment_method_twint
+NEW payment.method: payment_mollie.payment_method_visa
+NEW payment.method: payment_mollie.payment_method_wero_brand
+payment.provider: payment.payment_provider_mollie (noupdate switched)
diff --git a/openupgrade_scripts/scripts/payment_mollie/20.0.1.0/upgrade_analysis_work.txt b/openupgrade_scripts/scripts/payment_mollie/20.0.1.0/upgrade_analysis_work.txt
new file mode 100644
index 00000000000..8f7be216539
--- /dev/null
+++ b/openupgrade_scripts/scripts/payment_mollie/20.0.1.0/upgrade_analysis_work.txt
@@ -0,0 +1,37 @@
+---Models in module 'payment_mollie'---
+---Fields in module 'payment_mollie'---
+payment_mollie / payment.token / mollie_customer_id (char) : NEW
+# NOTHING TO DO: empty is the right value for existing records
+---XML records in module 'payment_mollie'---
+DEL ir.ui.view: payment_mollie.redirect_form
+# NOTHING TO DO: the record is not noupdate, so the module update removes it
+NEW payment.method: payment_mollie.payment_method_amex
+NEW payment.method: payment_mollie.payment_method_apple_pay
+NEW payment.method: payment_mollie.payment_method_bancontact
+NEW payment.method: payment_mollie.payment_method_bank_transfer
+NEW payment.method: payment_mollie.payment_method_belfius
+NEW payment.method: payment_mollie.payment_method_blik
+NEW payment.method: payment_mollie.payment_method_card
+NEW payment.method: payment_mollie.payment_method_cartes_bancaires
+NEW payment.method: payment_mollie.payment_method_discover
+NEW payment.method: payment_mollie.payment_method_eps
+NEW payment.method: payment_mollie.payment_method_google_pay
+NEW payment.method: payment_mollie.payment_method_ideal
+NEW payment.method: payment_mollie.payment_method_ideal_brand
+NEW payment.method: payment_mollie.payment_method_in3
+NEW payment.method: payment_mollie.payment_method_kbc_cbc
+NEW payment.method: payment_mollie.payment_method_klarna
+NEW payment.method: payment_mollie.payment_method_maestro
+NEW payment.method: payment_mollie.payment_method_mastercard
+NEW payment.method: payment_mollie.payment_method_mbway
+NEW payment.method: payment_mollie.payment_method_multibanco
+NEW payment.method: payment_mollie.payment_method_p24
+NEW payment.method: payment_mollie.payment_method_paypal
+NEW payment.method: payment_mollie.payment_method_paysafecard
+NEW payment.method: payment_mollie.payment_method_swish
+NEW payment.method: payment_mollie.payment_method_twint
+NEW payment.method: payment_mollie.payment_method_visa
+NEW payment.method: payment_mollie.payment_method_wero_brand
+# NOTHING TO DO: the record is not noupdate, so the module update creates it
+payment.provider: payment.payment_provider_mollie (noupdate switched)
+# DONE: post-migration: load noupdate_changes.xml
diff --git a/openupgrade_scripts/scripts/payment_nuvei/20.0.1.0/noupdate_changes.xml b/openupgrade_scripts/scripts/payment_nuvei/20.0.1.0/noupdate_changes.xml
new file mode 100644
index 00000000000..387e4c54a73
--- /dev/null
+++ b/openupgrade_scripts/scripts/payment_nuvei/20.0.1.0/noupdate_changes.xml
@@ -0,0 +1,65 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ partial
+
+
+
+
+
diff --git a/openupgrade_scripts/scripts/payment_nuvei/20.0.1.0/post-migration.py b/openupgrade_scripts/scripts/payment_nuvei/20.0.1.0/post-migration.py
new file mode 100644
index 00000000000..8946d851ca4
--- /dev/null
+++ b/openupgrade_scripts/scripts/payment_nuvei/20.0.1.0/post-migration.py
@@ -0,0 +1,9 @@
+# Copyright 2026 Don Kendall
+# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl).
+
+from openupgradelib import openupgrade
+
+
+@openupgrade.migrate()
+def migrate(env, version):
+ openupgrade.load_data(env, "payment_nuvei", "20.0.1.0/noupdate_changes.xml")
diff --git a/openupgrade_scripts/scripts/payment_nuvei/20.0.1.0/upgrade_analysis.txt b/openupgrade_scripts/scripts/payment_nuvei/20.0.1.0/upgrade_analysis.txt
new file mode 100644
index 00000000000..2dcbcf4ede6
--- /dev/null
+++ b/openupgrade_scripts/scripts/payment_nuvei/20.0.1.0/upgrade_analysis.txt
@@ -0,0 +1,27 @@
+---Models in module 'payment_nuvei'---
+---Fields in module 'payment_nuvei'---
+---XML records in module 'payment_nuvei'---
+DEL ir.ui.view: payment_nuvei.redirect_form
+NEW payment.method: payment_nuvei.payment_method_abitab [renamed from payment module] (noupdate switched)
+NEW payment.method: payment_nuvei.payment_method_amex
+NEW payment.method: payment_nuvei.payment_method_astropay [renamed from payment module] (noupdate switched)
+NEW payment.method: payment_nuvei.payment_method_banco_guayaquil [renamed from payment module] (noupdate switched)
+NEW payment.method: payment_nuvei.payment_method_banco_pichincha [renamed from payment module] (noupdate switched)
+NEW payment.method: payment_nuvei.payment_method_boleto [renamed from payment module] (noupdate switched)
+NEW payment.method: payment_nuvei.payment_method_card
+NEW payment.method: payment_nuvei.payment_method_diners
+NEW payment.method: payment_nuvei.payment_method_discover
+NEW payment.method: payment_nuvei.payment_method_facilito [renamed from payment module] (noupdate switched)
+NEW payment.method: payment_nuvei.payment_method_mastercard
+NEW payment.method: payment_nuvei.payment_method_naranja
+NEW payment.method: payment_nuvei.payment_method_nuvei_local [renamed from payment module] (noupdate switched)
+NEW payment.method: payment_nuvei.payment_method_oxxopay [renamed from payment module] (noupdate switched)
+NEW payment.method: payment_nuvei.payment_method_pix
+NEW payment.method: payment_nuvei.payment_method_pse [renamed from payment module] (noupdate switched)
+NEW payment.method: payment_nuvei.payment_method_redpagos [renamed from payment module] (noupdate switched)
+NEW payment.method: payment_nuvei.payment_method_spei [renamed from payment module] (noupdate switched)
+NEW payment.method: payment_nuvei.payment_method_tarjeta_mercadopago
+NEW payment.method: payment_nuvei.payment_method_unionpay
+NEW payment.method: payment_nuvei.payment_method_visa
+NEW payment.method: payment_nuvei.payment_method_webpay [renamed from payment module] (noupdate switched)
+payment.provider: payment.payment_provider_nuvei (noupdate switched)
diff --git a/openupgrade_scripts/scripts/payment_nuvei/20.0.1.0/upgrade_analysis_work.txt b/openupgrade_scripts/scripts/payment_nuvei/20.0.1.0/upgrade_analysis_work.txt
new file mode 100644
index 00000000000..cf2aa89ecf9
--- /dev/null
+++ b/openupgrade_scripts/scripts/payment_nuvei/20.0.1.0/upgrade_analysis_work.txt
@@ -0,0 +1,40 @@
+---Models in module 'payment_nuvei'---
+---Fields in module 'payment_nuvei'---
+---XML records in module 'payment_nuvei'---
+DEL ir.ui.view: payment_nuvei.redirect_form
+# NOTHING TO DO: the record is not noupdate, so the module update removes it
+NEW payment.method: payment_nuvei.payment_method_abitab [renamed from payment module] (noupdate switched)
+# NOTHING TO DO: only the noupdate flag changed, the definition is the same
+NEW payment.method: payment_nuvei.payment_method_amex
+# NOTHING TO DO: the record is not noupdate, so the module update creates it
+NEW payment.method: payment_nuvei.payment_method_astropay [renamed from payment module] (noupdate switched)
+NEW payment.method: payment_nuvei.payment_method_banco_guayaquil [renamed from payment module] (noupdate switched)
+NEW payment.method: payment_nuvei.payment_method_banco_pichincha [renamed from payment module] (noupdate switched)
+NEW payment.method: payment_nuvei.payment_method_boleto [renamed from payment module] (noupdate switched)
+# NOTHING TO DO: only the noupdate flag changed, the definition is the same
+NEW payment.method: payment_nuvei.payment_method_card
+NEW payment.method: payment_nuvei.payment_method_diners
+NEW payment.method: payment_nuvei.payment_method_discover
+# NOTHING TO DO: the record is not noupdate, so the module update creates it
+NEW payment.method: payment_nuvei.payment_method_facilito [renamed from payment module] (noupdate switched)
+# NOTHING TO DO: only the noupdate flag changed, the definition is the same
+NEW payment.method: payment_nuvei.payment_method_mastercard
+NEW payment.method: payment_nuvei.payment_method_naranja
+# NOTHING TO DO: the record is not noupdate, so the module update creates it
+NEW payment.method: payment_nuvei.payment_method_nuvei_local [renamed from payment module] (noupdate switched)
+NEW payment.method: payment_nuvei.payment_method_oxxopay [renamed from payment module] (noupdate switched)
+# NOTHING TO DO: only the noupdate flag changed, the definition is the same
+NEW payment.method: payment_nuvei.payment_method_pix
+# NOTHING TO DO: the record is not noupdate, so the module update creates it
+NEW payment.method: payment_nuvei.payment_method_pse [renamed from payment module] (noupdate switched)
+NEW payment.method: payment_nuvei.payment_method_redpagos [renamed from payment module] (noupdate switched)
+NEW payment.method: payment_nuvei.payment_method_spei [renamed from payment module] (noupdate switched)
+# NOTHING TO DO: only the noupdate flag changed, the definition is the same
+NEW payment.method: payment_nuvei.payment_method_tarjeta_mercadopago
+NEW payment.method: payment_nuvei.payment_method_unionpay
+NEW payment.method: payment_nuvei.payment_method_visa
+# NOTHING TO DO: the record is not noupdate, so the module update creates it
+NEW payment.method: payment_nuvei.payment_method_webpay [renamed from payment module] (noupdate switched)
+# NOTHING TO DO: only the noupdate flag changed, the definition is the same
+payment.provider: payment.payment_provider_nuvei (noupdate switched)
+# DONE: post-migration: load noupdate_changes.xml
diff --git a/openupgrade_scripts/scripts/payment_paypal/20.0.2.0/noupdate_changes.xml b/openupgrade_scripts/scripts/payment_paypal/20.0.2.0/noupdate_changes.xml
new file mode 100644
index 00000000000..9079903d519
--- /dev/null
+++ b/openupgrade_scripts/scripts/payment_paypal/20.0.2.0/noupdate_changes.xml
@@ -0,0 +1,22 @@
+
+
+
+ True
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/openupgrade_scripts/scripts/payment_paypal/20.0.2.0/post-migration.py b/openupgrade_scripts/scripts/payment_paypal/20.0.2.0/post-migration.py
new file mode 100644
index 00000000000..ab1da51e239
--- /dev/null
+++ b/openupgrade_scripts/scripts/payment_paypal/20.0.2.0/post-migration.py
@@ -0,0 +1,9 @@
+# Copyright 2026 Don Kendall
+# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl).
+
+from openupgradelib import openupgrade
+
+
+@openupgrade.migrate()
+def migrate(env, version):
+ openupgrade.load_data(env, "payment_paypal", "20.0.2.0/noupdate_changes.xml")
diff --git a/openupgrade_scripts/scripts/payment_paypal/20.0.2.0/upgrade_analysis.txt b/openupgrade_scripts/scripts/payment_paypal/20.0.2.0/upgrade_analysis.txt
new file mode 100644
index 00000000000..e726dd8a9ad
--- /dev/null
+++ b/openupgrade_scripts/scripts/payment_paypal/20.0.2.0/upgrade_analysis.txt
@@ -0,0 +1,29 @@
+---Models in module 'payment_paypal'---
+---Fields in module 'payment_paypal'---
+payment_paypal / payment.provider / paypal_account_id (char) : NEW
+payment_paypal / payment.provider / paypal_email_confirmed (boolean): NEW
+payment_paypal / payment.provider / paypal_is_oauth_onboarded (boolean): NEW
+payment_paypal / payment.provider / paypal_payments_receivable (boolean): NEW
+payment_paypal / payment.provider / paypal_seller_nonce (char) : NEW
+payment_paypal / payment.transaction / paypal_setup_token_ref (char) : NEW
+---XML records in module 'payment_paypal'---
+NEW ir.ui.view: payment_paypal.inline_form
+NEW payment.method: payment_paypal.payment_method_amex
+NEW payment.method: payment_paypal.payment_method_bancontact
+NEW payment.method: payment_paypal.payment_method_blik
+NEW payment.method: payment_paypal.payment_method_card
+NEW payment.method: payment_paypal.payment_method_diners
+NEW payment.method: payment_paypal.payment_method_eps
+NEW payment.method: payment_paypal.payment_method_ideal
+NEW payment.method: payment_paypal.payment_method_jcb
+NEW payment.method: payment_paypal.payment_method_maestro
+NEW payment.method: payment_paypal.payment_method_mastercard
+NEW payment.method: payment_paypal.payment_method_multibanco
+NEW payment.method: payment_paypal.payment_method_mybank [renamed from payment module] (noupdate switched)
+NEW payment.method: payment_paypal.payment_method_p24
+NEW payment.method: payment_paypal.payment_method_paypal
+NEW payment.method: payment_paypal.payment_method_paypal_paylater
+NEW payment.method: payment_paypal.payment_method_trustly
+NEW payment.method: payment_paypal.payment_method_venmo [renamed from payment module] (noupdate switched)
+NEW payment.method: payment_paypal.payment_method_visa
+payment.provider: payment.payment_provider_paypal (noupdate switched)
diff --git a/openupgrade_scripts/scripts/payment_paypal/20.0.2.0/upgrade_analysis_work.txt b/openupgrade_scripts/scripts/payment_paypal/20.0.2.0/upgrade_analysis_work.txt
new file mode 100644
index 00000000000..c4dce670519
--- /dev/null
+++ b/openupgrade_scripts/scripts/payment_paypal/20.0.2.0/upgrade_analysis_work.txt
@@ -0,0 +1,36 @@
+---Models in module 'payment_paypal'---
+---Fields in module 'payment_paypal'---
+payment_paypal / payment.provider / paypal_account_id (char) : NEW
+payment_paypal / payment.provider / paypal_email_confirmed (boolean): NEW
+payment_paypal / payment.provider / paypal_is_oauth_onboarded (boolean): NEW
+payment_paypal / payment.provider / paypal_payments_receivable (boolean): NEW
+payment_paypal / payment.provider / paypal_seller_nonce (char) : NEW
+payment_paypal / payment.transaction / paypal_setup_token_ref (char) : NEW
+# NOTHING TO DO: empty is the right value for existing records
+---XML records in module 'payment_paypal'---
+NEW ir.ui.view: payment_paypal.inline_form
+NEW payment.method: payment_paypal.payment_method_amex
+NEW payment.method: payment_paypal.payment_method_bancontact
+NEW payment.method: payment_paypal.payment_method_blik
+NEW payment.method: payment_paypal.payment_method_card
+NEW payment.method: payment_paypal.payment_method_diners
+NEW payment.method: payment_paypal.payment_method_eps
+NEW payment.method: payment_paypal.payment_method_ideal
+NEW payment.method: payment_paypal.payment_method_jcb
+NEW payment.method: payment_paypal.payment_method_maestro
+NEW payment.method: payment_paypal.payment_method_mastercard
+NEW payment.method: payment_paypal.payment_method_multibanco
+# NOTHING TO DO: the record is not noupdate, so the module update creates it
+NEW payment.method: payment_paypal.payment_method_mybank [renamed from payment module] (noupdate switched)
+# NOTHING TO DO: only the noupdate flag changed, the definition is the same
+NEW payment.method: payment_paypal.payment_method_p24
+NEW payment.method: payment_paypal.payment_method_paypal
+NEW payment.method: payment_paypal.payment_method_paypal_paylater
+NEW payment.method: payment_paypal.payment_method_trustly
+# NOTHING TO DO: the record is not noupdate, so the module update creates it
+NEW payment.method: payment_paypal.payment_method_venmo [renamed from payment module] (noupdate switched)
+# NOTHING TO DO: only the noupdate flag changed, the definition is the same
+NEW payment.method: payment_paypal.payment_method_visa
+# NOTHING TO DO: the record is not noupdate, so the module update creates it
+payment.provider: payment.payment_provider_paypal (noupdate switched)
+# DONE: post-migration: load noupdate_changes.xml
diff --git a/openupgrade_scripts/scripts/payment_razorpay/20.0.1.0/noupdate_changes.xml b/openupgrade_scripts/scripts/payment_razorpay/20.0.1.0/noupdate_changes.xml
new file mode 100644
index 00000000000..59396b10549
--- /dev/null
+++ b/openupgrade_scripts/scripts/payment_razorpay/20.0.1.0/noupdate_changes.xml
@@ -0,0 +1,22 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/openupgrade_scripts/scripts/payment_razorpay/20.0.1.0/post-migration.py b/openupgrade_scripts/scripts/payment_razorpay/20.0.1.0/post-migration.py
new file mode 100644
index 00000000000..f6cbbe507d0
--- /dev/null
+++ b/openupgrade_scripts/scripts/payment_razorpay/20.0.1.0/post-migration.py
@@ -0,0 +1,9 @@
+# Copyright 2026 Don Kendall
+# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl).
+
+from openupgradelib import openupgrade
+
+
+@openupgrade.migrate()
+def migrate(env, version):
+ openupgrade.load_data(env, "payment_razorpay", "20.0.1.0/noupdate_changes.xml")
diff --git a/openupgrade_scripts/scripts/payment_razorpay/20.0.1.0/upgrade_analysis.txt b/openupgrade_scripts/scripts/payment_razorpay/20.0.1.0/upgrade_analysis.txt
new file mode 100644
index 00000000000..da7d1d2859b
--- /dev/null
+++ b/openupgrade_scripts/scripts/payment_razorpay/20.0.1.0/upgrade_analysis.txt
@@ -0,0 +1,19 @@
+---Models in module 'payment_razorpay'---
+---Fields in module 'payment_razorpay'---
+---XML records in module 'payment_razorpay'---
+NEW payment.method: payment_razorpay.payment_method_amex
+NEW payment.method: payment_razorpay.payment_method_card
+NEW payment.method: payment_razorpay.payment_method_diners
+NEW payment.method: payment_razorpay.payment_method_discover
+NEW payment.method: payment_razorpay.payment_method_emi_india [renamed from payment module] (noupdate switched)
+NEW payment.method: payment_razorpay.payment_method_fpx
+NEW payment.method: payment_razorpay.payment_method_maestro
+NEW payment.method: payment_razorpay.payment_method_mastercard
+NEW payment.method: payment_razorpay.payment_method_netbanking [renamed from payment module] (noupdate switched)
+NEW payment.method: payment_razorpay.payment_method_paylater_india [renamed from payment module] (noupdate switched)
+NEW payment.method: payment_razorpay.payment_method_paynow
+NEW payment.method: payment_razorpay.payment_method_rupay [renamed from payment module] (noupdate switched)
+NEW payment.method: payment_razorpay.payment_method_upi
+NEW payment.method: payment_razorpay.payment_method_visa
+NEW payment.method: payment_razorpay.payment_method_wallets_india
+payment.provider: payment.payment_provider_razorpay (noupdate switched)
diff --git a/openupgrade_scripts/scripts/payment_razorpay/20.0.1.0/upgrade_analysis_work.txt b/openupgrade_scripts/scripts/payment_razorpay/20.0.1.0/upgrade_analysis_work.txt
new file mode 100644
index 00000000000..8d57a7694cc
--- /dev/null
+++ b/openupgrade_scripts/scripts/payment_razorpay/20.0.1.0/upgrade_analysis_work.txt
@@ -0,0 +1,27 @@
+---Models in module 'payment_razorpay'---
+---Fields in module 'payment_razorpay'---
+---XML records in module 'payment_razorpay'---
+NEW payment.method: payment_razorpay.payment_method_amex
+NEW payment.method: payment_razorpay.payment_method_card
+NEW payment.method: payment_razorpay.payment_method_diners
+NEW payment.method: payment_razorpay.payment_method_discover
+# NOTHING TO DO: the record is not noupdate, so the module update creates it
+NEW payment.method: payment_razorpay.payment_method_emi_india [renamed from payment module] (noupdate switched)
+# NOTHING TO DO: only the noupdate flag changed, the definition is the same
+NEW payment.method: payment_razorpay.payment_method_fpx
+NEW payment.method: payment_razorpay.payment_method_maestro
+NEW payment.method: payment_razorpay.payment_method_mastercard
+# NOTHING TO DO: the record is not noupdate, so the module update creates it
+NEW payment.method: payment_razorpay.payment_method_netbanking [renamed from payment module] (noupdate switched)
+NEW payment.method: payment_razorpay.payment_method_paylater_india [renamed from payment module] (noupdate switched)
+# NOTHING TO DO: only the noupdate flag changed, the definition is the same
+NEW payment.method: payment_razorpay.payment_method_paynow
+# NOTHING TO DO: the record is not noupdate, so the module update creates it
+NEW payment.method: payment_razorpay.payment_method_rupay [renamed from payment module] (noupdate switched)
+# NOTHING TO DO: only the noupdate flag changed, the definition is the same
+NEW payment.method: payment_razorpay.payment_method_upi
+NEW payment.method: payment_razorpay.payment_method_visa
+NEW payment.method: payment_razorpay.payment_method_wallets_india
+# NOTHING TO DO: the record is not noupdate, so the module update creates it
+payment.provider: payment.payment_provider_razorpay (noupdate switched)
+# NOTHING TO DO: only the noupdate flag changed, the definition is the same
diff --git a/openupgrade_scripts/scripts/payment_stripe/20.0.2.0/noupdate_changes.xml b/openupgrade_scripts/scripts/payment_stripe/20.0.2.0/noupdate_changes.xml
new file mode 100644
index 00000000000..5b5a21c1e4a
--- /dev/null
+++ b/openupgrade_scripts/scripts/payment_stripe/20.0.2.0/noupdate_changes.xml
@@ -0,0 +1,24 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ True
+
+
+
+
+
diff --git a/openupgrade_scripts/scripts/payment_stripe/20.0.2.0/post-migration.py b/openupgrade_scripts/scripts/payment_stripe/20.0.2.0/post-migration.py
new file mode 100644
index 00000000000..ac0cacdfd44
--- /dev/null
+++ b/openupgrade_scripts/scripts/payment_stripe/20.0.2.0/post-migration.py
@@ -0,0 +1,9 @@
+# Copyright 2026 Don Kendall
+# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl).
+
+from openupgradelib import openupgrade
+
+
+@openupgrade.migrate()
+def migrate(env, version):
+ openupgrade.load_data(env, "payment_stripe", "20.0.2.0/noupdate_changes.xml")
diff --git a/openupgrade_scripts/scripts/payment_stripe/20.0.2.0/upgrade_analysis.txt b/openupgrade_scripts/scripts/payment_stripe/20.0.2.0/upgrade_analysis.txt
new file mode 100644
index 00000000000..8ac44e72423
--- /dev/null
+++ b/openupgrade_scripts/scripts/payment_stripe/20.0.2.0/upgrade_analysis.txt
@@ -0,0 +1,52 @@
+---Models in module 'payment_stripe'---
+---Fields in module 'payment_stripe'---
+---XML records in module 'payment_stripe'---
+DEL ir.ui.view: payment_stripe.no_pms_available_warning
+NEW payment.method: payment_stripe.payment_method_ach_direct_debit
+NEW payment.method: payment_stripe.payment_method_acss_direct_debit
+NEW payment.method: payment_stripe.payment_method_affirm
+NEW payment.method: payment_stripe.payment_method_afterpay
+NEW payment.method: payment_stripe.payment_method_alipay
+NEW payment.method: payment_stripe.payment_method_alma
+NEW payment.method: payment_stripe.payment_method_amazon_pay [renamed from payment module] (noupdate switched)
+NEW payment.method: payment_stripe.payment_method_amex
+NEW payment.method: payment_stripe.payment_method_apple_pay
+NEW payment.method: payment_stripe.payment_method_bacs_direct_debit
+NEW payment.method: payment_stripe.payment_method_bancontact
+NEW payment.method: payment_stripe.payment_method_becs_direct_debit [renamed from payment module] (noupdate switched)
+NEW payment.method: payment_stripe.payment_method_boleto
+NEW payment.method: payment_stripe.payment_method_card
+NEW payment.method: payment_stripe.payment_method_cartes_bancaires
+NEW payment.method: payment_stripe.payment_method_cash_app_pay
+NEW payment.method: payment_stripe.payment_method_clearpay
+NEW payment.method: payment_stripe.payment_method_diners
+NEW payment.method: payment_stripe.payment_method_discover
+NEW payment.method: payment_stripe.payment_method_eps
+NEW payment.method: payment_stripe.payment_method_fpx
+NEW payment.method: payment_stripe.payment_method_google_pay
+NEW payment.method: payment_stripe.payment_method_grabpay [renamed from payment module] (noupdate switched)
+NEW payment.method: payment_stripe.payment_method_ideal
+NEW payment.method: payment_stripe.payment_method_ideal_brand
+NEW payment.method: payment_stripe.payment_method_jcb
+NEW payment.method: payment_stripe.payment_method_klarna
+NEW payment.method: payment_stripe.payment_method_mastercard
+NEW payment.method: payment_stripe.payment_method_mobile_pay
+NEW payment.method: payment_stripe.payment_method_multibanco
+NEW payment.method: payment_stripe.payment_method_p24
+NEW payment.method: payment_stripe.payment_method_paynow
+NEW payment.method: payment_stripe.payment_method_paypal
+NEW payment.method: payment_stripe.payment_method_pix
+NEW payment.method: payment_stripe.payment_method_promptpay
+NEW payment.method: payment_stripe.payment_method_revolut_pay [renamed from payment module] (noupdate switched)
+NEW payment.method: payment_stripe.payment_method_satispay
+NEW payment.method: payment_stripe.payment_method_sepa_direct_debit
+NEW payment.method: payment_stripe.payment_method_swish
+NEW payment.method: payment_stripe.payment_method_twint
+NEW payment.method: payment_stripe.payment_method_unionpay
+NEW payment.method: payment_stripe.payment_method_unknown
+NEW payment.method: payment_stripe.payment_method_upi
+NEW payment.method: payment_stripe.payment_method_visa
+NEW payment.method: payment_stripe.payment_method_wechat_pay
+NEW payment.method: payment_stripe.payment_method_wero_brand
+NEW payment.method: payment_stripe.payment_method_zip
+payment.provider: payment.payment_provider_stripe (noupdate switched)
diff --git a/openupgrade_scripts/scripts/payment_stripe/20.0.2.0/upgrade_analysis_work.txt b/openupgrade_scripts/scripts/payment_stripe/20.0.2.0/upgrade_analysis_work.txt
new file mode 100644
index 00000000000..e8ee8b41be5
--- /dev/null
+++ b/openupgrade_scripts/scripts/payment_stripe/20.0.2.0/upgrade_analysis_work.txt
@@ -0,0 +1,63 @@
+---Models in module 'payment_stripe'---
+---Fields in module 'payment_stripe'---
+---XML records in module 'payment_stripe'---
+DEL ir.ui.view: payment_stripe.no_pms_available_warning
+# NOTHING TO DO: the record is not noupdate, so the module update removes it
+NEW payment.method: payment_stripe.payment_method_ach_direct_debit
+NEW payment.method: payment_stripe.payment_method_acss_direct_debit
+NEW payment.method: payment_stripe.payment_method_affirm
+NEW payment.method: payment_stripe.payment_method_afterpay
+NEW payment.method: payment_stripe.payment_method_alipay
+NEW payment.method: payment_stripe.payment_method_alma
+# NOTHING TO DO: the record is not noupdate, so the module update creates it
+NEW payment.method: payment_stripe.payment_method_amazon_pay [renamed from payment module] (noupdate switched)
+# NOTHING TO DO: only the noupdate flag changed, the definition is the same
+NEW payment.method: payment_stripe.payment_method_amex
+NEW payment.method: payment_stripe.payment_method_apple_pay
+NEW payment.method: payment_stripe.payment_method_bacs_direct_debit
+NEW payment.method: payment_stripe.payment_method_bancontact
+# NOTHING TO DO: the record is not noupdate, so the module update creates it
+NEW payment.method: payment_stripe.payment_method_becs_direct_debit [renamed from payment module] (noupdate switched)
+# NOTHING TO DO: only the noupdate flag changed, the definition is the same
+NEW payment.method: payment_stripe.payment_method_boleto
+NEW payment.method: payment_stripe.payment_method_card
+NEW payment.method: payment_stripe.payment_method_cartes_bancaires
+NEW payment.method: payment_stripe.payment_method_cash_app_pay
+NEW payment.method: payment_stripe.payment_method_clearpay
+NEW payment.method: payment_stripe.payment_method_diners
+NEW payment.method: payment_stripe.payment_method_discover
+NEW payment.method: payment_stripe.payment_method_eps
+NEW payment.method: payment_stripe.payment_method_fpx
+NEW payment.method: payment_stripe.payment_method_google_pay
+# NOTHING TO DO: the record is not noupdate, so the module update creates it
+NEW payment.method: payment_stripe.payment_method_grabpay [renamed from payment module] (noupdate switched)
+# NOTHING TO DO: only the noupdate flag changed, the definition is the same
+NEW payment.method: payment_stripe.payment_method_ideal
+NEW payment.method: payment_stripe.payment_method_ideal_brand
+NEW payment.method: payment_stripe.payment_method_jcb
+NEW payment.method: payment_stripe.payment_method_klarna
+NEW payment.method: payment_stripe.payment_method_mastercard
+NEW payment.method: payment_stripe.payment_method_mobile_pay
+NEW payment.method: payment_stripe.payment_method_multibanco
+NEW payment.method: payment_stripe.payment_method_p24
+NEW payment.method: payment_stripe.payment_method_paynow
+NEW payment.method: payment_stripe.payment_method_paypal
+NEW payment.method: payment_stripe.payment_method_pix
+NEW payment.method: payment_stripe.payment_method_promptpay
+# NOTHING TO DO: the record is not noupdate, so the module update creates it
+NEW payment.method: payment_stripe.payment_method_revolut_pay [renamed from payment module] (noupdate switched)
+# NOTHING TO DO: only the noupdate flag changed, the definition is the same
+NEW payment.method: payment_stripe.payment_method_satispay
+NEW payment.method: payment_stripe.payment_method_sepa_direct_debit
+NEW payment.method: payment_stripe.payment_method_swish
+NEW payment.method: payment_stripe.payment_method_twint
+NEW payment.method: payment_stripe.payment_method_unionpay
+NEW payment.method: payment_stripe.payment_method_unknown
+NEW payment.method: payment_stripe.payment_method_upi
+NEW payment.method: payment_stripe.payment_method_visa
+NEW payment.method: payment_stripe.payment_method_wechat_pay
+NEW payment.method: payment_stripe.payment_method_wero_brand
+NEW payment.method: payment_stripe.payment_method_zip
+# NOTHING TO DO: the record is not noupdate, so the module update creates it
+payment.provider: payment.payment_provider_stripe (noupdate switched)
+# NOTHING TO DO: only the noupdate flag changed, the definition is the same
diff --git a/openupgrade_scripts/scripts/payment_worldline/20.0.1.0/noupdate_changes.xml b/openupgrade_scripts/scripts/payment_worldline/20.0.1.0/noupdate_changes.xml
new file mode 100644
index 00000000000..a4a86495495
--- /dev/null
+++ b/openupgrade_scripts/scripts/payment_worldline/20.0.1.0/noupdate_changes.xml
@@ -0,0 +1,38 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/openupgrade_scripts/scripts/payment_worldline/20.0.1.0/post-migration.py b/openupgrade_scripts/scripts/payment_worldline/20.0.1.0/post-migration.py
new file mode 100644
index 00000000000..6821fd28a2a
--- /dev/null
+++ b/openupgrade_scripts/scripts/payment_worldline/20.0.1.0/post-migration.py
@@ -0,0 +1,9 @@
+# Copyright 2026 Don Kendall
+# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl).
+
+from openupgradelib import openupgrade
+
+
+@openupgrade.migrate()
+def migrate(env, version):
+ openupgrade.load_data(env, "payment_worldline", "20.0.1.0/noupdate_changes.xml")
diff --git a/openupgrade_scripts/scripts/payment_worldline/20.0.1.0/upgrade_analysis.txt b/openupgrade_scripts/scripts/payment_worldline/20.0.1.0/upgrade_analysis.txt
new file mode 100644
index 00000000000..c90f370e800
--- /dev/null
+++ b/openupgrade_scripts/scripts/payment_worldline/20.0.1.0/upgrade_analysis.txt
@@ -0,0 +1,40 @@
+---Models in module 'payment_worldline'---
+---Fields in module 'payment_worldline'---
+---XML records in module 'payment_worldline'---
+DEL ir.ui.view: payment_worldline.redirect_form
+NEW payment.method: payment_worldline.payment_method_alipay_plus [renamed from payment module] (noupdate switched)
+NEW payment.method: payment_worldline.payment_method_amex
+NEW payment.method: payment_worldline.payment_method_bancontact
+NEW payment.method: payment_worldline.payment_method_bizum
+NEW payment.method: payment_worldline.payment_method_card
+NEW payment.method: payment_worldline.payment_method_cartes_bancaires
+NEW payment.method: payment_worldline.payment_method_cirrus [renamed from payment module] (noupdate switched)
+NEW payment.method: payment_worldline.payment_method_cofidis [renamed from payment module] (noupdate switched)
+NEW payment.method: payment_worldline.payment_method_dankort
+NEW payment.method: payment_worldline.payment_method_diners
+NEW payment.method: payment_worldline.payment_method_discover
+NEW payment.method: payment_worldline.payment_method_eps
+NEW payment.method: payment_worldline.payment_method_floa_bank [renamed from payment module] (noupdate switched)
+NEW payment.method: payment_worldline.payment_method_ideal
+NEW payment.method: payment_worldline.payment_method_ideal_brand
+NEW payment.method: payment_worldline.payment_method_jcb
+NEW payment.method: payment_worldline.payment_method_klarna
+NEW payment.method: payment_worldline.payment_method_maestro
+NEW payment.method: payment_worldline.payment_method_mastercard
+NEW payment.method: payment_worldline.payment_method_mbway
+NEW payment.method: payment_worldline.payment_method_meeza
+NEW payment.method: payment_worldline.payment_method_multibanco
+NEW payment.method: payment_worldline.payment_method_naps
+NEW payment.method: payment_worldline.payment_method_omannet
+NEW payment.method: payment_worldline.payment_method_p24
+NEW payment.method: payment_worldline.payment_method_paypal
+NEW payment.method: payment_worldline.payment_method_post_finance [renamed from payment module] (noupdate switched)
+NEW payment.method: payment_worldline.payment_method_rupay
+NEW payment.method: payment_worldline.payment_method_troy
+NEW payment.method: payment_worldline.payment_method_twint
+NEW payment.method: payment_worldline.payment_method_unionpay
+NEW payment.method: payment_worldline.payment_method_visa
+NEW payment.method: payment_worldline.payment_method_wechat_pay
+NEW payment.method: payment_worldline.payment_method_wero
+NEW payment.method: payment_worldline.payment_method_wero_brand
+payment.provider: payment.payment_provider_worldline (noupdate switched)
diff --git a/openupgrade_scripts/scripts/payment_worldline/20.0.1.0/upgrade_analysis_work.txt b/openupgrade_scripts/scripts/payment_worldline/20.0.1.0/upgrade_analysis_work.txt
new file mode 100644
index 00000000000..3fee98a2802
--- /dev/null
+++ b/openupgrade_scripts/scripts/payment_worldline/20.0.1.0/upgrade_analysis_work.txt
@@ -0,0 +1,50 @@
+---Models in module 'payment_worldline'---
+---Fields in module 'payment_worldline'---
+---XML records in module 'payment_worldline'---
+DEL ir.ui.view: payment_worldline.redirect_form
+# NOTHING TO DO: the record is not noupdate, so the module update removes it
+NEW payment.method: payment_worldline.payment_method_alipay_plus [renamed from payment module] (noupdate switched)
+# NOTHING TO DO: only the noupdate flag changed, the definition is the same
+NEW payment.method: payment_worldline.payment_method_amex
+NEW payment.method: payment_worldline.payment_method_bancontact
+NEW payment.method: payment_worldline.payment_method_bizum
+NEW payment.method: payment_worldline.payment_method_card
+NEW payment.method: payment_worldline.payment_method_cartes_bancaires
+# NOTHING TO DO: the record is not noupdate, so the module update creates it
+NEW payment.method: payment_worldline.payment_method_cirrus [renamed from payment module] (noupdate switched)
+NEW payment.method: payment_worldline.payment_method_cofidis [renamed from payment module] (noupdate switched)
+# NOTHING TO DO: only the noupdate flag changed, the definition is the same
+NEW payment.method: payment_worldline.payment_method_dankort
+NEW payment.method: payment_worldline.payment_method_diners
+NEW payment.method: payment_worldline.payment_method_discover
+NEW payment.method: payment_worldline.payment_method_eps
+# NOTHING TO DO: the record is not noupdate, so the module update creates it
+NEW payment.method: payment_worldline.payment_method_floa_bank [renamed from payment module] (noupdate switched)
+# NOTHING TO DO: only the noupdate flag changed, the definition is the same
+NEW payment.method: payment_worldline.payment_method_ideal
+NEW payment.method: payment_worldline.payment_method_ideal_brand
+NEW payment.method: payment_worldline.payment_method_jcb
+NEW payment.method: payment_worldline.payment_method_klarna
+NEW payment.method: payment_worldline.payment_method_maestro
+NEW payment.method: payment_worldline.payment_method_mastercard
+NEW payment.method: payment_worldline.payment_method_mbway
+NEW payment.method: payment_worldline.payment_method_meeza
+NEW payment.method: payment_worldline.payment_method_multibanco
+NEW payment.method: payment_worldline.payment_method_naps
+NEW payment.method: payment_worldline.payment_method_omannet
+NEW payment.method: payment_worldline.payment_method_p24
+NEW payment.method: payment_worldline.payment_method_paypal
+# NOTHING TO DO: the record is not noupdate, so the module update creates it
+NEW payment.method: payment_worldline.payment_method_post_finance [renamed from payment module] (noupdate switched)
+# NOTHING TO DO: only the noupdate flag changed, the definition is the same
+NEW payment.method: payment_worldline.payment_method_rupay
+NEW payment.method: payment_worldline.payment_method_troy
+NEW payment.method: payment_worldline.payment_method_twint
+NEW payment.method: payment_worldline.payment_method_unionpay
+NEW payment.method: payment_worldline.payment_method_visa
+NEW payment.method: payment_worldline.payment_method_wechat_pay
+NEW payment.method: payment_worldline.payment_method_wero
+NEW payment.method: payment_worldline.payment_method_wero_brand
+# NOTHING TO DO: the record is not noupdate, so the module update creates it
+payment.provider: payment.payment_provider_worldline (noupdate switched)
+# DONE: post-migration: load noupdate_changes.xml
diff --git a/openupgrade_scripts/scripts/payment_xendit/20.0.1.0/noupdate_changes.xml b/openupgrade_scripts/scripts/payment_xendit/20.0.1.0/noupdate_changes.xml
new file mode 100644
index 00000000000..3a46ec70f0e
--- /dev/null
+++ b/openupgrade_scripts/scripts/payment_xendit/20.0.1.0/noupdate_changes.xml
@@ -0,0 +1,169 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ kfh
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/openupgrade_scripts/scripts/payment_xendit/20.0.1.0/post-migration.py b/openupgrade_scripts/scripts/payment_xendit/20.0.1.0/post-migration.py
new file mode 100644
index 00000000000..05ca2313464
--- /dev/null
+++ b/openupgrade_scripts/scripts/payment_xendit/20.0.1.0/post-migration.py
@@ -0,0 +1,9 @@
+# Copyright 2026 Don Kendall
+# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl).
+
+from openupgradelib import openupgrade
+
+
+@openupgrade.migrate()
+def migrate(env, version):
+ openupgrade.load_data(env, "payment_xendit", "20.0.1.0/noupdate_changes.xml")
diff --git a/openupgrade_scripts/scripts/payment_xendit/20.0.1.0/upgrade_analysis.txt b/openupgrade_scripts/scripts/payment_xendit/20.0.1.0/upgrade_analysis.txt
new file mode 100644
index 00000000000..65d06fdb60f
--- /dev/null
+++ b/openupgrade_scripts/scripts/payment_xendit/20.0.1.0/upgrade_analysis.txt
@@ -0,0 +1,52 @@
+---Models in module 'payment_xendit'---
+---Fields in module 'payment_xendit'---
+---XML records in module 'payment_xendit'---
+DEL ir.ui.view: payment_xendit.redirect_form
+NEW payment.method: payment_xendit.payment_method_7eleven [renamed from payment module] (noupdate switched)
+NEW payment.method: payment_xendit.payment_method_akulaku [renamed from payment module] (noupdate switched)
+NEW payment.method: payment_xendit.payment_method_amex
+NEW payment.method: payment_xendit.payment_method_appota [renamed from payment module] (noupdate switched)
+NEW payment.method: payment_xendit.payment_method_bangkok_bank
+NEW payment.method: payment_xendit.payment_method_bank_bca [renamed from payment module] (noupdate switched)
+NEW payment.method: payment_xendit.payment_method_bank_permata [renamed from payment module] (noupdate switched)
+NEW payment.method: payment_xendit.payment_method_billease [renamed from payment module] (noupdate switched)
+NEW payment.method: payment_xendit.payment_method_bni [renamed from payment module] (noupdate switched)
+NEW payment.method: payment_xendit.payment_method_bri [renamed from payment module] (noupdate switched)
+NEW payment.method: payment_xendit.payment_method_bsi [renamed from payment module] (noupdate switched)
+NEW payment.method: payment_xendit.payment_method_card
+NEW payment.method: payment_xendit.payment_method_cashalo [renamed from payment module] (noupdate switched)
+NEW payment.method: payment_xendit.payment_method_cebuana [renamed from payment module] (noupdate switched)
+NEW payment.method: payment_xendit.payment_method_cimb_niaga [renamed from payment module] (noupdate switched)
+NEW payment.method: payment_xendit.payment_method_dana
+NEW payment.method: payment_xendit.payment_method_fpx
+NEW payment.method: payment_xendit.payment_method_gcash
+NEW payment.method: payment_xendit.payment_method_grabpay
+NEW payment.method: payment_xendit.payment_method_jcb
+NEW payment.method: payment_xendit.payment_method_jeniuspay [renamed from payment module] (noupdate switched)
+NEW payment.method: payment_xendit.payment_method_kfh [renamed from payment module] (noupdate switched)
+NEW payment.method: payment_xendit.payment_method_kredivo [renamed from payment module] (noupdate switched)
+NEW payment.method: payment_xendit.payment_method_krungthai_bank
+NEW payment.method: payment_xendit.payment_method_linepay
+NEW payment.method: payment_xendit.payment_method_linkaja [renamed from payment module] (noupdate switched)
+NEW payment.method: payment_xendit.payment_method_mandiri [renamed from payment module] (noupdate switched)
+NEW payment.method: payment_xendit.payment_method_mastercard
+NEW payment.method: payment_xendit.payment_method_maya
+NEW payment.method: payment_xendit.payment_method_ovo [renamed from payment module] (noupdate switched)
+NEW payment.method: payment_xendit.payment_method_paynow
+NEW payment.method: payment_xendit.payment_method_promptpay
+NEW payment.method: payment_xendit.payment_method_qris [renamed from payment module] (noupdate switched)
+NEW payment.method: payment_xendit.payment_method_scb
+NEW payment.method: payment_xendit.payment_method_shopeepay [renamed from payment module] (noupdate switched)
+NEW payment.method: payment_xendit.payment_method_touch_n_go
+NEW payment.method: payment_xendit.payment_method_truemoney
+NEW payment.method: payment_xendit.payment_method_unionpay
+NEW payment.method: payment_xendit.payment_method_uob
+NEW payment.method: payment_xendit.payment_method_vietcapital [renamed from payment module] (noupdate switched)
+NEW payment.method: payment_xendit.payment_method_viettelpay [renamed from payment module] (noupdate switched)
+NEW payment.method: payment_xendit.payment_method_visa
+NEW payment.method: payment_xendit.payment_method_vnptwallet [renamed from payment module] (noupdate switched)
+NEW payment.method: payment_xendit.payment_method_vpbank [renamed from payment module] (noupdate switched)
+NEW payment.method: payment_xendit.payment_method_wechat_pay
+NEW payment.method: payment_xendit.payment_method_woori [renamed from payment module] (noupdate switched)
+NEW payment.method: payment_xendit.payment_method_zalopay [renamed from payment module] (noupdate switched)
+payment.provider: payment.payment_provider_xendit (noupdate switched)
diff --git a/openupgrade_scripts/scripts/payment_xendit/20.0.1.0/upgrade_analysis_work.txt b/openupgrade_scripts/scripts/payment_xendit/20.0.1.0/upgrade_analysis_work.txt
new file mode 100644
index 00000000000..a38e019d049
--- /dev/null
+++ b/openupgrade_scripts/scripts/payment_xendit/20.0.1.0/upgrade_analysis_work.txt
@@ -0,0 +1,77 @@
+---Models in module 'payment_xendit'---
+---Fields in module 'payment_xendit'---
+---XML records in module 'payment_xendit'---
+DEL ir.ui.view: payment_xendit.redirect_form
+# NOTHING TO DO: the record is not noupdate, so the module update removes it
+NEW payment.method: payment_xendit.payment_method_7eleven [renamed from payment module] (noupdate switched)
+NEW payment.method: payment_xendit.payment_method_akulaku [renamed from payment module] (noupdate switched)
+# NOTHING TO DO: only the noupdate flag changed, the definition is the same
+NEW payment.method: payment_xendit.payment_method_amex
+# NOTHING TO DO: the record is not noupdate, so the module update creates it
+NEW payment.method: payment_xendit.payment_method_appota [renamed from payment module] (noupdate switched)
+# NOTHING TO DO: only the noupdate flag changed, the definition is the same
+NEW payment.method: payment_xendit.payment_method_bangkok_bank
+# NOTHING TO DO: the record is not noupdate, so the module update creates it
+NEW payment.method: payment_xendit.payment_method_bank_bca [renamed from payment module] (noupdate switched)
+NEW payment.method: payment_xendit.payment_method_bank_permata [renamed from payment module] (noupdate switched)
+NEW payment.method: payment_xendit.payment_method_billease [renamed from payment module] (noupdate switched)
+NEW payment.method: payment_xendit.payment_method_bni [renamed from payment module] (noupdate switched)
+NEW payment.method: payment_xendit.payment_method_bri [renamed from payment module] (noupdate switched)
+NEW payment.method: payment_xendit.payment_method_bsi [renamed from payment module] (noupdate switched)
+# NOTHING TO DO: only the noupdate flag changed, the definition is the same
+NEW payment.method: payment_xendit.payment_method_card
+# NOTHING TO DO: the record is not noupdate, so the module update creates it
+NEW payment.method: payment_xendit.payment_method_cashalo [renamed from payment module] (noupdate switched)
+NEW payment.method: payment_xendit.payment_method_cebuana [renamed from payment module] (noupdate switched)
+NEW payment.method: payment_xendit.payment_method_cimb_niaga [renamed from payment module] (noupdate switched)
+# NOTHING TO DO: only the noupdate flag changed, the definition is the same
+NEW payment.method: payment_xendit.payment_method_dana
+NEW payment.method: payment_xendit.payment_method_fpx
+NEW payment.method: payment_xendit.payment_method_gcash
+NEW payment.method: payment_xendit.payment_method_grabpay
+NEW payment.method: payment_xendit.payment_method_jcb
+# NOTHING TO DO: the record is not noupdate, so the module update creates it
+NEW payment.method: payment_xendit.payment_method_jeniuspay [renamed from payment module] (noupdate switched)
+NEW payment.method: payment_xendit.payment_method_kfh [renamed from payment module] (noupdate switched)
+NEW payment.method: payment_xendit.payment_method_kredivo [renamed from payment module] (noupdate switched)
+# NOTHING TO DO: only the noupdate flag changed, the definition is the same
+NEW payment.method: payment_xendit.payment_method_krungthai_bank
+NEW payment.method: payment_xendit.payment_method_linepay
+# NOTHING TO DO: the record is not noupdate, so the module update creates it
+NEW payment.method: payment_xendit.payment_method_linkaja [renamed from payment module] (noupdate switched)
+NEW payment.method: payment_xendit.payment_method_mandiri [renamed from payment module] (noupdate switched)
+# NOTHING TO DO: only the noupdate flag changed, the definition is the same
+NEW payment.method: payment_xendit.payment_method_mastercard
+NEW payment.method: payment_xendit.payment_method_maya
+# NOTHING TO DO: the record is not noupdate, so the module update creates it
+NEW payment.method: payment_xendit.payment_method_ovo [renamed from payment module] (noupdate switched)
+# NOTHING TO DO: only the noupdate flag changed, the definition is the same
+NEW payment.method: payment_xendit.payment_method_paynow
+NEW payment.method: payment_xendit.payment_method_promptpay
+# NOTHING TO DO: the record is not noupdate, so the module update creates it
+NEW payment.method: payment_xendit.payment_method_qris [renamed from payment module] (noupdate switched)
+# NOTHING TO DO: only the noupdate flag changed, the definition is the same
+NEW payment.method: payment_xendit.payment_method_scb
+# NOTHING TO DO: the record is not noupdate, so the module update creates it
+NEW payment.method: payment_xendit.payment_method_shopeepay [renamed from payment module] (noupdate switched)
+# NOTHING TO DO: only the noupdate flag changed, the definition is the same
+NEW payment.method: payment_xendit.payment_method_touch_n_go
+NEW payment.method: payment_xendit.payment_method_truemoney
+NEW payment.method: payment_xendit.payment_method_unionpay
+NEW payment.method: payment_xendit.payment_method_uob
+# NOTHING TO DO: the record is not noupdate, so the module update creates it
+NEW payment.method: payment_xendit.payment_method_vietcapital [renamed from payment module] (noupdate switched)
+NEW payment.method: payment_xendit.payment_method_viettelpay [renamed from payment module] (noupdate switched)
+# NOTHING TO DO: only the noupdate flag changed, the definition is the same
+NEW payment.method: payment_xendit.payment_method_visa
+# NOTHING TO DO: the record is not noupdate, so the module update creates it
+NEW payment.method: payment_xendit.payment_method_vnptwallet [renamed from payment module] (noupdate switched)
+NEW payment.method: payment_xendit.payment_method_vpbank [renamed from payment module] (noupdate switched)
+# NOTHING TO DO: only the noupdate flag changed, the definition is the same
+NEW payment.method: payment_xendit.payment_method_wechat_pay
+# NOTHING TO DO: the record is not noupdate, so the module update creates it
+NEW payment.method: payment_xendit.payment_method_woori [renamed from payment module] (noupdate switched)
+NEW payment.method: payment_xendit.payment_method_zalopay [renamed from payment module] (noupdate switched)
+# NOTHING TO DO: only the noupdate flag changed, the definition is the same
+payment.provider: payment.payment_provider_xendit (noupdate switched)
+# DONE: post-migration: load noupdate_changes.xml
diff --git a/openupgrade_scripts/scripts/portal/20.0.1.0/noupdate_changes.xml b/openupgrade_scripts/scripts/portal/20.0.1.0/noupdate_changes.xml
new file mode 100644
index 00000000000..08e4c471cac
--- /dev/null
+++ b/openupgrade_scripts/scripts/portal/20.0.1.0/noupdate_changes.xml
@@ -0,0 +1,18 @@
+
+
+
+
+
+
Dear ,
+
has invited you to access the following :
+
+
+ Open
+
+
+
+
+
+
+
+
diff --git a/openupgrade_scripts/scripts/portal/20.0.1.0/post-migration.py b/openupgrade_scripts/scripts/portal/20.0.1.0/post-migration.py
new file mode 100644
index 00000000000..fae5501cc23
--- /dev/null
+++ b/openupgrade_scripts/scripts/portal/20.0.1.0/post-migration.py
@@ -0,0 +1,9 @@
+# Copyright 2026 Don Kendall
+# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl).
+
+from openupgradelib import openupgrade
+
+
+@openupgrade.migrate()
+def migrate(env, version):
+ openupgrade.load_data(env, "portal", "20.0.1.0/noupdate_changes.xml")
diff --git a/openupgrade_scripts/scripts/portal/20.0.1.0/upgrade_analysis.txt b/openupgrade_scripts/scripts/portal/20.0.1.0/upgrade_analysis.txt
new file mode 100644
index 00000000000..03801a08335
--- /dev/null
+++ b/openupgrade_scripts/scripts/portal/20.0.1.0/upgrade_analysis.txt
@@ -0,0 +1,51 @@
+---Models in module 'portal'---
+new model portal.entry
+---Fields in module 'portal'---
+portal / account.analytic.account / website_message_ids (one2many): DEL relation: mail.message
+portal / calendar.event / website_message_ids (one2many): DEL relation: mail.message
+portal / crm.team / website_message_ids (one2many): DEL relation: mail.message
+portal / crm.team.member / website_message_ids (one2many): DEL relation: mail.message
+portal / discuss.channel / website_message_ids (one2many): DEL relation: mail.message
+portal / fleet.vehicle / website_message_ids (one2many): DEL relation: mail.message
+portal / fleet.vehicle.log.contract / website_message_ids (one2many): DEL relation: mail.message
+portal / fleet.vehicle.log.services / website_message_ids (one2many): DEL relation: mail.message
+portal / fleet.vehicle.model / website_message_ids (one2many): DEL relation: mail.message
+portal / gamification.badge / website_message_ids (one2many): DEL relation: mail.message
+portal / gamification.badge.user / website_message_ids (one2many): DEL relation: mail.message
+portal / gamification.challenge / website_message_ids (one2many): DEL relation: mail.message
+portal / iap.account / website_message_ids (one2many): DEL relation: mail.message
+portal / ir.actions.server / website_message_ids (one2many): DEL relation: mail.message
+portal / ir.cron / website_message_ids (one2many): DEL relation: mail.message
+portal / lunch.supplier / website_message_ids (one2many): DEL relation: mail.message
+portal / mail.blacklist / website_message_ids (one2many): DEL relation: mail.message
+portal / maintenance.equipment / website_message_ids (one2many): DEL relation: mail.message
+portal / maintenance.request / website_message_ids (one2many): DEL relation: mail.message
+portal / maintenance.team / website_message_ids (one2many): DEL relation: mail.message
+portal / phone.blacklist / website_message_ids (one2many): DEL relation: mail.message
+portal / portal.entry / category (char) : NEW hasdefault: default
+portal / portal.entry / description (text) : NEW translate
+portal / portal.entry / image (binary) : NEW attachment: True
+portal / portal.entry / is_config_card (boolean) : NEW hasdefault: default
+portal / portal.entry / name (char) : NEW required, translate
+portal / portal.entry / placeholder_count (char) : NEW
+portal / portal.entry / sequence (integer) : NEW hasdefault: default
+portal / portal.entry / show_in_portal (boolean) : NEW hasdefault: default
+portal / portal.entry / url (char) : NEW
+portal / product.category / website_message_ids (one2many): DEL relation: mail.message
+portal / product.pricelist / website_message_ids (one2many): DEL relation: mail.message
+portal / product.product / website_message_ids (one2many): DEL relation: mail.message
+portal / product.template / website_message_ids (one2many): DEL relation: mail.message
+portal / res.partner / website_message_ids (one2many): DEL relation: mail.message
+---XML records in module 'portal'---
+NEW ir.access: portal.access_portal_entry_public
+NEW ir.access: portal.access_portal_share
+NEW ir.access: portal.access_portal_wizard
+NEW ir.access: portal.access_portal_wizard_user
+DEL ir.model.access: portal.access_portal_share
+DEL ir.model.access: portal.access_portal_wizard
+DEL ir.model.access: portal.access_portal_wizard_user
+NEW ir.ui.view: portal.address_warning_icon
+ir.ui.view: portal.portal_share_template (noupdate switched)
+NEW ir.ui.view: portal.profile_picture_card
+NEW portal.entry: portal.portal_entry_addresses
+NEW portal.entry: portal.portal_entry_base
diff --git a/openupgrade_scripts/scripts/pos_restaurant/20.0.1.0/noupdate_changes.xml b/openupgrade_scripts/scripts/pos_restaurant/20.0.1.0/noupdate_changes.xml
new file mode 100644
index 00000000000..8f78329f083
--- /dev/null
+++ b/openupgrade_scripts/scripts/pos_restaurant/20.0.1.0/noupdate_changes.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
diff --git a/openupgrade_scripts/scripts/pos_restaurant/20.0.1.0/post-migration.py b/openupgrade_scripts/scripts/pos_restaurant/20.0.1.0/post-migration.py
new file mode 100644
index 00000000000..5b850abf626
--- /dev/null
+++ b/openupgrade_scripts/scripts/pos_restaurant/20.0.1.0/post-migration.py
@@ -0,0 +1,9 @@
+# Copyright 2026 Don Kendall
+# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl).
+
+from openupgradelib import openupgrade
+
+
+@openupgrade.migrate()
+def migrate(env, version):
+ openupgrade.load_data(env, "pos_restaurant", "20.0.1.0/noupdate_changes.xml")
diff --git a/openupgrade_scripts/scripts/pos_restaurant/20.0.1.0/upgrade_analysis.txt b/openupgrade_scripts/scripts/pos_restaurant/20.0.1.0/upgrade_analysis.txt
new file mode 100644
index 00000000000..8c2af2c9457
--- /dev/null
+++ b/openupgrade_scripts/scripts/pos_restaurant/20.0.1.0/upgrade_analysis.txt
@@ -0,0 +1,54 @@
+---Models in module 'pos_restaurant'---
+new model pos.course
+---Fields in module 'pos_restaurant'---
+pos_restaurant / pos.category / course_id (many2one) : NEW relation: pos.course
+pos_restaurant / pos.config / floor_plan_settings (json) : NEW
+pos_restaurant / pos.config / iface_printbill (boolean) : module is now 'point_of_sale' ('pos_restaurant')
+pos_restaurant / pos.config / iface_splitbill (boolean) : DEL
+pos_restaurant / pos.config / set_tip_after_payment (boolean): module is now 'point_of_sale' ('pos_restaurant')
+pos_restaurant / pos.config / use_course_allocation (boolean): NEW
+pos_restaurant / pos.config / use_show_items_on_course_ticket (boolean): NEW
+pos_restaurant / pos.course / category_ids (one2many) : NEW relation: pos.category
+pos_restaurant / pos.course / name (char) : NEW required
+pos_restaurant / pos.course / sequence (integer) : NEW hasdefault: default
+pos_restaurant / restaurant.floor / background_color (char) : DEL
+pos_restaurant / restaurant.floor / background_image (binary) : DEL attachment: True
+pos_restaurant / restaurant.floor / floor_background_image (binary): DEL attachment: True
+pos_restaurant / restaurant.floor / floor_plan_layout (json) : NEW
+pos_restaurant / restaurant.order.course / course_id (many2one) : NEW relation: pos.course
+pos_restaurant / restaurant.order.course / name (char) : NEW
+pos_restaurant / restaurant.table / color (char) : DEL
+pos_restaurant / restaurant.table / floor_plan_layout (json) : NEW
+pos_restaurant / restaurant.table / height (float) : DEL
+pos_restaurant / restaurant.table / parent_side (selection) : NEW selection_keys: ['bottom', 'left', 'right', 'top']
+pos_restaurant / restaurant.table / position_h (float) : DEL
+pos_restaurant / restaurant.table / position_v (float) : DEL
+pos_restaurant / restaurant.table / shape (selection) : DEL required, selection_keys: ['round', 'square']
+pos_restaurant / restaurant.table / width (float) : DEL
+---XML records in module 'pos_restaurant'---
+NEW ir.access: pos_restaurant.access_pos_course
+NEW ir.access: pos_restaurant.access_pos_course_manager
+NEW ir.access: pos_restaurant.access_restaurant_floor
+NEW ir.access: pos_restaurant.access_restaurant_floor_manager
+NEW ir.access: pos_restaurant.access_restaurant_order_course
+NEW ir.access: pos_restaurant.access_restaurant_table
+NEW ir.access: pos_restaurant.access_restaurant_table_manager
+NEW ir.actions.act_window: pos_restaurant.action_pos_course
+DEL ir.model.access: pos_restaurant.access_restaurant_floor
+DEL ir.model.access: pos_restaurant.access_restaurant_floor_manager
+DEL ir.model.access: pos_restaurant.access_restaurant_order_course
+DEL ir.model.access: pos_restaurant.access_restaurant_table
+DEL ir.model.access: pos_restaurant.access_restaurant_table_manager
+NEW ir.model.constraint: pos_restaurant.constraint_pos_course_name_unique
+NEW ir.ui.menu: pos_restaurant.menu_pos_course
+NEW ir.ui.view: pos_restaurant.pos_order_change_receipt
+NEW ir.ui.view: pos_restaurant.pos_order_receipt_header
+NEW ir.ui.view: pos_restaurant.pos_restaurant_pos_category_kanban_view
+NEW ir.ui.view: pos_restaurant.pos_restaurant_product_pos_category_tree_view
+NEW ir.ui.view: pos_restaurant.view_pos_category_form_inherit_course
+NEW ir.ui.view: pos_restaurant.view_pos_course_form
+NEW ir.ui.view: pos_restaurant.view_pos_course_list
+pos.preset: pos_restaurant.pos_delivery_preset (noupdate switched)
+pos.preset: pos_restaurant.pos_takein_preset (noupdate switched)
+pos.preset: pos_restaurant.pos_takeout_preset (noupdate switched)
+resource.calendar: pos_restaurant.pos_resource_preset (noupdate switched)
diff --git a/openupgrade_scripts/scripts/pos_self_order/20.0.1.0/noupdate_changes.xml b/openupgrade_scripts/scripts/pos_self_order/20.0.1.0/noupdate_changes.xml
new file mode 100644
index 00000000000..2824bbd9bbd
--- /dev/null
+++ b/openupgrade_scripts/scripts/pos_self_order/20.0.1.0/noupdate_changes.xml
@@ -0,0 +1,57 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Hello Client name,
+ Hello,
+
+
+
Your order ... amounting in $xx.xx has been confirmed. It will be ready at 12:00 pm at street, state, zip, city, country
+
+
Thank you,
+
+
+
You can download your receipt
here
+
+
+
Store name
+
+
+ Sent to customers with a link to download their receipt
+
+
+
+
+
+
+
+
+ Hello Client name,
+ Hello,
+
+
+
Your order ... amounting in $xx.xx has been confirmed. It will be ready at 12:00 pm
+
+
Thank you,
+
+
+
You can download your receipt
here
+
+
+
Store name
+
+
+ Sent to customers with a link to download their receipt
+
+
diff --git a/openupgrade_scripts/scripts/pos_self_order/20.0.1.0/post-migration.py b/openupgrade_scripts/scripts/pos_self_order/20.0.1.0/post-migration.py
new file mode 100644
index 00000000000..dc70f9e1960
--- /dev/null
+++ b/openupgrade_scripts/scripts/pos_self_order/20.0.1.0/post-migration.py
@@ -0,0 +1,15 @@
+# Copyright 2026 Don Kendall
+# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl).
+
+from openupgradelib import openupgrade
+
+
+@openupgrade.migrate()
+def migrate(env, version):
+ openupgrade.load_data(env, "pos_self_order", "20.0.1.0/noupdate_changes.xml")
+ openupgrade.delete_record_translations(
+ env.cr,
+ "pos_self_order",
+ ["delivery_email_template", "takeout_email_template"],
+ ["body_html", "description"],
+ )
diff --git a/openupgrade_scripts/scripts/pos_self_order/20.0.1.0/upgrade_analysis.txt b/openupgrade_scripts/scripts/pos_self_order/20.0.1.0/upgrade_analysis.txt
new file mode 100644
index 00000000000..c6023d04582
--- /dev/null
+++ b/openupgrade_scripts/scripts/pos_self_order/20.0.1.0/upgrade_analysis.txt
@@ -0,0 +1,36 @@
+---Models in module 'pos_self_order'---
+---Fields in module 'pos_self_order'---
+pos_self_order / pos.category / pos_config_ids (many2many) : module is now 'point_of_sale' ('pos_self_order')
+pos_self_order / pos.config / self_ordering_primary_color (char): NEW hasdefault: default
+pos_self_order / pos.config / self_ordering_service_mode (selection): selection_keys added: [dynamic_qr] (most likely nothing to do)
+pos_self_order / pos.preset / delivery_distance_unit (selection): NEW selection_keys: ['km', 'mi'], hasdefault: default
+pos_self_order / pos.preset / delivery_from_address (char) : NEW isfunction: function, stored
+pos_self_order / pos.preset / delivery_from_city (char) : NEW
+pos_self_order / pos.preset / delivery_from_country_id (many2one): NEW relation: res.country
+pos_self_order / pos.preset / delivery_from_latitude (float): NEW
+pos_self_order / pos.preset / delivery_from_longitude (float): NEW
+pos_self_order / pos.preset / delivery_from_state_id (many2one): NEW relation: res.country.state
+pos_self_order / pos.preset / delivery_from_street (char) : NEW
+pos_self_order / pos.preset / delivery_from_zip (char) : NEW
+pos_self_order / pos.preset / delivery_max_distance_km (float): NEW hasdefault: default
+pos_self_order / pos.preset / delivery_product_id (many2one): NEW relation: product.product, hasdefault: default
+pos_self_order / pos.preset / delivery_product_price (float): NEW hasdefault: default
+pos_self_order / pos.preset / free_delivery_min_amount (float): NEW
+pos_self_order / pos.snooze / type (False) : NEW selection_keys: ['product', 'self-ordering'], mode: modify
+---XML records in module 'pos_self_order'---
+NEW ir.access: pos_self_order.access_pos_self_order_custom_link_manager
+NEW ir.access: pos_self_order.access_pos_self_order_custom_link_user
+DEL ir.model.access: pos_self_order.access_pos_self_order_custom_link_manager
+DEL ir.model.access: pos_self_order.access_pos_self_order_custom_link_user
+NEW ir.ui.view: pos_self_order.DynamicQrReceipt
+NEW ir.ui.view: pos_self_order.pos_config_view_form_inherit_pos_self_order
+NEW ir.ui.view: pos_self_order.pos_order_change_receipt
+NEW ir.ui.view: pos_self_order.pos_order_receipt_header
+NEW ir.ui.view: pos_self_order.view_pos_preset_tree
+DEL ir.ui.view: pos_self_order.pos_self_view_pos_session_form
+mail.template: pos_self_order.delivery_email_template (noupdate switched)
+mail.template: pos_self_order.takeout_email_template (noupdate switched)
+pos.preset: pos_restaurant.pos_delivery_preset (noupdate switched)
+pos.preset: pos_restaurant.pos_takein_preset (noupdate switched)
+pos.preset: pos_restaurant.pos_takeout_preset (noupdate switched)
+NEW product.template: pos_self_order.product_delivery_template
diff --git a/openupgrade_scripts/scripts/project/20.0.1.4/noupdate_changes.xml b/openupgrade_scripts/scripts/project/20.0.1.4/noupdate_changes.xml
new file mode 100644
index 00000000000..b71ac130fee
--- /dev/null
+++ b/openupgrade_scripts/scripts/project/20.0.1.4/noupdate_changes.xml
@@ -0,0 +1,29 @@
+
+
+
+ mail.mail_notification_light
+
+
+
+ Dear ,
+
+ You have been assigned to the .
+
+
+
+ [
+ ('project_id.privacy_visibility', 'in', ['invited_users', 'portal']),
+ ('has_template_ancestor', '=', False),
+ ('active', '=', True),
+ ('project_id.collaborator_ids', 'any', [
+ ('partner_id', '=', user.partner_id.id),
+ ('access_mode', 'in', ['edit', 'advanced_edit'])
+ ]),
+ ]
+
+ cu
+
+
+ mail.mail_notification_light
+
+
diff --git a/openupgrade_scripts/scripts/project/20.0.1.4/post-migration.py b/openupgrade_scripts/scripts/project/20.0.1.4/post-migration.py
new file mode 100644
index 00000000000..7b15311bf88
--- /dev/null
+++ b/openupgrade_scripts/scripts/project/20.0.1.4/post-migration.py
@@ -0,0 +1,9 @@
+# Copyright 2026 Don Kendall
+# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl).
+
+from openupgradelib import openupgrade
+
+
+@openupgrade.migrate()
+def migrate(env, version):
+ openupgrade.load_data(env, "project", "20.0.1.4/noupdate_changes.xml")
diff --git a/openupgrade_scripts/scripts/project/20.0.1.4/upgrade_analysis.txt b/openupgrade_scripts/scripts/project/20.0.1.4/upgrade_analysis.txt
new file mode 100644
index 00000000000..9cc06233158
--- /dev/null
+++ b/openupgrade_scripts/scripts/project/20.0.1.4/upgrade_analysis.txt
@@ -0,0 +1,306 @@
+---Models in module 'project'---
+new model project.task.stage.report [sql_view]
+---Fields in module 'project'---
+project / project.collaborator / access_mode (selection) : NEW required, selection_keys: ['advanced_edit', 'edit', 'view'], hasdefault: default
+project / project.collaborator / limited_access (boolean) : DEL
+project / project.milestone / website_message_ids (one2many): DEL relation: mail.message
+project / project.project / allowed_internal_user_ids (many2many): NEW relation: res.users, hasdefault: compute
+project / project.project / date_last_stage_update (datetime): NEW hasdefault: default
+project / project.project / duration_tracking (json) : is now stored
+project / project.project / website_message_ids (one2many): DEL relation: mail.message
+project / project.project.stage / color (integer) : DEL
+project / project.project.stage / rotting_threshold_days (integer): NEW hasdefault: default
+project / project.role / user_ids (many2many) : NEW relation: res.users
+project / project.task / allow_recurring_tasks (boolean): not related anymore
+project / project.task / allow_recurring_tasks (boolean): now a function
+project / project.task / allow_task_dependencies (boolean): not related anymore
+project / project.task / allow_task_dependencies (boolean): now a function
+project / project.task / duration_tracking (json) : is now stored
+project / project.task / email_cc (char) : DEL
+project / project.task / website_message_ids (one2many): DEL relation: mail.message
+project / project.task.type / color (integer) : DEL
+project / project.update / _order : _order is now 'date desc, id desc' ('id desc')
+project / project.update / email_cc (char) : DEL
+project / project.update / website_message_ids (one2many): DEL relation: mail.message
+project / res.users / followed_project_ids (many2many): NEW relation: project.project, stored: False
+project / res.users / project_role_ids (many2many) : NEW relation: project.role
+---XML records in module 'project'---
+digest.digest: digest.digest_digest_default (noupdate switched)
+NEW digest.tip: project.digest_tip_project_4
+NEW digest.tip: project.digest_tip_project_5
+NEW digest.tip: project.digest_tip_project_6
+NEW digest.tip: project.digest_tip_project_7
+NEW digest.tip: project.digest_tip_project_8
+NEW digest.tip: project.digest_tip_project_9
+NEW ir.access: project.access_account_analytic_account_manager
+NEW ir.access: project.access_account_analytic_account_user
+NEW ir.access: project.access_mail_activity_plan_project_manager
+NEW ir.access: project.access_mail_activity_plan_template_project_manager
+NEW ir.access: project.access_mail_activity_type_project_manager
+NEW ir.access: project.access_project_collaborator_manager
+NEW ir.access: project.access_project_collaborator_user
+NEW ir.access: project.access_project_personal_stage
+NEW ir.access: project.access_project_project_stage
+NEW ir.access: project.access_project_project_stage_delete_wizard
+NEW ir.access: project.access_project_project_stage_manager
+NEW ir.access: project.access_project_role_manager
+NEW ir.access: project.access_project_role_user
+NEW ir.access: project.access_project_share_collaborator_manager
+NEW ir.access: project.access_project_share_manager
+NEW ir.access: project.access_project_tags_portal
+NEW ir.access: project.access_project_task_recurrence
+NEW ir.access: project.access_project_task_share_manager
+NEW ir.access: project.access_project_task_stage_report
+NEW ir.access: project.access_project_task_type_delete_wizard
+NEW ir.access: project.access_project_task_type_portal
+NEW ir.access: project.access_project_task_type_user
+NEW ir.access: project.access_project_template_create_wizard_manager
+NEW ir.access: project.access_project_template_create_wizard_user
+NEW ir.access: project.access_project_template_role_to_users_map_manager
+NEW ir.access: project.access_project_template_role_to_users_map_user
+NEW ir.access: project.access_resource_calendar
+NEW ir.access: project.access_resource_calendar_attendance
+NEW ir.access: project.account_analytic_line_rule_manager
+NEW ir.access: project.burndown_chart_project_manager_rule
+NEW ir.access: project.burndown_chart_project_user_rule
+NEW ir.access: project.ir_rule_private_task
+NEW ir.access: project.ir_rule_project_personal_stage_my
+NEW ir.access: project.mail_plan_rule_group_project_manager_task
+NEW ir.access: project.mail_plan_templates_rule_group_project_manager_task
+NEW ir.access: project.milestone_comp_rule
+NEW ir.access: project.milestone_visibility_project_admin
+NEW ir.access: project.milestone_visibility_rule
+NEW ir.access: project.milestone_visibility_rule_1
+NEW ir.access: project.project_collaborator_rule_portal
+NEW ir.access: project.project_comp_rule
+NEW ir.access: project.project_manager_all_project_tasks_rule
+NEW ir.access: project.project_milestone_rule_portal_project_sharing
+NEW ir.access: project.project_project_manager_rule
+NEW ir.access: project.project_project_rule_portal
+NEW ir.access: project.project_project_stage_rule
+NEW ir.access: project.project_public_members_rule
+NEW ir.access: project.project_task_rule_portal
+NEW ir.access: project.project_task_rule_portal_project_sharing
+NEW ir.access: project.project_user_read_on_tasks_templates_without_project_rule
+NEW ir.access: project.report_project_task_manager_rule
+NEW ir.access: project.report_project_task_user_report_comp_rule
+NEW ir.access: project.res_partner_rule_user
+NEW ir.access: project.resource_calendar_leaves_rule_group_user_create
+NEW ir.access: project.resource_calendar_leaves_rule_group_user_modify
+NEW ir.access: project.tags_manager_rule
+NEW ir.access: project.tags_user_rule
+NEW ir.access: project.task_comp_rule
+NEW ir.access: project.task_type_manager_rule
+NEW ir.access: project.task_type_own_write_rule
+NEW ir.access: project.task_type_visibility_rule
+NEW ir.access: project.task_visibility_rule
+NEW ir.access: project.task_visibility_rule_project_user
+NEW ir.access: project.update_comp_rule
+NEW ir.access: project.update_visibility_project_admin
+NEW ir.access: project.update_visibility_rule
+NEW ir.access: project.update_visibility_rule_1
+ir.actions.act_window: project.act_project_project_2_project_task_all (deleted domain)
+ir.actions.act_window: project.action_project_task_burndown_chart_report (deleted domain)
+ir.actions.act_window: project.action_project_task_user_tree (deleted domain)
+NEW ir.actions.act_window: project.action_project_time_by_stage_report
+ir.actions.act_window: project.action_view_all_task (deleted domain)
+ir.actions.act_window: project.action_view_my_task (deleted domain)
+ir.actions.act_window: project.action_view_task (deleted domain)
+ir.actions.act_window: project.action_view_task_from_milestone (deleted domain)
+ir.actions.act_window: project.action_view_task_overpassed_draft (deleted domain)
+ir.actions.act_window: project.dblc_proj (deleted domain)
+ir.actions.act_window: project.mail_activity_plan_action_config_project_task_plan (deleted domain)
+ir.actions.act_window: project.mail_activity_type_action_config_project_types (deleted domain)
+NEW ir.actions.act_window: project.open_create_project_template
+ir.actions.act_window: project.open_task_type_form (deleted domain)
+ir.actions.act_window: project.open_task_type_form_domain (deleted domain)
+ir.actions.act_window: project.open_view_project_all (deleted domain)
+ir.actions.act_window: project.open_view_project_all_config (deleted domain)
+ir.actions.act_window: project.open_view_project_all_config_group_stage (deleted domain)
+ir.actions.act_window: project.open_view_project_all_group_stage (deleted domain)
+NEW ir.actions.act_window: project.open_view_project_template
+ir.actions.act_window: project.project_milestone_action (deleted domain)
+ir.actions.act_window: project.project_sharing_project_task_action (deleted domain)
+ir.actions.act_window: project.project_sharing_project_task_action_blocking_tasks (deleted domain)
+ir.actions.act_window: project.project_sharing_project_task_action_sub_task (deleted domain)
+ir.actions.act_window: project.project_task_action_from_partner (deleted domain)
+ir.actions.act_window: project.project_task_action_sub_task (deleted domain)
+ir.actions.act_window: project.project_update_all_action (deleted domain)
+ir.actions.act_window: project.rating_rating_action_project_report (deleted domain)
+ir.actions.act_window: project.rating_rating_action_task (deleted domain)
+ir.actions.act_window: project.rating_rating_action_view_project_rating (deleted domain)
+DEL ir.actions.act_window: project.project_milestone_action_view_tasks
+NEW ir.actions.act_window.view: project.open_view_project_template_form_action_view
+NEW ir.actions.act_window.view: project.open_view_project_template_kanban_action_view
+NEW ir.actions.act_window.view: project.open_view_project_template_tree_action_view
+DEL ir.actions.act_window.view: project.project_milestone_action_view_graph
+DEL ir.actions.act_window.view: project.project_milestone_action_view_pivot
+DEL ir.actions.act_window.view: project.project_milestone_action_view_tasks_calendar
+DEL ir.actions.act_window.view: project.project_milestone_action_view_tasks_kanban
+DEL ir.actions.act_window.view: project.project_milestone_action_view_tasks_list
+NEW ir.actions.server: project.action_server_share_project
+NEW ir.actions.server: project.action_server_share_task
+NEW ir.config_parameter: project.portal_task_page_limit_param
+ir.cron: project.ir_cron_rating_project (noupdate switched)
+NEW ir.embedded.actions: project.project_embedded_action_project_burndown_chart
+NEW ir.embedded.actions: project.project_embedded_action_project_overview
+NEW ir.embedded.actions: project.project_embedded_action_time_by_stage
+NEW ir.embedded.actions: project.project_embedded_action_update_burndown_chart
+ir.exports: project.project_task_export_template (noupdate switched)
+ir.exports.line: project.project_task_export_template_line_id (noupdate switched)
+ir.exports.line: project.project_task_export_template_line_name (noupdate switched)
+ir.exports.line: project.project_task_export_template_line_project_id (noupdate switched)
+ir.exports.line: project.project_task_export_template_line_stage_id (noupdate switched)
+ir.exports.line: project.project_task_export_template_line_state (noupdate switched)
+ir.exports.line: project.project_task_export_template_line_tag_ids (noupdate switched)
+ir.exports.line: project.project_task_export_template_line_user_ids (noupdate switched)
+DEL ir.model.access: project.access_account_analytic_account_manager
+DEL ir.model.access: project.access_account_analytic_account_user
+DEL ir.model.access: project.access_account_analytic_line_project
+DEL ir.model.access: project.access_mail_activity_plan_project_manager
+DEL ir.model.access: project.access_mail_activity_plan_template_project_manager
+DEL ir.model.access: project.access_mail_activity_type_project_manager
+DEL ir.model.access: project.access_partner_task_user
+DEL ir.model.access: project.access_project_collaborator_manager
+DEL ir.model.access: project.access_project_collaborator_portal
+DEL ir.model.access: project.access_project_collaborator_user
+DEL ir.model.access: project.access_project_milestone_portal
+DEL ir.model.access: project.access_project_milestone_project_manager
+DEL ir.model.access: project.access_project_milestone_project_user
+DEL ir.model.access: project.access_project_milestone_user
+DEL ir.model.access: project.access_project_personal_stage
+DEL ir.model.access: project.access_project_portal
+DEL ir.model.access: project.access_project_project
+DEL ir.model.access: project.access_project_project_manager
+DEL ir.model.access: project.access_project_project_stage
+DEL ir.model.access: project.access_project_project_stage_delete_wizard
+DEL ir.model.access: project.access_project_project_stage_manager
+DEL ir.model.access: project.access_project_role_manager
+DEL ir.model.access: project.access_project_role_user
+DEL ir.model.access: project.access_project_share_collaborator_manager
+DEL ir.model.access: project.access_project_share_manager
+DEL ir.model.access: project.access_project_sharing_task_portal (noupdate)
+DEL ir.model.access: project.access_project_tags_all
+DEL ir.model.access: project.access_project_tags_manager
+DEL ir.model.access: project.access_project_tags_portal
+DEL ir.model.access: project.access_project_task
+DEL ir.model.access: project.access_project_task_burndown_chart_report
+DEL ir.model.access: project.access_project_task_burndown_chart_report_user
+DEL ir.model.access: project.access_project_task_recurrence
+DEL ir.model.access: project.access_project_task_share_manager
+DEL ir.model.access: project.access_project_task_share_user
+DEL ir.model.access: project.access_project_task_type_delete_wizard
+DEL ir.model.access: project.access_project_task_type_manager
+DEL ir.model.access: project.access_project_task_type_portal
+DEL ir.model.access: project.access_project_task_type_project_user
+DEL ir.model.access: project.access_project_task_type_user
+DEL ir.model.access: project.access_project_template_create_wizard_manager
+DEL ir.model.access: project.access_project_template_create_wizard_user
+DEL ir.model.access: project.access_project_template_role_to_users_map_manager
+DEL ir.model.access: project.access_project_template_role_to_users_map_user
+DEL ir.model.access: project.access_project_update_portal
+DEL ir.model.access: project.access_project_update_project_manager
+DEL ir.model.access: project.access_project_update_project_user
+DEL ir.model.access: project.access_project_update_user
+DEL ir.model.access: project.access_project_user
+DEL ir.model.access: project.access_report_project_task_user
+DEL ir.model.access: project.access_report_project_task_user_project_user
+DEL ir.model.access: project.access_resource_calendar
+DEL ir.model.access: project.access_resource_calendar_attendance
+DEL ir.model.access: project.access_resource_calendar_leaves_user
+DEL ir.model.access: project.access_task_on_partner
+DEL ir.model.access: project.access_task_portal
+NEW ir.model.constraint: project.constraint_mail_activity_task_user_active_idx
+ir.model.constraint: project.constraint_mail_message_date_res_id_id_for_burndown_chart (changed definition: is now 'False' ('INDEX (date, res_id, id) WHERE model = 'project.task' AND message_type = 'notification''))
+ir.model.constraint: project.constraint_project_collaborator_unique_collaborator (changed definition: is now 'False' ('UNIQUE(project_id, partner_id)'))
+ir.model.constraint: project.constraint_project_project_project_date_greater (changed definition: is now 'False' ('check(date >= date_start)'))
+ir.model.constraint: project.constraint_project_tags_name_uniq (changed definition: is now 'False' ('unique (name)'))
+ir.model.constraint: project.constraint_project_task_is_template_idx (changed definition: is now 'False' ('INDEX (is_template) WHERE is_template IS TRUE'))
+ir.model.constraint: project.constraint_project_task_private_task_has_no_parent (changed definition: is now 'False' ('CHECK (NOT (project_id IS NULL AND parent_id IS NOT NULL))'))
+ir.model.constraint: project.constraint_project_task_recurring_task_has_no_parent (changed definition: is now 'False' ('CHECK (NOT (recurring_task IS TRUE AND parent_id IS NOT NULL))'))
+ir.model.constraint: project.constraint_project_task_user_rel_project_personal_stage_unique (changed definition: is now 'False' ('UNIQUE (task_id, user_id)'))
+DEL ir.rule: project.burndown_chart_project_manager_rule (noupdate)
+DEL ir.rule: project.burndown_chart_project_user_rule (noupdate)
+DEL ir.rule: project.ir_rule_private_task (noupdate)
+DEL ir.rule: project.ir_rule_project_personal_stage_my (noupdate)
+DEL ir.rule: project.mail_plan_rule_group_project_manager_task (noupdate)
+DEL ir.rule: project.mail_plan_templates_rule_group_project_manager_task (noupdate)
+DEL ir.rule: project.milestone_comp_rule (noupdate)
+DEL ir.rule: project.milestone_visibility_project_admin (noupdate)
+DEL ir.rule: project.milestone_visibility_rule (noupdate)
+DEL ir.rule: project.project_collaborator_rule_portal (noupdate)
+DEL ir.rule: project.project_comp_rule (noupdate)
+DEL ir.rule: project.project_manager_all_project_tasks_rule (noupdate)
+DEL ir.rule: project.project_milestone_rule_portal_project_sharing (noupdate)
+DEL ir.rule: project.project_project_manager_rule (noupdate)
+DEL ir.rule: project.project_project_rule_portal (noupdate)
+DEL ir.rule: project.project_project_stage_rule (noupdate)
+DEL ir.rule: project.project_public_members_rule (noupdate)
+DEL ir.rule: project.project_task_rule_portal (noupdate)
+DEL ir.rule: project.project_task_rule_portal_project_sharing (noupdate)
+DEL ir.rule: project.report_project_task_manager_rule (noupdate)
+DEL ir.rule: project.report_project_task_user_report_comp_rule (noupdate)
+DEL ir.rule: project.report_project_task_user_rule (noupdate)
+DEL ir.rule: project.task_comp_rule (noupdate)
+DEL ir.rule: project.task_type_manager_rule (noupdate)
+DEL ir.rule: project.task_type_own_write_rule (noupdate)
+DEL ir.rule: project.task_type_visibility_rule (noupdate)
+DEL ir.rule: project.task_visibility_rule (noupdate)
+DEL ir.rule: project.task_visibility_rule_project_user (noupdate)
+DEL ir.rule: project.update_comp_rule (noupdate)
+DEL ir.rule: project.update_visibility_project_admin (noupdate)
+DEL ir.rule: project.update_visibility_rule (noupdate)
+NEW ir.ui.menu: project.menu_project_config_project_template
+NEW ir.ui.view: project.portal_format_date
+ir.ui.view: project.project_message_user_assigned (noupdate switched)
+NEW ir.ui.view: project.project_sharing_project_task_view_card
+NEW ir.ui.view: project.project_templates_view_card
+NEW ir.ui.view: project.project_time_by_stage_report_view_graph
+NEW ir.ui.view: project.project_time_by_stage_report_view_pivot
+NEW ir.ui.view: project.project_time_by_stage_report_view_search
+NEW ir.ui.view: project.project_update_view_graph
+NEW ir.ui.view: project.project_view_card_inherit_project
+ir.ui.view: project.task_invitation_follower (noupdate switched)
+NEW ir.ui.view: project.view_project_card
+NEW ir.ui.view: project.view_project_card_group_stage
+NEW ir.ui.view: project.view_task_card
+NEW ir.ui.view: project.view_task_card_subtask_mobile
+NEW ir.ui.view: project.view_task_kanban_no_default_grouping
+DEL ir.ui.view: project.portal_my_home
+DEL ir.ui.view: project.project_task_graph_view_project_milestone
+DEL ir.ui.view: project.project_task_kanban_view_project_milestone
+DEL ir.ui.view: project.project_task_pivot_view_project_milestone
+DEL ir.ui.view: project.project_task_templates_kanban
+DEL ir.ui.view: project.project_task_templates_list
+DEL ir.ui.view: project.project_task_tree_view_project_milestone
+DEL ir.ui.view: project.project_view_kanban_inherit_project
+DEL ir.ui.view: project.view_task_template_search_form
+mail.message.subtype: project.mt_project_stage_change (noupdate switched)
+mail.message.subtype: project.mt_project_task_approved (noupdate switched)
+mail.message.subtype: project.mt_project_task_canceled (noupdate switched)
+mail.message.subtype: project.mt_project_task_changes_requested (noupdate switched)
+mail.message.subtype: project.mt_project_task_done (noupdate switched)
+mail.message.subtype: project.mt_project_task_in_progress (noupdate switched)
+mail.message.subtype: project.mt_project_task_new (noupdate switched)
+mail.message.subtype: project.mt_project_task_rating (noupdate switched)
+mail.message.subtype: project.mt_project_task_stage (noupdate switched)
+mail.message.subtype: project.mt_project_task_waiting (noupdate switched)
+mail.message.subtype: project.mt_project_update_create (noupdate switched)
+mail.message.subtype: project.mt_task_approved (noupdate switched)
+mail.message.subtype: project.mt_task_canceled (noupdate switched)
+mail.message.subtype: project.mt_task_changes_requested (noupdate switched)
+mail.message.subtype: project.mt_task_done (noupdate switched)
+mail.message.subtype: project.mt_task_in_progress (noupdate switched)
+mail.message.subtype: project.mt_task_new (noupdate switched)
+mail.message.subtype: project.mt_task_rating (noupdate switched)
+mail.message.subtype: project.mt_task_stage (noupdate switched)
+mail.message.subtype: project.mt_task_waiting (noupdate switched)
+mail.message.subtype: project.mt_update_create (noupdate switched)
+mail.template: project.mail_template_data_project_task (noupdate switched)
+mail.template: project.rating_project_request_email_template (noupdate switched)
+NEW portal.entry: project.portal_projects
+NEW portal.entry: project.portal_tasks
+project.project.stage: project.project_project_stage_0 (noupdate switched)
+project.project.stage: project.project_project_stage_1 (noupdate switched)
+project.project.stage: project.project_project_stage_2 (noupdate switched)
+project.project.stage: project.project_project_stage_3 (noupdate switched)
diff --git a/openupgrade_scripts/scripts/project_todo/20.0.1.0/noupdate_changes.xml b/openupgrade_scripts/scripts/project_todo/20.0.1.0/noupdate_changes.xml
new file mode 100644
index 00000000000..60e60c7045f
--- /dev/null
+++ b/openupgrade_scripts/scripts/project_todo/20.0.1.0/noupdate_changes.xml
@@ -0,0 +1,193 @@
+
+
+
+
+ Hey 👋
+ Welcome to the To-do app!
+
+
+
+ Use it to manage your work, take notes on the go, and create tasks based on them.
+
+
+
+
+
+ Using the editor
+
+
+ This private to-do is for you to play around with.
+
+ Ready to give it a spin?
+
+
+ Try the following
+
+
+ -
+ Check this box to indicate it's done
+
+ -
+ Click anywhere, and just start typing
+
+ -
+ Press Ctrl+Z/⌘+Z to undo any change
+
+ -
+
+ Select text to
+ Highlight,
+ strikethrough
+ or
+ style
+ it
+
+
+ -
+
+ Below this list, try
+ commands
+ by
+ typing
+ "/"
+
+
+ -
+
+ -
+
+ Add a checklist
+ (/checklist)
+
+
+ -
+
+ Add a separator
+ (/separator)
+
+
+ -
+
+ Use
+ /heading
+ to convert a text into a title
+
+
+
+
+
+
+
+
+ Who has access to what?
+
+
+
+ By default, to-dos are only visible to you. You can share them with other users by adding them as
+ assignees.
+
+
+
+
+
+
+
+
+ Organize your to-dos however you want
+
+
+
+ Customize the stages from the
+ Kanban view
+ to reflect your preferred workflow.
+
+
+
+
+
+
+ Enhance Your To-Dos with Shortcuts ⚡
+
+
+
+ Use these keywords in the title to streamline your to-dos:
+
+
+
+ - #tags:
+ Add tags to categorize the to-do
+
+ - @user:
+ Assign the to-do to a specific user
+
+ - !:
+ Mark the to-do as medium priority
+
+ - !!:
+ Mark the to-do as high priority
+
+ - !!!:
+ Mark the to-do as urgent
+
+
+
+
+ Ensure you follow the correct format and order. For example: Send invitations #event @Mitchell !
+
+
+
+
+
+
+ Manage your to-dos and assigned tasks from a single place
+
+
+
+ Access your personal pipeline with your to-dos and assigned tasks by going to the Project app and clicking
+ My Tasks.
+
+
+
+
+
+ There, your to-dos are listed as
+ private tasks.
+ Any task you create privately will also be included in your to-dos. Essentially, they are interchangeable.
+
+
+
+
+
+ Convert to-dos into tasks
+
+
+
+ If you want to assign your to-do to a specific project, open the ⚙️ menu and click
+ Convert to Task.
+
+ This action will make it visible to other users.
+
+
+
+
+
+
+
+ Create to-dos from anywhere
+
+
+
+ Wherever you are, use the magic keyboard shortcut to add yourself a reminder 💡
+
+
+
+ - Alt + Shift + T
+ (Windows/Linux)
+
+ - Ctrl + Shift + T
+ (MacOs)
+
+
+
+
+
diff --git a/openupgrade_scripts/scripts/project_todo/20.0.1.0/post-migration.py b/openupgrade_scripts/scripts/project_todo/20.0.1.0/post-migration.py
new file mode 100644
index 00000000000..add2b43cc2e
--- /dev/null
+++ b/openupgrade_scripts/scripts/project_todo/20.0.1.0/post-migration.py
@@ -0,0 +1,9 @@
+# Copyright 2026 Don Kendall
+# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl).
+
+from openupgradelib import openupgrade
+
+
+@openupgrade.migrate()
+def migrate(env, version):
+ openupgrade.load_data(env, "project_todo", "20.0.1.0/noupdate_changes.xml")
diff --git a/openupgrade_scripts/scripts/project_todo/20.0.1.0/upgrade_analysis.txt b/openupgrade_scripts/scripts/project_todo/20.0.1.0/upgrade_analysis.txt
new file mode 100644
index 00000000000..87466be7de9
--- /dev/null
+++ b/openupgrade_scripts/scripts/project_todo/20.0.1.0/upgrade_analysis.txt
@@ -0,0 +1,24 @@
+---Models in module 'project_todo'---
+---Fields in module 'project_todo'---
+---XML records in module 'project_todo'---
+NEW digest.tip: project_todo.digest_tip_project_todo_0
+NEW ir.access: project_todo.access_mail_activity_todo_create
+NEW ir.access: project_todo.access_project_task_type_user
+NEW ir.access: project_todo.ir_rule_private_task
+NEW ir.access: project_todo.project_manager_all_project_tasks_rule
+NEW ir.access: project_todo.project_user_read_on_tasks_templates_without_project_rule
+NEW ir.access: project_todo.tags_manager_rule
+NEW ir.access: project_todo.tags_own_write_rule
+NEW ir.access: project_todo.tags_user_rule
+NEW ir.access: project_todo.task_edition_rule_internal
+NEW ir.access: project_todo.task_type_manager_rule
+NEW ir.access: project_todo.task_type_own_write_rule
+NEW ir.access: project_todo.task_visibility_rule
+NEW ir.access: project_todo.task_visibility_rule_project_user
+ir.actions.act_window: project_todo.project_task_action_todo (deleted domain)
+DEL ir.model.access: project_todo.access_mail_activity_todo_create
+DEL ir.model.access: project_todo.access_project_tags_user
+DEL ir.model.access: project_todo.access_project_task_type_user
+DEL ir.model.access: project_todo.access_task_on_partner
+DEL ir.rule: project_todo.task_edition_rule_internal (noupdate)
+ir.ui.view: project_todo.todo_user_onboarding (noupdate switched)
diff --git a/openupgrade_scripts/scripts/project_todo/20.0.1.0/upgrade_analysis_work.txt b/openupgrade_scripts/scripts/project_todo/20.0.1.0/upgrade_analysis_work.txt
new file mode 100644
index 00000000000..165410dccd5
--- /dev/null
+++ b/openupgrade_scripts/scripts/project_todo/20.0.1.0/upgrade_analysis_work.txt
@@ -0,0 +1,29 @@
+---Models in module 'project_todo'---
+---Fields in module 'project_todo'---
+---XML records in module 'project_todo'---
+NEW digest.tip: project_todo.digest_tip_project_todo_0
+# NOTHING TO DO: the record is not noupdate, so the module update creates it
+NEW ir.access: project_todo.access_mail_activity_todo_create
+NEW ir.access: project_todo.access_project_task_type_user
+NEW ir.access: project_todo.ir_rule_private_task
+NEW ir.access: project_todo.project_manager_all_project_tasks_rule
+NEW ir.access: project_todo.project_user_read_on_tasks_templates_without_project_rule
+NEW ir.access: project_todo.tags_manager_rule
+NEW ir.access: project_todo.tags_own_write_rule
+NEW ir.access: project_todo.tags_user_rule
+NEW ir.access: project_todo.task_edition_rule_internal
+NEW ir.access: project_todo.task_type_manager_rule
+NEW ir.access: project_todo.task_type_own_write_rule
+NEW ir.access: project_todo.task_visibility_rule
+NEW ir.access: project_todo.task_visibility_rule_project_user
+# NOTHING TO DO: base folds ir.model.access and ir.rule into ir.access, keeping the xml_ids
+ir.actions.act_window: project_todo.project_task_action_todo (deleted domain)
+# NOTHING TO DO: the record is not noupdate, so the module update rewrites the domain
+DEL ir.model.access: project_todo.access_mail_activity_todo_create
+DEL ir.model.access: project_todo.access_project_tags_user
+DEL ir.model.access: project_todo.access_project_task_type_user
+DEL ir.model.access: project_todo.access_task_on_partner
+DEL ir.rule: project_todo.task_edition_rule_internal (noupdate)
+# NOTHING TO DO: base folds ir.model.access and ir.rule into ir.access, keeping the xml_ids
+ir.ui.view: project_todo.todo_user_onboarding (noupdate switched)
+# DONE: post-migration: load noupdate_changes.xml
diff --git a/openupgrade_scripts/scripts/sale_gelato/20.0.1.0/noupdate_changes.xml b/openupgrade_scripts/scripts/sale_gelato/20.0.1.0/noupdate_changes.xml
new file mode 100644
index 00000000000..80fb06971f0
--- /dev/null
+++ b/openupgrade_scripts/scripts/sale_gelato/20.0.1.0/noupdate_changes.xml
@@ -0,0 +1,6 @@
+
+
+
+ mail.mail_notification_layout
+
+
diff --git a/openupgrade_scripts/scripts/sale_gelato/20.0.1.0/post-migration.py b/openupgrade_scripts/scripts/sale_gelato/20.0.1.0/post-migration.py
new file mode 100644
index 00000000000..788064512e8
--- /dev/null
+++ b/openupgrade_scripts/scripts/sale_gelato/20.0.1.0/post-migration.py
@@ -0,0 +1,9 @@
+# Copyright 2026 Don Kendall
+# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl).
+
+from openupgradelib import openupgrade
+
+
+@openupgrade.migrate()
+def migrate(env, version):
+ openupgrade.load_data(env, "sale_gelato", "20.0.1.0/noupdate_changes.xml")
diff --git a/openupgrade_scripts/scripts/sale_gelato/20.0.1.0/upgrade_analysis.txt b/openupgrade_scripts/scripts/sale_gelato/20.0.1.0/upgrade_analysis.txt
new file mode 100644
index 00000000000..6ca890913d3
--- /dev/null
+++ b/openupgrade_scripts/scripts/sale_gelato/20.0.1.0/upgrade_analysis.txt
@@ -0,0 +1,10 @@
+---Models in module 'sale_gelato'---
+---Fields in module 'sale_gelato'---
+sale_gelato / product.product / gelato_variant_image_ids (one2many): NEW relation: product.document
+---XML records in module 'sale_gelato'---
+delivery.carrier: sale_gelato.express_delivery (noupdate switched)
+delivery.carrier: sale_gelato.standard_delivery (noupdate switched)
+DEL ir.ui.view: sale_gelato.product_product_easy_form
+mail.template: sale_gelato.order_status_update (noupdate switched)
+product.product: sale_gelato.express_delivery_product (noupdate switched)
+product.product: sale_gelato.standard_delivery_product (noupdate switched)
diff --git a/openupgrade_scripts/scripts/sale_gelato/20.0.1.0/upgrade_analysis_work.txt b/openupgrade_scripts/scripts/sale_gelato/20.0.1.0/upgrade_analysis_work.txt
new file mode 100644
index 00000000000..37b366a98e5
--- /dev/null
+++ b/openupgrade_scripts/scripts/sale_gelato/20.0.1.0/upgrade_analysis_work.txt
@@ -0,0 +1,15 @@
+---Models in module 'sale_gelato'---
+---Fields in module 'sale_gelato'---
+sale_gelato / product.product / gelato_variant_image_ids (one2many): NEW relation: product.document
+# NOTHING TO DO: a one2many has no column of its own
+---XML records in module 'sale_gelato'---
+delivery.carrier: sale_gelato.express_delivery (noupdate switched)
+delivery.carrier: sale_gelato.standard_delivery (noupdate switched)
+# NOTHING TO DO: only the noupdate flag changed, the definition is the same
+DEL ir.ui.view: sale_gelato.product_product_easy_form
+# NOTHING TO DO: the record is not noupdate, so the module update removes it
+mail.template: sale_gelato.order_status_update (noupdate switched)
+# DONE: post-migration: load noupdate_changes.xml
+product.product: sale_gelato.express_delivery_product (noupdate switched)
+product.product: sale_gelato.standard_delivery_product (noupdate switched)
+# NOTHING TO DO: only the noupdate flag changed, the definition is the same
diff --git a/openupgrade_scripts/scripts/sale_timesheet/20.0.1.0/noupdate_changes.xml b/openupgrade_scripts/scripts/sale_timesheet/20.0.1.0/noupdate_changes.xml
new file mode 100644
index 00000000000..9e74fea8f42
--- /dev/null
+++ b/openupgrade_scripts/scripts/sale_timesheet/20.0.1.0/noupdate_changes.xml
@@ -0,0 +1,15 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/openupgrade_scripts/scripts/sale_timesheet/20.0.1.0/post-migration.py b/openupgrade_scripts/scripts/sale_timesheet/20.0.1.0/post-migration.py
new file mode 100644
index 00000000000..4998b7f86f0
--- /dev/null
+++ b/openupgrade_scripts/scripts/sale_timesheet/20.0.1.0/post-migration.py
@@ -0,0 +1,9 @@
+# Copyright 2026 Don Kendall
+# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl).
+
+from openupgradelib import openupgrade
+
+
+@openupgrade.migrate()
+def migrate(env, version):
+ openupgrade.load_data(env, "sale_timesheet", "20.0.1.0/noupdate_changes.xml")
diff --git a/openupgrade_scripts/scripts/sale_timesheet/20.0.1.0/upgrade_analysis.txt b/openupgrade_scripts/scripts/sale_timesheet/20.0.1.0/upgrade_analysis.txt
new file mode 100644
index 00000000000..d185cbc88e5
--- /dev/null
+++ b/openupgrade_scripts/scripts/sale_timesheet/20.0.1.0/upgrade_analysis.txt
@@ -0,0 +1,33 @@
+---Models in module 'sale_timesheet'---
+---Fields in module 'sale_timesheet'---
+sale_timesheet / account.analytic.line / order_id (many2one) : module is now 'sale' ('sale_timesheet')
+sale_timesheet / account.analytic.line / product_id (False) : NEW mode: modify, hasdefault: compute
+sale_timesheet / account.analytic.line / so_line (False) : DEL mode: modify
+sale_timesheet / account.analytic.line / timesheet_invoice_id (many2one): DEL relation: account.move
+sale_timesheet / account.analytic.line / timesheet_invoice_type (selection): DEL selection_keys: ['billable_fixed', 'billable_manual', 'billable_milestones', 'billable_time', 'non_billable', 'other_costs', 'other_revenues', 'service_revenues', 'timesheet_revenues']
+---XML records in module 'sale_timesheet'---
+NEW ir.access: sale_timesheet.access_project_sale_line_employee_map
+NEW ir.access: sale_timesheet.access_project_sale_line_employee_map_manager
+NEW ir.access: sale_timesheet.account_analytic_line_rule_billing_user
+NEW ir.access: sale_timesheet.account_analytic_line_rule_readonly_user
+ir.actions.act_window: sale_timesheet.action_timesheet_from_invoice (deleted domain)
+ir.actions.act_window: sale_timesheet.timesheet_action_billing_report (deleted domain)
+ir.actions.act_window: sale_timesheet.timesheet_action_from_plan (deleted domain)
+ir.actions.act_window: sale_timesheet.timesheet_action_from_sales_order (deleted domain)
+ir.actions.act_window: sale_timesheet.timesheet_action_from_sales_order_item (deleted domain)
+ir.actions.act_window: sale_timesheet.timesheet_action_plan_pivot (deleted domain)
+DEL ir.model.access: sale_timesheet.access_project_sale_line_employee_map
+DEL ir.model.access: sale_timesheet.access_project_sale_line_employee_map_manager
+ir.model.constraint: sale_timesheet.constraint_project_sale_line_employee_map_uniqueness_employee (changed definition: is now 'False' ('UNIQUE(project_id,employee_id)'))
+NEW ir.ui.view: sale_timesheet.account_analytic_line_view_search
+NEW ir.ui.view: sale_timesheet.hr_timesheet_line_search
+NEW ir.ui.view: sale_timesheet.portal_timesheet_table_with_total_inherit
+NEW ir.ui.view: sale_timesheet.project_project_view_card_inherit_sale_timesheet
+NEW ir.ui.view: sale_timesheet.project_project_view_card_inherit_sale_timesheet_so_button
+NEW ir.ui.view: sale_timesheet.report_timesheet_sale_timesheet
+NEW ir.ui.view: sale_timesheet.view_task_form2_inherit_sale_timesheet
+DEL ir.ui.view: sale_timesheet.project_project_view_kanban_inherit_sale_timesheet
+DEL ir.ui.view: sale_timesheet.project_project_view_kanban_inherit_sale_timesheet_so_button
+DEL ir.ui.view: sale_timesheet.view_hr_timesheet_line_graph_invoice_employee
+product.product: sale_timesheet.time_product (noupdate switched)
+res.groups: base.group_user (noupdate switched)
diff --git a/openupgrade_scripts/scripts/stock_sms/20.0.1.0/noupdate_changes.xml b/openupgrade_scripts/scripts/stock_sms/20.0.1.0/noupdate_changes.xml
new file mode 100644
index 00000000000..e6740473dcb
--- /dev/null
+++ b/openupgrade_scripts/scripts/stock_sms/20.0.1.0/noupdate_changes.xml
@@ -0,0 +1,8 @@
+
+
+
+
+ {{ (object.company_id.name + ': Your order n° ' + object.origin + ' has been collected.' if object.origin else object.company_id.name + ': Your order has been collected.') if hasattr(object, 'delivery_type') and object.delivery_type == 'in_store' else (object.company_id.name + ': We are glad to inform you that your order n° ' + object.origin + ' has been shipped.' if object.origin else object.company_id.name + ': We are glad to inform you that your order has been shipped.') + (' Your tracking reference is ' + (object.carrier_tracking_ref) + '.' if hasattr(object, 'carrier_tracking_ref') and object.carrier_tracking_ref else '') }}
+
+
+
diff --git a/openupgrade_scripts/scripts/stock_sms/20.0.1.0/post-migration.py b/openupgrade_scripts/scripts/stock_sms/20.0.1.0/post-migration.py
new file mode 100644
index 00000000000..c7c244fd8f6
--- /dev/null
+++ b/openupgrade_scripts/scripts/stock_sms/20.0.1.0/post-migration.py
@@ -0,0 +1,15 @@
+# Copyright 2026 Don Kendall
+# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl).
+
+from openupgradelib import openupgrade
+
+
+@openupgrade.migrate()
+def migrate(env, version):
+ openupgrade.load_data(env, "stock_sms", "20.0.1.0/noupdate_changes.xml")
+ openupgrade.delete_record_translations(
+ env.cr,
+ "stock_sms",
+ ["sms_template_data_stock_delivery"],
+ ["body"],
+ )
diff --git a/openupgrade_scripts/scripts/stock_sms/20.0.1.0/upgrade_analysis.txt b/openupgrade_scripts/scripts/stock_sms/20.0.1.0/upgrade_analysis.txt
new file mode 100644
index 00000000000..9c142cc26ae
--- /dev/null
+++ b/openupgrade_scripts/scripts/stock_sms/20.0.1.0/upgrade_analysis.txt
@@ -0,0 +1,10 @@
+---Models in module 'stock_sms'---
+---Fields in module 'stock_sms'---
+---XML records in module 'stock_sms'---
+NEW ir.access: stock_sms.access_confirm_stock_sms
+NEW ir.access: stock_sms.access_sms_template_stock_manager
+NEW ir.access: stock_sms.ir_rule_sms_template_stock_manager
+DEL ir.model.access: stock_sms.access_confirm_stock_sms
+DEL ir.model.access: stock_sms.access_sms_template_stock_manager
+DEL ir.rule: stock_sms.ir_rule_sms_template_stock_manager (noupdate)
+sms.template: stock_sms.sms_template_data_stock_delivery (noupdate switched)
diff --git a/openupgrade_scripts/scripts/stock_sms/20.0.1.0/upgrade_analysis_work.txt b/openupgrade_scripts/scripts/stock_sms/20.0.1.0/upgrade_analysis_work.txt
new file mode 100644
index 00000000000..d949a309569
--- /dev/null
+++ b/openupgrade_scripts/scripts/stock_sms/20.0.1.0/upgrade_analysis_work.txt
@@ -0,0 +1,12 @@
+---Models in module 'stock_sms'---
+---Fields in module 'stock_sms'---
+---XML records in module 'stock_sms'---
+NEW ir.access: stock_sms.access_confirm_stock_sms
+NEW ir.access: stock_sms.access_sms_template_stock_manager
+NEW ir.access: stock_sms.ir_rule_sms_template_stock_manager
+DEL ir.model.access: stock_sms.access_confirm_stock_sms
+DEL ir.model.access: stock_sms.access_sms_template_stock_manager
+DEL ir.rule: stock_sms.ir_rule_sms_template_stock_manager (noupdate)
+# NOTHING TO DO: base folds ir.model.access and ir.rule into ir.access, keeping the xml_ids
+sms.template: stock_sms.sms_template_data_stock_delivery (noupdate switched)
+# DONE: post-migration: load noupdate_changes.xml
diff --git a/openupgrade_scripts/scripts/uom/20.0.1.0/noupdate_changes.xml b/openupgrade_scripts/scripts/uom/20.0.1.0/noupdate_changes.xml
new file mode 100644
index 00000000000..8e93a999de3
--- /dev/null
+++ b/openupgrade_scripts/scripts/uom/20.0.1.0/noupdate_changes.xml
@@ -0,0 +1,6 @@
+
+
+
+ t
+
+
diff --git a/openupgrade_scripts/scripts/uom/20.0.1.0/post-migration.py b/openupgrade_scripts/scripts/uom/20.0.1.0/post-migration.py
new file mode 100644
index 00000000000..e3031c3a8de
--- /dev/null
+++ b/openupgrade_scripts/scripts/uom/20.0.1.0/post-migration.py
@@ -0,0 +1,15 @@
+# Copyright 2026 Don Kendall
+# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl).
+
+from openupgradelib import openupgrade
+
+
+@openupgrade.migrate()
+def migrate(env, version):
+ openupgrade.load_data(env, "uom", "20.0.1.0/noupdate_changes.xml")
+ openupgrade.delete_record_translations(
+ env.cr,
+ "uom",
+ ["product_uom_ton"],
+ ["name"],
+ )
diff --git a/openupgrade_scripts/scripts/uom/20.0.1.0/upgrade_analysis.txt b/openupgrade_scripts/scripts/uom/20.0.1.0/upgrade_analysis.txt
new file mode 100644
index 00000000000..54ac20e9f22
--- /dev/null
+++ b/openupgrade_scripts/scripts/uom/20.0.1.0/upgrade_analysis.txt
@@ -0,0 +1,45 @@
+---Models in module 'uom'---
+---Fields in module 'uom'---
+---XML records in module 'uom'---
+decimal.precision: uom.decimal_product_uom (noupdate switched)
+NEW ir.access: uom.access_uom_uom_manager
+NEW ir.access: uom.access_uom_uom_user
+NEW ir.actions.act_window: uom.uom_uom_action_list
+DEL ir.actions.act_window: uom.product_uom_form_action
+DEL ir.model.access: uom.access_uom_uom_manager
+DEL ir.model.access: uom.access_uom_uom_user
+ir.model.constraint: uom.constraint_uom_uom_factor_gt_zero (changed definition: is now 'False' ('CHECK (relative_factor!=0)'))
+NEW ir.ui.view: uom.uom_uom_view_form
+NEW ir.ui.view: uom.uom_uom_view_list
+DEL ir.ui.view: uom.product_uom_form_view
+DEL ir.ui.view: uom.product_uom_tree_view
+uom.uom: uom.product_uom_cm (noupdate switched)
+uom.uom: uom.product_uom_cubic_foot (noupdate switched)
+uom.uom: uom.product_uom_cubic_inch (noupdate switched)
+uom.uom: uom.product_uom_cubic_meter (noupdate switched)
+uom.uom: uom.product_uom_day (noupdate switched)
+uom.uom: uom.product_uom_dozen (noupdate switched)
+uom.uom: uom.product_uom_floz (noupdate switched)
+uom.uom: uom.product_uom_foot (noupdate switched)
+uom.uom: uom.product_uom_gal (noupdate switched)
+uom.uom: uom.product_uom_gram (noupdate switched)
+uom.uom: uom.product_uom_hour (noupdate switched)
+uom.uom: uom.product_uom_inch (noupdate switched)
+uom.uom: uom.product_uom_kgm (noupdate switched)
+uom.uom: uom.product_uom_km (noupdate switched)
+uom.uom: uom.product_uom_kwh (noupdate switched)
+uom.uom: uom.product_uom_lb (noupdate switched)
+uom.uom: uom.product_uom_litre (noupdate switched)
+uom.uom: uom.product_uom_meter (noupdate switched)
+uom.uom: uom.product_uom_mile (noupdate switched)
+uom.uom: uom.product_uom_milliliter (noupdate switched)
+uom.uom: uom.product_uom_millimeter (noupdate switched)
+uom.uom: uom.product_uom_minute (noupdate switched)
+uom.uom: uom.product_uom_oz (noupdate switched)
+uom.uom: uom.product_uom_pack_6 (noupdate switched)
+uom.uom: uom.product_uom_qt (noupdate switched)
+uom.uom: uom.product_uom_square_foot (noupdate switched)
+uom.uom: uom.product_uom_square_meter (noupdate switched)
+uom.uom: uom.product_uom_ton (noupdate switched)
+uom.uom: uom.product_uom_unit (noupdate switched)
+uom.uom: uom.product_uom_yard (noupdate switched)
diff --git a/openupgrade_scripts/scripts/uom/20.0.1.0/upgrade_analysis_work.txt b/openupgrade_scripts/scripts/uom/20.0.1.0/upgrade_analysis_work.txt
new file mode 100644
index 00000000000..bcba398fe9d
--- /dev/null
+++ b/openupgrade_scripts/scripts/uom/20.0.1.0/upgrade_analysis_work.txt
@@ -0,0 +1,56 @@
+---Models in module 'uom'---
+---Fields in module 'uom'---
+---XML records in module 'uom'---
+decimal.precision: uom.decimal_product_uom (noupdate switched)
+# NOTHING TO DO: only the noupdate flag changed, the definition is the same
+NEW ir.access: uom.access_uom_uom_manager
+NEW ir.access: uom.access_uom_uom_user
+# NOTHING TO DO: base folds ir.model.access and ir.rule into ir.access, keeping the xml_ids
+NEW ir.actions.act_window: uom.uom_uom_action_list
+# NOTHING TO DO: the record is not noupdate, so the module update creates it
+DEL ir.actions.act_window: uom.product_uom_form_action
+# NOTHING TO DO: the record is not noupdate, so the module update removes it
+DEL ir.model.access: uom.access_uom_uom_manager
+DEL ir.model.access: uom.access_uom_uom_user
+# NOTHING TO DO: base folds ir.model.access and ir.rule into ir.access, keeping the xml_ids
+ir.model.constraint: uom.constraint_uom_uom_factor_gt_zero (changed definition: is now 'False' ('CHECK (relative_factor!=0)'))
+# NOTHING TO DO: the record is not noupdate, so the module update rewrites it
+NEW ir.ui.view: uom.uom_uom_view_form
+NEW ir.ui.view: uom.uom_uom_view_list
+# NOTHING TO DO: the record is not noupdate, so the module update creates it
+DEL ir.ui.view: uom.product_uom_form_view
+DEL ir.ui.view: uom.product_uom_tree_view
+# NOTHING TO DO: the record is not noupdate, so the module update removes it
+uom.uom: uom.product_uom_cm (noupdate switched)
+uom.uom: uom.product_uom_cubic_foot (noupdate switched)
+uom.uom: uom.product_uom_cubic_inch (noupdate switched)
+uom.uom: uom.product_uom_cubic_meter (noupdate switched)
+uom.uom: uom.product_uom_day (noupdate switched)
+uom.uom: uom.product_uom_dozen (noupdate switched)
+uom.uom: uom.product_uom_floz (noupdate switched)
+uom.uom: uom.product_uom_foot (noupdate switched)
+uom.uom: uom.product_uom_gal (noupdate switched)
+uom.uom: uom.product_uom_gram (noupdate switched)
+uom.uom: uom.product_uom_hour (noupdate switched)
+uom.uom: uom.product_uom_inch (noupdate switched)
+uom.uom: uom.product_uom_kgm (noupdate switched)
+uom.uom: uom.product_uom_km (noupdate switched)
+uom.uom: uom.product_uom_kwh (noupdate switched)
+uom.uom: uom.product_uom_lb (noupdate switched)
+uom.uom: uom.product_uom_litre (noupdate switched)
+uom.uom: uom.product_uom_meter (noupdate switched)
+uom.uom: uom.product_uom_mile (noupdate switched)
+uom.uom: uom.product_uom_milliliter (noupdate switched)
+uom.uom: uom.product_uom_millimeter (noupdate switched)
+uom.uom: uom.product_uom_minute (noupdate switched)
+uom.uom: uom.product_uom_oz (noupdate switched)
+uom.uom: uom.product_uom_pack_6 (noupdate switched)
+uom.uom: uom.product_uom_qt (noupdate switched)
+uom.uom: uom.product_uom_square_foot (noupdate switched)
+uom.uom: uom.product_uom_square_meter (noupdate switched)
+# NOTHING TO DO: only the noupdate flag changed, the definition is the same
+uom.uom: uom.product_uom_ton (noupdate switched)
+# DONE: post-migration: load noupdate_changes.xml
+uom.uom: uom.product_uom_unit (noupdate switched)
+uom.uom: uom.product_uom_yard (noupdate switched)
+# NOTHING TO DO: only the noupdate flag changed, the definition is the same
diff --git a/openupgrade_scripts/scripts/utm/20.0.1.2/noupdate_changes.xml b/openupgrade_scripts/scripts/utm/20.0.1.2/noupdate_changes.xml
new file mode 100644
index 00000000000..b5a99f5674f
--- /dev/null
+++ b/openupgrade_scripts/scripts/utm/20.0.1.2/noupdate_changes.xml
@@ -0,0 +1,6 @@
+
+
+
+ Mass Mailing
+
+
diff --git a/openupgrade_scripts/scripts/utm/20.0.1.2/post-migration.py b/openupgrade_scripts/scripts/utm/20.0.1.2/post-migration.py
new file mode 100644
index 00000000000..939081f2951
--- /dev/null
+++ b/openupgrade_scripts/scripts/utm/20.0.1.2/post-migration.py
@@ -0,0 +1,9 @@
+# Copyright 2026 Don Kendall
+# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl).
+
+from openupgradelib import openupgrade
+
+
+@openupgrade.migrate()
+def migrate(env, version):
+ openupgrade.load_data(env, "utm", "20.0.1.2/noupdate_changes.xml")
diff --git a/openupgrade_scripts/scripts/utm/20.0.1.2/upgrade_analysis.txt b/openupgrade_scripts/scripts/utm/20.0.1.2/upgrade_analysis.txt
new file mode 100644
index 00000000000..cb9388ea142
--- /dev/null
+++ b/openupgrade_scripts/scripts/utm/20.0.1.2/upgrade_analysis.txt
@@ -0,0 +1,55 @@
+---Models in module 'utm'---
+obsolete model utm.source.mixin [abstract]
+---Fields in module 'utm'---
+---XML records in module 'utm'---
+NEW ir.access: utm.access_utm_campaign_system
+NEW ir.access: utm.access_utm_campaign_user
+NEW ir.access: utm.access_utm_medium_system
+NEW ir.access: utm.access_utm_medium_user
+NEW ir.access: utm.access_utm_source_system
+NEW ir.access: utm.access_utm_source_user
+NEW ir.access: utm.access_utm_stage_system
+NEW ir.access: utm.access_utm_stage_user
+NEW ir.access: utm.access_utm_tag_system
+NEW ir.access: utm.access_utm_tag_user
+DEL ir.model.access: utm.access_utm_campaign_system
+DEL ir.model.access: utm.access_utm_campaign_user
+DEL ir.model.access: utm.access_utm_medium_system
+DEL ir.model.access: utm.access_utm_medium_user
+DEL ir.model.access: utm.access_utm_source_system
+DEL ir.model.access: utm.access_utm_source_user
+DEL ir.model.access: utm.access_utm_stage_system
+DEL ir.model.access: utm.access_utm_stage_user
+DEL ir.model.access: utm.access_utm_tag_system
+DEL ir.model.access: utm.access_utm_tag_user
+ir.model.constraint: utm.constraint_utm_campaign_unique_name (changed definition: is now 'False' ('UNIQUE(name)'))
+ir.model.constraint: utm.constraint_utm_medium_unique_name (changed definition: is now 'False' ('UNIQUE(name)'))
+ir.model.constraint: utm.constraint_utm_source_unique_name (changed definition: is now 'False' ('UNIQUE(name)'))
+ir.model.constraint: utm.constraint_utm_tag_name_uniq (changed definition: is now 'False' ('unique (name)'))
+utm.medium: utm.utm_medium_direct (noupdate switched)
+utm.medium: utm.utm_medium_email (noupdate switched)
+NEW utm.medium: utm.utm_medium_messaging
+utm.medium: utm.utm_medium_phone (noupdate switched)
+NEW utm.medium: utm.utm_medium_social_media
+utm.medium: utm.utm_medium_website (noupdate switched)
+DEL utm.medium: utm.utm_medium_banner (noupdate)
+DEL utm.medium: utm.utm_medium_facebook (noupdate)
+DEL utm.medium: utm.utm_medium_google_adwords (noupdate)
+DEL utm.medium: utm.utm_medium_linkedin (noupdate)
+DEL utm.medium: utm.utm_medium_television (noupdate)
+DEL utm.medium: utm.utm_medium_twitter (noupdate)
+utm.source: utm.utm_source_craigslist (noupdate switched)
+utm.source: utm.utm_source_facebook (noupdate switched)
+utm.source: utm.utm_source_glassdoor (noupdate switched)
+NEW utm.source: utm.utm_source_google
+NEW utm.source: utm.utm_source_instagram
+utm.source: utm.utm_source_linkedin (noupdate switched)
+NEW utm.source: utm.utm_source_livechat [renamed from crm_livechat module] (noupdate switched)
+utm.source: utm.utm_source_mailing (noupdate switched)
+utm.source: utm.utm_source_monster (noupdate switched)
+utm.source: utm.utm_source_newsletter (noupdate switched)
+utm.source: utm.utm_source_referral (noupdate switched)
+NEW utm.source: utm.utm_source_survey
+utm.source: utm.utm_source_twitter (noupdate switched)
+NEW utm.source: utm.utm_source_youtube
+DEL utm.source: utm.utm_source_search_engine (noupdate)
diff --git a/openupgrade_scripts/scripts/website/20.0.1.0/noupdate_changes.xml b/openupgrade_scripts/scripts/website/20.0.1.0/noupdate_changes.xml
new file mode 100644
index 00000000000..757c161f744
--- /dev/null
+++ b/openupgrade_scripts/scripts/website/20.0.1.0/noupdate_changes.xml
@@ -0,0 +1,17 @@
+
+
+
+
+
+
+ True
+ True
+
+
+
+
+
+
diff --git a/openupgrade_scripts/scripts/website/20.0.1.0/post-migration.py b/openupgrade_scripts/scripts/website/20.0.1.0/post-migration.py
new file mode 100644
index 00000000000..f43be8ad3e1
--- /dev/null
+++ b/openupgrade_scripts/scripts/website/20.0.1.0/post-migration.py
@@ -0,0 +1,9 @@
+# Copyright 2026 Don Kendall
+# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl).
+
+from openupgradelib import openupgrade
+
+
+@openupgrade.migrate()
+def migrate(env, version):
+ openupgrade.load_data(env, "website", "20.0.1.0/noupdate_changes.xml")
diff --git a/openupgrade_scripts/scripts/website/20.0.1.0/upgrade_analysis.txt b/openupgrade_scripts/scripts/website/20.0.1.0/upgrade_analysis.txt
new file mode 100644
index 00000000000..ac725baef20
--- /dev/null
+++ b/openupgrade_scripts/scripts/website/20.0.1.0/upgrade_analysis.txt
@@ -0,0 +1,456 @@
+---Models in module 'website'---
+model website (moved to base)
+new model website.llms [transient]
+new model website.located.mixin [abstract]
+new model website.structured_data.mixin [abstract]
+new model website.trackable.mixin [abstract]
+---Fields in module 'website'---
+website / digest.digest / kpi_website_track_count (boolean): NEW
+website / digest.digest / kpi_website_visitor_count (boolean): NEW
+website / ir.ui.view / visibility (selection) : now required
+website / ir.ui.view / visibility (selection) : selection_keys added: [public], removed: []
+website / res.partner / publish_on (datetime) : NEW
+website / res.partner / published_date (datetime) : NEW
+website / theme.website.page / breadcrumb_color (char) : NEW
+website / theme.website.page / breadcrumb_overlay (boolean) : NEW
+website / theme.website.page / breadcrumb_text_color (char) : NEW
+website / theme.website.page / breadcrumb_visible (boolean) : NEW hasdefault: default
+website / theme.website.page / url (char) : now translatable
+website / website / _order : module is now 'base' ('website')
+website / website / company_id (many2one) : module is now 'base' ('website')
+website / website / cookie_policy_id (many2one) : NEW relation: website.page
+website / website / display_name (char) : module is now 'base' ('website')
+website / website / domain (char) : module is now 'base' ('website')
+website / website / domain_punycode (char) : module is now 'base' ('website')
+website / website / header_search_limit (integer) : NEW hasdefault: default
+website / website / header_search_order_by (char) : NEW required, hasdefault: default
+website / website / header_search_type (char) : NEW required, hasdefault: default
+website / website / llms_txt (text) : NEW
+website / website / name (char) : module is now 'base' ('website')
+website / website / sequence (integer) : module is now 'base' ('website')
+website / website / social_discord (char) : DEL
+website / website / social_facebook (char) : DEL
+website / website / social_github (char) : DEL
+website / website / social_instagram (char) : DEL
+website / website / social_linkedin (char) : DEL
+website / website / social_tiktok (char) : DEL
+website / website / social_twitter (char) : DEL
+website / website / social_youtube (char) : DEL
+website / website / user_id (many2one) : module is now 'base' ('website')
+website / website.configurator.feature / icon_class (char) : NEW
+website / website.controller.page / publish_on (datetime) : NEW
+website / website.controller.page / published_date (datetime) : NEW
+website / website.controller.page / visibility (selection) : now required
+website / website.menu / manual_url (char) : NEW
+website / website.menu / url (char) : not stored anymore
+website / website.menu / url (char) : now a function
+website / website.page / breadcrumb_color (char) : NEW
+website / website.page / breadcrumb_overlay (boolean) : NEW
+website / website.page / breadcrumb_text_color (char) : NEW
+website / website.page / breadcrumb_visible (boolean) : NEW hasdefault: default
+website / website.page / date_publish (datetime) : DEL
+website / website.page / name (char) : is now stored
+website / website.page / name (char) : not related anymore
+website / website.page / name (char) : now a function
+website / website.page / name (char) : now translatable
+website / website.page / parent_id (many2one) : NEW relation: website.page
+website / website.page / publish_on (datetime) : NEW
+website / website.page / published_date (datetime) : NEW
+website / website.page / url (char) : now translatable
+website / website.page / visibility (selection) : now required
+website / website.rewrite / redirect_type (selection) : now required
+website / website.rewrite / url_from (char) : now required
+website / website.snippet.filter / publish_on (datetime) : NEW
+website / website.snippet.filter / published_date (datetime) : NEW
+website / website.track / _order : _order is now 'visit_datetime DESC, id DESC' ('visit_datetime DESC')
+---XML records in module 'website'---
+NEW ir.access: website.access_portal_entry
+NEW ir.access: website.access_seo_designer
+NEW ir.access: website.access_seo_public_public
+NEW ir.access: website.access_theme_ir_asset_group_system
+NEW ir.access: website.access_theme_ir_attachment
+NEW ir.access: website.access_theme_ir_ui_view
+NEW ir.access: website.access_theme_website_menu
+NEW ir.access: website.access_theme_website_page
+NEW ir.access: website.access_website_configurator_feature_designer
+NEW ir.access: website.access_website_custom_blocked_third_party_domains
+NEW ir.access: website.access_website_designer
+NEW ir.access: website.access_website_dynamic_filter_system
+NEW ir.access: website.access_website_ir_asset_designer
+NEW ir.access: website.access_website_llms
+NEW ir.access: website.access_website_menu_designer
+NEW ir.access: website.access_website_menu_public
+NEW ir.access: website.access_website_page_designer
+NEW ir.access: website.access_website_page_properties_base_designer
+NEW ir.access: website.access_website_page_properties_base_employee
+NEW ir.access: website.access_website_page_properties_designer
+NEW ir.access: website.access_website_page_properties_employee
+NEW ir.access: website.access_website_rewrite_designer
+NEW ir.access: website.access_website_robots
+NEW ir.access: website.access_website_route_designer
+NEW ir.access: website.access_website_technical_page
+NEW ir.access: website.access_website_track_designer
+NEW ir.access: website.access_website_visitor_designer
+NEW ir.access: website.website_designer_edit_qweb
+NEW ir.access: website.website_designer_view
+NEW ir.access: website.website_group_system_edit_all_views
+NEW ir.access: website.website_menu
+NEW ir.access: website.website_page_controller_rule_designer
+NEW ir.access: website.website_page_controller_rule_public
+ir.actions.act_window: base.open_module_tree (deleted domain)
+ir.actions.act_window: website.action_website_add_features (deleted domain)
+ir.actions.act_window: website.theme_install_kanban_action (deleted domain)
+ir.actions.act_window: website.visitor_partner_action (deleted domain)
+ir.actions.act_window: website.website_visitor_page_action (deleted domain)
+NEW ir.asset: website.s_age_verification_popup_001_scss
+NEW ir.asset: website.s_animated_cover_000_scss
+NEW ir.asset: website.s_avatars_000_scss
+NEW ir.asset: website.s_bento_features_000_scss
+NEW ir.asset: website.s_bento_grid_000_scss
+NEW ir.asset: website.s_bento_grid_avatars_000_scss
+NEW ir.asset: website.s_countdown_000_scss
+NEW ir.asset: website.s_countdown_001_scss
+NEW ir.asset: website.s_icon_list_000_scss
+NEW ir.asset: website.s_mega_menu_dropzone_000_scss
+NEW ir.asset: website.s_references_tiles_000_scss
+NEW ir.asset: website.s_splash_intro_000_scss
+NEW ir.asset: website.s_whatsapp_000_scss
+NEW ir.asset: website.s_whatsapp_chatbox_xml
+DEL ir.asset: website.s_image_gallery_000_xml
+DEL ir.asset: website.s_image_gallery_001_xml
+NEW ir.attachment: website.landscape_md_1
+NEW ir.attachment: website.landscape_md_2
+NEW ir.attachment: website.landscape_md_3
+NEW ir.attachment: website.landscape_md_4
+NEW ir.attachment: website.landscape_md_5
+NEW ir.attachment: website.landscape_md_6
+NEW ir.attachment: website.landscape_md_7
+NEW ir.attachment: website.landscape_md_8
+NEW ir.attachment: website.landscape_md_9
+NEW ir.attachment: website.landscape_xl_1
+NEW ir.attachment: website.landscape_xl_2
+NEW ir.attachment: website.landscape_xl_3
+NEW ir.attachment: website.portrait_lg_1
+NEW ir.attachment: website.portrait_lg_2
+NEW ir.attachment: website.portrait_lg_3
+NEW ir.attachment: website.s_launch_countdown_default_image
+NEW ir.attachment: website.s_newsletter_aside_default_image
+NEW ir.attachment: website.s_splash_intro_default_image
+NEW ir.attachment: website.set_1_landscape_md_1
+NEW ir.attachment: website.set_1_landscape_md_2
+NEW ir.attachment: website.set_1_landscape_md_3
+NEW ir.attachment: website.set_2_square_md_1
+NEW ir.attachment: website.set_2_square_md_2
+NEW ir.attachment: website.set_2_square_md_3
+NEW ir.attachment: website.set_2_square_md_4
+NEW ir.attachment: website.set_2_square_md_5
+NEW ir.attachment: website.set_2_square_md_6
+NEW ir.attachment: website.set_2_square_md_7
+NEW ir.attachment: website.set_avatars_square_md_1
+NEW ir.attachment: website.set_avatars_square_md_2
+NEW ir.attachment: website.set_avatars_square_md_3
+NEW ir.attachment: website.set_avatars_square_md_4
+NEW ir.attachment: website.set_avatars_square_md_5
+NEW ir.attachment: website.set_avatars_square_md_6
+NEW ir.attachment: website.set_catalog_landscape_lg_1
+NEW ir.attachment: website.set_catalog_landscape_lg_2
+NEW ir.attachment: website.set_catalog_landscape_lg_3
+NEW ir.attachment: website.set_catalog_landscape_lg_4
+NEW ir.attachment: website.set_catalog_portrait_md_1
+NEW ir.attachment: website.set_catalog_square_md_1
+NEW ir.attachment: website.set_catalog_square_md_2
+NEW ir.attachment: website.set_catalog_square_md_3
+NEW ir.attachment: website.set_catalog_square_md_4
+NEW ir.attachment: website.set_catalog_square_md_5
+NEW ir.attachment: website.set_catalog_square_md_6
+NEW ir.attachment: website.set_doers_portrait_lg_1
+NEW ir.attachment: website.set_ui_landscape_xl_1
+NEW ir.attachment: website.ultrawide_lg_1
+NEW ir.attachment: website.ultrawide_lg_2
+NEW ir.attachment: website.ultrawide_lg_3
+NEW ir.attachment: website.ultrawide_lg_4
+NEW ir.attachment: website.ultrawide_lg_5
+NEW ir.attachment: website.ultrawide_lg_6
+NEW ir.cron: website.ir_cron_publish_scheduled_pages
+DEL ir.model.access: website.access_seo_designer
+DEL ir.model.access: website.access_seo_public_employee
+DEL ir.model.access: website.access_seo_public_portal
+DEL ir.model.access: website.access_seo_public_public
+DEL ir.model.access: website.access_theme_ir_asset_group_system
+DEL ir.model.access: website.access_theme_ir_attachment
+DEL ir.model.access: website.access_theme_ir_ui_view
+DEL ir.model.access: website.access_theme_website_menu
+DEL ir.model.access: website.access_theme_website_page
+DEL ir.model.access: website.access_website_configurator_feature_designer
+DEL ir.model.access: website.access_website_controller_page_designer
+DEL ir.model.access: website.access_website_controller_page_public
+DEL ir.model.access: website.access_website_custom_blocked_third_party_domains
+DEL ir.model.access: website.access_website_designer
+DEL ir.model.access: website.access_website_dynamic_filter_public
+DEL ir.model.access: website.access_website_dynamic_filter_system
+DEL ir.model.access: website.access_website_ir_asset_designer
+DEL ir.model.access: website.access_website_ir_ui_view_designer
+DEL ir.model.access: website.access_website_ir_ui_view_restricted_editor
+DEL ir.model.access: website.access_website_menu_designer
+DEL ir.model.access: website.access_website_menu_employee
+DEL ir.model.access: website.access_website_menu_portal
+DEL ir.model.access: website.access_website_menu_public
+DEL ir.model.access: website.access_website_page_designer
+DEL ir.model.access: website.access_website_page_properties_base_designer
+DEL ir.model.access: website.access_website_page_properties_base_employee
+DEL ir.model.access: website.access_website_page_properties_base_portal
+DEL ir.model.access: website.access_website_page_properties_base_public
+DEL ir.model.access: website.access_website_page_properties_designer
+DEL ir.model.access: website.access_website_page_properties_employee
+DEL ir.model.access: website.access_website_page_properties_portal
+DEL ir.model.access: website.access_website_page_properties_public
+DEL ir.model.access: website.access_website_public_employee
+DEL ir.model.access: website.access_website_public_portal
+DEL ir.model.access: website.access_website_public_public
+DEL ir.model.access: website.access_website_rewrite
+DEL ir.model.access: website.access_website_rewrite_designer
+DEL ir.model.access: website.access_website_robots
+DEL ir.model.access: website.access_website_route_designer
+DEL ir.model.access: website.access_website_technical_page
+DEL ir.model.access: website.access_website_track_designer
+DEL ir.model.access: website.access_website_track_system
+DEL ir.model.access: website.access_website_visitor_designer
+DEL ir.model.access: website.access_website_visitor_system
+ir.model.constraint: website.constraint_res_users_login_key (changed definition: is now 'False' ('unique (login, website_id)'))
+ir.model.constraint: website.constraint_website_controller_page_unique_name_slugified (changed definition: is now 'False' ('UNIQUE(name_slugified)'))
+ir.model.constraint: website.constraint_website_visitor_access_token_unique (changed definition: is now 'False' ('unique(access_token)'))
+DEL ir.model.constraint: website.constraint_website_domain_unique [renamed to base module]
+DEL ir.rule: website.view_rule_visibility_connected (noupdate)
+DEL ir.rule: website.view_rule_visibility_public (noupdate)
+DEL ir.rule: website.website_designer_edit_qweb (noupdate)
+DEL ir.rule: website.website_designer_view (noupdate)
+DEL ir.rule: website.website_group_system_edit_all_views (noupdate)
+DEL ir.rule: website.website_menu (noupdate)
+DEL ir.rule: website.website_page_controller_rule_public
+DEL ir.rule: website.website_page_rule_public (noupdate)
+NEW ir.ui.view: website.400_hide_error
+NEW ir.ui.view: website.403_hide_error
+NEW ir.ui.view: website.415_hide_error
+NEW ir.ui.view: website.422_hide_error
+NEW ir.ui.view: website.4xx_hide_error
+NEW ir.ui.view: website.digest_digest_view_form
+NEW ir.ui.view: website.font_links
+NEW ir.ui.view: website.footer_cookie_policy_link
+NEW ir.ui.view: website.icons_fonts_preload
+NEW ir.ui.view: website.new_page_template_about_us_s_company_team_spotlight
+NEW ir.ui.view: website.new_page_template_about_us_s_title_split
+NEW ir.ui.view: website.new_page_template_contact_us_s_duo_images
+NEW ir.ui.view: website.new_page_template_portfolio_s_announcement_scroll
+NEW ir.ui.view: website.new_page_template_portfolio_s_projects_grid_minimal
+NEW ir.ui.view: website.new_page_template_portfolio_s_timeline_images
+NEW ir.ui.view: website.new_page_template_portfolio_s_title
+NEW ir.ui.view: website.new_page_template_portfolio_s_title_split
+NEW ir.ui.view: website.new_page_template_s_announcement_scroll
+NEW ir.ui.view: website.new_page_template_s_company_team_spotlight
+NEW ir.ui.view: website.new_page_template_s_duo_images
+NEW ir.ui.view: website.new_page_template_s_projects_grid_minimal
+NEW ir.ui.view: website.new_page_template_s_timeline_images
+NEW ir.ui.view: website.new_page_template_s_title
+NEW ir.ui.view: website.new_page_template_s_title_split
+NEW ir.ui.view: website.new_page_template_services_s_title_split
+NEW ir.ui.view: website.new_page_template_utility_0_s_title_split
+NEW ir.ui.view: website.new_page_template_utility_1_s_title_split
+NEW ir.ui.view: website.new_page_template_utility_s_title_split
+NEW ir.ui.view: website.option_header_disclaimer
+NEW ir.ui.view: website.placeholder_header_disclaimer
+NEW ir.ui.view: website.s_about_bold
+NEW ir.ui.view: website.s_achievements_list
+NEW ir.ui.view: website.s_achievements_list_item
+NEW ir.ui.view: website.s_age_verification_popup
+NEW ir.ui.view: website.s_animated_cover
+NEW ir.ui.view: website.s_animated_number
+NEW ir.ui.view: website.s_avatars
+NEW ir.ui.view: website.s_awards_list
+NEW ir.ui.view: website.s_banner_contained
+NEW ir.ui.view: website.s_banner_glow
+NEW ir.ui.view: website.s_bento_features
+NEW ir.ui.view: website.s_bento_grid_avatars
+NEW ir.ui.view: website.s_chart_text
+NEW ir.ui.view: website.s_countdown_big_numbers_template
+NEW ir.ui.view: website.s_countdown_bordered_text_template
+NEW ir.ui.view: website.s_countdown_circle_template
+NEW ir.ui.view: website.s_countdown_dominoes_template
+NEW ir.ui.view: website.s_countdown_text_template
+NEW ir.ui.view: website.s_countdown_wrapped_numbers_template
+NEW ir.ui.view: website.s_cta_centered
+NEW ir.ui.view: website.s_duo_images
+NEW ir.ui.view: website.s_dynamic_snippet_carousel_preview_data
+NEW ir.ui.view: website.s_faq_collapse_centered
+NEW ir.ui.view: website.s_features_cards
+NEW ir.ui.view: website.s_features_image
+NEW ir.ui.view: website.s_hero_about
+NEW ir.ui.view: website.s_hero_maintenance
+NEW ir.ui.view: website.s_hero_minimalist
+NEW ir.ui.view: website.s_hours_and_place
+NEW ir.ui.view: website.s_icon
+NEW ir.ui.view: website.s_icon_list
+NEW ir.ui.view: website.s_image_features
+NEW ir.ui.view: website.s_image_text_full
+NEW ir.ui.view: website.s_intro_spotlight
+NEW ir.ui.view: website.s_launch_countdown
+NEW ir.ui.view: website.s_manifesto
+NEW ir.ui.view: website.s_masonry_block_quad_template
+NEW ir.ui.view: website.s_mega_menu_dropzone
+NEW ir.ui.view: website.s_numbers_inline
+NEW ir.ui.view: website.s_numbers_lite
+NEW ir.ui.view: website.s_opening_hours_alt
+NEW ir.ui.view: website.s_projects_grid
+NEW ir.ui.view: website.s_projects_grid_minimal
+NEW ir.ui.view: website.s_projects_list
+NEW ir.ui.view: website.s_references_columns
+NEW ir.ui.view: website.s_references_lite
+NEW ir.ui.view: website.s_references_tiles
+NEW ir.ui.view: website.s_services_grid
+NEW ir.ui.view: website.s_services_pack
+NEW ir.ui.view: website.s_showcase_square
+NEW ir.ui.view: website.s_splash_intro
+NEW ir.ui.view: website.s_text_block_split
+NEW ir.ui.view: website.s_text_bold
+NEW ir.ui.view: website.s_text_chart
+NEW ir.ui.view: website.s_text_image_full
+NEW ir.ui.view: website.s_title_split
+NEW ir.ui.view: website.s_website_form_bold
+NEW ir.ui.view: website.s_whatsapp
+NEW ir.ui.view: website.search_image_item_view
+NEW ir.ui.view: website.search_result_items
+NEW ir.ui.view: website.search_tags_highlight
+NEW ir.ui.view: website.theme_colors_preview
+NEW ir.ui.view: website.unpublished_badge
+NEW ir.ui.view: website.view_edit_llms
+DEL ir.ui.view: website.header_search_box_input
+DEL ir.ui.view: website.new_page_template_about_full_1_s_text_block_h1
+DEL ir.ui.view: website.new_page_template_about_full_1_s_text_block_h2
+DEL ir.ui.view: website.new_page_template_about_full_s_image_text
+DEL ir.ui.view: website.new_page_template_about_full_s_numbers
+DEL ir.ui.view: website.new_page_template_about_full_s_text_image
+DEL ir.ui.view: website.new_page_template_about_map_s_text_block_2nd
+DEL ir.ui.view: website.new_page_template_about_map_s_text_block_h1
+DEL ir.ui.view: website.new_page_template_about_map_s_text_block_h2
+DEL ir.ui.view: website.new_page_template_about_mini_s_text_block_h2
+DEL ir.ui.view: website.new_page_template_about_personal_s_image_text
+DEL ir.ui.view: website.new_page_template_about_personal_s_numbers
+DEL ir.ui.view: website.new_page_template_about_personal_s_text_block_h2
+DEL ir.ui.view: website.new_page_template_about_s_banner
+DEL ir.ui.view: website.new_page_template_about_s_company_team
+DEL ir.ui.view: website.new_page_template_about_s_cover
+DEL ir.ui.view: website.new_page_template_about_s_features
+DEL ir.ui.view: website.new_page_template_about_s_image_text
+DEL ir.ui.view: website.new_page_template_about_s_numbers
+DEL ir.ui.view: website.new_page_template_about_s_picture
+DEL ir.ui.view: website.new_page_template_about_s_text_block_2nd
+DEL ir.ui.view: website.new_page_template_about_s_text_block_h1
+DEL ir.ui.view: website.new_page_template_about_s_text_block_h2
+DEL ir.ui.view: website.new_page_template_about_s_text_cover
+DEL ir.ui.view: website.new_page_template_about_s_text_image
+DEL ir.ui.view: website.new_page_template_about_s_three_columns
+DEL ir.ui.view: website.new_page_template_about_timeline_s_text_block_h2
+DEL ir.ui.view: website.new_page_template_basic_2_s_text_block_h1
+DEL ir.ui.view: website.new_page_template_basic_s_picture
+DEL ir.ui.view: website.new_page_template_basic_s_quotes_carousel
+DEL ir.ui.view: website.new_page_template_basic_s_text_block_h1
+DEL ir.ui.view: website.new_page_template_basic_s_text_cover
+DEL ir.ui.view: website.new_page_template_gallery_s_banner
+DEL ir.ui.view: website.new_page_template_gallery_s_image_text_2nd
+DEL ir.ui.view: website.new_page_template_gallery_s_text_block_2nd
+DEL ir.ui.view: website.new_page_template_gallery_s_text_block_h1
+DEL ir.ui.view: website.new_page_template_landing_0_s_cover
+DEL ir.ui.view: website.new_page_template_landing_1_s_banner
+DEL ir.ui.view: website.new_page_template_landing_2_s_call_to_action
+DEL ir.ui.view: website.new_page_template_landing_2_s_cover
+DEL ir.ui.view: website.new_page_template_landing_2_s_text_block_h2
+DEL ir.ui.view: website.new_page_template_landing_2_s_three_columns
+DEL ir.ui.view: website.new_page_template_landing_3_s_call_to_action
+DEL ir.ui.view: website.new_page_template_landing_3_s_text_block_h2
+DEL ir.ui.view: website.new_page_template_landing_3_s_three_columns
+DEL ir.ui.view: website.new_page_template_landing_4_s_cover
+DEL ir.ui.view: website.new_page_template_landing_4_s_text_block_h2
+DEL ir.ui.view: website.new_page_template_landing_5_s_banner
+DEL ir.ui.view: website.new_page_template_landing_s_banner
+DEL ir.ui.view: website.new_page_template_landing_s_call_to_action
+DEL ir.ui.view: website.new_page_template_landing_s_color_blocks_2
+DEL ir.ui.view: website.new_page_template_landing_s_cover
+DEL ir.ui.view: website.new_page_template_landing_s_features
+DEL ir.ui.view: website.new_page_template_landing_s_showcase
+DEL ir.ui.view: website.new_page_template_landing_s_text_block_h2
+DEL ir.ui.view: website.new_page_template_landing_s_text_cover
+DEL ir.ui.view: website.new_page_template_landing_s_text_image
+DEL ir.ui.view: website.new_page_template_landing_s_three_columns
+DEL ir.ui.view: website.new_page_template_pricing_5_s_text_block_h1
+DEL ir.ui.view: website.new_page_template_pricing_s_image_text_2nd
+DEL ir.ui.view: website.new_page_template_pricing_s_text_block_2nd
+DEL ir.ui.view: website.new_page_template_pricing_s_text_block_h1
+DEL ir.ui.view: website.new_page_template_pricing_s_text_block_h2
+DEL ir.ui.view: website.new_page_template_s_banner
+DEL ir.ui.view: website.new_page_template_s_call_to_action
+DEL ir.ui.view: website.new_page_template_s_carousel
+DEL ir.ui.view: website.new_page_template_s_color_blocks_2
+DEL ir.ui.view: website.new_page_template_s_company_team
+DEL ir.ui.view: website.new_page_template_s_cover
+DEL ir.ui.view: website.new_page_template_s_features
+DEL ir.ui.view: website.new_page_template_s_image_gallery
+DEL ir.ui.view: website.new_page_template_s_image_text
+DEL ir.ui.view: website.new_page_template_s_image_text_2nd
+DEL ir.ui.view: website.new_page_template_s_images_wall
+DEL ir.ui.view: website.new_page_template_s_media_list
+DEL ir.ui.view: website.new_page_template_s_numbers
+DEL ir.ui.view: website.new_page_template_s_parallax
+DEL ir.ui.view: website.new_page_template_s_picture
+DEL ir.ui.view: website.new_page_template_s_quotes_carousel
+DEL ir.ui.view: website.new_page_template_s_references
+DEL ir.ui.view: website.new_page_template_s_showcase
+DEL ir.ui.view: website.new_page_template_s_text_block_2nd
+DEL ir.ui.view: website.new_page_template_s_text_block_h1
+DEL ir.ui.view: website.new_page_template_s_text_block_h2
+DEL ir.ui.view: website.new_page_template_s_text_cover
+DEL ir.ui.view: website.new_page_template_s_text_image
+DEL ir.ui.view: website.new_page_template_s_three_columns
+DEL ir.ui.view: website.new_page_template_services_0_s_three_columns
+DEL ir.ui.view: website.new_page_template_services_3_s_text_block_h1
+DEL ir.ui.view: website.new_page_template_services_s_image_text
+DEL ir.ui.view: website.new_page_template_services_s_image_text_2nd
+DEL ir.ui.view: website.new_page_template_services_s_parallax
+DEL ir.ui.view: website.new_page_template_services_s_text_block_2nd
+DEL ir.ui.view: website.new_page_template_services_s_text_block_h1
+DEL ir.ui.view: website.new_page_template_services_s_text_block_h2
+DEL ir.ui.view: website.new_page_template_services_s_text_cover
+DEL ir.ui.view: website.new_page_template_services_s_text_image
+DEL ir.ui.view: website.new_page_template_services_s_three_columns
+DEL ir.ui.view: website.new_page_template_team_0_s_three_columns
+DEL ir.ui.view: website.new_page_template_team_2_s_text_block_h1
+DEL ir.ui.view: website.new_page_template_team_s_image_gallery
+DEL ir.ui.view: website.new_page_template_team_s_image_text
+DEL ir.ui.view: website.new_page_template_team_s_image_text_2nd
+DEL ir.ui.view: website.new_page_template_team_s_images_wall
+DEL ir.ui.view: website.new_page_template_team_s_media_list
+DEL ir.ui.view: website.new_page_template_team_s_picture
+DEL ir.ui.view: website.new_page_template_team_s_text_block_h1
+DEL ir.ui.view: website.new_page_template_team_s_text_image
+DEL ir.ui.view: website.new_page_template_team_s_three_columns
+DEL ir.ui.view: website.one_hybrid
+DEL ir.ui.view: website.s_call_to_action_about
+DEL ir.ui.view: website.s_call_to_action_digital
+DEL ir.ui.view: website.s_call_to_action_menu
+DEL ir.ui.view: website.s_image_text_2nd
+DEL ir.ui.view: website.s_picture_only
+DEL ir.ui.view: website.s_text_block_2nd
+DEL ir.ui.view: website.s_text_block_h1
+DEL ir.ui.view: website.s_text_block_h2
+DEL ir.ui.view: website.s_text_block_h2_contact
+DEL ir.ui.view: website.s_three_columns_2nd
+DEL ir.ui.view: website.s_three_columns_menu
+DEL website: website.default_website [renamed to base module] (noupdate)
+DEL website.configurator.feature: website.feature_module_forum
+DEL website.configurator.feature: website.feature_module_stores_locator
+DEL website.configurator.feature: website.feature_module_success_stories
+DEL website.configurator.feature: website.feature_page_privacy_policy
+website.menu: website.main_menu (noupdate switched)
+website.menu: website.menu_home (noupdate switched)
+DEL website.menu: website.menu_contactus (noupdate)
+website.page: website.contactus_page (noupdate switched)
+website.page: website.homepage_page (noupdate switched)
+NEW website.page: website.privacy_policy_page
diff --git a/openupgrade_scripts/scripts/website_blog/20.0.1.1/noupdate_changes.xml b/openupgrade_scripts/scripts/website_blog/20.0.1.1/noupdate_changes.xml
new file mode 100644
index 00000000000..c8a262e38fb
--- /dev/null
+++ b/openupgrade_scripts/scripts/website_blog/20.0.1.1/noupdate_changes.xml
@@ -0,0 +1,14 @@
+
+
+
+ {"background-image": "url('/website_blog/static/src/img/cover_6.webp')", "resize_class": "o_record_has_cover o_half_screen_height", "opacity": "0.4", "background_color_class": "o_cc5"}
+
+
+ A new post has been published on the blog. Click here to access the blog :
+
+
+ Access post
+
+
+
+
diff --git a/openupgrade_scripts/scripts/website_blog/20.0.1.1/post-migration.py b/openupgrade_scripts/scripts/website_blog/20.0.1.1/post-migration.py
new file mode 100644
index 00000000000..22dc76ae81e
--- /dev/null
+++ b/openupgrade_scripts/scripts/website_blog/20.0.1.1/post-migration.py
@@ -0,0 +1,9 @@
+# Copyright 2026 Don Kendall
+# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl).
+
+from openupgradelib import openupgrade
+
+
+@openupgrade.migrate()
+def migrate(env, version):
+ openupgrade.load_data(env, "website_blog", "20.0.1.1/noupdate_changes.xml")
diff --git a/openupgrade_scripts/scripts/website_blog/20.0.1.1/upgrade_analysis.txt b/openupgrade_scripts/scripts/website_blog/20.0.1.1/upgrade_analysis.txt
new file mode 100644
index 00000000000..8a42aa87228
--- /dev/null
+++ b/openupgrade_scripts/scripts/website_blog/20.0.1.1/upgrade_analysis.txt
@@ -0,0 +1,97 @@
+---Models in module 'website_blog'---
+---Fields in module 'website_blog'---
+website_blog / blog.blog / website_message_ids (one2many): DEL relation: mail.message
+website_blog / blog.post / breadcrumb_visible (boolean) : NEW hasdefault: default
+website_blog / blog.post / post_date (datetime) : DEL
+website_blog / blog.post / publish_on (datetime) : NEW
+website_blog / blog.post / recommended_next_post_id (many2one): NEW relation: blog.post
+website_blog / blog.post / website_message_ids (one2many): DEL relation: mail.message
+website_blog / res.partner / blog_post_ids (one2many) : NEW relation: blog.post
+website_blog / website.track / blog_post_id (many2one) : NEW relation: blog.post
+---XML records in module 'website_blog'---
+blog.blog: website_blog.blog_blog_1 (noupdate switched)
+NEW ir.access: website_blog.blog_blog_employee
+NEW ir.access: website_blog.blog_blog_manager
+NEW ir.access: website_blog.blog_post_employee
+NEW ir.access: website_blog.blog_post_manager
+NEW ir.access: website_blog.blog_tag_category_manager
+NEW ir.access: website_blog.blog_tag_category_public
+NEW ir.access: website_blog.blog_tag_manager
+NEW ir.access: website_blog.blog_tag_public
+NEW ir.access: website_blog.website_blog_post_public
+NEW ir.access: website_blog.website_blog_public
+NEW ir.actions.act_window: website_blog.website_blog_visitor_blog_post_action
+DEL ir.model.access: website_blog.blog_blog
+DEL ir.model.access: website_blog.blog_blog_employee
+DEL ir.model.access: website_blog.blog_blog_portal
+DEL ir.model.access: website_blog.blog_blog_public
+DEL ir.model.access: website_blog.blog_post
+DEL ir.model.access: website_blog.blog_post_employee
+DEL ir.model.access: website_blog.blog_post_portal
+DEL ir.model.access: website_blog.blog_post_public
+DEL ir.model.access: website_blog.blog_tag_category
+DEL ir.model.access: website_blog.blog_tag_category_employee
+DEL ir.model.access: website_blog.blog_tag_category_portal
+DEL ir.model.access: website_blog.blog_tag_category_public
+DEL ir.model.access: website_blog.blog_tag_edition
+DEL ir.model.access: website_blog.blog_tag_employee
+DEL ir.model.access: website_blog.blog_tag_portal
+DEL ir.model.access: website_blog.blog_tag_public
+ir.model.constraint: website_blog.constraint_blog_tag_category_name_uniq (changed definition: is now 'False' ('unique (name)'))
+ir.model.constraint: website_blog.constraint_blog_tag_name_uniq (changed definition: is now 'False' ('unique (name)'))
+DEL ir.rule: website_blog.website_blog_post_public (noupdate)
+DEL ir.rule: website_blog.website_blog_public (noupdate)
+NEW ir.ui.view: website_blog.blog_post_card
+NEW ir.ui.view: website_blog.blog_post_comment_count
+NEW ir.ui.view: website_blog.blog_post_content_footer_archive
+NEW ir.ui.view: website_blog.blog_post_content_footer_share_links
+NEW ir.ui.view: website_blog.blog_post_content_mobile_toc
+NEW ir.ui.view: website_blog.blog_post_list_card
+NEW ir.ui.view: website_blog.blog_post_minimal_list_card
+NEW ir.ui.view: website_blog.blog_post_next_compact
+NEW ir.ui.view: website_blog.blog_post_next_full_cover
+NEW ir.ui.view: website_blog.blog_post_regular_cover_share_links
+NEW ir.ui.view: website_blog.blog_post_split_cover_share_links
+NEW ir.ui.view: website_blog.blog_post_split_sticky_card
+ir.ui.view: website_blog.blog_post_template_new_post (noupdate switched)
+NEW ir.ui.view: website_blog.opt_blog_bordered_grid_view
+NEW ir.ui.view: website_blog.opt_blog_compact_list_view
+NEW ir.ui.view: website_blog.opt_blog_fullwidth
+NEW ir.ui.view: website_blog.opt_blog_grid_columns_2
+NEW ir.ui.view: website_blog.opt_blog_grid_columns_3
+NEW ir.ui.view: website_blog.opt_blog_grid_columns_4
+NEW ir.ui.view: website_blog.opt_blog_large_list_view
+NEW ir.ui.view: website_blog.opt_blog_page_title
+NEW ir.ui.view: website_blog.opt_blog_post_footer_share_links_display
+NEW ir.ui.view: website_blog.opt_blog_post_footer_tags_display
+NEW ir.ui.view: website_blog.opt_blog_post_full_container
+NEW ir.ui.view: website_blog.opt_blog_post_full_width_cover
+NEW ir.ui.view: website_blog.opt_blog_post_header_author_avatar_display
+NEW ir.ui.view: website_blog.opt_blog_post_header_share_links_display
+NEW ir.ui.view: website_blog.opt_blog_post_header_tags_display
+NEW ir.ui.view: website_blog.opt_blog_post_large_container
+NEW ir.ui.view: website_blog.opt_blog_post_split_cover
+NEW ir.ui.view: website_blog.opt_blog_post_toc_display
+NEW ir.ui.view: website_blog.opt_blog_promoted_post
+NEW ir.ui.view: website_blog.opt_blog_simple_list_view
+NEW ir.ui.view: website_blog.opt_blog_split_grid_view
+NEW ir.ui.view: website_blog.opt_posts_loop_show_date
+NEW ir.ui.view: website_blog.opt_posts_loop_show_filter
+NEW ir.ui.view: website_blog.opt_posts_loop_show_tags
+NEW ir.ui.view: website_blog.opt_sidebar_blog_index_about_us
+NEW ir.ui.view: website_blog.post_published_info
+NEW ir.ui.view: website_blog.post_tags
+NEW ir.ui.view: website_blog.post_unpublished_badge
+NEW ir.ui.view: website_blog.robots
+NEW ir.ui.view: website_blog.s_blog_posts_carousel
+NEW ir.ui.view: website_blog.s_blog_posts_carousel_preview_card
+NEW ir.ui.view: website_blog.s_dynamic_snippet_blog_posts_carousel_preview_data
+NEW ir.ui.view: website_blog.website_blog_visitor_page_view_search
+NEW ir.ui.view: website_blog.website_blog_visitor_page_view_tree
+NEW ir.ui.view: website_blog.website_blog_visitor_track_view_tree
+NEW ir.ui.view: website_blog.website_blog_visitor_view_form
+NEW ir.ui.view: website_blog.website_blog_visitor_view_tree
+mail.message.subtype: website_blog.mt_blog_blog_published (noupdate switched)
+NEW res.groups: website_blog.group_website_blog_manager
+NEW res.groups.privilege: website_blog.res_groups_privilege_blog
+website.menu: website_blog.menu_blog (noupdate switched)
diff --git a/openupgrade_scripts/scripts/website_event_track/20.0.1.3/noupdate_changes.xml b/openupgrade_scripts/scripts/website_event_track/20.0.1.3/noupdate_changes.xml
new file mode 100644
index 00000000000..eb4e1b2e83c
--- /dev/null
+++ b/openupgrade_scripts/scripts/website_event_track/20.0.1.3/noupdate_changes.xml
@@ -0,0 +1,262 @@
+
+
+
+ mail.mail_notification_light
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Your Event Track
+
+
+ |
+
+
+
+
+ |
+
+
+
+
+ |
+
+
+ |
+
+
+
+
+
+
+
+
+
+
+
+
+ |
+ Add this talk to your calendar
+ |
+
+
+
+
+ |
+
+
+
+
+ |
+
+
+
+
+ |
+
+
+
+
+
+
+ See you soon,
+
+ --
+ YourCompany
+
+
+ |
+
+
+
+
+ |
+
+
+ |
+
+
+
+
+
+
+
+
+
+
+
+ |
+
+ May 4, 20217:00 AM
+ - 5:00 PM
+
+ FromMay 4, 2021
+ - 7:00 AM
+ To
+ May 6, 2021
+ - 5:00 PM
+
+
+
+ Europe/Brussels
+
+
+ |
+
+
+
+
+ |
+
+
+
+
+ Teksa SpA
+
+
+ Puerto Madero 9710
+
+
+
+ Of A15, Santiago (RM)
+
+
+
+ Pudahuel,
+
+ C1,
+
+
+ 98450
+
+
+
+
+ Argentina
+
+
+
+
+ |
+
+
+ |
+
+
+ | Note: The start and end times of the talk were not specified when the email was sent. The times indicated in this message correspond to those of the event.
+ |
+
+
+
+
+
+
+ |
+
+
+
+
+
+
+ Questions about this talk?
+ Please contact the organizer:
+
+ - YourCompany
+
+ - Mail:
+
+
+ - Phone:
+
+
+
+
+ |
+
+
+
+
+
+ |
+
+
+ |
+
+
+ |
+
+
+
+
+
+ |
+
+
+ |
+
+
+ |
+
+
+ |
+
+
+
+ |
+
+
+
+ |
+
+ |
+
+
+
+
+
diff --git a/openupgrade_scripts/scripts/website_event_track/20.0.1.3/post-migration.py b/openupgrade_scripts/scripts/website_event_track/20.0.1.3/post-migration.py
new file mode 100644
index 00000000000..01a5a332491
--- /dev/null
+++ b/openupgrade_scripts/scripts/website_event_track/20.0.1.3/post-migration.py
@@ -0,0 +1,15 @@
+# Copyright 2026 Don Kendall
+# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl).
+
+from openupgradelib import openupgrade
+
+
+@openupgrade.migrate()
+def migrate(env, version):
+ openupgrade.load_data(env, "website_event_track", "20.0.1.3/noupdate_changes.xml")
+ openupgrade.delete_record_translations(
+ env.cr,
+ "website_event_track",
+ ["mail_template_data_track_reminder"],
+ ["body_html"],
+ )
diff --git a/openupgrade_scripts/scripts/website_event_track/20.0.1.3/upgrade_analysis.txt b/openupgrade_scripts/scripts/website_event_track/20.0.1.3/upgrade_analysis.txt
new file mode 100644
index 00000000000..04692ada0d4
--- /dev/null
+++ b/openupgrade_scripts/scripts/website_event_track/20.0.1.3/upgrade_analysis.txt
@@ -0,0 +1,65 @@
+---Models in module 'website_event_track'---
+---Fields in module 'website_event_track'---
+website_event_track / event.event / location_display_background (binary): NEW attachment: True
+website_event_track / event.event / location_display_upcoming_track_count (selection): NEW required, selection_keys: ['2', '3', '4', '5'], hasdefault: default
+website_event_track / event.track / publish_on (datetime) : NEW
+website_event_track / event.track / published_date (datetime) : NEW
+website_event_track / event.track / website_message_ids (one2many): DEL relation: mail.message
+---XML records in module 'website_event_track'---
+event.track.stage: website_event_track.event_track_stage0 (noupdate switched)
+event.track.stage: website_event_track.event_track_stage1 (noupdate switched)
+event.track.stage: website_event_track.event_track_stage2 (noupdate switched)
+event.track.stage: website_event_track.event_track_stage3 (noupdate switched)
+event.track.stage: website_event_track.event_track_stage4 (noupdate switched)
+event.track.stage: website_event_track.event_track_stage5 (noupdate switched)
+NEW ir.access: website_event_track.access_event_track_employee
+NEW ir.access: website_event_track.access_event_track_location_manager
+NEW ir.access: website_event_track.access_event_track_location_user
+NEW ir.access: website_event_track.access_event_track_manager
+NEW ir.access: website_event_track.access_event_track_stage_manager
+NEW ir.access: website_event_track.access_event_track_stage_public
+NEW ir.access: website_event_track.access_event_track_tag_category_user
+NEW ir.access: website_event_track.access_event_track_tag_employee
+NEW ir.access: website_event_track.access_event_track_tag_manager
+NEW ir.access: website_event_track.access_event_track_tag_user
+NEW ir.access: website_event_track.access_event_track_user
+NEW ir.access: website_event_track.access_event_track_visitor_manager
+NEW ir.access: website_event_track.event_track_public
+NEW ir.access: website_event_track.ir_rule_event_track_tag_public
+ir.actions.act_window: website_event_track.event_track_action_from_visitor (deleted domain)
+ir.actions.act_window: website_event_track.website_visitor_action_from_track (deleted domain)
+DEL ir.asset: website_event_track.s_searchbar_000_xml
+DEL ir.model.access: website_event_track.access_event_track_employee
+DEL ir.model.access: website_event_track.access_event_track_location_manager
+DEL ir.model.access: website_event_track.access_event_track_location_user
+DEL ir.model.access: website_event_track.access_event_track_manager
+DEL ir.model.access: website_event_track.access_event_track_portal
+DEL ir.model.access: website_event_track.access_event_track_public
+DEL ir.model.access: website_event_track.access_event_track_stage_employee
+DEL ir.model.access: website_event_track.access_event_track_stage_manager
+DEL ir.model.access: website_event_track.access_event_track_stage_portal
+DEL ir.model.access: website_event_track.access_event_track_stage_public
+DEL ir.model.access: website_event_track.access_event_track_tag_category_user
+DEL ir.model.access: website_event_track.access_event_track_tag_employee
+DEL ir.model.access: website_event_track.access_event_track_tag_manager
+DEL ir.model.access: website_event_track.access_event_track_tag_portal
+DEL ir.model.access: website_event_track.access_event_track_tag_public
+DEL ir.model.access: website_event_track.access_event_track_tag_user
+DEL ir.model.access: website_event_track.access_event_track_user
+DEL ir.model.access: website_event_track.access_event_track_visitor
+DEL ir.model.access: website_event_track.access_event_track_visitor_manager
+ir.model.constraint: website_event_track.constraint_event_track_tag_name_uniq (changed definition: is now 'False' ('unique (name)'))
+DEL ir.rule: website_event_track.event_track_public (noupdate)
+DEL ir.rule: website_event_track.ir_rule_event_track_tag_public (noupdate)
+NEW ir.ui.view: website_event_track.event_track_location_display
+NEW ir.ui.view: website_event_track.event_track_location_display_content
+NEW ir.ui.view: website_event_track.event_track_location_display_empty_state
+NEW ir.ui.view: website_event_track.event_track_location_display_no_cookies_bar
+NEW ir.ui.view: website_event_track.event_track_location_display_speaker
+NEW ir.ui.view: website_event_track.event_track_location_display_track
+NEW ir.ui.view: website_event_track.website_event_track_favorite_submenu
+mail.message.subtype: website_event_track.mt_event_track (noupdate switched)
+mail.message.subtype: website_event_track.mt_track_blocked (noupdate switched)
+mail.message.subtype: website_event_track.mt_track_ready (noupdate switched)
+mail.template: website_event_track.mail_template_data_track_confirmation (noupdate switched)
+mail.template: website_event_track.mail_template_data_track_reminder (noupdate switched)
diff --git a/openupgrade_scripts/scripts/website_forum/20.0.1.2/noupdate_changes.xml b/openupgrade_scripts/scripts/website_forum/20.0.1.2/noupdate_changes.xml
new file mode 100644
index 00000000000..e882423cc21
--- /dev/null
+++ b/openupgrade_scripts/scripts/website_forum/20.0.1.2/noupdate_changes.xml
@@ -0,0 +1,118 @@
+
+
+
+ A new answer on has been posted. Click here to access the question:
+
+
+
+ A new question on has been posted. Click here to access the question :
+
+
+
+ A new question on has been posted and requires your validation. Click here to access the question :
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Answers
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/openupgrade_scripts/scripts/website_forum/20.0.1.2/post-migration.py b/openupgrade_scripts/scripts/website_forum/20.0.1.2/post-migration.py
new file mode 100644
index 00000000000..73becc5137f
--- /dev/null
+++ b/openupgrade_scripts/scripts/website_forum/20.0.1.2/post-migration.py
@@ -0,0 +1,9 @@
+# Copyright 2026 Don Kendall
+# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl).
+
+from openupgradelib import openupgrade
+
+
+@openupgrade.migrate()
+def migrate(env, version):
+ openupgrade.load_data(env, "website_forum", "20.0.1.2/noupdate_changes.xml")
diff --git a/openupgrade_scripts/scripts/website_forum/20.0.1.2/upgrade_analysis.txt b/openupgrade_scripts/scripts/website_forum/20.0.1.2/upgrade_analysis.txt
new file mode 100644
index 00000000000..7c65ea649b3
--- /dev/null
+++ b/openupgrade_scripts/scripts/website_forum/20.0.1.2/upgrade_analysis.txt
@@ -0,0 +1,218 @@
+---Models in module 'website_forum'---
+new model forum.post.comment
+---Fields in module 'website_forum'---
+website_forum / forum.forum / website_message_ids (one2many): DEL relation: mail.message
+website_forum / forum.post / comment_ids (one2many) : NEW relation: forum.post.comment
+website_forum / forum.post / follower_ids (many2many) : NEW relation: res.partner
+website_forum / forum.post / message_follower_ids (one2many): DEL relation: mail.followers
+website_forum / forum.post / message_ids (one2many) : DEL relation: mail.message
+website_forum / forum.post / rating_ids (one2many) : DEL relation: rating.rating
+website_forum / forum.post / website_message_ids (one2many): DEL relation: mail.message
+website_forum / forum.post / write_date_content (datetime) : NEW
+website_forum / forum.post.comment / body (html) : NEW
+website_forum / forum.post.comment / post_id (many2one) : NEW relation: forum.post, required
+website_forum / forum.tag / follower_ids (many2many) : NEW relation: res.partner
+website_forum / forum.tag / message_follower_ids (one2many): DEL relation: mail.followers
+website_forum / forum.tag / message_ids (one2many) : DEL relation: mail.message
+website_forum / forum.tag / rating_ids (one2many) : DEL relation: rating.rating
+website_forum / forum.tag / website_message_ids (one2many): DEL relation: mail.message
+---XML records in module 'website_forum'---
+forum.forum: website_forum.forum_help (noupdate switched)
+forum.post.reason: website_forum.reason_1 (noupdate switched)
+forum.post.reason: website_forum.reason_11 (noupdate switched)
+forum.post.reason: website_forum.reason_12 (noupdate switched)
+forum.post.reason: website_forum.reason_13 (noupdate switched)
+forum.post.reason: website_forum.reason_14 (noupdate switched)
+forum.post.reason: website_forum.reason_15 (noupdate switched)
+forum.post.reason: website_forum.reason_2 (noupdate switched)
+forum.post.reason: website_forum.reason_3 (noupdate switched)
+forum.post.reason: website_forum.reason_4 (noupdate switched)
+forum.post.reason: website_forum.reason_6 (noupdate switched)
+forum.post.reason: website_forum.reason_7 (noupdate switched)
+forum.post.reason: website_forum.reason_8 (noupdate switched)
+forum.post.reason: website_forum.reason_9 (noupdate switched)
+gamification.badge: website_forum.badge_23 (noupdate switched)
+gamification.badge: website_forum.badge_25 (noupdate switched)
+gamification.badge: website_forum.badge_26 (noupdate switched)
+gamification.badge: website_forum.badge_31 (noupdate switched)
+gamification.badge: website_forum.badge_32 (noupdate switched)
+gamification.badge: website_forum.badge_5 (noupdate switched)
+gamification.badge: website_forum.badge_6 (noupdate switched)
+gamification.badge: website_forum.badge_7 (noupdate switched)
+gamification.badge: website_forum.badge_a_1 (noupdate switched)
+gamification.badge: website_forum.badge_a_2 (noupdate switched)
+gamification.badge: website_forum.badge_a_3 (noupdate switched)
+gamification.badge: website_forum.badge_a_4 (noupdate switched)
+gamification.badge: website_forum.badge_a_5 (noupdate switched)
+gamification.badge: website_forum.badge_a_6 (noupdate switched)
+gamification.badge: website_forum.badge_a_8 (noupdate switched)
+gamification.badge: website_forum.badge_p_1 (noupdate switched)
+gamification.badge: website_forum.badge_p_2 (noupdate switched)
+gamification.badge: website_forum.badge_p_4 (noupdate switched)
+gamification.badge: website_forum.badge_q_1 (noupdate switched)
+gamification.badge: website_forum.badge_q_10 (noupdate switched)
+gamification.badge: website_forum.badge_q_2 (noupdate switched)
+gamification.badge: website_forum.badge_q_3 (noupdate switched)
+gamification.badge: website_forum.badge_q_4 (noupdate switched)
+gamification.badge: website_forum.badge_q_5 (noupdate switched)
+gamification.badge: website_forum.badge_q_6 (noupdate switched)
+gamification.badge: website_forum.badge_q_7 (noupdate switched)
+gamification.badge: website_forum.badge_q_8 (noupdate switched)
+gamification.badge: website_forum.badge_q_9 (noupdate switched)
+gamification.challenge: website_forum.challenge_chief_commentator (noupdate switched)
+gamification.challenge: website_forum.challenge_commentator (noupdate switched)
+gamification.challenge: website_forum.challenge_configure_profile (noupdate switched)
+gamification.challenge: website_forum.challenge_critic (noupdate switched)
+gamification.challenge: website_forum.challenge_disciplined (noupdate switched)
+gamification.challenge: website_forum.challenge_editor (noupdate switched)
+gamification.challenge: website_forum.challenge_enlightened (noupdate switched)
+gamification.challenge: website_forum.challenge_famous_question (noupdate switched)
+gamification.challenge: website_forum.challenge_favorite_question_1 (noupdate switched)
+gamification.challenge: website_forum.challenge_favorite_question_5 (noupdate switched)
+gamification.challenge: website_forum.challenge_good_answer (noupdate switched)
+gamification.challenge: website_forum.challenge_good_question (noupdate switched)
+gamification.challenge: website_forum.challenge_great_answer (noupdate switched)
+gamification.challenge: website_forum.challenge_great_question (noupdate switched)
+gamification.challenge: website_forum.challenge_guru (noupdate switched)
+gamification.challenge: website_forum.challenge_nice_answer (noupdate switched)
+gamification.challenge: website_forum.challenge_nice_question (noupdate switched)
+gamification.challenge: website_forum.challenge_notable_question (noupdate switched)
+gamification.challenge: website_forum.challenge_peer_pressure (noupdate switched)
+gamification.challenge: website_forum.challenge_popular_question (noupdate switched)
+gamification.challenge: website_forum.challenge_pundit (noupdate switched)
+gamification.challenge: website_forum.challenge_scholar (noupdate switched)
+gamification.challenge: website_forum.challenge_self_learner (noupdate switched)
+gamification.challenge: website_forum.challenge_stellar_question_25 (noupdate switched)
+gamification.challenge: website_forum.challenge_student (noupdate switched)
+gamification.challenge: website_forum.challenge_supporter (noupdate switched)
+gamification.challenge: website_forum.challenge_taxonomist (noupdate switched)
+gamification.challenge: website_forum.challenge_teacher (noupdate switched)
+gamification.challenge.line: website_forum.line_chief_commentator (noupdate switched)
+gamification.challenge.line: website_forum.line_commentator (noupdate switched)
+gamification.challenge.line: website_forum.line_configure_profile (noupdate switched)
+gamification.challenge.line: website_forum.line_critic (noupdate switched)
+gamification.challenge.line: website_forum.line_disciplined (noupdate switched)
+gamification.challenge.line: website_forum.line_editor (noupdate switched)
+gamification.challenge.line: website_forum.line_enlightened (noupdate switched)
+gamification.challenge.line: website_forum.line_famous_question (noupdate switched)
+gamification.challenge.line: website_forum.line_favorite_question_1 (noupdate switched)
+gamification.challenge.line: website_forum.line_favorite_question_5 (noupdate switched)
+gamification.challenge.line: website_forum.line_good_answer (noupdate switched)
+gamification.challenge.line: website_forum.line_good_question (noupdate switched)
+gamification.challenge.line: website_forum.line_great_answer (noupdate switched)
+gamification.challenge.line: website_forum.line_great_question (noupdate switched)
+gamification.challenge.line: website_forum.line_guru (noupdate switched)
+gamification.challenge.line: website_forum.line_nice_answer (noupdate switched)
+gamification.challenge.line: website_forum.line_nice_question (noupdate switched)
+gamification.challenge.line: website_forum.line_notable_question (noupdate switched)
+gamification.challenge.line: website_forum.line_peer_pressure (noupdate switched)
+gamification.challenge.line: website_forum.line_popular_question (noupdate switched)
+gamification.challenge.line: website_forum.line_pundit (noupdate switched)
+gamification.challenge.line: website_forum.line_scholar (noupdate switched)
+gamification.challenge.line: website_forum.line_self_learner (noupdate switched)
+gamification.challenge.line: website_forum.line_stellar_question_25 (noupdate switched)
+gamification.challenge.line: website_forum.line_student (noupdate switched)
+gamification.challenge.line: website_forum.line_supporter (noupdate switched)
+gamification.challenge.line: website_forum.line_taxonomist (noupdate switched)
+gamification.challenge.line: website_forum.line_teacher (noupdate switched)
+gamification.goal.definition: website_forum.definition_commentator (noupdate switched)
+gamification.goal.definition: website_forum.definition_configure_profile (noupdate switched)
+gamification.goal.definition: website_forum.definition_critic (noupdate switched)
+gamification.goal.definition: website_forum.definition_disciplined (noupdate switched)
+gamification.goal.definition: website_forum.definition_editor (noupdate switched)
+gamification.goal.definition: website_forum.definition_enlightened (noupdate switched)
+gamification.goal.definition: website_forum.definition_famous_question (noupdate switched)
+gamification.goal.definition: website_forum.definition_favorite_question_1 (noupdate switched)
+gamification.goal.definition: website_forum.definition_favorite_question_5 (noupdate switched)
+gamification.goal.definition: website_forum.definition_good_answer (noupdate switched)
+gamification.goal.definition: website_forum.definition_good_question (noupdate switched)
+gamification.goal.definition: website_forum.definition_great_answer (noupdate switched)
+gamification.goal.definition: website_forum.definition_great_question (noupdate switched)
+gamification.goal.definition: website_forum.definition_guru (noupdate switched)
+gamification.goal.definition: website_forum.definition_nice_answer (noupdate switched)
+gamification.goal.definition: website_forum.definition_nice_question (noupdate switched)
+gamification.goal.definition: website_forum.definition_notable_question (noupdate switched)
+gamification.goal.definition: website_forum.definition_peer_pressure (noupdate switched)
+gamification.goal.definition: website_forum.definition_popular_question (noupdate switched)
+gamification.goal.definition: website_forum.definition_pundit (noupdate switched)
+gamification.goal.definition: website_forum.definition_scholar (noupdate switched)
+gamification.goal.definition: website_forum.definition_self_learner (noupdate switched)
+gamification.goal.definition: website_forum.definition_stellar_question_25 (noupdate switched)
+gamification.goal.definition: website_forum.definition_student (noupdate switched)
+gamification.goal.definition: website_forum.definition_supporter (noupdate switched)
+gamification.goal.definition: website_forum.definition_taxonomist (noupdate switched)
+gamification.goal.definition: website_forum.definition_teacher (noupdate switched)
+NEW ir.access: website_forum.access_forum_forum_manager
+NEW ir.access: website_forum.access_forum_forum_public
+NEW ir.access: website_forum.access_forum_post_comment_portal
+NEW ir.access: website_forum.access_forum_post_comment_public
+NEW ir.access: website_forum.access_forum_post_comment_user
+NEW ir.access: website_forum.access_forum_post_portal
+NEW ir.access: website_forum.access_forum_post_public
+NEW ir.access: website_forum.access_forum_post_reason_public
+NEW ir.access: website_forum.access_forum_post_reason_website_designer
+NEW ir.access: website_forum.access_forum_post_user
+NEW ir.access: website_forum.access_forum_tag_public
+NEW ir.access: website_forum.access_forum_tag_user
+NEW ir.access: website_forum.website_forum
+NEW ir.access: website_forum.website_forum_create_website_designer
+NEW ir.access: website_forum.website_forum_post
+NEW ir.access: website_forum.website_forum_post_comment
+NEW ir.access: website_forum.website_forum_post_vote_all
+NEW ir.access: website_forum.website_forum_post_vote_own
+NEW ir.access: website_forum.website_forum_post_vote_own_1
+NEW ir.access: website_forum.website_forum_tag
+ir.actions.act_url: website_forum.action_open_forum (noupdate switched)
+ir.actions.act_window: website_forum.forum_post_action (noupdate switched)
+ir.actions.act_window: website_forum.forum_post_action_favorites (deleted domain) (noupdate switched)
+ir.actions.act_window: website_forum.forum_post_action_forum_main (deleted domain) (noupdate switched)
+DEL ir.model.access: website_forum.access_forum_forum_employee
+DEL ir.model.access: website_forum.access_forum_forum_manager
+DEL ir.model.access: website_forum.access_forum_forum_portal
+DEL ir.model.access: website_forum.access_forum_forum_public
+DEL ir.model.access: website_forum.access_forum_post_portal
+DEL ir.model.access: website_forum.access_forum_post_public
+DEL ir.model.access: website_forum.access_forum_post_reason_portal
+DEL ir.model.access: website_forum.access_forum_post_reason_public
+DEL ir.model.access: website_forum.access_forum_post_reason_user
+DEL ir.model.access: website_forum.access_forum_post_user
+DEL ir.model.access: website_forum.access_forum_post_vote_portal
+DEL ir.model.access: website_forum.access_forum_post_vote_user
+DEL ir.model.access: website_forum.access_forum_tag_portal
+DEL ir.model.access: website_forum.access_forum_tag_public
+DEL ir.model.access: website_forum.access_forum_tag_user
+ir.model.constraint: website_forum.constraint_forum_post_vote_vote_uniq (changed definition: is now 'False' ('unique (post_id, user_id)'))
+NEW ir.model.constraint: website_forum.constraint_forum_tag_forum_id_posts_count_idx
+ir.model.constraint: website_forum.constraint_forum_tag_name_uniq (changed definition: is now 'False' ('unique (name, forum_id)'))
+DEL ir.rule: website_forum.website_forum_connected (noupdate)
+DEL ir.rule: website_forum.website_forum_connected_post (noupdate)
+DEL ir.rule: website_forum.website_forum_connected_tag (noupdate)
+DEL ir.rule: website_forum.website_forum_create_website_designer (noupdate)
+DEL ir.rule: website_forum.website_forum_post_vote_all (noupdate)
+DEL ir.rule: website_forum.website_forum_post_vote_own (noupdate)
+DEL ir.rule: website_forum.website_forum_private (noupdate)
+DEL ir.rule: website_forum.website_forum_private_post (noupdate)
+DEL ir.rule: website_forum.website_forum_private_tag (noupdate)
+DEL ir.rule: website_forum.website_forum_public (noupdate)
+DEL ir.rule: website_forum.website_forum_public_post (noupdate)
+DEL ir.rule: website_forum.website_forum_public_tag (noupdate)
+NEW ir.ui.view: website_forum.follow_button
+NEW ir.ui.view: website_forum.forum_post_link
+ir.ui.view: website_forum.forum_post_template_new_answer (noupdate switched)
+ir.ui.view: website_forum.forum_post_template_new_question (noupdate switched)
+ir.ui.view: website_forum.forum_post_template_validation (noupdate switched)
+ir.ui.view: website_forum.forum_post_view_form (noupdate switched)
+ir.ui.view: website_forum.forum_post_view_graph (noupdate switched)
+ir.ui.view: website_forum.forum_post_view_kanban (noupdate switched)
+ir.ui.view: website_forum.forum_post_view_search (noupdate switched)
+ir.ui.view: website_forum.forum_post_view_tree (noupdate switched)
+DEL ir.ui.view: website_forum.follow
+mail.message.subtype: website_forum.mt_answer_edit (noupdate switched)
+mail.message.subtype: website_forum.mt_answer_new (noupdate switched)
+NEW mail.message.subtype: website_forum.mt_ask_validation
+NEW mail.message.subtype: website_forum.mt_comment_new
+mail.message.subtype: website_forum.mt_forum_answer_new (noupdate switched)
+mail.message.subtype: website_forum.mt_forum_question_new (noupdate switched)
+mail.message.subtype: website_forum.mt_question_edit (noupdate switched)
+mail.message.subtype: website_forum.mt_question_new (noupdate switched)
+website.menu: website_forum.menu_website_forums (noupdate switched)
diff --git a/openupgrade_scripts/scripts/website_livechat/20.0.1.0/noupdate_changes.xml b/openupgrade_scripts/scripts/website_livechat/20.0.1.0/noupdate_changes.xml
new file mode 100644
index 00000000000..20a22a6b6f3
--- /dev/null
+++ b/openupgrade_scripts/scripts/website_livechat/20.0.1.0/noupdate_changes.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
diff --git a/openupgrade_scripts/scripts/website_livechat/20.0.1.0/post-migration.py b/openupgrade_scripts/scripts/website_livechat/20.0.1.0/post-migration.py
new file mode 100644
index 00000000000..9f1e13d3e4f
--- /dev/null
+++ b/openupgrade_scripts/scripts/website_livechat/20.0.1.0/post-migration.py
@@ -0,0 +1,9 @@
+# Copyright 2026 Don Kendall
+# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl).
+
+from openupgradelib import openupgrade
+
+
+@openupgrade.migrate()
+def migrate(env, version):
+ openupgrade.load_data(env, "website_livechat", "20.0.1.0/noupdate_changes.xml")
diff --git a/openupgrade_scripts/scripts/website_livechat/20.0.1.0/upgrade_analysis.txt b/openupgrade_scripts/scripts/website_livechat/20.0.1.0/upgrade_analysis.txt
new file mode 100644
index 00000000000..eb02f0ecdf3
--- /dev/null
+++ b/openupgrade_scripts/scripts/website_livechat/20.0.1.0/upgrade_analysis.txt
@@ -0,0 +1,9 @@
+---Models in module 'website_livechat'---
+---Fields in module 'website_livechat'---
+website_livechat / website.visitor / livechat_operator_id (many2one): DEL relation: res.partner
+---XML records in module 'website_livechat'---
+NEW ir.access: website_livechat.access_website_track_livechat_users
+NEW ir.access: website_livechat.access_website_visitor_livechat_users
+ir.actions.act_window: website_livechat.website_visitor_livechat_session_action (deleted domain)
+DEL ir.model.access: website_livechat.access_website_track_livechat_users
+DEL ir.model.access: website_livechat.access_website_visitor_livechat_users
diff --git a/openupgrade_scripts/scripts/website_livechat/20.0.1.0/upgrade_analysis_work.txt b/openupgrade_scripts/scripts/website_livechat/20.0.1.0/upgrade_analysis_work.txt
new file mode 100644
index 00000000000..8aedf62dc81
--- /dev/null
+++ b/openupgrade_scripts/scripts/website_livechat/20.0.1.0/upgrade_analysis_work.txt
@@ -0,0 +1,13 @@
+---Models in module 'website_livechat'---
+---Fields in module 'website_livechat'---
+website_livechat / website.visitor / livechat_operator_id (many2one): DEL relation: res.partner
+# NOTHING TO DO: the column is left in place for database_cleanup
+---XML records in module 'website_livechat'---
+NEW ir.access: website_livechat.access_website_track_livechat_users
+NEW ir.access: website_livechat.access_website_visitor_livechat_users
+# NOTHING TO DO: base folds ir.model.access and ir.rule into ir.access, keeping the xml_ids
+ir.actions.act_window: website_livechat.website_visitor_livechat_session_action (deleted domain)
+# NOTHING TO DO: the record is not noupdate, so the module update rewrites the domain
+DEL ir.model.access: website_livechat.access_website_track_livechat_users
+DEL ir.model.access: website_livechat.access_website_visitor_livechat_users
+# NOTHING TO DO: base folds ir.model.access and ir.rule into ir.access, keeping the xml_ids
diff --git a/openupgrade_scripts/scripts/website_profile/20.0.1.0/noupdate_changes.xml b/openupgrade_scripts/scripts/website_profile/20.0.1.0/noupdate_changes.xml
new file mode 100644
index 00000000000..d189de0643b
--- /dev/null
+++ b/openupgrade_scripts/scripts/website_profile/20.0.1.0/noupdate_changes.xml
@@ -0,0 +1,19 @@
+
+
+
+
+
+ Hello Marc Demo,
+ You have been invited to validate your email in order to get access to "YourCompany" website.
+ To validate your email, please click on the button below:
+
+ Thanks for your participation!
+
+
+
+
+ mail.mail_notification_layout
+
+
diff --git a/openupgrade_scripts/scripts/website_profile/20.0.1.0/post-migration.py b/openupgrade_scripts/scripts/website_profile/20.0.1.0/post-migration.py
new file mode 100644
index 00000000000..a46f5b54636
--- /dev/null
+++ b/openupgrade_scripts/scripts/website_profile/20.0.1.0/post-migration.py
@@ -0,0 +1,15 @@
+# Copyright 2026 Don Kendall
+# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl).
+
+from openupgradelib import openupgrade
+
+
+@openupgrade.migrate()
+def migrate(env, version):
+ openupgrade.load_data(env, "website_profile", "20.0.1.0/noupdate_changes.xml")
+ openupgrade.delete_record_translations(
+ env.cr,
+ "website_profile",
+ ["validation_email"],
+ ["body_html"],
+ )
diff --git a/openupgrade_scripts/scripts/website_profile/20.0.1.0/upgrade_analysis.txt b/openupgrade_scripts/scripts/website_profile/20.0.1.0/upgrade_analysis.txt
new file mode 100644
index 00000000000..c0bc78f9f29
--- /dev/null
+++ b/openupgrade_scripts/scripts/website_profile/20.0.1.0/upgrade_analysis.txt
@@ -0,0 +1,8 @@
+---Models in module 'website_profile'---
+---Fields in module 'website_profile'---
+website_profile / gamification.badge / publish_on (datetime) : NEW
+website_profile / gamification.badge / published_date (datetime) : NEW
+---XML records in module 'website_profile'---
+NEW ir.access: website_profile.gamification_karma_rank_access_restricted_editor
+DEL ir.model.access: website_profile.gamification_karma_rank_access_restricted_editor
+mail.template: website_profile.validation_email (noupdate switched)
diff --git a/openupgrade_scripts/scripts/website_profile/20.0.1.0/upgrade_analysis_work.txt b/openupgrade_scripts/scripts/website_profile/20.0.1.0/upgrade_analysis_work.txt
new file mode 100644
index 00000000000..2ed75546a7c
--- /dev/null
+++ b/openupgrade_scripts/scripts/website_profile/20.0.1.0/upgrade_analysis_work.txt
@@ -0,0 +1,11 @@
+---Models in module 'website_profile'---
+---Fields in module 'website_profile'---
+website_profile / gamification.badge / publish_on (datetime) : NEW
+website_profile / gamification.badge / published_date (datetime) : NEW
+# NOTHING TO DO: empty is the right value for existing records
+---XML records in module 'website_profile'---
+NEW ir.access: website_profile.gamification_karma_rank_access_restricted_editor
+DEL ir.model.access: website_profile.gamification_karma_rank_access_restricted_editor
+# NOTHING TO DO: base folds ir.model.access and ir.rule into ir.access, keeping the xml_ids
+mail.template: website_profile.validation_email (noupdate switched)
+# DONE: post-migration: load noupdate_changes.xml
diff --git a/openupgrade_scripts/scripts/website_sale_collect/20.0.1.0/noupdate_changes.xml b/openupgrade_scripts/scripts/website_sale_collect/20.0.1.0/noupdate_changes.xml
new file mode 100644
index 00000000000..a50c405dfc4
--- /dev/null
+++ b/openupgrade_scripts/scripts/website_sale_collect/20.0.1.0/noupdate_changes.xml
@@ -0,0 +1,18 @@
+
+
+
+
+
+
+
+
+
+
+
+ Your order will be ready soon.
+
+
+ True
+ 40
+
+
diff --git a/openupgrade_scripts/scripts/website_sale_collect/20.0.1.0/post-migration.py b/openupgrade_scripts/scripts/website_sale_collect/20.0.1.0/post-migration.py
new file mode 100644
index 00000000000..81ec64d044a
--- /dev/null
+++ b/openupgrade_scripts/scripts/website_sale_collect/20.0.1.0/post-migration.py
@@ -0,0 +1,15 @@
+# Copyright 2026 Don Kendall
+# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl).
+
+from openupgradelib import openupgrade
+
+
+@openupgrade.migrate()
+def migrate(env, version):
+ openupgrade.load_data(env, "website_sale_collect", "20.0.1.0/noupdate_changes.xml")
+ openupgrade.delete_record_translations(
+ env.cr,
+ "website_sale_collect",
+ ["payment_provider_on_site"],
+ ["pending_msg"],
+ )
diff --git a/openupgrade_scripts/scripts/website_sale_collect/20.0.1.0/upgrade_analysis.txt b/openupgrade_scripts/scripts/website_sale_collect/20.0.1.0/upgrade_analysis.txt
new file mode 100644
index 00000000000..5c3e878b321
--- /dev/null
+++ b/openupgrade_scripts/scripts/website_sale_collect/20.0.1.0/upgrade_analysis.txt
@@ -0,0 +1,8 @@
+---Models in module 'website_sale_collect'---
+---Fields in module 'website_sale_collect'---
+website_sale_collect / payment.provider / custom_mode (False) : selection_keys added: [pay_on_invoice] (most likely nothing to do)
+---XML records in module 'website_sale_collect'---
+delivery.carrier: website_sale_collect.carrier_pick_up_in_store (noupdate switched)
+NEW ir.ui.view: website_sale_collect.payment_provider_form
+NEW ir.ui.view: website_sale_collect.sale_order_view_form
+product.product: website_sale_collect.product_pick_up_in_store (noupdate switched)
diff --git a/openupgrade_scripts/scripts/website_sale_collect/20.0.1.0/upgrade_analysis_work.txt b/openupgrade_scripts/scripts/website_sale_collect/20.0.1.0/upgrade_analysis_work.txt
new file mode 100644
index 00000000000..0e87a8760b7
--- /dev/null
+++ b/openupgrade_scripts/scripts/website_sale_collect/20.0.1.0/upgrade_analysis_work.txt
@@ -0,0 +1,12 @@
+---Models in module 'website_sale_collect'---
+---Fields in module 'website_sale_collect'---
+website_sale_collect / payment.provider / custom_mode (False) : selection_keys added: [pay_on_invoice] (most likely nothing to do)
+# NOTHING TO DO: keys were added, the existing values stay valid
+---XML records in module 'website_sale_collect'---
+delivery.carrier: website_sale_collect.carrier_pick_up_in_store (noupdate switched)
+# DONE: post-migration: load noupdate_changes.xml
+NEW ir.ui.view: website_sale_collect.payment_provider_form
+NEW ir.ui.view: website_sale_collect.sale_order_view_form
+# NOTHING TO DO: the record is not noupdate, so the module update creates it
+product.product: website_sale_collect.product_pick_up_in_store (noupdate switched)
+# NOTHING TO DO: only the noupdate flag changed, the definition is the same
diff --git a/openupgrade_scripts/scripts/website_slides_survey/20.0.1.0/noupdate_changes.xml b/openupgrade_scripts/scripts/website_slides_survey/20.0.1.0/noupdate_changes.xml
new file mode 100644
index 00000000000..f88f7550ca5
--- /dev/null
+++ b/openupgrade_scripts/scripts/website_slides_survey/20.0.1.0/noupdate_changes.xml
@@ -0,0 +1,6 @@
+
+
+
+ mail.mail_notification_light
+
+
diff --git a/openupgrade_scripts/scripts/website_slides_survey/20.0.1.0/post-migration.py b/openupgrade_scripts/scripts/website_slides_survey/20.0.1.0/post-migration.py
new file mode 100644
index 00000000000..3b909ef4c9e
--- /dev/null
+++ b/openupgrade_scripts/scripts/website_slides_survey/20.0.1.0/post-migration.py
@@ -0,0 +1,9 @@
+# Copyright 2026 Don Kendall
+# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl).
+
+from openupgradelib import openupgrade
+
+
+@openupgrade.migrate()
+def migrate(env, version):
+ openupgrade.load_data(env, "website_slides_survey", "20.0.1.0/noupdate_changes.xml")
diff --git a/openupgrade_scripts/scripts/website_slides_survey/20.0.1.0/upgrade_analysis.txt b/openupgrade_scripts/scripts/website_slides_survey/20.0.1.0/upgrade_analysis.txt
new file mode 100644
index 00000000000..58193f8d919
--- /dev/null
+++ b/openupgrade_scripts/scripts/website_slides_survey/20.0.1.0/upgrade_analysis.txt
@@ -0,0 +1,23 @@
+---Models in module 'website_slides_survey'---
+---Fields in module 'website_slides_survey'---
+---XML records in module 'website_slides_survey'---
+NEW ir.access: website_slides_survey.survey_question_answer_slide_channel_officer
+NEW ir.access: website_slides_survey.survey_question_rule_slide_channel_officer
+NEW ir.access: website_slides_survey.survey_rule_slide_channel_officer
+NEW ir.access: website_slides_survey.survey_user_input_line_rule_slide_channel_officer
+NEW ir.access: website_slides_survey.survey_user_input_rule_slide_channel_officer
+ir.actions.act_window: website_slides_survey.slide_slide_action_certification (deleted domain)
+ir.actions.act_window: website_slides_survey.survey_survey_action_slides (deleted domain)
+DEL ir.model.access: website_slides_survey.access_survey_question_answer_slides_officer
+DEL ir.model.access: website_slides_survey.access_survey_question_slides_officer
+DEL ir.model.access: website_slides_survey.access_survey_slides_officer
+DEL ir.model.access: website_slides_survey.access_survey_user_input_line_slides_officer
+DEL ir.model.access: website_slides_survey.access_survey_user_input_slides_officer
+ir.model.constraint: website_slides_survey.constraint_slide_slide_check_certification_preview (changed definition: is now 'False' ('CHECK(slide_category != 'certification' OR is_preview = False)'))
+ir.model.constraint: website_slides_survey.constraint_slide_slide_check_survey_id (changed definition: is now 'False' ('CHECK(slide_category != 'certification' OR survey_id IS NOT NULL)'))
+DEL ir.rule: website_slides_survey.survey_question_answer_slide_channel_officer (noupdate)
+DEL ir.rule: website_slides_survey.survey_question_rule_slide_channel_officer (noupdate)
+DEL ir.rule: website_slides_survey.survey_rule_slide_channel_officer (noupdate)
+DEL ir.rule: website_slides_survey.survey_user_input_line_rule_slide_channel_officer (noupdate)
+DEL ir.rule: website_slides_survey.survey_user_input_rule_slide_channel_officer (noupdate)
+mail.template: website_slides_survey.mail_template_user_input_certification_failed (noupdate switched)
diff --git a/openupgrade_scripts/scripts/website_slides_survey/20.0.1.0/upgrade_analysis_work.txt b/openupgrade_scripts/scripts/website_slides_survey/20.0.1.0/upgrade_analysis_work.txt
new file mode 100644
index 00000000000..b419d5ef464
--- /dev/null
+++ b/openupgrade_scripts/scripts/website_slides_survey/20.0.1.0/upgrade_analysis_work.txt
@@ -0,0 +1,29 @@
+---Models in module 'website_slides_survey'---
+---Fields in module 'website_slides_survey'---
+---XML records in module 'website_slides_survey'---
+NEW ir.access: website_slides_survey.survey_question_answer_slide_channel_officer
+NEW ir.access: website_slides_survey.survey_question_rule_slide_channel_officer
+NEW ir.access: website_slides_survey.survey_rule_slide_channel_officer
+NEW ir.access: website_slides_survey.survey_user_input_line_rule_slide_channel_officer
+NEW ir.access: website_slides_survey.survey_user_input_rule_slide_channel_officer
+# NOTHING TO DO: base folds ir.model.access and ir.rule into ir.access, keeping the xml_ids
+ir.actions.act_window: website_slides_survey.slide_slide_action_certification (deleted domain)
+ir.actions.act_window: website_slides_survey.survey_survey_action_slides (deleted domain)
+# NOTHING TO DO: the record is not noupdate, so the module update rewrites the domain
+DEL ir.model.access: website_slides_survey.access_survey_question_answer_slides_officer
+DEL ir.model.access: website_slides_survey.access_survey_question_slides_officer
+DEL ir.model.access: website_slides_survey.access_survey_slides_officer
+DEL ir.model.access: website_slides_survey.access_survey_user_input_line_slides_officer
+DEL ir.model.access: website_slides_survey.access_survey_user_input_slides_officer
+# NOTHING TO DO: base folds ir.model.access and ir.rule into ir.access, keeping the xml_ids
+ir.model.constraint: website_slides_survey.constraint_slide_slide_check_certification_preview (changed definition: is now 'False' ('CHECK(slide_category != 'certification' OR is_preview = False)'))
+ir.model.constraint: website_slides_survey.constraint_slide_slide_check_survey_id (changed definition: is now 'False' ('CHECK(slide_category != 'certification' OR survey_id IS NOT NULL)'))
+# NOTHING TO DO: the record is not noupdate, so the module update rewrites it
+DEL ir.rule: website_slides_survey.survey_question_answer_slide_channel_officer (noupdate)
+DEL ir.rule: website_slides_survey.survey_question_rule_slide_channel_officer (noupdate)
+DEL ir.rule: website_slides_survey.survey_rule_slide_channel_officer (noupdate)
+DEL ir.rule: website_slides_survey.survey_user_input_line_rule_slide_channel_officer (noupdate)
+DEL ir.rule: website_slides_survey.survey_user_input_rule_slide_channel_officer (noupdate)
+# NOTHING TO DO: base folds ir.model.access and ir.rule into ir.access, keeping the xml_ids
+mail.template: website_slides_survey.mail_template_user_input_certification_failed (noupdate switched)
+# DONE: post-migration: load noupdate_changes.xml