# CiviCRM 5.27.0 Released July 1, 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** | ## Features ### Core CiviCRM - **Warn users who lack PHP-Intl extension (Work Towards [dev/translation#48](https://lab.civicrm.org/dev/translation/-/issues/48): [17668](https://github.com/civicrm/civicrm-core/pull/17668), [17728](https://github.com/civicrm/civicrm-core/pull/17728))** A system check warning will now appear on sites that lack the PHP Internationalization extension. This is in preparation for changes that will appear in CiviCRM 5.28 and require the extension. - **Advanced Search - Allow searching by first/last name; pass values from quicksearch ([dev/core#1722](https://lab.civicrm.org/dev/core/-/issues/1722): [17118](https://github.com/civicrm/civicrm-core/pull/17118))** This makes separate First Name and Last Name fields available on the Advanced Search form, and it ensures quick search filters are passed to the appropriate field. - **Add more search options ([17372](https://github.com/civicrm/civicrm-core/pull/17372))** Improves the search form for individuals in contact reference fields by adding fields for Employer Name, First Name, Last Name, and Nick Name. - **End of life planning for MySQL server 5.0 - 5.6 ([dev/core#1681](https://lab.civicrm.org/dev/core/-/issues/1681): [17518](https://github.com/civicrm/civicrm-core/pull/17518) and [17496](https://github.com/civicrm/civicrm-core/pull/17496))** Sites running MySQL 5.5 and below will have a pre-upgrade message and a system check warning to say that CiviCRM 5.28 will require MySQL 5.6 or MariaDB 10.1. - **APIv4 - Improve pseudoconstant suffix support ([17368](https://github.com/civicrm/civicrm-core/pull/17368) and [17482](https://github.com/civicrm/civicrm-core/pull/17482))** APIv4 allows pseudoconstant fields to be specified with the pseudoconstant name followed by a suffix, such as `activity_type_id:label`. This now works for retrieval and sort. - **APIv4 - Support custom entity joins ([17394](https://github.com/civicrm/civicrm-core/pull/17394))** Improves APIv4 so that it supports implicit and explicit joins onto custom entities. - **Make reCAPTCHA settings clearer ([17426](https://github.com/civicrm/civicrm-core/pull/17426))** The help text for reCAPTCHA settings now specifies the type of reCAPTCHA supported. - **Configurable logfile size and hashing ([17192](https://github.com/civicrm/civicrm-core/pull/17192))** Allows a system administrator to give logs a predictable name, allowing them to be more easily ingested into other tools, and be handled by external log rotation tools. - **Allow for installation on Symfony 4.4 ([17380](https://github.com/civicrm/civicrm-core/pull/17380))** Makes it so CiviCRM plays nicely with Symfony 4.4. - **Add domain tokens to the Message Template admin interface ([17388](https://github.com/civicrm/civicrm-core/pull/17388))** This adds the domain tokens (the domain organization name, address, email, and phone) to the available listed tokens for editing message templates. - **Hide icon elements from screen readers and add handling for screen-reader-only text ([17318](https://github.com/civicrm/civicrm-core/pull/17318), [17293](https://github.com/civicrm/civicrm-core/pull/17293), [17294](https://github.com/civicrm/civicrm-core/pull/17294), and [17310](https://github.com/civicrm/civicrm-core/pull/17310))** CiviCRM uses empty `` elements to provide most icons. Screen readers, which won't render the visual icon anyway, will either skip over an empty element or announce it in a way that would be confusing. This makes it explicit that screen readers and other ARIA devices should skip them. Meanwhile, if the icon is the only way a piece of information is displayed, a screen reader user won't get that information. This adds a `sr-only` class that makes the element invisible on screen without being ignored by a screen reader. Screen reader text is added for the field option wrench icons, relationship permissions, and membership auto-renew status. - **Add icon helper functions and remove most uses of check.gif ([17279](https://github.com/civicrm/civicrm-core/pull/17279) and [17289](https://github.com/civicrm/civicrm-core/pull/17289))** This adds helper functions in PHP and Smarty to render consistent icons with a minimum of code. It also replaces most instances of the green checkmark image with a checkmark icon. - **Separate icon markup from labels and add JS icon helper ([17319](https://github.com/civicrm/civicrm-core/pull/17319) and [17285](https://github.com/civicrm/civicrm-core/pull/17285))** These changes improve `CRM_Core_Action::formLink()`, `hook_civicrm_links`, and certain listing pages so that HTML icon markup is added at the point of display rather than during the processing of values. It also adds a helper function in Javascript similar to those in PHP and Smarty to render icons. - **crmButton: Support icon=0 for no icon ([17303](https://github.com/civicrm/civicrm-core/pull/17303))** Makes it possible to create a button without an icon using {crmButton}. - **Replace stop-icon.png with fa-ban over a relevant icon for privacy ([17283](https://github.com/civicrm/civicrm-core/pull/17283) and [17307](https://github.com/civicrm/civicrm-core/pull/17307))** The communication preference icons are standardized and more specific than the old stop sign. - **Replace image icons with Font Awesome icons ([17296]([17280](https://github.com/civicrm/civicrm-core/pull/17280), [17281](https://github.com/civicrm/civicrm-core/pull/17281), [17282](https://github.com/civicrm/civicrm-core/pull/17282), [17295](https://github.com/civicrm/civicrm-core/pull/17295), https://github.com/civicrm/civicrm-core/pull/17296), [17297](https://github.com/civicrm/civicrm-core/pull/17297))** Nearly all image icons have been replaced with the corresponding icons from the Font Awesome library. - **Simplify admin console and remove superfluous icons ([17284](https://github.com/civicrm/civicrm-core/pull/17284))** The Administration console has been redesigned to have a simpler layout, display more information, dynamically include all enabled components, display responsively on small screens, and remove a slew of 15-year-old image icons. - **Dedupe performance - hard-remove financial_item from list of dymnamic refs to contact table ([17567](https://github.com/civicrm/civicrm-core/pull/17567))** This improves performance when deduping by no longer querying the financial item table. - **Trigger fatalErrorHandler for PEAR errors and for logs with severity ERROR or higher ([17277](https://github.com/civicrm/civicrm-core/pull/17277))** This allows extensions that implement `$config->fatalErrorHandler` to react to a wider variety of errors that CiviCRM may generate. ### CiviContribute - **Wrap separators in price field in spans with classes ([dev/user-interface#18](https://lab.civicrm.org/dev/user-interface/-/issues/18): [17078](https://github.com/civicrm/civicrm-core/pull/17078))** Colons separating pre- and post-field help text from price fields are now wrapped in `` elements. - **Allow to search on contribution ID ([dev/core#1580](https://lab.civicrm.org/dev/core/-/issues/1580): [16484](https://github.com/civicrm/civicrm-core/pull/16484))** This improves the "Find Contributions" search form by adding a field to search by Contribution ID. - **APIv4 - Add "Price"-related entities ([17363](https://github.com/civicrm/civicrm-core/pull/17363))** Priceset, PriceField, and PriceOption entities are added to APIv4. - **APIv4 - Add ContributionRecur entity ([17299](https://github.com/civicrm/civicrm-core/pull/17299))** Adds Contribution Recur to APIv4. ### CiviMail - **Allow click-through and open tracking to be enabled/disabled by default ([17291](https://github.com/civicrm/civicrm-core/pull/17291))** Adds a setting to CiviMail which allows for setting the click-through and open tracking defaults. - **Extend content array of hook_civicrm_alterMailContent ([dev/core#1620](https://lab.civicrm.org/dev/core/-/issues/1620): [16629](https://github.com/civicrm/civicrm-core/pull/16629))** Adds campaign_id to template for `alterMailContent` hook. - **Migrate CiviMail "extern" scripts to conventional routes ([17312](https://github.com/civicrm/civicrm-core/pull/17312))** Updates CiviMail's default behavior to replace `extern/open.php` and `extern/url.php` with `civicrm/mailing/open` and `civicrm/mailing/url`. - **Make `is_archived` work as a url-search parameter ([17328](https://github.com/civicrm/civicrm-core/pull/17328))** The Find Mailings URL can now have `is_archived` as a parameter to only find archived mailings. ### CiviMember - **Add MembershipType to Api4 ([17448](https://github.com/civicrm/civicrm-core/pull/17448))** Adds a Membership Type entity to APIv4. ### Drupal Integration - **CiviCRM menu toggle "adjust menu position" customisable ([dev/core#1757](https://lab.civicrm.org/dev/core/-/issues/1757): [17362](https://github.com/civicrm/civicrm-core/pull/17362))** This hides the "adjust menu position" icon in the CiviCRM Menu for non admin users to avoid confusion for users who do not have access to the Drupal admin menu. - **Provide "Calendar" module with an end-date when a duration is provided ([601](https://github.com/civicrm/civicrm-drupal/pull/601))** Improves display of activities in calendar views. ## Bugs resolved ### Core CiviCRM - **CRM_Utils_Time::setTime and getTime() and their use in unit tests ([dev/core#1781](https://lab.civicrm.org/dev/core/-/issues/1781): [17414](https://github.com/civicrm/civicrm-core/pull/17414))** This allows the CRM_Utils_Time functions used in unit tests to use TIME_FUNC to better isolate timing bugs. - **Confusing popups when importing activities ([dev/user-interface#17](https://lab.civicrm.org/dev/user-interface/-/issues/17): [17067](https://github.com/civicrm/civicrm-core/pull/17067))** This fixes a bug where the confirmation popup would appear when hitting the back/cancel buttons, not just the import button, on most import forms. - **Installing CiviCRM in another language, with civicrm-setup ([dev/translation#39](https://lab.civicrm.org/dev/translation/-/issues/39): [17244](https://github.com/civicrm/civicrm-core/pull/17244))** Fixes a bug when installing CiviCRM in another language with civicrm-setup. - **Replace all instances of CRM_Core_Fatal with throw new CRM_Core_Exception ([dev/core#560](https://lab.civicrm.org/dev/core/-/issues/560): [17421](https://github.com/civicrm/civicrm-core/pull/17421), [17343](https://github.com/civicrm/civicrm-core/pull/17343), [17336](https://github.com/civicrm/civicrm-core/pull/17336) and [17341](https://github.com/civicrm/civicrm-core/pull/17341))** - **CiviCRM 5.13.4 - smart groups with contact subtypes: subtype is not in Contact Type field on edit criteria mode ([dev/core#991](https://lab.civicrm.org/dev/core/-/issues/991): [16541](https://github.com/civicrm/civicrm-core/pull/16541))** Fixes contact subtypes not being carried over when editing a smart group created in Advanced Search. - **Unable to import relationship ([dev/core#1731](https://lab.civicrm.org/dev/core/-/issues/1731): [17163](https://github.com/civicrm/civicrm-core/pull/17163))** Ensures that importing relationships works as expected when the same field is to be imported for the main imported contact and a related contact. - **Apostrophes in richtext fields don't get exported properly in CiviReport ([dev/core#1743](https://lab.civicrm.org/dev/core/-/issues/1743): [17260](https://github.com/civicrm/civicrm-core/pull/17260))** - **Statically added members of a smart group are not found ([dev/core#1745](https://lab.civicrm.org/dev/core/-/issues/1745): [17419](https://github.com/civicrm/civicrm-core/pull/17419))** - **Deleting an activity with attachments doesn't delete the file or entries in civicrm_file/civicrm_entity_file ([dev/core#1753](https://lab.civicrm.org/dev/core/-/issues/1753): [17298](https://github.com/civicrm/civicrm-core/pull/17298))** - **Deselected checkbox settings are not saved ([dev/core#1794](https://lab.civicrm.org/dev/core/-/issues/1794): [17493](https://github.com/civicrm/civicrm-core/pull/17493))** Ensures deselected values are saved on custom field settings forms. - **Added activity types don't appear in the type dropdown on New Activity ([dev/core#1822](https://lab.civicrm.org/dev/core/-/issues/1822): [17625](https://github.com/civicrm/civicrm-core/pull/17625))** - **API doesn't allow passing option values by label ([dev/core#1816](https://lab.civicrm.org/dev/core/-/issues/1816): [17628](https://github.com/civicrm/civicrm-core/pull/17628))** Updates APIv4 so that it matches based on label if name is not found. - **APIv4 - Improve custom field spec gathering ([17471](https://github.com/civicrm/civicrm-core/pull/17471))** - **APIv4 - Remove implicit multi joins & add explicit joins ([17332](https://github.com/civicrm/civicrm-core/pull/17332))** - **APIv4 - Fix entity name on custom groups in schemaMapper ([17425](https://github.com/civicrm/civicrm-core/pull/17425))** - **APIv4 - fix returning custom field values with API4 ([17399](https://github.com/civicrm/civicrm-core/pull/17399))** - **Attempting to access Multi-Record Custom Field import results in crash ([dev/core#1841](https://lab.civicrm.org/dev/core/-/issues/1841): [17713](https://github.com/civicrm/civicrm-core/pull/17713))** - **Fix issue with building smart groups when $contactQueries is empty ([17622](https://github.com/civicrm/civicrm-core/pull/17622))** If a clause of a contact query used to build a smart group is empty, it would result in a database error. - **Replace deprecated `money_format()` fn to support PHP 7.4 (Work Towards [dev/core#1494](https://lab.civicrm.org/dev/core/-/issues/1494): [17577](https://github.com/civicrm/civicrm-core/pull/17577), [17730](https://github.com/civicrm/civicrm-core/pull/17730))** Adds a deprecation notice and a status check for a money value format configuration other than the default. - **QueueTest - Be more forgiving about slow execution ([17532](https://github.com/civicrm/civicrm-core/pull/17532))** - **CommunityMessages - Define more consistent behavior in the face of slow execution ([17529](https://github.com/civicrm/civicrm-core/pull/17529))** This helps avoid test failures on broadcast messages when the system is running slowly. - **Scheduled Reminders - Set boolean fields to false if not set. ([17494](https://github.com/civicrm/civicrm-core/pull/17494))** - **Allow bidirectional assignment of relationships from search results ([17413](https://github.com/civicrm/civicrm-core/pull/17413))** Previously relationships could only be created from search results where the contacts would be valid in the "A" side of the relationship type. - **Navigation menu - Fix translation of new-subtype entries ([17451](https://github.com/civicrm/civicrm-core/pull/17451))** The "New" in menu items for creating a new contact of a subtype was not translated. - **utf8mb4 - If strict mode enabled query will fail if KEY_BLOCK_SIZE is not 0 ([17253](https://github.com/civicrm/civicrm-core/pull/17253))** - **Update DAO and l10n schema file ([17395](https://github.com/civicrm/civicrm-core/pull/17395))** Price option name and value are now required in the database. - **Fix adding languages in multilingual ([17228](https://github.com/civicrm/civicrm-core/pull/17228))** This resolves a database error when adding or removing a language on a multilingual site. - **Don't exclude deleted contacts from ACL cache when user has permission ([17379](https://github.com/civicrm/civicrm-core/pull/17379))** - **SMTP page appears broken when language is French (JS issue) ([dev/core#1760](https://lab.civicrm.org/dev/core/-/issues/1760): [17317](https://github.com/civicrm/civicrm-core/pull/17317))** Javascript strings that appear in Smarty are now escaped more thoroughly to avoid markup problems. - **Add serialize column to civicrm_custom_field, remove "Multi-Select" html type ([16992](https://github.com/civicrm/civicrm-core/pull/16992), [17722](https://github.com/civicrm/civicrm-core/pull/17722))** Work towards making custom select and multi-select fields more similar to core select/multi-select fields. - **Respect file fields that have been configured as view only in profiles ([17079](https://github.com/civicrm/civicrm-core/pull/17079))** - **Tag create - Respect created_date and created_id params ([17257](https://github.com/civicrm/civicrm-core/pull/17257))** - **Public status messages should show correct class/icon like error ([17376](https://github.com/civicrm/civicrm-core/pull/17376))** - **Decorative chevrons should be icons not angle quotes ([17245](https://github.com/civicrm/civicrm-core/pull/17245))** - **A/B Test - Icon should be Erlenmeyer flask, not bar chart ([17316](https://github.com/civicrm/civicrm-core/pull/17316))** - **Proceeding to confirmation page should be a "next" button not a check ([17246](https://github.com/civicrm/civicrm-core/pull/17246))** ### CiviCase - **Case Activity: Follow-up activity assignee does not receive email ([dev/core#1721](https://lab.civicrm.org/dev/core/-/issues/1721): [17116](https://github.com/civicrm/civicrm-core/pull/17116))** Ensures when a follow up case activity is created the assignee is sent an email. ### CiviContribute - **Custom fields disappear on page refresh ([dev/core#1728](https://lab.civicrm.org/dev/core/-/issues/1728): [17301](https://github.com/civicrm/civicrm-core/pull/17301))** This ensures that financial type specific custom fields are displayed on the backend contribution form when it is refreshed. - **Fix pricefield pseudoconstant. ([17364](https://github.com/civicrm/civicrm-core/pull/17364))** Fixes `PriceField` entity to build options for the `price_set_id` pseudoconstant field. - **Nuance cancel options for processors ([17430](https://github.com/civicrm/civicrm-core/pull/17430))** This allows payment processors to specify the way they allow cancellation of recurring contributions. - **[regression] Contribution amount choices don't appear for anonymous users ([dev/core#1823](https://lab.civicrm.org/dev/core/-/issues/1823): [17619](https://github.com/civicrm/civicrm-core/pull/17619))** - **Import Contribution of custom fields only accepts "Numeric Value" rather than "Label" ([dev/core#1806](https://lab.civicrm.org/dev/core/-/issues/1806): [17632](https://github.com/civicrm/civicrm-core/pull/17632))** - **"Financial Type" listed twice in contribution export ([dev/core#1650](https://lab.civicrm.org/dev/core/-/issues/1650): [17147](https://github.com/civicrm/civicrm-core/pull/17147))** - **Record Payment does not update check_number & trxn id on main contribution. ([dev/core#1758](https://lab.civicrm.org/dev/core/-/issues/1758): [17314](https://github.com/civicrm/civicrm-core/pull/17314))** - **civicrm_financial_trxn.fee_amount reversals mixed up ([dev/core#1775](https://lab.civicrm.org/dev/core/-/issues/1775): [17386](https://github.com/civicrm/civicrm-core/pull/17386))** - **jquery validation type error on the credit card field ([dev/core#1797](https://lab.civicrm.org/dev/core/-/issues/1797): [17497](https://github.com/civicrm/civicrm-core/pull/17497))** Fixes a jQuery error when submitting a front end contribution form with a credit card field. - **Fix payment instrument bug by using correct payment instrument ([17607](https://github.com/civicrm/civicrm-core/pull/17607))** When a backend payment form records a payment it now will use a processor-specific default payment instrument rather than the site-wide default if it is set. - **Payment PropertyBag - Fix setAmount ([17505](https://github.com/civicrm/civicrm-core/pull/17505))** Ensures "Amount" is set correctly on PropertyBag. - **Fixed hide show of start date ([17446](https://github.com/civicrm/civicrm-core/pull/17446))** Fix hide/show of receive date for recurring contributions. - **Don't allow Contribution.repeattransaction to be used without a recurring contribution ([17447](https://github.com/civicrm/civicrm-core/pull/17447))** - **Add actual field name for processor_id to getSubscriptionDetails ([17466](https://github.com/civicrm/civicrm-core/pull/17466))** - **Make 'Pending' the default status for Contribution.repeattransaction ([17432](https://github.com/civicrm/civicrm-core/pull/17432))** - **Fetch line items from correct contribution when repeating a contribution ([17220](https://github.com/civicrm/civicrm-core/pull/17220))** - **Support order_reference param in API3 Payment.create ([17278](https://github.com/civicrm/civicrm-core/pull/17278))** - **E_WARNINGS when viewing list of pledge payments ([dev/core#1791](https://lab.civicrm.org/dev/core/-/issues/1791): [17434](https://github.com/civicrm/civicrm-core/pull/17434))** - **Add propertyBag handling for getEmail when incoming uses email-5 ([17267](https://github.com/civicrm/civicrm-core/pull/17267))** Payment processors can now retrieve billing email using the `propertyBag` class methods. ### CiviMail - **Don't log subscription_history ([dev/core#1762](https://lab.civicrm.org/dev/core/-/issues/1762): [17323](https://github.com/civicrm/civicrm-core/pull/17323))** The `civicrm_subscription_history` table is effectively a log of contacts being added to and removed from groups. Rows do not change value; each change in group subscription results in a new row. Consequently, there is no reason to attach detailed logging to this table. - **Unsubscribe generates 500 server error responses, logs say "missing parameters" ([dev/core#1773](https://lab.civicrm.org/dev/core/-/issues/1773): [17402](https://github.com/civicrm/civicrm-core/pull/17402))** Ensures the unsubscribe form can only be submitted once. ### CiviMember - **Recurring contribution fails with "ipn_payment_callback_exception", for membership auto-renewal via PayPalPro. ([dev/core#1608](https://lab.civicrm.org/dev/core/-/issues/1608): [17355](https://github.com/civicrm/civicrm-core/pull/17355))** - **Don't hide disabled memberships from the contact membership tab ([dev/membership#24](https://lab.civicrm.org/dev/membership/-/issues/24): [17143](https://github.com/civicrm/civicrm-core/pull/17143) and [17435](https://github.com/civicrm/civicrm-core/pull/17435))** This resolves a problem where memberships of disabled membership types would not appear on the membership tab but would throw a duplicate membership warning when creating a new membership with the same membership organization. This also adds a unit test to lock in the correct behavior. - **Update MembershipType.name to be a required field ([17463](https://github.com/civicrm/civicrm-core/pull/17463))** - **Fix PHP notice when is_override is not set ([17273](https://github.com/civicrm/civicrm-core/pull/17273))** ### Joomla Integration - **Upgrade from 5.26.2 to 5.27 RC Fails ([dev/joomla/#28](https://lab.civicrm.org/dev/joomla/-/issues/28): [17710](https://github.com/civicrm/civicrm-core/pull/17710))** ### WordPress Integration - **Styling issues after upgrade to WordPress 5.3 ([dev/wordpress#46](https://lab.civicrm.org/dev/wordpress/-/issues/46): [16967](https://github.com/civicrm/civicrm-core/pull/16967))** - **WP - Change definitions of `cms.root`, `civicrm.root` ([17360](https://github.com/civicrm/civicrm-core/pull/17360))** The base logic for computing path/URL defaults is in Civi/Core/Paths.php. For CiviCRM on WordPress, certain variables (which are easier to compute via WordPress APIs) are overridden in `CRM_Utils_System_WordPress`. On WordPress, the path/URL logic for has been split: there is one code path for normal CiviCRM pages which is based on WordPress APIs, and there is another for older, standalone scripts in the `extern` folder which is based on the same logic as before. - **Declare minimum WP and PHP versions required for installation ([201](https://github.com/civicrm/civicrm-wordpress/pull/201))** - **wp-rest - Adjust extern URL. Be more defensive about 'query' part. ([192](https://github.com/civicrm/civicrm-wordpress/pull/192))** This resolves issues with tracking URLs via the `wp-rest` endpoint that are then modified with `hook_civicrm_alterExternUrl`. ## Miscellany - **Handle less common dynamic reference cases ([17653](https://github.com/civicrm/civicrm-core/pull/17653))** - **Use apiv4, cache infra for basicTypes ([17387](https://github.com/civicrm/civicrm-core/pull/17387))** - **Cleanup PriceFieldValue BAO ([17306](https://github.com/civicrm/civicrm-core/pull/17306))** - **Clarify definition of amount field in civicrm_contribution_recur table. ([17311](https://github.com/civicrm/civicrm-core/pull/17311))** - **Call completeOrder directly from contribute status update form ([17347](https://github.com/civicrm/civicrm-core/pull/17347))** - **Switch docblock code to use markdown syntax. ([17304](https://github.com/civicrm/civicrm-core/pull/17304))** - **Preliminary cleanup on form ([17345](https://github.com/civicrm/civicrm-core/pull/17345))** - **Add getBAOClassName utiltiy function ([17268](https://github.com/civicrm/civicrm-core/pull/17268))** - **CRM/Logging - Remove obsolete cache static clear in test ([17269](https://github.com/civicrm/civicrm-core/pull/17269))** - **Remove incorrect retrievals of tax-term setting ([17183](https://github.com/civicrm/civicrm-core/pull/17183))** - **CiviEvent Dashboard and Manage Events: clean up disused url template vars ([17378](https://github.com/civicrm/civicrm-core/pull/17378))** - **Set default using spec for activity_date_time ([17390](https://github.com/civicrm/civicrm-core/pull/17390))** - **Convert remaining Authorize.net test to use guzzle ([17473](https://github.com/civicrm/civicrm-core/pull/17473))** - **Various BAO create/add cleanups to use writeRecord() ([17308](https://github.com/civicrm/civicrm-core/pull/17308))** - **Remove instantiation of transaction from payment express ipn class ([17348](https://github.com/civicrm/civicrm-core/pull/17348))** - **Remove null code ([17381](https://github.com/civicrm/civicrm-core/pull/17381))** - **Remove validation bypass ([17384](https://github.com/civicrm/civicrm-core/pull/17384))** - **Simplify recurring contribution template inheritance ([17178](https://github.com/civicrm/civicrm-core/pull/17178))** - **Remove $_REQUEST passed into CRM_Utils_Request::retrieve NFC ([17377](https://github.com/civicrm/civicrm-core/pull/17377))** - **Use now instead of date for activity API3 spec ([17411](https://github.com/civicrm/civicrm-core/pull/17411))** - **Typo Fix ([17409](https://github.com/civicrm/civicrm-core/pull/17409))** - **Fix logic for job log cleanup and make SQL safer ([17203](https://github.com/civicrm/civicrm-core/pull/17203))** - **Remove always-true if block. ([17415](https://github.com/civicrm/civicrm-core/pull/17415))** - **Remove No longer required HTTP_Request Package ([293](https://github.com/civicrm/civicrm-packages/pull/293))** - **Remove code that still seems unnecessary. ([17342](https://github.com/civicrm/civicrm-core/pull/17342))** - **Undo variable variable. ([17371](https://github.com/civicrm/civicrm-core/pull/17371))** - **Use non-deprecated method ([17370](https://github.com/civicrm/civicrm-core/pull/17370))** - **Remove last reference to Payment->_processorName in core & remove from processors ([17474](https://github.com/civicrm/civicrm-core/pull/17474))** - **Remove unused singleton from core payment processors ([17468](https://github.com/civicrm/civicrm-core/pull/17468))** - **Test fixes to support apiv4 add of MembershipType ([17488](https://github.com/civicrm/civicrm-core/pull/17488))** - **Merge code - remove UPDATE IGNORE+Delete & just use reliable update ([17072](https://github.com/civicrm/civicrm-core/pull/17072))** - **Remove unneeded parameters in {ts} on membership form ([17326](https://github.com/civicrm/civicrm-core/pull/17326))** - **Remove unused 'reset' param, other NFC tidy up: ([17392](https://github.com/civicrm/civicrm-core/pull/17392))** - **Fix setLanguage docblock, other nfc changes ([17356](https://github.com/civicrm/civicrm-core/pull/17356))** - **[REF] Simplify contributionIDs code ([17441](https://github.com/civicrm/civicrm-core/pull/17441))** - **[REF] Extract getAttachments ([17405](https://github.com/civicrm/civicrm-core/pull/17405))** - **[REF] Preliminary cleanup for #17339 ([17417](https://github.com/civicrm/civicrm-core/pull/17417))** - **[REF] Remove unreachable block. ([17407](https://github.com/civicrm/civicrm-core/pull/17407))** - **[REF] Pass an array of correct params to the function to create a recurring contribution. ([17398](https://github.com/civicrm/civicrm-core/pull/17398))** - **[REF] Code simplification & unit test on suppressed emails in task ([17393](https://github.com/civicrm/civicrm-core/pull/17393))** - **[REF] duplicate function. ([17400](https://github.com/civicrm/civicrm-core/pull/17400))** - **[REF] Pass params not-by-reference ([17406](https://github.com/civicrm/civicrm-core/pull/17406))** - **[REF] Refactor to switch from pear HTTP Request class to using Guzzle ([17420](https://github.com/civicrm/civicrm-core/pull/17420))** - **[REF] [Reports] Ensure that all contribution pages including disabled ones are return… ([17357](https://github.com/civicrm/civicrm-core/pull/17357))** - **[REF] Cleanup and extract string functions specific to entity names. ([17330](https://github.com/civicrm/civicrm-core/pull/17330))** - **[REF] Stop passing by reference. ([17349](https://github.com/civicrm/civicrm-core/pull/17349))** - **[REF] Simplify subject code. ([17436](https://github.com/civicrm/civicrm-core/pull/17436))** - **[REF] Implement required fields database changes that have occured du… ([17465](https://github.com/civicrm/civicrm-core/pull/17465), [17725](https://github.com/civicrm/civicrm-core/pull/17725))** - **[REF] Bump Pear Log version to fix compatability with Drupal 8 / Drup… ([17460](https://github.com/civicrm/civicrm-core/pull/17460))** - **[REF] Convert one of the http calls in Authorize.net class to use guzzle. ([17449](https://github.com/civicrm/civicrm-core/pull/17449))** - **[REF] Minor simplification ([17443](https://github.com/civicrm/civicrm-core/pull/17443))** - **[REF] Grant BAO cleanup ([17264](https://github.com/civicrm/civicrm-core/pull/17264))** - **[REF] CRM_Core_DAO_AllCoreTables::getBriefName to accept BAO name ([17331](https://github.com/civicrm/civicrm-core/pull/17331))** - **[REF] Missing semicolon on smtp settings page, code cleanup in file-on-case, add test ([17335](https://github.com/civicrm/civicrm-core/pull/17335))** - **[REF] Extract createFollowUpActivities ([17481](https://github.com/civicrm/civicrm-core/pull/17481))** - **[REF] Switch to an api call to get the contact details. ([17442](https://github.com/civicrm/civicrm-core/pull/17442))** - **[REF] Minor code simplification ([17373](https://github.com/civicrm/civicrm-core/pull/17373))** - **[REF] Call completeOrder directly from event status update form ([17346](https://github.com/civicrm/civicrm-core/pull/17346))** - **[REF] Remove never-passed params from function signature ([17464](https://github.com/civicrm/civicrm-core/pull/17464))** - **[REF] Fix serialized membership field handling in RelationshipTest ([17469](https://github.com/civicrm/civicrm-core/pull/17469))** - **[REF] Minor tidy up ([17302](https://github.com/civicrm/civicrm-core/pull/17302))** - **[REF] Remove always NULL param modified_id ([17489](https://github.com/civicrm/civicrm-core/pull/17489))** - **[REF] Add contribution_id field to search using metadata instead of h… ([17286](https://github.com/civicrm/civicrm-core/pull/17286))** - **[REF] Fix unit test failures on MySQL 5.6 due to Custom Field table being created without Dynamic Row Format ([17586](https://github.com/civicrm/civicrm-core/pull/17586))** - **[REF] Start to convert Dummy processor to use PropertyBag ([17452](https://github.com/civicrm/civicrm-core/pull/17452))** - **[Ref] remove calls to, and deprecate, pending function ([17490](https://github.com/civicrm/civicrm-core/pull/17490))** - **[REF] Cleanup MailingAB BAO ([17309](https://github.com/civicrm/civicrm-core/pull/17309))** - **[TEST] Update test to support for 8.0.19 change ([17354](https://github.com/civicrm/civicrm-core/pull/17354))** - **[TEST] Fix test failure on Drupal 8 E2E PrevNextTest by only includin… ([17358](https://github.com/civicrm/civicrm-core/pull/17358))** - **[TEST] dev/core#1766 - Remove flakiness from testGetFromTo tests ([dev/core#1766](https://lab.civicrm.org/dev/core/-/issues/1766): [17338](https://github.com/civicrm/civicrm-core/pull/17338))** - **[NFC/TEST] dev/core#1784 - Unit tests for contact delete/restore ([dev/core#1784](https://lab.civicrm.org/dev/core/-/issues/1784): [17437](https://github.com/civicrm/civicrm-core/pull/17437))** - **NFC - Change array() to short syntax [] ([17470](https://github.com/civicrm/civicrm-core/pull/17470))** - **[NFC] Update Karma to be latest version ([17439](https://github.com/civicrm/civicrm-core/pull/17439))** - **(NFC) CRM_Utils_Url - Fix declared type ([17320](https://github.com/civicrm/civicrm-core/pull/17320))** - **[NFC] Remove some more of the old cvs blocks ([17383](https://github.com/civicrm/civicrm-core/pull/17383))** - **NFC Add a bit more clarity to createEmailActivity function ([17391](https://github.com/civicrm/civicrm-core/pull/17391))** - **[NFC] Add comment that deprecated code is actually still reachable ([17340](https://github.com/civicrm/civicrm-core/pull/17340))** - **(NFC) Remove some cvs docblock help ([17322](https://github.com/civicrm/civicrm-core/pull/17322))** - **[NFC] Add comment regarding lower case for Polish states ([17327](https://github.com/civicrm/civicrm-core/pull/17327))** - **(NFC) RegionTest - Small cleanups ([17270](https://github.com/civicrm/civicrm-core/pull/17270))** - **[NFC] Add sr-only class for content only for screen readers ([17255](https://github.com/civicrm/civicrm-core/pull/17255))** - **NFC Change hardcoded ID to constant ([17275](https://github.com/civicrm/civicrm-core/pull/17275))** - **[NFC] Fix use of single quotes, strict operator ([17492](https://github.com/civicrm/civicrm-core/pull/17492))** ## Credits This release was developed by the following code authors: a-n The Artists Information Company - William Mortada; AGH Strategies - Alice Frumin, Andrew Hunt; Andrei Mondoc; British Humanist Association - Andrew West; Caltha - Tomasz Pietrzkowski; Christian Wach; Circle Interactive - Pradeep Nayak; CiviCRM - Coleman Watts, Tim Otten; CiviDesk - Yashodha Chaku; CompuCorp - René Olivo; Coop SymbioTIC - Mathieu Lutfy; Dave D; Dominic Hargreaves; Electronic Frontier Foundation - Mark Burdett; Freeform Solutions - Herb van den Dool; Fuzion - Jitendra Purohit; Greenpeace Central and Eastern Europe - Patrick Figel; JMA Consulting - Edsel Lopez, Seamus Lee; John Kingsnorth; Joinery - Allen Shaw; Kartik Kathuria; Lighthouse Design and Consulting - Brian Shaughnessy; Megaphone Technology Consulting - Jon Goldberg; MJCO - Mikey O'Toole; MJW Consulting - Matthew Wire; Palante Technology Cooperative - Morgan Robinson; Semper IT - Karin Gerritsen; Tadpole Collective - Kevin Cristiano; Wikimedia Foundation - Eileen McNaughton Most authors also reviewed code for this release; in addition, the following reviewers contributed their comments: Agileware - Justin Freeman; Artful Robot - Rich Lott; Betty Dolfing; CiviCoop - Jaap Jansma; iXiam - Luciano Spiegel; JMA Consulting - Monish Deb; Kartik Kathuria; Korlon - Stuart Gaston; Megaphone Technology Consulting - Dennis P. Osorio; Squiffle Consulting - Aidan Saunders ## Feedback These release notes are edited by Alice Frumin and Andrew Hunt. If you'd like to provide feedback on them, please log in to https://chat.civicrm.org/civicrm and contact `@agh1`.