# CiviCRM 5.42.0
Released October 6, 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? | no |
| **Introduce features?** | **yes** |
| **Fix bugs?** | **yes** |
## Features
### Core CiviCRM
- **Edit Contact: Hide email signatures for contacts that do not have a user/CMS
account
([dev/user-interface#38](https://lab.civicrm.org/dev/user-interface/-/issues/38):
[21103](https://github.com/civicrm/civicrm-core/pull/21103))**
Improves the user interface by hiding the email signature section for contacts
for whom it is not relevant.
- **Option to rename the file before downloading
([dev/core#2121](https://lab.civicrm.org/dev/core/-/issues/2121):
[21006](https://github.com/civicrm/civicrm-core/pull/21006))**
Gives the user the option to change the PDF file name on the "Print/Merge
Document" screen.
- **Add Settings, Disable, Delete buttons to group contacts listing page
(Work Towards [dev/core#2546](https://lab.civicrm.org/dev/core/-/issues/2546):
[20135](https://github.com/civicrm/civicrm-core/pull/20135))**
Adds a "Edit Group Settings" button that pops up the group settings edit
overlay to the smog group page.
- **On logging detail report show the words not the numbers
([dev/core#2691](https://lab.civicrm.org/dev/core/-/issues/2691):
[20907](https://github.com/civicrm/civicrm-core/pull/20907))**
Improves logging by displaying more context.
- **Tokens - contributions - could we show them all?
(Work Towards [dev/core#2745](https://lab.civicrm.org/dev/core/-/issues/2745):
[21134](https://github.com/civicrm/civicrm-core/pull/21134))**
Ensures support for the Contribution Token "contributionId".
- **Allow dedupe by websites
([dev/core#2770](https://lab.civicrm.org/dev/core/-/issues/2770):
[21168](https://github.com/civicrm/civicrm-core/pull/21168))**
Makes it so one can dedupe based on websites.
- **APIv4 pseudoconstant improvements
([21184](https://github.com/civicrm/civicrm-core/pull/21184))**
Makes SearchKit handle large option lists more efficiently, and adds APIv4
field metadata about available suffixes.
- **SearchKit - Add placeholder to token select
([21172](https://github.com/civicrm/civicrm-core/pull/21172))**
Adds placeholder text to the token select dropdown in SearchKit.
- **Searchkit - Add grid display layout
([dev/core#2776](https://lab.civicrm.org/dev/core/-/issues/2776):
[21194](https://github.com/civicrm/civicrm-core/pull/21194))**
Adds support to display SearchKit results in a grid format.
- **SearchKit - Merge admin results table with searchDisplay code
([21069](https://github.com/civicrm/civicrm-core/pull/21069) and
[21488](https://github.com/civicrm/civicrm-core/pull/21488))**
Improves and streamlines the SearchKit Angular code to reconcile two
different ways of fetching, formatting & displaying results. This reduces code
duplication, while adding a few features from the admin table to all search
display tables.
- **SearchKit - Add download CSV action
([21328](https://github.com/civicrm/civicrm-core/pull/21328))**
Adds an option to SearchKit to download a CSV.
- **SearchKit - Add links to admin table and refresh after popups
([21343](https://github.com/civicrm/civicrm-core/pull/21343))**
Adds quick-action links to the SearchKit admin results table.
- **SearchKit - Use a search display to display searches
([21270](https://github.com/civicrm/civicrm-core/pull/21270))**
Simplifies code by using a SearchKit display to display searches.
- **Include random as an option when sorting displays
([dev/report#75](https://lab.civicrm.org/dev/report/-/issues/75):
[21177](https://github.com/civicrm/civicrm-core/pull/21177))**
Adds a sort option of random to SearchKit.
- **Searchkit: Add image field handler
([dev/core#2781](https://lab.civicrm.org/dev/core/-/issues/2781):
[21300](https://github.com/civicrm/civicrm-core/pull/21300))**
Makes it possible to show images in SearchKit displays.
- **SearchKit - Allow tokens in menu button text
([21217](https://github.com/civicrm/civicrm-core/pull/21217))**
Makes it so users can include tokens in SearchKit menu button text.
- **TokenProcessor - Allow defining Smarty variables which are populated via
token ([21336](https://github.com/civicrm/civicrm-core/pull/21336))**
Allows more interoperability between Smarty expressions and tokens.
- **Token Parser - Allow tokens with multiple dots (eg
{contribution.contribution_recur_id.amount})
([21076](https://github.com/civicrm/civicrm-core/pull/21076))**
Adjusts the naming/parsing rules for Civi-style tokens so that tokens may
include dots and colons.
- **Afform - support file uploads
([21150](https://github.com/civicrm/civicrm-core/pull/21150))**
Supports file fields as part of Afform.
- **Not possible to set the location type (address, mail, telephone) to a
specific value
([dev/core#2703](https://lab.civicrm.org/dev/core/-/issues/2703):
[21254](https://github.com/civicrm/civicrm-core/pull/21254))**
Makes it possible in Afform to select a single location type for an address,
email, phone etc. block instead of having the field on the form.
- **Afform - Store submissions in a new database table
([21105](https://github.com/civicrm/civicrm-core/pull/21105))**
Adds a Afform setting "log submissions", when checked, Afform submissions are
stored in the database.
- **Move financial acl setting to the extension
([21120](https://github.com/civicrm/civicrm-core/pull/21120))**
Moves financial ACL settings to the financial ACL extension.
- **SavedSearch - Add pseudoconstant for api_entity field
([21312](https://github.com/civicrm/civicrm-core/pull/21312))**
Adds a pseudoconstant to facilitate display in the UI of what a search is for,
e.g. ->addSelect('api_entity:label') would return "Contacts" for a search of
Contacts.
- **Change the default PDF file name from "CiviLetter.pdf" to use the Activity
Subject, if available
([21220](https://github.com/civicrm/civicrm-core/pull/21220))**
Improves PDF file naming to be more specific.
- **Change PDF file name from "civicrmContributionReceipt.pdf" to use the
standard "receipt.pdf" file name
([21221](https://github.com/civicrm/civicrm-core/pull/21221))**
Improves PDF file naming.
- **Scheduled Reminders UI - Show more activity tokens in admin GUI
([21091](https://github.com/civicrm/civicrm-core/pull/21091))**
Adds more Activity Tokens to the Scheduled Reminders UI.
### CiviContribute
- **Logging improvements for "Failed to update contribution in database"
([21243](https://github.com/civicrm/civicrm-core/pull/21243))**
Improves logging when contribution fails.
- **Add recurring contributions to contribution reports
(Work Towards [dev/report#63](https://lab.civicrm.org/dev/report/-/issues/63):
[20168](https://github.com/civicrm/civicrm-core/pull/20168))**
Adds "Contribution Recurring" as a filter, column and group by to the
Contribution Summary Report.
### CiviMail
- **System Workflow Messages - Improve localization experience (Work Towards
[dev/mail#83](https://lab.civicrm.org/dev/mail/-/issues/83):
[21139](https://github.com/civicrm/civicrm-core/pull/21139))**
Introduces a class contracts for system workflow messages which will enable
richer APIs and UIs.
### CiviMember
- **Membership api for v4
([dev/core#2634](https://lab.civicrm.org/dev/core/-/issues/2634):
[21106](https://github.com/civicrm/civicrm-core/pull/21106))**
Adds the Membership entity to APIv4.
- **Fix code to use Order api to create Memberships in core forms
(Work Towards [dev/core#2717](https://lab.civicrm.org/dev/core/-/issues/2717):
[20936](https://github.com/civicrm/civicrm-core/pull/20936),
[21126](https://github.com/civicrm/civicrm-core/pull/21126) and
[20935](https://github.com/civicrm/civicrm-core/pull/20935))**
Work towards using the Order API to create Memberships in core forms.
### Joomla Integration
- **CiviCRM-Joomla should accept web-service calls
([58](https://github.com/civicrm/civicrm-joomla/pull/58))**
Ensures that on a stock configuration of CiviCRM-Joomla, it is possible to
create a page-route for accepting web-service calls.
## Bugs resolved
### Core CiviCRM
- **Multi-lingual: Contact Type label is cached regardless of language
([dev/translation#70](https://lab.civicrm.org/dev/translation/-/issues/70):
[21268](https://github.com/civicrm/civicrm-core/pull/21268))**
Fixes loading multiple translations within same page-view (OptionValues,
ContactTypes).
- **Activity export broken - takes you to some other screen instead
([dev/core#2835](https://lab.civicrm.org/dev/core/-/issues/2835):
[21456](https://github.com/civicrm/civicrm-core/pull/21456))**
- **APIv4 - entityBatch linkage
([dev/core#2682](https://lab.civicrm.org/dev/core/-/issues/2682):
[21241](https://github.com/civicrm/civicrm-core/pull/21241))**
Work Towards APIv4 entity parity. Ensures that the values for entity_table are
discoverable.
- **Consider replacing fopen() call in CRM_Utils_File::isIncludable with
stream_resolve_include_path()
([dev/core#2730](https://lab.civicrm.org/dev/core/-/issues/2730):
[21060](https://github.com/civicrm/civicrm-core/pull/21060))**
Replaces fopen call in CRM_Utils_File::isIncludable with one that doesn't need
error-supression to avoid problems in php8.
- **SearchKit: have a quick Export task
(Work Towards [dev/core#2732](https://lab.civicrm.org/dev/core/-/issues/2732):
[21320](https://github.com/civicrm/civicrm-core/pull/21320))**
Refactoring work towards making it possible to have a direct export feature in
SearchKit.
- **SearchKit - Fix deleting search displays
([21444](https://github.com/civicrm/civicrm-core/pull/21444))**
- **SearchKit - Fix anonymous access to running search displays
#([21752](https://github.com/civicrm/civicrm-core/pull/21752))**
Recently SearchKit added the ability for anonymous users to access search
displays. However, due to an oversight the feature doesn't actually work for
anonymous users. This fixes the problem.
- **Afform - ensure dragging classes are removed when not sorting
([21750](https://github.com/civicrm/civicrm-core/pull/21750))**
Fixes an annoying UI glitch in Afform where the screen can appear "locked" or
"frozen" after dragging fields into a fieldset.
- **Expose Contribution token processor
([dev/core#2747](https://lab.civicrm.org/dev/core/-/issues/2747):
[21046](https://github.com/civicrm/civicrm-core/pull/21046) and
[21057](https://github.com/civicrm/civicrm-core/pull/21057))**
Reconciles contribution legacy tokens and scheduled reminders tokens.
- **CRM_Core_BAO_CustomField::getChangeSerialize always returns a change
([dev/core#2762](https://lab.civicrm.org/dev/core/-/issues/2762):
[21160](https://github.com/civicrm/civicrm-core/pull/21160))**
- **Caching issue on apiv4 + install
([dev/core#2763](https://lab.civicrm.org/dev/core/-/issues/2763):
[21166](https://github.com/civicrm/civicrm-core/pull/21166))**
- **CiviCRM email validation failing incorrectly
([dev/core#2769](https://lab.civicrm.org/dev/core/-/issues/2769):
[329](https://github.com/civicrm/civicrm-packages/pull/329) and
[21169](https://github.com/civicrm/civicrm-core/pull/21169))**
- **Sort by date column on multirecord field listing section on profile edit
mode doesn't work
([dev/core#2774](https://lab.civicrm.org/dev/core/-/issues/2774):
[21191](https://github.com/civicrm/civicrm-core/pull/21191))**
- **Error when using search in 'Find and Merge Duplicate Contacts' page
([dev/core#2778](https://lab.civicrm.org/dev/core/-/issues/2778):
[21223](https://github.com/civicrm/civicrm-core/pull/21223))**
- **Print/merge document has awkward filename if activity subject uses
non-english letters
([dev/core#2789](https://lab.civicrm.org/dev/core/-/issues/2789):
[21259](https://github.com/civicrm/civicrm-core/pull/21259))**
- **Contribution custom field tokens are duplicated in the dropdown
([dev/core#2806](https://lab.civicrm.org/dev/core/-/issues/2806):
[21337](https://github.com/civicrm/civicrm-core/pull/21337))**
- **[regression] Search forms with entities that include File custom fields
don't render in Afform Admin screen
([dev/core#2751](https://lab.civicrm.org/dev/core/-/issues/2751):
[21084](https://github.com/civicrm/civicrm-core/pull/21084))**
- **APIv4 - Throw exception instead of munging illegal join aliases
([21072](https://github.com/civicrm/civicrm-core/pull/21072))**
Improves APIv4 validation of explicit join aliases.
- **Fix deprecated API4 Join on Email in dynamic profile
([21308](https://github.com/civicrm/civicrm-core/pull/21308))**
- **Search Kit doesn't display related contact custom fields
([dev/report#73](https://lab.civicrm.org/dev/report/-/issues/73):
[21071](https://github.com/civicrm/civicrm-core/pull/21071))**
- **SearchKit - Misc bulk action bug fixes
([21159](https://github.com/civicrm/civicrm-core/pull/21159))**
- **SearchKit - Fix aggregated joins
([21411](https://github.com/civicrm/civicrm-core/pull/21411))**
- **SearchKit - Fix pager count and add 'None Found' text in empty tables
([21333](https://github.com/civicrm/civicrm-core/pull/21333))**
- **Fix Searchkit "Add" columns button UI
([21315](https://github.com/civicrm/civicrm-core/pull/21315))**
- **Afform - Fix button appearance and block form during submission
([21287](https://github.com/civicrm/civicrm-core/pull/21287))**
- **Afform - fix contact source field & field defaults
([21228](https://github.com/civicrm/civicrm-core/pull/21228))**
- **Fix support link just added in oauth-client extension info.xml
([21256](https://github.com/civicrm/civicrm-core/pull/21256))**
- **better target multivalue checkbox and multiselect import validation
([21317](https://github.com/civicrm/civicrm-core/pull/21317))**
- **Do not add tracking to internal anchor URLs
([20115](https://github.com/civicrm/civicrm-core/pull/20115))**
- **Fix for new prefetch key
([21292](https://github.com/civicrm/civicrm-core/pull/21292))**
- **Do not enable custom activity search on new installs
([21260](https://github.com/civicrm/civicrm-core/pull/21260))**
- **Add date metadata for email.on_hold, reset_date
([21233](https://github.com/civicrm/civicrm-core/pull/21233))**
- **Add no-prefetch campaign pseudoconstants
([21185](https://github.com/civicrm/civicrm-core/pull/21185))**
- **Replace extension key with label during install/upgrade/disable/uninstall
([21094](https://github.com/civicrm/civicrm-core/pull/21094))**
- **ActionSchedule - Pass real batches into TokenProcessor. Simplify
CRM_Activity_Tokens.
([21088](https://github.com/civicrm/civicrm-core/pull/21088))**
- **MessageTemplate::sendTemplate() - Accept `array $messageTemplate` and `array
$tokenContext` ([21073](https://github.com/civicrm/civicrm-core/pull/21073))**
- **Alternate to 20131 - Avoid crash during import for blank lines in a
one-column csv file
([21216](https://github.com/civicrm/civicrm-core/pull/21216))**
- **CRM_Queue_Service - Use ?? instead of error-supression operator
([21207](https://github.com/civicrm/civicrm-core/pull/21207))**
- **Respect http_timeout core setting for Guzzle HTTP requests
([21096](https://github.com/civicrm/civicrm-core/pull/21096))**
- **Smarty notice - Explicitly set hideRelativeLabel var on Find Cases form
([21070](https://github.com/civicrm/civicrm-core/pull/21070))**
- **(Smart Group) is being constantly added while editing the smart group title
from 'Manage Group' page
([20898](https://github.com/civicrm/civicrm-core/pull/20898))**
- **Enotice fixes in tpl
([21170](https://github.com/civicrm/civicrm-core/pull/21170))**
- **Template fixes - notices, syntax
([21257](https://github.com/civicrm/civicrm-core/pull/21257))**
- **Fix invalid parameter giving E_WARNING
([21255](https://github.com/civicrm/civicrm-core/pull/21255))**
- **Fix search display access for non-admin users
([21082](https://github.com/civicrm/civicrm-core/pull/21082))**
- **Use convenience function for one-off token evaluations to avoid too-long
filenames and possible privacy issues
([21140](https://github.com/civicrm/civicrm-core/pull/21140))**
- **Replace deprecated calls to `renderMessageTemplate()`
([21121](https://github.com/civicrm/civicrm-core/pull/21121))**
- **Scheduled Reminders - Pass locale through to TokenProcessor
([21085](https://github.com/civicrm/civicrm-core/pull/21085))**
### CiviCampaign
- **Fix caching on campaign pseudoconstant
([21083](https://github.com/civicrm/civicrm-core/pull/21083))**
### CiviContribute
- **Fix the check to see if the financialAclExtension is installed
([21077](https://github.com/civicrm/civicrm-core/pull/21077))**
- **Simplify ContributionView form. Always display "lineitems"
([21285](https://github.com/civicrm/civicrm-core/pull/21285))**
- **Can we re-order the 'recur links'
([dev/core#2843](https://lab.civicrm.org/dev/core/-/issues/2843):
[21559](https://github.com/civicrm/civicrm-core/pull/21559))**
The new link to View Template on a recurring contribution row is now moved to
the end, allowing the Edit link to return to the second spot.
- **When a recurring contribution template has no line items, the contact
contribution tab crashes
([dev/financial#187](https://lab.civicrm.org/dev/financial/-/issues/187):
[21734](https://github.com/civicrm/civicrm-core/pull/21734))**
- **Call line item pre hook after tax amount is calculated
([21731](https://github.com/civicrm/civicrm-core/pull/21731))**
`hook_civicrm_pre` is now invoked on a line item entity after the tax amount
has been calculated for it.
### CiviMail
- **CiviCRM Mailing, function unsub_from_mailing has spelling error,
"experiement" impacts A/B Mailing unsubscribes
([21245](https://github.com/civicrm/civicrm-core/pull/21245))**
- **In an email, a token from an extension in a subject will inhibits the same
token group in the email body
([dev/core#2673](https://lab.civicrm.org/dev/core/-/issues/2673):
[21080](https://github.com/civicrm/civicrm-core/pull/21080))**
- **Log details of mailing error and don't display details to end user
([21173](https://github.com/civicrm/civicrm-core/pull/21173))**
### CiviMember
- **Fix Membership.create in BAO to respect passed in status_id
([20976](https://github.com/civicrm/civicrm-core/pull/20976))**
- **Membership Dashboard - Fatal Error starting with 5.41.beta1
([dev/core#2758](https://lab.civicrm.org/dev/core/-/issues/2758):
[21171](https://github.com/civicrm/civicrm-core/pull/21171) and
[21167](https://github.com/civicrm/civicrm-core/pull/21167))**
- **Update MembershipType.duration and MembershipStatus.name to be required
([21119](https://github.com/civicrm/civicrm-core/pull/21119))**
- **Fix missing value of End Adjustment column from Membership status page
([21664](https://github.com/civicrm/civicrm-core/pull/21664))**
### Drupal Integration
- **Syntax errors when loading sample data
([dev/drupal#161](https://lab.civicrm.org/dev/drupal/-/issues/161):
[648](https://github.com/civicrm/civicrm-drupal/pull/648))**
Removes drush sample data install option that doesn't work.
- **Replace Drupal 9 user function, function getUsername is no more valid
([328](https://github.com/civicrm/civicrm-packages/pull/328))**
### Joomla Integration
- **Fixes unusable modals in Joomla 4
([21286](https://github.com/civicrm/civicrm-core/pull/21286))**
- **Tidies Joomla 4 integration (menu, padding) after final release
([21342](https://github.com/civicrm/civicrm-core/pull/21342))**
## Miscellany
- **MessageTemplate - Add renderTemplate(). Deprecate renderMessageTemplate().
([21115](https://github.com/civicrm/civicrm-core/pull/21115))**
- **Provided standard links in ext/oauth-client/info.xml, fixed typo
([21252](https://github.com/civicrm/civicrm-core/pull/21252))**
- **Use getter to get subscription id
([21309](https://github.com/civicrm/civicrm-core/pull/21309))**
- **Extract ACL contact cache clearing part out
([21219](https://github.com/civicrm/civicrm-core/pull/21219))**
- **Update quickform original
([330](https://github.com/civicrm/civicrm-packages/pull/330))**
- **Afform - Rename blocks and joins for clarity
([21218](https://github.com/civicrm/civicrm-core/pull/21218))**
- **Afform - Optimize Get by checking type
([21316](https://github.com/civicrm/civicrm-core/pull/21316))**
- **[REF] Cleanup pdf classes to use a trait like we do for email classes
([dev/core#2790](https://lab.civicrm.org/dev/core/-/issues/2790):
[21334](https://github.com/civicrm/civicrm-core/pull/21334),
[21305](https://github.com/civicrm/civicrm-core/pull/21305),
[21310](https://github.com/civicrm/civicrm-core/pull/21310),
[21276](https://github.com/civicrm/civicrm-core/pull/21276),
[21297](https://github.com/civicrm/civicrm-core/pull/21297),
[21331](https://github.com/civicrm/civicrm-core/pull/21331) and
[21290](https://github.com/civicrm/civicrm-core/pull/21290))**
- **Upgrade angular-file-uploader to v2.6.1
([21081](https://github.com/civicrm/civicrm-core/pull/21081))**
- **Upgrade Pear/DB package to be version 1.11.0
([21087](https://github.com/civicrm/civicrm-core/pull/21087))**
- **CRM_Core_Component - Remove unused code
([21086](https://github.com/civicrm/civicrm-core/pull/21086))**
- **Move make-sure-single-set out of shared function
([21062](https://github.com/civicrm/civicrm-core/pull/21062))**
- **Remove unused, duplicate functions getEntitiesByTag
([21209](https://github.com/civicrm/civicrm-core/pull/21209))**
- **Remove deprecated function
([21179](https://github.com/civicrm/civicrm-core/pull/21179))**
- **Remove extraneous buildQuickForm
([21325](https://github.com/civicrm/civicrm-core/pull/21325))**
- **Remove unused assignment
([21061](https://github.com/civicrm/civicrm-core/pull/21061))**
- **Remove no longer used variable in Email.tpl / smarty warning
([21074](https://github.com/civicrm/civicrm-core/pull/21074))**
- **Remove deprecated isDevelopment() function
([21269](https://github.com/civicrm/civicrm-core/pull/21269))**
- **[REF] Move acl delete logic to an event listener
([dev/core#2757](https://lab.civicrm.org/dev/core/-/issues/2757):
[21201](https://github.com/civicrm/civicrm-core/pull/21201) and
[21213](https://github.com/civicrm/civicrm-core/pull/21213))**
- **[REF] Remove references to contribution_invoice_settings (Work Towards
[dev/core#2719](https://lab.civicrm.org/dev/core/-/issues/2719):
[20991](https://github.com/civicrm/civicrm-core/pull/20991))**
- **[REF] Afform - Code cleanup in LoadAdminData API action
([21089](https://github.com/civicrm/civicrm-core/pull/21089))**
- **[REF] SearchKit - Refactor search task code to share a trait
([21156](https://github.com/civicrm/civicrm-core/pull/21156))**
- **[REF] SearchKit - display code refactor + pager options
([21049](https://github.com/civicrm/civicrm-core/pull/21049))**
- **[REF] SearchKit - Use non-deprecated join syntax when loading standalone
displays ([21095](https://github.com/civicrm/civicrm-core/pull/21095))**
- **[REF] APIv4 Notes - Ensure child notes are deleted with parent, and hooks
are called ([21208](https://github.com/civicrm/civicrm-core/pull/21208))**
- **[REF] Remove unused/unneeded variables from Note View page
([21226](https://github.com/civicrm/civicrm-core/pull/21226))**
- **[REF] CRM_Utils_Recent - Use hook listener to delete items
([21204](https://github.com/civicrm/civicrm-core/pull/21204) and
[21492](https://github.com/civicrm/civicrm-core/pull/21492))**
- **[REF] Deprecate unnecessary del() functions
([21200](https://github.com/civicrm/civicrm-core/pull/21200))**
- **REF Switch to CRM_Core_Form::setTitle() instead of
CRM_Utils_System::setTitle() part 1
([21193](https://github.com/civicrm/civicrm-core/pull/21193))**
- **[Ref] remove unused variable
([21161](https://github.com/civicrm/civicrm-core/pull/21161))**
- **[Ref] Move id fetching to the classes
([21075](https://github.com/civicrm/civicrm-core/pull/21075))**
- **(REF) ReflectionUtils - Add findStandardProperties() and findMethodHelpers()
([21114](https://github.com/civicrm/civicrm-core/pull/21114))**
- **[Ref] Simplify IF clause
([21078](https://github.com/civicrm/civicrm-core/pull/21078))**
- **[Ref] extract function to getEmailDefaults
([21067](https://github.com/civicrm/civicrm-core/pull/21067))**
- **[Ref] Clarify what parameters are passed in
([21063](https://github.com/civicrm/civicrm-core/pull/21063))**
- **[Ref] Move rule to email trait
([21066](https://github.com/civicrm/civicrm-core/pull/21066))**
- **[Ref] cleanup alterActionSchedule
([21047](https://github.com/civicrm/civicrm-core/pull/21047))**
- **[Ref] Copy emailcommon function back to email trait
([21251](https://github.com/civicrm/civicrm-core/pull/21251))**
- **[REF] Update a few references to invoicing
([21101](https://github.com/civicrm/civicrm-core/pull/21101))**
- **[Ref] intial testing on case tokens, make knownTokens optional
([21289](https://github.com/civicrm/civicrm-core/pull/21289))**
- **[Ref] Deprecate Core_Error handling
([21279](https://github.com/civicrm/civicrm-core/pull/21279))**
- **[REF] Fix Page Hook test on php8 by putting in guard into customDataB…
([21344](https://github.com/civicrm/civicrm-core/pull/21344))**
- **[REF] Fix undefined smarty vars in Advanced Search
([21321](https://github.com/civicrm/civicrm-core/pull/21321))**
- **[REF] Improve Custom data insert performance when using the copyCusto…
([21313](https://github.com/civicrm/civicrm-core/pull/21313))**
- **[REF] Copy preProcessFromAddress back into the pdf function
([21306](https://github.com/civicrm/civicrm-core/pull/21306))**
- **[REF] Remove duplicate IF
([21298](https://github.com/civicrm/civicrm-core/pull/21298))**
- **[REF] Minor extraction
([21296](https://github.com/civicrm/civicrm-core/pull/21296))**
- **[REF] Remove unreachable code
([21294](https://github.com/civicrm/civicrm-core/pull/21294))**
- **[Ref] Minor extraction
([21293](https://github.com/civicrm/civicrm-core/pull/21293))**
- **REF Don't check if id is set in ContributionView form - it's required
([21274](https://github.com/civicrm/civicrm-core/pull/21274))**
- **[REF] Remove meaningless if
([21273](https://github.com/civicrm/civicrm-core/pull/21273))**
- **[NFC] Fix APIv4 Conformance tests on php8
([21302](https://github.com/civicrm/civicrm-core/pull/21302))**
- **[NFC] - Replace deprecated function in AngularLoaderTest
([21244](https://github.com/civicrm/civicrm-core/pull/21244))**
- **[NFC] CRM_Utils_SystemTest - Call to Uri->withPath() using deprecated format
([21215](https://github.com/civicrm/civicrm-core/pull/21215))**
- **[NFC] CRM_Extension_Manager_ModuleUpgTest - use ?? instead of
error-suppression operator
([21214](https://github.com/civicrm/civicrm-core/pull/21214))**
- **[NFC] CRM_Extension_Manager_ModuleTest - use ?? instead of error-suppression
operator ([21206](https://github.com/civicrm/civicrm-core/pull/21206))**
- **[NFC] Update CRM_Core_RegionTest so it doesn't need the error-suppression
operator ([21155](https://github.com/civicrm/civicrm-core/pull/21155))**
- **[NFC] Update testCaseActivityCopyTemplate to provide variable that would
usually be present
([21146](https://github.com/civicrm/civicrm-core/pull/21146))**
- **NFC - Fix docblock in CRM_Core_Transaction
([21125](https://github.com/civicrm/civicrm-core/pull/21125))**
- **[NFC] {Test} Minor cleanup
([21116](https://github.com/civicrm/civicrm-core/pull/21116))**
- **[NFC] Fix UpdateSubscriptionTest on php8 by creating a Payment Processor
([21324](https://github.com/civicrm/civicrm-core/pull/21324))**
- **(NFC) Expand test coverage for scheduled-reminders with `{activity.*}`
tokens ([21092](https://github.com/civicrm/civicrm-core/pull/21092))**
- **(NFC) TokenProcessorTest - Add scenario inspired by dev/core#2673
([21090](https://github.com/civicrm/civicrm-core/pull/21090))**
- **[NFC] Fix E-notice in Afform unit tests
([21345](https://github.com/civicrm/civicrm-core/pull/21345))**
- **[NFC] Cleanup boilerplate code in extension upgrader classes
([21340](https://github.com/civicrm/civicrm-core/pull/21340))**
- **[NFC/Unit test] Update flaky test
CRM_Utils_TokenConsistencyTest::testCaseTokenConsistency
([21341](https://github.com/civicrm/civicrm-core/pull/21341))**
- **(NFC) MailingQueryEvent - Add more docblocks about query-writing and
`tokenContext_*`
([21098](https://github.com/civicrm/civicrm-core/pull/21098))**
- **[NFC] Fix undefined array key when running CRM unit test suite in php8
([21314](https://github.com/civicrm/civicrm-core/pull/21314))**
- **Add test to UpdateSubscription form
([21282](https://github.com/civicrm/civicrm-core/pull/21282))**
- **Improve test for CRM_Utils_Recent
([21222](https://github.com/civicrm/civicrm-core/pull/21222))**
## Credits
This release was developed by the following code authors:
AGH Strategies - Alice Frumin, Andie Hunt; Agileware - Justin Freeman;
Australian Greens - John Twyman; Benjamin W; CiviCRM - Coleman Watts, Tim Otten;
CompuCorp - Debarshi Bhaumik, Lisandro; Coop SymbioTIC - Mathieu Lutfy; Dave D;
Fuzion - Jitendra Purohit; Greenpeace Central and Eastern Europe - Patrick
Figel; JMA Consulting - Joe Murray, Monish Deb, Seamus Lee; Joinery - Allen
Shaw; Megaphone Technology Consulting - Jon Goldberg; MJW Consulting - Matthew
Wire; Nicol Wistreich; Skvare - Sunil Pawar; Tadpole Collective - Kevin
Cristiano; Third Sector Design - Kurund Jalmi, Michael McAndrew; Wikimedia
Foundation - Eileen McNaughton; Wildsight - Lars Sanders-Green
Most authors also reviewed code for this release; in addition, the following
reviewers contributed their comments:
Black Brick Software - David Hayes; CiviCoop - Jaap Jansma; Joinery - Allen
Shaw; Lighthouse Consulting and Design - Brian Shaughnessy; redcuillin
## Feedback
These release notes are edited by Alice Frumin and Andie Hunt. If you'd like
to provide feedback on them, please log in to https://chat.civicrm.org/civicrm
and contact `@agh1`.