Dolibarr 22.0.0
6 August 2025
Dolibarr version 22.0.0 is now available (major release).
Upgrading to Dolibarr 22.0.0
Dolibarr 22.0.0 can be upgraded to (or installed) using any of Installatron's products. Use Installatron's optional Automatic Update feature to automatically apply Dolibarr updates as new versions are released, or use Installatron's Clone feature to duplicate an existing Dolibarr install to test the 22.0.0 upgrade prior to applying it live. Get started managing your Dolibarr installations with Installatron
What's New in Dolibarr 22.0.0
New Features
- Module WebPortal is moved as stable
- Subtotal module (#33502) - development
- shipment kits with dispatcher v2 (#33750)
- ticket : display files linked to actioncomm (#32325)
- Support of monthly or weekly recurring events
- AI feature to autofill extrafields
- Introduce the view "Kanban Grouped By" opportunity status in projects
- #22848
- #32706 - Treasury accountancy (#33701)
- #33506 Add a constant to apply a ratio to resize images in ODT templates (#33543)
- Accountancy - Add centralized account (SQL & migration part) (#33384) (#33577)
- Accountancy - Add filter on chart of accounts (#33656)
- Accountancy - Centralized account are highlighted (#33648)
- Accountancy - Define fiscal year by default
- Accountancy - Show subledger account in thirdparty
- Add a delay to be sure that any Stripe action from webhooks are executed after interactive actions
- Add also start date fill buttons for salary clone
- Add a test mode for AI setup
- Add DateMaxPayment option on selectDate (#33601)
- Add/enhance the popup for preview of icons
- Add field usenewcurrencyrate
- Add globale MAIN_DISABLE_PDF_AUTO_DOWNLOAD_AFTER_CONVERT_FROM_ODT to disable the auto download after auto convert odt to pdf (#33511)
- add home box mrp (#33549)
- Add invoice tags
- Add ip into table of website accounts
- Add knowledgebase info on box_dolibarr_state_board.php (#33960)
- Add link to create shipment on picto
- Add link to picto help page on module builder
- Add management of date begin/end and discount for a customer price (Code + SQL)
- add new permissions to read supplier prices (#33598)
- Add option MAIN_ALLOW_DOUBLE_COLON_IN_DOL_EVAL
- Add option MAIN_MAIL_EMAIL_FROM_PASSWORDRESET
- Add options on intervention clone popup to clone or not contact and notes
- Add options PDF_XXX_SHOW_PRICE_INCL_TAX into PDF setup
- add option to not prefill qty line at shipment creation
- Add page list for categories.
- Add parameters for the hook selectProductsListWhere (#33718)
- add phone_mobile to export of thirdparty (#33893)
- Add public page for donation module (#33978)
- add setasnumber for forms (#33845)
- Add Shared links on links in attachments (#33459)
- Add tags / category on supplier invoice (#33490)
- Add the possibility to merge PDF from the product list (#33723)
- allow stock management by product (#32326)
- attendee status Used - to ensure that only one attendee gets in on a ticket (#33987)
- auto-detect country from code in creation (follow-up)
- autofix mysqldump command for backup when path is wrong
- Better presentation of list of user approver.
- Can define a different PDF for concatenation for proposal, order and invoices
- Can filter on field "Refuse emailing" in list of thirdparties.
- Can filter on public/private notes in list sale orders thirdparties
- Can filter on string with spaces if search criteria is inside quote.
- Can force the tooltip before the text on column title.
- Can link member subscription/contribution with proposal, order and invoice (#33647)
- Can set a specific permission on an extrafields
- cash control: add hidden setting to show total including taxed in detail by vat rate
- Closing task
- CONSTANT: ORDER_TYPE_CONTACT_DEFAULT
- const PREVIEW_PICTO_ON_LEFT_OF_NAME for icon to preview documents (#33519)
- Dictionary - Manage countries of SEPA Area
- Dolibarr#22848 Add order tags
- Filter on date creation/date modification in invoice list
- fix #33456 (#33458)
- force Extrafields values when constants THIRDPARTY_PROPAGATE_EXTRAFIELDS_TO_(ORDER|INVOICE) are set (#33954)
- input reason for customer invoice (#33599)
- Invoice - Add constant to prevent modification of an invoice (#33455)
- Loan - Add total on each payment to see the global amount off the reimbursement
- login page: button to toggle the visibility of the password (#33698)
- Look and feel - Checkboxes and radio buttons are larger
- Allow user to define the number of email sent by batch directly from mailing config page (#32750)
- Mass action delete on donation list
- Merge surface and volume in one line on product card.
- Module external website is deprecated. Replaced with menu editor.
- Move right from advance to normal for thirdparty information payment page (#33885)d
- delays conf for supplier proposals (#33800)
- new option in invoice setup to limit options of deposit invoice (#33468)
- No auto open keyboard on smartphone when opening list of columns
- On list, see complete ref customer/supplier with constant MAIN_SHOW_GLOBAL_REF_CUSTOMER_SUPPLIER (#33373)
- Option MAIN_RESTRICTHTML_ONLY_VALID_HTML and MAIN_RESTRICTHTML_ONLY_VALID_HTML_TIDY are on by default
- Option MAIN_SECURITY_MAXFILESIZE_DOWNLOADED become official
- Order - Add drag & drop file (#33848)
- reopen for interventions API (#33982)
- Rounding unit price - line discount before applying quantity - option MAIN_APPLY_DISCOUNT_ON_UNIT_PRICE_THEN_ROUND_BEFORE_MULTIPLICATION_BY_QTY (#33690)
- shipment with product in cache
- shipment with warehouse in cache
- Show code of stripe hooks supported in setup page
- Show country flag in list of chart of account
- Show IP of previous connection and date of last password change in the "Connection" widget.
- Some trans keys to prepare a new website template (#33886)
- SUBMIT_FOR_ALL_MARK_RESPAWN (#32101)
- Supplier orders - Add tags/categories (#33386)
- takepos cash control: add vat taxless total
- The closing reason of invoice appear on tooltip of invoice status
- The link "In accountancy" is now clickable to reach bookkeeping
- The public media browser is now a stable feature
- The signature is on the good page even if another module add pages
- Toggle Display of Supplier Invoices and Credit Notes on Payment Page (#33856)
- Try to set the tooltip as ajax call by default.
- Update of currency supports also apilayer (not only currencylayer)
- use specific landing page to home menu entry
- Use the packaging feature to round the quantities to some given multiples for the sale
- Use the PhpZipProxy handler to generate ODT files (avoid corrupted ODT with recent version of Libre Office).
- vcard (vcf) download for third party (#31957)
- Web pages of websites are protected by the WAF
- Add constant to show stock in products combo
- Can edit the module_source and pos_source field.
- Accountancy - Add actions on entries (Cloning, assigning, returning)
- Add conf PDF_HIDE_LINKED_OBJECT_IN_PUBLIC_NOTE to hide linked object in public note of pdf.
- Add MULTICURRENCY_SHOW_ALSO_MAIN_CURRENCY_ON_PDF for legal requirement that need both currencies on PDF
- Add note public and private on order export
- Finish dev for API_ENABLE_COUNT_CALLS (count of API use is visible on user API key field)
For developers
- Add an API endpoint to get properties of a single line of an order (#34045)
- add const to not include default CSS in top_htmlhead with DISABLE_CSS_DEFAULT_THEME
- add const to not include default lib_head.js in top_htmlhead with DISABLE_LIB_HEAD_JS
- add const to not include JQuery UI in top_htmlhead DISABLE_JQUERY_UI
- add create category project link via api (#34016)
- add creditnotelist var in fetch
- add hook 'addMoreInformationsBlock'
- Add hook on API call (#33501)
- add hooks to modify select_produits_fournisseurs_list sql query
- Adding API endpoints for event attendee handling (#33932)
- Add internal contact of proposal, order and invoice on api call (#34009)
- Add option to create simple shipment of non origin. SQL part (#34071)
- add settodraft to the supplier invoice API (#34064)
- Can set isMandatory property in generic setup framework
- endpoints DELETE event atteendee by ID or REF (#33986)
- endpoints GET event attendee by ID or REF (#33984)
- endpoints PUT (update) event atteendee by ID or REF (#33985)
- hidden conf for api contrat putLine endpoint to only return the line (#33809)
- introduce method dolSetCookie
- Invoice - Document - Add hook on action
- Pagination data for intervention APi
- Add experimental Website Template for Association
- expense report API deny
WARNING
- The following changes may create regressions for some external modules, but were necessary to make Dolibarr better:
- The use of GETPOST function is not allowed inside extrafields conditions or any strings that contains dynamic code evaluated with dol_eval().
- The deprecated variable $trigger_name (duplicate of variable $triggersendname) has been removed. You must use $triggersendname everywhere now.
- The behavior of constant STOCK_ALLOW_NEGATIVE_TRANSFER has been reversed. It has been renamed into STOCK_DISALLOW_NEGATIVE_TRANSFER.
- Method Categoie->getObjectsInCateg() is deprecated. Try by using instead: getListForItem() or containing().
- Global variables $bctag, $conffiletoshowshort, $type2label has been removed.
- Deprecatedproperty ->fk_departement that was replaced by ->state_id has been completely removed.
- If you setup the API to update multicurrency rate from internet, you may need to re-enter your API key (so API key will be crypted in database).
- The signature of API get for intervention has been modified to match other get api on other objects.
- The directory /build has been moved into /dev/build.
- The API to create a website account /idthirdparty/accounts/site is now POST (instead of PUT) and to update is PUT (instead of PATCH).
- Debug v22 - Invert option TICKET_DO_NOT_INCLUDE_LINK_TO_CUSTOMER (that add link to backoffice interface link when it should remain private) into TICKET_INCLUDE_LINK_TO_PUBLIC_INTERFACE_IN_MESSAGE. It also avoid often emails marked as SPAM due to suspicious link.
- The property ->price_ht of an object line that was a duplicate of ->subprice has been standardized. Use ->subprice everywhere now.