Merge pull request #23894 from eileenmcnaughton/off_it
[civicrm-core.git] / release-notes / 5.25.0.md
index a340d21c683ed09459274e5295fdeced7e365559..878bbb89803ede9af678e21f84f1cbc669e7f21a 100644 (file)
@@ -13,467 +13,832 @@ Released May 6, 2020
 
 | *Does this version...?*                                         |         |
 |:--------------------------------------------------------------- |:-------:|
-| Fix security vulnerabilities?                                   |         |
-| Change the database schema?                                     |         |
-| Alter the API?                                                  |         |
-| Require attention to configuration options?                     |         |
-| Fix problems installing or upgrading to a previous version?     |         |
-| Introduce features?                                             |         |
-| Fix bugs?                                                       |         |
+| 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** |
 
 ## <a name="features"></a>Features
 
 ### Core CiviCRM
 
-- **crm- Missing Summary ([16886](https://github.com/civicrm/civicrm-core/pull/16886))**
+- **End of life plans for php 7.0 & deprecate php 7.1
+  ([dev/core#1528](https://lab.civicrm.org/dev/core/issues/1528):
+  [16753](https://github.com/civicrm/civicrm-core/pull/16753),
+  [599](https://github.com/civicrm/civicrm-drupal/pull/599),
+  [598](https://github.com/civicrm/civicrm-drupal/pull/598),
+  [111](https://github.com/civicrm/civicrm-backdrop/pull/111),
+  [16678](https://github.com/civicrm/civicrm-core/pull/16678),
+  [114](https://github.com/civicrm/civicrm-backdrop/pull/114),
+  [187](https://github.com/civicrm/civicrm-wordpress/pull/187) and
+  [184](https://github.com/civicrm/civicrm-wordpress/pull/184))**
 
-- **CRM-1367 Missing Summary ([16870](https://github.com/civicrm/civicrm-core/pull/16870))**
+  CiviCRM now requires PHP 7.1 at a minimum and recommends PHP 7.3.
 
-- **CRM-20553 Missing Summary ([14667](https://github.com/civicrm/civicrm-core/pull/14667))**
+  In the process of making this change, the minimum PHP version is now stored in
+  a single place within the core codebase.  CMS-specific files have this value,
+  too, but tests enforce that it be the same as the single core value.
 
-## <a name="bugs"></a>Bugs resolved
+- **Replace jcalendar instances with datepicker (Continued
+  Work [dev/core#561](https://lab.civicrm.org/dev/core/issues/561):
+  [15709](https://github.com/civicrm/civicrm-core/pull/15709) and
+  [16863](https://github.com/civicrm/civicrm-core/pull/16863))**
 
-### Core CiviCRM
+  These changes continue work to move to datepicker from jcalendar by converting
+  report instances from using the legacy jcalendar to using datepicker for date
+  fields and deprecating the `addDateRange` function used by jcalendar.
 
-- **Revert #16947 from 5.25RC ([17108](https://github.com/civicrm/civicrm-core/pull/17108))**
+- **APIv4 - Add Dashboard & DashboardContact entities
+  ([16867](https://github.com/civicrm/civicrm-core/pull/16867))**
 
-- **Add release-notes/5.24.4.md ([17097](https://github.com/civicrm/civicrm-core/pull/17097))**
+  Adds APIv4 support for Dashboard & DashboardContact and does some cleanup in
+  the BAO and API layers for improved consistency.
 
-- **Generalise typo3/phar-stream-wrapper so CiviCRM can be installed on d… ([17085](https://github.com/civicrm/civicrm-core/pull/17085))**
+- **Add new language, `nl_BE`
+  ([17014](https://github.com/civicrm/civicrm-core/pull/17014))**
 
-- **Fix unsubscribe regression ([17081](https://github.com/civicrm/civicrm-core/pull/17081))**
+  Adds a new translation option for "Dutch (Belgium)".
 
-- **Add release-notes/5.24.2 ([17041](https://github.com/civicrm/civicrm-core/pull/17041))**
+- **Add hook to alter display value or Custom field value
+  ([16921](https://github.com/civicrm/civicrm-core/pull/16921))**
 
-- **Revert "temp workaround for dev/core#1675" ([17033](https://github.com/civicrm/civicrm-core/pull/17033))**
+  The new hook
+  [`hook_civicrm_alterCustomFieldDisplayValue()`](https://docs.civicrm.org/dev/en/latest/hooks/hook_civicrm_alterCustomFieldDisplayValue/)
+  allows modification of the displayed value for a custom field value.
 
-- **CRM_Core_I18n - Provide a better label for new/unknown locales ([17021](https://github.com/civicrm/civicrm-core/pull/17021))**
+- **APIv4 query improvements (Work towards
+  [dev/report#31](https://lab.civicrm.org/dev/report/issues/31):
+  [16917](https://github.com/civicrm/civicrm-core/pull/16917) and
+  [16947](https://github.com/civicrm/civicrm-core/pull/16947))**
 
-- **Fixed fatal error for class not found when managed hook is invoked du… ([17004](https://github.com/civicrm/civicrm-core/pull/17004))**
+  This change builds out the APIv4 framework to support `GROUP BY` and different
+  types of expressions in clauses that previously only accepted the names of
+  fields. These expressions can now include numbers, `NULL`, strings, and
+  whitelisted SQL functions. The framework can in theory handle most SQL
+  functions, but this first PR adds support for the aggregate functions `AVG`,
+  `COUNT`, `MAX`, `MIN`, and `SUM`.
 
-- **add nl_BE language ([17014](https://github.com/civicrm/civicrm-core/pull/17014))**
+- **install/index.php - Fix leak which breaks compatibility with current Backdrop
+  ([#17249](https://github.com/civicrm/civicrm-core/pull/17249))**
 
-- **Add release-notes/5.24.1 ([16978](https://github.com/civicrm/civicrm-core/pull/16978))**
+### CiviContribute
 
-- **dev/financial#84 - Fix upgrade failure. Thin-out activation logic for `sequentialcreditnotes`.  ([16971](https://github.com/civicrm/civicrm-core/pull/16971))**
+- **Partial Refunds (Work towards
+  [dev/financial#87](https://lab.civicrm.org/dev/financial/issues/87):
+  [16480](https://github.com/civicrm/civicrm-core/pull/16480))**
 
-- **core#1688 - false positive on missing custom field check ([16961](https://github.com/civicrm/civicrm-core/pull/16961))**
+  The "Add Payment" form is altered to permit payments to be added even if a
+  contribution is fully paid.
 
-- **dev/core#1528 - Consolidate to single constant for minimum PHP version ([16753](https://github.com/civicrm/civicrm-core/pull/16753))**
+- **Add privacy fields to Contribution Detail report
+  ([16674](https://github.com/civicrm/civicrm-core/pull/16674))**
 
-- **[REF] move buildQuickForm function to the trait ([16948](https://github.com/civicrm/civicrm-core/pull/16948))**
+   Columns for the following fields are added to the contribution detail report:
+   "Do Not Phone", "Do Not Mail", "Do Not SMS", "Do Not Trade".
 
-- **Revert "APIv4 - Fix contribution create" ([16951](https://github.com/civicrm/civicrm-core/pull/16951))**
+ - **Add "pledge id" as column and filter in Contribution Detail report.
+   ([16868](https://github.com/civicrm/civicrm-core/pull/16868))**
 
-- **Remove  deprecated cleaning  of money in  the  BAO layer ([16950](https://github.com/civicrm/civicrm-core/pull/16950))**
+   This change improves the Contribution Detail Report by adding "pledge id" as
+   a filter and column.
 
-- **APIv4 - Support GROUP BY and aggregate functions ([16947](https://github.com/civicrm/civicrm-core/pull/16947))**
+### CiviEvent
 
-- **dev/core#1682 - Invalid currency  on sending offline membership receipt. ([16943](https://github.com/civicrm/civicrm-core/pull/16943))**
+- **Remove additional display of buttons for events
+  ([16550](https://github.com/civicrm/civicrm-core/pull/16550))**
 
-- **dev/core#1674: fix rebuilding of container on every request ([16919](https://github.com/civicrm/civicrm-core/pull/16919))**
+  When viewing an event registration, this removes the Record Payment button
+  from the Fees section.  Payments can still be recorded from the payments
+  section.
 
-- **[REF] Move properties to Trait ([16940](https://github.com/civicrm/civicrm-core/pull/16940))**
+### WordPress Integration
 
-- **Follow up PR for #16845 - Fix form error when  variable is NULL ([16941](https://github.com/civicrm/civicrm-core/pull/16941))**
+- **Merge REST API wrapper code
+  ([160](https://github.com/civicrm/civicrm-wordpress/pull/160))**
 
-- **fixes dev/core#1683 set profile frontend title ([16945](https://github.com/civicrm/civicrm-core/pull/16945))**
+  This merges the CiviCRM WP REST API Wrapper plugin's code into the core
+  WordPress integration.  The result is that there are now native WordPress REST
+  endpoints for the REST API, email tracking, and other endpoints that had been
+  direct links to PHP files in the `extern` folder of the CiviCRM plugin.
 
-- **5.24 ([16946](https://github.com/civicrm/civicrm-core/pull/16946))**
+- **Add shortcodes for Personal Campaign Pages
+  ([185](https://github.com/civicrm/civicrm-wordpress/pull/185) and
+  [16695](https://github.com/civicrm/civicrm-core/pull/16695))**
 
-- **[REF] Start transitioning EmailCommon class to a trait ([16935](https://github.com/civicrm/civicrm-core/pull/16935))**
+  Personal Campaign Pages are now available as a shortcode.
 
-- **[NFC/TEST] Resurrect unfinished test for getRelatedCases() ([16885](https://github.com/civicrm/civicrm-core/pull/16885))**
+## <a name="bugs"></a>Bugs resolved
 
-- **Add hook to alter display value or Custom field value ([16921](https://github.com/civicrm/civicrm-core/pull/16921))**
+### Core CiviCRM
 
-- **5.24 ([16938](https://github.com/civicrm/civicrm-core/pull/16938))**
+- **Activity Detail report gives syntax error with force=1 if include case
+  activities is on
+  ([dev/core#1710](https://lab.civicrm.org/dev/core/issues/1710):
+  [17128](https://github.com/civicrm/civicrm-core/pull/17128))**
 
-- **[REF] Remove fatal, fix some code comments ([16928](https://github.com/civicrm/civicrm-core/pull/16928))**
+  The case activity table wasn't properly loaded when the Activity Detail report
+  including case activities would go straight to displaying results.
 
-- **[REF] extract code to getEmails ([16929](https://github.com/civicrm/civicrm-core/pull/16929))**
+- **Search Builder - Activity Type search not working.
+  ([dev/core#1714](https://lab.civicrm.org/dev/core/issues/1714):
+  [17215](https://github.com/civicrm/civicrm-core/pull/17215))**
 
-- **[REF] Minor simplification - do not use variable variables ([16927](https://github.com/civicrm/civicrm-core/pull/16927))**
+  In Search Builder, searching by activity type would return no results,
+  affecting not only direct searches but also smart groups that built with
+  Search Builder.  This resolves the regression, which first appeared in 5.24.3.
 
-- **Add "pledge id" as column and filter in Contribution Detail report. ([16868](https://github.com/civicrm/civicrm-core/pull/16868))**
+- **Deleting entities leaves obsolete EntityTag records
+  ([dev/core#667](https://lab.civicrm.org/dev/core/issues/667):
+  [16832](https://github.com/civicrm/civicrm-core/pull/16832))**
 
-- **5.24 to master ([16931](https://github.com/civicrm/civicrm-core/pull/16931))**
+  Fixes a bug where deleting a contact does not delete tags associated with the
+  contact.
 
-- **[Test] Remove skip that seems no longer required ([16912](https://github.com/civicrm/civicrm-core/pull/16912))**
+- **Profile Public Title (frontend_title column) is not used in profile
+  create/edit mode
+  ([dev/core#1683](https://lab.civicrm.org/dev/core/issues/1683):
+  [16945](https://github.com/civicrm/civicrm-core/pull/16945))**
 
-- **Added pseudoconstant for acl_id ([16925](https://github.com/civicrm/civicrm-core/pull/16925))**
+  The Public Title setting that was recently added for profiles would only
+  replace the profile name on contribution and event forms.  When the profile
+  was used in a standalone context, the name would always appear.
 
-- **dev/core#1676 - E_NOTICE because of missing brackets for order of operations ([16924](https://github.com/civicrm/civicrm-core/pull/16924))**
+- **Auto-complete search results not consistent with other searches
+  ([dev/core#787](https://lab.civicrm.org/dev/core/issues/787):
+  [13809](https://github.com/civicrm/civicrm-core/pull/13809))**
 
-- **Remove deprecated function ([16907](https://github.com/civicrm/civicrm-core/pull/16907))**
+- **Need to Increase Data Size for `form_values` column on
+  civicrm_report_instance table
+  ([dev/core#1569](https://lab.civicrm.org/dev/core/issues/1569):
+  [16836](https://github.com/civicrm/civicrm-core/pull/16836))**
 
-- **dev/core#1366 - case audit printReport parameter is no longer used ([16670](https://github.com/civicrm/civicrm-core/pull/16670))**
+  This hanges the data type for the `form_values` column on the
+  `civicrm_report_instance` from TEXT to LONGTEXT.
 
-- **Make api4 select query object more sane ([16889](https://github.com/civicrm/civicrm-core/pull/16889))**
+- **PHP warning on Add relationship form
+  ([dev/core#1663](https://lab.civicrm.org/dev/core/issues/1663):
+  [16845](https://github.com/civicrm/civicrm-core/pull/16845) and
+  [16941](https://github.com/civicrm/civicrm-core/pull/16941))**
 
-- **[NFC] APIv4 - Add test coverage for expected fields from join ([16920](https://github.com/civicrm/civicrm-core/pull/16920))**
+- **Removing all the dashlets from the dashboard leads to E_NOTICE
+  ([dev/core#1668](https://lab.civicrm.org/dev/core/issues/1668):
+  [16883](https://github.com/civicrm/civicrm-core/pull/16883))**
 
-- **[NFC] Add in unit test to ensure that APIv4 Doesn't accept an invalid… ([16893](https://github.com/civicrm/civicrm-core/pull/16893))**
+- **Regression: Api4 causes container being rebuild on every request
+  ([dev/core#1674](https://lab.civicrm.org/dev/core/issues/1674):
+  [16919](https://github.com/civicrm/civicrm-core/pull/16919))**
 
-- **APIv4 - Only adjust domain_id if required ([16917](https://github.com/civicrm/civicrm-core/pull/16917))**
+- **E_NOTICE when using the New Individual popup/profile
+  ([dev/core#1676](https://lab.civicrm.org/dev/core/issues/1676):
+  [16924](https://github.com/civicrm/civicrm-core/pull/16924))**
 
-- **[REF] Extract code used to render a pseudoconstant when a table is defined. ([16902](https://github.com/civicrm/civicrm-core/pull/16902))**
+- **[regression] CiviCRM reports that smart groups won't work due to deleted
+  custom fields that aren't deleted
+  ([dev/core#1688](https://lab.civicrm.org/dev/core/issues/1688):
+  [16961](https://github.com/civicrm/civicrm-core/pull/16961))**
 
-- **Remove unused code ([16914](https://github.com/civicrm/civicrm-core/pull/16914))**
+  A system check would mistakenly report that a smart group was based upon a
+  deleted custom field if it was based upon a checkbox or multi-select custom
+  field.
 
-- **[REF] Move form specific handling back to the relevant form. ([16913](https://github.com/civicrm/civicrm-core/pull/16913))**
+- **Fix checking permissions in api3 profile get
+  ([16848](https://github.com/civicrm/civicrm-core/pull/16848))**
 
-- **Remove assigns for   atypefile ([16895](https://github.com/civicrm/civicrm-core/pull/16895))**
+  This resolves a bug where the API would reverse the value of the option to use
+  a current user's permissions when retrieving the list of fields in a profile.
 
-- **Deprecate use of  in OptionGroup::add() function ([16910](https://github.com/civicrm/civicrm-core/pull/16910))**
+- **APIv4 - convert Result object to array when running through json_encode
+  ([16828](https://github.com/civicrm/civicrm-core/pull/16828))**
 
-- **[REF] APIv4 - Preserve order when expanding select wildcards ([16909](https://github.com/civicrm/civicrm-core/pull/16909))**
+- **Api4 AJAX endpoint: change required permission to access AJAX API.
+  ([16705](https://github.com/civicrm/civicrm-core/pull/16705) and
+  [17241](https://github.com/civicrm/civicrm-core/pull/17241))**
 
-- **dev/core#561 Add in deprecation notice on addDateRange funtion ([16863](https://github.com/civicrm/civicrm-core/pull/16863))**
+  The APIv4 AJAX endpoint is now open to users with either the Access CiviCRM or
+  the Access AJAX API permissions, matching the APIv3 behavior.
 
-- **dev/core#1663 - Fix warning on relationship form ([16845](https://github.com/civicrm/civicrm-core/pull/16845))**
+- **Improvements to APIv4 select query
+  ([16889](https://github.com/civicrm/civicrm-core/pull/16889) and
+  [16900](https://github.com/civicrm/civicrm-core/pull/16900))**
 
-- **[NFC] Use strict comparison where  possible ([16896](https://github.com/civicrm/civicrm-core/pull/16896))**
+- **APIv4 - Don't advertise implicit multi-joins in Explorer
+  ([17205](https://github.com/civicrm/civicrm-core/pull/17205))**
 
-- **Improve APIv4 selectUtils to handle join paths in fieldnames. ([16904](https://github.com/civicrm/civicrm-core/pull/16904))**
+  Implicit one-to-many joins in APIv4 have been problematic and may get removed.
+  As a soft deprecation, these are no longer displayed in the APIv4 explorer.
 
-- **[NFC] Code formatting ([16906](https://github.com/civicrm/civicrm-core/pull/16906))**
+- **CRM_Core_I18n - Provide a better label for new/unknown locales
+  ([17021](https://github.com/civicrm/civicrm-core/pull/17021))**
 
-- **[NFC] minor form cleanup. ([16905](https://github.com/civicrm/civicrm-core/pull/16905))**
+  If CiviCRM finds a locale in the localization files but doesn't know what it
+  is, it will now display the locale code instead of just a blank option.
 
-- **APIv4 - bugfix in select query ([16900](https://github.com/civicrm/civicrm-core/pull/16900))**
+- **Fixed fatal error for class not found when managed hook is invoked during
+  upgrade ([17004](https://github.com/civicrm/civicrm-core/pull/17004))**
 
-- **[REF] Remove & from before variable ([16897](https://github.com/civicrm/civicrm-core/pull/16897))**
+- **Log error message instead of throwing exception
+  ([16880](https://github.com/civicrm/civicrm-core/pull/16880))**
 
-- **log error message instead of throwing exception ([16880](https://github.com/civicrm/civicrm-core/pull/16880))**
+- **Remove instances of fatal
+  ([16759](https://github.com/civicrm/civicrm-core/pull/16759))**
 
-- **5.24 ([16898](https://github.com/civicrm/civicrm-core/pull/16898))**
+  This throws exceptions rather than dying when encountering problems creating
+  contacts.
 
-- **Add some deprecation notices, stop calling PrevNext::cleanupCache ([16697](https://github.com/civicrm/civicrm-core/pull/16697))**
+- **Fix bug where a % in a serialized array can lead to the data being broken
+  ([16694](https://github.com/civicrm/civicrm-core/pull/16694))**
 
-- **Fixed fatal error for Event Participants custom search if price set f… ([16894](https://github.com/civicrm/civicrm-core/pull/16894))**
+- **Fix batch contact/activity update with radio options
+  ([16855](https://github.com/civicrm/civicrm-core/pull/16855))**
 
-- **APIv3 - Use new DAO::deleteRecord method ([16869](https://github.com/civicrm/civicrm-core/pull/16869))**
+  This fixes a failure to copy the value down a column if the field is radio
+  buttons and the value in the first row contains a space.
 
-- **APIv4 - Add Dashboard & DashboardContact entities ([16867](https://github.com/civicrm/civicrm-core/pull/16867))**
+- **Fix CustomDataView.tpl plain empty memo field.
+  ([16839](https://github.com/civicrm/civicrm-core/pull/16839))**
 
-- **5.24 ([16892](https://github.com/civicrm/civicrm-core/pull/16892))**
+  Ensure note custom fields display on their own lines
 
-- **[REF] Replace \CRM_Utils_Array::value with ?? ([16872](https://github.com/civicrm/civicrm-core/pull/16872))**
+- **Fix setting outBound_option readonly in UI
+  ([16774](https://github.com/civicrm/civicrm-core/pull/16774))**
 
-- **[REF] Civi/Api4 - Refactor out 'use CRM_Utils_Array' ([16873](https://github.com/civicrm/civicrm-core/pull/16873))**
+  If the outbound mailer option is set via the settings file, the settings form
+  will now disable the field.
 
-- **[REF] BAO_Contact - Remove CRM_Utils_Array::value and other unnecessary code ([16874](https://github.com/civicrm/civicrm-core/pull/16874))**
+- **Use dbAlias to generate where clause for date field in activity report
+  ([16689](https://github.com/civicrm/civicrm-core/pull/16689))**
 
-- **5.24 ([16884](https://github.com/civicrm/civicrm-core/pull/16884))**
+  This resolves potentially ambiguous queries in the Activity Summary and Detail
+  reports if the activity table is joined again in the report.
 
-- **[REF] APIv4 - Restructure the way get query objects are constucted ([16878](https://github.com/civicrm/civicrm-core/pull/16878))**
+- **[REF] Use composer patches to apply CiviCRM Customisations for CRM-1367 and
+  CRM-5946 ([16870](https://github.com/civicrm/civicrm-core/pull/16870))**
 
-- **dev/core#1668 - Avoid E_NOTICE when removing last dashlet ([16883](https://github.com/civicrm/civicrm-core/pull/16883))**
+  Migrates the patching of pear_mail from a script file to using composer
+  patches to ensure CiviCRM customisations for CRM-1367 and CRM-5946 are applied
+  consistently.
 
-- **Alternate to #16650 - On Case Audit/Print Report richtext details field is getting escaped when system is non-english ([16659](https://github.com/civicrm/civicrm-core/pull/16659))**
+### CiviCase
 
-- **Fix use col "Soft Credit Amount Stats" and any filter of contribution… ([16591](https://github.com/civicrm/civicrm-core/pull/16591))**
+- **Various errors recorded in log message on Manage Case screen -> relationship
+  tab. ([dev/core#1664](https://lab.civicrm.org/dev/core/issues/1664):
+  [16846](https://github.com/civicrm/civicrm-core/pull/16846))**
 
-- **dev/core#1331 Add missing parameter to translation string ([16881](https://github.com/civicrm/civicrm-core/pull/16881))**
+  Fixes log messages generated when opening the relationship tab on the Manage
+  Case form.
 
-- **[REF] Cleanup is_array(CRM_Utils_Array::value()) pattern ([16875](https://github.com/civicrm/civicrm-core/pull/16875))**
+- **"Merge Case" modal not showing relevant cases
+  ([dev/core#1646](https://lab.civicrm.org/dev/core/issues/1646):
+  [16798](https://github.com/civicrm/civicrm-core/pull/16798))**
 
-- **dev/core#667 Fix bug where entity_tags are not deleted by 'soft FK' ([16832](https://github.com/civicrm/civicrm-core/pull/16832))**
+  The pop-up to merge cases would only show 25 other cases.  It now shows all
+  cases for a client.
 
-- **dev/core#1652 - Check for change case type activity on case activity form doesn't work ([16785](https://github.com/civicrm/civicrm-core/pull/16785))**
+- **Adding a timeline to a case doesn't get the last activity in the timeline
+  right ([dev/core#1675](https://lab.civicrm.org/dev/core/issues/1675) and
+  [dev/core#1695](https://lab.civicrm.org/dev/core/issues/1695):
+  [289](https://github.com/civicrm/civicrm-packages/pull/289))**
 
-- **Add privacy fields to ContributionDetail report ([16674](https://github.com/civicrm/civicrm-core/pull/16674))**
+  Ensures case custom fields are saved when submitted via Drupal webform.
+  Additionally ensures that the last activity in the case timeline is set
+  correctly.
 
-- **Follow up on fix on updating memberships when a contact is deceased ([16787](https://github.com/civicrm/civicrm-core/pull/16787))**
+- **Check for "Change Case Type" in case activity form doesn't do anything
+  ([dev/core#1652](https://lab.civicrm.org/dev/core/issues/1652):
+  [16785](https://github.com/civicrm/civicrm-core/pull/16785))**
 
-- **5.24 ([16879](https://github.com/civicrm/civicrm-core/pull/16879))**
+- **When auditing cases on non-English deployments, richtext details
+  are incorrectly escaped
+  ([16659](https://github.com/civicrm/civicrm-core/pull/16659))**
 
-- **Fix display of payment processor title in cancelSubscription form ([16857](https://github.com/civicrm/civicrm-core/pull/16857))**
+- **Respect 'Do not notify activity type' setting
+  ([16800](https://github.com/civicrm/civicrm-core/pull/16800))**
 
-- **CRM/Contribute - Cleanup boolean expressions ([16853](https://github.com/civicrm/civicrm-core/pull/16853))**
+  The setting to not notify assignees for certain activity types was not
+  respected when submitting an activity from a case.
 
-- **dev/financial#87 make it possible to add a payment to a fully paid contribution ([16480](https://github.com/civicrm/civicrm-core/pull/16480))**
+### CiviContribute
 
-- **dev/1640 New feature - adds a  checkbox to the  update contribution  status  form  to determine  if  a receipt  is  sent ([16742](https://github.com/civicrm/civicrm-core/pull/16742))**
+- **Changes to "CiviContribute Component Settings" not saved
+  ([dev/core#1724](https://lab.civicrm.org/dev/core/issues/1724):
+  [17188](https://github.com/civicrm/civicrm-core/pull/17188))**
 
-- **Civi/Test - Refactor out CRM_Utils_Array::value ([16871](https://github.com/civicrm/civicrm-core/pull/16871))**
+  The way that CiviContribute component settings were stored was updated for
+  5.23, but the transition during the upgrade was problematic.  This replaces
+  the transition code, resolving issues for sites upgrading directly from 5.22.x
+  or earlier.  Sites on 5.23.x or 5.24.x should review their settings, however.
 
-- **dev/core#1331 Don't freeze fields for auto-renew memberships ([16609](https://github.com/civicrm/civicrm-core/pull/16609))**
+- **Invoice action not shown when invoicing enabled
+  ([17164](https://github.com/civicrm/civicrm-core/pull/17164))**
 
-- **[TEST] Add test for to time processing ([16861](https://github.com/civicrm/civicrm-core/pull/16861))**
+  The "Invoices - print or email" action was not available for contribution
+  search results even when invoicing was enabled.
 
-- **fix typo ([16865](https://github.com/civicrm/civicrm-core/pull/16865))**
+- **Cumulative contributions not being calculated with the correct criteria
+  ([dev/core#1740](https://lab.civicrm.org/dev/core/issues/1740):
+  [17237](https://github.com/civicrm/civicrm-core/pull/17237))**
+
+  The cumulative contributions display from a contribution page would needlessly
+  filter contributions by date, with the end date being midnight on the current
+  date.  That would exclude contributions received on the current day.
+
+- **Updating misleading labels on buttons to confirmation pages
+  ([dev/core#1613](https://lab.civicrm.org/dev/core/issues/1613):
+  [16651](https://github.com/civicrm/civicrm-core/pull/16651))**
 
-- **API tests - remove unnecessary check for v4 ([16866](https://github.com/civicrm/civicrm-core/pull/16866))**
+  Some donors and event registrants interpreted the button text "Confirm
+  Contribution" (on contribution pages) and "Continue" (on event registration
+  pages) to mean that this would complete the contribution or registration.  In
+  fact, these would only appear when a confirmation page is used.
 
-- **[REF] Remove redundant call to build permissions ([16862](https://github.com/civicrm/civicrm-core/pull/16862))**
+  The button text now appears as "Review your contribution" and "Review your
+  registration", respectively.
 
-- **dev/core#561 Convert Reports from jcalender to datepicker format ([15709](https://github.com/civicrm/civicrm-core/pull/15709))**
+- **Fix upgrade failure. Thin-out activation logic for `sequentialcreditnotes`.
+  ([16971](https://github.com/civicrm/civicrm-core/pull/16971) following
+  [dev/financial#84](https://lab.civicrm.org/dev/financial/issues/84))**
 
-- **dev/core#1664 - Fix errors recorded in log message on Manage Case scr… ([16846](https://github.com/civicrm/civicrm-core/pull/16846))**
+  This change fixes an issue for some builds when upgrading caused by the
+  activation of the `sequentialcreditnotes` extension to replace core code that
+  generates sequential credit note identifiers.
 
-- **Cleanup reverse boolean expressions ([16850](https://github.com/civicrm/civicrm-core/pull/16850))**
+- **Fix Bug where Payment Balance is sometimes miscalculated
+  ([16546](https://github.com/civicrm/civicrm-core/pull/16546))**
 
-- **CRM/Core - Cleanup boolean expressions ([16852](https://github.com/civicrm/civicrm-core/pull/16852))**
+  Fixes a bug where Add Refund is displayed instead of Add Payment on partially
+  paid event contributions.
 
-- **5.24 to master ([16859](https://github.com/civicrm/civicrm-core/pull/16859))**
+- **Stop overwriting contact name with PayPal name
+  ([CRM-20553](https://issues.civicrm.org/jira/browse/CRM-20553): [14667](https://github.com/civicrm/civicrm-core/pull/14667))**
 
-- **CRM/Utils - Cleanup boolean expressions ([16851](https://github.com/civicrm/civicrm-core/pull/16851))**
+  When a user creates a donation via PayPal, their CiviCRM contact name should
+  not be overwritten to be their PayPal account name.
 
-- **CRM - Cleanup boolean expressions ([16854](https://github.com/civicrm/civicrm-core/pull/16854))**
+- **Fix use of "Soft Credit Amount Stats" and any filter of contribution…
+  ([16591](https://github.com/civicrm/civicrm-core/pull/16591))**
 
-- **dev/core#1569: Increase Data Size for `form_values` column on civicrm_report_instance table ([16836](https://github.com/civicrm/civicrm-core/pull/16836))**
+  Ensures that one can use "Soft Credit Amount Stats" with all filters.
 
-- **Add DAO::writeRecord and DAO::deleteRecord methods ([16856](https://github.com/civicrm/civicrm-core/pull/16856))**
+- **CRM_Core_Payment_PayPalProIPN should not call getPayPalPaymentProcessorID()
+  if processor_id is clearly provided in URL
+  ([dev/core#1579](https://lab.civicrm.org/dev/core/issues/1579):
+  [16479](https://github.com/civicrm/civicrm-core/pull/16479))**
 
-- **Fix checking permissions in api3 profile get ([16848](https://github.com/civicrm/civicrm-core/pull/16848))**
+- **Update pending contribution status action also send email without warning
+  ([dev/core#1640](https://lab.civicrm.org/dev/core/issues/1640):
+  [16742](https://github.com/civicrm/civicrm-core/pull/16742))**]
 
-- **Generate text for cancelSubscription form in payment class ([16715](https://github.com/civicrm/civicrm-core/pull/16715))**
+  When bulk updating the status of contributions, there is now a checkbox to
+  choose whether the contacts should be emailed.  Previously, emails would be
+  generated without warning.
 
-- **Fix batch contact/activity update with radio options ([16855](https://github.com/civicrm/civicrm-core/pull/16855))**
+- **Fix display of payment processor title in cancelSubscription form
+  ([16857](https://github.com/civicrm/civicrm-core/pull/16857))**
 
-- **dev/core#1630 Partial fix on renew membership missing ([16762](https://github.com/civicrm/civicrm-core/pull/16762))**
+- **Make the checkbox, "Billing address is the same", respond to the change event
+  ([16496](https://github.com/civicrm/civicrm-core/pull/16496))**
 
-- **UFMatch - deprecate unused functions ([16849](https://github.com/civicrm/civicrm-core/pull/16849))**
+  This makes the "billing address is the same" checkbox trigger its changes no
+  matter how the box is checked, not just by clicking it.
 
-- **Remove old stuff ([16835](https://github.com/civicrm/civicrm-core/pull/16835))**
+### CiviEvent
 
-- **Fix CustomDataView.tpl plain empty memo field. ([16839](https://github.com/civicrm/civicrm-core/pull/16839))**
+- **PayPal Express Checkout fails on events
+  ([dev/financial#119](https://lab.civicrm.org/dev/financial/issues/119):
+  [16692](https://github.com/civicrm/civicrm-core/pull/16692))**
 
-- **CRM/Contact - Cleanup boolean expressions ([16844](https://github.com/civicrm/civicrm-core/pull/16844))**
+- **Fixed fatal error for Event Participants custom search if price set field
+  option is disabled after a registrant has already selected it
+  ([16894](https://github.com/civicrm/civicrm-core/pull/16894))**
 
-- **5.24 ([16843](https://github.com/civicrm/civicrm-core/pull/16843))**
+### CiviMember
 
-- **Deprecate unused/unneeded pseudoconstant functions ([16771](https://github.com/civicrm/civicrm-core/pull/16771))**
+- **Don't freeze fields for auto-renew memberships
+  ([dev/core#1331](https://lab.civicrm.org/dev/core/issues/1331):
+  [16609](https://github.com/civicrm/civicrm-core/pull/16609) and
+  [16881](https://github.com/civicrm/civicrm-core/pull/16881))**
 
-- **dev/report#28 - Join date field has no label on constituent detail report ([16829](https://github.com/civicrm/civicrm-core/pull/16829))**
+  Previously, many membership fields were frozen for administrators when the
+  membership was set to auto-renew with a recurring contribution.
 
-- **5.24 ([16831](https://github.com/civicrm/civicrm-core/pull/16831))**
+- **Deceased Contact via Inline doesn't update the Membership's status to
+  Deceased ([dev/core#1599](https://lab.civicrm.org/dev/core/issues/1599):
+  [16724](https://github.com/civicrm/civicrm-core/pull/16724) and
+  [16787](https://github.com/civicrm/civicrm-core/pull/16787))**
 
-- **APIv4 - convert Result object to array when running through json_encode ([16828](https://github.com/civicrm/civicrm-core/pull/16828))**
+  When marking a contact as deceased, this simplifies the underlying process and
+  ensures that a message is displayed about memberships being updated to
+  Deceased status.
 
-- **Fix typos in xml/dao ([16827](https://github.com/civicrm/civicrm-core/pull/16827))**
+- **Invalid currency "$" on sending offline membership receipt.
+  ([dev/core#1682](https://lab.civicrm.org/dev/core/issues/1682):
+  [16943](https://github.com/civicrm/civicrm-core/pull/16943))**
 
-- **[REF] Replace CRM_Utils_Array::value with ?? in variable assignments ([16768](https://github.com/civicrm/civicrm-core/pull/16768))**
+  Fixes an error when sending a receipt for a membership created from an offline
+  membership form.  The default currency symbol was being saved as the currency
+  itself.
 
-- **[REF] Replace coalesce pattern with coalesce operator ([16802](https://github.com/civicrm/civicrm-core/pull/16802))**
+- **Membership auto-renew is not optional if using price set
+  ([dev/core#1630](https://lab.civicrm.org/dev/core/issues/1630):
+  [16762](https://github.com/civicrm/civicrm-core/pull/16762))**
 
-- **[REF] Switch to using a non abandoned library for getting a mapping of mimetypes to extensions ([16436](https://github.com/civicrm/civicrm-core/pull/16436))**
+- **Membership join date checkbox on constituent detail report has lost its
+  label ([dev/report#28](https://lab.civicrm.org/dev/report/issues/28):
+  [16829](https://github.com/civicrm/civicrm-core/pull/16829))**
 
-- **Respect 'Donot notify activity type' setting ([16800](https://github.com/civicrm/civicrm-core/pull/16800))**
+### Drupal Integration
 
-- **[NFC] Use helper / api to delete contacts in tests ([16825](https://github.com/civicrm/civicrm-core/pull/16825))**
+- **Address no longer available as Relationship for Views in Drupal 7
+  ([dev/drupal#110](https://lab.civicrm.org/dev/drupal/issues/110):
+  [118](https://github.com/civicrm/civicrm-backdrop/pull/118) and
+  [600](https://github.com/civicrm/civicrm-drupal/pull/600))**
 
-- **Deprecate calling contactTrashRestore function ([16824](https://github.com/civicrm/civicrm-core/pull/16824))**
+- **Generalise typo3/phar-stream-wrapper so CiviCRM can be installed on D8.7
+  ([17085](https://github.com/civicrm/civicrm-core/pull/17085))**
 
-- **(NFC) Minor typo: receipients > recipients ([16810](https://github.com/civicrm/civicrm-core/pull/16810))**
+- **civicrm-setup and backward slashes in file paths on windows don't play nice
+  together ([dev/core#1643](https://lab.civicrm.org/dev/core/issues/1643):
+  [16886](https://github.com/civicrm/civicrm-core/pull/16886))**
 
-- **Remove deprecated parameter ([16813](https://github.com/civicrm/civicrm-core/pull/16813))**
+  Fixes installing CiviCRM on Drupal8 sites on windows using civicrm-setup / cv
+  core:install.
 
-- **[NFC] Minor code cleanup ([16823](https://github.com/civicrm/civicrm-core/pull/16823))**
+### WordPress Integration
 
-- **[REF] Simplify obtuse boolean expressions ([16822](https://github.com/civicrm/civicrm-core/pull/16822))**
+- **5.23 breaks WP admin menu links
+  ([dev/core#1637](https://lab.civicrm.org/dev/core/issues/1637):
+  [16713](https://github.com/civicrm/civicrm-core/pull/16713))**
 
-- **[NFC] Deprecate passing in silly data ([16818](https://github.com/civicrm/civicrm-core/pull/16818))**
+- **Set "cms.root" URL in addition to Path
+  ([188](https://github.com/civicrm/civicrm-wordpress/pull/188))**
 
-- **[NFC] Test cleanup ([16817](https://github.com/civicrm/civicrm-core/pull/16817))**
+  This resolves a "Cannot resolve path using 'cms.root.url'" exception thrown on
+  the "Settings - Resource URLs" screen incorrectly on a WordPress multisite
+  subsite.
 
-- **[REF] Fix PCP getPcpDashboardInfo to be tested & use sensible functions ([16790](https://github.com/civicrm/civicrm-core/pull/16790))**
+## <a name="misc"></a>Miscellany
+
+- **Add recurring contribution ID to doCancelRecurring
+  ([16741](https://github.com/civicrm/civicrm-core/pull/16741))**
 
-- **[REF] Replace CRM_Utils_Array::value with ?? in variable assignments ([16820](https://github.com/civicrm/civicrm-core/pull/16820))**
+- **Support PropertyBag in CRM_Utils_Array
+  ([16699](https://github.com/civicrm/civicrm-core/pull/16699) and
+  [16737](https://github.com/civicrm/civicrm-core/pull/16737))**
 
-- **[REF] cleanups on array operator ([16821](https://github.com/civicrm/civicrm-core/pull/16821))**
+- **Added pseudoconstant for acl_id
+  ([16925](https://github.com/civicrm/civicrm-core/pull/16925))**
 
-- **[REF] Simplify obtuse boolean expressions ([16819](https://github.com/civicrm/civicrm-core/pull/16819))**
+- **Added pseudoconstant for state province
+  ([16799](https://github.com/civicrm/civicrm-core/pull/16799))**
 
-- **[REF] Remove titleHeader var ([16816](https://github.com/civicrm/civicrm-core/pull/16816))**
+- **Added pseudoconstant for location type
+  ([16758](https://github.com/civicrm/civicrm-core/pull/16758))**
 
-- **Remove unused deprecated function ([16812](https://github.com/civicrm/civicrm-core/pull/16812))**
+- **Added pseudoconstant for priceset
+  ([16754](https://github.com/civicrm/civicrm-core/pull/16754))**
 
-- **Skip expensive smarty Processing when nothing to see here ([16731](https://github.com/civicrm/civicrm-core/pull/16731))**
+- **Added pseudoconstant for bounce type
+  ([16727](https://github.com/civicrm/civicrm-core/pull/16727))**
 
-- **Fix setting outBound_option readonly in UI ([16774](https://github.com/civicrm/civicrm-core/pull/16774))**
+- **Added pseudoconstant for civicrm_tag.parent_id
+  ([16703](https://github.com/civicrm/civicrm-core/pull/16703))**
 
-- **[REF] simplify references to civicrm_acl ([16671](https://github.com/civicrm/civicrm-core/pull/16671))**
+- **Event Cart cleanup
+  ([16691](https://github.com/civicrm/civicrm-core/pull/16691))**
 
-- **(NFC) Minor typo: contacts(s) -> contact(s) ([16804](https://github.com/civicrm/civicrm-core/pull/16804))**
+- **Update cancelSubscription form to use updated methodology
+  ([16501](https://github.com/civicrm/civicrm-core/pull/16501) and
+  [16715](https://github.com/civicrm/civicrm-core/pull/16715))**
 
-- **(NFC) Query.php / Minor typo: Genrated -> Generated ([16803](https://github.com/civicrm/civicrm-core/pull/16803))**
+- **Skip expensive smarty Processing when nothing to see here
+  ([16731](https://github.com/civicrm/civicrm-core/pull/16731))**
 
-- **Test for PR 13809 ([16474](https://github.com/civicrm/civicrm-core/pull/16474))**
+- **UFMatch - deprecate unused functions
+  ([16849](https://github.com/civicrm/civicrm-core/pull/16849))**
 
-- **(POC) Add `hook_civicrm_postCommit`, a less foot-gunny variant of `hook_civicrm_post` ([15338](https://github.com/civicrm/civicrm-core/pull/15338))**
+- **Shifted UpdateMemberhsip to BAO Layer
+  ([16690](https://github.com/civicrm/civicrm-core/pull/16690))**
 
-- **dev/core#1646 Merge Case Modal not showing relevant cases ([16798](https://github.com/civicrm/civicrm-core/pull/16798))**
+- **Add DAO::writeRecord and DAO::deleteRecord methods
+  ([16856](https://github.com/civicrm/civicrm-core/pull/16856))**
 
-- **Added pseudoconstant for state province ([16799](https://github.com/civicrm/civicrm-core/pull/16799))**
+- **Add some deprecation notices, stop calling PrevNext::cleanupCache
+  ([16697](https://github.com/civicrm/civicrm-core/pull/16697))**
 
-- **5.24 ([16801](https://github.com/civicrm/civicrm-core/pull/16801))**
+- **Remove assigns for atypefile
+  ([16895](https://github.com/civicrm/civicrm-core/pull/16895))**
 
-- **Make the 'billing address is the same' checkbox respond to the change event ([16496](https://github.com/civicrm/civicrm-core/pull/16496))**
+- **Deprecate use of  in OptionGroup::add() function
+  ([16910](https://github.com/civicrm/civicrm-core/pull/16910))**
 
-- **(NFC) Minor string error : for for > for ([16773](https://github.com/civicrm/civicrm-core/pull/16773))**
+- **Improve APIv4 selectUtils to handle join paths in fieldnames.
+  ([16904](https://github.com/civicrm/civicrm-core/pull/16904))**
 
-- **dev/core#787 Auto-complete search results fixes ([13809](https://github.com/civicrm/civicrm-core/pull/13809))**
+- **Upgrade jQuery validation version to v1.19.1
+  ([16625](https://github.com/civicrm/civicrm-core/pull/16625))**
 
-- **dev/core#1579 CRM_Core_Payment_PayPalProIPN should not call getPayPalPaymentProcessorID() if processor_id is clearly provided in URL ([16479](https://github.com/civicrm/civicrm-core/pull/16479))**
+- **APIv3 - Use new DAO::deleteRecord method
+  ([16869](https://github.com/civicrm/civicrm-core/pull/16869))**
 
-- **[NFC] Test cleanup, remove duplicate test ([16755](https://github.com/civicrm/civicrm-core/pull/16755))**
+- **Improve conditional in api3 ChainSubscriber
+  ([16718](https://github.com/civicrm/civicrm-core/pull/16718))**
 
-- **Fix Bug where Payment Balance is sometimes miscalculated ([16546](https://github.com/civicrm/civicrm-core/pull/16546))**
+- **Mark unused function as deprecated
+  ([16688](https://github.com/civicrm/civicrm-core/pull/16688))**
 
-- **5.24 ([16797](https://github.com/civicrm/civicrm-core/pull/16797))**
+- **CRM/Contact - Cleanup boolean expressions
+  ([16844](https://github.com/civicrm/civicrm-core/pull/16844))**
 
-- **[REF] Cleanup api3 DashboardContact ([16792](https://github.com/civicrm/civicrm-core/pull/16792))**
+- **CRM/Contribute - Cleanup boolean expressions
+  ([16853](https://github.com/civicrm/civicrm-core/pull/16853))**
 
-- **[REF] Fixes a bug in Message Template create API where by user permissions checks were being done on system workflow messages ([16788](https://github.com/civicrm/civicrm-core/pull/16788))**
+- **Civi/Test - Refactor out CRM_Utils_Array::value
+  ([16871](https://github.com/civicrm/civicrm-core/pull/16871))**
 
-- **5.24 ([16794](https://github.com/civicrm/civicrm-core/pull/16794))**
+- **Cleanup reverse boolean expressions
+  ([16850](https://github.com/civicrm/civicrm-core/pull/16850))**
 
-- **[REF] Remove calls to fatal() ([16746](https://github.com/civicrm/civicrm-core/pull/16746))**
+- **CRM/Core - Cleanup boolean expressions
+  ([16852](https://github.com/civicrm/civicrm-core/pull/16852))**
 
-- **[REF] Cleanup uses of CRM_Utils_Array::value related to numbers ([16778](https://github.com/civicrm/civicrm-core/pull/16778))**
+- **CRM/Utils - Cleanup boolean expressions
+  ([16851](https://github.com/civicrm/civicrm-core/pull/16851))**
 
-- **5.24 ([16786](https://github.com/civicrm/civicrm-core/pull/16786))**
+- **CRM - Cleanup boolean expressions
+  ([16854](https://github.com/civicrm/civicrm-core/pull/16854))**
 
-- **dev/core#1599/Deceased Contact's Membership Marked to Deceased via Inline ([16724](https://github.com/civicrm/civicrm-core/pull/16724))**
+- **Fix another instance of silly use of CRM_Utils_Array::value
+  ([16712](https://github.com/civicrm/civicrm-core/pull/16712))**
 
-- **5.24 to master ([16783](https://github.com/civicrm/civicrm-core/pull/16783))**
+- **Fix passing a non-array to CRM_Utils_Array::value
+  ([16701](https://github.com/civicrm/civicrm-core/pull/16701))**
 
-- **5.24 ([16782](https://github.com/civicrm/civicrm-core/pull/16782))**
+- **Fix another instance of NULL being passed to CRM_Utils_Array::value
+  ([16711](https://github.com/civicrm/civicrm-core/pull/16711))**
 
-- **[REF]  cleanup financial type form - remove complex inheritence ([16777](https://github.com/civicrm/civicrm-core/pull/16777))**
+- **Remove an instance of passing non-arraay to CRM_Utils_Array::value(
+  ([16706](https://github.com/civicrm/civicrm-core/pull/16706))**
 
-- **Add shortcodes for Personal Campaign Pages ([16695](https://github.com/civicrm/civicrm-core/pull/16695))**
+- **Remove calls & deprecate CRM_Core_BAO_PrevNextCache::setItem
+  ([16696](https://github.com/civicrm/civicrm-core/pull/16696))**
 
-- **5.24 ([16767](https://github.com/civicrm/civicrm-core/pull/16767))**
+- **(POC) Add `hook_civicrm_postCommit`, a less foot-gunny variant of
+  `hook_civicrm_post`
+  ([15338](https://github.com/civicrm/civicrm-core/pull/15338))**
 
-- **Remove instances of fatal ([16759](https://github.com/civicrm/civicrm-core/pull/16759))**
+- **Fix typos in xml/dao
+  ([16827](https://github.com/civicrm/civicrm-core/pull/16827))**
 
-- **[NFC] cleanup in test class ([16764](https://github.com/civicrm/civicrm-core/pull/16764))**
+- **Deprecate unused/unneeded pseudoconstant functions
+  ([16771](https://github.com/civicrm/civicrm-core/pull/16771))**
 
-- **[REF] Use ?? operator instead of CRM_Utils_Array::value() ([16710](https://github.com/civicrm/civicrm-core/pull/16710))**
+- **Deprecate calling contactTrashRestore function
+  ([16824](https://github.com/civicrm/civicrm-core/pull/16824))**
 
-- **add pseudoconstant for location type ([16758](https://github.com/civicrm/civicrm-core/pull/16758))**
+- **Remove old stuff
+  ([16835](https://github.com/civicrm/civicrm-core/pull/16835))**
 
-- **[REF] dev/core#1116 - Remove unused misnamed activityTypeName variable ([16730](https://github.com/civicrm/civicrm-core/pull/16730))**
+- **Remove  deprecated cleaning  of money in  the  BAO layer
+  ([16950](https://github.com/civicrm/civicrm-core/pull/16950))**
 
-- **Added pseudoconstant for priceset ([16754](https://github.com/civicrm/civicrm-core/pull/16754))**
+- **Remove unused deprecated function
+  ([16812](https://github.com/civicrm/civicrm-core/pull/16812))**
 
-- **Fix bug where a % in a serialized array can lead to the data being broken ([16694](https://github.com/civicrm/civicrm-core/pull/16694))**
+- **Remove deprecated function
+  ([16907](https://github.com/civicrm/civicrm-core/pull/16907))**
 
-- **Event Cart cleanup ([16691](https://github.com/civicrm/civicrm-core/pull/16691))**
+- **Remove unused code
+  ([16914](https://github.com/civicrm/civicrm-core/pull/16914))**
 
-- **5.24 ([16749](https://github.com/civicrm/civicrm-core/pull/16749))**
+- **Remove deprecated parameter
+  ([16813](https://github.com/civicrm/civicrm-core/pull/16813))**
 
-- **Add recurring contribution ID to doCancelRecurring ([16741](https://github.com/civicrm/civicrm-core/pull/16741))**
+- **fix typo ([16865](https://github.com/civicrm/civicrm-core/pull/16865))**
 
-- **Bump Minimum Install version to be 7.1 (Do not merge until 5.24 RC is cut) ([16678](https://github.com/civicrm/civicrm-core/pull/16678))**
+- **API tests - remove unnecessary check for v4
+  ([16866](https://github.com/civicrm/civicrm-core/pull/16866))**
 
-- **dev/core#1613/Updated Misleading labels ([16651](https://github.com/civicrm/civicrm-core/pull/16651))**
+- **[NFC] APIv4 - Add test coverage for expected fields from join
+  ([16920](https://github.com/civicrm/civicrm-core/pull/16920))**
 
-- **5.24 ([16744](https://github.com/civicrm/civicrm-core/pull/16744))**
+- **[NFC] Add in unit test to ensure that APIv4 Doesn't accept an invalid…
+  ([16893](https://github.com/civicrm/civicrm-core/pull/16893))**
 
-- **REF Switch to getter on cancelSubscription form ([16740](https://github.com/civicrm/civicrm-core/pull/16740))**
+- **[NFC] Use strict comparison where  possible
+  ([16896](https://github.com/civicrm/civicrm-core/pull/16896))**
 
-- **[REF] Minor code simplification ([16734](https://github.com/civicrm/civicrm-core/pull/16734))**
+- **[NFC] Code formatting
+  ([16906](https://github.com/civicrm/civicrm-core/pull/16906))**
 
-- **Update cancelSubscription  form to use updated methodology ([16501](https://github.com/civicrm/civicrm-core/pull/16501))**
+- **[NFC] minor form cleanup.
+  ([16905](https://github.com/civicrm/civicrm-core/pull/16905))**
 
-- **[REF] Hopefully fix regularly failing conformance test ([16732](https://github.com/civicrm/civicrm-core/pull/16732))**
+- **(NFC) Minor typo: receipients > recipients
+  ([16810](https://github.com/civicrm/civicrm-core/pull/16810))**
 
-- **Improve conditional in api3 ChainSubscriber ([16718](https://github.com/civicrm/civicrm-core/pull/16718))**
+- **[NFC] Minor code cleanup
+  ([16823](https://github.com/civicrm/civicrm-core/pull/16823))**
 
-- **CRM_Utils_Array::values follow up from #16699 ([16737](https://github.com/civicrm/civicrm-core/pull/16737))**
+- **[NFC] Deprecate passing in silly data
+  ([16818](https://github.com/civicrm/civicrm-core/pull/16818))**
 
-- **Support PropertyBag in CRM_Utils_Array ([16699](https://github.com/civicrm/civicrm-core/pull/16699))**
+- **[NFC] Test cleanup
+  ([16817](https://github.com/civicrm/civicrm-core/pull/16817))**
 
-- **[REF] Use empty() instead of CRM_Utils_Array::value() in inline conditionals ([16729](https://github.com/civicrm/civicrm-core/pull/16729))**
+- **[NFC] Test cleanup, remove duplicate test
+  ([16755](https://github.com/civicrm/civicrm-core/pull/16755))**
 
-- **5.24 ([16728](https://github.com/civicrm/civicrm-core/pull/16728))**
+- **(NFC) Minor string error : for for > for
+  ([16773](https://github.com/civicrm/civicrm-core/pull/16773))**
 
-- **pseudoconstant for bounce type ([16727](https://github.com/civicrm/civicrm-core/pull/16727))**
+- **(NFC) Minor typo: contacts(s) -> contact(s)
+  ([16804](https://github.com/civicrm/civicrm-core/pull/16804))**
 
-- **[REF] Use ?? operator instead of CRM_Utils_Array::value() in return statements ([16719](https://github.com/civicrm/civicrm-core/pull/16719))**
+- **(NFC) Query.php / Minor typo: Genrated -> Generated
+  ([16803](https://github.com/civicrm/civicrm-core/pull/16803))**
 
-- **Fix another instance of NULL being passed to CRM_Utils_Array::value ([16711](https://github.com/civicrm/civicrm-core/pull/16711))**
+- **[NFC] Fix comments, use single quotes
+  ([16693](https://github.com/civicrm/civicrm-core/pull/16693))**
 
-- **5.24 ([16725](https://github.com/civicrm/civicrm-core/pull/16725))**
+- **[NFC] Mark unused function deprecated, fix some comments & formatting
+  ([16698](https://github.com/civicrm/civicrm-core/pull/16698))**
 
-- **Fix PayPal Express on events ([16692](https://github.com/civicrm/civicrm-core/pull/16692))**
+- **[NFC] cleanup in test class
+  ([16764](https://github.com/civicrm/civicrm-core/pull/16764))**
 
-- **dev/core#1637 regression fix on WP urls ([16713](https://github.com/civicrm/civicrm-core/pull/16713))**
+- **[NFC] Use helper / api to delete contacts in tests
+  ([16825](https://github.com/civicrm/civicrm-core/pull/16825))**
 
-- **Fix another instance of silly use of CRM_Utils_Array::value ([16712](https://github.com/civicrm/civicrm-core/pull/16712))**
+- **[NFC/TEST] Resurrect unfinished test for getRelatedCases()
+  ([16885](https://github.com/civicrm/civicrm-core/pull/16885))**
 
-- **[NFC] Fix comments, use single quotes ([16693](https://github.com/civicrm/civicrm-core/pull/16693))**
+- **[Test] Remove skip that seems no longer required
+  ([16912](https://github.com/civicrm/civicrm-core/pull/16912))**
 
-- **Added pseudoconstant for civicrm_tag.parent_id ([16703](https://github.com/civicrm/civicrm-core/pull/16703))**
+- **Test for PR 13809
+  ([16474](https://github.com/civicrm/civicrm-core/pull/16474))**
 
-- **5.24 ([16709](https://github.com/civicrm/civicrm-core/pull/16709))**
+- **[TEST] Add test for to time processing
+  ([16861](https://github.com/civicrm/civicrm-core/pull/16861))**
 
-- **Remove an instance of passing non-arraay to CRM_Utils_Array::value( ([16706](https://github.com/civicrm/civicrm-core/pull/16706))**
+- **[REF] Case Activities Report includes core activities *always*
+  ([dev/core#1366](https://lab.civicrm.org/dev/core/issues/1366):
+  [16670](https://github.com/civicrm/civicrm-core/pull/16670))**
 
-- **[REF] CRM_Utils_Array::value() -> empty() ([16704](https://github.com/civicrm/civicrm-core/pull/16704))**
+- **[REF] Cleanup api3 DashboardContact
+  ([16792](https://github.com/civicrm/civicrm-core/pull/16792))**
 
-- **Remove calls & deprecate CRM_Core_BAO_PrevNextCache::setItem ([16696](https://github.com/civicrm/civicrm-core/pull/16696))**
+- **[REF] Fixes a bug in Message Template create API where by user permissions
+  checks were being done on system workflow messages
+  ([16788](https://github.com/civicrm/civicrm-core/pull/16788))**
 
-- **Api4 AJAX endpoint: change required permission to access AJAX API. ([16705](https://github.com/civicrm/civicrm-core/pull/16705))**
+- **[REF] Remove calls to fatal()
+  ([16746](https://github.com/civicrm/civicrm-core/pull/16746))**
 
-- **Fix passing a non-array to CRM_Utils_Array::value ([16701](https://github.com/civicrm/civicrm-core/pull/16701))**
+- **[REF] Cleanup uses of CRM_Utils_Array::value related to numbers
+  ([16778](https://github.com/civicrm/civicrm-core/pull/16778))**
 
-- **Shifted UpdateMemberhsip to BAO Layer ([16690](https://github.com/civicrm/civicrm-core/pull/16690))**
+- **[REF]  cleanup financial type form - remove complex inheritence
+  ([16777](https://github.com/civicrm/civicrm-core/pull/16777))**
 
-- **Use dbAlias to generate where clause for date field in activity report ([16689](https://github.com/civicrm/civicrm-core/pull/16689))**
+- **[REF] Use ?? operator instead of CRM_Utils_Array::value()
+  ([16710](https://github.com/civicrm/civicrm-core/pull/16710))**
 
-- **[NFC] Mark unused function deprecated, fix some comments & formatting ([16698](https://github.com/civicrm/civicrm-core/pull/16698))**
+- **[REF] dev/core#1116 - Remove unused misnamed activityTypeName variable
+  ([16730](https://github.com/civicrm/civicrm-core/pull/16730))**
 
-- **Remove additional display of buttons for events ([16550](https://github.com/civicrm/civicrm-core/pull/16550))**
+- **REF Switch to getter on cancelSubscription form
+  ([16740](https://github.com/civicrm/civicrm-core/pull/16740))**
 
-- **Upgrade jQuery validation version to v1.19.1 ([16625](https://github.com/civicrm/civicrm-core/pull/16625))**
+- **[REF] Minor code simplification
+  ([16734](https://github.com/civicrm/civicrm-core/pull/16734))**
 
-- **Mark unused function as deprecated ([16688](https://github.com/civicrm/civicrm-core/pull/16688))**
+- **[REF] Hopefully fix regularly failing conformance test
+  ([16732](https://github.com/civicrm/civicrm-core/pull/16732))**
 
-- **Fix Views relationship to addresses ([600](https://github.com/civicrm/civicrm-drupal/pull/600))**
+- **[REF] Use empty() instead of CRM_Utils_Array::value() in inline conditionals
+  ([16729](https://github.com/civicrm/civicrm-core/pull/16729))**
 
-- **Use new consolidated constant for minimum PHP version ([599](https://github.com/civicrm/civicrm-drupal/pull/599))**
+- **[REF] Use ?? operator instead of CRM_Utils_Array::value() in return
+  statements ([16719](https://github.com/civicrm/civicrm-core/pull/16719))**
 
-- **Bump minimum PHP version to be 7.1 (Do not merge until 5.24 RC is cut) ([598](https://github.com/civicrm/civicrm-drupal/pull/598))**
+- **[REF] CRM_Utils_Array::value() -> empty()
+  ([16704](https://github.com/civicrm/civicrm-core/pull/16704))**
 
-- **Set "cms.root" URL in addition to Path ([188](https://github.com/civicrm/civicrm-wordpress/pull/188))**
+- **[REF] Cleanup is_array(CRM_Utils_Array::value()) pattern
+  ([16875](https://github.com/civicrm/civicrm-core/pull/16875))**
 
-- **Merge REST API wrapper code ([160](https://github.com/civicrm/civicrm-wordpress/pull/160))**
+- **[REF] Remove redundant call to build permissions
+  ([16862](https://github.com/civicrm/civicrm-core/pull/16862))**
 
-- **Consolidate to single constant for minimum PHP version ([187](https://github.com/civicrm/civicrm-wordpress/pull/187))**
+- **[REF] Replace CRM_Utils_Array::value with ?? in variable assignments
+  ([16768](https://github.com/civicrm/civicrm-core/pull/16768))**
 
-- **Add shortcodes for Personal Campaign Pages ([185](https://github.com/civicrm/civicrm-wordpress/pull/185))**
+- **[REF] Replace coalesce pattern with coalesce operator
+  ([16802](https://github.com/civicrm/civicrm-core/pull/16802))**
 
-- **Bump minimum install version to be 7.1 (Do not merge until 5.24 RC is cut) ([184](https://github.com/civicrm/civicrm-wordpress/pull/184))**
+- **[REF] Switch to using a non abandoned library for getting a mapping of
+  mimetypes to extensions
+  ([16436](https://github.com/civicrm/civicrm-core/pull/16436))**
 
-- **Issue #117 fix address relationship for Views ([118](https://github.com/civicrm/civicrm-backdrop/pull/118))**
+- **[REF] move buildQuickForm function to the trait
+  ([16948](https://github.com/civicrm/civicrm-core/pull/16948))**
 
-- **Consolidate to single constant for minimum PHP version ([114](https://github.com/civicrm/civicrm-backdrop/pull/114))**
+- **[REF] Move properties to Trait
+  ([16940](https://github.com/civicrm/civicrm-core/pull/16940))**
 
-- **Bump Minimum PHP Version to be 7.1 (Do not merge until 5.24 RC is cut) ([111](https://github.com/civicrm/civicrm-backdrop/pull/111))**
+- **[REF] Start transitioning EmailCommon class to a trait
+  ([16935](https://github.com/civicrm/civicrm-core/pull/16935))**
 
-- **dev/core#1675 and dev/core#1695 - Revert part of DB package upgrade that is causing transaction issues ([289](https://github.com/civicrm/civicrm-packages/pull/289))**
+- **[REF] Remove fatal, fix some code comments
+  ([16928](https://github.com/civicrm/civicrm-core/pull/16928))**
 
-## <a name="misc"></a>Miscellany
+- **[REF] extract code to getEmails
+  ([16929](https://github.com/civicrm/civicrm-core/pull/16929))**
+
+- **[REF] Minor simplification - do not use variable variables
+  ([16927](https://github.com/civicrm/civicrm-core/pull/16927))**
+
+- **[REF] Extract code used to render a pseudoconstant when a table is defined.
+  ([16902](https://github.com/civicrm/civicrm-core/pull/16902))**
+
+- **[REF] Move form specific handling back to the relevant form.
+  ([16913](https://github.com/civicrm/civicrm-core/pull/16913))**
+
+- **[REF] APIv4 - Preserve order when expanding select wildcards
+  ([16909](https://github.com/civicrm/civicrm-core/pull/16909))**
+
+- **[REF] Remove & from before variable
+  ([16897](https://github.com/civicrm/civicrm-core/pull/16897))**
+
+- **[REF] Replace \CRM_Utils_Array::value with ??
+  ([16872](https://github.com/civicrm/civicrm-core/pull/16872))**
+
+- **[REF] Civi/Api4 - Refactor out 'use CRM_Utils_Array'
+  ([16873](https://github.com/civicrm/civicrm-core/pull/16873))**
+
+- **[REF] BAO_Contact - Remove CRM_Utils_Array::value and other unnecessary code
+  ([16874](https://github.com/civicrm/civicrm-core/pull/16874))**
+
+- **[REF] APIv4 - Restructure the way get query objects are constucted
+  ([16878](https://github.com/civicrm/civicrm-core/pull/16878))**
+
+- **[REF] Fix PCP getPcpDashboardInfo to be tested & use sensible functions
+  ([16790](https://github.com/civicrm/civicrm-core/pull/16790))**
+
+- **[REF] Simplify obtuse boolean expressions
+  ([16822](https://github.com/civicrm/civicrm-core/pull/16822))**
+
+- **[REF] Replace CRM_Utils_Array::value with ?? in variable assignments
+  ([16820](https://github.com/civicrm/civicrm-core/pull/16820))**
+
+- **[REF] cleanups on array operator
+  ([16821](https://github.com/civicrm/civicrm-core/pull/16821))**
+
+- **[REF] Simplify obtuse boolean expressions
+  ([16819](https://github.com/civicrm/civicrm-core/pull/16819))**
+
+- **[REF] Remove titleHeader var
+  ([16816](https://github.com/civicrm/civicrm-core/pull/16816))**
+
+- **[REF] simplify references to civicrm_acl
+  ([16671](https://github.com/civicrm/civicrm-core/pull/16671))**
+
+- **[REF] Fix retrieving invoice related settings when doing complete
+  transaction ([17218](https://github.com/civicrm/civicrm-core/pull/17218))**
 
 ## <a name="credits"></a>Credits
 
 This release was developed by the following code authors:
 
-a-n The Artists Information Company - William Mortada; AGH Strategies - Alice Frumin, Andrew Hunt; Alexy Mikhailichenko; Andrei Mondoc; Christian Wach; Circle Interactive - Pradeep Nayak; CiviCoop - Jaap Jansma; CiviCRM - Coleman Watts, Tim Otten; CiviDesk - Yashodha Chaku; Coop SymbioTIC - Mathieu Lutfy; Dave D; Freeform Solutions - Herb van den Dool; Fuzion - Jitendra Purohit; iXiam - César Ramos; JMA Consulting - Seamus Lee; Joinery - Allen Shaw; Kartik Kathuria; Lighthouse Design and Consulting - Brian Shaughnessy; Makoa - Usha F. Matisson; Megaphone Technology Consulting - Jon Goldberg; MJW Consulting - Matthew Wire; Naomi Rosenberg; Ray Wright; sushantpaste; SYSTOPIA Organisationsberatung - Björn Endres; Timbsoft Technologies - Tunbola Ogunwande; Wikimedia Foundation - Eileen McNaughton
+a-n The Artists Information Company - William Mortada; AGH Strategies - Alice
+Frumin, Andie Hunt; Alexy Mikhailichenko; Andrei Mondoc; Christian Wach; Circle
+Interactive - Pradeep Nayak; CiviCoop - Jaap Jansma; CiviCRM - Coleman Watts,
+Tim Otten; CiviDesk - Yashodha Chaku; Coop SymbioTIC - Mathieu Lutfy; Dave D;
+Freeform Solutions - Herb van den Dool; Fuzion - Jitendra Purohit; iXiam - César
+Ramos; JMA Consulting - Seamus Lee; Joinery - Allen Shaw; Kartik Kathuria;
+Lighthouse Design and Consulting - Brian Shaughnessy; Makoa - Usha F. Matisson;
+Megaphone Technology Consulting - Jon Goldberg; MJW Consulting - Matthew Wire;
+Naomi Rosenberg; Ray Wright; OSSeed Technologies LLP - Sushant Paste; SYSTOPIA
+Organisationsberatung - Björn Endres; Timbsoft Technologies - Tunbola Ogunwande;
+Wikimedia Foundation - Eileen McNaughton
 
 Most authors also reviewed code for this release; in addition, the following
 reviewers contributed their comments:
 
-a-n The Artists Information Company - William Mortada; AGH Strategies - Alice Frumin, Andrew Hunt; Agileware - Justin Freeman; Andrei Mondoc; Artful Robot - Rich Lott; British Humanist Association - Andrew West; Christian Wach; Circle Interactive - Pradeep Nayak; civibot[bot]; CiviCoop - Jaap Jansma; CiviCRM - Coleman Watts, Tim Otten; CiviDesk - Nicolas Ganivet, Yashodha Chaku; Coop SymbioTIC - Mathieu Lutfy; Dave D; Digitalcourage - Detlev Sieber; freeform-sg; Fuzion - Jitendra Purohit, Luke Stewart; Greenpeace Central and Eastern Europe - Patrick Figel; Jamie Tillman; JMA Consulting - Monish Deb, Seamus Lee; Joinery - Allen Shaw; Kartik Kathuria; Korlon - Stuart Gaston; Megaphone Technology Consulting - Jon Goldberg; MJCO - Mikey O'Toole; MJW Consulting - Matthew Wire; Richard van Oosterhout; Skvare - Mark Hanna; Squiffle Consulting - Aidan Saunders; sushantpaste; SYSTOPIA Organisationsberatung - Björn Endres; Tadpole Collective - Kevin Cristiano; Wikimedia Foundation - Eileen McNaughton
+Agileware - Justin Freeman; Artful Robot - Rich Lott; British Humanist
+Association - Andrew West; CiviDesk - Nicolas Ganivet; Coop SymbioTIC - Mathieu
+Lutfy; Digitalcourage - Detlev Sieber; Freeform Solutions - S. Gray; Fuzion -
+Jitendra Purohit; Greenpeace Central and Eastern Europe - Patrick Figel; Jamie
+Tillman; JMA Consulting - Monish Deb; Korlon - Stuart Gaston; MJCO - Mikey
+O'Toole; Richard van Oosterhout; Skvare - Mark Hanna; Squiffle Consulting -
+Aidan Saunders; Tadpole Collective - Kevin Cristiano
 
 ## <a name="feedback"></a>Feedback
 
-These release notes are edited by Alice Frumin and Andrew Hunt.  If you'd like
+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`.