# CiviCRM 5.40.0
Released August 4, 2021
- **[Synopsis](#synopsis)**
- **[Features](#features)**
- **[Bugs resolved](#bugs)**
- **[Miscellany](#misc)**
- **[Credits](#credits)**
- **[Feedback](#feedback)**
## Synopsis
| *Does this version...?* | |
|:--------------------------------------------------------------- |:-------:|
| Fix security vulnerabilities? | no |
| **Change the database schema?** | **yes** |
| **Alter the API?** | **yes** |
| Require attention to configuration options? | no |
| **Fix problems installing or upgrading to a previous version?** | **yes** |
| **Introduce features?** | **yes** |
| **Fix bugs?** | **yes** |
## Features
### Core CiviCRM
- **Move check for presence of the phone strip function to a Check (currently
done whenever a phone number is edited)
([dev/core#27](https://lab.civicrm.org/dev/core/-/issues/27):
[20757](https://github.com/civicrm/civicrm-core/pull/20757))**
Adds a new system status check "Missing Phone numeric check" instead of
checking when crudding phone numbers.
- **Searchkit display with event location data
([dev/core#2676](https://lab.civicrm.org/dev/core/-/issues/2676):
[20746](https://github.com/civicrm/civicrm-core/pull/20746))**
Adds LocBlock entity to display event location data in SearchKit.
- **SearchKit - Allow super admins to disable Search Display access checks
([20607](https://github.com/civicrm/civicrm-core/pull/20607))**
Allows users with 'all CiviCRM permissions and ACLs' to configure a search
display to bypass permission checks and display all records to the user.
- **SearchKit - Add translatable descriptions to entities
([20598](https://github.com/civicrm/civicrm-core/pull/20598))**
Adds user-friendly descriptions to the top-level entities in SearchKit, and
makes it possible to add them to other entities as well.
- **SearchKit - Show Pledge as a primary entity
([20589](https://github.com/civicrm/civicrm-core/pull/20589))**
Shows Pledges as a primary entity in SearchKit, since it has its own tab on
the contact summary screen.
- **SearchKit - Add ability to join on multi-select ContactRef fields
([20764](https://github.com/civicrm/civicrm-core/pull/20764))**
Improves support for custom contact Reference fields in APIv4, SearchKit, and
Afform. Makes it possible to save, search for, and filter by serialized
(multi-select) custom Contact Reference fields.
- **Improve api consistency on custom field creation
([20743](https://github.com/civicrm/civicrm-core/pull/20743))**
Makes it so the parameter "option_type" is not needed to create an
option_value in APIv4.
- **APIv4 Explorer: show joins for write actions
([20731](https://github.com/civicrm/civicrm-core/pull/20731))**
Displays information about joins for write operations in the API Explorer.
- **APIv4 - Add `@since` annotation to each entity
([20701](https://github.com/civicrm/civicrm-core/pull/20701))**
Adds since version for each entity to APIv4 code documentation.
- **APIv4 - Allow FK dot notation in create/update/save actions
([20677](https://github.com/civicrm/civicrm-core/pull/20677))**
Makes it possible to reference other entities during create without knowing
their ID when using the APIv4. Makes it easier to package entities e.g. with
civicrm_managed.
- **APIv4 - Add filter for entity tags
([20573](https://github.com/civicrm/civicrm-core/pull/20573))**
Adds a SearchKit/APIv4 filter for tags similar to the "groups" filter recently
added to SearchKit.
- **APIv4 - add is_current as a pseudo (calculated) field
([20586](https://github.com/civicrm/civicrm-core/pull/20586))**
Adds an "is_current" field to SearchKit for relationships, events & campaigns.
It checks that the record is active and has a non-past end date and a
non-future start date.
- **APIv4 Explorer - When joining via EntityBridge, make bridge fields
selectable ([20721](https://github.com/civicrm/civicrm-core/pull/20721))**
Improves the APIv4 Explorer by displaying bridge fields.
- **Canonize API for storing translated data (Work Towards
[dev/translation#67](https://lab.civicrm.org/dev/translation/-/issues/67):
[20606](https://github.com/civicrm/civicrm-core/pull/20606) and
[20584](https://github.com/civicrm/civicrm-core/pull/20584))**
Adds APIv4 support for the "Translation" entity. Allows translation of fields
which lack an explicit HTML type.
- **Apiv4 entity parity
(Work Towards [dev/core#2486](https://lab.civicrm.org/dev/core/-/issues/2486):
[20553](https://github.com/civicrm/civicrm-core/pull/20553))**
Adds a foreign key on civicrm_contribution_product.product_id.
- **Add calling function to deprecatedWarning log message
([20719](https://github.com/civicrm/civicrm-core/pull/20719))**
Improves logging.
- **Add contact-summary-image region
([20662](https://github.com/civicrm/civicrm-core/pull/20662))**
Adds a new region around the contact summary image.
- **Replace extension key with description in 'Add New' tab
([20720](https://github.com/civicrm/civicrm-core/pull/20720))**
Improves the "Extensions" -> "Add New" form user experience by displaying the
description below the extension name instead of the extension key.
- **User experience improvement - Remove the confusing mixed terminology used to
describe Tags: "Tags (Categories)" and "Tag (Category)"
([20268](https://github.com/civicrm/civicrm-core/pull/20268))**
Improves user experience by removing the term "Category" when referencing
tags.
- **Improve output triggers when logged to file
([20472](https://github.com/civicrm/civicrm-core/pull/20472))**
Improves output triggers when logged to a file by adding an asort, putting all
the triggers into an array keyed by the statement and opening and closing the
delimiters just once.
- **Show smarty E-notices when in debug mode
([20640](https://github.com/civicrm/civicrm-core/pull/20640))**
Improves the user experience in debug mode by showing php notices (e.g.
"undefined variable").
- **Add pseudoconstant to acl_entity_role
([20566](https://github.com/civicrm/civicrm-core/pull/20566))**
Adds a pseudoconstant for `acl_entity_role`.
- **[php8-compact] Allow for CiviCRM to be installed by 3rd parties using
composer on php8 systems
([20625](https://github.com/civicrm/civicrm-core/pull/20625))**
Makes it so sites can install and update CiviCRM via CLI when their CLI uses
PHP8.
### CiviContribute
- **Move financialACLs to a core extension (Work Towards
[dev/core#2115](https://lab.civicrm.org/dev/core/-/issues/2115):
[20761](https://github.com/civicrm/civicrm-core/pull/20761),
[20762](https://github.com/civicrm/civicrm-core/pull/20762) and
[20769](https://github.com/civicrm/civicrm-core/pull/20769))**
Moves financial acl code out of APIv3 Contribution.create and assorted cleanup
towards moving the Financial ACL code to an extension.
- **Proposal - make future recurring contribution instances modifiable & not
fail if the only contribution is deleted. (Work Towards
[dev/financial#6](https://lab.civicrm.org/dev/financial/-/issues/6):
[20452](https://github.com/civicrm/civicrm-core/pull/20452),
[20451](https://github.com/civicrm/civicrm-core/pull/20451) and
[20450](https://github.com/civicrm/civicrm-core/pull/20450))**
Work to make it possible to edit recurring contributions.
- **Make Order api easier to use for default price set
([20681](https://github.com/civicrm/civicrm-core/pull/20681))**
Improves the order api by making it not necessary to figure out the details of
the default price set when using it to create memberships.
### CiviSMS
- **Display SMS segment count when constructing a Mass SMS
([dev/core#1711](https://lab.civicrm.org/dev/core/-/issues/1711):
[20722](https://github.com/civicrm/civicrm-core/pull/20722) and
[20220](https://github.com/civicrm/civicrm-core/pull/20220))**
Modifies the javascript that shows the character count when creating a SMS
message so that it also shows how many SMS segments are required to send the
message.
### WordPress Integration
- **Fail gracefully when errors are detected
([251](https://github.com/civicrm/civicrm-wordpress/pull/251))**
Rewrites the error checking that the WordPress plugin performs and fails
gracefully instead of throwing fatal errors and making WordPress inoperable.
Introduces a "CiviCRM Troubleshooting" page to help diagnose and fix problems.
## Bugs resolved
### Core CiviCRM
- **Exporting in localized civicrm crashes due to long translation for
preferred_mail_format varchar(8) field.
([dev/core#2645](https://lab.civicrm.org/dev/core/-/issues/2645):
[20626](https://github.com/civicrm/civicrm-core/pull/20626))**
- **failing update Smart Groups for installs with none
([dev/core#2659](https://lab.civicrm.org/dev/core/-/issues/2659):
[20756](https://github.com/civicrm/civicrm-core/pull/20756))**
- **Menu link for "New Tag" doesn't quite work
([dev/core#2660](https://lab.civicrm.org/dev/core/-/issues/2660):
[20686](https://github.com/civicrm/civicrm-core/pull/20686))**
Points the "New Tag" menu link to form to create a new tag instead of "Manage
Tags" form.
- **Special characters in password cause trouble.
([dev/core#2663](https://lab.civicrm.org/dev/core/-/issues/2663):
[20713](https://github.com/civicrm/civicrm-core/pull/20713))**
- **Upgrade to Nightly (5.40.alpha1) from Stable (5.38.1) fails with DB Error:
constraint violation
([dev/core#2680](https://lab.civicrm.org/dev/core/-/issues/2680):
[20814](https://github.com/civicrm/civicrm-core/pull/20814))**
- **Afform - cosmetic fixes in palette panel
([20755](https://github.com/civicrm/civicrm-core/pull/20755))**
- **Search-kit - declaring joins breaks deduping
([dev/core#2656](https://lab.civicrm.org/dev/core/-/issues/2656):
[20631](https://github.com/civicrm/civicrm-core/pull/20631) and
[20639](https://github.com/civicrm/civicrm-core/pull/20639))**
- **SearchKit - use primary_key info instead of assuming 'id'
([20763](https://github.com/civicrm/civicrm-core/pull/20763))**
Fixes a bug in SearchKit when dealing with entities without "id" as their
primary key field.
- **SearchKit - Remove automatic filter from address
([20803](https://github.com/civicrm/civicrm-core/pull/20803))**
Usability fix for SearchKit - stops automatically add "Location Type" to the
search when joining with Address.
- **OR term in WHERE clause crashes Search Kit
([dev/report#71](https://lab.civicrm.org/dev/report/-/issues/71):
[20824](https://github.com/civicrm/civicrm-core/pull/20824))**
Fixes an error when saving or opening a search with an OR group in a clause.
- **[php8-compact] Add in more protection for unset variables in various smarty
templates ([20546](https://github.com/civicrm/civicrm-core/pull/20546) and
[20547](https://github.com/civicrm/civicrm-core/pull/20547))**
- **APIv4 - Silently ignore non-permissioned fields instead of throwing
exceptions ([20724](https://github.com/civicrm/civicrm-core/pull/20724))**
- **APIv4 - Fix same-table joins and remove unused code
([20715](https://github.com/civicrm/civicrm-core/pull/20715))**
- **APIv4 - Don't assume the identifier field for a table is named 'id'
([20707](https://github.com/civicrm/civicrm-core/pull/20707) and
[20749](https://github.com/civicrm/civicrm-core/pull/20749))**
- **APIv4 - Deprecate Entity::getLinks action
([20727](https://github.com/civicrm/civicrm-core/pull/20727))**
- **APIv4 - Deprecate passing 'id' to basic actions
([20765](https://github.com/civicrm/civicrm-core/pull/20765))**
- **APIv4 Explorer - Only apply default limit 25 for "get" action
([20698](https://github.com/civicrm/civicrm-core/pull/20698))**
- **Force cleanup of setting value type "checkboxes" when is empty
([20600](https://github.com/civicrm/civicrm-core/pull/20600))**
Fixes a bug where custom settings of the type "checkboxes" with no checked
values were not saving to the database correctly.
- **Fix activity_date_time_relative filter when `preserve_activity_tab_filter`
setting is on ([20602](https://github.com/civicrm/civicrm-core/pull/20602))**
- **Support saving more than 25 records in Profile.submit api
([20744](https://github.com/civicrm/civicrm-core/pull/20744))**
- **Fix schema support for composite primary keys
([20705](https://github.com/civicrm/civicrm-core/pull/20705))**
- **Fix sorting for drop triggers
([20693](https://github.com/civicrm/civicrm-core/pull/20693))**
- **Fix Schema calculation of usePrefix to cope with rpow:
([20471](https://github.com/civicrm/civicrm-core/pull/20471))**
- **Fixed url ([20641](https://github.com/civicrm/civicrm-core/pull/20641))**
- **Ensure custom group name does not conflict with existing field
([20694](https://github.com/civicrm/civicrm-core/pull/20694))**
- **Force the right path in github action script
([20688](https://github.com/civicrm/civicrm-core/pull/20688))**
The original script ran in a repo called civicrm-regen, but because the name
of this repo is civicrm-core and hence the github workspace folder contains
the literal "civicrm-core" in it, the civicrm.config.php file determines that
this must be a composer install, and so it gets the path to
civicrm.settings.php wrong.
- **Always assign mode to smarty
([20664](https://github.com/civicrm/civicrm-core/pull/20664))**
- **AngularLoader - Emit warning when setModules method is used.
([20628](https://github.com/civicrm/civicrm-core/pull/20628))**
Emits a warning when extensions do something that could potentially cause
problems with other extensions.
- **Throw exception when baoName is not found
([20696](https://github.com/civicrm/civicrm-core/pull/20696) and
[20742](https://github.com/civicrm/civicrm-core/pull/20742))**
- **Convert Notes to use option_group instead of hardcoded list
([20554](https://github.com/civicrm/civicrm-core/pull/20554))**
- **Fix a few more undefined template vars
([20577](https://github.com/civicrm/civicrm-core/pull/20577) and
[20684](https://github.com/civicrm/civicrm-core/pull/20684))**
- **CKEditor - Fix .tpl insertion on every form
([20846](https://github.com/civicrm/civicrm-core/pull/20846))**
- **Fix undefined tpl vars in CiviReport
([20797](https://github.com/civicrm/civicrm-core/pull/20797))**
- **smarty notice - title is only set for a list of existing report instances
([20771](https://github.com/civicrm/civicrm-core/pull/20771))**
- **smarty notice - confirm_message is usually irrelevant in report listings
([20772](https://github.com/civicrm/civicrm-core/pull/20772))**
- **Minor tpl simplificaiton, notice reduction
([20663](https://github.com/civicrm/civicrm-core/pull/20663))**
- **Fix undefined tpl variables on contact summary
([20659](https://github.com/civicrm/civicrm-core/pull/20659))**
- **Some php warnings on new case
([20712](https://github.com/civicrm/civicrm-core/pull/20712))**
- **Remove deprecated use of format money
([20697](https://github.com/civicrm/civicrm-core/pull/20697))**
- **Fix possibly undefined custom groupTree tpl variable
([20737](https://github.com/civicrm/civicrm-core/pull/20737))**
- **Fix undefined tpl vars on contact summary page
([20754](https://github.com/civicrm/civicrm-core/pull/20754))**
- **Tpl enotice fix
([20735](https://github.com/civicrm/civicrm-core/pull/20735))**
- **Fix undefined indexes in tpls
([20781](https://github.com/civicrm/civicrm-core/pull/20781))**
- **Enotice fix Remove references to savedFieldMapping in page 2 of the import
([20738](https://github.com/civicrm/civicrm-core/pull/20738))**
- **Fix undefined tpl vars on custom field page
([20726](https://github.com/civicrm/civicrm-core/pull/20726))**
- **Fix often undefined variable $row.class in tpl tables
([20725](https://github.com/civicrm/civicrm-core/pull/20725))**
- **Throw exception rather than allow php fail
([20565](https://github.com/civicrm/civicrm-core/pull/20565))**
Throws an exception rather than allow php fail when the api class is not
found.
- **Proposal - store metadata on membership renewal on line item (Work Towards
[dev/membership#29](https://lab.civicrm.org/dev/membership/-/issues/29):
[20672](https://github.com/civicrm/civicrm-core/pull/20672))**
Adds a new column to the civicrm_line_item table: membership_num_terms.
### CiviCase
- **Case Manager is not shown for closed cases.
([dev/core#542](https://lab.civicrm.org/dev/core/-/issues/542) and
[dev/core#1947](https://lab.civicrm.org/dev/core/-/issues/1947):
[19737](https://github.com/civicrm/civicrm-core/pull/19737))**
Ensures inactive active case role are shown for closed cases.
- **Some php warnings on case dashboard
([20711](https://github.com/civicrm/civicrm-core/pull/20711))**
- **smarty notice - case dashboard when no upcoming/recent cases
([20770](https://github.com/civicrm/civicrm-core/pull/20770))**
- **smarty notices - New case screen - Case.hlp
([20795](https://github.com/civicrm/civicrm-core/pull/20795))**
- **Error when sorting case roles table by end date
([20728](https://github.com/civicrm/civicrm-core/pull/20728))**
### CiviContribute
- **Can't remove previously-added currencies
([dev/financial#175](https://lab.civicrm.org/dev/financial/-/issues/175):
[20627](https://github.com/civicrm/civicrm-core/pull/20627))**
- **civicrm/payment/form url got empty currency argument in backoffice live CC
form ([dev/financial#150](https://lab.civicrm.org/dev/financial/-/issues/150):
[18517](https://github.com/civicrm/civicrm-core/pull/18517))**
- **"Non-static method CRM_Financial_Form_BatchTransaction::links() should not
be called statically" when viewing accounting batch
([dev/core#2647](https://lab.civicrm.org/dev/core/-/issues/2647):
[20691](https://github.com/civicrm/civicrm-core/pull/20691))**
- **pre hook is not triggered for LineItem delete
([dev/core#2657](https://lab.civicrm.org/dev/core/-/issues/2657):
[20644](https://github.com/civicrm/civicrm-core/pull/20644))**
- **Undefined variable ids in CRM\Core\Payment\AuthorizeNetIPN.php
([dev/core#2685](https://lab.civicrm.org/dev/core/-/issues/2685):
[20818](https://github.com/civicrm/civicrm-core/pull/20818))**
- **Send pcp notification only when the contribution is completed
([20523](https://github.com/civicrm/civicrm-core/pull/20523))**
- **Add missing "View Recurring Contribution" link to contribution view
([20750](https://github.com/civicrm/civicrm-core/pull/20750))**
Add missing "View Recurring Contribution" link to contribution view when
displaying line items.
### CiviEvent
- **Fix bug where only one participant registration is completed
([20654](https://github.com/civicrm/civicrm-core/pull/20654))**
### CiviMail
- **Unwanted mail blast sent by Scheduled Reminders
([dev/core#365](https://lab.civicrm.org/dev/core/-/issues/365):
[20432](https://github.com/civicrm/civicrm-core/pull/20432) and
[19973](https://github.com/civicrm/civicrm-core/pull/19973))**
Adds Effective start and end date to the Schedule Reminder UI.
- **Specifying a "Selection Method" without a location type gives a DB error
([dev/mail#96](https://lab.civicrm.org/dev/mail/-/issues/96):
[20536](https://github.com/civicrm/civicrm-core/pull/20536))**
- **Mailing label prints name twice
([dev/core#2681](https://lab.civicrm.org/dev/core/-/issues/2681):
[20783](https://github.com/civicrm/civicrm-core/pull/20783))**
- **Fix invalid defaults for Mailing.update_email_resetdate API
([20751](https://github.com/civicrm/civicrm-core/pull/20751))**
- **Use mysql to set mailing.created_date
([20630](https://github.com/civicrm/civicrm-core/pull/20630))**
### Drupal Integration
- **hook_civicrm_buildProfile not working on Drupal 8
([dev/drupal#113](https://lab.civicrm.org/dev/drupal/-/issues/113):
[65](https://github.com/civicrm/civicrm-drupal-8/pull/65))**
## Miscellany
- **Unused smarty variable
([20796](https://github.com/civicrm/civicrm-core/pull/20796))**
- **Remove unreachable code from admin page
([20642](https://github.com/civicrm/civicrm-core/pull/20642))**
- **replace unnecessary function call with string literal
([20634](https://github.com/civicrm/civicrm-core/pull/20634))**
- **APIv4 - Remove POC code leftover from early alpha development
([20709](https://github.com/civicrm/civicrm-core/pull/20709))**
- **Move upgrade code to correct version
([20643](https://github.com/civicrm/civicrm-core/pull/20643))**
- **Move determination of priceSetID to the internal order class
([20669](https://github.com/civicrm/civicrm-core/pull/20669))**
- **CRM_Utils_Array::asColumns() - Add helper to rotate a matrix (from rows to
columns) ([20788](https://github.com/civicrm/civicrm-core/pull/20788))**
- **CRM_Utils_Array - Implement pathUnset() method
([20787](https://github.com/civicrm/civicrm-core/pull/20787))**
- **Handle participant payment create in line item
([20790](https://github.com/civicrm/civicrm-core/pull/20790))**
- **APIv4 Explorer - Render joins using addJoin function in OOP
([20723](https://github.com/civicrm/civicrm-core/pull/20723))**
- **Deprecate duplicate getLoggedInContactID() function
([20321](https://github.com/civicrm/civicrm-core/pull/20321))**
- **Remove deprecated function
([20760](https://github.com/civicrm/civicrm-core/pull/20760))**
- **Hopefully fix time rollover problem in MessageTemplateTest
([20714](https://github.com/civicrm/civicrm-core/pull/20714))**
- **Extract feeBlock to it's own tpl
([20679](https://github.com/civicrm/civicrm-core/pull/20679))**
- **Deprecate passing in 'null' for tax
([20671](https://github.com/civicrm/civicrm-core/pull/20671))**
- **Add test validation for Membership & participant payments
([20621](https://github.com/civicrm/civicrm-core/pull/20621))**
- **Fix up on invalid test data
([20667](https://github.com/civicrm/civicrm-core/pull/20667))**
- **Fix test to use valid amounts
([20668](https://github.com/civicrm/civicrm-core/pull/20668))**
- **Fix test to use valid financials
([20676](https://github.com/civicrm/civicrm-core/pull/20676))**
- **Improve CustomGroupTest
([20617](https://github.com/civicrm/civicrm-core/pull/20617))**
- **Test cleanup - specify return
([20570](https://github.com/civicrm/civicrm-core/pull/20570))**
- **Clean up code to determine line items for membership batch entry
([20779](https://github.com/civicrm/civicrm-core/pull/20779))**
- **AssetBuilderTest - Raise threshold for timeout
([20810](https://github.com/civicrm/civicrm-core/pull/20810))**
- **Reduce test api calls with no 'return'
([20574](https://github.com/civicrm/civicrm-core/pull/20574))**
- **Fix BaseIPN test to (mostly) pass invalid financials checks
([20785](https://github.com/civicrm/civicrm-core/pull/20785))**
- **Fix test set up to user Order api
([20780](https://github.com/civicrm/civicrm-core/pull/20780))**
- **[REF] Membership api for v4 (Work Towards
[dev/core#2634](https://lab.civicrm.org/dev/core/-/issues/2634):
[20759](https://github.com/civicrm/civicrm-core/pull/20759))**
- **[Ref] Remove (more) unreachable code from order api
([20793](https://github.com/civicrm/civicrm-core/pull/20793))**
- **[REF] Add in template guard for not being always set as per html format
([20747](https://github.com/civicrm/civicrm-core/pull/20747))**
- **[REF] Remove isPayLater from membership batch screen
([20396](https://github.com/civicrm/civicrm-core/pull/20396))**
- **[REF] Extend testing on membership batch entry & minor cleanup
([20394](https://github.com/civicrm/civicrm-core/pull/20394))**
- **[REF] Fix trying to access array offset from boolean value
([20734](https://github.com/civicrm/civicrm-core/pull/20734))**
- **[REF] Alter new Setup process to use CiviCRM's Event Dispatcher
([20717](https://github.com/civicrm/civicrm-core/pull/20717))**
- **[REF] - Improve efficiency of APIv4 GetInfo
([20708](https://github.com/civicrm/civicrm-core/pull/20708))**
- **REF - Get Contact Summary tab counts after calling hook to avoid wasting
time ([20673](https://github.com/civicrm/civicrm-core/pull/20673))**
- **[REF] Remove always false if
([20653](https://github.com/civicrm/civicrm-core/pull/20653))**
- **[REF] Extract CKEditor into its own core extension
([20392](https://github.com/civicrm/civicrm-core/pull/20392))**
- **(REF) crmUi - Support onCrmUiSelect for using select2 as a picklist
([20789](https://github.com/civicrm/civicrm-core/pull/20789))**
- **[REF] Tidy up param transforms
([20778](https://github.com/civicrm/civicrm-core/pull/20778))**
- **[REF] Follow up clean up - remove contribution_mode
([20656](https://github.com/civicrm/civicrm-core/pull/20656))**
- **[REF] Remove unnecessary variable wrangling in case roles section
([20729](https://github.com/civicrm/civicrm-core/pull/20729))**
- **[REF] Follow up fix to fixing note entity tables in views
([144](https://github.com/civicrm/civicrm-backdrop/pull/144))**
- **[REF] Follow up fix to fixing note entity tables in views
([646](https://github.com/civicrm/civicrm-drupal/pull/646))**
- **[NFC] - update code comment
([20599](https://github.com/civicrm/civicrm-core/pull/20599))**
- **[NFC] Fix test failure on MySQL8 because of lack of order in API
([20605](https://github.com/civicrm/civicrm-core/pull/20605))**
- **[NFC] [Test] Remove duplicate cleanup
([20647](https://github.com/civicrm/civicrm-core/pull/20647))**
- **[NFC] [TEST] cleanup, more use of return in ActivityTest
([20633](https://github.com/civicrm/civicrm-core/pull/20633))**
- **[NFC] Cleanup on membership test
([20636](https://github.com/civicrm/civicrm-core/pull/20636))**
- **[NFC] [Test] Remove duplicate cleanup
([20637](https://github.com/civicrm/civicrm-core/pull/20637))**
- **[NFC] Cleanup on contribution v3 api test
([20638](https://github.com/civicrm/civicrm-core/pull/20638))**
- **[NFC] Add in unit test to lock in the fix for the is_deleted in where clause
issue ([20733](https://github.com/civicrm/civicrm-core/pull/20733))**
- **[NFC] Afform - Regenerate civix files
([20615](https://github.com/civicrm/civicrm-core/pull/20615))**
- **[NFC] Fix test setup on a couple of tests to make them pass in php8
([20614](https://github.com/civicrm/civicrm-core/pull/20614))**
- **[NFC] Update various npm depdencies used only in unit testing
([20748](https://github.com/civicrm/civicrm-core/pull/20748))**
- **[NFC] Improve use of return parameters in ContributionPage test class
([20648](https://github.com/civicrm/civicrm-core/pull/20648))**
- **[NFC] Unit test for 20602
([20745](https://github.com/civicrm/civicrm-core/pull/20745))**
- **[NFC] Remove boilerplate comment block from APIv4 classes
([20700](https://github.com/civicrm/civicrm-core/pull/20700))**
- **[NFC] Github action script to run regen.sh for you
([20680](https://github.com/civicrm/civicrm-core/pull/20680))**
- **[NFC] Regenerate ContributeProduct DAO and also fix search_kit install on
MySQL 5.6 on test boxes
([20674](https://github.com/civicrm/civicrm-core/pull/20674))**
- **[NFC] Fixes an issue in this unit test where we are trying to do an array
access on an integer
([20652](https://github.com/civicrm/civicrm-core/pull/20652))**
- **[NFC] [Test] Cleanup on membership type test
([20649](https://github.com/civicrm/civicrm-core/pull/20649))**
- **[NFC/Unit test] - Add a test for getCaseRoles when there's a lot of roles
assigned ([20657](https://github.com/civicrm/civicrm-core/pull/20657))**
- **[NFC] [TEST] cleanup, more use of return in AddressTest
([20635](https://github.com/civicrm/civicrm-core/pull/20635))**
- **[NFC] [Test] Specify return values on get calls
([20632](https://github.com/civicrm/civicrm-core/pull/20632))**
- **[TEST][NFC] CiviCRM reaching MySQL join limit (Work Towards
[dev/core#1191](https://lab.civicrm.org/dev/core/-/issues/1191):
[20618](https://github.com/civicrm/civicrm-core/pull/20618) and
[20622](https://github.com/civicrm/civicrm-core/pull/20622))**
- **[php8-compact][NFC] Update testGroupClause unit test to work on php8
([20624](https://github.com/civicrm/civicrm-core/pull/20624))**
- **[php8-compact][REF] Fix failing custom group test on php8 by better handling
strings in 2nd key of the extends array and also validating the child and main
entity work ([20616](https://github.com/civicrm/civicrm-core/pull/20616))**
- **[php8-compact] Fix APIv4 Group Concat Test by setting dataType to be NULL if
the first expression is a SQL Function
([20655](https://github.com/civicrm/civicrm-core/pull/20655))**
- **[php8-compact] Fix issues with participant message templates causing Event
Tests to fail ([20613](https://github.com/civicrm/civicrm-core/pull/20613))**
- **[php8-compact] Add in guards into common templates to assit with fixing test
failures on php8
([20543](https://github.com/civicrm/civicrm-core/pull/20543))**
- **[php8-compact] Fix Array to String in formButtons in CRM_Core_FormTest
([20608](https://github.com/civicrm/civicrm-core/pull/20608))**
- **[php8-compact] Fix Event Form test for php8 by setting totalAmount in the
form params ([20623](https://github.com/civicrm/civicrm-core/pull/20623))**
- **[php8-compat] Alternate to the alternate for testOpeningForms
([20603](https://github.com/civicrm/civicrm-core/pull/20603))**
- **[php8-compact] Fix apiv4 tests in php8 by not incrementing an array
([20594](https://github.com/civicrm/civicrm-core/pull/20594))**
- **[php8-compact] Further test fixes for php8
([20597](https://github.com/civicrm/civicrm-core/pull/20597))**
- **[php8-compact] Fix failing AuthorizeNetIPN tests on php8
([20596](https://github.com/civicrm/civicrm-core/pull/20596))**
- **[php8-compact] Fix failing CRM_Core_InvokeTest on php8
([20595](https://github.com/civicrm/civicrm-core/pull/20595))**
- **[php8-compact] Fix Session Test errors in php8
([20593](https://github.com/civicrm/civicrm-core/pull/20593))**
- **[php8-compact] Fix Case Activity Message Template to fix test failure in
php8 ([20592](https://github.com/civicrm/civicrm-core/pull/20592))**
- **[php8-compact] Fix PDF Letter Test by ensuring that all actual DB fields
are in the tokens array and also by resetting the static cache of tokens
([20591](https://github.com/civicrm/civicrm-core/pull/20591))**
- **[php8-compact] Add in guards into various templates to fix the
CRM_Contact_Form_IndividualTest suite
([20579](https://github.com/civicrm/civicrm-core/pull/20579))**
- **[php8-compact] Fixes test failures in the
CRM_Contribute_Form_ContributionTest class due to template issues
([20581](https://github.com/civicrm/civicrm-core/pull/20581))**
- **[php8-compact] Fix Dashboard Tests by adding in if guards into smarty
templates ([20575](https://github.com/civicrm/civicrm-core/pull/20575))**
- **[php8-compact] Add in guards into various templates to fix issues in test
runs on php8 ([20544](https://github.com/civicrm/civicrm-core/pull/20544))**
## Credits
This release was developed by the following code authors:
AGH Strategies - Alice Frumin, Andrew Hunt; Agileware - Francis Whittle, Justin
Freeman; Akos Garai; Australian Greens - John Twyman; Blackfly Solutions - Alan
Dixon; Christian Wach; Circle Interactive - Pradeep Nayak; CiviCoop - Jaap
Jansma; CiviCRM - Coleman Watts, Tim Otten; CompuCorp - Debarshi Bhaumik; Dave
D; Gokhalemethod- Sadashiv; iXiam - Luciano Spiegel; JMA Consulting - Monish
Deb, Seamus Lee; Lemniscus - Noah Miller; Lighthouse Consulting and Design -
Brian Shaughnessy; Megaphone Technology Consulting - Jon Goldberg; MJW
Consulting - Matthew Wire; Skvare - Sunil Pawar; Wikimedia Foundation - Eileen
McNaughton
Most authors also reviewed code for this release; in addition, the following
reviewers contributed their comments:
Artful Robot - Rich Lott; Bob Silvern; CiviCoop - Klaas Eikelboom; CiviDesk -
Yashodha Chaku; Coop SymbioTIC - Mathieu Lutfy; Freeform Solutions - Herb van
den Dool; Fuzion - Jitendra Purohit; JMA Consulting - Joe Murray; Ray Wright;
Semper IT - Karin Gerritsen; Squiffle Consulting - Aidan Saunders; Tadpole
Collective - Kevin Cristiano; Tech To The People - Xavier Dutoit; Third Sector
Design - Michael McAndrew; Web Access - Kurund Jalmi;
## Feedback
These release notes are edited by Alice Frumin and Andrew Hunt. If you'd like
to provide feedback on them, please log in to https://chat.civicrm.org/civicrm
and contact `@agh1`.