Skip to content

Migration to version 20.0 #6044

Open
Open

Description

@hbrunn

I'm busy with the prerequisites for the v20 migration:

Activity

  1. added this to the 20.0 milestone on Sep 29, 2026
  2. pinned this issue on Sep 29, 2026
  3. FerDeNetlab commented on Oct 26, 2026

    @FerDeNetlab

    We've been testing 19.0 → 20.0 on top of #6045, #6046 and the analysis in 20.0-initialize+analysis, with a v19 demo database (crm, sale_management, purchase, stock, account + l10n_mx, project, hr, mrp, point_of_sale; 119 modules). With the scripts below -u all completes (131 modules), all 1692 views validate, and accounting moves/lines, quants, sale orders and UoMs are identical to v19.

    Branch: https://github.com/FerDeNetlab/OpenUpgrade/tree/20.0-netlab-scripts — one commit per module, happy to open one PR per module once #6045 is merged:

    • apriori: 33 merged modules (hr_org_chart, stock_picking_batch, base_iban, the wishlist/comparison modules, …), 3 renamed modules, hr.contract.type → hr.employee.type and a few more models
    • mail: precreate mail.activity.phone/role_id (the compute crashes on account.move activities while loading mail), xmlid for the admin's existing #admin membership
    • account: xmlids moved from stock_account, deductible_amount → deductible_percentage
    • product, stock, purchase, mrp: product_uom(_id) → uom_id (without it the new field is computed from the product, silently losing the move's UoM), location_final_id → forecasted_location_id, tracking='none' → NULL
    • sale/sale_management: sale_delay to company dependent jsonb, expense_policy → reinvoice_policy, require_payment → prepayment_percent
    • hr: contract types → employee types, fixed_term
    • point_of_sale: use_payment_terminal → payment_provider, stored type, pos_session_sales_id, …
    • crm_iap_mine, mass_mailing, resource (lunch attendances only), spreadsheet_dashboard, calendar, l10n_mx (bank ABM code → clearing_number)

    For base we only have pieces you may want to reuse: state_in_or → state_in_od (same code, breaks the unique constraint), ir_model_fields.index boolean → selection (a plain cast yields 'true', which breaks manual fields such as analytic plan columns), and res.bank → res.partner.bank. For ir.access we only parked the old xmlids; I suppose you're on that.

    Framework fixes are in a PR against your #6046 branch.

    Two things on the analysis (OCA/server-tools#3748): compare.py never puts isproperty in report_fields, so fields that become company dependent without changing type aren't reported (sale_delay, l10n_eg_eta_code); and account changed to 1.6 after the analysis was generated (also l10n_sk 1.1).

    Bigger pieces still open that we noticed: account.group → archived parent accounts (as in upgrade_code/19.3-00-account-groups.py), payment.method.provider_id (one method per provider now), resource.calendar (two weeks calendars, tz, schedule_type), stock.scrap → stock.move.is_scrap.


    Per the OCA AI policy: this comment and the commits on the linked branch were drafted with AI assistance (Claude Opus 5.5), reviewed by me. The commits now carry an Assisted-by trailer.

  4. hbrunn commented on Oct 27, 2026

    @hbrunn
    MemberAuthor

    @FerDeNetlab please review the relevant PRs with line comments where you propose changes, that's where a discussion can be had. Just dumping a bunch of unrelated findings isn't actionable.

  5. kevin3274 commented on Oct 27, 2026

    @kevin3274

    @hbrunn would you mind pushing your base work in progress, even if it's incomplete? We are writing module scripts for 20.0 and would like to test them end-to-end on the 19.0 test database.

    Until then we use a local stopgap that is not meant for a PR: FerDeNetlab's apriori and base commits plus one more xmlid rename. On the OCA 19.0 test database, only two existing states collide with the new res.country.state.csv:

    • base.state_in_or → base.state_in_od
    • l10n_in.state_in_la → base.state_in_la

    With those two renames, base and uom migrate without errors.

    If it helps, we can take a self-contained part of base, for example res.country.state or res.bank → res.partner.bank. We would send it in whatever form you prefer: suggestions on your PR, or a PR against your branch.

    Drafted with AI assistance (Claude), reviewed by me.

  6. hbrunn commented on Oct 27, 2026

    @hbrunn
    MemberAuthor

    I repeat: reviewing the existing PRs to get them merged is much more valuable than any code input at this stage. Especially OCA/server-tools#3748, #6045, #6046 because without them, we can't have automated updates of the analysis files

  7. kevin3274 commented on Oct 29, 2026

    @kevin3274

    @FerDeNetlab are you still working on hr? We need it for our upgrade path and would like to open the PR, building on your commit c65ce68 (keeping your authorship) and adding what is still missing, e.g. hr.job.user_id → recruiter_id and filling hr.version.tz. Happy to leave it to you if you are about to open it yourself.

  8. FerDeNetlab commented on Oct 29, 2026

    @FerDeNetlab

    @kevin3274 go ahead, thanks! Besides those two, our commit doesn't map the legacy employee_type values worker, contractor and freelance (only employee/student/trainee). Note that recruiter_id is an hr.employee now, so it needs mapping users to their employees rather than a rename. Happy to review the PR.

    Drafted with AI assistance (Claude Opus 5.5), reviewed by me.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions