# CiviCRM 5.26.0 Released June 3, 2020 - **[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? | **yes** | | Fix problems installing or upgrading to a previous version? | **yes** | | Introduce features? | **yes** | | Fix bugs? | **yes** | ## NOTICE: WordPress Service URLs The upcoming release of WordPress 5.5 ([ETA August 2020](https://make.wordpress.org/core/5-5/)) requires changes to several CiviCRM URLs. CiviCRM 5.26+ adopts a new URL convention. For old URLs, there is transitional support that will work for most web-based visitors. However, this may not be sufficient for *external service integrations* (e.g. certain payment processors or email relays which send notifications to CiviCRM). Administrators should promptly assess and update any external services which submit notifications to their CiviCRM-WordPress sites. For more information, see the blog post [CiviCRM 5.26 and WordPress: Important notice](https://civicrm.org/blog/kcristiano/civicrm-526-and-wordpress-important-notice). ## Features ### Core CiviCRM - **Create nl_BE translation ([dev/translation#4](https://lab.civicrm.org/dev/translation/issues/4): [17048](https://github.com/civicrm/civicrm-core/pull/17048), [17027](https://github.com/civicrm/civicrm-core/pull/17027) and [16966](https://github.com/civicrm/civicrm-core/pull/16966))** Adds a "Dutch (Belgium)" (shorthand: nl_BE) translation of CiviCRM which heavily borrows from the existing "Dutch (Netherlands)" (nl_NL) translation with a few changes. - **APIv4 - Allow field options to be returned in multiple formats ([17167](https://github.com/civicrm/civicrm-core/pull/17167))** Gives more flexibility about how options are returned from APIv4 and adds visibility in the API explorer. - **APIv4 - How do I interact with option values? ([dev/core#1705](https://lab.civicrm.org/dev/core/issues/1705): [17158](https://github.com/civicrm/civicrm-core/pull/17158), [17138](https://github.com/civicrm/civicrm-core/pull/17138) and [17219](https://github.com/civicrm/civicrm-core/pull/17219))** Adds support for pseudoconstants to APIv4. - **APIv4 - Add MessageTemplate API ([17073](https://github.com/civicrm/civicrm-core/pull/17073))** Adds new "MessageTemplate" entity to APIv4. - **APIv4 - Add support for HAVING clause ([17015](https://github.com/civicrm/civicrm-core/pull/17015))** Adds support for using `HAVING` clauses in APIv4. - **APIv4 - Query Improvements (Work Towards [dev/report#31](https://lab.civicrm.org/dev/report/issues/31): [17113](https://github.com/civicrm/civicrm-core/pull/17113) and [17047](https://github.com/civicrm/civicrm-core/pull/17047))** This adds UI support for new APIv4 features. Specifically, SQL functions and aliases are now available in the API explorer, as is the `HAVING` clause and `GROUP BY` clause. - **End of life planning for MySQL server 5.0 - 5.6 (Work Towards [dev/core#1681](https://lab.civicrm.org/dev/core/issues/1681): [17261](https://github.com/civicrm/civicrm-core/pull/17261))** Adds a deprecation notice for systems using MySQL versions before 5.7 and requires 5.5 to install. - **Allow inline help text title to be overriden ([dev/core#1693](https://lab.civicrm.org/dev/core/issues/1693): [16998](https://github.com/civicrm/civicrm-core/pull/16998))** This change makes it possible to override inline help text titles in a `.hlp.extra` file. - **Update attachment message on mailing form. ([dev/core#1696](https://lab.civicrm.org/dev/core/issues/1696): [17024](https://github.com/civicrm/civicrm-core/pull/17024))** This updates the help text on CiviMail attachments to specify the maximum size of each attachment. - **Convert CC and BCC fields to use an entity reference. ([17064](https://github.com/civicrm/civicrm-core/pull/17064) and [17129](https://github.com/civicrm/civicrm-core/pull/17129))** The CC and BCC fields on all email forms are now entity references to the email ID. This simplifies the code and extends filtering on the field. - **Introduce "civi.dao.preUpdate" and "civi.dao.preInsert" events ([dev/core#1638](https://lab.civicrm.org/dev/core/issues/1638): [16714](https://github.com/civicrm/civicrm-core/pull/16714))** Makes it possible to use a hook to inspect the data of an Option Value prior to it being created or updated. - **Add ID to custom group/field admin forms ([17055](https://github.com/civicrm/civicrm-core/pull/17055))** The ID numbers are displayed in the tables of custom fields and groups. - **Improve AngularJS performance with one-time binding for static strings ([17050](https://github.com/civicrm/civicrm-core/pull/17050))** This improves performance of AngularJS pages and forms by having the translation function only execute once when the translated string is static. - **Allow setting metadata to use the `table` option. Update example setting `default_invoice_page`. ([16903](https://github.com/civicrm/civicrm-core/pull/16903))** Setting metadata that refers to an entity can now be defined with reference to a database table, specifying the key and label columns, rather than requiring a pseudoconstant function to populate the options. - **Add / make fit for purpose email.getlist api call ([16993](https://github.com/civicrm/civicrm-core/pull/16993))** Improves the `Email.getlist` API so that it is usable for entity reference fields. ### CiviCase - **Add email link in case summary ([16959](https://github.com/civicrm/civicrm-core/pull/16959))** Adds an "Email" icon to the Case Summary page that when clicked opens a pop up window to email the client. ### CiviContribute - **Add contribution source to recurring contribution report ([17187](https://github.com/civicrm/civicrm-core/pull/17187))** Adds "Contribution Source" as a column on the Recurring Contribution Report. - **Show email receipt status on view recurring contribution ([17177](https://github.com/civicrm/civicrm-core/pull/17177))** When viewing a contribution this change exposes the value of `is_email_receipt`. - **Add contributor email address to cancelSubscription form so it is clear who will be notified ([16716](https://github.com/civicrm/civicrm-core/pull/16716))** Adds the contributor email to the Cancel Recurring Contribution form so it is clear who will be notified. - **Add filter and sorting for receipt date in contribution report ([17044](https://github.com/civicrm/civicrm-core/pull/17044) and [16994](https://github.com/civicrm/civicrm-core/pull/16994))** Adds a filter and sorting for "receipt date" to Contribution Reports. - **Capitalise "PAN Truncation" ([16973](https://github.com/civicrm/civicrm-core/pull/16973) and [16964](https://github.com/civicrm/civicrm-core/pull/16964))** Capitilizes the "PAN" in "Pan Truncation" to improve user experience. PAN is an acronym for Primary Account Number (credit card number). ### CiviMail - **Mailing Report: hide the HTML preview ([16899](https://github.com/civicrm/civicrm-core/pull/16899))** Improves the Mailing report by hiding the HTML preview because it was too short to be helpful to begin with. ## Bugs resolved ### Core CiviCRM - **How best to handle Event Dispatchers during upgrade (Work Towards [dev/core#1460](https://lab.civicrm.org/dev/core/issues/1460): [17127](https://github.com/civicrm/civicrm-core/pull/17127) and [17216](https://github.com/civicrm/civicrm-core/pull/17216))** This updates the `CiviEventDispatcher` with a method `setDispatchPolicy()` that can be used to dynamically toggle support for specific events/hooks and updates a related test. - **After core upgrade, extensions are not fully active ([dev/core#1460](https://lab.civicrm.org/dev/core/issues/1460) and [dev/core#1713](https://lab.civicrm.org/dev/core/issues/1713): [17126](https://github.com/civicrm/civicrm-core/pull/17126))** After performing a core upgrade, some extension functionality (e.g. routing) was temporariliy unavailable - and required a flush. This fix changes the way in which hooks and caches are managed during the upgrade. - **Report Dev tab display SQL multiple times ([dev/core#1673](https://lab.civicrm.org/dev/core/issues/1673): [17001](https://github.com/civicrm/civicrm-core/pull/17001))** - **Namespaced classes cannot contain an underscore ([dev/core#1684](https://lab.civicrm.org/dev/core/issues/1684): [17105](https://github.com/civicrm/civicrm-core/pull/17105))** Allows underscores in class names. - **Search builder returns DB error on Group => Empty filter ([dev/core#1685](https://lab.civicrm.org/dev/core/issues/1685): [16953](https://github.com/civicrm/civicrm-core/pull/16953))** - **Allow override of inherited CMS language when in CiviCRM ([17006](https://github.com/civicrm/civicrm-core/pull/17006))** This ensures that the language switcher can be used in CiviCRM even when the default language is set to inherit from the user's CMS session. - **Longitude not checked out of box ([dev/core#1739](https://lab.civicrm.org/dev/core/issues/1739): [17238](https://github.com/civicrm/civicrm-core/pull/17238))** Enables the Longitude field on Address Editing by default for new installs. - **Export selected fields doesn't export related contacts if related info is present in mapping ([dev/core#1780](https://lab.civicrm.org/dev/core/issues/1780): [17462](https://github.com/civicrm/civicrm-core/pull/17462))** This fixes a bug where exporting a child and their parent was only resulting in one row being exported when the related contact id was selected. - **Regression: Fails to create smartgroup or refresh count of group ([dev/core#1747](https://lab.civicrm.org/dev/core/issues/1747): [17438](https://github.com/civicrm/civicrm-core/pull/17438))** The temporary table created for smart groups involving the Date Added custom search was removed too aggressively, resulting in database errors when searching or refreshing the smart group count. - **Contact restore from trash not working ([dev/core#1784](https://lab.civicrm.org/dev/core/issues/1784): [17418](https://github.com/civicrm/civicrm-core/pull/17418))** - **[regression] Fix error on no MIME type ([17265](https://github.com/civicrm/civicrm-core/pull/17265))** Fixes `TypeError: Argument 1 passed to MimeTyper\Repository\AbstractRepository::setFromMap() must be of the type array, null given` error. - **SyntaxConformanceTest::testSqlOperators - Fix failure on MySQL 8 ([17262](https://github.com/civicrm/civicrm-core/pull/17262))** - **API explorer fatal joining to contribution from contact ([dev/core#1563](https://lab.civicrm.org/dev/core/issues/1563): [17239](https://github.com/civicrm/civicrm-core/pull/17239))** - **APIv4 - Prevent field alias conflicts. ([17109](https://github.com/civicrm/civicrm-core/pull/17109))** - **APIv4 - Fix setting offset with no limit ([17063](https://github.com/civicrm/civicrm-core/pull/17063))** - **Fix admin page url for "conference slots" option values ([17223](https://github.com/civicrm/civicrm-core/pull/17223))** - **Fix Dedupe entity_tag mangling bug ([17125](https://github.com/civicrm/civicrm-core/pull/17125))** Fixes a bug whereby the merge script alters non-contact entity tags, changing the entity they are related to. - **Show title on status message instead of machine name ([17174](https://github.com/civicrm/civicrm-core/pull/17174))** - **Do not create smarty cached templates for processed greetings ([16733](https://github.com/civicrm/civicrm-core/pull/16733))** - **Add contribution ID as activity source record when downloading or emailing invoice ([17165](https://github.com/civicrm/civicrm-core/pull/17165))** Ensures that the Activity Source ID field is populated correctly for Activities of the type "Emailed Invoice" and "Downloaded Invoice". - **Correct option_group pseudoconstant and regenerate DAO ([17166](https://github.com/civicrm/civicrm-core/pull/17166))** Fixes metadata for option_group pseudoconstant list so that labels are visible in the list. - **Update "Colmbra" state/province to "Coimbra" ([17106](https://github.com/civicrm/civicrm-core/pull/17106) and [17136](https://github.com/civicrm/civicrm-core/pull/17136))** Fixes up some Portugal Province labels. - **Fix 'selectedChild' parameter for pages with tabs ([17066](https://github.com/civicrm/civicrm-core/pull/17066))** Ensures that the tab set using the `selectedChild` URL parameter is respected. - **Export: use X icon `fa-times` for closing things ([17076](https://github.com/civicrm/civicrm-core/pull/17076))** Ensures that the X icon is always used for closing things. - **Dupe improve custom data handling ([17060](https://github.com/civicrm/civicrm-core/pull/17060) and [17077](https://github.com/civicrm/civicrm-core/pull/17077))** Reduces code complexity & locking queries when merging contacts. - **Fixed mapping when using custom field for contact sub type ([16957](https://github.com/civicrm/civicrm-core/pull/16957))** Ensures import mappings populate contact sub-type custom fields. - **Set is_deceased to not null in schema and upgrade script ([dev/core#1697](https://lab.civicrm.org/dev/core/issues/1697): [17025](https://github.com/civicrm/civicrm-core/pull/17025))** This removes the possibility of having undead contacts. - **Allow adding variables to CRM.vars in any region ([16888](https://github.com/civicrm/civicrm-core/pull/16888))** - **Fix setting custom field TextArea attributes ([16997](https://github.com/civicrm/civicrm-core/pull/16997))** Ensures attributes for existing text area custom fields are not overwritten during update operations. - **Fix bug on handling 'is_required' ([16901](https://github.com/civicrm/civicrm-core/pull/16901))** Ensures that there is a "none" option for select fields that are not required and are created extensions using the generic form. - **Fix values passed to tokenValues hook ([16623](https://github.com/civicrm/civicrm-core/pull/16623))** Ensures that the `hook_civicrm_tokenValues` is passed the proper values. - **Fix slowness in opening the select fields for export screen after an advanced search ([dev/core#1725](ttps://lab.civicrm.org/dev/core/-/issues/1725): [17444](https://github.com/civicrm/civicrm-core/pull/17444))** Fixes a recent regression following the updating of the select fields export UI which on certain sites slowed down the loading of the select fields screen significantly ### CiviCase - **Invalid and patchy XML encoding causes Case crash if status is not valid XML ([dev/core#1719](https://lab.civicrm.org/dev/core/issues/1719): [17100](https://github.com/civicrm/civicrm-core/pull/17100))** Fixes a bug where CiviCase would fail to fully create a CaseType if a Case Status' name was invalid in an XML context. - **Case.get API returning Case Clients As Part of Related Contacts ([dev/core#1659](https://lab.civicrm.org/dev/core/issues/1659): [16837](https://github.com/civicrm/civicrm-core/pull/16837))** - **Convert fatals to statusBounces in case forms ([17212](https://github.com/civicrm/civicrm-core/pull/17212))** - **Add missing translations to case activity revisions ([16987](https://github.com/civicrm/civicrm-core/pull/16987))** - **Case Details field is empty ([16995](https://github.com/civicrm/civicrm-core/pull/16995))** Ensures that the details field value is saved when creating a new case from the core form. ### CiviContribute - **Contribution Detail Report gives incorrect results when `force=1` ([dev/report#20](https://lab.civicrm.org/dev/report/issues/20): [17234](https://github.com/civicrm/civicrm-core/pull/17234))** - **Financial ACL Report check always fails ([dev/core#1700](https://lab.civicrm.org/dev/core/issues/1700): [17046](https://github.com/civicrm/civicrm-core/pull/17046))** Ensures that if Finacial Type ACL's are enabled and the extension `biz.jmaconsulting.financialaclreport` is installed the warning that you need to install the extension is not displayed. - **On Behalf Of fails to populate in Email Receipt ([dev/core#57](https://lab.civicrm.org/dev/core/issues/57): [17026](https://github.com/civicrm/civicrm-core/pull/17026))** Fixes a bug where the On Behalf Of section was not being included in email receipts. - **Fixes a regression when cancelling a recurring with no processor_id ([17292](https://github.com/civicrm/civicrm-core/pull/17292))** - **Fix multiselect/checkbox custom field defaults on contribution online form ([16991](https://github.com/civicrm/civicrm-core/pull/16991))** ### CiviEvent - **Fix multiselect/checkbox custom field defaults on registration profile ([16981](https://github.com/civicrm/civicrm-core/pull/16981))** ### CiviMail - **Mailing Error when civicrm_mailing_group has duplicate entries of recipient groups([dev/mail#62](https://lab.civicrm.org/dev/mail/issues/62): [17130](https://github.com/civicrm/civicrm-core/pull/17130))** ### CiviMember - **Membership batch entry: Fix join date population ([dev/core#1718](https://lab.civicrm.org/dev/core/issues/1718): [17099](https://github.com/civicrm/civicrm-core/pull/17099))** Ensures that when using the membership batch entry tool the "join date" is populated with existing data. - **Fix bug where tax_amount is miscalculated on membership renewals ([16772](https://github.com/civicrm/civicrm-core/pull/16772))** ### Drupal Integration - **UF Settings page doesn't show CiviCRM database details for Drupal 8 Views ([dev/core#1742](https://lab.civicrm.org/dev/core/issues/1742): [17232](https://github.com/civicrm/civicrm-core/pull/17232))** ### WordPress Integration - **Support Clean URLs when using Polylang ([191](https://github.com/civicrm/civicrm-wordpress/pull/191), [189](https://github.com/civicrm/civicrm-wordpress/pull/189) and [176](https://github.com/civicrm/civicrm-wordpress/pull/176))** Ensures clean URLs work in WordPress with Polylang. - **Fix WordPress support for Get UF Locale ([dev/core#1635](https://lab.civicrm.org/dev/core/issues/1635): [16700](https://github.com/civicrm/civicrm-core/pull/16700))** Ensures WordPress front end pages follow the CMS language set in CiviCRM instead of using the default CiviCRM language. - **Styling issues after upgrade to WordPress 5.3 ([dev/wordpress#46](https://lab.civicrm.org/dev/wordpress/issues/46): [16882](https://github.com/civicrm/civicrm-core/pull/16882))** Ensures Select fields look like Select2 fields for WordPress users. - **CiviCRM front end pages broken on WP Latest (master) ([dev/wordpress#49](https://lab.civicrm.org/dev/wordpress/issues/49): [17352](https://github.com/civicrm/civicrm-core/pull/17352), [17424](https://github.com/civicrm/civicrm-core/pull/17424), [199](https://github.com/civicrm/civicrm-wordpress/pull/199), and [194](https://github.com/civicrm/civicrm-wordpress/pull/194))** `canonical_redirect()` will strip "page=CiviCRM" from front end pages. These changes ensures that CiviCRM plays nicely with this WordPress change. - **Public mailing URL links are broken after merge of REST API wrapper code ([dev/wordpress#52](https://lab.civicrm.org/dev/wordpress/issues/52): [195](https://github.com/civicrm/civicrm-wordpress/pull/195))** - **CiviMail doesn't send to full recipient list with merge of REST API wrapper code ([dev/wordpress#53](https://lab.civicrm.org/dev/wordpress/issues/53): [196](https://github.com/civicrm/civicrm-wordpress/pull/196))** ## Miscellany - **CONTRIBUTORS.txt - Explain deprecation/archival ([17074](https://github.com/civicrm/civicrm-core/pull/17074))** Contributors are now recognized in release notes. To ensure a full history, the older `CONTRIBUTORS.txt` has been preserved, but it will not be updated for future releases. - **Use isSerialized function rather guessing from html_type ([16979](https://github.com/civicrm/civicrm-core/pull/16979))** - **Mitigate flaky test failure about "CRM_Utils_Check_Component_Env->checkVersion()" ([17038](https://github.com/civicrm/civicrm-core/pull/17038))** - **Simplify groupContactCache - remove redundant query ([17011](https://github.com/civicrm/civicrm-core/pull/17011))** - **Duplicate EmailCommon::buildQuickForm onto the trait ([17052](https://github.com/civicrm/civicrm-core/pull/17052))** - **Make transaction param optional in completeOrder ([17053](https://github.com/civicrm/civicrm-core/pull/17053))** - **Don't pass empty ids parameter, fix fatal ([17086](https://github.com/civicrm/civicrm-core/pull/17086))** - **Less svn ([17159](https://github.com/civicrm/civicrm-core/pull/17159))** - **OptionValue - Use DB defaults instead of setting them in BAO::add ([17170](https://github.com/civicrm/civicrm-core/pull/17170))** - **Move batch-form support code back to the form ([17176](https://github.com/civicrm/civicrm-core/pull/17176))** - **Start using apiv4 in test setup ([17020](https://github.com/civicrm/civicrm-core/pull/17020))** - **Further removal of long-deprecated skipCleanMoney ([17175](https://github.com/civicrm/civicrm-core/pull/17175))** - **Add workflow_name column to civicrm_msg_template, deprecate workflow_id ([17227](https://github.com/civicrm/civicrm-core/pull/17227))** - **Misplaced text in the Additional Details section on New Contribution ([dev/user-interface#19](https://lab.civicrm.org/dev/user-interface/issues/19): [17135](https://github.com/civicrm/civicrm-core/pull/17135))** - **Cleanup and throw exceptions in OpenCase form ([17184](https://github.com/civicrm/civicrm-core/pull/17184))** - **Cleanup core pseudoconstant buildOptions ([17122](https://github.com/civicrm/civicrm-core/pull/17122))** - **Gitlab issue template - Ask for link to stackexchange or chat conversations ([17186](https://github.com/civicrm/civicrm-core/pull/17186))** - **Remove deprecated calls to optionValueQuery and no-longer-need param ([17182](https://github.com/civicrm/civicrm-core/pull/17182))** - **Refactor api3 Payment.Get API to support options + most fields in civicrm_financial_trxn ([17071](https://github.com/civicrm/civicrm-core/pull/17071))** - **Remove unused parameter, immediately overwritten parameter ([17131](https://github.com/civicrm/civicrm-core/pull/17131))** - **Remove unused parameter from function ([17098](https://github.com/civicrm/civicrm-core/pull/17098))** - **Remove outputHeader as a param for writeCSVFile as it is always true ([17051](https://github.com/civicrm/civicrm-core/pull/17051))** - **Remove var that is defined on parent ([17102](https://github.com/civicrm/civicrm-core/pull/17102))** - **Convert test to use APIV4 in setup for cleaner code ([17153](https://github.com/civicrm/civicrm-core/pull/17153))** - **[Test] Extend custom field test trait & some related tests ([17037](https://github.com/civicrm/civicrm-core/pull/17037))** - **E2E_Core_HookTest - Fix test failure due to leak ([17251](https://github.com/civicrm/civicrm-core/pull/17251))** - **[NFC][Test] cleanup on customDataTrait for tests ([17022](https://github.com/civicrm/civicrm-core/pull/17022))** - **[NFC][Test] Minor cleanup in test class ([17002](https://github.com/civicrm/civicrm-core/pull/17002))** - **[NFC][Test] Preliminary cleanup ([17213](https://github.com/civicrm/civicrm-core/pull/17213))** - **[NFC] [Test] minor code cleanup ([17152](https://github.com/civicrm/civicrm-core/pull/17152))** - **[NFC] Minor code cleanups ([17019](https://github.com/civicrm/civicrm-core/pull/17019))** - **[NFC] Superficial code clean up ([17155](https://github.com/civicrm/civicrm-core/pull/17155))** - **(NFC) Remove $Id$ artifacts from old SCM ([17211](https://github.com/civicrm/civicrm-core/pull/17211))** - **[NFC] A bit less svn in our code ([17157](https://github.com/civicrm/civicrm-core/pull/17157))** - **[NFC] Fix use of pattern-hated-by-Coleman ([17049](https://github.com/civicrm/civicrm-core/pull/17049))** - **[NFC] Cleanup CRM_Report_Form ([17141](https://github.com/civicrm/civicrm-core/pull/17141))** - **(NFC) Comment clarification in test class ([17133](https://github.com/civicrm/civicrm-core/pull/17133))** - **[NFC] Improve cleanup on membershipStatus to cope with undeleted memberships ([16756](https://github.com/civicrm/civicrm-core/pull/16756))** - **[NFC] Remove calculation of unused parameter ([17093](https://github.com/civicrm/civicrm-core/pull/17093))** - **(NFC) Gitlab Template - Request more detail about upgrade problems ([17101](https://github.com/civicrm/civicrm-core/pull/17101))** - **[NFC] Remove a handful of legacy svn notations ([17070](https://github.com/civicrm/civicrm-core/pull/17070))** - **[NFC/Test] - Fix typo in `if` statement that seems intended as a workaround ([17258](https://github.com/civicrm/civicrm-core/pull/17258))** - **[NFC] Add Comment to avoid someone removing field only used in CiviCase extension ([17000](https://github.com/civicrm/civicrm-core/pull/17000))** - **[NFC] Test cleanup ([17224](https://github.com/civicrm/civicrm-core/pull/17224))** - **[NFC] Code cleanup around comments, strict comparison, formatting ([17058](https://github.com/civicrm/civicrm-core/pull/17058))** - **[NFC] Remove all the places where tests unnecessarily pass to Membership::create ([17088](https://github.com/civicrm/civicrm-core/pull/17088))** - **[REF] SavedSearch - additional cleanup & bugfixes ([17090](https://github.com/civicrm/civicrm-core/pull/17090))** - **(REF) dev/core#1744 - Cleanup event naming ([17240](https://github.com/civicrm/civicrm-core/pull/17240))** - **[REF] [Test] IDE cleanup on ReportTemplateTest ([17197](https://github.com/civicrm/civicrm-core/pull/17197))** - **[REF] Simplify non-creditcard participant.create ([16584](https://github.com/civicrm/civicrm-core/pull/16584))** - **[REF] Fix install on Drupal 8 using new setup code ([17334](https://github.com/civicrm/civicrm-core/pull/17334))** - **[REF] Minor var simplification ([17121](https://github.com/civicrm/civicrm-core/pull/17121))** - **[REF] Consistently lookup dispatcher via `Civi::dispatcher()` ([17154](https://github.com/civicrm/civicrm-core/pull/17154))** - **(REF,NFC) TokenProcessor - Minor DX improvements ([17231](https://github.com/civicrm/civicrm-core/pull/17231))** - **[REF] Permit domain tokens being used within Thank You letters ([17230](https://github.com/civicrm/civicrm-core/pull/17230))** - **(REF) CRM_Utils_Hook - Remove deprecated formulations of `invoke(int,…)` ([17124](https://github.com/civicrm/civicrm-core/pull/17124))** - **[REF] Switch CRM_Utils_Array::value to empty in conditionals ([17091](https://github.com/civicrm/civicrm-core/pull/17091))** - **[REF] Minor code cleanup ([17225](https://github.com/civicrm/civicrm-core/pull/17225))** - **[REF] Minor code cleanup. ([17222](https://github.com/civicrm/civicrm-core/pull/17222))** - **[REF] Reduce boilerplate code in BAO add/create functions ([17172](https://github.com/civicrm/civicrm-core/pull/17172))** - **[REF] Minor cleanup around action schedule code. ([17151](https://github.com/civicrm/civicrm-core/pull/17151))** - **[REF] get rid of variable variable structure ([17089](https://github.com/civicrm/civicrm-core/pull/17089))** - **[REF] Remove duplicate checks for an array key existing ([17069](https://github.com/civicrm/civicrm-core/pull/17069))** - **[REF] Import - extract duplicate code to function ([17080](https://github.com/civicrm/civicrm-core/pull/17080))** - **[REF] Cleanup a few instances where we use old call to get loggedInUserID ([17196](https://github.com/civicrm/civicrm-core/pull/17196))** - **[REF] Simplify determination of enabled components ([17195](https://github.com/civicrm/civicrm-core/pull/17195))** - **[REF] stop overriding postProcess function in activity report detail ([17194](https://github.com/civicrm/civicrm-core/pull/17194))** - **[REF] Reconcile CRM_Utils_System::getUrlPath and CRM_Utils_System::currentPath ([17068](https://github.com/civicrm/civicrm-core/pull/17068))** - **[REF] Stop passing ids to membership::create from createRelatedMemberships ([17087](https://github.com/civicrm/civicrm-core/pull/17087))** - **[REF] move all functions associated with the submit function onto the Trait ([17057](https://github.com/civicrm/civicrm-core/pull/17057))** - **[REF] APIv4 Explorer - improve performance ([17062](https://github.com/civicrm/civicrm-core/pull/17062))** - **[REF] Clarify variable & tighten use. ([17016](https://github.com/civicrm/civicrm-core/pull/17016))** - **[REF] Use bool instead of boolean ([17013](https://github.com/civicrm/civicrm-core/pull/17013))** - **[REF] Formatting and use bool instead of boolean ([17012](https://github.com/civicrm/civicrm-core/pull/17012))** - **[REF] Move generic preProcess function to the trait ([16954](https://github.com/civicrm/civicrm-core/pull/16954))** - **[REF] Extract transferParticipantRegistration function ([16976](https://github.com/civicrm/civicrm-core/pull/16976))** - **REF Remove redundant param from completeOrder ([17034](https://github.com/civicrm/civicrm-core/pull/17034))** - **[REF] Update Contact email form to use the trait for EmailCommon functions ([17031](https://github.com/civicrm/civicrm-core/pull/17031))** - **[REF] Move generic instances of listTokens to trait ([17029](https://github.com/civicrm/civicrm-core/pull/17029))** - **[REF] CustomField code cleanup to use isSerialized method ([17009](https://github.com/civicrm/civicrm-core/pull/17009))** - **[REF] CustomField code cleanup ([16968](https://github.com/civicrm/civicrm-core/pull/16968))** - **[REF] Cleanup customField prepareCreate function ([16996](https://github.com/civicrm/civicrm-core/pull/16996))** - **[REF] Update custom data handing in contact import ([16986](https://github.com/civicrm/civicrm-core/pull/16986))** - **[REF] CustomGroup - cleanup handling of serialized fields in old function ([16970](https://github.com/civicrm/civicrm-core/pull/16970))** - **[REF] APIv4 - Enforce contact field permissions via metadata ([17168](https://github.com/civicrm/civicrm-core/pull/17168))** - **[REF] Code readability changes on activity tokens. ([17161](https://github.com/civicrm/civicrm-core/pull/17161))** - **[REF] Minor extraction ([17160](https://github.com/civicrm/civicrm-core/pull/17160))** - **[REF] CustomField - Remove pointless caching and move form variable to form class ([16975](https://github.com/civicrm/civicrm-core/pull/16975))** - **[REF] Call makeCSVTable function directly from writeRows ([16980](https://github.com/civicrm/civicrm-core/pull/16980))** - **[REF] CRM_Utils_Array::value -> empty ([288](https://github.com/civicrm/civicrm-packages/pull/288))** - **[REF] Update XML file to match updated title in DAO File ([16969](https://github.com/civicrm/civicrm-core/pull/16969))** - **[REF] Cleanup custom field handling... twice ([16989](https://github.com/civicrm/civicrm-core/pull/16989))** - **[REF] Cleanup CustomField BAO to use its own isSerialized function ([16990](https://github.com/civicrm/civicrm-core/pull/16990))** - **Cleanup custom field handling in ufGroup BAO ([16984](https://github.com/civicrm/civicrm-core/pull/16984))** - **Code cleanup - replace overcomplicated test for null with isset ([16965](https://github.com/civicrm/civicrm-core/pull/16965))** - **Update 5.24.2.md - Fix version number in title. ([17043](https://github.com/civicrm/civicrm-core/pull/17043))** ## Credits This release was developed by the following code authors: a-n The Artists Information Company - William Mortada; AGH Strategies - Alice Frumin, Andie Hunt; Andrei Mondoc; Christian Wach; Circle Interactive - Dave Jenkins, Pradeep Nayak; CiviCRM - Coleman Watts, Josh Gowans, Tim Otten; CiviDesk - Yashodha Chaku; Coop SymbioTIC - Mathieu Lutfy; Dave D; Fuzion - Jitendra Purohit; Greenpeace Central and Eastern Europe - Patrick Figel; All In Appli.com - Guillaume Sorel; CompuCorp - Ivan; JMA Consulting - Seamus Lee; Lighthouse Design and Consulting - Brian Shaughnessy; Megaphone Technology Consulting - Jon Goldberg; MJW Consulting - Matthew Wire; Ray Wright; Third Sector Design - Michael McAndrew; Timbsoft Technologies - Tunbola Ogunwande; Wikimedia Foundation - Eileen McNaughton Most authors also reviewed code for this release; in addition, the following reviewers contributed their comments: Andrew Cormick-Dockery; Andy Burns; Artful Robot - Rich Lott; Blackfly Solutions - Alan Dixon; CiviCoop - Jaap Jansma; Fuzion - Peter Davis; GMCVO Databases - Jade Gaunt; JMA Consulting - Monish Deb; MJCO - Mikey O'Toole; Richard van Oosterhout; Squiffle Consulting - Aidan Saunders; Tadpole Collective - Kevin Cristiano; Team Expansion - Greg Harris ## 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`.