# CiviCRM 5.4.0 Released August 1, 2018 - **[Synopsis](#synopsis)** - **[Features](#features)** - **[Bugs resolved](#bugs)** - **[Miscellany](#misc)** - **[Credits](#credits)** - **[Feedback](#feedback)** ## <a name="synopsis"></a>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** | ## <a name="features"></a>Features ### Core CiviCRM - **[CRM-20430](https://issues.civicrm.org/jira/browse/CRM-20430) A permission 'save Report Criteria' ([12107](https://github.com/civicrm/civicrm-core/pull/12107))** Permission to edit the criteria for saved reports is now separate from the permission to access and preview modifications of report criteria. This will prevent non-privileged users from modifying the criteria of an organization's standard reports. However when upgrading, site administrators will need to grant the Save Report Criteria permission to roles that need that capability. - **[dev/core#174](https://lab.civicrm.org/dev/core/issues/174) Consistently use swappable cache interfaces ([12321](https://github.com/civicrm/civicrm-core/pull/12321), [12322](https://github.com/civicrm/civicrm-core/pull/12322), [12323](https://github.com/civicrm/civicrm-core/pull/12323), [12330](https://github.com/civicrm/civicrm-core/pull/12330), [12331](https://github.com/civicrm/civicrm-core/pull/12331), [12336](https://github.com/civicrm/civicrm-core/pull/12336), [12342](https://github.com/civicrm/civicrm-core/pull/12342), [12348](https://github.com/civicrm/civicrm-core/pull/12348), [12354](https://github.com/civicrm/civicrm-core/pull/12354), [12362](https://github.com/civicrm/civicrm-core/pull/12362), [12368](https://github.com/civicrm/civicrm-core/pull/12368), [12376](https://github.com/civicrm/civicrm-core/pull/12376), [12378](https://github.com/civicrm/civicrm-core/pull/12378), [12379](https://github.com/civicrm/civicrm-core/pull/12379), [12380](https://github.com/civicrm/civicrm-core/pull/12380), [12381](https://github.com/civicrm/civicrm-core/pull/12381), [12389](https://github.com/civicrm/civicrm-core/pull/12389), and [215](https://github.com/civicrm/civicrm-packages/pull/215))** Sites using Redis or Memcache for caches and sessions will now use those facilities exclusively rather than retaining the `civicrm_cache` table as a backstop. This improves performance for these sites, especially those using multiple MySQL servers. As a precaution, Redis or Memcache administrators with very active sites may wish to double-check that they have ample capacity for their caches and sessions. For developers, the `CRM_Utils_Cache` APIs now support expiration/TTL times and [PSR-16 CacheInterface](https://www.php-fig.org/psr/psr-16/). The Civi implementation is slightly more permissive than the PSR-16 specification; for full compliance, enable `CIVICRM_PSR16_STRICT`. - **[CRM-21574](https://issues.civicrm.org/jira/browse/CRM-21574) Allow to disable sending of email from source contact for tell a friend on pcp ([12355](https://github.com/civicrm/civicrm-core/pull/12355)) (preliminary work)** Emails from the "tell a friend" feature are sent as if they are from the donor's address. This can cause delivery failures as the site may not be a valid source for the donor's email domain. Changes here are preliminary cleanup. - **[dev/core#32](https://lab.civicrm.org/dev/core/issues/32) Add option to disable cancel button on a profile form ([11883](https://github.com/civicrm/civicrm-core/pull/11883))** The Cancel button is now optional on profile forms. - **[CRM-21392](https://issues.civicrm.org/jira/browse/CRM-21392) Allow viewing groups/smartgroups as as other entities (eg. memberships, events) ([11241](https://github.com/civicrm/civicrm-core/pull/11241))** The Find Groups page now has a similar "View Results As" feature as the Advanced Search: you can choose to view memberships, events, activities, etc. of group subscribers rather than the contacts themselves. - **[CRM-21622](https://issues.civicrm.org/jira/browse/CRM-21622) Make the Add Parent Groups on Group Settings be a multiselect ([11481](https://github.com/civicrm/civicrm-core/pull/11481))** The New Group form now allows you to set multiple parent groups for a single group. - **[CRM-21460](https://issues.civicrm.org/jira/browse/CRM-21460) Programmatic access to job execution status ([11337](https://github.com/civicrm/civicrm-core/pull/11337))** Extension developers can implement two new hooks, `hook_civicrm_preJob` and `hook_civicrm_postJob`, which are invoked before and after executing a scheduled job. - **Change default for `CIVICRM_CONTAINER_CACHE` to simplify admin/developer experience ([12426](https://github.com/civicrm/civicrm-core/pull/12426))** - **[dev/core#223](https://lab.civicrm.org/dev/core/issues/223) Expose prefix and suffix in reports ([12394](https://github.com/civicrm/civicrm-core/pull/12394))** Individuals' prefix and suffix fields are now available as columns and filters among the contact fields in most reports. - **[dev/core#101](https://lab.civicrm.org/dev/core/issues/101) Allow further customization of search form in hooks ([12078](https://github.com/civicrm/civicrm-core/pull/12078))** Fields are no longer explicitly included in the search form template since that makes it hard to add or remove fields. Instead, the fields are listed in template variables, and the template iterates over the list to render the field elements. - **[dev/core#183](https://lab.civicrm.org/dev/core/issues/183) Temporary tables should follow consistent naming convention ([12311](https://github.com/civicrm/civicrm-core/pull/12311)) (partially completed)** This moves towards naming temporary tables--both true temporary tables in MySQL and regular tables created for temporary use--in a consistent manner in order to help database administrators employ replication policies based upon table names. - **[dev/core#144](https://lab.civicrm.org/dev/core/issues/144) `getCustomFieldID` switch to API, add caching, add full string return option ([12218](https://github.com/civicrm/civicrm-core/pull/12218) and [12283](https://github.com/civicrm/civicrm-core/pull/12283))** The function to retrieve a custom field ID now relies upon APIv3 rather than an *ad hoc* SQL query. It also contains an option to return the ID preceded by `custom_`. Finally, the function caches the result and attempts to return the cached value rather than looking it up each time. - **[dev/core#47](https://lab.civicrm.org/dev/core/issues/47) Add "clone" functionality to scheduled jobs ([11945](https://github.com/civicrm/civicrm-core/pull/11945))** Scheduled jobs can now be copied, including their parameters, both from the Scheduled Jobs page and through a new `Job.clone` API method. ### CiviCase - **[dev/core#107](https://lab.civicrm.org/dev/core/issues/107) After creating a new case, the assignee for each activity must be selected manually ([11998](https://github.com/civicrm/civicrm-core/pull/11998))** You can now select the default assignee for each activity in the standard timeline for a case type. This may be defined according to a relationship with the client, a single specific contact, or the contact who created the case. - **CiviCase, added reference of activities from different timelines. ([12236](https://github.com/civicrm/civicrm-core/pull/12236))** From an activity on a case timeline, you can now reference any activity available to the case--not just those on that case timeline. ### CiviContribute - **Add support for hidden fields in general (and 'token' specifically) on the payment form. ([12332](https://github.com/civicrm/civicrm-core/pull/12332) and [12391](https://github.com/civicrm/civicrm-core/pull/12391))** A new authorization token field is added to the payment form to support token-based payment processors. - **[CRM-21808](https://issues.civicrm.org/jira/browse/CRM-21808) Install custom group for Contribution or ContributioRecur subtypes based on XML file ([11726](https://github.com/civicrm/civicrm-core/pull/11726))** Extensions created custom data sets for contributions can now specify the custom data to apply only to a single financial type. - **(dev/core/50) and [dev/core#195](https://lab.civicrm.org/dev/core/issues/195) Add Separate Sub-tabs for Contributions and Recurring Contributions ([11956](https://github.com/civicrm/civicrm-core/pull/11956) and [12345](https://github.com/civicrm/civicrm-core/pull/12345))** The Contributions tab on a contact now contains two sub-tabs--one for single contributions, and the other for recurring contribution series--instead of displaying one after the other. - **[dev/core#96](https://lab.civicrm.org/dev/core/issues/96) Expose source column in booking report ([12374](https://github.com/civicrm/civicrm-core/pull/12374))** The contribution Source field is now available as a column and filter on the Bookkeeping Transactions report. - **Use html5 color input for contribution page widget ([12339](https://github.com/civicrm/civicrm-core/pull/12339))** ### CiviMail - **[dev/mail#1](https://lab.civicrm.org/dev/mail/issues/1) Add pause/resume functionality to civicrm bulk mailing. ([11803](https://github.com/civicrm/civicrm-core/pull/11803) and [12284](https://github.com/civicrm/civicrm-core/pull/12284))** A CiviMail mailing that is scheduled or in progress can now be paused in order to allow an urgent message to go out first. - **Add in bootstrap button classes to CiviMail interface ([12013](https://github.com/civicrm/civicrm-core/pull/12013) and [12338](https://github.com/civicrm/civicrm-core/pull/12338))** This allows the interfaces to be themed more easily by Bootstrap-based themes. ## <a name="bugs"></a>Bugs resolved ### Core CiviCRM - **[dev/core#222](https://lab.civicrm.org/dev/core/issues/222) Importing contacts with dedupe rule does not use the rule ([12393](https://github.com/civicrm/civicrm-core/pull/12393))** - **[dev/core#284](https://lab.civicrm.org/dev/core/issues/284) Aggressive cache clearing significantly increases test time ([12590](https://github.com/civicrm/civicrm-core/pull/12590))** Settings, compiled Javascript, extension, and other caches are now only flushed along with the `default` CiviCRM cache if an external cache like Redis or Memcache is in use. (This reproduces the `5.3` behavior.) - **[dev/core#279](https://lab.civicrm.org/dev/core/issues/279) When Merging two contacts, Flip between original and duplicate link not working in WordPress ([12568](https://github.com/civicrm/civicrm-core/pull/12568))** - **Handle 'Check for Matching Contact(s)' button with ajax ([12552](https://github.com/civicrm/civicrm-core/pull/12552))** This resolves a bug where the "Check for Matching Contact(s)" button would not work if AJAX Deduping is enabled. - **[dev/core#131](https://lab.civicrm.org/dev/core/issues/131) Add in missing UK shire Monmouthshire ([12538](https://github.com/civicrm/civicrm-core/pull/12538)) (follow-up on previous work)** Many individual sites had manually added the county of Monmouthshire in Wales to the `civicrm_state_province` table, and upgrading to 5.3.0, which added the missing record, would cause them a database error. - **[dev/core#258](https://lab.civicrm.org/dev/core/issues/258) Possible unreleased regression - message template update altered customised template ([12492](https://github.com/civicrm/civicrm-core/pull/12492))** - **[dev/core#249](https://lab.civicrm.org/dev/core/issues/249) Contact Export fails in 5.4 when trying to export using the All radio button ([12447](https://github.com/civicrm/civicrm-core/pull/12447))** - **[dev/core#234](https://lab.civicrm.org/dev/core/issues/234) Upgrade Steps in 5.3.alpha1 may not have been run ([12419](https://github.com/civicrm/civicrm-core/pull/12419), [12420](https://github.com/civicrm/civicrm-core/pull/12420), and [12425](https://github.com/civicrm/civicrm-core/pull/12425))** - **[dev/core#155](https://lab.civicrm.org/dev/core/issues/155) Improvements and bugfixes to Option Groups UI ([12233](https://github.com/civicrm/civicrm-core/pull/12233) and [12411](https://github.com/civicrm/civicrm-core/pull/12411))** The Option Groups page now displays whether each option group is reserved or enabled. In addition, sites using sample data no longer have the sample custom fields reserved. - **[CRM-20184](https://issues.civicrm.org/jira/browse/CRM-20184) Some System Workflow templates still miss {contact.email_greeting} ([12296](https://github.com/civicrm/civicrm-core/pull/12296))** This makes receipt templates more consistent in using the contact's email greeting when sent to individuals. - **[dev/core#41](https://lab.civicrm.org/dev/core/issues/41) Search Builder: Not empty with date or integer custom fields gives a sql warning ([12351](https://github.com/civicrm/civicrm-core/pull/12351) and [12363](https://github.com/civicrm/civicrm-core/pull/12363))** - **Make all form tasks inherit from `CRM_Core_Form_Task` ([12318](https://github.com/civicrm/civicrm-core/pull/12318))** This addresses some export problems caused by tasks lacking certain properties because their classes did not extend `CRM_Core_Form_Task`. - **[dev/core#178](https://lab.civicrm.org/dev/core/issues/178) Redis driver - Error messages are invisible ([12303](https://github.com/civicrm/civicrm-core/pull/12303))** The log now contains error messages passed from Redis. - **[dev/core#180](https://lab.civicrm.org/dev/core/issues/180) Deleting custom values and custom_hook parameter `$entity_id` empty ([12309](https://github.com/civicrm/civicrm-core/pull/12309))** The ID of the affected entity is now passed to `hook_civicrm_custom` when a value is deleted from a custom field. - **Fix access to scheduled reminders for admins without event access ([11733](https://github.com/civicrm/civicrm-core/pull/11733))** Users with Administer CiviCRM permission but lacking Manage Events permission would get an error when trying to create a non-event scheduled reminder. - **Only treat a request as a get request (and hence use GET) if it starts with get ([12308](https://github.com/civicrm/civicrm-core/pull/12308))** - **[dev/core#179](https://lab.civicrm.org/dev/core/issues/179) Redis driver - Allow anonymous connections ([12304](https://github.com/civicrm/civicrm-core/pull/12304))** Redis no longer attempts to authenticate when no password is set, such as on local development environments. - **[dev/core#177](https://lab.civicrm.org/dev/core/issues/177) Redis driver - Reports incorrect value for cache-miss ([12302](https://github.com/civicrm/civicrm-core/pull/12302))** When a cache key is undefined, Redis now returns `NULL` rather than `FALSE`. - **[dev/core#175](https://lab.civicrm.org/dev/core/issues/175) Smart group involving relationship type filter display incorrect results. ([12301](https://github.com/civicrm/civicrm-core/pull/12301))** - **Make Send SMS permission independent of Edit Contact permission ([12067](https://github.com/civicrm/civicrm-core/pull/12067))** You no longer need the permission to edit a contact (in addition to the Send SMS permission) to send the contact a SMS message. - **[dev/core#134](https://lab.civicrm.org/dev/core/issues/134) Search Builder broken filter for Source Contact ID ([12181](https://github.com/civicrm/civicrm-core/pull/12181))** - **[dev/core#140](https://lab.civicrm.org/dev/core/issues/140) add missing pseudoconstant for `option_group_id` in CustomField.xml ([12195](https://github.com/civicrm/civicrm-core/pull/12195))** Extensions creating custom fields can now refer to option groups by name rather than ID. - **[dev/accessiblity#3](https://lab.civicrm.org/dev/accessibility/issues/3) Add aria-label (and label?) to form elements missing them ([12209](https://github.com/civicrm/civicrm-core/pull/12209) and [213](https://github.com/civicrm/civicrm-packages/pull/213)) (partial work)** Besides adding `aria-label` attributes to sub-elements of the Quickform date field, event info pages no longer wrap basic information labels in `<label>` tags. - **[CRM-20711](https://issues.civicrm.org/jira/browse/CRM-20711) Error - DB Constraint Violation - GroupContact, get API ([12408](https://github.com/civicrm/civicrm-core/pull/12408))** This adds the `location_id` field to the `civicrm_group_contact` table on older sites that lack it. - **[dev/core#152](https://lab.civicrm.org/dev/core/issues/152) - AdvMulti-Select cleanup ([531](https://github.com/civicrm/civicrm-drupal/pull/531)) (follow-up work)** This removes a couple of references to the now-removed "Advanced Multi-select" custom field type - **Upgrade Mime_mail to fix issues with PHP7.2 ([205](https://github.com/civicrm/civicrm-packages/pull/205))** - **Apply fixes to have DB package support PHP7.2 ([207](https://github.com/civicrm/civicrm-packages/pull/207))** - **[dev/core#117](https://lab.civicrm.org/dev/core/issues/117) Remove usage of `each()` This is deprecated in php7.2 ([211](https://github.com/civicrm/civicrm-packages/pull/211)) (follow-up work)** - **Declare Subparts as array in mimePart to support PHP7.2 ([210](https://github.com/civicrm/civicrm-packages/pull/210))** - **[CRM-19798](https://issues.civicrm.org/jira/browse/CRM-19798) Memory leak in API3 EntityTag get operations ([12276](https://github.com/civicrm/civicrm-core/pull/12276))** ### CiviCase - **Fix regression on case export from recent export fix ([12588](https://github.com/civicrm/civicrm-core/pull/12588))** This resolves undefined property PHP notices when exporting cases. - **[dev/core#24](https://lab.civicrm.org/dev/core/issues/24) Passing an array for contact_id/client_id to Case.Create API when updating an existing case causes case to be "reassigned" ([11830](https://github.com/civicrm/civicrm-core/pull/11830))** - **[CRM-21815](https://issues.civicrm.org/jira/browse/CRM-21815) On re-opening a civicase - Case Coordinator (and other roles) are not reinstated ([11736](https://github.com/civicrm/civicrm-core/pull/11736))** - **[dev/core#165](https://lab.civicrm.org/dev/core/issues/165) Bad link in civicrm/case/activity/view breadcrumb ([12279](https://github.com/civicrm/civicrm-core/pull/12279))** ### CiviContribute - **[CRM-21637](https://issues.civicrm.org/jira/browse/CRM-21637) Search Criteria for Card Type ID and Card Number not respected in Batch ([11495](https://github.com/civicrm/civicrm-core/pull/11495))** The card type and card number filters for financial transactions in the accounting batch interface now work as expected. - **[CRM-21854](https://issues.civicrm.org/jira/browse/CRM-21854) Contribution start date and end dates are not respected ([11881](https://github.com/civicrm/civicrm-core/pull/11881) and [12504](https://github.com/civicrm/civicrm-core/pull/12504))** - **[dev/core#264](https://lab.civicrm.org/dev/core/issues/264) Fatal Error on editing Financial Transaction ([12502](https://github.com/civicrm/civicrm-core/pull/12502))** - **[dev/core#220](https://lab.civicrm.org/dev/core/issues/220) State province/country doesn't show properly in the report ([12390](https://github.com/civicrm/civicrm-core/pull/12390))** This resolves a bug in the Contribution History by Relationship report where strange values would appear for the State/Province and Country fields. - **[dev/core#202](https://lab.civicrm.org/dev/core/issues/202) Empty row under currency drop down ([12356](https://github.com/civicrm/civicrm-core/pull/12356))** A warning now appears when a site has a disabled currency that is set as default. - **[dev/core#88](https://lab.civicrm.org/dev/core/issues/88) Make sure `financial_type_id` is set when a contribution is created ([11907](https://github.com/civicrm/civicrm-core/pull/11907))** This resolves a bug where the financial type would not be set on a one-time contribution made through a contribution page. - **[dev/core#170](https://lab.civicrm.org/dev/core/issues/170) contribution detail report errors when soft credits column is exposed ([12281](https://github.com/civicrm/civicrm-core/pull/12281) and [12282](https://github.com/civicrm/civicrm-core/pull/12282))** - **Fix e-notice, remove legacy code pattern ([12298](https://github.com/civicrm/civicrm-core/pull/12298))** This resolves a PHP notice when printing contribution receipts in bulk. - **[dev/core#56](https://lab.civicrm.org/dev/core/issues/56) Cancel Recurring Contribution activity should have a source record id ([11964](https://github.com/civicrm/civicrm-core/pull/11964))** The activity created when cancelling a recurring contribution now has the recurring contribution ID as the `source_record_id`. - **[dev/financial#14](https://lab.civicrm.org/dev/financial/issues/14) PayPal Express recurring payment causes warning messages ([12091](https://github.com/civicrm/civicrm-core/pull/12091))** - **[CRM-20697](https://issues.civicrm.org/jira/browse/CRM-20697) Online pay now anomalies (contribution transfer to new contact) ([11578](https://github.com/civicrm/civicrm-core/pull/11578))** The Pay Now form now uses contact ID and checksum to validate the contribution's contact to avoid creating new contacts when an anonymous visitor fulfills a pending contribution. ### CiviEvent - **[dev/core#272](https://lab.civicrm.org/dev/core/issues/272) Fatal Error (Regression) on PCP pages associated with Events ([12533](https://github.com/civicrm/civicrm-core/pull/12533))** - **[dev/core#124](https://lab.civicrm.org/dev/core/issues/124) Registration approval issues ([12160](https://github.com/civicrm/civicrm-core/pull/12160) and [12417](https://github.com/civicrm/civicrm-core/pull/12417))** This resolves a PHP warning and some confusing aspects of handling event registration approvals. ### CiviGrant - **[dev/core#187](https://lab.civicrm.org/dev/core/issues/187) Fix typo in `CRM_Grant_Form_Task` that prevents retrieving session key from URL ([12317](https://github.com/civicrm/civicrm-core/pull/12317))** ### CiviMail - **[dev/core#133](https://lab.civicrm.org/dev/core/issues/133) Reply-to field with empty string get saved in DB as `NULL` ([12176](https://github.com/civicrm/civicrm-core/pull/12176))** - **[CRM-20320](https://issues.civicrm.org/jira/browse/CRM-20320) Error in PEAR SMTP causes mailing job to fail when an error occurs during one connection ([11840](https://github.com/civicrm/civicrm-core/pull/11840))** CiviMail will now disconnect the SMTP connection when a connection error is detected and record the group of messages as not delivered. This allows it to reconnect later and send the messages. - **[CRM-17753](https://issues.civicrm.org/jira/browse/CRM-17753) Newsletter confirmation emails shouldn't use do-not-reply@yourdomain.org ([12270](https://github.com/civicrm/civicrm-core/pull/12270)) (preliminary work)** - **[CRM-21779](https://issues.civicrm.org/jira/browse/CRM-21779) Civimail allows adding current draft mailing recipients to recipients field ([11724](https://github.com/civicrm/civicrm-core/pull/11724))** ### CiviMember - **[dev/membership#4](https://lab.civicrm.org/dev/membership/issues/4) Admin Membership type is displayed on Public contribution page. ([12178](https://github.com/civicrm/civicrm-core/pull/12178))** - **[dev/core#276](https://lab.civicrm.org/dev/core/issues/276) Undefined index: is_override on submit credit card membership ([12563](https://github.com/civicrm/civicrm-core/pull/12563))** - **[dev/core#151](https://lab.civicrm.org/dev/core/issues/151) Action to Update Recurring Contributions From Membership View is Never Shown ([12228](https://github.com/civicrm/civicrm-core/pull/12228))** The table to view recurring contributions on a membership now displays the Edit action where appropriate. - **[CRM-21682](https://issues.civicrm.org/jira/browse/CRM-21682) Automatic membership renewal fixes ([12313](https://github.com/civicrm/civicrm-core/pull/12313) and [12314](https://github.com/civicrm/civicrm-core/pull/12314)) (preliminary work)** - **[CRM-21177](https://issues.civicrm.org/jira/browse/CRM-21177) Wrong interval of recurring payment for auto-renewing membership ([12289](https://github.com/civicrm/civicrm-core/pull/12289)) (preliminary work)** ### Joomla Integration - **[dev/joomla#1](https://lab.civicrm.org/dev/joomla/issues/1) CiviEvent menu listing showing old events ([46](https://github.com/civicrm/civicrm-joomla/pull/46))** ### WordPress Integration - **[dev/wordpress#1](https://lab.civicrm.org/dev/wordpress/issues/1) CiviCRM-WordPress - Gutenberg Compatibility: Do not parse shortcodes in REST context ([130](https://github.com/civicrm/civicrm-wordpress/pull/130))** - **[CRM-21565](https://issues.civicrm.org/jira/browse/CRM-21565) Change mkdir to use correct and more secure mode numbers ([120](https://github.com/civicrm/civicrm-wordpress/pull/120))** ## <a name="misc"></a>Miscellany - **(NFC) Convert files to use linux line endings not windows ([12531](https://github.com/civicrm/civicrm-core/pull/12531))** - **Move DAO function to DAO class, call it from Merge class ([12340](https://github.com/civicrm/civicrm-core/pull/12340))** - **NFC code cleanup for AuthNet, Paypal, PaypalPro IPNs ([12386](https://github.com/civicrm/civicrm-core/pull/12386))** - **[dev/core#203](https://lab.civicrm.org/dev/core/issues/203) Cruft code in `CRM_Core_BAO_OptionGroup::add()` ([12357](https://github.com/civicrm/civicrm-core/pull/12357))** - **Remove unused instances of usedTable ([12341](https://github.com/civicrm/civicrm-core/pull/12341) and [12349](https://github.com/civicrm/civicrm-core/pull/12349))** - **(NFC) CiviUnitTestCase - Fix edge-case for mis-reported error ([12347](https://github.com/civicrm/civicrm-core/pull/12347))** - **NFC Code cleanup to core task class ([12316](https://github.com/civicrm/civicrm-core/pull/12316))** - **[NFC] Stop passing no-longer-part-of-signature variable ([12329](https://github.com/civicrm/civicrm-core/pull/12329))** - **Fix typo in api explorer sample code ([12324](https://github.com/civicrm/civicrm-core/pull/12324))** - **Remove unused code variable ([12299](https://github.com/civicrm/civicrm-core/pull/12299))** - **Confirm & lock in group.get handling of is_active ([12295](https://github.com/civicrm/civicrm-core/pull/12295))** - **Remove unused function getRecuringTransactionStatus from PayflowPro c… ([12294](https://github.com/civicrm/civicrm-core/pull/12294))** - **Add upgrade function for message templates that does not involve copying the whole template ([12224](https://github.com/civicrm/civicrm-core/pull/12224))** - **Function extraction BAO_Export class ([12288](https://github.com/civicrm/civicrm-core/pull/12288))** - **Partial refactor of completeMembershipFromContribution ([12271](https://github.com/civicrm/civicrm-core/pull/12271))** - **[NFC] Fix line endings (Jenkins where were you) ([12280](https://github.com/civicrm/civicrm-core/pull/12280))** - **Towards fixing household merge export, extract function, add test, fix prev ([12272](https://github.com/civicrm/civicrm-core/pull/12272))** - **Standardise line endings away from windows line endings to linux ([212](https://github.com/civicrm/civicrm-packages/pull/212))** ## <a name="credits"></a>Credits This release was developed by the following code authors: AGH Strategies - Alice Frumin, Andrew Hunt; Agileware - Alok Patel; Australian Greens - Seamus Lee; Bastien Ho; Caltha - Tomasz Pietrzkowski; CiviCoop - Jaap Jansma; CiviCRM - Coleman Watts, Tim Otten; CiviDesk - Yashodha Chaku; CompuCorp - Camilo Rodriguez, Michael Devery, René Olivo, Vinu Varshith Sekar; Electronic Frontier Foundation - Mark Burdett; Fuzion - Jitendra Purohit; Ginkgo Street Labs - Frank Gómez; JMA Consulting - Monish Deb; Johan Vervloet; John Kingsnorth; Kanzu Code - Carl Andrew Lema; Left Join Labs - Sean Madsen; MJW Consulting - Matthew Wire; Pradeep Nayak; Romain Thouvenin; Squiffle Consulting - Aidan Saunders; Tadpole Collective - Kevin Cristiano; Third Sector Design - Michael McAndrew; Tom Bloor; Wikimedia Foundation - Eileen McNaughton Most authors also reviewed code for this release; in addition, the following reviewers contributed their comments: Agileware - Justin Freeman; baernm; Blackfly Solutions - Alan Dixon; Bob Silvern; Borislav Zlatanov; Caltha - Michal Mach; cartbar; Christian Wach; Circle Interactive - Dave Jenkins; CiviCoop - Erik Hommel; Community Builders - Andrew Perry; CompuCorp - Guanhuan Chen, Omar Abu Hussein; Coop SymbioTIC - Mathieu Lutfy; Drupal Association - Lizz Trudeau; Evan Chute; Forest CRM Consulting - Tamar Meir; Freeform Solutions - Herb van den Dool; Ginkgo Street Labs - Dan O'Brien; Hugo do Carmo; JMA Consulting - Joe Murray; Lemniscus - Noah Miller; Lighthouse Design and Consulting - Brian Shaughnessy; Megaphone Technology Consulting - Jon Goldberg; MJCO - Mikey O'Toole; Oxfam Germany - Thomas Schüttler; Richard van Oosterhout; Robin Fenwick; Semper IT - Karin Gerritsen; Stephen Palmstrom; Tech To The People - Xavier Dutoit; Timbsoft Technologies - Tunbola Ogunwande ## <a name="feedback"></a>Feedback These release notes are edited by Andrew Hunt. If you'd like to provide feedback on them, please log in to https://chat.civicrm.org/civicrm and contact `@agh1`.